Friday, January 25, 2013

Stop the press! (change to plans)

Last week I heard great news: I was selected to the game specialist training starting in the end of this month!

This 9-month training is arranged by the University of Tampere (Game Research Lab), and it contains lectures, exercises and training projects, as well as a mandatory 4 month internship in some local game company. You won't believe how excited I am! I have been working for this for some time, and now things are moving forward.

I think my original plans concerning this blog need to be revised. I am quite sure that majority of my time will be spent with training program, but I will try to get some time for my hobby projects also. In the best case I might be able to combine them both. Let's see how it goes.


Monday, January 7, 2013

Building blocks of a good game

What is important when designing game? Is it the look, gameplay, or systematic way of working and good documentation? I've been thinking these aspecs, while drafting the design document for my first game.

I started diving into the world of video games in mid 1980's, when visual look of games was quite primitive compared to modern games. The limiting factors were the memory and performance, and video game developers had to push the hardware to the limits while implementing unprecedented games. Game development was also less professional at that time, and a motivated hobbyist was able to create a AAA-class commercial game in the corner of his living room (or at least I have been told so :) ). Despite of limited resources, very entertaining and addictive games were produced at those days. For example, C64 had total of 64kbytes of memory and 8-bit CPU running @1MHz and still it was able to run Elite, M.U.L.E, Ultima series, Boulder Dash, International Karate and many many more classic games.

How in the earth it was possible to create so fascinating worlds with so limited resources? At those times it seemed like magic for me, but later I understood that it was the game developers' expertise, technical knowledge, and understanding what makes the game entertaining. As an engineer I appreciate ingenious technical solutions that are utilizing available resources as effectively as possible.

Bit later, in the end of 1980's started the era of 16-bit computers with more memory, better graphics and sound, and more powerful CPUs. Game developers had the change to create larger and visually striking games, without stretching the hardware to the limit. Great and entertaining games were published, but in some cases the focus was clearly in visual appearance at the expense of gameplay. There were also less visual games with more content, like ASCII-graphics based Moria (or Angband), that was distributed as public domain. Anyways, from my point of view the best games of that time had the perfect mix of gameplay and visual appearance. Good examples of them are Lemmings, Dungeon Master, Populous, F-19 Stealth Fighter, Ultima V, etc. You name it. :)

Modern computers and consoles have hundreds (or thousands) times the computing power of the early computers, but still developers tend to stretch the performance limits with their latest AAA-class titles. Game projects can be very large and complex, and may have a budget of tens of millions euros. Development teams have very wide range of skills, and I would guess managing such a team is a real challenge! The risks are high, so projects are under strict supervision (or at least should be!) in order to minimize financial losses. At the latest this is the point to introduce the conscientious documenting and systematic way of working.

Mobile devices are evolving wildly, and their performance and complexity is getting closer and closer to traditional computers. Advanced development tools and distribution methods make it easier to create casual games for them, and it can be seen in the huge numbers of applications for the most common platforms. However, very few games can make a profit or even break even, and the challenge is how to stand out from competitors. It is interesting to see how the mobile games market is formed over the time. I don't have clear understanding how mobile games are currently developed, but I think the development work is moving closer and closer to the console or computer game development work when the device performance and complexity increases.

After all, I believe a good (commercial) game has all the elements mentioned in the beginning: It is developed in a systematic way and it has great gameplay (most important!) and visual outlook. Hobby projects are different matter, but bigger projects are easier to manage when the work is documented well.

Wednesday, January 2, 2013

Creating a Maze with Blender (or at least try...)

I started drafting a Maze with Blender to get some visible progress. This is related to the concept document I drafted couple of days before (please see previous blog text).

The elements needed for a board are quite simple: the bottom plate, some walls to implement a maze, and of course holes to increase the difficulty level. There are couple of ways to do this job, but some of them are more feasible than others.

My first idea was to create basic building blocks from cube. The purpose was to design set of blocks and build game board from them. I calculated, that I would need total of 10 different blocks to implement a maze. Here's a concept picture of needed blocks:

So there are hole and non-hole versions for every block.

Creating a cube in Blender is an easy task: just select Add->Mesh->Cube, and that's it.

I moved my cube to the origo (0,0,0), resized it a bit on z-axis, and started to think how to create a hole to it. I have used Blender for couple of animation projects, but never had need to make holes to the objects. So this task required some googling, and I found one method to create nice holes to the cube:
  1. Create a cube
  2. Create cylinder object. Resize and place it so that is goes through the two opposite faces of the cube (see left picture below)
  3. Select the Cube, and then click "Object Modifiers" (wrench icon in Properties windows), then "Add modifier", and select "Boolean"
  4. Select "Difference" from the Operation pull-down menu, and add Cylinder to the "Object" field
  5. Click "Apply", delete Cylinder, and voila! You have created a hole through your cube. 

Cube and cylinder
Cylinder removed after applying'
Boolean modifier.

The resulting cube seemed good enough for my purposes, so I removed the top side face and the tube going through the cube. Next step was to duplicate cube and remove faces step-by-step so that I was able to get all the blocks with holes, as described in the concept picture. I had also create another cube for the blocks without holes, and duplicated all required versions from that (removed faces as needed).

After I had all blocks in place, I started to build a game board from them. The first version looked like this:

Looked good at this point, but unfortunately it had some serious problems when imported to Unity3D: Plenty of faces were missing, and after some "googling" I understood that this behavior was related how "normals" were calculated in different tools.

I tried to re-calculate  normals in Blender (ctrl+n), inverted them, and did couple of other tricks, but I did not succeed to create a version that worked without problems in Unity.

The maze is built from the "root" blocks by duplicating and rotating them, and the normals of each sidewall are what they happen to be. My guess is that Unity is rendering only the "positive" faces (or outsides), and all "negative" faces (or insides) are left transparent. Blender is rendering meshes different way, and these problems are not visible there. Of course I could try to manually fix normal directions for each wall in Blender, but I found that too difficult task for me.

Anyways, I found this approach to be unusable for my purposes, and I decided to create the board a bit different way. So I did not invest more time for resolving this any longer. I will continue with different approach. This time I will investigate how it works with Unity3D before I spend hours for building the whole board.

I think I have learned something from this excercise, so it was not a waste of time. :)

Tuesday, January 1, 2013

Game Concept Document (trial #1)

Background: I am creating couple of concepts, and then select at least one of them for further development. To get things going, I drafted first concept document to briefly describe a simple maze game.

The game idea for this concept should be familiar at least for Finnish people. Similar kind of a real-life "marble and maze" game is built by company called Brio. The concept document is copied below. I don't know if the initial version covers all required matters, but you are free to comment. Enjoy!



I've Lost My Marbles!”
The ultimate game with marbles, holes, action and despair.

Many of us have spent hours twisting noddles and trying to get marble to pass the labyrinth without dropping to one of the countless holes of board. “I've Lost My Marbles!” brings traditional board game to the digital world.

The basic idea of the game is to guide the marble on the game board. This is done by using mouse or similar control system that emulates the noddles of real-life game board. Moving mouse forward-backward and left-right will incline the board to the corresponding direction, and gravitation makes the marble to move.

The target is to get the marble from starting point to the “goal hole” and dodge all other holes.

Why this game?

There are several labyrinth games already available, but not too many where game board is moved. Unique game boards and realistic physics will make this to differ from others.

“I've Lost My Marbles!” will also be a practice project for improving the team's skills in game development and related tools. So this game has also educational value.

The target audience

The target audience of this game is intended to be anyone who has nostalgic memories playing similar kind of a game in real world. The friends of labyrinth and maze games will also be happy to play “I've Lost My Marbles!


Game physics and 3D graphics engine are required to implement this game. Ready-made engine is preferred to speed up the actual game development. Engine must also be free-of-charge, because of the low (nonexistent) budget.

The target platform in the first phase will be web-browser running on the top of Windows, and later possibly on Linux and iOS.

Simplicity is the guiding principle in the visual outlook: Game board is build on simple blocks, and only few colors are used for maximize the clarity. Marble may have some pattern to better visualize the rotation when moving on the game board.

Production phase is started with prototyping round, and the outcome from that is a playable prototype with one game board, including steering with mouse and a marble rolling on the board. Target is to achieve a playable game physics and smooth gameplay. Prototyping phase will take approx. 2 weeks.

When prototype is found to be good enough (criterias are defined in detailed design document), the actual game production phase begins. At this point, game physics and gameplay are finetuned, and more levels are added. Also, game start/end screens, time counter, high-score list, and other details are implemented. Actual game development is targeted to take approx. 4 weeks.

Key ideas

  • Easy-to-learn labyrinth game with realistic physics and 3D graphics
  • Simple game board
  • Several different game boards, with different degrees of difficulty
  • “Casual gaming”: Play whenever you have some time. One round will take less than minute.


Before I start to document my progress as a wannabe game developer, I want to share few words about myself and my background.

I am "Jussi", a technology multi-talent from Southern Finland. I have graduated with a Master of Science (Eng) at the beginning of this millemium, majoring Digital and Computer Systems. My career as computer HW engineer started in parallel with my university studies, in mid-90's, and I have specialized in ASIC design. My past employers have been large, internationally operating companies on telecommunications and semiconductors business.

Most of my work has been problem solving and writing different scripts for design automation and small utilities needed in design flow. There has also been some other responsibilities, like documentation, Linux system administration, and developing and organizing trainings.

I've been studying game development theory for a while. Currently, I see this as a hobby and I am not doing this full time. My budget is also very limited (close to zero), so I am using free software and resources as much as possible. Local library has quite many books on game creation and production, so I have taken advantage of it. I have also trained to use related tools, like Blender and Unity3D. There is a lot of self-studying material in the internet (videos, blogs, articles), and most of them are free of charge.

I am still lacking the hands-on experience on game development, so next logical step would be to start planning and creating own game(s).



Today, I finally started writing a blog about my game development activities. I have always been interested in playing games, and I have planned to create one (or more) myself.

I am totally a beginner in this area, so it is very likely there will be a lot things I am doing the hard way (and wrong way). But I will document all I can, and I hope that this blog helps someone else to make things easier. :)

Let's see how this starts progressing.