Bonsoir,
Dans le cadre du développement d´un MORPG 3D, je souhaiterais avoir des suggestions en ce qui concerne les maps. En effet, il existe de nombreuses méthodes pour afficher une map, mais si c´est un monde entier qu´il faut afficher, savez-vous comment procéder ?
J´ai fait bien évidemment des petites recherches sur Google, et voici un topic intéressant que j´ai trouvé, maisi l ne me donne pas plus d´informations : http://forums.apinc.org/viewtopic.php?t=2095
Ce topic n´est pas que pour moi, mais également pour ceux qui souhaitent comprendre le fonctionnement du système =)
Bonne soirée, j´espère que ce topic sera intéressant pour les concepteurs/développeurs de jeux.
Je te suggere le Heigmapping, c´est le mieux adapté pour faire des cartes grandes je pense. Il y a diverses optimisations a appliquer dessus pour " aller plus vite".
Mais tu t´attaques a un gros morceaux !
Quel est ton niveau en programmation ?
Il est relativement faible, mais je veux juste en créer un pour le simple plaisir de programmer, et puis un MORPG est l´un des projet le plus compliqué à réaliser, mais aussi l´un des plus intéressant. En effet, diverses questions se posent : Par exemple la gestion Serveur/Client, et tout le tralala. Et comme dit plus haut, je ne m´intéresse qu´aux systèmes du dit MORPG, qui est plus qu´attractif :P
( J´entend déjà les : Tu es trop faible, nanani et nanana ^^ ( Et je le sais, moi au moins je sais à quoi je m´attaque mouhaha ^^ ) )
tout a fait le topic semble intéressant.
Mias je ne suis pas sur d´avoir compris toute ta question.
tu voudrais afficher tout le monde d´un seul coup, sur le meme ecran ?
( j´ai pas du comprendre)
Non, c´est vrai je me suis mal exprimé.
Je réitère ma question :
Comment faut-il faire pour afficher un monde en temps réel, en évitant au maximum de buffer la mémoire du PC ?
J´espère que cette fois c´est clair ^^
Moi j´afficherai un bitmap d´une carte du monde
Je sors, je sors....
lol
Je m´y connais pas trop en MMORPG mais tu peux diviser le monde en plusieurs parties et n´utiliser que celle où le joueur est.
un mmorpg en 2d devrait etre possible comme " petit" projet...
sinon, suis le conseil de jyy : le heightmap
auquel tu pourrais " facilement" appliquer le culling + techniques de ´LOD´
et je confirme... c´est un gros morceau
Le heigmapping s´appuie sur un bitmap 8 bits : ça consomme peu en mémoire. Meme si ta carte est immense, que fera t elle ? 2000*2000 quads ?
ça consomme 4 Mo en RAM ça...
Commence déja avec ça, c´ets pas mal
Apres pour aller sur une autre carte, sois tu recharge quand tu arrives au bout, sois tu commences a charger quand tu t´approches des frontieres, quit a avoir 2 maps en mémoire quand tu es " entre deux"
Ce qui consomme, c´est les textures. Et ce qui est fondamentale, c´est d´optimiser l´affichage. Suis les conseil de fracart : , les meilleurs otpimisations sont le frustrum culling et les différents niveaux de détails ( LOD) Tu peux rajouter le masquage des parties cachées, et le clipping ( qui peut etre camouflé avec un effet fog)
Si ton expérience n´est pas énorme la dedans, je te conseille de commencer par autre chose : ok c´est intéressant la programmation d´un gros truc, mais il est plus enrichissant de finir plein de petits trucs pour se faire les dents que d´aller direct sur un gros truc que tu ne finiras pas
Apres, si tes questions sont d´ordres théoriques comme celle ci, pas de soucis pour y répondre ![]()
le heightmap ne se base pas forcément sur un bitmap ( a moins que je ne fasse une confusion), mais peut se baser sur n´importe quoi ( un . txt avec pleins de chiffres dedans par exemple
)
tu pourrais essayer de faire un mmorpg dans le style zelda sur gameboy, c´est-a-dire en 2D...
Le gameplay en serait grandement changé, certes, mais tu n´auras plus aucun problème d´affichage et d´optimisation à faire...
Bonjour,
Le seul problème qui a été énoncé avec le Heightmap, c´est qu´on ne pourra pas faire de grottes, ou de choses bien précises.
J´ai une autre question qui concerne le Heightmap, et le chargement " quand on s´approche des frontières".
Donc :
- Comment faire pour implanter des arbres, ou d´autres sortes de décors ?
- Comment fonctionne le principe du chargement " quand on s´approche de la frontière" ? Est-ce un système qui charge la map pixel par pixel, et intègre ensuite les décors ( Bien sur cette maps est elle aussi en mémoire ! ) , ou est-ce un autre système ? :O
Merci de vos réponses, qui me donnent un ordre d´idée du boulot à venir :P
Deja la notion de pixel est une notion d´affichage et pas de jeu.
Pour le " quand on s´approche de la frontiere":
En fait si tu decoupe ton monde en plein de carte de disons 1000X1000 et tu sais qu´a l´affichage tu n´affiche pas plus de 100X100 d´un coup.
alors quand le personnage depasse le 800X... tu charges la carte qui est plus a droite.
Pour le charger, le plus simple me semble d´utiliser un thread faiblement prioritaire.
Ainsi tu n´as pas de ralentissement dans le jeu tu ne consomme pas beaucoup de memoire.
Bien sur tout ce que je te dis la ne vaut que pour le client ( l´affichage)
puisque on est dans le cadre d´un mmorpg, le serveur a toute les cartes en memoire puisqu´il y a probablement des joueurs partout...
" Le seul problème qui a été énoncé avec le Heightmap, c´est qu´on ne pourra pas faire de grottes, ou de choses bien précises. "
Utilise le LOD+culling, de loin ta grotte ressembleras a un trou noir vaguement formé par un amoncellement de roche, de près tu auras du détail, idem pour la montagne, les batiments... JYY t´as donné pas mal de techniques très interessantes a exploiter
" - Comment faire pour implanter des arbres, ou d´autres sortes de décors ? "
De belles textures, un peu de billboarding et c´est reglé, de loin ça se voit pas, de près faudra que tu trouves autre chose si tu tiens a un haut niveau de réalisme
" Comment fonctionne le principe du chargement " quand on s´approche de la frontière" ? Est-ce un système qui charge la map pixel par pixel, et intègre ensuite les décors ( Bien sur cette maps est elle aussi en mémoire ! ) , ou est-ce un autre système ? "
C´est plutot " tant que tel endroit est plus loin que tel point, alors ne pas dessiner, sinon dessiner" un truc dans le style
Ok merci de vos réponses, je vais me contenter de ça pour le moment, j´file travailler :O
C´est rigolo de remarquer que les autres forumeurs pensent que RPG Maker fait vivre ce forum et que sans ses utilisateurs ça serait mort, mais force est de constater que dès qu´il y a une question technique, il y a un tas de gens capable qui y répondent et la personne repart avec sa réponse, ainsi 1 topic technique vaut combien de topic " édé moua lé karsset star wars feat. elronde" ? ![]()
le pb de la grotte evoque vient du fait que sur une height map tu n´as qu´une altitude par position, impossible avec seulement cette info de faire un tunnel par ex.
Plusieurs methodes peuvent cependant s´appliquer : plusieurs heightmaps simultanees, ou encore des " trous" dans le landscape, ou viennent se positionner des objets 3D importes sous forme de mesh.
Au passage, une heightmap standard n´est pas si simple que cela, sur les textures notamment. Si ta map a peu de variations d´elevation, tu peux te contenter d´un mapping planaire ( en X/Z) : les deformations verticales se verront peu, meme avec ce mapping naif.
Si par contre tu veux des parois verticales, genre falaises, ou fort changement d´elevation, le pre-processing des donnees est BCP plus compliques ( generalement, on calcule des splines le long des axes X et Z, pour ensuite les re-echantilloner, et ainsi generer un maillage regulier, meme sur des parois verticales). C´est bcp plus complique et demande de bonnes bases en maths.
pour les optims d´affichage, on peut faire des choses treeees compliquees ( nurbs en temps reel), mais pour un projet comme cela c´est s´embeter pour rien etant donne que des solutions bcp plus simples donnent d´excellents resultats ( geomipmapping, roam, etc.). Va jeter un oeil sur gamasutra, gamedev et flipcode, ca regorge d´articles sur tout cela.
Personnelement, je ne viens ici que pour repondre a des questions technique.
Parceque franchement RPG maker et cie, j´y connais rien et j´ai pas tres envie de connaitre!
C´est vraiment l´aspect algorithmique qui m´interesse dans les jeux, parcequ´il y a une sorte de contrainte de temps-réel.
LGV > là qu´est ce que je disais ^^
godrik > ben pareil, perso ce qui m´interesse dans les jeux se sont les techniques graphiques, les effets spéciaux, surtout celle de maintenant parcequ´avant c´etait juste pour les gurus..
j´ai eu le temps de me poser toutes ces questions et j´aime bien voir les reponses proposées par chacun ( je suis sur projet de mmorpg qui n´en n´est qu´à ses balbutiements)
a mon avis, ce qu´il faut que tu fasses pour " compliquer" tes maps c´est d´avoir des objets 3D tous faits ( cf. LGV) que tu colles dessus.
" puisque on est dans le cadre d´un mmorpg, le serveur a toute les cartes en memoire puisqu´il y a probablement des joueurs partout..."
je tiens a préciser ( parceque ca parait un peu ambigu) que ca ne sera pas la meme map que chez les clients...
chez les clients, c´est une map destinée à l´affichage alors que du coté serveur ce sera pour les collisions ( donc logiquement, beaucoup moins lourde)