The RealmForge GDK is a cross-platform game development framework and toolkit written in Mono/C# and powered by the Axiom 3D engine. It will allow for the rapid development of cutting-edge software and MMORPGs with advanced graphics, audio, and networking capabilities.
Plugin architecture ensures a flexible framework, game engine, and toolset
•
Everything from the editor to the GUI's are data and script-driven
•
Master Modules contains nearly all aspects of the game data: world design, script attachment, entity placement and configurations, shader configuration, game settings, in-game literature, races and classes, and gameplay settings to name a few
•
The framework supports every conceivable game genre (eg. RPG, FPS, MMORPG, Adventure) and even those not often considered for 3D games (ie board, and puzzle)
•
The framework includes the RealmForge Media Library which is a compilation of free resources developed for it
•
A heavy singleton architecture is used to create a series of distinct systems with minimal dependencies which can be replaced with custom implementations
•
Plugin Modules can be created by the editor, these are concise diff-grams similar to those of Morrowind. They can be used by the modding communities or distributed as game updates.
•
Maintainability and good OOP practices as well as project standards are enforced in this open-source project
•
The plugin architecture allows OpenGL and DirectX to be used interchangeably, like most aspects of the game; this can be changed simply by changing a value in the Config class.
•
Written in C# using the .NET Framework, so can be used by all .NET Languages including C#, C++ .NET (MC++), VB .NET, J#, Delphi .NET, Jscript .NET, Lua .NET, Perl .NET, Python .NET
Scripting
•
Everything is controlled by scripts and uses interfaces to allow for full customization without modification of the code
•
Uses C# and JScript.net for scripting language providing unprecedented power, flexibility, and simplicity
•
Scripts can be developed in the IDE with an optional minimized syntax to emulate JScript.net
•
Scripts can be compiled and run on the fly mid-game
•
Assemblies can be automatically loaded and have their scripts registered
•
Every entity is fully scriptable and has a wide range of events which scripts can be attached to
Built-in Editors
•
The Game Editor is integrated into the engine and can be displayed in-game similar to Doom III
•
The line between design-time and runtime are blurred as a game can be edited using the full range of tool windows similar to an IDE
•
The in-game edit allows the beta testing and modifications to be made simultaneously
Support for Picture-in-picture to emulate effects such as cameras or rear-view mirrors
•
Views can be rendered to a texture and applied to an entity to simulate working in-game cameras or video feeds
•
Textures are registered as Materials so that can be loaded from different resource including compressed archives and libraries.
•
All materials are simple shaders allowing them have dynamic properties
•
Excellent in-game cut-scene rendering and path/movement scripting
•
Supports PNG, JPEG, TGA, BMP and DDS image files
Shaders
Vertex, Pixel, High Level:
•
Supports vertex and fragment programs (shaders)
•
Low-level programs written in assembler
•
High-level programs written in Cg or DirectX9 HLSL
•
The shaders are abstracted into Modifiers which can be applied to entities to generate the desired visual effects
•
A number of different properties are provided for each Modifier to allow it to be tailored to the target without the writing multiple programs
•
The OOP design allows game designers to concentrate on the game itself without an intricate knowledge of shaders
•
A library of Modifiers abstracting a series of different shaders are provided as a catalyst for game development
•
Every entity uses a simple shader or Material object to ensure that all textures are dynamic
•
Material support different techniques to account for different levels of shader support in video cards
•
Provides automatic support for many commonly bound constant parameters in the shaders
Scene Management
General, BSP, Octrees, LOD:
•
Highly customizable and flexible scene management
•
Plugins can override parts scene management with custom implementation
•
Different Axiom Scene Managers are supported to control low-level culling and features such as terrain rendering
•
Hierarchical (node-based) scene design
•
References to node trees provide an inlined prefab support (ie. a house template is used and minor modifications can be made for each instance)
•
Unique ID's allow referencing of specific entities in scripts
•
Regions or second-level nodes allow for environment settings such as sky and fog to differ for different areas
•
Node-based design with Region culling allows for a loadless game design
•
Realms (or highest level nodes) are used to denote unconnected regions of the game. This can be used to create a game which maintains separate cells and loads them when entered.
•
All Entities (including Regions, Nodes, and Realm) can be overridden to allow for custom implementations
Interactive water which responds to weather such as rain and hail and is displaced by other entities
•
Particle Systems represented as IEffect entities which can have scripted movement and variance or be applied to other entities
•
Support for different sky types including Dome, Plane, and Cube
•
Use of shaders allows dynamic effects such as wind-speed and direction for Sky and Water
•
Different water entities have different properties allowing them to be more viscous or thick for the creation of swamps
•
Fog disguises the camera culling region or can be applied over an area
•
Underwater foggy effect
•
Incredible Fire, Explosion, and other particle/sprite effects are represented as configurable IEffect entities which can be placed with the game editor
•
Environment settings such as sky, fog, ambient light, and weather can be configured separately for different regions of the world
Terrain
Rendering:
•
Rendering and culling of terrain cells
•
Loading of meshes and height-maps
•
Support for lighting and shadows on terrain
•
Optional approximation of lighting for FPS optimization
•
Terrain collision detection
Networking System
Client-Server, Peer-to-Peer, Master Server:
•
Flexible network and server support for different types of games
•
Centralized server, or peer-to-peer networking
•
Designed for use in massive-multiplayer games such as MMORPGs
•
The flexible design provides different server implementation to ensure that the networking is optimized and tailored to each game
•
The use of .NET Remoting (or clear proxy object with RPC calls under the hood) allows games to be run with a server with no changes in the underling code. This allows games to be networking enabled with no extra effort
Sound & Video
3D Sound, Streaming Sound:
•
OpenAL for excelent cross-platform sound
•
3D sound with panning, volume, doppler, and cones
•
Implemented in an OOP fashion with the use of scriptable Sound entities
Artificial Intelligence
Pathfinding, Decision Making, Finite State Machines, Scripted, Neural Networks:
•
A Neural Networks/Decision-Tree Hybrid is used as the primary mode of AI decision making
•
A genetic algorithm allows for the evolution or characters or races of creatures for the creation of challenging opponents which learn to match the player’s tactics
•
Every aspect of the engine is scriptable and AI is no exception
•
An event-based architecture for the characters to provides a powerful scripting interface for the AI
•
Different path finding algorithms will be provided to accommodate different game genres
Rendering
Fixed-function, Render-to-Texture, Fonts, GUI:
•
Level-of Detail rendering optimizes FPS
•
Transparency in textures automatically applied (eg. png, gif)
•
Supports the complete range of fixed function operations to account for hardware which doesn’t support shader use