Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Générer un monde comme Minecraft/Terraria ?
ZezombyeHors ligneRédacteurPoints: 1652 Défis: 13 Message

Générer un monde comme Minecraft/Terraria ?

Posté le 27/08/2017 13:21

J'ai comme (4123ème) projet de créer Minecalc, et je bloque sur la génération de terrain (pour la surface, concernant les cavernes et structures j'ai une idée de quoi faire).

Je sais que minecraft utilise du bruit de perlin mais je n'y comprends absolument rien, et est ce que c'est vraiment nécessaire vu que c'est en 2D ?

Sinon je pourrais utiliser des fonctions composées de sin() et rand() mais sur ma calto ça fait pas vraiment de superbes courbes. :/


Dark stormHors ligneMembre d'honneurPoints: 10936 Défis: 176 Message

Citer : Posté le 27/08/2017 15:11 | #


Je pose ça là, dedans tu trouvera un deux excellents articles, le premier sur les concepts à la base du bruit, le second sur la génération de map à partir de bruit. Par contre faut pas être allergique à la langue de Shakespeare, mais ça peut pas faire de mal.

http://www.redblobgames.com/

Noise functions concept
Map generation from noise

Ajouté le 27/08/2017 à 15:16 :
J'en profite pour faire quelques commentaires :
– Quelque soit la map que tu génères, le joueur peut attendre raisonnablement, entre 10 et 30 secondes je dirais, à condition que t'ai une barre de chargement digne de ce nom
– Ça implique que tu peux ne pas te limiter mathématiquement
– Fais juste bien gaffe à pas bouffer trop de RAM. Ça va vite sur les SH3
– Si tu demandes à Lephe, y'a moyen de récupérer pas mal de RAM, SH4-only.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
LephenixnoirEn ligneAdministrateurPoints: 17167 Défis: 142 Message

Citer : Posté le 27/08/2017 19:20 | #


La RAM, c'est à 0x8840000, il y a 0x40000 (256k) octets de libres (a priori).

Si tu veux que le jeu tourne sur SH3, tu n'as à ta disposition que 48k de tas (malloc()) et 8k de mémoire statique (variables globales, statiques, initialiseurs, constantes, etc). En tirant à mort tu peux peut-être trouver jusqu'à 24k de plus mais je ne garantis plus la stabilité de l'add-in. x)

Après t'as la solution stockage dans la mémoire principale, où tu peux décemment attendre jusqu'à 16k de place, mais je ne garantis pas le temps d'accès.

Pour tout ce qui ne change jamais de valeurs, type les sprites, une déclaration en const static peut avantageusement envoyer les données dans la ROM en lecture seule. Plus faible vitesse d'accès, mais pas d'usage de RAM.

LoulouxHors ligneAncien administrateurPoints: 7035 Défis: 61 Message

Citer : Posté le 28/08/2017 22:11 | #


J'ai écrit un article sur le bruit pendant mon stage à Dontnod, ça ne couvre pas le bruit de Perlin mais ça peut aider à comprendre le bruit, avant d'attaquer des trucs précis sur Perlin (j'ai surtout fait l'apologie du bruit bleu et montré quelques applications) :
Looongue image
Clique dessus pour la voir en grand



Ajouté le 28/08/2017 à 22:13 :
Bon, l'extension que j'utilise pour capturer des pages a merdé à cause de la barre fixe en haut donc il manque quelques morceaux, désolé.

Ajouté le 28/08/2017 à 22:18 :
Pour générer le bruit de Perlin, on peut faire ça en empilant des textures de bruit blanc (complètement aléatoire) de différentes dimensions avec flou gaussien, mais c'est un peu goumand.

Un autre option pas mal est de générer le terrain en faisant du diamond-square depuis une matrice aléatoire : https://en.wikipedia.org/wiki/Diamond-square_algorithm

Ajouté le 28/08/2017 à 22:26 :
Là je suis en train de bosser, mais si tu veux skyper un jour pour en discuter je pourrai trouver un moment.
Dark stormHors ligneMembre d'honneurPoints: 10936 Défis: 176 Message

Citer : Posté le 28/08/2017 22:37 | #


Eh, tu veux pas publier ça ailleurs ? Je veux dire, t'as un serveur non ?
Parce que là, c'est tout sauf pratique… ><

D'autant plus que ça a l'air intéressant.

À propos de blue noise
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
LoulouxHors ligneAncien administrateurPoints: 7035 Défis: 61 Message

Citer : Posté le 28/08/2017 23:03 | #


Mon code pour la génération de bruit bleu est un peu plus concis et lisible que celui de l'article mentionné par Darks : https://framabin.org/?bd5594c409b27f1e#2/rbbtFi8V3b1WZq7HpNvbs73OMWc0lLb+JBZQIfgPA=

Bien sûr ça peut assez facilement s'adapter en 1d ou 3d.
NinestarsHors ligneMembrePoints: 2254 Défis: 22 Message

Citer : Posté le 29/08/2017 08:41 | #


Très intéressant ce que tu as écrit Louloux, merci bien

Ajouté le 29/08/2017 à 08:47 :
Pour les cavernes, tu peux simuler un déplacement de "ver de terre". Il avance d'un coté, et il a quelques chances de d'aller en bas, ou en haut (chance en fonction de sa profondeur). Et tu creuses 2 cases en dessous, 2 cases au dessus.
Avec une chance de se séparer en deux. Chaque vers de terre à une variable cachée, qui indique la profondeur à laquelle il va aller, sa durée de vie (quand elle est atteinte il remonte à la surface). Je vois bien le truc comme ça

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 112 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd