Graphics

Network

Scripts

Sound

GUI

Physic

Graphics

I have experience in graphic development since 7 years with OpenGL. In this section I will show only implementations related to my last engine. Implemented techniques:

Surface Clipmaps

With surface clipmaps it is possible render large terrain extensions with a really good frame rate. In this section you can see an overview of this technique implemented in my personal game engine

Height Map Height Map Colors Height Map Subdivision Streap Subdivision Borders Surface Texturized

After that it is needed to do some optimizations for to be a good performance, for example View Frustum Culling:

The terrain implementation provides a 3D vector point of the height all time to makes ground collisions and update camera.

Accurate Atmospheric Scattering

In this technique it is analyzed the spherical atmosphere and a terrain extension for make de sky dome. At first is analyzed a real solstice:

I implemented for sky dome the colours of the sky and the sun. You can see in the right picture some clouds with orange / red colours reflecting the color of the sun, this is other techniques, is interesting for to implement in the future.

Some pictures in the space simulating atmosphere scattering:

Some pictures from the terrain extension simulating the solstice:

Comparison of the colour gradient with real photo. It is not the same height and sun orientation, but the gradient it is correct:

HDR ( High Dynamic Range Rendering )

This scene represents a geomipmaped terrain surface with real scattered sky dome and the sun. Maybe it is not the best picture for the low

brightness scene and the orientation of the sun etc, but this picture shows the colour gradient compared with a real photo.

In this scene I render the scene to a floating-point surface and later I need to apply HDR filter for convert the High Dynamic Range Image to Low Dynamic Range Image:

After that it is needed to apply an adaptive tone mapping for real eye adjustment to the luminosity of the scene. HDR Effect

Original Render High Pass Filter DownSample 1x DownSample 2x DownSample 3x Combine Blur + Bright Pass Blur 1x Blur 2x Blur 3x Result

Generic Shader

My Generic Shader is a combination of Bump Mapping technique but the diffuse texture has in alpha channel information about no specular reflection.

For optimize this shader it is so good combine it with LOD of illumination technique, for example don’t apply normal map if you can not to see the difference without it, for example.

Kd-tree

It is very important to organize all objects in the scene or world. With a good organization you can to process only the objects are into the camera perspective.

Pseudo-Instancing

The Pseudo-Instancing implemented in the engine is based in NVIDIA paper.

Network

The network library is a custom implementation with TCP and UDP protocols supported.

The network implementation of the Game Server is organized in environments. An environment provides a port for to be I/O data and connections with game developers, gamers or web servers across XML-SOAP protocol.

Network Service Overview:

In the developer tool without server connected it is possible to connect others developers to work

together, it support connections of the gamers too, like a Game Server, for to test the new implementations. Later when the Game Server are online the connected developers will can upload the new or modified content with SVN.

Scripts

More flexibility in the new game development and export functionality with a simple language it is very important to work in team with art department, scripters or amateur developers. LUA is a high extensible language, powerful and has very simple syntax.

LUA

In the game engine it is possible to export any function with object orientation or namespace. For example the implementation of AI of Actor has some events related to the object like onMove, onDamage, onIdle… with this events it is very simple edit the behaviour of any object, actor, NPC or player. To modify the game content with powerful users, editing scripts it is very simple. If you want to modify the configuration of an own created magic ( for example ) it is really simple and you will have too much help in the Developer Tool. To update the content to the game server it is fast using a powerful script language integrated in the system.

Sound

FMOD/Ex

FMOD/Ex is an object oriented and flexible sound library. It is used in too many platform from computers to consoles. I have been working with this library in past.

OpenAL

OpenAL
wrapper it is my favorite, multi-platform, powerful and the current library for the sound in and my engine.

  • Ogg Vorbis: support for ogg vorbis files.
  • Streaming: support for streaming in ogg vorbis and wav files.
  • Effects Controller: support for source effects, fade in, fade out, etc.

GUI

The GUI it is very important to make so fast game content as possible.

Though, it is very important to make correct game engine thinking in the other future implementation with game tools.

QT

My favourite, fast, powerful, multi-platform. I prefer that than C# with .Net GUI library in general. The powerful of the performance of C/C++ combined with QT GUI library it is amazing. The possibility of make all the game GUI with a custom graphics a mask with all powerful of the GUI library, do it QT like the best option in front of others for make complex GUI content.

Game Developer Tool

Features:

  • Change material object: you can change the material properties, variables, textures, colours…
  • Move and Rotate objects: you can move and rotate objectseasily with a tool bar.
  • Resources list, Script list and Shader list:
  • Script Editor: the current version is 1.0 RC1.The integrated script editor has the possibility to open too many files, to compile all at once and one by one compilation, error logs with signals in the code and output information with compilation time.You can checktypical key features, to select a text and press F3 for search the next word in the text, F5 for build and more. The syntax highlighter and the auto-completer will help you for to make scripts very fast.Features in RC2:
    – Fix bugs in RC1 version.
    – Debugger with watches variables, local variables and breakpoints managements.
    – Remote Debug.
    – Profile like VTune.
    – Macros edition for to make more fast scripts.
    – Syntax analyzer on the fly.
    – Syntax analyzer for auto-completer of all scripts in the system.

  • Shader Editor: the current version is 1.0 RC1.The integrated shader editor has the possibility to open shaders from shaders list, to compile, to see error logs with signals in the code and output information with compilation time.You can check typical key features, to select a text and press F3 for search the next word in the text, F5 for build and more. The syntax highlighter and the auto-completer will help to you for to make shaders very fast.In material properties you can to change colour number and seeing a colour rectangle with interactive colour changes. If you want you will can to use color editor with double click in the text.You can to change vertex and fragment states for best performance in your shaders, to create, to delete, to change shader uniform variables with syntax helper. If you want to change textures you can to use a texture dialog for to see the textures loaded in the engine.Features in RC2:
    – Fix bugs in RC1 version.
    – Macros edition for to make more fast scripts.
    – Syntax analyzer on the fly.
    – Syntax analyzer for auto-completer of all scripts in the system.

 

MFC

The classic friend of tools. Has a good performance.

Glut

Actually I only use this for to make multiplatform window of the game and the management of the keyboard, mouse… but QT it is more better for complex GUI content.

SDL

I work too with this library for manage the multi-platform window, keyboard, mouse and more, for to do 2D games are really good.

Physic

Today, the Physic integration with games gives reality and the possibility to

play with all objects in the scenario. With new microprocessors with more than one cores allow to perform games more

realistic

with a complex physics integration. It is very important to say that in actual games to have a custom physic engine it is better for machines that only have one microprocessor.

PhysX

I use PhysX library, it is my

favourite, you can to do complex physic interactions and it is very powerful. Has a good performance if you have a PhysX card with a dedicated PPU more than one CPU microprocessor.

Security

The security it is very important to make transfer data secure. I know this when I implemented a RSA encryption with USB Cripto-Keys in Fantastic League. RSA security of high bits provides a decryption security of the data. With keys of more than 1024 bits of data encryption are

restricted in U.S.A for example, the

government can not decrypt data with super-computers in a

reasonable time.

RSA

I have implemented for my own engine a software encryption and decription with RSA. I never used this at now but, for encrypt logins it is very useful or for update a light encryption protocol of the transfer data like a WEP or WPA wireless protocols.