• Advertisement


Sign in to follow this  
  • entries
  • comments
  • views

About this blog

So moving it makes me cry!

Entries in this blog

">iLiNX Video.

This video shows you how the player moves around a planet. Like in a FPS he uses WASD to move and the mouse to change the view. With Q and E he can move up and down. The Up vector is equal to the vector pointing from the planet's centre to the player. If the player moves, the view vector and the forward vector get adjusted to the up vector. For fast movement the player can press the A, W and D keys.

While the video doesn't look that smooth, what you see in pictures and in the videos runs with >60fps in fullscreen mode. First I tried the Growler Gun Cam to record a video. It worked well with Blumenmacht but the results with iLiNX were a very jumpy frame rate. Afterwards I tried other similar programs. Finally I got the best results with Fraps. To compress the videos I use VirtualDub.

The shadows are still my main problem. As you can see in the video, the shadows on the planet's surface are correct but the objects get sometimes a strange self shadowing. I compared my shadowing code with examples in the books and on the net but couldn't eliminate this behavior. The problem doesn't have to do with precision. It must lie deeper. Probably I'm doing something wrong in the context of my deferred rendering approach.

Rereading: Real-Time Collision Detection by Christer Ericson
Watching: Through a Glass Darkly (Retro Gaming Channel)
Listening: Ghost in the Shell: Stand Alone Complex O.S.T. Vol. 1 by Various
Surfing: COLOURlovers
Playing: The PSP demos of the last few months.

Blue Planet

Here are two in-game screenshots of the ice planet Nieves:

orbital play logo

In a week I want to show you in a short clip how the player moves around a planet. But I must confess I didn't find a solution for the shadow glitch I reported a week ago. It's a pity, because everything else works fine.

orbital play logo

The barren planet Salen you've seen in the screenshots I posted a week ago would be a perfect candidate for a scrap yard of space debris. Welcome to another idea for a future game! The player has to collect all forms of scrap and throw it in the cone of an incineration plant. The spaceship of the player becomes nothing else but a huge vacuum cleaner. To further train his aiming skills the player has to shoot at scrap until it is small enough to fit in the incineration plant's cone. If I think of space junk inevitably the adventure game
">Space Quest III comes to my mind. All this astro-garbage leaves a lot of room for allusions to science fiction pop culture. And there can be debris whose A.I. actively defies the combustion...

Reading: OpenGL Shading Language by Randi Rost
">Braindead (1992)
">Daissa by La Kumpania Zelwer
Surfing: The PC Engine Software Bible
Playing: The PSP demos of the last few months

The First iLiNX Screenshots

Here are the first two screenshots of a scene rendered by my iLiNX engine:

An alien artifact

Woven metal

The fantasy: The images show an alien artifact on the planetoid Salen.

The reality: The model is very useful for testing lighting and shadow mapping. The last one still worries me. There's one major problem left to be solved. If the sun is directly above an object, it throws the shadows not only down on the planet's ground but also up in the direction of the sun.

Rereading: OpenGL Shading Language by Randi Rost
">Bad Taste (1987)
">Fox Confessor Brings The Flood
by Neko Case
Surfing: Aether Emporium
Playing: The PSP demos of the last few months.

Shadows Again

Sorry, no screenshot like promised. While the shadows looked okay as long as everything was in motion, still images showed me the necessity to soften the shadow's edges with a screen space blur.

The collision detection will facilitate the creation of more complex scenes with more objects on the planet's ground or in the air. On the 6th of January I'll start working on the physics part of my engine. From today until the 23rd of December I'll be simplifying the content creation process and I'll be also optimizing my renderer. In parallel, I plan to recapitulate my books about mathematics and physics. Over Christmas and New Year I want to improve my homepage and play lots of games.

Rereading: Essential Mathematics for Games and Interactive Applications by James M. Van Verth and Lars M. Bishop
">The Evil Dead 2
">Lady and Bird
by Keren Ann and Bardi Johannson
Surfing: The Steampunkopedia
Playing: The PSP demos of the last few months.

Planets and Ballerinas

After I've met the milestone I set myself, I suspended work on iLiNX for a week. I used the time to get some inspiration for the planet creation. Therefore I watched for example the fantastic BBC documentary Planet Earth - the only blu-ray discs I own. This week I want to to create a nice fantasy planet with some buildings on it for a first in-game screenshot.

I won't go for realistic graphics. Instead I want to create a look a bit more realistic than in the anime Last Exile. I must confess I don't have the artistic talent and the resources for a detailed visual realism. My credo is like the one attributed to Virginia Woolf: "Art is not a copy of the real world. One of the damn things is enough."

Hopefully I can create a game as wild and unconventional as Blumenmacht. My flower power shoot 'em up was downloaded many times just because of pure curiosity. Did you know that the ballerinas in Blumenmacht tend to philosophize with the player about their form of existence. But they do this only if they become accustomed with the player after he reached the highest difficulty setting - which probably nobody ever did. Poor ballerinas!

Blumenmacht Downloads:
1121 downloads @ Baixaki
3352 downloads @ Jeuxgratuits
2397 downloads @ Gamedev.net

P.S.: I also used the time to open an account at Great Games Experiment and could need some friends.

Rereading: Lightwave v9 Texturing by Angel Nieves
Watching: The Evil Dead (1981)
">Hubert von Goisern

Surfing: cyberpunkreview.com
Playing: The Orange Box (PS3)

To do DOF or not to do DOF?

To do DOF or not to do DOF? I've decided for the last, at least for now. If I've got the physics working, I can imagine a Depth of Field effect which always focuses on the surface the crosshairs point to. Maybe you remember the precipice level in the first Half Life game, where the outlook was a blurred bitmap. I didn't like that. In my opinion it's very unnatural that you can't focus your view on what you want if your avatar is a human being. If you see the world through the cameras of a remotely controlled robot, it's a different thing.

Here is an image of my work desk, if you're interested

Rereading: Inside Lightwave v9 by Dan Ablan
Watching: A Nightmare on Elm Street (1984)
Listening: The Velvet Underground and Nico
Surfing: Digital Tools
Playing: The demos of The Mirrors Edge, Metal Gear Solid 4, Brothers in Arms: Hell's Highway and Alone in the Dark (PS3)

Theme Melody

Here is a possible theme melody I created for my future game: Orbital Keep (wav, 15.1mb).

I was able to implement every feature in my engine I planned except shadow mapping. Hopefully I can solve all the problems within this week. Next week I want to start to create four fantasy planets.

Reading: Nothing until shadow mapping is working...
Watching: Hellraiser (1982)
Listening: Depeche Mode: The Best Of, Vol. 1 by Depeche Mode
Surfing: Meta Anime Review Project
Playing: FIFA 09 (PS3)

Text Output

I'm coming nicely along with my engine. Only shadow mapping is giving me a hard time. Here are some new and rather basic things I've implemented over the last few weeks:

- Orbital movement around the planet
- Billboards
- Deferred particle engine
- Text output
- Multiple lights

At the moment I'm working on an anti aliasing solution for my deferred renderer. It is similar to the one described in Policarpos and Fonsecas Deferred Shading Tutorial. Probably I will also implement depth of field. Last but not least I'm going to create some documentation about my engine to ease the re-entry in my code.

I want to meet the deadline I set myself for the engine creation in two weeks. On November the 17th I've planned to start with the creation of four planets. You can expect the first screenshots in December.

Reading: OpenGL Shading Language by Randi J. Rost
Watching: Poltergeist (1982)
Listening: Tears Roll Down by Tears for Fears
Surfing: Stylized Depiction in Computer Graphics
Playing: Orange Box (PS3)

My Own Project Reality

I t was probably a good decision to not buy an Atari Jaguar. But the Cybermorph pictures and the Battlemorph screenshots in the videogame magazines of 1993 and 1995 fired my imagination. I dreamt of large virtual worlds to explore. The Nintendo 64 was the first console which let me experience this kind of polygonal worlds. The pictures of
"> Nintendos Project Reality
and games like Pilotwings 64 had a long term effect on me, which made the decision between OpenGL and DirectX easy. Building such 3-dimensional worlds has been a dream of mine for a long time. Blumenmacht was a warm up for my current 3D project. If I see what I 'm creating right now, I feel sometimes like a little magician. There's no better motivation!

P.S.: Here is an interesting Making Of Project Reality.

Reading: Sandman: The Doll's House by Neil Gaiman
Watching: Halloween (1978)
Listening: The Very Best Of by Soft Cell
Surfing: Atari Age
Playing: FIFA 09 (PS3)

Sandman Vs Zombies

One idea for a possible game: You're the Sandman. While you move in the orbit with the sunset around a planet, you have to throw sand on the cities below you to put the inhabitants to sleep. In the background you hear a lullaby.

Send all the people to sleep, who want to sleep! If you see or hear them celebrating a festival, they want to stay awake. There are also gypsies on the planet who sleep every night in another place. The sound of their music and their campfires guide you to them. A storm with clouds can obstruct your view and you have to remember where a city was.

If the inhabitants of a city don't sleep for several nights, they become zombies. The less zombies you have on your planet after a month (about 4 real minutes), the more points you receive. I must confess the zombies would be in the game for pure marketing reasons.

Reading: The Sandman: Preludes and Nocturnes by Neil Gaiman
Watching: Dawn of the Living Dead (1978)
Listening: S'NIX by Hubert Von Goisern
Surfing: Zombies on the web
Playing: Sandman Vs Zombies (In my mind)


If you're moving very fast backwards around a planet it looks as if the stars were falling like snowflakes on its surface. It reminded me of the experiences with accelerated time the Time Traveller had in H. G. Well's The Time Machine and Stephen Baxter's The Time Ships. This cosmic snowfall generated by my little engine was a very magic and motivating moment.

Now I'm already one month ahead of my plan. Therefore I've enough time to implement some features I planned for the next version of iLiNX. One thing I'm not sure yet is whether there would be a significant performance gain which would justify the usage of triangle strips instead of triangles in my Vertex Buffer Objects.

Reading: Nova Swing by M. John Harrison
Watching: Night of the Living Dead (1968)
Listening: Le Pop 4 by Various
Surfing: Worlds Without End
Playing: Civilization Revolution Demo (PS3)

Alpha Blending

Now I know now why I postponed Alpha Blending last spring. It's indeed difficult to integrate it in a Deferred Rendering framework. To keep the rendering framework of the first version of my engine simple, I want to omit Forward Rendering completely.

I think I can create a Deferred Particle Renderer with glowing quads or triangle fans as particles. I want to implement something like in the article Deferred Particle Shading (pdf). But when it comes to large transparent areas like clouds or atmospheres it's difficult to find a substitution for a Forward Rendering pass to do Alpha Blending.

I'm sure I'll miss alpha blended billboards and particles more than once when I'm doing content creation. But I'm very eager to finish a first version of my engine and foremost I want to create a game!

Reading: Nova Swing by M. John Harrison
Watching: The Texas Chainsaw Massacre (1974)
Listening: Le Pop 3 by Various
Surfing: A History of Gore and Splatter in the Cinema
Playing: Bioshock Demo (PS3)

Only Forward!

After I have put a first version of my homepage on the net, I want to finish the graphics part of my iLiNX engine until the end of 2008. To reach this goal I made a rough plan. In contrary to the development of the deferred rendering part of my engine, the alpha blending features I want to implement consist of ordinary forward rendering technology and are therefore no new terrain to me. I also have set the dates of the next milestones very generously.

Reading: Nova Swing by M. John Harrison
Watching: Startrek The Next Generation Season 5
Listening: Twin Peaks by Angelo Badalamenti
Surfing: conceptships.org.
Playing: Fracture Demo (PS3)

orbital play

orbital play logo

I am working on my new homepage www.orbitalplay.com. Nothing to see yet, but I wanted to show you the new logo for my future games.

Reading: Nova Swing by M. John Harrison
Watching: Startrek The Next Generation Season 4
Listening: Black Holes and Revelations by Muse
Surfing: Spacebattles.com
Playing: Star Wars: The Force Unleashed Demo (PS3)


iLiNX Starbox

The geocentric universe in iLiNX works very similar to the one described in the Almagest. This means that the planets and the sun(s) circle around the motionless world you play on. A starbox with pre-rendered fix stars and nebulae encloses everything. I used Lightwave 3D to render starbox textures like the one above.

Reading: The Time Ships by Steven Baxter
Watching: Startrek The Next Generation Season 4
Listening: The Slip by the Nine Inch Nails
Surfing: Game Studies
Playing: The Last Guy Demo (PS3)

Back to the Future

I have been working on my iLiNX Engine until the end of May. At that time my Deferred OpenGL Renderer (DOGLR) could import Lightwave Object files with UVMaps and convert them to Vertex Buffer Objects. It reads TGA-files and stores them internally as Framebuffer Objects. DOGLR uses OpenGL Shading Language shaders. I also implemented Shadow Maps and Bloom.

Now I'm looking forward to continue with my project. To make my return to DOGLR easier I created these charts (pdf). First I want to model and texture four fantasy planets to explore the new features of DOGLR like normal maps, specularity maps and ambient occlusion maps. Afterwards I want to implement the rendering of decals as a forward rendering pass after the DOGLR part.

Reading: The Time Ships by Steven Baxter
Watching: Startrek The Next Generation Season 4
Listening: Super Ready / Fragmente by The Young Gods
Surfing: Strange Horizons
Playing: NHL 2009 Demo (PS3)

A first D.E.K.E. logo

An early idea for a logo of the first game I want to create with my iLiNX engine:


"D.E.K.E." stands for Destroy Everything, Kill Everybody.

Smoothing Groups and Physics Engines

This is an insightful Making Of of a wonderful game! Such inspirations motivate me to continue with my project.

I like such experiences: Something is easy to code but it has a big impact! Because I don't need the face colors for rendering a Lightwave Object in my iLiNX-engine, I use them for the implementation of Smoothing Groups. Faces with the same color belong to the same Smoothing Group and faces that are black don't get smoothed. As I texture objects mostly in 3D-Coat this fits perfectly in my workflow.

After I finish the shadow generation and the implementation of postprocessing shaders (glow/bloom), I have to decide myself for a physics engine. At the moment I'm looking at different engines. The Newton Game Dynamics seems like the best choice. The engine has to be flexible enough to handle a world around a spherical planet.
video of a spider crawling around a sphere convinced me. Creepy!

About a year ago I coded the physics part of my iLiNX engine. It moves objects correctly around a planet, applies gravity to the game objects and calculates collisions between the planet and game objects. Maybe I use it for a first simple game. But it would boost my creativity, if I could use a fully fledged physics engine.

I was also able to simplify the Lightwave 3D/3D-Coat/Photoshop/iLiNX-workflow considerably! The checklist of what I have to keep in mind is now about half as long. In the future I need to exercise the workflow so it becomes second nature. But this will be pure fun!

Geometry and Texture Rendering

This week I finished the geometry and the texture rendering part of my engine. It loads Lightwave object files and uses vertex buffer objects and normal mapping for rendering. The GLSL shaders calculate specular highlights and use ambient occlusion maps I bake in Lightwave 3D.

First I also wanted to implement parallax mapping. But the problem with the visible seams around UV chunks entailed too much work on UV mapping. I want to be able to create meshes with color textures, normal maps, specular maps and ambient occlusion maps in Lightwave 3D and 3D-Coat (the former 3D-Brush) as fast as possible and without too many constraints.

For simple normal mapping I solved the seams problem more or less. If the normal of a fragment in tangent space is undisturbed (0.0, 0.0, 1.0), it gets only phong shading. For this I don't need tangent space calculations and can just use the averaged normals. As a result, if the tangent space normals in the UV border region are undisturbed, there is no seam visible.

One could have solved the seams problem with Nvidias Mesh Mender. But because I create this engine on my own, I didn't want to spend more time on this.

Now I'm working on a shadow map. After that I want want to look into post processing shaders and implement at least a bloom shader.

Gutenberg Galaxy

Blumenmacht was like a proof to me that I can finish a game project. While I created Blumenmacht with the knowledge I had at that time, I take a different strategy for my current project. I just finished reading several books I bought last year. Now I've teached myself everything I wanted to learn for my new project.

You are welcome to pay a visit to my current library of books about game development:

Adobe Photoshop CS3 one-on-one, Deke McClelland, 2007.
ADTs, Data Structures, and Problem Solving with C++, Larry R. Nyhoff, 2004.
CPP for Game Programmers, Mike Dickheiser, 2006.
CPP Templates: The Complete Guide, David Vandervoorde, Nicolai M. Josuttis, 2002.
Core Techniques and Algorithms in Game Programming, Sanchez-Crespo Dalmau Daniel, 2003.
Cubase 4. Das Praxisbuch, Carsten Kaiser, 2007.
Design Patterns. Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph E. Johnson, 1995.
Essential Mathematics for Games and Interactive Applications, James M. Van Verth, Lars M. Bishop, 2004.
Inside Lightwave 9, Dan Ablan, 2007.
Lightwave v9 Texturing, Angel Nieves, 2007.
Modern CPP Design. Applied Generic and Design Patterns: Applied Generic and Design Patterns, Andrei Alexandrescu, 2001.
More OpenGL Game Programming, Dave Astle (ed.), 2005.
Moderne CPP Programmierung Klassen, Templates, Design Patterns, Ralf Schneeweiss, 2007.
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2.1, Dave Shreiner, Mason Woo, Jackie Neider, 2007.
OpenGL Shading Language, Randi J. Rost, John M. Kessenich, Barthold Lichtenbelt, 2006.
Professional CPP, Nicholas A. Solter, Scott J. Kleper, 2005.
Real-Time Collision Detection, Christer Ericson, 2005.
The CPP Standard Library: A Tutorial and Reference, Nicolai M. Josuttis, 1999.
The CPP Programming Language, Bjarne Stroustrup, 1999.

Hoshi wo Katta Hi

You might know from my game Blumenmacht that I'm a huge Myiazaki fan. Lately I discovered that his short movie Hoshi wo Katta Hi (The Day I Harvested a Star) is exactly about what I'm doing right now. After 40 seconds in
"> this documentary
you can see a boy moistening a little planet with a spray can. This reminds me of myself sitting in front of my computer and working on my project.

Instead of a spray can I'm using Visual Studio 2005 and Lightwave 3D to animate my planets. I just finished reading OpenGL Shading Language from Randi Rost. I had some knowledge about GLSL from Dave Astle's More OpenGL Game Programming, but I decided I needed a better fundament. Both are great books!

It's a kind of magic!

If I want to get back some of the magic videogames had for me when I was a boy, I visit the german site kultpower. There I can read the same game reviews I read many years ago in magazines. Another favourite is the video of an 80's trade show at Llamasoft. Looking in the eyes of the boys reminds me of my own feelings when I was playing videogames back in the 80's. All this gives me the feeling of doing something magic and motivates me to continue with my project.

Jeff Minter is a great inspiration to me. Some things they say about Space Giraffe are in my opinion also true for Blumenmacht: "Space Giraffe is different. Very different and we should expect that to scare and baffle people that are unwilling to invest the time in discovering its beauty." Or: "Space Giraffe is different again, it purposefully overwhelms you. It is a new type of game and it will scare people. The bad players will die and run away crying, assaulting the game that hurt them so."

Good description of Blumenmacht

I love the short and clear description of Blumenmacht at Mobygames. And the screenshots with their subtitles are even more fantastic!
I learned that it's difficult to write a manual for a game I've been working on for many months. Therefore I can learn a lot from this concise text.

An Indy "Art" Game


Blumenmacht is at the 18th place in the list of the best indy "art" games. The author found the game to be "Very original, and enjoyable to play" if you take the time to learn the game mechanics.

If you want to take a look at this very interesting list click here!

Flower-powered "explosions"

Finding my game featured in the Games for Windows: The Official Magazine really surprised me. I can live with the author's critique, but the screenshot is from a very old version of Blumenmacht.


Sign in to follow this