Jeu de plateforme en Python : Melting Saga

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut tout le monde !

En savoir plus sur le projet

Genèse

Alors voici mon tout premier vrai jeu (j'avais déjà fait des essais mais jamais un vrai jeu complet). Répondant au doux nom de Melting Saga, ce prototype aimerait de tout son coeur devenir un grand et vaillant jeu de plateforme. Mais attention ! Pas n'importe quel jeu de plateforme ! Un jeu plateforme + combat + RPG + Visual Novel ! C'est à dire un jeu de plateforme avec une map conséquente (scrollable et tout) mais avec toutes les mécaniques d'un jeu de combat (combos, coups variés, magie etc..) ainsi que toute une partie RPG (Collecte, craft, exploration). Ce qui s'en rapprocherait le plus serait Terraria mais avec le sandbox en moins, un aspect combat plus développé. Et quid du Visual Novel ? Ce prototype tentera d'avoir une bonne trame narrative et un scénario profond, d'où l'appui du Visual Novel pour toute les parties scénaristiques !

Objectifs

M'améliorer en programmation pour mon côté personnel et réussir à mener un projet à bien mais aussi créer un type de jeu auquel j'ai toujours rêvé de jouer !

Le projet et son originalité

Comme dis dans la présentation, l'originalité réside dans ce mix de genre (Plateforme, combat, RPG, Visual Novel) mais également le mix de Style (SF et Fantasy) !

Voilà pour la présentation !

Voici un lien également vers le Teaser de la pré-alpha :) Vidéo Teaser

Édité par Mizugola

+4 -0
Auteur du sujet

C'est une bonne question à laquelle j'aurais dû répondre plus tôt :) Alors au niveau de l'avancement :

Ce qui est fait :

  • Le personnage est partiellement fait :
  1. Déplacements basiques gauche, droite

  2. Le saut et la chute

  3. Détection des collisions (En montée et descente également) via un masque

  4. Clés d'animations via dictionnaire (Course, chute, saut, marche, assis, idle)

  5. Auto-chargement des Sprites via dictionnaire

  • Editeur de niveau (Textuel & WYSIWYG):

1.Editeur textuel avec coloration syntaxique

  1. Possibilité de créer, ouvrir et sauvegarder une map

  2. Possibilité de créer des blocs de collisions (Rect et Lignes pour l'instant)

  3. Possibilité de déplacer les objets et décorations via un glisser déposer et suppression

  4. Système de multi-layering avec gestion automatique de la parallaxe

  5. Gestion des attributs : HREVERSE, VREVERSE (Bientôt ROTATE, GREY etc…)

  6. Outils de mesures (Positions, surlignage, affichage des informations de l'élément visé)

  7. Différentes caméras : Free pour l'édition, Follow pour le test en temps réel avec suivi caméra et Fixed pour caméra fixe

  8. Filtres d'affichages (Afficher ou ne pas afficher, personnages, objets, collisions etc..)
  9. Game (Le jeu) Pour l'instant ici il y a pas grand chose
  10. Objects (Gestion des objets et décorations) Tout a déjà été dit dans la partie Editeur je pense
  11. PixelPerfect (Gestion de collision via masque)
  12. Test de collision via Masque
  13. Test de toutes les collisions via Masque
  14. Créer masque à partir d'une surface
  15. Shapes (Les formes de collisions) Tout a déjà été dit dans Editeur également
  16. World (La classe qui contient tout concernant le monde etc..)
  17. Scrolling horizontal et vertical sans limite
  18. Affichage en parralax avec Layers en Front et Layers en Back
  19. Chargement d'une map à partir d'un fichier

Concrètement pour l'instant je travaille beaucoup sur l'éditeur, et le game ne devrait pas être long à faire vu que ce sera juste l'éditeur sans les fonctions d'éditions.

Pour les screens j'essayerais de montrer ça demain mais les textures sont très bof

Édité par Mizugola

+1 -0
Auteur du sujet

J'suis désolé pour mon post précédent mais j'arrive pas à l'éditer comme je veux, on dirait que le truc pour poster est buggé à moitié Voici juste un petit screen de l'interface de l'éditeur (Mode textuel) Demain j'essayerais de poster des screens de l'éditeur (Mode WYSIWYG) EditText

+2 -0
Auteur du sujet

Hé bien en fait l'éditeur utilise des composants séparés :) - Characters.py - World.py etc.. En faisant l'éditeur j'avance tous les composants en même temps, ça me permet de faire par exemple le système de collision tout en créant des maps à la volée, c'est un outil de test assez sympa parce-qu'il m'affiche les coordonnées caméra, du curseur, m'affiche les masques de collision en transparence, me permet de déplacer les élements en glisser / déposer etc. Mais je prends ta remarque en compte :) Tu aurais plutôt fait comment du coup ?

(Petit screen de l'éditeur) WYS

Édité par Mizugola

+4 -0

Je me dis que je me serais juste pas embêté à faire l'éditeur en lui-même. Bien sûr, coder le système de maps était, je pense important. Comme ça tu aurais juste pu tripatouiller une map de test avec la possibilité de rajouter plus tard l'éditeur (ce qui impliquait d'avoir bien pensé son code à l'avance). Et je me serais ensuite concentré sur les mécaniques propres au jeu, comme notamment le système de RPG, étant donné que ça me semble être prioritaire.

Parce que actuellement, si on regarde ce que tu nous montres de ton jeu, au final on ne voit qu'un éditeur de map :/

EDIT : Je suis pas très clair, suis un peu fatigué moi :/

Édité par Phigger

La vie, c'est comme les mirabelles

+0 -0
Auteur du sujet

Je voulais faire une capture vidéo pour montrer les déplacements mais Open Broadcaster Software ne prend pas les fenêtres Pygame :( Le personnage est jouable en mode éditeur en fait, le mode éditeur c'est comme le jeu avec les outils d'édition en plus :)

+0 -0

Avec OBS, tu peux ajouter une capture d'écran et sélectionner une région de cet écran.

J'attends la vidéo avec impatience. :)

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0

Y a pas à dire, tu t'es bien facilité la création de maps :) Pour savoir, tu le fais avec PyGame ?

Les arbres sont très jolis aussi :D Par contre, ton bonhomme a un peu trop un style japonais à mon goût, et pareil, une façon de courir trop japonaise.

La vie, c'est comme les mirabelles

+0 -0
Auteur du sujet

Tout est fait avec pygame :) Sauf l'éditeur textuel avec PyQt4 ! Le jeu aura pas mal de référence Japonaises en effet x) Mais actuellement, le perso est comme ça parce-que c'est une des seules spritesheets potable libre de droit. Je suis une bille en dessin et y a pas de graphiste sur ce projet :)

+0 -0
Auteur du sujet

Alors ça fait un bail que j'ai pas donné de nouvelles ici :o Sachez cependant que je ne voulais pas répondre à ce sujet avant d'avoir suffisamment avancé.

Alors voici ce qu'il y a de neuf du coup :

  • Une accélération progressive du personnage

  • Création d'un fichier GUI.py (Tant d'efforts :o)

  • Ajout de la classe GUI.Container

  • Ajout de la classe GUI.Checkbox

  • Meilleure transparence pour le mode édition par layer

  • Possibilité d'agrandissement / rotation d'un objet en édition

  • Menu d'ajout d'objets

  • Les collisions sont maintenant inclues dans le fichier map

  • Ajout de l'indentation dans le code de la map

Voilà, ça change pas du tout au tout mais ça m'a pris plusieurs heures quand même (Au moins 20 je pense). Si vous avez des questions hésitez pas :)

Édité par Mizugola

+6 -0
  • Ajout de l'indentation dans le code de la map

Mizugola

Oh mon dieu… mais j'achète direct là. C'est LA feature ! Franchement wow, c'est tellement original, je n'ai jamais vu ça. On dirait que c'est le fruit d'intenses réflexions. On sent vraiment que tu mets du coeur à ce projet. J'aimerai tellement être comme toi. Mon idole <3

doge

124813612512481361251248136125124813612512481371251249137125124913712512491371361249137136124913

+13 -17
Auteur du sujet

Oui bon je me suis pas foulé mais il était de mon devoir d'indiquer cette feature qui m'a quand même demandée d'appuyer deux fois sur la touche tab pour la faire :o

Sinon je me suis mis au regex pour interpréter le code de la map (Parce-que oui bon, travailler à grands coups de .split() c'est bien rigolo mais un peu dégueulasse :D )

+1 -0

Nan mais je rigolais.. Oo Wow tant de haine. Je trouvais juste ça marrant de le mettre dans une liste de feature. :-) C'était à prendre au second degré. Je trouve ça dommage que 16 personnes n'ait pas d'humour.. Mizugola j'admire sincèrement ton projet et je ne voulais pas me moquer de toi !

Édité par uriopass

124813612512481361251248136125124813612512481371251249137125124913712512491371361249137136124913

+8 -1
Auteur du sujet

Je sais bien, j'ai été le premier à en rire :) Et il est vrai que c'était pas très utile mais bon, mieux vaut trop que pas assez x) Merci du soutien ! Je mettrais le projet sur Github prochainement si certains ont le courage de voir si tout marche chez eux. Aussi si vous avez des suggestions etc..

+3 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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