Your shoes and the world to come...

Gamedev Bucket List – I – Tear down the wall

What do I want to accomplish while developing games ? This question has so many answers I could not for the life of me try and summarize them in a single blog post. We are only beginning to see what games are capable of as a medium, and each year technology puts new experience within our grasps. That is the beauty of games, and that is why I find them so fascinating. As I said earlier, I find  myself constantly chasing new ideas, and so I have decided to make what you can call a “Gamedev Bucket List”. And it better be something you can call that, because that is what I called it…

Anyway, this will be a repository of some broad ideas, not even full game ideas, that I would want to work on at some point. These are not anything like a plan of what I am going to do, but just a reflexion on what I would want to if I could. These posts will also be a good occasion to ponder on some design points from some of my favourite games along the way.

So, without further ado, here comes the first item on my bucket list :

I – No invisible walls

That’s right. I would love to work on a world that doesn’t contain artificial, explicit borders. In most games, your avatar is limited in its movement by a variety of arbitrary obstacles. All games have to do that, otherwise you would end up with something unmanageable, but some handle it more gracefully than others.

[01] The lazy hero

This first kind of way to funnel the player down an intended path is easily the worst. How many adventurers have you controlled that stubbornly refuse to lift their weight to leap over a tiny chasm or step over a tiny bush that is “blocking the way”. I find survival horror titles, RPGs and some FPSes to be the wors offenders there.

To take a recent example, right at the beginning of Silent Hill Downpour, you will most likely try to go uphill, only to have your path cut off after a handful of steps by the fall of a tree. This could be a believable way to hinder your progress if it was not a waist-high obstacle… But apparently, otherwise fit protagonist Murphy Pendleton cannot be bothered to hop over the thing and continue on his way.

Murphy Pendleton, forced to go through Silent Hill because he couldn’t be bothered to hop over a trunk…

This is a glaring example, but that kind of things plague countless games, and usually it is very noticeable when involving vegetation. Or when a simple wooden door supposedly resists to the ten grenades you just threw at them. I personally consider this practice as the worst way of handling the problem. You could as well have a big sign reading “Attention, you are in a videogame, please move along” for the way they break the immersion of the player.

[02] Thou shall not pass!

No better than the first kind of barriers for immersion, you have the real invisible walls. Walking too close to the edge of the map ? A stern command from above will tell you that “There is no reason to go further in that direction”. “But”, will  you say, “there is a reason! I want to explore!” Unfortunately, that is not what the powers that be intended for you, so turn back, that is your only option. This plagues many open-world games. A recent example of that can be found in Skyrim, where a tantalising door stand, wide open, between you and another province full of adventure. But, you know, “You cannot go that way.”. Sigh.

Yes, that door is open. No, you can’t go to the other side. Talk about teasing…

[03] You cannot beat nature

Next, there is a quantum leap in quality for this next method. Because it mostly stays within the confine of the game universe, and thus keep things feeling coherent. I want to speak of the use of natural elements to keep you in the sanctioned play area. The most usual implementation of this is making wind pick up more and more as you reach the edge of the map, until the character is blown several steps back by a particularly strong gust of wind. Thatgamecompany’s Journey does that in all of its open maps, where it quite frankly is the only viable solution they had given the scenery.

Journey… A game that will blow you away!

Another game doing that is Shadow of the Colossus. The game world is huge, and for the most parts completely self-contained and devoid of very noticeable invisible walls. But there is a single spot in the game which has them use the wind blowback technique. This is to my knowledge one of the most tasteful application of that mechanism, because it looks really plausible seeing the configuration of that particular spot. Not only that, you also have to go really out of your way to reach said place…

But I came in through this pass… Why can’t I get out?

[04] Getting there

The next, again much better way to keep players where they belong is simply using your level design  to make it impossible to leave. Either by making the environment impossible to navigate with your character’s capacity, like, for example in Mirror’s Edge, where a simple high building or a wide enough street can prevent you to stray out of your way.

Free running allowed on designated rooftops only!

Or by using some other tricks. Like Portal games, where you are placed in a tightly constrained environment. Even with a quasi-magical portal gun, you are strictly limited in the places you can attain.

How is it being a laboratory rat?

Again, these techniques have the advantage of enforcing the developer’s decisions without leaving the game’s fiction. But most of the time you end up with levels that do not feel truly “open”. Because you can more or less feel the constraints placed on you. Even in Shadow of the Colossus, which for the most part uses this strategy with high cliffs surrounding the vast world, you cannot help but feel somewhat “trapped” when you go next to the world’s borders. Still, it is for many games the best you can achieve. But as a dream goal, it still does not quite cut it. What I am looking for is…

[05] The Holy Grail

And I think I found it in a game that I am currently playing : Xenoblade. The big stroke of genius of that game lies in its world. For all the good that could be said on the gameplay and story (so far), its world takes the cake.

Monolith Soft as managed to craft a huge, open, and almost seamless world like nothing I have been able to experience in a game. The main trick is that the game world is actually the frozen bodies of two colossal titans. Life had colonised the giants and now legs, arms, heads and backs have become lush plains, intriguing swamps and dense jungles. The variety on display is really great, and doesn’t feel out of place thanks to the strange geometry of the world itself. Skip around the video below to get a taste of it :

I think I am in love with this world.

Now then, if there are plains stretching over several kilometers, surely there are a lot of inaccessible areas ? Well, no, not really. The catch is that because of the peculiar setting, it makes sense that the ground continues only so far. The regions have natural edges that coherently restrict your movements. Of note is the fact that you can easily fall off the world. No invisible handrail will keep you safe… For the rest, everything is accessible if you can jump/run/plunge to it. And yes, your character can swim. So that distant coast ? You can probably reach it. Experiencing this, on a Wii no less, feels like such an eye-opener. The freedom of movement is really a delight, and the fact that each zone is one big area without any loading time makes the scale of the places really impressive. It is a concrete proof that you can have a vast, densely populated world, and make it enjoyable without having to resort to putting some areas arbitrarily off-limits.

Conclusion

So that bucket list you ask? Well, I want to craft a world without those pesky invisible and arbitrary barriers. It could be a city block or it could be a whole continent, but I want to be able to devise an area that will seem naturally coherent and still be fully explorable. I want to give players that thrill that accompanies those moments when you realise that yes, you can actually go all the way there. And never tell them that they should “go back from where they came”.

Keeping game ideas in check

Things are pretty good right now : I just moved in a new flat with my awesome girlfriend and a friend, I am making progress in my Ph.D research (slowly but surely), I am happy to see my sister working towards a great career path and, last but not least, I am finally starting to approach my dream : being a fully-fledged game developer. I know, I know, I could have been doing that for years already, and you would be right – I even did, to an extent – but now I have a momentum I could only dream about before. I thinks it boils down to having people with whom I am comfortable working, especially code-wise.

As you may or may not know, I am working with a bunch of friends as a team called GSM Productions. We even have a website ! We are right now finishing our first game, which I will always remember fondly, as it was the starting point of it all. Since then, the project ideas have been piling up, from puzzle-platformers about robots to free-running inspired 3D games – the evolution of my Ludum Dare 20 entry. It is exhilarating, yet at the same time it is a bit daunting.

OUT OF HERE – A crude prototype growing behind closed doors…

Clearly, it is very empowering to feel that all those game ideas are there, waiting for some code to make them happen. And I am confident that we could pull most of them out, because up until now I do not feel like we have considered ideas so grand in scope that they would become unmanageable. There is only one factor in the equation holding us back, and that would be time.

Our first game will have taken us roughly one year from initial idea to completion, if all goes according to plan. As much as we already have all the gameplay down, there are still many areas that needs more content or more balancing. Then only can we include the story-related functionality. So, yeah, it will have been a year. There are multiple reasons to that, what with Alun Hevel being our first game, the three of us having day jobs, etc. But nevertheless, even if we can shorten our game creation time to, let us say, 6 months, or even 4, the new ideas will still come piling up faster than we can ever hope to make them.

And that is a bit stressful. Usually, when a new idea comes, you want to get working on it right away, when it is still fresh in your mind, yet you cannot. So how would you do it ? How would you manage this stream of ideas ? Would you reserve one day per week to work on them to try and weed the bad ones out, or write them in a list for later, forfeiting the advantage of having the idea firmly in mind ?

Ludum Dare – Once again :)

As was the case 4 months ago, I took part last weekend in a game-making competition called Ludum Dare.

As a reminder, the goal is to create a game from scratch in 48 hours, which is quite the challenge. This time, the theme was “It’s dangerous to go alone! Take this!”. I managed to make a 3D game (a first for me) during that time, in what was a frantic but fulfilling week-end.

That’s the game in question. With unfortunate screen tearing when doing the screenshot 🙁

If you’d like to see what I was able to come up with, you can go on my entry’s page, or use one of the following links :

Windows (zip)
Windows (installer)
Linux (32bits deb)
Linux (64bits deb)
Mac OSX (zipped .app)
Source code (dependency : Panda3D)
ArchLinux (32bits)
ArchLinux (64bits)
There should be something for everyone there 😀 I’d be of course very grateful for any feedback you may have.
If you want, you can also read up the couple of posts I made during the competition (and after) on the Ludum Dare blog. I had a blast, and I urge anyone with an interest in making games to try and participate once. Not only is it loads of fun, it’s also extremely enlightening. Not to mention you’ll go from not having a game to having one over a single weekend !

A gameplay screenshot 🙂

[Lumen] Initial progress status.

Hi there ! Welcome to the first status update about Lumen, a project I have with a friend. I figured that a good way to keep the motivation intact would be to periodically report here about our progress with the game.

Oh yeah, Lumen is a game 🙂

We’re using Panda3D, a free 3D engine, and  Python as a programming language. Yesterday, I spent the evening working on some initial tests, and got to the point depicted in the video below.

It’s not so impressive, but it was done in a couple of hours…

 So, what do we have right now ?

  • A terrain generated from a black and white picture, called a heightmap;
  • Automatic simplification of the terrain based on the distance to the camera (Level of Detail, or LOD for short);
  • A sphere that you can control with the keyboard;
  • A mouse-controlled third person camera;
  • Some simple effects like fog;

It’s really not that much from a code standpoint, but it helped me get acquainted with Panda3D.

We’re not quite ready to discuss the concept behind Lumen right now, but as a first step we decided to concentrate on the control of the character first. That and the basic rendering stuff, of course. I’ve been following the progress made by the Overgrowth team (Just go and watch some of their progress videos. The game is gorgeous, those videos are awesome and really informative.), and they made a video about character animation which serves as a model for how to go from what I have now to something more elaborate.

So next in line : investigating the use of proper physics (and make that ball jump), and probably improve the terrain rendering a bit.

See you next time !

Unkown Lands Episode 1: Stranger in a strange land

[Everyone and their grandmother do this, so I thought “why not me ?”. Don’t hold your breath for regular updates though, you know who I am… But I’ll do my best…]

What would you do if you woke up at the bottom of a dune behind which the sun the sun would be slowly rising ? That’s the question I’ve been considering since I opened my eyes on this sandy landscape. I don’t know why or how I got here, or where I was before. I don’t have anything on me, only this question : what to do now ?

At least the weather is nice…

As I turn around, I see only sand. And cacti.

Shit. A desert.

Not that I don’t like deserts, theoretically, but being stranded in an unknown land, my first reflex is to seek some shelter. And I don’t see myself builind a big sandcastle to sleep in. And before you laugh at me, go and try it yourself. You’ll see that it’s not that easy.

Oh but wait, in an unwillingly suspense-preserving move, I’ve started examining my surroundings in the “wrong” direction. I can see a tree in the distance ! At the very least, it’ll provide some shade during the day. At best, I’ll find a way to chop it into bits to get some wood. But then again, how I would be going about harvesting wood without any tool, I don’t really know.

 Why, hello there! You seem like a nice tree!

So here I am, climbing a decidedly blocky hill by jumping my way to the top, making one meter high leaps like I’m some kind of olympic athlete. I still don’t know why I’m here, but it sure didn’t make me a weakling. Arriving at the tree, I’m so happy that I gently punch the wood repeatedly, like I would the shoulder of a friend. Haha, dude, what are you doing by yourse…

*Pop*

I’m hitting air now. I’m pretty sure there was some wood there before. Which was what I was punching. Apparently now it’s laying on the ground, just there, and I’m able to pick up this solid meter cubed of wood like it’s a feather.

So let me get this straight : I can break down trees by punching them, then I can pick up massive amounts of the material easily. Cool ! Weird as it is, at least building a shelter should be doable.

Speaking of which, where am I going to build said shelter ? Let me just… Oh, over there !

That natural arch in the distance looks just perfect !

I quickly make my way over there, and see that I’m not mistaken. That place does look just perfect. And as I look up, I see something that looks darker than the rest of the stones around it. Could it be… ?

Look, there ! Seems like I’ve struck gold ! I mean coal !

So yes,  it’s coal ! That will most certainly prove useful. But how am I suppose to extract the thing. I go punch some trees to help me thing about it, and the solution appears before my eyes : I need a pickaxe. So I try to assemble one out of all this wood I’ve been accumulating, but it feels like I would need a third hand to be able to do it. So I start by building some kind of workbench, which then makes the task of building my rudimentary wooden pickaxe almost trivial. I do have to break some of my wood into sticks, but that doesn’t take long.

So armed with my glorious pickaxe, I climb up to some of the coal deposits I saw earlier, and begin mining them. I think I should be questioning the logic of mining though stone with a wooden tool, but who cares ? After all, that’s not the most illogical thing that happened to me since this morning.

Speaking of the day, it’s well in the afternoon now, and this shelter isn’t going to build itself. Seeing the kind of surroundings I’m in, I see only one solution : a platform under the natural arch. The weather seems warm enough, and … screw this, I don’t have to justify myself : I think it’ll look awesome. So there.

I almost have a home !

I quickly run out of wood, so  I wander around to find some more trees. I was complaining that I woke up in a desert, why am I turning this land into one ? Anyway, I can see that my surroundings are pretty welcoming, with very deliciousfriendly-looking sheep prancing around flower-filled fields…

I was half-expecting a rainbow or a unicorn.
But look how late it is ! Quickly, I use my newly-acquired wood to extend my platform a bit, and to block its entrances. Wouldn’t want those sheep to become too friendly during the night. With that out of the way, I can finally sit down and enjoy the sight of the sun setting over that strange new world. It’s been a very long day.

From here, the landscape looks like it’s calling me to go and explore !

Oh my, what a day… Also, now that the sun isn’t there anymore, I can see that I can’t, in fact. See, that is. It’s really dark in there, I should have thought about that before… But wait, I’ve got some coal right ? What if I put some on a stick and OH GOD.

It lit up spontaneously. That was scary. Well anyway, I got myself some makeshift torches that I can plant in the rocks next to my platform to light it up a bit. Nice. But it’s also a bit chilly, you know… I guess I’d better carve myself a small room to hole up in, away from this chilly wind.

The entrance to my nice little cozy (emphasis on the little there) room.

Because as far as I can tell, I don’t really need to fear robbers coming to steal my torches and pickaxe. I’m alone, right ?

Right ?

From my window

Just a quick post, not to turn this blog into a Tumblr, but just to show you the view from my window, to compliment yesterday’s offering.
For tomorrow, I have planned to take some pictures of the campus on my way to work, and I think I’m going to go to the center of the city to grab something to eat. So there may be more photographs here soon…

And there’s another small lake further on the left !

A new adventure : Stuttgart !

So, that’s it, I’m now in Stuttgart for a 3-months internship in the University of Stuttgart. And, I must say as I’m typing from my very cool apartment, so far so good.

The trip (by train) was really cool, got a bit of time to kill in Cologne between my two trains, and I was awed by the spectacle of the that huge cathedral right outside the station.

Honetly, it’s like, huge.

And stepping outside confirmed what I thought : that building is really impressive. And against the grey sky, it looked quite intimidating…

You can almost hear a deep choir singing foreboding melodies, right ?

The rest of the trip was peaceful, and before I knew it, I was on the campus. There, I met Florian Hindenlang, the guy who I’m going to work with during those next three months. The rest of the day consisted of a quick tour of the lab, with “nice to meet you”s sprinkled here and there. Then some work, and finally a German supper to close the day.

And here I am, typing on my laptop, in a room much nicer than I thought I would end up in, with a über fast internet connection ! Life can be good, sometimes 😀

So, there you go, a little picspam of my apartment. I didn’t take many pictures, but don’t worry, you’ll get a glimpse of the campus and the rest over the course of the next few weeks.

That’s the kitchen, with a fridge and everything. And my half-unpacked stuff.

The bedroom. Did I mention it’s huge ? And the desk is really big too. Reaaaaal nice.

Beds !

And lots of storage space. Won’t need it, but it’s still pretty cool.

I can haz shower !
So there, a little tour of my first day in Germany. It’s all good, and there are already talks of something I really find interesting : a coding marathon, where we would take a full week in a hotel and simply dive and code something from scratch. The sprint coding amateur in me rejoices!
Till next time…

We made a game !

…Okay, okay, technically we only have reached beta status, but still, that’s something !

And before you ask, I’m not starting to speak about myself as “we”, no. With another coding friend (Thomas, a.k.a. Sempaï) and an infographist (Medea), we formed a small team called “GSM Productions” to start making a game for a common friend’s birthday present.

For two months, working on our spare time, and that isn’t a lot, let me tell you, we developed a tower defense game based on our friend’s fantasy book about demons and angels. And, on friday, we finally gave her the present, in the form of a beta version of the game !

What is with that look ?

Oh, you don’t think it was nice to give her a beta version instead of a full, finished product ? Well, you see, the gift is meant to be twofolds. The software itself is only part of the whole thing. Now, as we’ll be progressing towards the final game, we want to let her write the story that’ll go along the game. Also, she’ll help us integrate the game into her universe a little better.

We’re very commited to finish this game up, and while we’re implementing the remaining features and balancing the difficulty, we’ll release some beta versions for you to see. But right now, the computer hosting our Git repository is dead, and we still to sort the licensing before we put up a download link. We use Creative Common music, and probably are going to go with the GPL for the source code (even if not, rest assured that the code will be opensource !), but we want to make sure that we do everything correctly.

So you’re still going to have to wait a little bit to enjoy Alun Hevel 🙂 But hopefully you’ll like it when we do release it !

Tonight, tonight…

I’ve been itching to write about something here, but I STILL CAN’T. Because the thing in question is supposed to be a surprise… But we’re going to unveil it tonight, so expect a post about it here soon after 😀

Into the unknown – Post-mortem

Well, had some time to think over what I did right and wrong for my first participation in LD, or any game making sprint for that matter.
The good :

  • I ended up with something playable. Sure, it lacks a lot of stuff, but considering I had to pretty much give up on more than half of the 48 hours thanks to “life”, it’s still a good thing.
  • I managed to learn pyGame. I had sort of glanced over the docs before, but getting down to programming with it really is the best way to truly learn how to use it.
  • I didn’t spend a single second fixing ‘code’ problems. That’s thanks to Python, but anyway the only bugs I had were logical ones, and not some weird case of the code behaving in strange ways. That was refreshing.
  • I had loads of fun, which I see as an important point, that means I’d do it again.

The bad :

  • I tackled problems in the wrong order. I spent a huge amount of time trying to fix my lighting system, and still didn’t get it right on time for the submission deadline. As I was making a platformer, I should have concentrated on getting a platformer first, and then add the light stuff.
  • In relation to the previous point, I spent way too much time on a single problem. And by not changing and working on something else, I kept trying to push in the wrong direction. Case in point : on monday, I fixed my lighting problems in about 20 minutes, because my mind was clear and I could see the solution I’d missed (hint : I was trying to determine what areas were lit, I ended up computing the shaded parts instead…).
  • I didn’t allocate time for packaging. I figured that Python and pyGame being cross-platform, it would work out, but I should have spent some time to properly package for MacOSX users and Windows users. I’m going to fix that as soon as I have some time, though.

So there you go, all in all I’m proud of myself, and I’ll be sure to continue working on the game. I think it has some potential, even if it’s very crude and barebones at the moment.

Thanks to those who provided feedback, it’s really helpful! And stay tuned for proper exe and app executables in the next few days (busy packing as I’m going to Canada on friday, but I’ll find some time…).