Paleolithic Project
The Game
The long way to describe the genre this game fits in is "isometric multiplayer team based capture the flag game with cavemen featuring platform elements and RPG-like combat", the short way would be "online action game" and the modern way is "online battle arena".
Paleolithic Project (working title) is a game that allows 2 group of players to battle each other as a team. The goal of the game is to win a match as a team by obtaining and dropping the 'Idol' in your enemy's base.
To complete the goal of the game, players are able to choose 2 of the 5 available abilities at the start of a match. By complimenting their choice of abilities to the rest of the team, team work is enforced.
The game was designed by Vincent van de Pol and me. The development was done with a team of 14 people in 14 working days.
The Team
Programmers:
- Vincent van de Pol
- Paul Mertens
- Pim Kartner
- Jerry van den Heuvel
- Djamidin Geldtmeijer
- Remco van Oosterhout
Artists:
- Trevor van Hoof
- Robert Joosten
- Perry Leijten
- Wouter van Blooijs
- Marc Wildenberg
- Dimitrie Hoekstra
- Mark Knoop
- Leo Kruyswijk
Indigo Showcase
Indigo Showcase is a new annual event showcasing new and innovative games produced by universities and independent developers.
The event is an effort organized by
Dutch Game Garden and sponsered by
Ziggo.
On 23th and 24th of April 2010 we were given the opportunity to demonstrate Paleolithic Project to the general public at
Indigo Showcase.
On this event we gave visitors a chance to take our game for a spin and ask questions regarding the design and development of the project.
My Contribution
Concept & Design
Paleolithic Project started out as a two man initiative. In the first stages of the game Vincent and me created the game concept, rough design and initial prototype.
In this phase we also created and presented several pitch presentations to the teaching staff in charge of accepting and assigning gamelab project teams.
Code Architecture
For this project I created a base architecture with an abstraction and simplification layer around
Ogre3D and
Havok written in c++.
By creating a base framework I made a toolbox of utilities and reusable components for the other developers to create the game with.
Additionally, the base framework hides the underlaying platform from the game logic, easing a possible port of the game to different platforms.
Networking
An online team based game can't go without a networking layer. For this purpose I created a messaging system in a client-server environment.
Instead of sharing game objects, the server simply exchanges messages which essentially represent the input of a user.
These messages are bundled and distributed to all connected clients and allow them to progress the local simulation of the game in a deterministic manner.
By relying on the deterministic nature of the game, a small artificial latancy to buffer lag and stalling the game in case of extreme lag spikes, I created a networking method that consumes very little bandwidth but still reliably keeps clients in sync.
This network model is quite similar to the model found in
Age of Empires 2 and
Warcraft 3 but without stalling all clients when a single client freezes up. The main difference is the client-server model instead of a peer-to-peer model.
Build Environment and Distribution
The project relies on half a dozen of 3rd party libraries and consists of about an equal amount of different binaries.
To maintain this environment I've created a series of scripts and setup the project files in such way everything required to the run the game (including assets and configuration files) comes to together cleanly.
The main goal was to keep all dependencies and created binaries in logical and structured places and combine all required files in a single non-versioned temporary directory.
This allows all newly created (non-versioned) files to easily be removed or packaged for release.
Part of this structure was also a single script that would compile the entire project, package the required files and create an installer ready for distribution.
By reducing this process to a single step I eliminated possible problems caused by human error. Additionally, this allows us to create releases really fast for distribution and testing purposes.
Material Generator
As part of our art pipeline, I created an
Ogre3D material file generator.
This generator simply takes a directory as input and generates materials based on a combination of specifically named texture files.
The main advantage of this tool is, it removes a layer of tollerance introduced by the publicly available exporters and reports violations of the art pipeline as errors.
Additionally, it allowed for certain complex materials to be available to the artists in a much simpler and convenient way.
Vha.Chat
The Application
Vha.Chat is a stand-alone chat client for
Anarchy Online (AO) written in C#.
It connects directly to AO's chat servers and allows users to interact with players who are currently playing the game.
It has full support for "Anarchy Online Markup Language" (AOML), a html-like language, including info windows and item links.
This application is developed and released under the open source license
GPLv2.
Library
Vha.Chat is build upon several libraries (available at the url's listed below). The most notable library is Vha.Net.
Vha.Net is a library created partly by using similar libraries (implemented in different programming languages) as reference and partly by reverse engineering.
This library is responsible for implementing and exposing the chat protocol as implemented by
Funcom in Anarchy Online.
Not only is this library used in Vha.Chat, several other projects are currently being developed by other developers using this library. One of them is a similar chat client targeting Windows Mobile.
Another notable library is Vha.MDB which implements AO's text database files and handles the decoding of AO's "Templated Message Format".
This library is used to convert some of the 'gibberish' produced by the chat server into sensible text to display to the user.
To fully translate the messages the library has the ability to read directly from AO's .mdb and .ldb files.
Links
Source:
http://code.vhabot.net/svn/vhachat/
Trac:
http://code.vhabot.net/vhachat/
Ray Tracing
The Application
Ray Tracing is a really elegant but inheritly slow way of rendering graphics. Its recursive nature allows complex effects such as physically correct refractions, accurate shadow casting and reflections on complex surfaces.
Furthermore, ray tracing is not only limited to rendering triangles, but also allows many other mathematically describable primitives to be rendered.
My Implementation
In my implementation of ray tracing I went for a modular and extendable approach instead of real-time performance. These are the features that highlighted the ray tracer:
- Renders spheres, planes, discs and triangles
- Combined solid geometry (CSG)
- Dynamic lights
- Textures with linear filtering
- Anti-aliasing
- Phong, reflections and refractions
- Diffuse reflections
- Soft shadows
- Beer's law
For my implementation I used c++ with some assistance from
PixelToaster and
FreeImage.
Eye of the Storm
The Game
Eye of the Storm is a classic sci-fi shoot 'em up (shmup) designed for 2 player co-op. The game uses a top scrolling approach and displays a single game world in 2 seperate views, 1 for each player.
The player is armed with a hybrid airplane that can morph into a robot. This morph ability unlocks different abilities for the player, each of which can be upgraded throughout the level.
The player will be challanged by different kinds of emenies flying in different patterns, often attacking in waves. Finally, the player is presented with a final boss encounter which goes through several stages before the player completes the level, or meets his defeat.
Additionally, the game comes with a ship and level designer which we used to create the levels. The player has access to the same tools we had to fill the game with content.
The Team
Programmers:
- Jeroen van Schijndel
- Remco van Oosterhout
Artists:
- Nick Peters
- Peter Ipenburg
- Uchechukwu Achonu
- Tymen Arts
My Contribution
Leadership
Throughout the project I was assigned team leader and managed the team from start to finish.
I took care of planning the project, assigning tasks and communicating with the teaching staff regarding the progress made.
Rendering Engine
The game was originally being developed entirely in software, but this quickly resulted in a performance problem due to the extensive use of alpha blending.
To resolve this I created an fixed-function OpenGL rendering pipeline.
With the introduction of OpenGL to the project we also created motion blur, heat shimmer and blast wave displacement effects to enhance the graphical experience.
Also part of the engine is an animation system that allowed us to create animated sprites for the game.
Gameplay
The game logic, AI behavior and the game flow are almost entirely of my creation. As our second programmer was mainly busy developing our content tools, I was developing most of the game.
The implementation of the game is fairly straight forward and basic. This limited scope was largely responsible for the successful completion of the project, given the limited time and manpower.
The Application
VhaBot is a modular Anarchy Online chat robot. The bot is run by users to provide various useful utilities for their ingame organization and activities.
It's used as an information, administration and notification system.
Keeping track of simple things like which organization members are online, to progress and rewards of ingame raids, providing information about ingame characters and notify users of ingame events like tower battles.
Its modular design spawned a community of developers who improve, extend and modify the bot to their own needs.
Some of these plugins are kept private on famous ingame bots like 'helpbot' and 'itemsbot'.
Other plugins are made publicly available on the VhaBot forums, some are even get merged into the official releases.
VhaBot is written in C# and features a plugin architecture which compiles plugins at run-time. Plugins and configuration can be entirely managed from inside the game.
The bot also surpasses some of the limits exposed by the game by using multiple active characters logged in to the chat server.
This process is entirely transparent to plugins and allows developers access to unlimited size ingame friends list and allows a large number of out going messages to be automatically be load balanced.
The Team
VhaBot's development team consists of several people from all over the world.
Over the years the following developers (most of them only known by their Anarchy Online nickname) have made significant contributions to the project:
- Vhab (rk1)1 2
- Iriche (rk1)
- Toxor (rk2)
- Veremit (rk1)
- Naturalistic (rk1)
- Llie (rk1)
1 RK1 and RK2 refers to the Anarchy Online server these players played on.
2 That would be me, Remco van Oosterhout.
There are also about a dozen other developers that made minor contributions in the form of fixes, small plugins or documentation.
My Contribution
As the primary developer of VhaBot and the original creator I've had my hands in all areas of its development.
I've begon development of the bot in the summer of 2005 and choose C# for its powerful language features and rapid development.
The development of VhaBot can be seperated in 2 areas, the core system and its plugins.
I've done almost all of the core development and a significant chunk of the plugin development.
VhaBot's most notable feature is its plugin architecture which allows users to directly feed source files (Visual Basic and C#) to the bot rather than precompiled binaries.
This feature made VhaBot a convenient platform for developing custom Anarchy Online bots.
I've also created a generalized and abstract configuration system. This systems allows plugins to easily expose various settings and allow the user to change these through a general interface.
Together with the other generic user interfaces, this made for a very consistent and user friendly environment.
Links
Website:
http://www.vhabot.net/
Forum:
http://forums.vhabot.net/