Skip to main content

Beta testeur

Bonjour à tous. Un petit message pour vous annoncer que je suis officiellement beta testeur pour le premier cours de directX sur Game Developer’s College. Cette école a été créé par Jonathan S.Harbour. C’est un professeur d’université qui a écrit beaucoup de livre de programmation de jeu. Je possède 3 de ses livres. Comment c’est arrivé ? Je m’étais inscrit sur son forum histoire de connaître les mises à jours ou les corrections de ses livres et j’ai vue qu’il cherchait du monde avec de l’expérience en c++ pour tester ses cours. J’ai donné mon nom et j’ai été choisi. Mon rôle est de faire comme si j’étais un étudiant et de lire et faire tout les exercices et notés les erreurs ou amélioration à apporter. J’ai commencé le premier cours hier et je peux vous dire que c’est très bien fait. Si jamais vous avez des questions, n’hésitez pas à communiquer avec lui sur le site du collège ou bien avec moi. Il va s’en dire que le développement de Cyclops et Space ball sera plus lent dans les prochaines semaines mais c’est pour une bonne cause 🙂

Pleins de nouvelles classes

La semaine dernière il y a eu tout pleins de nouvelles classes qui ont été créé.

TextureManager Comme son nom l’indique, cette classe contiendra un vector des textures qui sont présentements loader en mémoire pour le level en cours.
Tile Cette classe s’occupe des tile qui provienne des tilesets loader en mémoire avec le texture manager
Level S’occupe de gérer le fichier xml du level
Texture Représente une texture. Une fois loader, elle est placé dans le textureManager

Comme je suis présentement en vancance, il se peut que les mises à jours seront plus espacer jusqu’au 15 août.
Bonne semaine 🙂

OnLostDevice

J’ai enfin réglé un bug qui trainait depuis très longtemps. Lorsqu’on déplaçait la fenêtre ou si on la redimensionnait, il y avait un crash qui disait ceci :

Direct3D9: (ERROR) :All user created D3DPOOL_DEFAULT surfaces must be freed before ResetEx can succeed. ResetEx Fails.
Direct3D9: (ERROR) :ResetEx failed and ResetEx/TestCooperativeLevel/Release are the only legal APIs to be called subsequently
D3D9 Helper: IDirect3DDevice9::Reset failed: D3DERR_INVALIDCALL

J’ai chercher longtemps avant de trouver c’était quoi. En fait, tout était correct exepter une chose. J’appelais 2 fois de suite cette série de code :

OnLostDevice();
HR(mpDevice->Reset(&mD3dPresentParam));
OnResetDevice();

J’ai enlever le doublon et mon crash a été réglé comme par magie. J’ai trouvé l’indice qui me fallait en allant faire des recherches sur https://www.gamedev.net/  😛

Début des collisions

La semaine dernière j’ai commencé à travailler sur la gestion des collisions. Je me suis concentré davantage sur la collision par bounding box pour le moment. Je me suis créé une petite fonction dans ma classe sprite qui vérifie si celui-ci collisionne avec un autre sprite passé en paramètre. Pour le moment, la détection fonctionne assez bien mais il me reste plusieurs test à faire et un petit bug lorsque le sprite collisionne avec le coin d’un autre sprite. Parfois il ne le détecte tout simplement pas et le sprite passe au travers de l’autre.

J’ai aussi commencer à travailler sur mon éditeurs de niveaux. Je ne savais pas trop comment l’appeller alors j’ai pigé dans la mythologie grecque et j’ai choisi comme nom : Cyclope. Cet éditeur de niveau permettra de créé nos cartes rapidement et simplement. Il sauvegardera les map dans un format  crypter (*.map) pour ne pas que les joueurs les modifie pour tricher et les informations des tilesets utilisé seront sauvegardé en xml et seront général au projet.

À venir cette semaine:

  • Regard sur le bug qui concerne la détection de collision lorsque ça arrive dans un coins du bounding box
  • Affichage d’un tilemap
  • Poursuite de l’éditeur de niveau
  • Screenshots pour le blog

Classe des sprites

Cette semaine j’ai donné un grand coup pour ma nouvelle classe pour gérer les sprites. Je n’ai pas eu de problème majeur mais fait tout pleins de découvertes intéressante sur la gestions des sprites. Pour le moment la classe permet de loader une image et de l’afficher. On peut lui définir sa position ainsi que son point de pivot. Ce n’est pas beaucoup pour le moment mais il faut savoir que cette classe dérive de la classe gameobject et que celle ci contient d’autre attributs intéressant. Lorsque ma classe sera pas mal terminé, je vous détaillerai d’avantage son utilisation et je vous posterai une image. La semaine prochaine je vais m’attaquer à la gestion des collisions entre les sprites. Pour le moment je vais me concentrer sur la détection par bounding box et par le rayon tout dépendant de la forme du sprite. 🙂