[Tutoriel] Structurer son projet autour de la donnée
[Tutoriel] Structurer son projet autour de la donnée
Bien le bonjour.
Quand on commence à créer un jeu vidéo, on est au taquet au début. Et on fonce tête baissée dans la réalisation. Vous vous reconnaissez ? Le problème, c'est que vous allez rater le plus important.
Il ne vous est jamais arrivé de vouloir modifier une fonctionnalité dans votre jeu mais d’abandonner parce que ça a trop d’impacts ? Ou que c'est trop compliqué ? Il est pourtant possible d’éviter tous ces tracas avec cette nouvelle technique de structuration. J'ai vérifié sur un projet réel, je vous garantis que ça marche.
https://www.esprit-unity.fr/nouvelle-te ... t-unity3d/
Si vous trouvez une boulette ou avez des remarques, n'hésitez pas à me faire un retour ici ou en commentaire sur l'article.
Happy Gamedev !
Quand on commence à créer un jeu vidéo, on est au taquet au début. Et on fonce tête baissée dans la réalisation. Vous vous reconnaissez ? Le problème, c'est que vous allez rater le plus important.
Il ne vous est jamais arrivé de vouloir modifier une fonctionnalité dans votre jeu mais d’abandonner parce que ça a trop d’impacts ? Ou que c'est trop compliqué ? Il est pourtant possible d’éviter tous ces tracas avec cette nouvelle technique de structuration. J'ai vérifié sur un projet réel, je vous garantis que ça marche.
https://www.esprit-unity.fr/nouvelle-te ... t-unity3d/
Si vous trouvez une boulette ou avez des remarques, n'hésitez pas à me faire un retour ici ou en commentaire sur l'article.
Happy Gamedev !
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Re: [Tutoriel] Structurer son projet autour de la donnée
Il y avait eu une très bonne conférence au Unite 2017 à Austin sur ce sujet ;
https://youtu.be/raQ3iHhE_Kk
Et comme toi, je le conseille à tous
https://youtu.be/raQ3iHhE_Kk
Et comme toi, je le conseille à tous
Everything happens for a reason. Sometimes the reason is that you're stupid and make bad decisions.
Re: [Tutoriel] Structurer son projet autour de la donnée
Effectivement c'est cool, merci pour le partage. Par contre ou faut faire attention c'est que lorsque en mode Play on modifie le ScriptableObject il n'est pas reset à la sortie du mode play.
J'ai trouvé une solution:
Je sais pas si c'est propre de passer par ce bout de code pour contourner ce problème ou si il y a une utilisation plus logique du ScriptableObject qui éviterait ce souci.
En fait faudrait créer un ScritableObject qui stock la vie (mode base de donné)
Et un ScritableObject qui serait "dynamique" pour s'en servir en runtime?
Par exemple:
PS: J'ai pas encore regardé la vidé posté par @RLG , il y a peut être la réponse...
J'ai trouvé une solution:
Code : Tout sélectionner
public FloatVariable MaxHP; // il s'agit du ScriptableObject
void Awake()
{
MaxHP = Instantiate(MaxHP);
}
En fait faudrait créer un ScritableObject qui stock la vie (mode base de donné)
Et un ScritableObject qui serait "dynamique" pour s'en servir en runtime?
Par exemple:
Code : Tout sélectionner
public FloatVariable MaxHPInit; // il s'agit du ScriptableObject type base de donné
public FloatVariable MaxHPDynamique; // il s'agit du ScriptableObject qui sert durant le runtime
void Awake()
{
MaxHPDynamique.value = MaxHPInit.value;
}
Re: [Tutoriel] Structurer son projet autour de la donnée
Bon alors on a déjà échangé brièvement sur FB à ce sujet, mais je relance ici :
Cette méthode semble très efficace pour éviter les singletons... Par contre dès qu'il s'agit d'instancier dynamiquement des gameobjects, ça me semble beaucoup plus hasardeux.
Quelles seraient les pistes à explorer pour permettre cette utilisation des scriptable objects dans le cas où l'on désire les utiliser sur des instances de prefabs ?
Je précise que je n'ai pas encore testé tout ça, je m'y colle demain
Cette méthode semble très efficace pour éviter les singletons... Par contre dès qu'il s'agit d'instancier dynamiquement des gameobjects, ça me semble beaucoup plus hasardeux.
Quelles seraient les pistes à explorer pour permettre cette utilisation des scriptable objects dans le cas où l'on désire les utiliser sur des instances de prefabs ?
Je précise que je n'ai pas encore testé tout ça, je m'y colle demain
Re: [Tutoriel] Structurer son projet autour de la donnée
En faite c'est ça la force des ScriptableObject, ils sont sauvegardé sur le disque, tu peux t'en servir comme stockage pour sauvegarder des infos comme les options ou un nom d'utilisateur facilement. Tu peux utiliser le callback OnEnable qui s’exécute a chaque fois que unity recompile les scripts, et quand le scriptable object est chargé ou crée, sa te permettra de reset automatiquement. Sinon il y a CreateInstance qui te permet d’instancier un scriptable object sans le sauvegarder dans un dossier.DevAmat a écrit : ↑23 Jan 2018 16:07Effectivement c'est cool, merci pour le partage. Par contre ou faut faire attention c'est que lorsque en mode Play on modifie le ScriptableObject il n'est pas reset à la sortie du mode play.
J'ai trouvé une solution:
Je sais pas si c'est propre de passer par ce bout de code pour contourner ce problème ou si il y a une utilisation plus logique du ScriptableObject qui éviterait ce souci.Code : Tout sélectionner
public FloatVariable MaxHP; // il s'agit du ScriptableObject void Awake() { MaxHP = Instantiate(MaxHP); }
En fait faudrait créer un ScritableObject qui stock la vie (mode base de donné)
Et un ScritableObject qui serait "dynamique" pour s'en servir en runtime?
Par exemple:
PS: J'ai pas encore regardé la vidé posté par @RLG , il y a peut être la réponse...Code : Tout sélectionner
public FloatVariable MaxHPInit; // il s'agit du ScriptableObject type base de donné public FloatVariable MaxHPDynamique; // il s'agit du ScriptableObject qui sert durant le runtime void Awake() { MaxHPDynamique.value = MaxHPInit.value; }
On va par exemple préférer sauvegarder une variable vieMax dans un scriptable mais pas vieActuel (a moins que tu t'en servent comme sauvegarde).
Voici une autre vidéo intéressante sur le sujet que je conseille vraiment si tu veux introduire ce système dans ton projet : Unite Europe 2016 - Overthrowing the MonoBehaviour tyranny in a glorious ScriptableObject revolution
Re: [Tutoriel] Structurer son projet autour de la donnée
Merci pour le lien. Je pense vraiment intégrer ce système dans un futur projet.
Re: [Tutoriel] Structurer son projet autour de la donnée
Par contre d'après certain utilisateur du forum unity officiel, la sauvegarde est un peu aléatoire et capricieuse, donc privilégie plutôt les sauvegarde sur fichier txt ou autres.
Re: [Tutoriel] Structurer son projet autour de la donnée
Super le lien j' essaie sinon en cas de souci je reviendrai poser une question
Re: [Tutoriel] Structurer son projet autour de la donnée
Merci pour cette méthode et merci pour le lien vidéo.
Re: [Tutoriel] Structurer son projet autour de la donnée
Hello.
(désolé pour le temps de réponse, je suis tombé dans un trou noir ces 2 derniers mois )
(désolé pour le temps de réponse, je suis tombé dans un trou noir ces 2 derniers mois )
Mon article est justement basé sur cette conf. Comme pas mal de gens ne parlent pas anglais couramment, je me suis dit que ça pourrait être cool pour les francophones d'avoir une version en français.@RLG a écrit : ↑08 Jan 2018 11:04Il y avait eu une très bonne conférence au Unite 2017 à Austin sur ce sujet ;
https://youtu.be/raQ3iHhE_Kk
Je confirme malheureusement cette partie... je ne conseille pas cette solution pour stocker des données "joueur". Par contre le principe reste génial pour tout ce qui est runtime.
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole