You are currently browsing the category archive for the 'Games Development' category.

So it’s been quite some time since I last blogged, a lot of stuff happened since, so it’s about time I’d blog again. The experimentation project in the end didn’t turn out to go very well in the end. Problems within the team and lack of motivation caused us to get behind schedule and deliver a game which wasn’t really remotely finished (at least, to my standards) but I guess my expectations we’re too high to begin with. Nevertheless I did finish it, and the only thing left to do is write a document on how best to incorporate Ogre3D within a game (engine). I finished some courses as well luckily; I did a course on Path Planning and Crowd Simulation which was really cool, and I retried for Motion and Manipulation, which is essentially a robotics course mostly related to planning paths for robots that have a certain degree of freedom, forward kinematics for robot arms (and thus also skeletons in games), high level collision detection and the grasping of objects and such. The course has a lot of things in common with other courses like path planning, but also computational geometry and virtual worlds which itself is mostly about physics and network related aspects of virtual environments. Having finished that course which was actually my last one, I am now preparing to begin my Thesis project :)

In light of my thesis project therefore, I will try to blog more and focus a bit more on the subject of my research, which is about path planning for characters in virtual worlds, specifically related to constructing paths in complex 3D environments (environments which have tunnels, bridges and such). I’m not yet sure on where to begin, but I will make it thorough and worth reading for one :) I’ll cover A* of course, one of the most famous of path finding algorithms, but I will also move on to other things, like navigation graphs and navigation meshes, and also some lesser known methods such as the corridor map method which is being developed at Utrecht University (and where I will be working on to do path planning in 3D environments). I might also consider several methods to simulate crowds as well, since games tend to get larger and larger and therefore whole cities are being populated with characters which move through the city (for example in the Assassins Creed series and the Grand Theft Auto series). To be continued… ;)

I realised I haven’t posted in a while so here is a status update :)

I’ve installed a twitter add-in on my blog to keep you up-to-date on small blog related things, surfing the hype. I think its a rediculous concept in-all especially when it is used by large commercial news website and others, because I really don’t care if they just placed a new news item on the news site. I discover new news when i actually visit, so adding twitter is just out of context there. I like the micro-blogging aspect though, but people abuse it to enlighten us followers that they are taking a crap. I try not to abuse it, and make it relevant to this blog so that it keeps interesting. So much for that ;)

The experimention project is going along. I’ve been setting up the main game structure, and I’m working on the whole camera system. The camera system is something I’ll be going into further in a later post, because it is also my main research topic. We are roughly four weeks in production, and we’ve got a flock of birds flying around and interaction between the flock and the thing we call sources, attracting the flock when clicked upon. We’re currently working towards an alpha version which includes the city as well, to get a nice impression of what it is going to be like.

DreamBuildPlay has started and me and a couple of guys are making a game for it. We have some really cool ideas to elaborate on. We are aiming at combining aspects of geometry wars and more classical vertical-scrolling shooters like raptor or tyrian. Simple, slick graphics and chaos is what we’re aiming for, and 3D ofcourse. More later on that, as it is XNA I will probably do some articles on it.

This weekend is LudumDare weekend and I’m attending. Voting for a subject is this week, and until it gets underway on friday night. Then its 48h of game making mayhem. Some guys at ludumdare irc are doing daily sketchblogs to improve on their drawing skills. It sounds interesting enough so I’ve decided to give that a try as well; I don’t know when though, but probably soon enough ;) .

Thats it for now, until later ;)

To elaborate further on my previous post about rapid practical game design, here is how it turned out with my current project. The context is that the tourist roadsign system currently in place in Utrecht is inconsistent and isn’t up to standard. They are planning a new tourist roadsign system in the city, that is going to be placed in this year and they would like a game that connects to that. The game has to encorporate four core values: Historic, Talented, Innovating and Personal. Given those core values, we’ve depicted three goals as restriction for our design: Exploration, Utrecht and Learning.

In the end we ended up with three concepts which we pitched to the city of Utrecht;

  • The first concept was a crazy taxi clone, in which you had to move tourists from one tourist attraction to the next. The style was very absurd and cartoony, with roadblocks flying saucers, huge laser and so on to make it attractive, interesting, and most of all fun to play.
  • The second concept was city golf. In this concept the city was modelled somewhat like a miniature golf course, and you as a player had to play the ball into the hole which in this case was a tourist attraction in the city. When you hit the ball, the ball would go up so high that you could see an overview of the city. The idea then was to let the player run the character to where he played the ball by manuevering through the streets, and get to the hole as fast as possible.
  • The third concept was birds. In this concept you had to guide a flock of birds through the city to a certain tourist location using so called sources. Upon selecting a source, the birds where attracted to the source and fly in that direction. As all buildings in the city were obstacles, the player had to anticipate when to select a certain source in order to savely guide the flock further as crashing into buildings meant that you as a player lost birds in your flock. The goal was to get as many birds as posible to the other side of town. We found a very cool style to go with it and I will definately show some stuff later, as the city picked this concept to go into production :)

As you can imagine, all of the three concepts lay heavily on the restrictions we’ve chosen before prototyping and also incorporate the core values which we were given.

What is very cool is that other students from Utrecht University that are also in the same type of project, are currently experimenting with augmented reality games. They’re creating a physical boardgame that is augmented with patterns that can be recognized by a camera connected to a computer, so that they can place 3D objects in the image of the camera on screen and do cool stuff with that. If you’re interested, theres a game currently in the IGF Finals this year called Mightier, which also used the concept of augmented reality (although in a different way). I think it rocks :)

Justa quick addition:

<p style=”font-style:italic;text-align:justify;”>

So theres the secret to fooling wordpress into using italic if the <EM> tag is overridden by the CSS you can’t edit because you don’t want to pay for it :)

A new Ludum Dare is coming up also in the weekend of 17th – 19th of april just so you know. It will be the 14th time it is being held, and I am obliged to enter the competition now, since I failed to do so the past three LD’s. If i ever manage to find an excuse for not competing this time, it ought to be really really good ;) Go check out www.ludumdare.com for more info.

As promised, I’m going to elaborate on the process of game design we’ve used for our new to create game as part of my experimentation project. I’ve pro-creatively called it Rapid Practical Game Design and what it basically achieves is proper design results in a very short time. It requires very intense collaboration between the programmer,  the game designer and perhaps an artist, to create several prototypes over a certain short period, for instance one prototype each day of the week. The goal in the end is to destillate one or several game designs from the small prototypes by combining (aspects of) them.

The first thing that you should do, is making sure that you know what your restrictions are on the design. These restrictions should be theme related, a single keyword should be enough.  Do’nt use verbs, as they might relate to game mechanics and thus put too much restriction on the design to elaborate upon when creating the prototypes. Note that the restrictions might seem evil, but they actually help you find your way more easily and in the end make sure that you can use a greater number of prototypes to destilate from.

If you have a large team available for initial design, make couples or triples featuring a programmer, a designer and perhaps an artist. Choose an easy platform to develop on, for example Flash, XNA or perhaps Java, or even something like Virtools (which is mainly useful for rapid prototyping, but terribly anoying for anything more comprehensive). If you have a framework ready for any other language, thats cool, but I strongly discourage you to start creating anything from scratch when doing the programming, as  you don’t have that time.

Lets say you manage to get four teams, working for a week, then you’re required to have twenty game designs with prototypes by the end of the week. As designers, you may brainstorm with eachother to create new ideas, and as a team you may share assets to improve on the process of rapid prototyping. Try to push for new ideas rather than proven things that get shot down instantly in the next phase.

In my team for example, we didn’t really get a good idea of the restricions we’re given until late in the week. Some of the first design concepts therefore where rubbish as they didn’t fit in the restrictions we should have set in the first place. These restrictions should have been “City of Utrecht” and “Exploration” (and “Education”, but not really as our main goal). One team for instance made a tower defence clone, which just didn’t fit the profile and was useless to destilate anything from, thats a day thrown away. Another guy made a nice concept of racing on the outside of a tube. However cool that is, it just doesn’t fit the restrictions.

When the week is over, first lay every design concept next to the restrictions initially set. Which of the restrictions does it ‘hit’ and which not. Making an overview of this by counting the total ‘hits’, and the concepts that are your best base for a final design, score high on all restrictions.What you also want to do, is to evaluate the lowest scoring concepts. Try to determine what the positive aspect of that concept is, and write those down before you rule those concepts out. What you then have left most likely, is a large middle category of concepts that have one or several but not all restrictions scoring high. Now the trick is to combine those concepts into new more elaborate designs, and enhance the concepts that came out as your base designs. Finally, take care of designs that look alike. In the end you will have some solid designs that are perhaps innovating, but at least proper.

Thats it for now, I hope it is of any use ;)

Hey guys, Im still here :)

I’m almost fully settled in into my new apartment, which turned out very neat and stylish to my opinion. The only thing lacking now is a proper internet connection which is bound to arrive within two weeks, so im working through mobile Internet at this moment.

Lots of stuff going on lately, which I really enjoy. I’m currently in my experimentation project at school which is really educational and intense, very cool. Like every year, some students are selected from university to participate in a cross-educational project with the Utrecht School of Arts (HKU), specifically the faculty for Game Design and Development. One game you might know of that is a game that came from such a project is de Blob which was originally made by students from HKU and University of Utrecht as The Blob (sorry that its not in English ;) ), for the purpose of promoting the new to build station area of Utrecht, of which of course the client was the city of Utrecht. Last year, other students had built another game for the City of Utrecht, called Plan-it. Faith now decided that the group that I am part of has to build a new game for the city of Utrecht, in which we have to build a game that relates to the to be implemented tourist road sign system in the city. The team I am part of consists of nine people, and three of us including me are GMT students, five are HKU GDD students and one guy is a HKU media management student. It is a nice group in all, I think there’s a lot of talent and knowledge present within in the group. We’re now almost 4 weeks in and are in the concept phase, in which we apply some very nice practical game design process on which I will definately elaborate further in a future blog perhaps later this week, as game design and the process of game developent are two of the things that intrigue me a lot.

Btw, nvidia released its book GPU Gems 3 to the public. Must read ;)

So we’ve all probably heard of Viva Pinãta for the XBox 360, which was released fall 2006. It has a quite distinctive and remarkable graphics style; very colorful ofcourse, but also very detailed and rich in stuff happening on the screen. It’s a kids game obviously, and the game itself is not primarily aimed at people like myself who enjoy the virtues of brutality in Gears of War. However, the graphical techniques used in Viva Pinãta game are pretty cool; in fact, the game was nominated for an award for outstanding achievement in visual engineering. The pinãtas have a nice paper-mâché-like fur and the grass is done in a similar style.

So, how is it done? The technique used is commonly called shell rendering, and it is used widely in various games on different platforms. Shadow of the Colossus on PS2 uses it for furifying its colossal creatures, and Super Mario Galaxy on Wii uses it for some of the enemies and for example for the queen bee in the bee world. The trick is to have several additional layers of geometry above your mesh, mapped with a texture that contains random or ordered pixel data (See picture). It’s a cheap method if you compare it to instancing geometry for each fur hair, because now you only have to render the model for each layer of fur. Thats obviously still a conciderable amount of extra polygons if you have a detailed model, but not nearly as much as if you would do it with instanced geometry.  Obviously there are some tricks that make it even cheaper. You could for instance take a lower level of detail model to render the fur layers. For grass, you could maybe combine the method with a geometry based LOD technique (like geomipmapping for example) and only render the grass for the terrain that is within certain distance to the viewpoint.

There are also some parameters that you can derive from this method. You can determine:

  • The amount of pixels in the fur texture (The density basically)
  • The distance between layers. Long hair/grass or short, its all possible. You can even have variations in height by storing the height in the fur texture as the value of a color. Since you have RGB you can store up to 256*256*256 values (you will need the alpha for other things, like a lerp between black and the base texture color for example)
  • The displacement of the layers with respect to eachother. You can for example apply gravity or wind making the fur hang or the grass wave. Make the displacement non linear, and the fur/grass will hang in a certain way.
  • The amount of layers used. This is useful if the camera is making a low angle with the furred plane, or when the displacement between two layers is too big (and thus gaps emerge between two layers).
  • The thickness of the fur hairs. This is done by scaling the texture (mapping it differently) or by means of populating (for example, sample a random position and add pixels for the consequtive two pixels to get a nice row)

There are lots of posibilities by combining the different attributes, some which I can’t even imagine at this time. I would be really interested in the way Rare did the pinãta paper-mâchée fur so neat and tidy for one :) Anyway, here is an example of how grass could look (its a bit coarser than in Viva Pinãta but that can easiliy be adjusted by controlling the thickness parameter):

I made this in XNA with help of Catalin Zima’s fur example on Ziggyware.

Hey everyone. Since I didn’t post something since the beginning of august, I might let you know that I’m still alive here :) I’ve not been into XNA much lately, since the project I was working on at work has been put into the fridge for now. I have been doing research on the capabilities of the Wii with the Wii devkit for our first Wii title which is going to be in production within a month I hope. I shall be talking about some technical stuff on that as well, as far as the NDA is not limiting that ofcourse.

I’ve also started taking classes again at university, so all in all I’m quite busy. The class I’m doing is called motion & manipulation, and is concerned with forward kinematics, motion planning, collision detection, and more.

I’ve been thinking about the blog and my activity on it, and I’ve decided to broaden it up a little, also commenting on whats happening to games and the industry in general. I play a lot of games, and I’ve got some strong opinions about them that I’d like to share, so stay tuned! ;)

For those that are interested in programming shaders up to shader model 3.0, there are some really nice resources available for both starters and the more advanced shader programmers.

GameDev.net recently made ShaderX2 by Wolfgang Engel available for download. Wolfgang Engel is one of the senior engine programmers at Rockstar San Diego, and he worked on the engine for GTA IV.  He also keeps a series of books called ShaderX, which if im right now has 6 volumes. The  ShaderX2 book is actually in two parts, first is a tutorial for beginning shader programmers, and theres a second part which is more of a cookbook style book with a whole lot of articles on all kinds of different subjects. The two parts can be found here.

Nvidia have also made some of their older books published on their developer zone, freely accessible. First is the Cg Tutorial which is nice for beginning shader programmers, and second are GPU Gems and GPU Gems 2 which are again a nice collection of articles on different subjects. They can be found here.

Yesterday i noticed that Andy Patrick placed a nice blog on the five books you must own if you are writing XNA games. So i’ve looked over them and found it funny to see Game Coding Complete: Second Edition on there as it was one of my first books as well. I don’t have the other ones except for the game developer magazine, but I ordered Riemer Grootjans’ book XNA Game Programming Recipes right away as it looks like a nice book giving somewhat more in depth information and not the basics. I’ll post a review of  it when I’ve read through it.

So next to his five books, i would propose five others of which I think should be on the shelf as well for you being a game developer.

  • The first is 3D Game Engine Design, Second Edition. This book covers all kinds of topics concerning game engine development and is very in-depth. Unfortunately, the only thing it doesn’t cover well enough is the software engineering process of game engine development.
  • The second is Design patterns : elements of reusable object-oriented software. When writing games, usually you will have to apply several design patterns. Understanding how they work and recognising them when you write games is absolutely a must. This THE book to have on design patterns.
  • The third is Object-oriented Programming in C++. When you want to learn C++ in general, this is the book to have. It thoroughly covers every aspect of the C++ language very clearly, period.
  • The fourth is actually a series of books called AI Programming Wisdom. Each of the books is a collection of articles on all kinds of AI subjects like path finding, neural networks, Bayesian networks and more. All of these articles are either written by industry professionals or academic researchers, but are mostly fairly easy to understand.
  • The fifth is Andrew Rollings and Ernest Adams on Game Design. In my opinion every game developer should have read a book about game design. It might sound obvious, and most of it covered by the book probably is when you’ve played a lot of games, but this is also the kind of stuff you tend to forget when you are creating games.

Twitter Updates

  • finished my last exam, with any luck. Working on formalizing my thesis project :) 4 days ago
  • exam this week, my last one if all goes well :) Finishing up on my experimentation project as well, writing a 5 page document should be easy 1 week ago
  • My new Samsung 6 series LED TV arrived today. Did i mention its huge? :D 3 weeks ago
  • Finished Prince of Persia after a couple of days playing :) Very nice game, nice ending to it :) 1 month ago
  • Bought Prince of Persia for 20 euro and its actually a very good looking game. Too bad its diversity in gameplay is perhaps somewhat limited 1 month ago