J'écrirai une bonne réponse puisque j'étais à votre stade il y a environ 2 mois.
J'ai commencé à écrire un moteur de jeu très simple pour mieux apprendre OpenGL 3.x mais comme mon inexpérience et ma maigre connaissance de la façon de concevoir un jeu 3D, je rencontre généralement des problèmes où je me rends compte que j'aurais dû concevoir mes cours différemment.
Ne t'en fais pas. Avec votre manque d'expérience, vous ne pourrez jamais penser à toutes les possibilités et à la manière dont une classe donnée sera utilisée dans votre moteur. Il est préférable de considérer les principales fonctionnalités de la classe, de l'implémenter et de la restructurer ultérieurement. N'essayez pas de trop réfléchir, vous perdrez votre temps à ce stade. Mon premier match a été un gâchis complet, je suis sûr que c'était le cas pour la plupart des gens.
D'autres problèmes auxquels je suis confronté sont de savoir comment suivre le temps de manière concise dans le jeu et mettre à jour le mouvement selon les besoins et comment dire au moteur de rendu qu'il doit redessiner.
Ce dont vous avez besoin, c'est de savoir ce qu'est une boucle de jeu. C'est un bon point de départ. Une fois que vous commencez à écrire du code plus complexe comme la gestion de la physique, vous pouvez envisager des boucles avec des temps de trame variables, mais commencez petit. Une simple boucle de jeu à cadre fixe devrait vous suffire pour l'instant.
De plus, je continue d'avoir besoin de faire des fonctions Get et Set pour passer divers drapeaux d'un objet à un autre, est-ce une mauvaise pratique?
Il s'agit davantage d'une question de génie logiciel. Avec le temps, vous verrez quelles données vous devez protéger et lesquelles sont sûres. Il est probablement préférable de simplement implémenter une fonctionnalité, puis de voir ce qui n'est pas exposé à l'extérieur et peut être traité comme des données publiques.
C'est une question d'expérience. Vous écrirez une classe de caméra, puis vous verrez les fonctionnalités que vous en attendez à côté des matrices de transformation. Si vous voulez des conseils immédiats, je dois dire que mettre en œuvre des os nus, étendre plus tard.
Articles et livres:
- Développement de moteur de jeu
Ces livres parlent de l'architecture des moteurs de jeu et des pipelines modernes. Ils vous donneront un bon aperçu de la technologie sous-jacente. Je recommande le premier livre si vous devez choisir, il est moins "biaisé" vers certaines technologies, bien qu'en fin de compte vous souhaitiez passer à travers les deux car ce sont de grandes sources de connaissances.
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(Je relie cela parce que j'ai trouvé difficile de trouver des articles sur la façon dont la détection de collision 3D est effectuée.)
Il y a plus de livres, mais au moment où vous en aurez terminé (en particulier l'architecture du moteur de jeu), vous saurez mieux ce que vous voulez.
Btw, j'utilise toujours freeglut, recommanderiez-vous de passer à un meilleur système de fenêtrage avant de progresser ou après avoir une meilleure compréhension d'OpenGL?
WinAPI, si vous sentez que vous avez le temps et la volonté d'apprendre la programmation Windows (si vous développez pour Windows). FreeGLUT est parfait pour l'apprentissage, mais vous voudrez éventuellement plus de fonctionnalités. Cependant, si vous souhaitez emprunter une toute autre voie, vous pouvez lancer OpenGL avec des bibliothèques comme SFML ou SDL. Restez avec FreeGLUT, sauf si vous êtes têtu comme moi. Je suis allé directement pour WinAPI.