4 registered members (ozgur, Ayumi, VHX, monarch),
1,161
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Problem mit automatischer Level generierung
#439356
04/01/14 06:11
04/01/14 06:11
|
Joined: Mar 2014
Posts: 25
Tirti
OP
Newbie
|
OP
Newbie
Joined: Mar 2014
Posts: 25
|
Hallo,
nach dem mir das letzte mal so gut geholfen wurde (danke nochmal an Superku) habe ich jetzt ein für mich unlösbares Problem.
Ich möchte automatisch ein Level generieren lassen, was in meinem Fall dachte ich nicht so schwer ist.
Aktuell benötige ich dazu nur eine leere Fläche und die soll komplett mit kleineren Cubes zugestellt werden. Von den Cubes gibt es 2 verschiedene, wobei der eine Typ (Rohstoffe) als kleine Gruppen auftreten sollen (also 9-12 Cubes beieinander)
Will ehrlich sein, habe nicht mal eine Idee wie ich das umsetzten könnte.
Klar kann ich im WED alles nett platzieren, aber es soll ja wieder spielbar sein. Also auch mal anders generiert werden.
Habe auch mit ent_create rumgespielt, aber da muss ich ja absolute Positionen angeben. Das wäre also mega Statisch. Kann auch nicht einfach nen Random rein machen da die Cubes ja aneinander stehen sollen
Wäre über Hilfe wirklich sehr dankbar
Grüße Tirti
Last edited by Tirti; 04/01/14 06:29.
|
|
|
Re: Problem mit automatischer Level generierung
[Re: Tirti]
#439361
04/01/14 07:16
04/01/14 07:16
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
Beschreib mal bisschen genauer wie das am Ende aussehen soll..
Eine einzige Fläche komplett mit würfeln vollgepackt?
POTATO-MAN saves the day! - Random
|
|
|
Re: Problem mit automatischer Level generierung
[Re: Tirti]
#439364
04/01/14 07:55
04/01/14 07:55
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
Denk daran, ein Würfel für ein DK-Game benötigt keine Unterseite Hier mal ein paar Sachen, die dir helfen könnten: MazeCavePerlin NoiseWenn man ein bisschen mit den Parametern rumspielt, kannst du damit sehr gut deine Resourcen-Verteilung zu generieren Grüße Felix
|
|
|
Re: Problem mit automatischer Level generierung
[Re: Tirti]
#439441
04/02/14 20:28
04/02/14 20:28
|
Joined: Feb 2014
Posts: 35
Simon_Schwitzky
Newbie
|
Newbie
Joined: Feb 2014
Posts: 35
|
Hallo Tirti, ich denke ich verstehe ungefähr was du suchst, ist im Grunde genommen auch keine große Sache. Ich versuch jetzt einfach mal aus der kalten zu beschreiben wie du das löst. Du nimmst eine for Schleife pro Dimesnion zu generierender Blöcke, setzt dann die weite und lässt einfach die Blöcke generieren.
void generate_block(VECTOR* pos)
{
ent_create("meinblock.mdl", pos, NULL);
}
void generate_level()
{
int n_block_size = 10; //wie groß ist dee block in quants
int n_map_size = 10; //wie groß wird die map
int x;
for(x = 0, x < n_map_size; x++)
generate_block(vector(x * n_block_size, 0, 0));
}
Den Rest kannst du dir ja denken, einfach noch eine for schleife für die Zweite Dimension einbauen. Der Code sollte sich eigentlich von selbst erklären. Wenn du noch mehr Fragen hast, komm gerne auf mich zurück da mich sowas grade auch brennend interessiert, aber am Handy Abends das tippen so schwer ist.... Wenn du zufällige Ressourcen generation mit einbringen willst, würde ich dir entweder Perlin Noise oder einen eigenen Algorithmus mit eimem 2dArray... LG, simon! :-)
Last edited by Simon_Schwitzky; 04/02/14 20:30.
Die Menschen, die verrückt genug sind zu sagen, dass sie die Welt verändern werden, sind diejenigen, die es tuen! -Steve Jobs
|
|
|
Re: Problem mit automatischer Level generierung
[Re: Tirti]
#439463
04/03/14 09:29
04/03/14 09:29
|
Joined: Mar 2014
Posts: 25
Tirti
OP
Newbie
|
OP
Newbie
Joined: Mar 2014
Posts: 25
|
Hallo Simon, so ich habe das jetzt mal etwas abgeändert und getestet. Klappt schon recht gut ;-) Das Script baut es von rechts nach links, jeweils von unten nach oben. Hoffe man kann es erkennen. 987654321 |||||||||7 |||||||||6 |||||||||5 |||||||||4 |||||||||3 |||||||||2 |||||||||1 usw. Nur das mit den Ressourcen muss ich jetzt noch rein bringen
int n_block_size = 25;
int n_map_sizey = 10;
int n_map_sizex = 10;
void gen_block(VECTOR* pos)
{
ent_create("test.mdl", pos, make_touch);
}
void generate_level()
{
int x;
int y;
y = -10;
for(x = -09; x<n_map_sizey; x++)
{
gen_block(vector(x * n_block_size, y*n_block_size, 20));
if(x == n_map_sizey-1 && y == n_map_sizex-1)
{
x = -10;
y++;
}
}
}
Grüße Tirti
Last edited by Tirti; 04/03/14 12:25.
|
|
|
|