Vous n'êtes pas identifié(e).
N pour lancer une nouvelle vague (C'est une des parties sur lesquelles le joueur n'est pas censé avoir la main)
L pour passer au niveau suivant (que deux pour le moment )
R pour reseter le niveau.
Q to quit
Ensuite il faut cliquer glisser les tours aux bons endroits.
Pour le fond :
Je code tout en C++. Je n'utilise pas de moteur, ce serait pourtant plus pratique facile mais ce n'est pas mon but, je veux manger du C++.
J'utilise toujours la lib SDL2, (toujours pratique)
C'est un jeu isométrique. Plus compliqué que la 2D, la conversion des coordonnées 2D vers le monde ISO et inversement m'a donné quelques sueurs.
J'utilise Tiled pour générer et éditer les niveaux (Version 1.1 minimun). (du coup libxml++ pour importer les fichiers)
J'utilise le pathfinding A* pour la découverte des trajectoires en automatique. Je peux générer de nouvelles trajectoires très rapidement, c'est plutôt sympa.
L'ensemble des images est généré à l'aide de Blender. (Il n'y a que des images 2D, Blender me permet de générer les vues sur les différents angles facilement).
J'utilise meson pour la automatiser le compilation, je trouve bien plus simple que automake.
Bref, si vous avez le temps de le tester et de me faire des retours cela serait très appréciables. On pourra en discuter ici.
J'ouvrirai peut être un sujet spécifique pour le graphisme ailleurs sur le forum, j'ai la double casquettes
Kao
Hors ligne
Hors ligne
Tiens je me faisais justement la réflexion récemment que je connaissais pas de tower defense libre o/
J'ai passé des centaines heures sur ces machins é_è
Les Towers Defense en Isométrique, il y en a pas beaucoup non plus. On doit être encore moi sur le créneau Tower Defense Libre en Iso
En pas libre j'étais tombé sur "Ancien Planet" avec un gameplay plutôt sympa : https://www.youtube.com/watch?v=_yv12LvyBTk
Hors ligne
Hors ligne
Tu peux me liste le contenu de ton dossier KingsAndShips ?
Hors ligne
Hors ligne
J'ai fait le test avec Debian Stable et Debian Testing.
Meson 0.37 doit marcher.
Hors ligne
Oui c'est normal, la commande meson est censé l'ajouter. Tu peux essayé en le créant toi même.
Ouais c'est ce que j'ai essayé de suite, mais autre erreur.
The Meson build system
Version: 0.21.0
Source dir: /home/implijer/Bureau/tmp/KingsAndShips
Build dir: /home/implijer/Bureau/tmp/KingsAndShips/build
Build type: native build
Meson encountered an error in file meson.build, line 1, column 0:
Project() does not take keyword arguments.
De debian jessie, du coup. Le problème semble évidement venir de la version. Ptéte que tu devrai spécifier une version minimale de meson pour l'élégance x)
Dernière modification par otyugh (14-07-2018 16:44:17)
Hors ligne
It has been testing with Debian Stretch and Buster for now.
Meson 0.37 is needed at the minimun.
Meson 0.21 ne doit pas comprendre certaines formulation dans le fichier meson.build
Il semble y avoir un mécanisme pour vérifier la retro-compatibilité dans meson avec la version 0.47.
http://mesonbuild.com/Release-notes-for-0-47-0.html
Je vais regarder pour voir si je peux faire quelque chose pour Jessie.
Hors ligne
Hors ligne
captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.
Hors ligne
Yay, chouette projet kao
Compilé et lancé chez moi, no souçay. Je ne connaissais pas tiled. Pratique !
Ça donne envie de coder…
Héhé, les coups de main sont les bienvenues .
Je fais du C++ facile pour le moment, je suis loin d'avoir explorer toutes ses possibilités.
Tiled me facilite beaucoup le travail, il me sert d'éditeur de niveau.
Je m'en sers aussi pour placer les vagues de bateau. On peut même gérer les vitesses d'animations même si je ne m'en sers pas encore pour le moment.
Je suis bien content de l'avoir trouvé en tout cas.
Et merci pour les encouragements
Hors ligne
en plaçant une classe par fichier, tout du moins les plus importantes.
en réduisant la taille des grosses fonctions. Je l'ai éclate en plus petites fonctions, pour améliorer la lisibilité. Le but est de ne pas avoir à scroller pour lire une fonction.
je renomme des fonctions, des classes ou des variables afin de mieux correspondre à leurs utilisations réelles. Ce n'est pas toujours facile de trouver le bon nom, surtout quand leurs rôles évoluent au fil du temps.
j'ai aussi améliorer la verbosité des messages en CLI pour faciliter la lecture et le débogage. Il faudra que je me penche sur les exceptions et les assertions.
j'essaye aussi de faire évoluer certaines fonctions ou données afin qu'il y ait le moins de calcul possible pendant le jeu. Par exemple actuellement à chaque fois que j'affiche un objet, il doit consulter la liste des textures pour retrouver la ou les siennes. L'objet consulte donc 30 fois pas seconde la liste. Même si cela est rapide, il peut être intéressant de stocker cette information directement dans l'objet lors de sa création.
Je fais aussi évoluer la nomenclature de mes fichiers graphiques et des noms de textures. Je pense à faire quelques choses comme ceci Objet_rang_status_orientation_numéro : Boat_01_Alive_NorthWest_5 ou bien Tower_02_Dead_SW_01
J'essaye aussi d'utiliser de plus en plus le système de branche de git, afin d'avoir une branche "master" stable, et de pas polluer la branche "develop" avec du code non terminé.
Il faudra aussi que je consacre du temps pour les graphismes, mais ça c'est un autre sujet.
Je vous tiens au courant, si vous avez des questions ou des suggestions n'hésitez surtout pas je suis preneur.
Hors ligne
captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.
Hors ligne
J'ai trouvé que mettre un "C_" devant les noms de class et un "m_" devant les attributs membre aide beaucoup à si retrouver. (C_NomDeLaClass et m_NomDeLattribut)
Pour la documentation, je ne sais pas trop comment faire. Je me doute qu'il faudrait une petite explications pour comprendre comment sont stockées les informations et dans quel ordres elles sont traitées.
Mais je ne sais pas sous quelle forme la mettre, en dehors de mettre quelques commentaires éclairées par ci par là
Pour l'optimisation je pratique beaucoup les pointeurs et peu les références, principalement parce-que la SDL communique par pointeur et que cela m'évite de faire des "conversions".
Pour la sécurisation, j'ai retravaillé mes encapsulations il y a quelques temps, j'ai plus de chose en "protected" maintenant. Par contre je ne suis pas très assidus sur les "const".
Références et constantes sont un peu à la traîne dans mon code, il faudrait que je me repenche sur mon cours pour que leur utilisation deviennent plus facile et systématique.
Dernière modification par kao (27-07-2018 14:10:22)
Hors ligne
captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.
Hors ligne
Leonlemouton
°(")°
Hors ligne
Hors ligne
Hors ligne
Le fait que le tableau soit statique empêche la modification de sa taille en cours de route. Même s'il est possible de tricher et de contourner cette limite, c'est compliqué et dangereux.
Dans mon précédent jeu en C, je n'utilisai que des tableaux statiques, cela fonctionnait mais le C++ facilite les choses avec les Vectors.
On peut accéder aux informations de la même façon mais il faut savoir comme le déclarer et comment l'initialiser.
Comme j'ai transpiré pour le mettre en place, j'ai écris un pense bête ici https://kaocode.frama.site/blog/c-vecto … mensionnel
A noter que dans le jeu, je me sers de l'objet placé dans le tableau comme d'un axe Z. Dans l'axe Z on trouve les différentes couches que je vais pouvoir superposer: le sol, les morts, les vivants, les nuages etc.. . C'est une astuce que j'ai trouvé pour mon précédent jeux, mais je serais curieux de savoir comment font les autres jeux 2D pour stocker leurs infos.
Sinon, chaque bateau possède aussi sa propre grille multidimensionnelle afin de stocker ces propres calculs de trajectoires. J'ai donc aussi migré cette grille vers un vector.
C'est cette partie qui m'a fait le plus transpirer mais à la fin j'ai pu faire la transition et optimiser mon interprétation du pathfinding A*. Je ne calcule plus la totalité des nœuds, juste ceux qu'il faut.
Sur le sujet, je vous conseille cette vidéo pour ceux que cela intéresse : https://www.youtube.com/watch?v=-L-WgKMFuhE
Voilà pour le moment, je pousserais sûrement dans quelques jours les modifs dans la branche master.
Bien à vous,
Kao
Hors ligne
la possibilité d'ajouter une barge en feu sur l'eau pour ralentir les bateaux. Le design de la barge et du bouton sont simplistes, mais ça fonctionne. Les bateaux vont contourner l'obstacle ou lui tirer dessus pour le couler et pour pouvoir passer. Appuyer une fois sur D pour le mode debug puis plusieurs fois sur n pour lancer des vagues de bateau, ainsi vous verrez les trajectoires évoluer en fonction des obstacles
J'ai commencé à travailler sur la notion de coût de construction. Ça implique pas mal de chose dans le code, mais ça permettra de rendre le jeu plus intéressant puisqu'il faudra gérer ses ressources.
Comme le suggérait Captnfab, j'ai mis en place une doc à l'aide de Doxygen. Il faut aller dans doc/html/index.html pour y accéder. C'est assez facile à mettre en place, j'essaierai de commenter mes classes au fur et à mesure que je les retravaillerai. Le travail de documentation est intéressant parce qu'il force à réfléchir au rôle réel d'une fonction ou d'un attribut et parfois cela implique de les renommer.
Si vous avez des suggestions ou des idées à partager, n'hésitez surtout pas.
Cordialement,
Kao
Hors ligne
Leonlemouton
°(")°
Hors ligne
- Page d'accueil du Game ! //Probablement dans un deuxieme temps quand j'aurai une meilleur idée de comment j'organise le jeu.
- Affichage des ressources //J'ai commencé à y travailler, j'ai créé une sorte de portefeuille pour gérer les ressources. Une tour coûte tant, couler un bateau me rapporte tant etc...
- Boutons (menu, passer au niveau supérieur...) et menus (commencer, paramètres, quitter le jeu...) // Je ne pense pas que ce soit compliqué à mettre en oeuvre mais il me manque surtout les icônes. Je code plus vite que ce que je dessine
- Bulles d'aides au survol des éléments avec explications... // Je pensais mettre des icônes pour pouvoir monter le niveau d'une tour par exemple. C'est assez classique dans ce type de jeu mais là aussi cela demande beaucoup de graphisme, parce qu'il faut que je fasse la déclinaison de la tour pour chaque "niveau"
Il faudrait que je fasse une grosse session graphisme pour disposer des éléments à afficher, même si cela n'est pas parfait. Cela me permettrait ensuite de disposer des éléments et de les mettre en place rapidement. Il faudrait que j'ouvre un topic sur le sujet dans la partie graphismes pour en parler et peut-être trouver de l'aide.
Hors ligne
Hors ligne
tu me conseilles d'installer quand même ? oui / non ? pourquoi ?
Hors ligne