Sunday, 21 March 2010

Rip Off

[SEE VIDEO]

2 weeks to alpha:


older version:

[SEE VIDEO]

This is a group project, that is still under development
(we are Team "Water", and there are 8 people in the group).

The goal is to implement the "Rip Off" game
on several platforms.The version we actually reproduced was this one:
http://www.brothersoft.com/games/rip-off.html

It has to have a vector engine based version, as well as an
evolved one. Then we have to port it on PSP, and one ofGame Cube or iPhone (to be decided). We will also
have a version that will use 3D glasses, for an experiment
in treating the lazy eye illness.
At the moment we have just releasedthe alpha version for the vector graphics version.
The 3D (evolved) version is not yet finished, but is close
to alpha as well, and it is playable.


I've been working at the 3D version for this game, at the
graphics interface, 3D graphics interface and PC_3D implementation.
The graphics interface is the abstraction layer ofVector Graphics and 3D graphics. If we switch the preprocessor
directives from _VECTOR to _3D or vice versa, the program
will compile using the corresponding classes. The same thing
is valid for _PC, _PSP (_SPSP, as it seems _PSP is already
taken) and _GC.
The initial class diagram for the graphics layer looked like this:The internal class structure for the graphics layer has been changed (i've added some new classes/functionalities), but i kept this diagram for simplicity. The point I want to emphasise here is the fact that the pllication structure is portable. For example, classes like ParticleSystem or TextureManager are using classes like VBOObject or Texture. Those are determined at compile time, according to the preprocessor variables defined:
#pragma once

#ifdef _3D

#ifdef _PC
#include "../pc/3dgraphics/PCVBOObject.h"
typedef PCVBOObject VBOObject;
#elif _SPSP
#include "../psp/3dgraphics/PSPVBOObject.h"
typedef PSPVBOObject VBOObject;
#elif _GC
#include "../psp/3dgraphics/GCVBOObject.h"
typedef GCVBOObject VBOObject;
#endif

#endif


The interfaces from the 3d graphics layer are used for keeping a common structure for all the platforms. Those "IF" classes have to be implemented on each platform. The advantage of the class structure is that platform specific calls do not interfere with the graphics specific functionalities (like managing textures, or loading models ). Furthermore, all openGL calls are separated from the core classes. As an improvement we could implement the classes in DirectX as well. However, the interfaces are "OpenGL-like", and they might need slight changes while switching to DX. For now, we will concentrate on the current tasks, as there is not much time left to the final release.
I'll post the final class diagram as well, but it is a bit difficult to read, as it is quite large:


All the models are from turbo squid
and 3d studio, they are all free models :)

No comments:

Post a Comment