Mon nouveau projet : [insérer le nom dès que je l'aurai trou
Posté le 07/08/2019 18:09
Salut à tous !
J'ai vu récemment une pub d'un jeu de lasers sur facebook, j'ai pas pu remettre la main dessus mais j'ai eu envie de coder un jeu dans le genre.
Le principe est le suivant :
Il y a une ou plusieurs sources qui émettent un laser dans une direction, et on va pouvoir modifier l'orientation de différents "tunnels" présents sur une grille afin d'orienter les lasers vers les récepteurs pour finir le niveau.
POST ORIGINAL
Cliquer pour enrouler
J'en suis au tout début, mais j'ai déjà un bout de prototype. J'aimerai votre avis concernant le design, que préférez-vous entre ces 3 gifs suivants ?
Cliquez pour découvrir
Cliquez pour recouvrir
EDIT DU 13/08/2019 :
Je viens faire part de l'avancement de mon projet après quelques jours d'absence.
J'ai entièrement refait le jeu parce que jusqu'ici je calculais et affichais tout d'un coup, mais je me suis rendu compte que ça posait des problèmes dans le sens où je calculais chaque rayon les uns a la suite des autres et non pas en même temps, ainsi il y avait des problèmes de priorité des rayons, mais c'est résolu. (Maintenant lorsque deux rayons se rentrent dedans, il s'arrêtent là où ils se trouvent)
Aussi, les rayons ne sont plus instantanés mais progressifs : on peut suivre leur évolution. Ceci n'est absolument pas dû aux limites de la calculatrice mais c'est un choix purement esthétique. Si vous trouvez que ça rend pas super bien c'est possible d'avoir le résultat instantané. D'ailleurs je ferai sûrement une option pour activer ou non cet effet.
J'ai pas mal bossé sur l'éditeur de niveaux, il est plutôt fonctionnel déjà, voici un aperçu de tous les blocs disponibles :
De gauche à droite et de haut en bas :
→ L'émetteur de laser "noir"
→ L'émetteur de laser "rayé"
→ Le récepteur de laser noir
→ Le récepteur de laser rayé
→ Un tunnel à 1 entrée 1 sortie
→ Un tunnel à 1 entrée 2 sorties
→ Un tunnel à 1 entrée 3 sorties
→ Un "échangeur de rayon" : lorsqu'un rayon noir rentre dedans il ressort rayé et inversement
→ Et enfin un mur puis un mur en coin
Et pour finir voici une petite démo de l'avancement de mon programme jusqu'à maintenant :
Voilà j'espère que le résultat vous plaît !
Encore une fois je suis tout ouïe à des suggestions et améliorations.
D'ailleurs j'ai une question concernant les niveaux, j'ai une idée en tête :
Pour moi, lors de la création d'un niveau, il sera possible de placer des blocs figés qui seront indiqués graphiquement comme immuables, que l'utilisateur ne pourra pas modifier, et il disposera d'un certain nombre de chaque type de blocs dans son inventaire (défini par le créateur du niveau) qu'il pourra placer comme bon lui semble.
Cependant, j'aimerai faire en sorte que lors de la création du niveau, il y ait :
→ des objets "totalement" immuables : qu'on ne peut ni déplacer ni pivoter
→ des objets "a moitié" immuables : on ne peut pas les déplacer mais on peut les faire pivoter
→ les objets de l'inventaire que l'on peut poser, déplacer, tourner comme bon nous semble.
Grâce à ça j'envisage des niveaux qui demanderont au joueur de bien positionner les pièces à sa disposition, mais également des niveaux où il n'a aucune pièce à sa disposition et peut seulement faire pivoter certaines des pièces présentes.
Maintenant, comment est-ce que graphiquement le joueur peut différencier les objets fixes, les objets pivotables, et les objets de son inventaire ? J'aimerai bien un peu d'aide si vous avez une idée.
Voilà merci pour vos retours !
Cordialement vôtre
Citer : Posté le 14/08/2019 02:08 | #
Re-bonjour à tous !
Je viens faire part de l'avancement de mon projet après quelques jours d'absence.
J'ai entièrement refait le jeu parce que jusqu'ici je calculais et affichais tout d'un coup, mais je me suis rendu compte que ça posait des problèmes dans le sens où je calculais chaque rayon les uns a la suite des autres et non pas en même temps, ainsi il y avait des problèmes de priorité des rayons, mais c'est résolu. (Maintenant lorsque deux rayons se rentrent dedans, il s'arrêtent là où ils se trouvent)
Aussi, les rayons ne sont plus instantanés mais progressifs : on peut suivre leur évolution. Ceci n'est absolument pas dû aux limites de la calculatrice mais c'est un choix purement esthétique. Si vous trouvez que ça rend pas super bien c'est possible d'avoir le résultat instantané. D'ailleurs je ferai sûrement une option pour activer ou non cet effet.
J'ai pas mal bossé sur l'éditeur de niveaux, il est plutôt fonctionnel déjà, voici un aperçu de tous les blocs disponibles :
De gauche à droite et de haut en bas :
→ L'émetteur de laser "noir"
→ L'émetteur de laser "rayé"
→ Le récepteur de laser noir
→ Le récepteur de laser rayé
→ Un tunnel à 1 entrée 1 sortie
→ Un tunnel à 1 entrée 2 sorties
→ Un tunnel à 1 entrée 3 sorties
→ Un "échangeur de rayon" : lorsqu'un rayon noir rentre dedans il ressort rayé et inversement
→ Et enfin un mur puis un mur en coin
Et pour finir voici une petite démo de l'avancement de mon programme jusqu'à maintenant :
Voilà j'espère que le résultat vous plaît !
Encore une fois je suis tout ouïe à des suggestions et améliorations.
D'ailleurs j'ai une question concernant les niveaux, j'ai une idée en tête :
Pour moi, lors de la création d'un niveau, il sera possible de placer des blocs figés qui seront indiqués graphiquement comme immuables, que l'utilisateur ne pourra pas modifier, et il disposera d'un certain nombre de chaque type de blocs dans son inventaire (défini par le créateur du niveau) qu'il pourra placer comme bon lui semble.
Cependant, j'aimerai faire en sorte que lors de la création du niveau, il y ait :
→ des objets "totalement" immuables : qu'on ne peut ni déplacer ni pivoter
→ des objets "a moitié" immuables : on ne peut pas les déplacer mais on peut les faire pivoter
→ les objets de l'inventaire que l'on peut poser, déplacer, tourner comme bon nous semble.
Grâce à ça j'envisage des niveaux qui demanderont au joueur de bien positionner les pièces à sa disposition, mais également des niveaux où il n'a aucune pièce à sa disposition et peut seulement faire pivoter certaines des pièces présentes.
Maintenant, comment est-ce que graphiquement le joueur peut différencier les objets fixes, les objets pivotables, et les objets de son inventaire ? J'aimerai bien un peu d'aide si vous avez une idée.
Voilà merci pour vos retours !
Drakalex
Et effectivement ne0tux, ça y ressemble pas mal et j'avais déjà envisagé le fait d'avoir des rayons qui ne soient pas que en angle droits, mais finalement j'ai préféré laisser comme ça !
PS: si vous vous demandez pourquoi je post si tard, c'est parce que je suis actuellement dans les dom-tom, il est 20h ici
Citer : Posté le 14/08/2019 08:48 | #
Ça progresse bien ! J'espère que ton code est propre.
Une possibilité serait d'afficher un texte ou des icônes dans une certaine zone de l'écran au survol. Si tu as un HUD pour l'édition c'est certainement un bon endroit.
Sinon tu peux avoir une touche pour changer vers un mode d'affichage spécial, où tu dessines les blocs semi-immuables par deux flèches de rotation et les blocs immuables par des cadenas. Rappuyer sur la touche ramènerait à l'affichage normal. L'idée est que tu n'as pas assez de place pour l'afficher sur la map si elle est dense.
Citer : Posté le 14/08/2019 09:42 | #
Tu peux aussi faire un indicateur léger, par exemple les totalement immuables dans un carré noir plein (on le verrais bien vu tes pièces), et pour le semi-immuables un carré avec juste la bordure en noir (là c'est moins sûr, mais ça doit être faisable, vu les coins de tes pièces). T'explique ça à un endroit dans le programme (genre tuto ou autre) et c'est bon.
Citer : Posté le 14/08/2019 10:16 | #
Magnifique !
Juste super beau, pour les immuables, les coins pourrait être juste des points (Juste les quatre coins) et les semi, inversement, tu enleve les quatre coins (les petit pixel) ?
Citer : Posté le 14/08/2019 16:48 | #
Merci pour vos retours !
Après avoir testé chacune de vos idées, celle qui ressort le mieux est celle de Lephe avec une touche qui affiche un sprite par dessus chaque bloque indiquant leur type.
De plus, après avoir réfléchi je me suis dit que ce serait peut être plus simple et agréable si, pour choisir un bloc (que ce soit dans le mode édition ou dans le mode jeu), au lieu d'appuyer sur shift pour ouvrir un menu, tout se fait directement sur l'écran de jeu en sacrifiant une ligne du tableau de jeu. On pourra accéder aux différents blocs grâce aux touches F1 à F6, les faire défiler (car tout ne rentre pas sur l'écran) et potentiellement avoir directement un aperçu du nombre de blocs restants dans l'inventaire dans le cas du mode jeu.
Voici un aperçu non fonctionnel de l'idée :
Pensez-vous que ce compromis est utile, ou vaut-il mieux garder une ligne de jeu ? (On passe de 8 lignes à 7, pour 16 colonnes).
Citer : Posté le 14/08/2019 17:08 | #
Tant que les niveaux continuent de marcher ça va. Tout dépend de la façon dont tu conçois les niveaux, aussi. Rien ne t'empêche de les construire sur plusieurs écrans tant qu'on ne se perd pas à scroller tout le temps.
Citer : Posté le 14/08/2019 17:15 | #
Oui oui ils continuent de marcher haha, mais justement je ne comptais pas faire d'écran scrollable, j'envisageais plus que tout le niveau soit contenu sur le même écran, d'où ma question, est-il préférable de sacrifier une ligne pour avoir un accès plus pratique aux blocs ?
Citer : Posté le 14/08/2019 17:18 | #
Pour moi non, il suffit que le menu avec SHIFT indique quelle touche F1..F6 correspond au bloc et les joueurs apprendront vite.
Citer : Posté le 14/08/2019 17:25 | #
Mais justement comme je l'ai dit, tous les blocs ne tiennent pas sur l'écran ! D'où la nécessité de pouvoir faire défiler les blocs (il y en a plus que seulement 6).
Je vais réfléchir à une alternative
Edit: ou alors une touche qui affiche ou masque ladite barre de séléction pour conserver une ligne en plus
Citer : Posté le 14/08/2019 19:21 | #
Mais une touche qui affiche et masque la barre genera si on souhaite poser un objet en bas
Citer : Posté le 14/08/2019 22:20 | #
Alors après une petite journée de travail, je pense que je suis arrivé à un compromis plutôt satisfaisant.
En appuyant sur les touches F1 à F6, un menu apparaît. On peut ensuite naviguer dedans et dès qu'on a choisi notre bloc, le menu disparaît.
Voici un aperçu du résultat !
Ajouté le 16/08/2019 à 13:13 :
Voici comment seront présentés les types de blocs en mode jeu et en mode édition:
En appuyant sur Shift, les sprites vont alterner entre le bloc de base et le sprite indiquant le type de bloc (immuable, rotation ou libre). De plus en mode édition, appuyer sur un bloc permettra de changer son type, sachant que tous les blocs libres seront supprimés du niveau lors de sa validation et placés dans l'inventaire.
Citer : Posté le 16/08/2019 15:33 | #
Le jeu... Il est en C ou en Basic Casio ?
Citer : Posté le 16/08/2019 16:04 | #
Il est en C, c'est un add-in, effectivement je l'ai précisé nulle part !
Citer : Posté le 16/08/2019 16:41 | #
Cool
Citer : Posté le 18/08/2019 21:09 | #
Joli rendu pour les deux interfaces ! Je te tire mon chapeau.
J'ai remarqué que les quatres bordures qui forment le curseur risquent de gêner un peu la lecture des sprites - en me connectant aujourd'hui je n'arrivais plus à comprendre l'un d'eux à cause de ça. As-tu envisagé d'inverser le carré avec Bdisp_AreaReverseVRAM() ?