Bonjour,
je réalise en ce moment un petit jeu type rpg où un personnage se déplace dans un monde d'hexagone. A terme, j'aimerais que mon monde soit infini et que mon moteur charge en temps réel la suite du terrain.
J'ai pour l'instant quelque chose qui marche mais qui n'est pas du tout optimisé. J'essaye donc de trouver la manière la plus optimisé pour réaliser ce chargement temps réel.
Donc sans rentrer dans le fonctionnement de mon application actuelle qui rame entre les différents cartes, je pensais améliorer mon moteur avec ce qui suis :
J'aimerais donc avoir un tableau 2D tel que celui ci-dessous en image.
Ce tableau représenterait le monde complet en vue de dessus. Chaque numéro représenterait une hauteur de terrain (mon jeu est en 3D).
Le carré rouge quant à lui serait un second tableau représentant la carte que le personnage voit (beaucoup plus petite que le monde pour pas que sa rame bien sur).
Mon moteur chargerait petit à petit la suite du monde et la 3D (grâce à un thread et en fonction de la position du personnage).
Et en temps réel (boucle principal), j'actualiserai le second tableau qui me sert en continu à gérer le pathfinding, les objets, obstacles, ...
J'ai donc quelques questions, pour ne pas re-coder une seconde fois inutilement un moteur foireux qui ramerait :
- Est-ce que cette vision de mon jeu est réalisable et paraitrait assez optimisé.
- Voyez-vous une autre façon de faire qui paraitrait plus optimiser ?
- Voyez-vous des failles dans mon système ? A court terme ou long terme ?
Et une dernière question :
En C++ donc bien sur, quelle serait le meilleur conteneur pour gérer mon tableau représenté par le carré rouge ?
Actuellement, j'utilise un vecteur de vecteur pour faire ce tableau 2D. Ce tableau représente une carte de 60x60, je fais à chaque frame (vu que j'ai un moteur 3D), le calcul du nouveau tableau avec une double boucle (x, y). Je ne trouve pas ça super optimiser, comment je pourrais envisager mieux ?
J'espère avoir été à peu prêt clair et pouvoir trouvé de l'aide.
Merci,
Olivier.
Partager