Skip to main content

Camera

Aujourd’hui je me suis permi une petite heure de travail sur mon moteur de jeu. J’ai travaillé sur la classe de la camera. Celle-ci dérive de la classe GameObject ce qui fait qu’on peut la déplacer avec la fonction move et qu’on y fait l’update avec la fonction update comme toutes les classes qui dérive de GameObject. Je pense entre autre à la classe pour les Sprites qui dérive elle aussi de la Classe GameObject. Un jour, il y aura aussi les emitteurs de particules qui dériveront de cette classe. La classe Camera fait, mon moteur contient déjà beaucoup de trucs qui peuvent servir à créer un jeu. Il y a un peu de ménage à faire dans le code mais ceci se fera automatiquement au fil du temps. Dès la semaine prochaine, il devrait y avoir plus d’update sur mon blog étant donné que mes vacances se terminent en fin de semaine.

Si vous voulez donner des commentaires sur mon blog, n’hésitez pas à vous inscrire. Le premier commentaire que vous allez faire devra être approuver par moi donc ne vous en faite pas si vous ne le voyez pas tout de suite. Une fois qu’un commentaire a été approuvé, les prochains le seront automatiquement. Ceci est pour éviter le spam. Croyez moi, j’en efface beaucoup à l’arrière. 😎

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. 🙂