Création de jeu 2D : quelques questions techniques
Bonjour à tous :D
Je souhaite créer un jeu de gestion/simulation similaire au jeu The Guild 2 (que j'ai adoré) mais en modifiant beaucoup de chose, le principe reste le même : faire évoluer son personnage, son business, son ascension politique, son pouvoir à l'époque du Moyen Age (ou autre) dans un village ou une grosse ville.
La principale caractéristique de mon jeu, ce serait d'ajouter beaucoup beaucoup plus de possibilités : d'objets, d'interactions avec les objets, avec les pnj, des histoires/quêtes, interactions avec les bâtiments, lieux, TOUT. Actuellement le jeu qui ressemble le plus à ce que je veux faire est The Guild 2 (TG2) mais par exemple les actions du personnages sont limités à : attaquer, escorter, soudoyer, charmer, extorquer; ce qui est déjà assez fun. Ce que je voudrais c'est ajouter encore plus d'interactions avec les pnj, les objets, les lieux, et que cela dépende de chaque entité. Je veux améliorer les dialogues (différent en fonction du caractère du perso, de la météo, du lieu où l'on se trouve, des personnes à côtés, etc.). Rendre simple la gestion des ressources, rendre fertile une terre, installer un système d'irrigation, bâtir des bâtiments comme où le souhaite (pas forcément prédéfinis).
Je n'ai encore créé aucun jeu (je suis étudiant), c'est pourquoi je voulais dans un premier temps réduire au maximum les difficultés en faisant une version 2D vue du ciel (2D top down view). J'aimerai quand même qu'il soit le plus beau possible (lumières, ombres, qualité des détails). Donc j'ai quelques questions :
- Jusqu'à combien de paramètres peut-on ajouter aux objets, aux persos, aux lieux ? Une centaine ? Des milliers ? Des millions ?!
- Combien de personnages je peux mettre dans ma ville en même temps ? Dans TG2 il y en avait facilement 200 je dirais, on peut monter jusqu'à combien ? 1 million ? (j'en sais rien)
Je pensais utiliser Unreal Engine 4 (UE4) comme moteur graphique, le moteur de TG2 est Gamebryo, je ne connais pas trop Gamebryo mais il parait que UE4 est extrêmement performant, la redevance 5% me convient et le langage aussi (C++). Et aussi plus il y a de tutoriels vidéos, plus j'avancerai efficacement et ce sera plus simple pour moi. J'aimerai simplifier au maximum la création de mon jeu tout en ayant un jeu beau et performant.
En fonction du jeu que je souhaite faire :
- Quel moteur existant choisir ? Suis-je obligé de créer mon propre moteur pour avoir un jeu performant ?
Si vous voyez des choses auxquelles je n'ai pas pensé, n'hésitez pas ;) mais évitez les réponses vagues ou qui relève du bon sens, si possible merci :)
L'envie de la peur de coder en 2.5D
Citation:
Envoyé par
splinter7
Oui j'ai plus qu'à essayer des trucs, c'est pas grave si ça marche pas du 1er coup, je sais que ce sera surement le cas, je me dis juste que c'est mieux d'anticiper tous les problèmes possibles pour que la création de mon projet soit la plus efficace possible. Mieux vaux prévenir que guérir ! :D
C'est typiquement français cette peur de faire des erreurs alors qu'aux États-Unis c'est un droit et une véritable philosophie de vie. L'anticipation ça vient avec l'expérience mais comme souvent c'est une question d'équilibre, de méthode…
Citation:
Envoyé par
splinter7
D'accord, justement je me demandais si créer un jeu 2D avec un moteur 3D serait plus difficile et gourmand en ressources, donc tu me confirmes que c'est pas le cas. Parce que y'a plein de trucs de 3D (gravité, mouvements) que je ne vais pas du tout utiliser, c'est pas gênant alors.
Ça dépend des moteurs mais les 3D sont forcément beaucoup plus évolués. Cependant dans tous les cas on peut choisir quels modules sont utilisées, inclus… En C++ ça se fait dans le code source et à la compilation.
Citation:
Envoyé par
splinter7
Par exemple, je me disais que j'allais faire plein d'histoire propre à chacun des personnages, des lieux, mais je sais que le texte peut être chiant quand on a pas envie de lire des pavés certains jours, donc je vais tout simplement donner la possibilité au joueur de s'y intéresser ou non, sans influencer le background. Bref je vais essayer de suivre ma règle et je verrai bien ce que ça donneras ! ;)
Il y a au moins un projet de JDR 100% texte présenté sur le forum si ça peut t'inspirer. C'est une bonne idée mais comme c'est du travail en plus le mieux serait de convaincre tout le monde qu'il faut lire. On peut se permettre le côté optionnel quand le contenu est conséquent. Je pense aux quêtes secondaires non obligatoires par exemple.
Citation:
Envoyé par
splinter7
Sinon d'un point de vue apprentissage, le fait d'utiliser un moteur préconçu, est-ce que ce que je ne vais pas passer à côté de choses essentielles que j'aurai pu découvrir et faisant mon propre moteur ? Ou bien on s'en fout et je prends que ce dont j'ai besoin pour mon objectif ?
C'est l'éternel dilemne même si il se pose moins depuis l'utilisation massives de certains moteurs. En créer un c'est très enrichissant mais en attendant le projet principal n'avance pas ou piétine. Ça dépend de ton but. Faire les 2 à la fois, au risque de n'en terminer aucun, ou utiliser une solution existante pour parvenir à tes fins ?
Narration, cocorico, réalisme, 2D et solutions bas/haut niveau
Citation:
Envoyé par
splinter7
Quand on réfléchit bien, ok c'est un monde ouvert, mais souvent il y a 3 manières max d'accomplir une mission, moi je veux faire l'exact opposé, ne pas proposer de quêtes, mais donner la possibilité que chaque influence sur un pnj puisse influencer sur tout le monde environnant par simple effet papillon
Bonne idée je te conseille de creuser cette piste ! Par contre la narration interactive c'est un domaine très complexe mais les bons exemples en la matière ne manquent pas depuis Grand Theft Auto & Cie. Une difficulté c'est qu'en offrant trop de liberté le risque c'est qu'il ne se passe jamais rien. D'où l'intérêt de scripter certains évènements malgré tout ! Un casse-tête passionnant…
Citation:
Envoyé par
splinter7
l'ambition des français est inexistante, et dans tous les domaines, comme tu dis même dans la manière de penser
Euh non j'irai pas jusque là. Non au French bashing ! On est spécialisé en la matière alors qu'on nous admire partout dans le monde. J'en profite donc pour compléter que notre culture de l'erreur s'est développée. Pour le cinéma un gros budget ne fait pas un grand film mais ceci est une autre histoire…
Citation:
Envoyé par
splinter7
Je continuerai mon projet même si ça doit prendre des années ! ;) C'est parce que j'ai envie de faire un jeu cool que je fais ce projet, alors pourquoi j’arrêterai au 1er obstacle ? :)
Attention car l'énergie ça se dissipe rapidement et même déjà quand on est une équipe soudée. Avant de gravir le Mont Blanc il faut escalader dans la salle du quartier et bien plus encore ! Je dis pas ça pour te décourager c'est juste une réalité.
Citation:
Envoyé par
splinter7
Et petit détail que j'aimerai ajouté : pouvoir zoomer énormément. Dans la plupart des jeux 2D top down view, on ne peut pas zoomer et la taille des images sont avec très peu de pixels. Est-il possible d'augmenter la qualité visuelle avec des images beaucoup plus détaillées pour pouvoir zoomer ?
Tout dépend de quoi tu parles. Si c'est du pixel art avec un style rétro tout l'intérêt c'est de recapturer la magie d'une époque. C'est donc pas une question de qualité puisque le rendu est recherché et pleinement assumé. Par contre dans des classiques comme Chrono Trigger on peut considérer que la carte du monde sur laquelle on peut se balader est une version zoomée des environnements qu'on visite. Des niveaux intermédiaires sont tout à fait envisageables si ça a un sens. Par exemple dans ton exemple du messager on pourrait passer à une vue éloignée du royaume du roi en pleine guerre. Certes les tuiles/sprites seraient microscopiques mais ça permettrait d'avoir une vision globale. C'est très utile dans les jeux de stratégie notamment.
Après si l'intention c'est d'éviter la bouillie de pixels il reste le vectoriel mais on perd en détails ce qu'on gagne en finesse.
Citation:
Envoyé par
splinter7
C'est possible de faire quelque chose de beau en 2D top down ?
Hein ?! Quelles sont tes références en la matière ? Pourquoi as-tu envie de créer un jeu en 2D ?
Citation:
Envoyé par
splinter7
De toue façon ce sera un essai, mon vrai but c'est de la 3D, mais ça ce sera pour plus tard si le gameplay 2D fonctionne.
Donc voilà, je vais commencer en 2D avec la SDL en C++ en suivant les tutos de ce site, et j'ajouterai au fur et à mesures toutes les fonctionnalités que je veux ajouter ! :)
Tu te rends absolument pas compte de la difficulté qui t'attend donc je rejoins complètement Bousk et Kannagi. SDL est une excellente bibliothèque mais bas niveau. Certes la version 2 a intégré des fonctionnalités dédiées au jeu vidéo et dans la 1 on pouvait déjà bien l'enrichir mais elle reste avant tout générique. Je te conseille donc plutôt une solution haut niveau et pourquoi pas basée sur SDL. Pour te rendre compte de la tâche qui t'attendrait je te renvoie aux listes de fonctionnalités de moteurs comme Godot, Unity… Et au passage faut pas oublier qu'ils intègrent des éditeurs évolués, car il n'y a pas que les niveaux, et dans le cas d'un JDR c'est quasi indispensable.
Quant à C++ c'est un langage très puissant mais aussi l'un des plus difficiles. Je l'adore mais c'est pas pour rien si le C# s'est développé ainsi que Python. D'ailleurs ce dernier est très utilisé en complément de pygame. Je t'invite à passer sur le forum où serpentent bon nombre d'étudiants désespérés ! ;)
Enfin c'est un sujet qu'on ne se lasse pas d'aborder, un débat avait d'ailleurs du centraliser tout ça à une époque, et comme synthèse je t'invite par exemple à lire Faire un jeu vidéo : par où commencer ?. D'autres tutos du site méritent aussi ton attention sans doute ! Ça t'aidera à être plus objectif surtout compte tenu de ton expérience. Si la jouabilité c'est pas ta priorité et que réinventer la roue t'intéresse amuse-toi mais en premier avec des projets bien plus modestes et pas forcément des JDRs. Tu peux parfaitement garder The Guild à l'esprit tout en te penchant sur des titres plus modestes pour t'inspirer, te motiver dans le temps…
Bon courage !! :)