[project1dev] procedural generation

  • From: Alan Wolfe <alan.wolfe@xxxxxxxxx>
  • To: project1dev@xxxxxxxxxxxxx
  • Date: Tue, 7 Apr 2009 12:56:44 -0700

ok so... that game LOVE that i posted a link about has some really neat
ideas especially about the problem we will have of not being able to supply
art fast enough to keep up w/ content creation.

Thats what i think anyhow, it just seems like the process of building is
going to take a lot less tiem than the process of prettying up since
prettying is more involved (although adding enemies and scripted events may
make the process more on an even playing field).

Anyhow, i thought we could maybe brainstorm about the possibility of making
our game procedurally generated.

If we do figure out something, we dont have to do it right away, i think
it'd make most sense if we still built things by hand for a while so we
could still keep making progress instead of just being stopped dead in our
tracks (:

Here's a scenario i was picturing, one of the many avenues we could possibly
go down to make this work.

1) A builder goes through and makes a basic skeleton map like kent did with
the cave level

2) As the map is being built, the model used for the floor peice basically
defines what kind of art it will use

So for instance if you placed down a 4x1 tile model that was
"CaveFloor_4x1.ms3d", when you placed it down, it would just be a flat 4x1
tile that had a dirt texture on it.  Not pretty lookin, but it makes sense
when you look at it what it is.

3) When the map loads, it fills in the details

When the game loads the map, it looks at that cave floor model and it knows
a few things about cave...

a) cave floors aren't level... they have bumps in them
b) cave floors that border on nothingness have walls to keep players from
falling into infinity
c) cave floors have small rocks on them

So, it would take that 4x1 cave floor and generate a model on they fly (or
maybe choose randomly from some existing cave floor models) and place it
there.  It will find out where the walls should be and automatically border
it in walls.  Lastly, it will populate the cave floor with small rocks.

And when i say randomly i'm talking pseudo random numbers.  Basically it
will be the same random numbers each time for a given map that define where
these things go, so every time you went into a specific cave it would be the
same cave.

4) Artists can still hand-touch up the resulting generated map.

We'll really need an in game editor for this, but artists will be able to
take the fleshed out, generated map and hand tweak things by moving things
around, scaling them, rotating them, and adding new models in there (ie
models specific to missions and thing like that).

Basically those hand tweaks will correspond to extra script commands to run
after the map has been "fleshed out" by the procedural generator.

Each environment will have it's own set of oddities we'll have to work
out... like a forest gets populated differently than a cave, and stuff like
that... so there are lots more details we'll have to figure out.  But, i
think a system like this coudl work.  It would take a lot of coding but I
think it's doable and i think it's worth it.

We would also need some base art for the procedural generator to work, but
that should be a lot less work than an artist having to pretty up each map
by hand i think.

What do you guys think?  Also, any things you would change about it?  Or
anyone have any better ideas?  Or disagree that this would be useful? (:

Other related posts: