Pokémon Engine

27 Réponses • 5014 Vues

[Dernière mise à jour : 28/11/2017]



Cette présentation sera étoffée au fur et à mesure de l'avancement du projet.
Son contenu est loin d'être définitif.



Qu'est ce que Pokémon Engine ?
Pokémon Engine est un ensemble de ressources (autrement dit software development kit) permettant à l'utilisateur de développer son propre jeu Pokémon de manière non officielle, à l'instar d'outils comme Pokémon Essentials ou bien Pokémon SDK. Ces ressources se présentent sous forme de "projet modèle" utilisant le moteur de jeu Unity pour fonctionner. Par conséquent, Pokémon Engine est entièrement propulsé par ce moteur auquel il dépend. L'ensemble des scripts est écrit en langage C#, natif à Unity, orienté-objet et reprenant en partie la syntaxe du langage C.

L'objectif de Pokémon Engine est principalement de répondre à une demande de la part de la communauté de joueurs souhaitant développer des jeux proches visuellement des versions officielles de dernière génération (par exemple Pokémon Soleil et Lune), ce à quoi le moteur RPG Maker XP ne répond pas. En outre, le moteur doit être capable de s'adapter, du point de vue technique, aux futures générations de jeux de la firme nipponne.

Les jeux produits par l'outil seront compatibles au minimum avec les systèmes suivants : Windows, macOS, Linux et Android.
Il sera cependant possible d'exporter son jeu vers d'autres types d'appareils (par exemple XBox One), mais des adaptations seront alors probablement nécessaires.



Comment fonctionne Pokémon Engine ?
Afin de permettre à un utilisateur novice en programmation de développer son jeu, Pokémon Engine a pour objectif d'être simple d'utilisation. Cependant, un apprentissage des bases du langage C# et de l'utilisation d'Unity est requise, notamment pour ce qui concerne la partie graphique.

Durant les premières phases de développement, la conception du moteur m'a fait choisir une architecture basée sur des modules sans classification entre modèle, vue et contrôleur. L'architecture a par la suite été complètement remaniée afin de disposer d'un code maintenable et plus compréhensible. L'architecture actuelle est donc basée en partie sur le patron MVC, adaptée aux mécaniques des jeux Pokémon, en tout cas pour le noyau du moteur (gestions des Pokémon, stats, etc).
Les structures de données du modèle sont calquées sur celles issues de l'application web pokéapi.co, permettant de récupérer librement les informations de la base de données du jeu et faciliter la phase de remplissage de cette dernière. Par ailleurs, cette dernière utilise le moteur de bases de données relationnelles embarquées Sqlite3 qui reste performant en vue de son utilisation.

J'essaie de faire en sorte de limiter l'espace en mémoire vive demandé par le programme afin que son utilisation reste fluide sur smartphone (dont la RAM dépasse rarement 2 gigas pour les appareils bon marché).

Enfin, je procède à de nombreux tests unitaires afin de m'assurer du bon fonctionnement du logiciel et j'essaie de proposer une qualité de code satisfaisante.

Comme ces informations sont assez changeantes, je m'arrête ici et je vous invite à me contacter en privé si vous souhaiter disposer de plus amples informations.



La personnalisation avant tout
Les scripts de Pokémon Engine sont écrits de telle sorte que toute modification soit facile pour l'utilisateur. De plus, j'ai essayé de faire en sorte que la plupart des limites imposées par les licences officielles ne soient ici que virtuelles. Je m'explique : dans les jeux officiels, le niveau maximum d'un Pokémon est 100 et ils ne peuvent avoir que deux types au maximum (par exemple). C'est aussi le cas avec un jeu issu Pokémon Engine, mais vous pourrez très facilement modifier cette limite, généralement en changeant une seule ligne de code (je ne parle par contre pas de la partie graphique qui sera à adapter).

Il est donc par exemple possible d'augmenter le nombre d'attaques simultanées dont dispose un Pokémon de votre équipe, ou bien de disposer d'une équipe de dix Pokémon.
Bien entendu, l'objectif recherché n'est pas de s'éloigner des licences officielles, mais bien de permettre au développeur de personnaliser son jeu comme il le souhaite sans avoir à modifier la structure du moteur. De plus cela permet de faciliter énormément les mises à jours de ce dernier en cas de changement effectué par Game Freak sur leur licences futures (s'ils décident de changer la limite de niveau par exemple).



Pourquoi ne puis-je pas le télécharger ?
Actuellement, Pokémon Engine est en développement et inutilisable en tant que tel. C'est pourquoi il n'est pas disponible en téléchargement. Par ailleurs, je suis actuellement seul sur le projet, et je ne suis pas disponible à plein temps.

Même si je reçois parfois des aides extérieures, ce projet est avant tout un loisir et je ne peux malheureusement pas y travailler à temps plein, par conséquent je ne souhaite pas donner de date de sortie pour le moment. En revanche, les sources seront publiées dès que le "noyau" du moteur, c'est à dire les composantes essentielles seront implémentées.

La première version des sources devrait comporter entre autres :
- La première génération de Pokémon (de Bulbizarre à Mew).
- Un système de combats 1VS1.
- Quelques ressources graphiques de base issues des vraies licences.
- Quelques interfaces du menu (stats Pokémon, sac, menu, peut-être Pokédex).
- Probablement un système de réseau basique (échange de Pokémon).
- Interface en anglais.



Avancement

Pour le moment je suis seul sur le projet. La majeure partie des scripts gérant les informations relatives aux Pokémon (espèces, stats, attaques, etc) est programmée ainsi que les systèmes principaux, hormis les combats, qui me prennent évidemment beaucoup de temps. Il manque surtout la partie graphique (animations des Pokémon en combat, etc) qui est pour l'instant au ralenti.



Images

Les images datent de l'année dernière et ne sont pas à jour. Elles ne témoignent malheureusement que très peu de l'avancée du moteur.


Système de dialogues.


Premier prototype de combat.


Un premier test de map.


Prototype de map créée avec l'outil de mapping (la gestion des cases a été par la suite retirée, elle sera remise dans une version future).

Le rendu visuel est ici très proche des versions Pokémon Rubis Oméga et Saphir Alpha. Actuellement, le style est plus proche des versions Soleil et Lune.



Crédits

Microsoft
- Visual Studio 2015 (IDE)
- Langage C#

Unity
- Editeur
- MonoDevelop
- Moteur graphique

The Pokémon Company, Game Freak, CREATURES inc.
- Ressources issues de l'univers Pokémon

NightDefined
- Fondateur du projet
- Programmation de l'ensemble du moteur actuel



« Modifié: 28 novembre 2017, 19:45:43 par NightDefined »

Starter Kit

AxLR

Scénariste

Ah, eh bien ça promet! J'adore le travail fourni, j'ai hate d'en voir plus !
De mon temps, on trouvait que slash était un génie pour avoir intégré une banque dans son starter-kit.
Je suis bluffé des images que je vois ,c'est un plaisir pour les yeux !
Hâte de tester tout ça et de voir de nouveaux screens ! :)

Nuri Yuri

HostMaster

Ca a l'air franchement cool :)
Si ce truc devient stable je serais pas contre coder des petits outils de conversions vers ce système :q
ln(yo) = <3
Quelque chose dans le même style sous Unity mais utilisable il me semble.

https://youtu.be/XozaGOtIGys

Il y a aussi quelques tutoriels de mapping sur ce moteur.

Anki

Utilisateurs bannis ou désinscrits

Vraiment, beau boulot.
J'attends impatiemment l'alpha.
J'ai juste une question : les sprites des pokémons, tu les a recrées ou tu les a rippés , ou meme un gif?
Merci pour le soutien :) !


Ca a l'air franchement cool :)
Si ce truc devient stable je serais pas contre coder des petits outils de conversions vers ce système :q


Pourquoi pas, ça pourrait être amusant de pouvoir convertir facilement les données d'une base à une autre :).
Je fournirai sûrement des API pour faciliter les lectures et écritures dans la BDD si ça peut servir (en gros la partie Database du moteur).


Quelque chose dans le même style sous Unity mais utilisable il me semble.

https://youtu.be/XozaGOtIGys

Il y a aussi quelques tutoriels de mapping sur ce moteur.



J'avais déjà vu ça récemment et le rendu est en effet très beau. Malgré tout je ne considère pas mon projet comme un doublon puisque nous avons emprunté des voies complètement différentes concernant notre manière d'implémenter ce moteur de jeu.


J'ai juste une question : les sprites des pokémons, tu les a recrées ou tu les a rippés , ou meme un gif?


Tu veux dire les Pokémon en combat ? Ce ne sont pas des sprites 2D mais des modèles 3D issus des jeux oui :).
Je privilégie les ressources directement issues des licences officielles car cela m'enlève beaucoup de travail (je vais pas m'amuser à tout refaire, et en plus mon talent artistique n'est pas forcément reconnu).
Par contre certaines ressources sont pas vraiment évidentes à importer, du style les animations qui nécessitent pas mal de conversions avant d'être comprises par Unity...

« Modifié: 05 décembre 2016, 21:19:40 par NightDefined »

Je ne le vois pas comme un doublon, le tien est plus intéressant ^^
C'est d'ailleurs le SK le plus ambitieux que j'ai pu voir.

Je voulais simplement présenter une alternative qui est utilisable.

« Modifié: 05 décembre 2016, 22:53:18 par kinglear »

Nuri Yuri

HostMaster

:p
Y'a eu un sujet un moment à propos de ce que tu présentais kinglear. Le fond du truc était quelques lags dus au développement de la chose mais on verra bien ce que donne Pokémon Engine en ces termes. En tout cas c'est bien de voir des projets permettant de la 3D avec de la vraie 3D :3

D'ailleurs, une question pour le mapping, le data est constitué de maillage ou d'une grille "d'éléments" ?
ln(yo) = <3
Oulà mais c'est beau tout ça !
J'aurais bien vue PSDK fusionné à tout ça xD

Aerun

Modérateur

J'ajoute d'ailleurs que Pokémon Unity est plus ou moins à l'abandon. Le créateur IIcolour Spectrum le dit dans la description de la vidéo : "Rather than let the project die I decided to release it how it is currently", il préfère release le SK avant de le laisser mourir dans un coin comme il est. La suite précise qu'il attend de voir ce que les gens feront avec. Je pense que j'utiliserai son SK un jour si j'ai la motivation de me mettre sur la 3D.

Pour l'heure, félicitations, les premiers screenshots sont sympa ! S'il te faut des testeurs (W10, plutôt bonne configuration avec 16Go RAM / i5-5k / SSD) n'hésite pas ! Et oui autant privilégier l’interconnexion entre les SK au niveau des Bases de Données pour qu'un maker puisse switcher librement.

Nuri Yuri

HostMaster

Bah surtout que les SK devraient travailler main dans la main plutôt que d'être de leurs coté à cracher sur les autres kits x)
ln(yo) = <3

Y'a eu un sujet un moment à propos de ce que tu présentais kinglear. Le fond du truc était quelques lags dus au développement de la chose mais on verra bien ce que donne Pokémon Engine en ces termes. En tout cas c'est bien de voir des projets permettant de la 3D avec de la vraie 3D :3

D'ailleurs, une question pour le mapping, le data est constitué de maillage ou d'une grille "d'éléments" ?


Je ne suis pas si sûr que son moteur était destiné à devenir un SK au début... (sources à vérifier)

Dans la version actuelle du moteur, c'est un "système de maillage" qui est utilisé :).


J'aurais bien vue PSDK fusionné à tout ça xD


C'est vrai que le concept de fusionner les meilleurs points de chaque projet est très alléchant :).
Néanmoins je pense que cela est difficilement faisable parce que ces derniers sont réalisés de manières différentes, avec des outils et des technologies différentes.
Même s'il est vrai que la théorie derrière est très certainement proche (stats, Pokémon, combats, etc).

En revanche, je suis tout à fait d'accord pour créer des outils de transfert, mettre en place des systèmes de connectivité entre plusieurs jeux issus de kits différents, et bien d'autres choses encore :). A terme, je suis même prêt à fournir mon entière assistance à d'autres kits afin que les utilisateurs aient une large palette de choix et possibilités quant à la réalisation de leur propre fan game.
Dans l'immédiat je préfère quand même me consacrer à mon projet histoire d'obtenir un truc stable et fonctionnel quand même.

« Modifié: 06 décembre 2016, 20:33:28 par NightDefined »

Anki

Utilisateurs bannis ou désinscrits





Tu veux dire les Pokémon en combat ? Ce ne sont pas des sprites 2D mais des modèles 3D issus des jeux oui :).
Je privilégie les ressources directement issues des licences officielles car cela m'enlève beaucoup de travail (je vais pas m'amuser à tout refaire, et en plus mon talent artistique n'est pas forcément reconnu).
Par contre certaines ressources sont pas vraiment évidentes à importer, du style les animations qui nécessitent pas mal de conversions avant d'être comprises par Unity...


Du coup tu a des fichiers en quel formats?

Palbolsky

Staff CSP

Magnifique. :3

Bonne continuation et surtout, fait des sauvegardes. :)
Intéressé par le jeu de cartes Heartstone ? Cliquez ici.

There was an error while thanking
Thanking...