I usually start these posts with a brief apology. I know it’s redundant now, but I’m such a gentleman I just can’t help myself.
Here we go…
I used to post more often on here, but unless I’ve got some exciting news it’ll likely remain about once a month for the time-being.
Perhaps once I move into other areas of development I’ll have more stuff to talk about, but recently it’s mostly been more of the same old graft which I’ve already covered on previous blogs.
As you can probably make out it hasn’t been particularly enthralling of late, but I have kept up a nice pace and workflow which I’m happy with.
There’s more areas to think about and concentrate on now that the world and all the rooms are established, but I’m still stuck performing a series of fairly tasks. Perhaps the next few weeks will be a bit more interesting and diverse.
There’s so much still to think about it makes me dizzy. Menus, character animation, interaction screens, minigames... I could easily go on but if I give it too much thought it’ll quite literally sour my mood.
Yes. It’s not all fun and games this business… which is, er, making games! Fun exciting games, weeee!!
The expression ‘blood, sweat and tears’ springs to mind. Although in my case it’s more like ‘dread, insecurity and self-loathing’. Not quite as pithy though is it?
Sorry, but with the blog title it's almost mandatory I include this.
My focus recently has mostly been on the physics system.
I’m not sure if I’ve covered this side of things much on the blog, so let’s hope it makes for interesting reading!
The original Wasted Youth had a very simple collision system. If you hit that wall, you stopped. That’s as complicated as it ever got. Actually, due to the grid-like movement system, it was even simpler than that.
With Unity’s inbuilt and easy-to-use physics library, I decided to try something a bit fancier and upmarket for a change. Proper physics, you know, the kind that Isaac Newton enjoys.
However - as you’re probably aware - I have a tendency to go overboard with this type of thing.
When confronted with something new and shiny I get dazzled. I see so much potential it often gets the better of me...
When physics goes wrong.
Many months ago, after designing the first 200-300 or so objects, I decided instead of implementing the collisions after placement (whereby they would have no relation to the object besides stopping the player walking through them) rather I’d create collisions for each object, no matter how large or small, which would allow for easier object placement and dynamic objects (like a football or a trolley on wheels).
I’m sure anyone familiar with the original will think something along the lines of ‘well that’s unnecessary’
And to be honest, yeah, it is.
Often an idea like get’s stuck in my head and I become a little obsessed by it. I envision a moment and I think ‘ooh, that would be cool’ and set about implementing it without properly thinking it through.
In this instance I was imagining a moment whereby one of the characters knocked over their desk during a lesson in a fit of rage, sending pencils pens and other bits of stationery flying.
But it’s hard to imagine many other instances where real dynamic physics would be appropriate
Traffic cones. Step ladder. Coffin. Just stuff, basically.
Fast forward to the present, and now I have a database of almost 1,000 objects. As I went along the way I rigged each one with physical properties.
Just to be clear, it’s very simple to do and doesn’t take long to implement, most collisions are made up of primitive shapes like boxes, spheres and cylinders. If it’s really small then a box that encompasses the object works just fine.
If the object in question is static, then I can make a secondary mesh for better accuracy, like a staircase or the face of a building for instance. Otherwise, the rules of the physics system dictate that each collision must be convex and therefore relatively simple.
But why have I done this for every object?
I haven’t got an answer for this, besides coyly stretching my arms and making the universal ‘I don’t know’ motion.
I’ve even gone as far as putting springed hinges on door handles or allowing a desktop globe to spin on its axis for example.
Besides a momentary acknowledgement from the player - something along the lines of ‘oh, that thing moved slightly’ - I have to admit it serves little other purpose, but nevertheless I’ve got it now, so I might as well use it.
With all this stuff, I would better suited to make a game like Katamari Damacy or Surgeon Simulator, for which this kind of detail is necessary.
For this project though it’s hard to justify using it to any useful degree, but that probably won’t stop me trying.
Not even a hinged gate can stop Blue Boy.
I’ve also been trying to get the movement and interactive physics right for the character. This is another one of those things which I completely underestimated in its complexity beforehand.
A year ago, when I decided to make the entire game in 3D, there was a crucial factor which I ignored. The big difference between 2D and 3D is that 3D is wholly unforgiving. Especially when it comes to animation and movement. You can break the rules in 2D, but 3D conforms.
I keep finding this time and time again.
Anyway, onto the problem.
Here’s the thing, most of the environment is flat. About 90% of it is flat enough that it doesn’t need to be considered. But some of it isn’t flat, there are inclines or unevenness in areas, and there are stairs.
Stairs are tricky bastards.
In WYP1, when the player hit a staircase, the walking animation and the player’s speed slowed down to give some impression of moving upwards. In this however, there’s no way to trick that effect. The character must look like they’re accurately ascending some stairs, with each foot hitting a step or nearabouts.
On the face of it, this doesn’t seem like too much of a problem, what if I just make a second walking animation?
If only it were that simple. The fact is it has to work within the rules of a physics engine and varying degrees of terrain.
This requires some degree of advanced collision detection, which then feeds into the walking animation - influencing the height of the knees, the positioning and angle of the foot, etc.
For now, I’ve got a rudimentary system which works for testing purposes, but it’s one more task has been added to the to-do list which is becoming increasingly unnerving.
Or maybe I could make the characters appear and function much simpler than I’m currently aiming at.
I don’t know.
Ah well. We’ll get there in the end… hopefully!
I will return when I've got more stuff to talk about.