algoritm simplu și rapid pentru generarea de teren 13
- 10.01.17 11:22 •
- Deathberry •
- • # 319226
- • Habrahabr
- • din cutia cu nisip
- 38 •
- 9200
- cum ar fi Forbes, doar mai bine.
În ce situație este algoritm adecvat
Algoritmul și rezultatul
Înainte de a descrie algoritmul se va împărtăși rezultatele sale:
Algoritmul este că programul umple într-o hartă aleatoare coordonatele unei cutii de dimensiuni aleatoare. Harta are forma unui tablou bidimensional care reprezintă harta înălțimile terenului.
Pentru simplificare, un dreptunghi va crea structura:
Variabilele x1 și y1 - coordonata inferior dreptunghiului stâng, x2 și y2 - dreapta sus.
- Harta noastră este reprezentat ca o matrice HM [mapsizex] [mapsizey];
- mapsizey și mapsizex - variabile care determină dimensiunea cardului dvs.;
- genStep - variabilă reprezentând numărul de dreptunghiuri noastre;
- zscale - un factor card de întindere în înălțime. Puteți înlocui un număr.
- recSizex și recSizey - limitează dimensiunea dreptunghiului.
Acum trebuie să completați harta de dreptunghiuri:
Alinarea screenshot a fost valorile obținute:
genStep = 1024
zscale = 512
mapsizex și mapsizey = 128
recSize = 10
Apoi desena o hartă pe ecran în orice fel puteți. În cazul meu - + glfw openGL.
Avantaje și dezavantaje ale algoritmului
- Simplitatea și viteza de scriere a algoritmului
- Rata de execuție a algoritmului
dezavantaje:
- primitivitate
- Când etapa mic de umplere a peisajului carte devine „pătrat“
- Nu există nici o posibilitate de a rupe peisajul de pe biomurile în cursul generării Elevație
Această metodă, așa cum sa menționat mai sus, este deosebit de potrivit pentru începători și pentru cei care timp limitat puternic.
Creștea screensaver pentru DOS, care prezintă exact același algoritm colorat „plasma“. Algoritmul constă în completarea câmpurilor dreptunghiuri aleatoare a fost vizibilă în timpul decelerării a programului, de exemplu, DOSBox înseamnă. În loc de înălțimea numărului de serie algoritm generat din paleta de gradient de culoare.
Dacă prea leneș să deranjez cu zgomot Perlin, bun vechi lucru Valoarea de zgomot este, în esență, se adaugă doar interpolare pentru a netezi. Și am ceva doar zgomot, într-adevăr.
De ce să nu plece, va avionul, aceeași șansă aleatoare, dar este posibil pentru a netezi anumite intervale de valori, dacă este necesar, sau pentru a limita intervalul de sine inițial. Aici, spații mici plate, printre zgomotul absolut, așa cum se poate aplica, de fapt? Mai mult ca o hartă vulcanică din lume, cu o altitudine foarte mare.
Acesta este punctul principal pe care eu nu înțeleg cum să-l folosească în strategia? În cazul în care generarea de elemente „pasive“ ale mediului, apoi bine, dar în cazul în care peisajul jocurilor de noroc reale, cum? Fără cel puțin o trecere netezirea sub potențialul de bază, sau mecanica jocului, cum ar fi perimetrul, ca în acest joc?
În cazul în care există o nevoie de a face pentru a construi - alinia bucata de peisaj, să presupunem că un site de jocuri 4x4 și pe ea fac clădirea noastră.
Am văzut un algoritm similar cu
planete
în sensul la fel, doar face reduceri arbitrare.
În general, toate interesate în viața aici. Tema de bogat și nobil, deși nu este ușor.
Cred că pentru cantități mici etape ale algoritmului, cardul va fi foarte mult un pătrat care, de fapt, descris în minusuri. Și când cantități mari de pași - prima: a pierdut apoi necesitatea de a utiliza algoritmul, în cazul în care argumentul principal - viteza; al doilea - după cum am înțeles, înălțimea se va acumula în colțul din dreapta jos al hărții (valorile maxime ale lui x și y). Ie Celulele Card situate în acest colț vor fi tratate mai frecvent decât altele.
Absolut. În cazul în care, de exemplu, scopul este de a 4000h4000 poligoane de teren - algoritmul va fi strânse, dintre care nici unul generează timp real pentru întreaga zonă deja și nu poate vorbi. Cu toate acestea, algoritmul este foarte potrivit pentru dimensiuni de grilă de la 32x32 la 512x512.
În ceea ce privește a doua problemă - în practică, această problemă cu dimensiunea mai mare de 32x32 nu va apărea. În cazul în care există o nevoie de a părăsi marginea înclinată a hărții, puteți limita zona în care sunt generate pătrate.
I poate fi greșit, dar toată ideea de generație teren nu pentru a obține ceva aleatoriu, ci mai degrabă pentru a obține de relief care satisface cerințele prestabilite. Ala „aici - munți de netrecut, și aici - teren aproape plat“
Acest lucru ar trebui să fie descrise în algoritmul, nu-i așa? Avem o secțiune pe doi munți, înseamnă suficient. Și adâncimea lacului nu mai mult de 25 de unități. Și acest domeniu au fost trei dintre ele - mici, mijlocii și foarte medie. Dar locația este deja la întâmplare, altfel pur și simplu cu bună știință de redare a unui anumit peisaj. Generarea de valori non-aleatoare, în general, se întâmplă?