Thursday, 16 June 2011

How I map for SP games

I use the following process for SP mapping but it probably applies somewhat to MP too.

When planning an SP map I think of it as a series of events you want the player to experience.
Make a list of your event ideas. These could be puzzles, fights, NPC story scenes etc...

Getting your events working

I pick the ideas that will suit the type of map I want to build best (keep the other ideas written down somewhere for another map at another time) and build small, working block test maps for each idea. Get all the entities working correctly.

This bit is soo much fun cos you can really experiment see what the entities are capable of.

This took about 10 mins to build in Hammer...

As you play with each test map, it should become clear how much space that idea needs and what sort of area shape gets the best results for that event. Dont even think about how it will look in the final map, just focus in the raw nuts and bolts of gameplay. Keep playing with the small test block maps until theyre working great. Send them to a playtester if you can to see if it makes sense and is fun.

Here's how it looks in game...

The order of events

Once I've got these test maps working, I apply my brain as to which order the player should encounter the events in. Theres a flow to SP maps, too much action or too many puzzles can make maps dull. I mix them up into a decent varied order. The order might also depend on the story I'm trying to tell.

Translating your events to a game environment

Once I've got them in order, I apply my theme, city streets, sewers, etc...
I look at the testmaps and see how I can translate the shape of the blockmap to the theme.
Industrial spaces are easiest because theyre the most configurable (warehouses, crates etc.. ).

Now I either import my test maps into one main map or rebuild the space needed for each one and link them together (with corridors etc..). Now import the entities and move them into place. I apply basic textures and replace whatever blocks I can with prop_statics. I add basic lighting at this point too.
I try to save time on lighting by building a test map filled with prebuilt lights (grouped entities, models, sprites etc...) and dropping them into my map.

I find that new ideas will come to me as I link areas together. The links dont have to be just boring corridors either, add jumps, traps, minor npcs to them to keep the player on their toes.

Also I think about adding some safe areas too where the player can get their breath back.

Playtesting round 1

When I'm finished with this process I should have a playable map. At this point I get people to playtest it.

I get feedback and make changes to gameplay where necessary. I'm not afraid to pull my map apart at this point and rebuild. I've still got my test maps as a basic template for each area. I may or may not act on the playtester feedback, playtesters can have some weird ideas sometimes.

Detail pass 1

Once I've finished tweaking it, I start doing a 1st pass on detailing. I pull out walls, break up the blockiness with supports, curves, arches etc... anything to avoid having big flat walls and floors. I add in fake doors and dead end curves to make my map feel part of a larger world.

Also sort I sort my lighting out properly at this point. If my light templates were any good I shouldnt need to do much. I look at the lightmaps and if I see any groovy shadows that I want to make stronger I adjust the surfaces accordingly.

Detail pass 2

2nd pass at detailing I tend to sounds... its a really important step thats often missed but it gives a map depth and adds soo much to the player experience.

I then repeat these passes at detail improvement down to what ever level of detail I require.

At this point I would normally release it... I can always go back and do more work on it later and release again...

I try and avoid being a perfectionist or becoming obsessed with "finishing" a map. As the folks at Pixar say, "we don't finish our movies, just release them!".

Hope this is helpful...

No comments: