Je crée un jeu XNA qui nécessite un espace énorme pour les joueurs. Actuellement, la hauteur de test que j'utilise est 4096x4096 et est enregistrée en tant que BMP 4 bits.
Ce que j'essaie de faire, c'est de prendre cet énorme fichier de hauteur et de le rendre dans le jeu. Le problème que je rencontre est le fait qu'il est inefficace de charger tout le terrain en mémoire à la fois, car il utilisera la majorité de la mémoire disponible.
Un autre problème que j'ai rencontré est que je ne peux pas rendre le terrain tout en une primitive en raison d'un ensemble de limites strictes dans XNA.
Cela dit, j'ai rencontré un certain nombre de solutions, que j'ai énumérées ci-dessous:
- Rendu basé sur l'emplacement actuel de l'utilisateur - dessiner essentiellement un carré autour de l'utilisateur, quelle que soit son orientation dans le monde. Ce n'est pas exactement ce que je voulais non plus, car vous restituez toujours de l'espace que l'utilisateur ne voit pas.
- Rendu basé sur l'orientation et la position de l'utilisateur - J'ai trouvé une formule pour récupérer un triangle censé avoir les pixels de la carte de hauteur censés être rendus, mais cela s'est avéré très difficile.
- Diviser le terrain en plusieurs morceaux et rendre ceux qui sont les plus proches de l'utilisateur - Toujours pas très efficace car vous restituez toujours des morceaux que les gens ne verront pas. Et cela demande beaucoup de travail, car je dois ensuite diviser ma carte de hauteur en plusieurs parties, et l'évolutivité devient un gros problème.
Après avoir essayé ces solutions, je suis à court d'idées pour savoir quoi faire. J'ai reçu des réponses où les gens me disent de faire ces algorithmes complexes, mais je n'ai tout simplement aucune idée même de la façon de les faire.
Donc, fondamentalement, je demande un moyen simple et direct de rendre des terrains énormes dans XNA avec une efficacité maximale.
Je suis plutôt nouveau dans le développement de jeux en général, mais je suis prêt à faire des recherches si cela semble prometteur.
Mise à jour 1: Après avoir recherché la méthode de géoclipmapping, j'ai commencé à coder avec ça. J'ai fait tous les calculs et le jeu se déroule. Cependant, il est extrêmement inefficace - ce qui est probablement un mauvais codage de ma part. Il fonctionne à 2FPS et utilise un cœur entier de mon processeur. Je vais essayer d'améliorer le code, mais je pense que j'aurai besoin de plus d'aide, alors voici un Pastebin du code pour la classe Terrain manager. Je posterai plus de résultats plus tard si je parviens à être plus efficace.