Game Engine Roadmap

From Shadowrun: Awakened

Jump to: navigation, search

This "roadmap" defines a path of future development of the Game Engine for Shadowrun Awakened. This plan is, basically, a list of large feature areas in the engine that need to be developed. This are elaborations on forthcoming features appearing on the Awakened engine feature list.

This document describes action necessary to achieve the current milestone of Alpha.

Contents

AE.Admin & AE.Editor

Not all of the tasks required by the content tools and server tools are specific to SRA. Some of the more general tasks are necessary for any game using our engine. This means that, just like the client and server applications, there will be support libraries for content and server tools.

For AE.Admin, the supporting library for administrating a live server, the main tools will be concerned with tracking the basic simulation and enabling diagnostics over the database. The game mechanics will always revolve around the core simulation built from AE.Simulation, AE.Networking, and AE.Networking.Server. The AE.Admin library should be built to interact with functionality provided by these libraries.

AE.Editor exists to create and manipulate the fundamentals provided by AE.Simulation and the base AE library which contains graphical content. Important duties include mesh creation, object creation, and other basic methods for game content manipulation.

AE.Scripting

Building from the AE.Simulation library, which describes a simulation, and complying with AE.Networking libraries that define how a simulation will run on the server-side, we must build an extensible scripting system. This foundational element must allow for triggers, events, AI elements, and use of code not compiled along with AE (scripting language).

The scripting library is a large, independent project that should largely be characterized as a "server" project (since most of the code will be running server-side.

This library rides a fine line between game mechanics and foundational game engine. For instance, the "professional rating" mechanics in Shadowrun (NPCs fleeing after a certain damage threshold) must be enabled by AE.Scripting by providing an event when players are hit, but the actual adjudication of professional rating versus damage should happen in an SRA library or application.

Such core mechanics as Combat, Sneaking, Driving, Buying and selling, Storytelling, and basic skill use rely upon the capabilities defined in this library, but must be implemented in separate modules. AE.Scritping should allow immense flexibility for the game developer and minimize the difficulty of implementing game mechanics.

Lighting

The primary component for graphical quality in modern video games is not geometric complexity, it is lighting complexity. For example, in Unreal 3 Technology, one can have a 6,000 poly character model with a 2,000,000 poly normal map and it looks completely next gen. The key to looking good is lighting. The alternate visual spectrum mechanics and desire to have dynamic lighting in SRA adds additional requirements beyond quality. Most game engines utilize multiple techniques for lighting.

All lighting enhancement belong in the AE.Graphics namespace of the AE library. Both lighting & shadow are large enhancements to the core graphics functionality and constitute a largely "client" project.

Lighting through Deferred Shading

Deferred Shading is a technique for lighting that is emerging as more practical on modern systems. Instead of applying lighting to geometry in the scene, you apply per-pixel lighting, phong shading, to visible surfaces after they are rasterized using data about the scene stored on the GPU.

By "deferring" your lighting, you can ignore the limitations of a particular shader model on the number of lights in a scene (XNA features Shader Model 3.0, allowing for up to 8 point lights on compliant hardware). Instead, the amount of lights in a scene is restricted only by pure processing power. Additionally, since the lighting equations are applied every frame, the lighting for a scene can be changed between frames arbitrarily. As this a per-pixel operation, normal mapping is easily incorporated.

Many visual techniques can be "deferred" in this way, including light, shadow, and fog. A robust deferred shading effects architecture could provide numerous benefits in the engine. For this reason, lighting through deferred shading should be pursued as higher priority than lighting through alternate methods.

Lightmaps

Static lighting can be easily displayed using a lightmap, which is another layer of texturing that applies static lighting to all geometry in the scene. These textures can be generated during content creation, meaning there is little runtime overhead and it also ignores any shader model limitations on lighting. This technique is generally limited to only diffuse, static lighting and does not incorporate techniques such as normal mapping. There is still merit in this technique as it allows for more detailed lighting and automatically provides for shadows on static geometry.

Lightmaps, given how commonly they are used, seem like an inevitable feature of the game engine.

Shadows

To make a game called "SHADOW-run", it would be good to have shadows in the engine. Also, shadows figure heavily into the realism of lighting in a game engine; realistic lighting without realistic shadowing is pointless. Most game engines, like lighting, incorporate multiple techniques to achieve shadows depending on what kind of shadow is being cast.

All shadowing enhancement belong in the AE.Graphics namespace of the AE library.

Volumetric Shadows

One technique for defining shadows in computer graphics is by creating a volume that describes them. The advantage of using a volume is that it relates the 3D qualities of shadows and can be used for easy dynamic lighting. This technique was used in such games as Doom 3.

Another advantage of utilizing a volume is that it enables the use of Deferred Shading for shadows.

Mapped Shadows

Alternatively, instead of trying to define the volume of light that could possible be cast by a light source, one can defines only the pixels from which the light is visible.

In some situation, especially for static lighting, this shadowing technique is superior to using a volume.

Personal tools