Posts Tagged ‘concept’

How I make levels

Tuesday, July 13th, 2010

One of the most frequent questions I get is how I go about making levels for Sarah’s Run, so I shall share!

first of all, there has to be an idea for what I want in the level, either in my head or on paper, making it up as I go is possible but it takes a little while and its very likely I lose my train of thought before I get anywhere. so, have a plan, you can come up with one of these anywhere, I was at a train station yesterday, killing time, when I drew this:

sure it’s messy, but it’s enough that I can recognise what I was going for with it and could get on with the level making once I got back to my PC.

First up, TILES!

I made these and set the texture co-ordinates in Blender a while back, if they are unwrapped at this point it saves time later on when I tweak the texture co-ordinates.

Tiles are pretty sweet for a number of reasons, firstly they are super fast to make levels with, and because I can put them together in Unity itself, I can test the level as I make it really quickly, rather than building the level in another 3D app, and exporting then importing and tweaking settings every time I want to see if a ledge is the right height or a gap is wide enough.

The downside to tiles in unity is that they *can* be very inefficient, especially with how many are in many of the levels in Sarah’s Run, hence why I place them all inside a ‘LevelMesh’ game object that combines all the seperate 3D models for each tile into a single mesh, meaning that whilst I’m testing drawing the level takes only one draw call, and not about 3000 (I had 7000 draw calls per frame sometimes before I decided I should fix that lol)

so what follows is lots of adding, testing, tweaking until the level is playable;

So, I can play the level, but it’s not easy to ‘read’. that is, you cant look at the level and quickly see what form the level has, it’s pretty messy. So we need to juice up the graphics a bit with some lighting (the best way to give a 2D image form IMO) and also make the textures more… good πŸ™‚

so, we export the level and take it into Blender (the export script I use is found here for you unity junkies)

first up we tidy the mesh and clear out any faces that wont be seen, and also use a more recent texture atlas:

Once that is done, I go around and move the UVs (texture co-ordinates) for different faces so details like the floor borders look right:

So that’s what folks call the ‘diffuse’ (unlit) texture sorted out, but in Sarahs run my environments have both a diffuse texture and a ‘lightmap’ texture that describes the light in the level. so first step for making a lightmap is I put in some meshes I want to act as ‘lights’ set them to emit and get blender to calculate ‘radiosity’. it sounds complicated but mostly I click ‘go’ and play some guitar hero until it’s finished.

once the ‘light’ has been calculated, I ‘bake’ it onto a texture (that means I get one mesh to copy whatever the lighting is on each face to the relevant part of a texture map). you can see the baked texture on the right of this pic:

here’s what the level looks like when we take it back into unity, with both texture working together (after a little tweaking the brightness):

and just adding the deadly floor and the level is complete!

You can also play the level here if you like.

this is where I say the level is ‘done’ but that isn’t really the case, if this level was going into the game I would have to make quite a few tweaks, such as offsetting the two ledges, especially if it appears earlier in the game, and I’d need to adjust the size of the gap, how high the electric ceiling is etc. I’d also like to test if it works better as a 2.5D level (like level 5 in the preview) I suspect it would.

anyway, hope you enjoyed that. πŸ˜€

Development Log catchup

Friday, May 7th, 2010

I thought seeing as this development blog is starting after already a lot of development I’d play catchup and go over the story of Sarah’s Run development so far:

ok then, where to start… how about the BEGINNING!? πŸ˜€

its February 28th 2010, and I’m working on my game Phantasmal, things are going pretty well, but I like to take breaks every now and then to keep my work feeling fresh, so I do a doodle with the thought: “what if Mario and Peaches actually had sex”

Super Maria, in all her potentially copyright infringing glory was how I met Sarah

Ok, so its a pretty cool doodle, time to get back to my main project… but wouldnt it be cool if I made a 3D model of this character, I do need practice making models from my concepts after all, thats some skills that will help me make phantasmal too!

I made a model, unwrapped her, might as well paint her next...

pretty good, one of my better models and textures I think...

Pretty good, one of my better models and textures I think...

ok, not bad for a days work, tommorow surely I’ll be all fired up to work on Phantasmal some more!

but tommorow came, and I found myself thinking… well what good is the model if it isn’t rigged and animated, and maybe if I do that, I can drop it into the phantasmal engine and maybe tweak it a little to play like super mario, just for fun. but these ideas were just passing thoughts, surely…

oops...

...now she's animated...

...well I guess I made a super maria version of phantasmal after all >__>

So it turns out I kind of had already taken 2 days off phantasmal and  I already had the begginings of what felt like a pretty solid platformer and a cool looking character. (this version is playable here by the way)

the next day I just feel its probably best to work on this game some more, it shouldnt take me too long to finish after all… but by the end of the day (after adding moving platforms and conveyor belts) I make the following tweet:

“things that are good but actually make me want to kill myself #1:
something I’ve spent 3 days on is way more fun than my main project”

and thats the point where phantasmal takes a backseat, at heart I want to make the best games I can, and besides, the last time I stopped working on on Phantasmal to do another project, it went down pretty well.

so with my resolve to take on super maria, and the desire to make a new Mario/Sonic/Crash/Spyro type game that doesen’t suck.

First off I spend some time playing around with effects I could use for a power up/invincible mode.

doesn't have a purpose yet, but an effect this cool? I'll find a place for it!

next thing I do is see if I cant get ‘Maria’ to stand at an angle on slopes like mario and sonic do, I always wanted to see if I could pull that off, and it turns out I can, but ‘standing’ on slopes is no fun on its own, you gotta be able to run along them too. though I hadn’t quite thought “check that the slope isnt too steep to stand on”. I had a build where I could run up near vertical surfaces, and that got me thinking, and then tinkering:

Con: Quitting work on phantasmal to make a game about fucking with gravity is somewhere I've been before

Pro: HOLYFUCKAWESOME RUNNING ALONG WALLS IS FUUUN

Here’s a game design tip for you; if any of your pro list items contain ‘holyfuckawesome’ your con list doesent matter.

so that was it, running up walls is cool, and it turns out if you limit the ability some it can make for a pretty interesting navigational and puzzle mechanic. I spent the rest of march pretty much planning how levels in the game could work and how I could put them together quickly. I even put together a test preview with five levels which was pretty well recieved by my friends and internet lovers, and worked with my e-brother Logan on an original story, title and name for the character so I wouldnt get hit in a drive by from a Nintendo van.

"Green Hill Zone called, they want their textures back" - I find checker textures are perfect during prototyping/early dev

I think that’s us more or less caught up, I’ll make a ‘what is sarah’s run’ post soon and I’ll go into much more exciting detail about design deciscions, coding approaches and stuff in the next few posts. πŸ˜€