Results
Ranked from 18 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.
Pseudo adhérent Premium sur Gamecodeur
Asthegor
Elève Gamecodeur depuis...
Quasiment le début
Langage / Moteur utilisé
Lua/DinaGE (moteur maison)
Temps passé (environ)
20h environ
Décrivez votre expérience (déroulement, difficultés, progrès réalisés, bilan personnel)
*** Déroulement ***
Avec mon toolkit, j'avais déjà une grosse partie du code de prêt :
- un menu principal
- un menu d'options
- un écran pour les crédits (vide)
- un player
- etc.
Cela m'a permis de gagner un temps considérable.
Mais ce qui m'a fait gagner le plus de temps, c'est d'avoir des liens vers des sites de tileset, spritesheets et autres images. Pour moi, le plus difficile est de trouver un décor correspondant au thème.
J'ai voulu que mon jeu soit sur un grand nombre de niveaux (100 pour être précis).
Le joueur a la possibilité de passer par les escaliers ou bien de prendre un ascenseur qui lui permet de monter plusieurs étages. Bien sûr, pour débloquer l'ascenseur, il faut l'activer en effectuant plusieurs tâches/actions.
*** Difficultés rencontrées ***
1) Masque d'affichage
Pour masquer l'affichage comme actuellement, j'ai voulu passer par des shaders. Cela me semblait logique pour l'effet désiré. Mais apprendre comment coder un shader m'aurait pris un temps monstrueux. Et puis, comme un miracle, m'est apparu le "stencil". Je n'ai compris son fonctionnement que bien après l'avoir mis en place pour mon jeu.
2) Déclenchement d'actions à un point de contrôle
Après avoir fait un niveau relativement simple, j'ai décidé d'activer un timer à partir du moment où on quitte une salle. Cela s'est fait en plusieurs étapes : ajout du point de contrôle dans la map (sous forme d'un objet), vérification de la collision du joueur et du point de contrôle pour déclencher l'action.
3) Ouverture des portes
L'ouverture des portes a été un défi technique pour la mise en place de l'action sans casser le code déjà existant. De plus, il a fallu que je trouve un moyen simple de connaître les portes à ouvrir : les propriétés personnalisées des objets! Après plusieurs heures et de nombreux essais/erreurs, j'ai réussi à ouvrir les portes. Cela m'a révélé un petit bug dans l'affichage des objets au sein de ma librairie : les objets sont toujours affichés au dessus des autres layers... Donc on verra toujours les portes...Tant pis !
4) Fermeture des portes
Cela a été encore plus difficile de coder la fermeture. J'ai dû refaire tout le système que j'avais trouvé pour l'ouverture...Sniff...
Hormis le masque d'affichage, une refonte est en cours pour permettre d'ajouter plus facilement des actions.
*** Progrès réalisés ***
J'ai fait de gros progrès dans l'utilisation de Tiled. J'ai découvert des fonctionnalités que je n'aurais pas pu exploiter dans d'autres jeux. Bien qu'il soit gratuit, c'est un outil très puissant et également mis à jour très régulièrement (la dernière version date de mai 2020).
Côté code, j'ai fait des progrès dans l'optimisation des ressources et l'organisation du code. Bien que découpant mon code en fichiers, cela pourrait s'avérer difficile de s'y retrouver (j'ai déjà vu un exemple avec trop de fichiers qui en devient ingérable). Toutefois, j'ai trouvé un compromis qui me permet de mieux regrouper les données similaires.
Le progrès que je trouve le plus significatif est la conception de ma machine à états (fichier "gamestate.lua"). J'avais pourtant suivi des cours dans un DESS spécialisé dans le développement de jeux vidéo mais sans avoir vraiment compris son utilisation. Désormais, et grâce à ce prototype, je sais concevoir et utiliser une machine à états. Petite cerise pour moi, le Load, Update et Draw sont entièrement neutres : ils ne savent pas quel état ils gèrent. Avec ça, je peux rajouter n'importe quel état par une simple ligne comme celle-ci : self.nouvelEtat = require("NomDuFichierDuNouvelEtat"). Bien entendu, le fichier "NomDuFichierDuNouvelEtat" devra contenir les fonctions Load, Update et Draw (même si elles ne contiennent aucun code).
*** Bilan personnel ***
En premier lieu, je n'ai pas pu consacrer assez de temps au développement de ce jeu qui est maintenant plus un prototype qu'un jeu. Ensuite, j'ai apprécié de concevoir ce prototype qui m'a permis de mieux structurer ma façon de coder. Comme nombre de mes projets, j'arrive à plus ou moins les finir mais sans vraiment aller jusqu'au bout de mes idées.
Leave a comment
Log in with itch.io to leave a comment.