YAPG - Jeu de plateformes

Yet Another Platformer Game - Jeu de plateformes

a marqué ce sujet comme résolu.

Bonjour tout le monde,

J'ai pu bien avancer le projet ces derniers temps. L'éditeur de niveau approche désormais d'un stade que je qualifierai d' « utilisable ».

L'utilisateur peut ajouter des blocs sur le niveau, les déplacer et même modifier leur propriétés à la main : ce sont le plus souvent les position X et Y, mais cela peut être n'importe quel « paramètre » déclaré dans les modèles de blocs (on peut imaginer un objet « interrupteur » qui puisse avoir en paramètre une liste de blocs à détruire lors de son activation, etc.).

Voici une petite animation pour voir l'état actuel de l'éditeur :

L'éditeur de niveau à l'action !

J'ai pu aussi en parallèle écrire une première version de la documentation de modding du jeu. Elle est disponible sur ReadTheDocs (cela permet sa recompilation automatique à chaque modif sur Github) : http://yapg.readthedocs.org

+3 -0

Mise à jour 0.3.0-alpha

Bonjour à tous, une nouvelle version de YAPG est disponible.

Changelog

Jeu
  • Écrans de fin de niveau (réussite ou échec du niveau)
  • Ajoute un composant pour déclarer la fin d'un niveau
  • Fenêtre "à propos"
  • Style de l'interface graphique du jeu plus cohérent
Modèles d'entités (templates)
  • Nouveau composant : ColliderComponent et CollidableComponent pour détecter les collision entre les entités (et pouvoir y réagir va des callbacks en lua)
  • Possibilité de déclarer des modèles comme "abstraits" (pour les interdire d'être instanciés)
  • Composant spécial : CustomDataComponent qui permet de stocker des données personnalisées dans chaque entités pendant le déroulement du jeu (utiles pour stocker des états et des valeurs à utiliser dans les scripts lua)
  • Support de ces données personnalisée en tant que paramètre d'un modèle
  • Nouveau composant : FinishLineComponent pour déclarer une entité comme étant une fin de niveau
Editeur de niveau
  • Tout nouvel éditeur de niveau
Contenu
  • Ajout d'un block "?" (qui peut être frappé par le joueur, mais qui ne donne rien pour le moment)
  • Ajout d'un drapeau pour la fin des niveaux
Dépendances

Documentation

Il est déjà possible de créer ses propres objets, blocs et personnages pour les utiliser dans le jeu. La documentation est en anglais et est disponible à l'adresse suivante : http://yapg.readthedocs.org/

Téléchargement

Le jeu est actuellement distribué pour Windows (même si je le développe principalement depuis Fedora) : télécharger YAPG pour Windows x86

Je mettrai en place dans peu de temps un dépôt pour compiler automatiquement YAPG pour Archlinux, Fedora et Ubuntu.

Sur ce, bon jeu.

+3 -0

Salut ! Pour créer des objets, pourquoi ne pas faire un éditeur d'objet ? :P Quand je dis un éditeur d'objet j'entends quelque chose comme un éditeur où il y aurait des formes basiques comme le triangle, le disque et le rectangle, avec des peintures et des couleurs différentes qu'on peut assembler avec des calques, possibilités de rajouter des images sur l'objet … Enfin voilà :) Sinon super projet !

+2 -0

(Occupé par mes études, je n'ai pu continuer le développement que depuis début juillet)

Pour créer des objets, pourquoi ne pas faire un éditeur d'objet ?

Cela a peu de chance d'arriver car les objets sont codés en Lua et contiennent des scripts. Il serait assez compliqué de permettre l'écriture de scripts à l'intérieur du jeu.

avec des peintures et des couleurs différentes qu'on peut assembler avec des calques, possibilités de rajouter des images sur l'objet

Pour le moment, les objets ne peuvent avoir qu'une image (avec des animations possibles). Je compte néanmoins rajouter la possibilité de combiner plusieurs images avec différents offsets et d'ajouter d'autres types de textures : textures répétées / 9-patch (comme cela il serait possible de redimensionner des éléments dans l'éditeur de niveaux).


Mise à jour 0.4.2-alpha

Changements depuis la version 0.3.0-alpha

Moteur de jeu
  • [feature] Les différents modèles d'entité (templates) sont maintenant séparés en paquets (actuellement, il y a un paquet avec des objets qui utilisent les fameuses textures créées par Kenney et un autre qui utilise des ressources faite maison)
  • [feature] Gestion de la vie (mais pas de HUD actuellement !)
  • [feature] Ajout d'un écran de chargement de niveau (chargement effectué sur un thread séparé)
  • [feature] Ajout d'un écran d'erreur en cas de plantage de script Lua pendant un niveau (permet au créateur des modèles d'entités de déboguer facilement ses scripts) ou en cas de chargement de niveaux
  • [feature] Amélioration de l'éditeur de niveau (la gui de l'éditeur de niveau est maintenant ImGui à la place de SFGUI). Il est prévu d'utiliser à terme TGUI pour la GUI du menu principal / menu des options et des niveaux (ImGui restera utilisée pour l'éditeur de niveau, plus orienté développeur/créateur)
  • [perf] Indexation spatiale pour les entités pour améliorer les performances des tests de collisions (performance ~ x10 avec un niveau possédant 3000 entités)
  • [bugfix] Correction d'un bug lors de l'édition du point de spawn dans l'éditeur de niveau
Scripting (lua):
  • [feature] L'accès aux variables membres d'un composant est maintenant direct (exemple : position(entity).x pour récupérer l'attribut membre X du composant position de entity à la place de as_float(entity:get_attribute("Position", "x")))
  • [feature] Séparation complète entre le masque de collision utilisé par le moteur de plateforme (PlatformerSystem) et les masques de collisions du système de détection de collision (CollisionSystem)
  • [feature] Le système de Collision permet d'avoir plusieurs masques de collisions nommés et de réagir à leur collision avec d'autres entités
  • [feature] La ligne d'arrivée n'est plus un objet avec un composant spécial mais juste un objet qui déclenche la fin du niveau grâce au scripting
Contenu:
  • Ajout de nouvelles textures
  • Ajout d'ennemis (une grenouille et un slime)
  • Ajout de nouveau modèles de joueurs
  • Tous les modèles d'entités ont été retravaillés pour suivre la nouvelle syntaxe
Technique:
  • Compilé avec MinGW-w64 (GCC 6.1) sur Windows
  • Mise à jour de SFML vers SFML 2.4.0
  • Mise à jour de Sol de la version 2.4 à la version 2.11.2

Téléchargement

Cette version est disponible pour Windows uniquement : YAPG 0.4.2 Windows x86

Documentation de modding

La documentation de modding est toujours disponible à cette adresse mais n'a pas encore été mise à jour. et vient d'être mise à jour (encore du travail pour parler des paquets, etc.).

+3 -0

Je me permet de commenter créant un projet avec des technologies très similaires :) Les choix que tu as fait sont intéressants (stocker les données en Lua par exemple). J'ai testé un peu tout ce que tu avais fait et ça rend plutôt bien :) En tout cas, bonne chance pour la suite !

Merci pour vos réponses. :)

Les choix que tu as fait sont intéressants (stocker les données en Lua par exemple)

En fait, maintenant cela peut poser des problèmes de "compréhension" à ceux qui veulent créer de nouveaux blocs pour le jeu. En effet, il ne faut pas qu'ils confondent la syntaxe utilisée pour stocker les données (sous forme de tables lua depuis lesquelles les objets sont créés au chargement du bloc) et l'objet en lui-même manipulé pendant l'exécution du jeu dans les callback lua (runtime).

Du coup, je réfléchis à comment rendre cette différence plus explicite (je l'ai déjà bien expliqué dans la documentation de modding du jeu).

A terme, il sera possible de coder des blocs en Lua entièrement ou en XML (avec les callbacks toujours en Lua, intégrés à l'intérieur d'une balise ou dans un fichier externe).

A quand la gestion d'un pad ?

C'est loin d'être dans mes priorités pour le moment en fait.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte