Posts Tagged ‘playable’

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. πŸ˜€

busy busy busy!

Saturday, May 29th, 2010

Been working pretty hard at making a new ‘main’ preview to go on the site, which is much more visually detailed, fixes bugs and glitches that were in the first preview, and adds a few new mechanics and levels too. I’ve done pretty much everything for it but the new levels, thats a job starting today, heres a build of where it’s at right now: [> LINKY <]

stuff thats been added or changed since the first preview:

  • remade all levels
  • fixed camera problems (lots of them)
  • Added first person camera (‘R’ Key)
  • Put in robot character (‘=’ Key)
  • Drain fields (not in any of the levels of todays build, but are here)
  • Lasers
  • Rotating platforms
  • updated conveyor belt and ‘death floor’ textures
  • impact wave and cam shake when landing hard (doesn’t always work, I’m looking into it)
  • option for camera sensitivity in pause menu
  • made new shaders for various things
  • checkpoints indicate current checkpoint, and flash when recording new stuff
  • waaaay cooler doors
  • got rid of ‘progress bar’ on doors in favour of numbered displays nearby
  • added camera zoom (mouse wheel or gamepad triggers)
  • added mouse lock finally
  • other small fixes
  • edit:  also added a 2.5d type camera for some levels, (not in todays build levels either)

All in all I’ve been pretty busy! I’ll hopefully go into some of the more important things in more detail in other posts, but I have new levels to make, and thats way more fun than sitting here typing, so I’m off! Ciao!

Stacking problems makes for more interesting puzzles

Saturday, May 8th, 2010

I know I said I’d be making a decent introduction to my game saying what it’s about and stuff, but I’ll leave that for another day as I’d rather talk about what I’ve done today, and the thinking behind it.

A new level I made today, just for you... well really I made it for me but I'm in the mood for sharing so you are lucky πŸ™‚

In this post I’ll be going into detail about a new level I made, so if you dont want ‘puzzle spoilers’ (if such a thing exists) then you can play here before reading.

this level was made as a quick test for a feature I coded today of what I call a ‘drain field’; when Sarah passes through it, she can’t use her wall running powers until she reaches a recharge point.

Why I made these new ‘drain field’ things:

this is a similarish use to what I originally had in mind for recharge points, Sarah would only have so many ‘uses’ of her wall-running before having to return to a charge point to refil them. after a little testing it turned out this created very few extra possibilities for gameplay, and mostly meant 400% (figure may be a guess) more backtracking, so this was ditched in favour of a ‘limited time’ power, so I can have walls that take longer than the timer allows to traverse, causing sarah to fall off the wall unless she can make it to a recharge point and max out her wall-running timer.

This worked out pretty well, but resulted in very few possible situations where a recharge point was actually neccesary, and I did like how not being able to use your ability before getting to a recharge point forced a certain type of traditional platforming, essentially changing the way the player has to see the level until they are ready to run along walls again.

Complex problems are just sevral simple ones bundled together:

And thus, the drain field was born. I like it particularly because it lends itself very well to how I design puzzles; any problem is simple on its own, but when sevral simple problems are combined it makes for a more complex one where the player is best off standing back and trying to figure bits out step by step. heres an explanation of how this works in todays level:

simple problem #1:

The button is on the wall, you cant stand on walls

simple solution #1:

use your super power, then you can stand on walls!

and we can make this ‘puzzle’ more complex by adding another problem, specifically the problem being the removal of the solution.

simple problem #2:

cross the field, and you wont be able to use your power

so the solution is to find a way use your power, in this level you must do some platforming to cross the field and find a recharge point, but I could just as easily force platforming and have a gap in the field to navigate to, or some button puzzle to turn off the field etc, all possible solutions to the problem I will explore as I plan my levels.

The Point is…

the point, which I’m probably not being all too clear about, is that with a wider range of simple problems to choose from, the combination of these different problems can create a vast range of potential complex problems, and keep the game both interesting and challenging.

also, it’s my hope by forcing the player to navigate without using wall running powers I’ll be able to make parts of my levels contain more traditional platforming with bouncy, slippery and moving surfaces I had (and quite enjoyed) in my early builds but not so much since adding the wall running power.

what do you think of my approach to puzzle design, is it a little too simple, as all the puzzles can be potentially solved by deciding where you want to end and work backwards step by step, or is that the perfect way to have to solve a puzzle? any suggestiong for alternatives?

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. πŸ˜€

Hello world!

Tuesday, May 4th, 2010

First!

… yeah, a mature start huh? anyway, I don’t have time to go into anything too deep today, but lately I’ve been working on tiling textures, baking lighting, writing shaders, fixing math related bugs, making cool mecha doors, planning puzzles, making the game 100+fps instead of 10fps and also eating plenty of my Mum’s homemade sausage rolls (which are totally awesome by the way). I’ll go into these and lots of other issues on this blog in the future, today though, here’s some screens of latest developments:

And hey, I might even make a whole sentence that links to a playable thingy. (it may pay to have played the first preview as this has no tutorial)

anyhoo, thats all for now, ciao πŸ™‚