Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Malte Weiß, posted on January 10, 2002

Image Description, by Malte Weiß

On July 18th I made my first publication of my project called 'Racer' (okay, I haven't found a good name, yet:-).

In March 2000 I decided to write a real 3d computer game, which has grown to a large project.

The most important program of the project is Worldbuild (images top left and bottom right), the 3d world editor. The workspace is separated into four views: three 2d views (front, top, side) and one 3d view. The 2d views are used for the basic operations: The user inserts primitives and modifies them by moving, rotating, cutting etc. (some of these can be made in 3d as well). Objects like lights and lens flares can be created here, too. The 3d view renders the scene. All lights and effects (e.g. mirrors) can be directly rendered in real-time. The user can 'fly' through his level with a few mouse movements. Several additional view modes are available for better performance: Solid / wire frame mode, depth complexity mode (to find hidden superfluous polygons) and geo mode (to view the scene geometry). Almost all texturing operations are done in 3d as well: Complex environments can be quickly texturized by using the mouse and some helper functions (align texture, interpolate etc.).

An interface window supports setting up events (e.g. for opening doors), skyboxes (3d backgrounds) and fogs, which can be previewed in 3d, too. An internal compiler converts the map file into a more effective format, which contains pre-calculated oc-tree nodes. Moreover maps can be compiled as models. During the development I tried to make Worldbuild as user-friendly as possible. All actions can be done by using the mouse or with a few keys. Since the start of the project I've worked 22 months on this program, not just because three totally different DirectX versions have been published during that time. Currently Worldbuild runs with DirectX8.1.

The 'Racer' (images top right and bottom left) is the actual game, which I started on June 22nd. In future it will be a racing game where you can shoot your opponents. It currently just loads the compiled maps of Worldbuild and renders them. Within five months I had to write a complete new engine because Worldbuild doesn't support effective object culling. Racer uses a combination of an oc-tree and a beam-tree technique.

The engine is written on a high abstract level (using OOP), which can administrate more games and event systems at once. I've just finished the main part of it in order to start with the real game elements. The following features are currently supported:
  • Lens flares (flares are only visible if obstacles don't block the 'flare ray').
  • Real mirrors.
  • Models (created with Worldbuild), which can possess their own lens flares, mirrors and lights, which influence the environment.
  • Skyboxes (3d backgrounds), which can be changed in real-time.
  • Fog, which can be changed in real-time as well.
  • Animated textures.
  • Different alpha blending states.
  • Complex event system using external classes (e.g. "CMoveObject", "CCameraFly" etc.).
  • The light system - I'm sorry :) - isn't based on light maps but on vertex lighting. So I'm not able to render these cool shadows of the famous games, but I can do nice light animations.

    In order to get freedom over the texture handling I developed my own texture format. A special program (Texture container) allows me to handle texture lists, which can be animated. Additionally alpha channels (for transparency) can be added easily.

    Another goodie of the project is an online updater (Phalanx Updater), which was designed to contribute the newest versions of the programs to (fictional:-) team members. Yes, originally the game development was planned in a group of friends, which promised me heaven but did nothing ;-) I learned the hard way that people never really work without being paid :-(

    The current Racer demo can be downloaded from my homepage ( in the Files-Section. It's just a graphic demo, I'm gonna start with the controls in January. I'm sorry but the dominating part of the website is in German :-)

    I'm now 18 years old and doing my A-Levels in May. I got the opportunity by school to get a higher mark if I would present my project. However, please don't think that I spend about two years of my life dedicated to schoolwork!!! No, the idea for that game is a dream of my early youth :-)

    Malte Weiß

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

    January 10, 2002, 03:32 PM


    Now that be some funky biz. I just wish the screenshots weren't reduced to the point where you can't appreciate detail anymore.


    January 10, 2002, 03:38 PM

    I miss you, please come home.


    January 10, 2002, 03:38 PM

    Nice work...How much time did it took to write the editor ?

    Dan MacDonald

    January 10, 2002, 03:42 PM

    18 years old... man i feel old.


    January 10, 2002, 03:45 PM

    Very impressive. You state that you are 18 years old and have been working on your editor for 22 months. Am I correct to assume that you were 16-17 when you started on it? Pretty amazing stuff then, compared to what I have been doing in that time. Oh the waste... ;)

    Btw did you do your own textures? I love that moon+starts skybox!


    January 10, 2002, 03:51 PM

    Very nice work. I hope you don´t go to "Jugend forscht" with it. It would be to hard competition to me ;)
    With what IDE an libraray do you code? VC++ & mfc? I think i see this the second time?
    Perhaps you will find Teammembers on Do you post there?


    January 10, 2002, 03:53 PM

    He said 22 months!


    January 10, 2002, 04:18 PM

    well, i went to "Jugend forscht" with a work covering my combined CSG/Portalizing algorithms and i had software to show that was quite a bit more advanced than what i can see in this IOTD image.. well.. i got kicked in the first round (although getting second place and some special price). here is why: the first round jurors are just lame :), they didnt even understand what my work was about.

    so.. be warned when going there. big posters and illustrations are more important there than what is behind the stuff you actually did.
    In the contest i was in some guy with some genetic algorithms based "locatin optimzing" program won (with algorithms that you can actually read about nearly everywhere). i could have coded that up in two weeks... anyways. i just felt that i had to say this :).

    Malte Weiß

    January 10, 2002, 04:43 PM

    All programs of the project are written with Visual C++ 6.0. Worldbuild, Texture Container etc. are based on MFC because of the complex window system. Would be hard to write those in WinAPI :)
    Racer needs more messaging control and must not be slowed down by MFC routines. So I used the WinAPI for it! (Pretty simple if you have just one or two windows).

    Thx for the link! I'll have a look on it :-)

    "Jugend forscht" - never really thought of it. I once joined the 'Bundeswettbewerb Informatik 1999' and I stopped after the first round because of the useless tasks ... :)
    Never knew that "Jugend forscht" supports software products ...


    January 10, 2002, 05:24 PM


    How did you learn MFC? Can you please recommend a book on this topic?

    Thank you

    Malte Weiß

    January 10, 2002, 05:57 PM

    I'm sorry I can't really recommend a book.

    Earlier I worked with Borland C++. And instead of MFC it works with OWL (Object Windows Library). Changing to Visual C++ I didn't want to spend another 100 marks (50€) in a new book so I learned it by reading the help file and the examples! It doesn't really differ from OWL.

    In the case that you can speak German: There's a book by 'Markt & Technik' about 'Visual C++ 6.0'. I found it in a bookstore and it's quite easy and complete. But don't buy the 21-days-version ;-)

    I think the best teacher is source code (examples etc.)!

    Lion V

    January 10, 2002, 06:15 PM

    I`m curious about those model lights and enviroment lights.
    How do you implement all the lights ?

    Malte Weiß

    January 10, 2002, 06:32 PM

    Writing the Racer I developed an abstract system, which made the integration of models quite easy. When the app loads a map, the contained models are threated as a kind of 'sub-maps'. So models can prosess their own mirrors and lights without special functions ...

    All model lights are added to the world ('environment') lights. Their positions are updated when an animation (e.g. a move of a model) is in progress.

    Remember that I don't use light maps or ray-tracing. It's just a pretty simple kind of vertex lighting, but it looks cool when a ship moves and lightens everything in its environment :-)

    Malte Weiß

    January 10, 2002, 06:35 PM

    I did some of the textures myself (the moon, stars etc.) but the most ones were painted by a friend of mine. He was one of the first team members who unfortunatly stopped working.


    January 10, 2002, 07:06 PM

    Do objects cast shadows, or do lights shine through walls and stuff?

    Also, did you use the hardware lighting, or did you make your own lighting system? If you went with hardware, how did you deal with the limit on light numbers?


    January 10, 2002, 08:10 PM

    Very nice... With your Raced demo I got 150+ fps in the window at all times, however I also got what seemed to be a few bugs.

    1) The text was unreadable, like the characters where 3x6 bitmaps scaled up.
    2) The reflection in the floor was flickering and there also appeared to be some z-fighting.
    3) Strange yellow beams appeared and disappeared from time to time... this doesn't seems to happen at random in diffent parts of the area with the lense flares.

    I'm running Windows XP with a Winfast GeForce2 GTS 32mb and the latest (official) DetonatorXP driver.


    January 10, 2002, 08:29 PM

    very impressive, especially the age part..18 :)
    you could get your degree easily with this....


    January 10, 2002, 11:00 PM

    ahh... Its good to see some yung'ins here (im 14, haha).


    January 10, 2002, 11:29 PM

    I'm also 14 (1 month to 15!). I'm starting to do something... but school and all, *sigh*
    People like this guy always inspire me to get back to work and try to make something sweet. Keep up the awesome work!

    Frans Bouma

    January 11, 2002, 03:54 AM

    That's Ruud van Gaal's game, called 'Racer'. First I thought you worked on that project as well, but it doesn't seem like it :D. Nice work though, the tools seem pretty solid.

    Rasmus Christian Kaae

    January 11, 2002, 04:20 AM

    See it this way, you will never have as much sparetime in your life as what you have now. When you get out of school and start at university or other higher education you will either have to study 100% of the time or find a decent work to get living.

    My problem currently is that I have too many ideas and too little time to actually implement a largescale project (designing stuff is not something that can be done in 1 hour on a sunday; atleast if you want a state-of-art design).


    January 11, 2002, 04:42 AM


    Having programmed that by the age of 18 is very impressive. I am now 23 and am working as a Software Engineer. I greaduated with a Computer Science Degree this year, but when I started college I was 18, and had difficulty writing the Hello World program.

    The game looks very impressive. Going to download the demo now, and have a look.


    Mikko Nurmi

    January 11, 2002, 06:59 AM

    Your editor really looks nice, fancy and polished. But i thought that lensflares are a bit "outdated" nowadays, or do you have somekind of special lensflares which actually perform the lens-effect?

    When you said "real mirrors", do you use somekind of stencil-mirrors or just z-buffer mirrors? I've tried both of them, z-buffer mirrors work nicely, if they are just positioned on the wall and not floating in the air. Stencil-mirrors work perfectly all the time, tho.

    But nice work, keep it up dude!

    Steve Streeting

    January 11, 2002, 08:50 AM

    Nice work! I particularly like the fact that you have opted to spend time on the OO design rather than just leaping into eye-candy, something that is unfortunately rare in a lot of systems so it is very refreshing to see it in a project developed by a garage group.

    I must confess that when I was an amateur coder at 18 (jeez, I'm starting to make myself feel old now) I fell into the 'instant features over design' trap and I learned the hard way - my latest engine OGRE is heavily OO design oriented, maybe this is an attempt to compensate for my earlier travesties!

    Anyway, very good work indeed, I'm sure you will go far (you've got 10 years head start on me ;)


    January 11, 2002, 10:37 AM

    Impressive work. Enjoy all the time you have to do mess around with stuff like during school, because once you leave your amount of spare time dries up (well, mine did)

    Sebastian Sylvan

    January 11, 2002, 12:16 PM

    If you want higher detail in lighting you could simply tesselate the geometry and put in more vertices where needed to allow soft shadows.

    This of course needs to be pre-computed and you might as well just use lightmaps.


    January 11, 2002, 12:38 PM

    Very nice work, indeed.

    I'm old, but at least I'm not the only one to realize this =)

    Greetings from just another german.

    This thread contains 27 messages.
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.