Bonjour ! JTMM2
(Just Too Many Mechanics 2) est un jeu de plateforme en cours de développement.
Je crée ce topic pour laisser une trace
il n'est pas encore finalisé et un peu brouillon.
Mon objectif est de créer le meilleur jeu de plateforme jamais créé sur calculatrice(tm), avant que quelqu'un de doué ne s'y mette et grille la place x)
Cette fois-ci je tente de faire un code propre. A tout ceux qui ont lu le code de JTMM : pardonnez moi. Personne ne mérite ça
Mais surtout, je veux faire un bon jeu. Sur tous les plans. Je crois m'être amélioré en game design depuis JTMM, le futur nous le dira. Je ferai tout mon possible pour créer un jeu qui pardonne le joueur et lui donner un bon choix de mouvement (je t'ai entendu Lephé).
Je travaille entre environ 2 et 5 heures par jour sur le projet, alors attendez vous à un build décent d'ici la fin de l'année 2099
Pour suivre mon progrès, je vous recommande de lire les
notes de commits sur Gitea.
J'essairai de poster ici à chaque étape importante du développement.
Si vous avez des remarques, suggestions, critiques ; que ce soit sur le code, le jeu ou ce topic : lâchez vous.
Je prend tout
Dépôt Gitea principal.
Dépôt de KBLE (en développement).
Remerciements
Cliquez pour recouvrir
Merci Lephénixnoir, merci pour gint et merci pour ton aide quand je galère sur des trucs stupides.
Merci beaucoup à Masséna pour avoir été la seule personne à s'être intéressé à
JTMM premier du nom à un moment donné et m'avoir motivé à continuer. Il est aussi le graphiste principal du projet !
Merci à Tituya pour son support et les icônes.
Merci à tous les membres de Planète Casio m'ayant aidé d'une façon ou d'une autre.
Citer : Posté le 30/12/2020 15:13 | #
Ce build semble un peu cassé chez moi, les collisions sont très bizarres.
Sinon pour ce qui est du nombre de couches, en termes de performances le plus important est de ne dessiner plusieurs couches que là où plusieurs couches existent, et dans ce cas le temps que ça prend c'est en gros proportionnel à la surface que tu dessines. Tu dois bien pouvoir mettre 3/4 couches sans perdre de frames si mon estimation des performances possibles est correcte.
Citer : Posté le 30/12/2020 15:45 | #
Est-ce que tu peux développer le « très bizarres » ?
J'ai mis des layers non solides, du coup il est possible de traverser certains blocs (voulu).
Pour les couches je sais qu'il faudra de l'optimisation, pour le moment je préfère garder le code simple qui fonctionne.
J'aimerai réussir à poser une base fonctionnelle pour la plupart des éléments et commencer à optimiser ce genre de point après -- sauf si ça devient un problème plus tôt bien sûr.
Citer : Posté le 30/12/2020 15:51 | #
Très bizarre : il n'y a aucune correspondance entre les zones vertes/blanches et les zones solides, les collisions sortent de nulle part ou ne correspondent pas à ce qui est affiché.
Citer : Posté le 30/12/2020 15:52 | #
Ce build est un troll avec un labyrinthe invisible pour rappeler la game Jam, c'est normal du coup
Essaye la version directement sur le git, tu verras que tu n'as pas le problème
Ajouté le 30/12/2020 à 15:58 :
Oups, je retire ce que je viens de dire...
Mais c'est manifestement fait exprès de la part de KikooDX.
Je pensais qu'il avait fait ce labyrinthe aléatoire intentionnellement, désolé
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 30/12/2020 16:07 | # | Fichier joint
Bon désolé pour la confusion.
Le build en question utilisait trois layers, un seul des trois est utilisé par les collisions.
J'ai fait ça pour créer un labyrinthe invisible, c'était donc une démonstration des layers et un changement intentionnel
Voici le même build avec un layer -- et une map plutôt sympa pour une fois.
https://www.planet-casio.com/storage/forums/JTMM2_preview_Wed_Dec_30_04-04-48_PM_CET_2020-180264.zip
Citer : Posté le 30/12/2020 16:11 | #
Ok c'est plus clair. xD
J'attends de voir la suite donc x3
Citer : Posté le 30/12/2020 17:10 | #
Merci beaucoup au Contributeur de Talent™ Tituya pour sa contribution de nouvelles icônes polychromes ! J'aime beaucoup le rendu sur calculatrice, ça a plus de personnalité que ce que j'avais créé
La pull request.
Citer : Posté le 02/01/2021 18:22 | # | Fichier joint
Salut. J'ai tenté un truc intelligent, se trouve que ça marchait (très) mal.
J'ai retiré le truc « intelligent », maintenant ça marche <_<
Morale : KISS.
Changement depuis le dernier build :
saut à hauteur variable, beaucoup plus naturel et mieux codé que JTMM1 (pas dur vous me direz )
clipping horizontal (permet de "grimper" autour du bord d'un bloc), testez ça se sent direct, c'est maintenant possible d'entrer dans un espace d'une case dans un mur
https://www.planet-casio.com/storage/forums/JTMM2_preview_sam._02_janv._2021_17-17-51_UTC-180325.zip
Soon™ : rendre ce dernier truc propre et faire de même pour le vertical.
Citer : Posté le 03/01/2021 17:12 | #
Sympa ! Les contrôles comment à être agréables. Malgré le clipping, ça reste quasi-impossible de tomber dans un trou de largeur 1 (ou de sauter pour monter dedans) sans appui pour s'aligner. (Pourquoi ça glisse autant d'ailleurs ?)
Citer : Posté le 03/01/2021 17:27 | #
Sauf erreur de ma part, le clipping n'est que horizontal pour l'instant, donc pour tomber dans un trou c'est aussi compliqué d'avant
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 03/01/2021 18:14 | #
Ben pour tomber dans un trou c'est de l'alignement... horizontal ? Ou alors je comprends pas le clipping.
Citer : Posté le 03/01/2021 18:28 | #
Je pense que c'est l'alignement vertical qui est géré, sur les déplacements horizontaux.
Pour permettre de passer plus facilement dans les cases après un saut
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 03/01/2021 18:39 | #
En effet pour le moment il n'y a que le clipping horizontal d'implémenté, dans le sens où il se produit lors d'un déplacement horizontal. Cela rend possible de rentrer dans un espace de un bloc vertical.
Le clipping vertical n'est pas encore en place, il est plus compliqué que l'horizontal.
(Pourquoi ça glisse autant d'ailleurs ?)
J'avais mis une friction très faible pour tester la précision, dans le jeu final je pense que le personnage aura une friction modérée (Celeste, The End is Nigh, Mario) ou faible . C'est un choix important à faire pour le futur du jeu, alors ce n'est pas fixé. Explications trop longues et superflues :
Friction élevée (I wanna be the guy, Celeste marche) : Très propice au gameplay de précision, ce n'est pas l'objectif de JTMM2 alors cela n'arrivera probablement pas. Le gameplay précision n'a généralement pas besoin de beaucoup de mécaniques pour être complet.
Friction modérée (The End is Nigh, Super Mario Bros., Celeste air control) : Intéressante avec des mécaniques aditionnelles, classiquement un dash. Ces jeux possèdent souvent beaucoup de mécaniques de gameplay avancées pour les rendre intéressants. Ils gardent une possibilité de créer des niveaux de précision, mais sont souvent moins agréables dans cette situation qu'une friction élevée.
Friction faible (N++, Super Meat Boy, Celeste dash) : Souvent plus compliqués à prendre en main que la friction modérée, ces jeux demandent souvent une grande maîtrise du momentum. N++ a extrêmement peu de mécaniques quand on voit le nombre absolument astronomique de niveaux disponibles, mais il reste l'un des jeux de plateforme les plus techniques jamais créé. Super Meat Boy est également connu pour son contrôle du momentum.
En bref, les frictions élevées et faibles sont à deux extrêmes de technicité et la modérée est généralement le sweet spot pour les jeux grand public. Celeste arrive à combiner les trois catégories, Super Mario Bros. est juste entre modérée et faible. The End is Nigh se trouve plus entre élevée et modérée.
Je voudrai que JTMM2 se concentre sur le mouvement et les mécaniques et évite la précision de JTMM1, je pense donc qu'une friction modérée/faible est le meilleur choix. Mais ça se discute, j'écoute vos retours sur le sujet
Citer : Posté le 04/01/2021 15:21 | #
Intéressant, je vois. J'ajouterai juste que même si des jeux avec une friction élevée (et donc des contrôles précis) se prêtent au gameplay de précision avec moins de mécaniques, ce n'est pas la seule option. J'y vois surtout que c'est plus facile à prendre en main. Mais pour avoir vu du SMB, je comprends bien que ça dépend beaucoup du style que tu vises, donc je pense que c'est ça qui va importer le plus.
Citer : Posté le 04/01/2021 18:16 | #
Oui, bien sûr tu as raison. Il est possible de faire un jeu de précision avec une très faible friction et vice versa, j'ai juste donné les schémas les plus appropriés de mon point de vue
Moment du commit où j'avais oublié de pull avant :
https://gitea.planet-casio.com/KikooDX/jtmm2/compare/330d66f3f07fd38d91e0bafc46585a5723e15cf4...8804a12a905ad8c0001f7eb4210e7b09feb675fa
Je ne vais pas faire de build, il n'y a aucun changement en jeu (et heuresement). J'ai introduit les bases du nouveau système de tuiles, qui n'est pas hardcodé (coucou JTMM1) et utilise des bitmasks, suite à une discussion sur la shout avec Darks, Cake et Lephé je pense que c'est le bon choix. Maintenant qu'il est posé le jeu devrai avancer un peu plus vite (enfin j'espère).
Voici les fichiers les plus importants :
https://gitea.planet-casio.com/KikooDX/jtmm2/src/branch/master/include/tiles.h
https://gitea.planet-casio.com/KikooDX/jtmm2/src/branch/master/src/tiles.c
Si vous voyez que j'ai fait un choix bloquant et/ou stupide merci de me le dire !
Citer : Posté le 04/01/2021 18:20 | #
Ça a l'air clean comme modèle, je suggérerais simplement de faire un tableau pour tile_get_flags() s'il y a pas mal de tiles (le switch c'est plus long) et de pas hésiter à faire une fonction pour calculer les états qui s'appliquent à toi quand tu es en contact avec plusieurs tiles (ou autres tâches similaires) si tu es susceptible de rajouter des propriétés avec le temps.
Citer : Posté le 05/01/2021 11:34 | #
Merci, je prendrai note. Le switch a l'avantage que je peux changer les valeurs des #defines dans tiles.h et c'est fini, où avec un tableau il faudra gérer le default différemment et le changement des defines demanderait une manipulation manuelle.
Pour les états j'avais déjà une idée, je pense faire une fonction par état qui changeront les propriétés du joueur et seront activées si iel est en contact avec le flag correspondant. Par exemple, player_ice_ground serait activé si le flag ICE est présent dans les tuiles sous le joueur et pourrait changer la friction avant la logique. Je pense que c'est ce que tu voulais dire, en tout cas ça me maintenable et dans l'idée propre. Si ce n'est pas ce que tu pensais précise s'il-te-plaît
Citer : Posté le 07/01/2021 14:38 | # | Fichier joint
Salut ! « Grande nouvelle ! » Maintenant que le format des tiles est posé, il n'y a aucune raison pour moi de ne pas commencer le système de tileset.
Pour bien organiser le projet, et grâce au conseil des sages de la shout, les ressources graphiques sont devenues des dépôts git séparés.
Vous pouvez les trouver ici (je les ajoute au topic principal fissa) :
https://gitea.planet-casio.com/KikooDX/jtmm2-assets-fx/
https://gitea.planet-casio.com/KikooDX/jtmm2-assets-cg/
J'ai donné les droits d'administration sur ces deux dépôts à @Masséna, mais tous sont libres de proposer une merge request
La procédure de clonage a donc changé, voir le README du dépôt principal.
https://gitea.planet-casio.com/KikooDX/jtmm2/src/branch/master/README.md
Voici les builds traditionnels, mono et poly, avec 16 types de tuiles différentes choisies au hasard.
J'en referai un si Masséna fait un tileset moins moche ^^'
Citer : Posté le 08/01/2021 13:55 | # | Fichier joint
Salut ! L'éditeur de niveau (Tiled) fonctionne, j'ai ajouté une magnifique chain made in Lozère pour ajouter une petite touche de bonheur à mon niveau de qualité impressionnante que vous pouvez découvrir dans ces builds (mono et poly, comme toujours).
https://www.planet-casio.com/storage/forums/JTMM2_preview_Fri_Jan__8_01-49-10_PM_CET_2021-180456.zip
Citer : Posté le 08/01/2021 13:58 | #
Ok j'arrive à finir le niveau et à atteindre les chaînes, so far so good.
Ajouté le 08/01/2021 à 14:37 :
Je cherchais désespérément comment tu passais du fichier Tiled à un module Lua, mais en fait la question est vite répondue :
Cloning into 'jtmm2'... (...)
Cloning into '/home/el/git/jtmm2/assets-cg'... (...)
Cloning into '/home/el/git/jtmm2/assets-fx'... (...)
Cloning into '/home/el/git/jtmm2/levels'... (...)
% cd jtmm2 && ./make_levels.sh
lua: build_levels.lua:7: module 'level_1' not found:
no field package.preload['level_1']
no file '/usr/share/lua/5.4/level_1.lua'
no file '/usr/share/lua/5.4/level_1/init.lua'
no file '/usr/lib/lua/5.4/level_1.lua'
no file '/usr/lib/lua/5.4/level_1/init.lua'
no file './level_1.lua'
no file './level_1/init.lua'
no file '/usr/lib/lua/5.4/level_1.so'
no file '/usr/lib/lua/5.4/loadall.so'
no file './level_1.so'
stack traceback:
[C]: in function 'require'
build_levels.lua:7: in local 'load_level'
build_levels.lua:59: in main chunk
[C]: in ?
Je crois qu'il manque un bout de code ou peut-être un bout d'instructions.
Citer : Posté le 08/01/2021 14:55 | #
Les instructions étaient dans le README.md de KikooDX/jtmm2-levels, il faut l'ouvrir dans Tiled et exporter (Ctrl+E).
https://gitea.planet-casio.com/KikooDX/jtmm2-levels