Page 1 of 3

Playable mapgen - randomly-generated maps

Posted: Mon Jul 06, 2009 5:46 am
by qbism
Well, I've been messing with this randomly-generated map mod on-and-off since the 2006 Qexpo. (And this is probably the first post I've started since 2003.) Not a polished product but good enough to share as an interesting concept. It's a mod based on Preach's mapgen. Advancements-

1. Playable with monsters, items, etc. The ogre and shells are examples in the code and maps. Multiplayer might be possible.

2. Map tiles based on a compact module provide unique spaces with a handful of shapes.

The original mapgen by Preach is not required to run, but a good idea to install it in a separate mod directory, try it out, and read the docs. That readme is needed to produce a new map.

Multiple obvious bugs include unlit monsters, sometimes monsters spawn below floor, etc. etc.

Download w/ map source (Quark) and qc source:
http://qbism.com/index.php?action=media;sa=item;in=9 (corrected link 2/1/10)

Search for "qbism" and "mapgen" in the source. qc libraries: Frikbot is there for multiplayer testing, extras for func_water, gyro just place-holder for now.

Preach's mapgen:
http://qexpo.quakedev.com/booth.php?id=32&page=113

shots:
Image

Image

Image

Posted: Mon Jul 06, 2009 6:30 am
by ceriux
looks pretty cool, too bad the textures cant be done right =/

Nice

Posted: Mon Jul 06, 2009 7:27 am
by Chip
It might be working for some 'no-subject' maps, or if you have a lack of inspiration. After all, the resulting map is editable, right?

So you can cut, copy it in another map, and add new textures. I might give it a try.

The first one would look interesting, with the right textures.

Posted: Mon Jul 06, 2009 7:52 am
by Spike
mmm, r_floortexture / r_walltexture. yay for quakeworld hacks that change the textures based on surface angle.

But yeah, the texturing needs some work.

Posted: Mon Jul 06, 2009 9:34 am
by leileilol
Spike wrote:mmm, r_floortexture / r_walltexture. yay for quakeworld hacks that change the textures based on surface angle.
.
STOP COMPLAINING its the only way pro gamers can win!

Posted: Mon Jul 06, 2009 2:48 pm
by MeTcHsteekle
... i like the last screen shot its like, ...bah

Posted: Mon Jul 06, 2009 4:45 pm
by qbism
Texturing works like standard map, so that aspect could be improved readily. Textures and lightmapping on edges will touch other tiles... something to consider.

Look at Preach's screenshots and maps for texture and lighting examples. It is likely that those maps will be playable.

Re: Playable mapgen - randomly-generated maps

Posted: Mon Jul 06, 2009 10:04 pm
by LordHavoc
qbism wrote:Well, I've been messing with this randomly-generated map mod on-and-off since the 2006 Qexpo. (And this is probably the first post I've started since 2003.) Not a polished product but good enough to share as an interesting concept. It's a mod based on Preach's mapgen. Advancements-
That's cool.

I wonder how it looks with realtime lighting in darkplaces, although it would have to generate a .ent file for the map during worldspawn using FRIK_FILE to write it out, which would provide all the static lights, or you could spawn dlights.

I was working on such a map generator based on stitching together prefab room pieces but never finished it, and it was designed to make .map files and compile them, not instance models.

Re: Playable mapgen - randomly-generated maps

Posted: Mon Jul 06, 2009 10:37 pm
by qbism
LordHavoc wrote:could spawn dlights.
That sounds like a good way to visually blend tiles together and light up the monsters. A "func_dlight" with a maplip (maplip determines chance of spawning) would further add variety to spaces.

Posted: Wed Jul 15, 2009 2:20 am
by qbism
dlight spawning works. Instead of creating a func_dlight I tacked it onto func_wall to get brushes with the light.

Change to func_wall_start in attachments.qc:

Code: Select all

void(entity refatt, entity targ) func_wall_start
{
	targ.movetype = MOVETYPE_PUSH;	// so it doesn't get pushed by anything
	targ.solid = SOLID_BSP;
	targ.alpha = refatt.alpha;
	setmodel(targ, refatt.model);
	//qbism add dlight properties
	targ.light_lev = refatt.light_lev; // radius (does not affect brightness), typical value 350
	targ.color = refatt.color; // color (does not affect radius), typical value '1 1 1' (bright white), can be up to '255 255 255' (nuclear blast)
	targ.style = refatt.style; // light style (like normal light entities, flickering torches or switchable, etc)
	targ.pflags = refatt.pflags; // flags (see PFLAGS_ constants)

};
add dlights extension to defs from dpextensions.qc, a chunk that starts like this:

Code: Select all

//TENEBRAE_GFX_DLIGHTS
//idea: Tenebrae
//darkplaces implementation: LordHavoc
//fields:
.float light_lev; // radius (does not affect brightness), typical value 350
.
.
.
Finally, add fields to func_wall entity, example:

Code: Select all

 "light_lev" "280"
 "color" "3 5 4"
 "style" "1"
 "pflags" "128"
 "origin" "864 12 90"
I'm working on a new map with this to see how it pans out.

Posted: Sat Jul 25, 2009 9:12 am
by LordHavoc
Not sure why you chose to embed that in a func_wall entity, it works quite well as a point entity (like a monster).

Posted: Wed Jul 29, 2009 1:55 am
by qbism
Func_wall so light source can include geometry. Those are supposed to be sconces on the back wall in this pic. HFX eX textures BTW.
Image

Posted: Wed Jul 29, 2009 2:04 am
by xaGe
..For a generated map the lighting looks ok to me. The whole thing looks better than previous examples posted.

Posted: Wed Jul 29, 2009 2:28 am
by qbism
Dynamic lights improve the illusion of a seamless world, add some drama, and highlight normal maps. Compiled lighting becomes low-level ambient. Compiled lighting must be uniform (bland) anyway to reduce contrast at seams.

Currently working on a new tileset, probably spent an hour texturing it rather than zero time like previous sets. It will still be mostly conceptual.

Not even the mapper knows if there's an ogre around the corner...
Image

Posted: Thu Jul 30, 2009 7:29 pm
by goldenboy
Nice try. Make a usable terrain generator that automatically places trees, roads, boulders, caves, and moats, and things like dragon teeth, and ruins, and I'll be impressed.

The problem with a script designing actual architecture is, it can't have any ideas or visions, which is a systematic problem.

It can't think in pictures like (some) humans do.