Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Just Too Many Mechanics 2 (JTMM2)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Just Too Many Mechanics 2 (JTMM2)

Posté le 22/09/2020 16:12

Dépôt du projet
cgit personnel
miroir sourcehut

Devlog quotidien
Trifouillages de Minuit #1
Trifouillages de Minuit #2
Trifouillages de Minuit #3
Trifouillages de Minuit #4
Trifouillages de Minuit #5
Trifouillages de Minuit #6
Trifouillages de Minuit #7

obsolète
Cliquez pour recouvrir
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.



Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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é.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

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é
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 30/12/2020 16:11 | #


Ok c'est plus clair. xD

J'attends de voir la suite donc x3
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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.
ouais ouais
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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 ?)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

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
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

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
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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.
Lephenixnoir a écrit :
(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
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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 !
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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
ouais ouais
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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 ^^'
ouais ouais
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

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 :

% git clone --recursive https://gitea.planet-casio.com/KikooDX/jtmm2/
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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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
ouais ouais

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 133 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd