Welcome to the Post Apocalyptic World of Despair Continuum

Despair Continuum is a multiplayer turn based strategy game, developed by A. Erman Kulunyar.

It is developed as a graduation project, hence it is non-commercial. It presents a decent and atmospheric gameplay as a graduation project, as well as a main framework to start developing new game projects.

For further game-in and technical details, please see Details section.

For details about me, please see About Me section.

1 Ekim 2008 Çarşamba

Details -Q&A

GENERAL

• What is Despair Continuum?


• What are the story and the concept?

• How is the game played?


• What does the game features?

TECHNICAL ASPECTS

• Which programming language is used?

• Which technologies or libraries does the game use?

• What are the technical features of the game?

• What else is provided other than the game? Game Engine? Any other tools?

• Are any third party tools used?

• Who are the development team?

• What is the development time?

• Credits



GENERAL


• What is Despair Continuum?


Despair Continuum is a 3D strategy game which is played online via LAN or internet. It is developed by A. Erman Kulunyar as the graduation thesis project for Yeditepe University Computer Engineering Department.

Despair Continuum is a turn-based game and played only multiplayer. The game play has a very simplified structure and similar to Heroes of Might and Magic strategy series, separating the strategy map and the war map.

The project consists of a framework and the game itself that is created using this framework, in other words a minor game engine.

• What are the story and the concept?

Although Despair Continuum is a graduation project, which is non-commercial, it aims to present the features of a full video game. Hence, it has its own story line and concept.

The events set on a post apocalyptic world, where the end has come with a gigantic alien ship. Soon the players understand that the ship is something else other than being alien; a part of a technology that disrupts the time and space continuum in paradoxical means.

• How is the game played?


Despair Continuum is played between two players over a LAN or internet. There are two sides in the game: Desert Dwellers and Ice Dwellers.

The winning goal is to reach the fallen spaceship. The game is played turn by turn, at a time only one player has the turn. Each player has turn points to move in the strategy map. When both players complete their turn, the game goes into the war map. While the winner of the war continues to the destination, the defeated player retreats, being forced to get far away from the destination.

• What does the game features?

o 3D graphics

o Multiplayer gameplay

o Music&Sound

o GUI


TECHNICAL ASPECTS


• Which programming language is used?

Despair Continuum is written in C++, in a complete object oriented manner. Total lines of code are about 11000. Besides, powerful features of C++ and programming techniques are used such as STL(Standart Template Library), singletons, effective garbage clearence...

• Which technologies or libraries does the game use?

o Rendering: Ogre3D is used as the rendering engine.

o Network Engine: RakNet is used as the networking engine.

o Audio API: OpenAL is used as the audio API.

o Input Library: OIS (Object Oriented Input System) is used for handling inputs.

o GUI Library: CEGUI is used as the graphical interface library.

• What are the technical features of the game?

o Game States and Game State Management:

Game states are used to encapsulate a certain part of a game. For example a main menu is a game state, and a playable strategy map is another game state. Despair Continuum uses game states to achieve flexibility and good programming. The game has four states: menu state, intro state, strategy state and war state.

A game state manager is used to adjust switching between these states, which also manages the flow of the game, acting as the core of the engine. It manages the handling of the inputs, game updates and rendering updates for the active state, and changes the state when it is told to.

o Adjusted Game Loop

Every game has a main loop, which can be considered as the heartbeats of a game. In this loop the input is handled, game state is updated, music and sound effects are played, networking and AI is handled and the rendering is done.

Despair Continuum uses a game loop that adjusts the game speed as constant and independent of the FPS. This feature provides a stable game play and makes it possible to separate the game updates and the rendering updates.

o Separation of Game Updates and Rendering Updates:

Despair Continuum uses the separation of game updates and rendering updates in its main loop. Game updates consist of every update for a frame except the rendering. Game updates are fixed to a constant value, 25, using the game loop. For example, input updates are handled mostly 25 times in a second. This is an important issue in game programming

Letting the rendering number per second equal to game updates number would be a waste of resources. Hence the rendering updates are separated and depend only on the hardware power of the computer. That is, game should run with a speed of 200 frames per second, but the game updates actually runs at 25 times per second. Synchronization is provided using an interpolation formula.

o Server-Client Structure:

Network structure is designed in a full server-client manner. A player chooses whether to open a server or connect as a client. But when the server is selected, actually a client is also opened besides the server in the same computer. Hence every game has one server and two clients, in one of the computers both a client and the server running.

o Server Leading Design:

The game is lead all by server. For instance when a player wants to shoot one of the enemy units and clicks on the unit to shoot, this information first goes to server. Server processes the attack attempt, and sends the consequence data to both attacker and attacked player. Only then the attack animation plays, and the game related updates are handled like the new health value using the data from the network packet.

o Network and GUI Integration:

Every case for disconnection or connection problems are handled and integrated with GUI. That is, for example, when a client lost connection or disconnects from the game, the other one is informed about the case via GUI.

• What else is provided other than the game? Game Engine? Any other tools?

o Framework:

A framework package is provided to start creating new game projects easily. Framework consists of a ready game manager and game state patterns.

Game manager comes with the adjusted loop and separated game and rendering updates. Integration to Ogre3D is ready and necessary functions to setup rendering is done but ready to be customized. OIS is used to handle input; and buffered and unbuffered input handling is ready in the package.

Game state class has a ready pattern and functions to setup and to dispose. To create a game state, for example a new level of a game, the programmer should only create scene in the proper function, write the game update and rendering update parts, without worrying about general design patterns.

Using the main framework with other provided aspects, a minor game engine is gathered to start developing a new game.

o Audio Pattern:

A sound manager class is provided to manage sound and music and its design follows a pattern where the programmer could easily add new sounds or music for a state of the game; play, pause or stop them anywhere within the game using the sound manager.

o Camera Class:

Despair Continuum uses a camera class which is easy to manage. It can be used as a third person, first person, or fixed camera. It also supports cinematic camera, which gives the effect of rail-cameras used in movies. Camera class supports integration to separating game updates and rendering updates. Without this support, while using separation, the view should not be smooth.

o Character Classes:

Despair Continuum has a generic playable and non-playable character class. All the characters in the game are derived from these classes. Character classes support camera class, that is, camera can be attached to any playable or non-playable character. Moving between points and animation is supported. Integration to separating game updates and rendering updates are also supported.

o Minor Managers:

There are other manager classes provided but they are more purpose specific. Menu manager, database manager, network manager are among these.

o Map Environment Editor Tool:

An editor tool is provided to create new environments in a loaded map. This tool is very open to further development but even in its current state, the user can create a scene in a very shortly time. It is possible to save the environment in a .txt file. A loader function is provided to load the environment in Despair Continuum. The environment of the map in Despair Continuum is created using this tool.

• Are any third party tools used?

o Ogre Command Line tools

o Photoshop

o Blender

o CEGUI Mesh Viewer

• Who are the development team?

There is no development team. The game is a single person project, developed by A. Erman Kulunyar.

• What is the development time?

A few months to start learning Ogre3D, completing tutorials, learning other technologies such as RakNet. Designing and programming itself took about a hard working of two-half months.

• Credits


o Design&Programming: A. Erman Kulunyar

o Story: A. Erman Kulunyar

o Map, Map Surface and Environment Design: A. Erman Kulunyar

o 3D Models&Animation: Free from internet

o Sound Effects: Free from internet

o Music:

o Rise of Nakkiel, performed by Saturnus

o Chinese Classical Music

o Menu Pictures: Taken from Halo and Fallout series, used without intention of commercial profit.

o Thanks to:

Ogre3D community (the most helpful community I have ever seen on the net), RakNet community, GameDev community, CEGUI community, deWitter’s game loop site and of course Wikipedia.

If you have any questions, or anything else to share, please feel free to send celbrion@gmail.com

1 yorum:

Hakan C dedi ki...

İlgimi çekti lakin indirme bağlantısına ulaşamadım. Aradan çok uzun zaman da geçmiş. Oyunun kopyası sizde hala bulunmakta ise burada paylaşırsanız çok hoş olur.