Eh non, Neogem n'est pas tombé dans l'oubli ( du moins pour moi ^^). La saison est terminée, le calme revient, je peux donc reprendre le développement l'esprit tranquille.
Mais je ne reviens pas les mains vides ! J'ai un premier aperçu de ce à quoi pourrait ressembler le héros :
Bien que je n'aie rien fait en terme de dev cet été, l'intrigue a évolué, certains personnages ont fait leur apparition dans mes notes, ainsi que deux trois idées éparses et un début de mappemonde . J'ai aussi étudié le jeu Kingdom Hearts : Chain of Memories et sa façon d'aborder l'isométrique. J'ai aussi ressorti ma tablette graphique pour avancer moi-même la partie sprites, vu que j'ai encore personne pour ça.
J'espère reprendre la cadence assez vite, comme d'hab je vous tiendrai au courant.
Moteur de texte implémenté, mais pas encore optimal.
Puisque la SDL_ttf est rigide, je me suis fait un petit système de cache. Au lieu de faire un render à chaque frame, je garde un exemplaire de chaque glyphe, pour chaque police. Ca devrait me permettre une plus grande modularité dans l'affichage des dialogues, et de meilleures performances quand le text manager sera terminé. J'ai aussi retravaillé mes classes d'affichage, qui étaient pas vraiment jolies pour de la POO ^^'
Comme vous le voyez, toujours pas d'avancée en terme de graphismes, mais c'est pas le plus important pour l'instant Enfin bref.
J'ai découvert quelques défauts de conception dans la gestion des forces cinétiques, qui m'ont amené à retravailler dessus. Là où j'avais auparavant un objet Force, maintenant j'ai un potentiel cinétique inclus directement dans chaque mesh. Le résultat est quasiment le même, mais la gestion physique est maintenant séparée du reste (= plus de possibilités).
J'ai aussi fait ce que je devais faire depuis longtemps, à savoir remplacer la gestion des frames. Avant c'était fixé à 60fps, et le temps n'avait pas de signification. Maintenant j'update en fonction du temps passé.
Bref cette semaine c'était surtout de la réparation de défauts.
Côté graphique, j'ai un nouvel artwork concernant une race dans le jeu. C'est pas un design final, mais on s'en approche :
Le dessin est de D.P.Negrete, qui n'avait qu'une palette de couleur à suivre ; le reste est de lui Une autre composition du même artiste arrivera dans la semaine.
Voilà, c'est tout pour aujourd'hui !
EDIT : Je précise encore une fois que le design de cette image n'est PAS TERMINE. On a atteint le point Godwin à une vitesse incroyable sur ZdS parce qu'un mec a vraisemblablement pas aimé les habits légers qui serviront de base à une amélioration du design.
Alors oui, vous allez me dire c'est nul, mais cette image signifie beaucoup pour le projet
Je m'explique:
J'ai commencé à implémenter quelques fonctions d'édition de la map, et je me suis dit "pourquoi pas construire un truc avec l'éditeur ?", histoire d'avoir quelque chose à montrer
Mais maintenant que le jeu supporte la gestion des poids, j'ai fait face à un problème : plus j'empilais et plus la base supportait de poids !
Du coup de temps en temps tout tombait sous le poids de la brique que je lachais x)
Une preuve (imprévue) que tout fonctionne relativement bien =)
Au passage, vous pouvez admirer la gestion de l'ordre de blittage des entités, que je viens d'implémenter (et internet ne m'a pas du tout aidé sur ce coup-là :/ )
Ouep, c'était la seule solution pour abandonner les tiles (enfin, disons que certaines features n'étaient pas forcément nécessaires, mais ça m'a bien amusé de les implémenter )
J'ai arrêté de bosser sur la physique et le z-sorting pour l'instant. Ce que j'ai implémenté n'est pas parfait mais conviendra pour cette itération. J'ai fait quelques tests, dont un avec un gros cube fait de 10*10*10 petits cubes. Ca fait 1000 * 1000 tests de collision à gérer + un nombre incalculable de calculs de z-sorting ( très lourd car pas optimisé ), auxquels on ajoute la gestion physique , et enfin l'affichage.
En gros pour 1000 entités non statiques avec un moteur pas optimisé, je suis à quasiment 20ms de delta (dur...) avec des glitches. Ca reste des belles performances vu le poids des calculs, ce qui rend moins urgent le passage à OpenGL, qui reste dans les objectifs à court terme. Ca me laisse le temps de comprendre les shaders et le pipeline OpenGL 3 en général (VBO, VAO, etc...).
J'ai encore sur le feu un sprite du personnage principal _ qui m'a coûté un bras >.< _ par un artiste de DA.
Objectif de la semaine :
Faire une map de test et enfin commencer les évènements, ça traîne...
Comme prévu, j'ai commencé la gestion d'évènements. J'ai pas mal galéré à trouver un système adapté à mes besoins, et je suis parti sur une logique à la RPGMaker. Pour cette itération, je pense être bien avancé.
Concrètement, je crée un child de ma classe Event (par exemple un TeleportEvent) et je lui définis un comportement. Et en application j'en crée une instance, je lui rajoute, si besoin, une condition (interrupteur ou variable à la RPGM), je l'enregistre dans l'event manager et je l'assigne à une entité.
L'event peut être assigné en passif (activé quand le héros entre en collision avec l'objet en question) ou en actif (activé quand le héros est en collision avec ledit objet et appuie sur la touche Action).
Ensuite je peux assigner à cette event un autre event, et ainsi de suite, ce qui crée une chaîne d'events.
Pour une fois je vais mettre un petit bout de code :
event::Teleport* tp = new event::Teleport(coor3f(0,0,0), NORTH);//l'event est un point de téléportation vers 0,0,0, le personnage devra regarder vers le Nord
tp->SetCondition(event::SWITCH_IS_ON, "tp", 0);//il ne sera joué que si l'interrupteur "tp" n'est pas sur ON
EventManager->RegisterEvent("teleport", tp);//on l'enregistre sous le nom "teleport"
entity->SetPassive("teleport");//il sera appelé à chaque collision avec le héros
et en action un simple :
entity->PlayPassive()
Je pense avoir asez de matière pour faire une petite vidéo bientôt, histoire que vous voyiez ça en action.
Voilà voilà, rien d'autre à dire aujourd'hui, à la prochaine !
J'ai arrêté la prog après avoir attendu en vain un spritesheet qui n'est jamais venu, bien que payé :/ Je me suis remis un peu sur le projet en excluant toute la partie graphique, j'ai chopé quelques ressources sur DeviantArt, repris les cendres qui me restaient, et me revoilà
Je vais reprendre là où j'en étais, mais cette fois-ci pas d'update ni de recherche de graphiste, juste de la prog pure et simple, et peut-être de temps en temps une vidéo si je sens qu'il y a eu un net progrès.
En attendant je vous balance un lien vers l'état actuel du projet, la seule avancée par rapport au dernier post étant la gestion d'une chaîne d'évènements .
Thanks, j'ai édité le premier post pour remettre à jour ma façon de procéder.
Moins de bla-bla, plus de code.
Dans l'immédiat y aura pas de baston, c'est pas dans les objectifs à court terme, quoique ça pourrait venir dans les mois qui arrivent. Mais dans tous les cas ça sera pas beau à voir.
Dans l'immédiat, je vais terminer de réadapter mon code aux récents changements, refaire un check-up sur la gestion des events, et j'ai bien envie de commencer le système de dialogues/menus.
Et je vais remettre un synopsis sur le post initial.
Ce projet est la seule raison pour laquelle je reviens faire un tour sur openclassrooms.com de temps à autre Y aurait moyen de jeter un coup d'oeil au code du projet ?
Pas de problème, je peux essayer de te filer le code, je t'envoie ça par mp
Au passage une petite update :
Le Lua a été très embêtant à gérer, maintenant j'utilise un langage de script spécifique à Neogem, qui permet à n'importe qui de rajouter du contenu sans connaître le C++.
Bon bah voilà, après les bons conseils de Mizugola, j'ai fait un repo github, disponible ici.
Je compte pas laisser le projet en open source, mais je dois avouer que c'était pile poil le bon moment pour faire ça parce que j'ai perdu un fichier complet dans une mauvaise manip qui aurait été en partie irrécupérable.
A part ça, j'ai aussi fait un discord pour le projet, au cas où.
Niveau code, j'ai sorti la 0.1.1 la semaine dernière, avec une map de test qui contient une mini énigme (mais c'est assez moche et buggé), une refonte de la gestion des input events, ainsi qu'une amélioration du Neogem Scripting Language et du gestionnaire de scripts en général.
Cette semaine je rush sur le gestionnaire de dialogues du mode explo. Je pense qu'il sera implémenté avant dimanche pour une éventuelle 0.2.
J'en profite pour rappeler que je suis ouvert à toute proposition pour rejoindre le projet (en freelance ou en 'intégration' à l'équipe) -> go discord ou par mail @ ginka-neogem<at>hotmail<dot>com.
Et si un webdev passe par là il sera accueilli à bras ouverts
On peut faire des choix dans les dialogues, enchaîner plusieurs dialogues, se servir d'un choix comme interrupteur pour déclencher des évènements, etc...
Je me suis aussi fait un nouveau sprite à l'arrache en rassemblant quelques idées trouvées un peu partout pour les adapter au personnage principal, et pour coller à l'ambiance graphique que je souhaite obtenir au final.
Je finis Février avec un peu de cleaning dans le code et je consacre Mars à l'ajout de nouvelles fonctionnalités (peut-être du combat).
La 0.3 est donc prévue pour fin Mars si tout va bien. En attendant ça ressemble à ça :
Ouah, je passe dans ce topic par nostalgie et je vois qu'il a été déterré y a à peine deux mois ? x)
Le projet est tombé à l'eau. Changement d'emploi, plus assez de temps et de motivation. Mais au moins j'ai beaucoup appris, je suis content de ce que j'ai réussi à faire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !
Développeur C# et Python principalement mais aussi Java, Web et débutant en C++