Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Générer un monde comme Minecraft/Terraria ?
Zezombye Hors ligne Rédacteur Points: 1756 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 storm Hors ligne Labélisateur Points: 11641 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
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 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.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Louloux Hors ligne Ancien administrateur Points: 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 storm Hors ligne Labélisateur Points: 11641 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
Louloux Hors ligne Ancien administrateur Points: 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.
Ninestars Hors ligne Membre Points: 2462 Défis: 24 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

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 218 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