|
it this good? It is free....
RealmForge is a free, cross-platform game engine written entirely in C# and built upon Axiom, the C# port of the OGRE 3D engine.
Author Dan Moorehead
Graphics API OpenGL, DirectX Operating Systems Windows, Linux, MacOS, Solaris, HP/UX, FreeBSD
Programming Language C/C++, C#, D, Delphi, Ada, Fortran, Perl, Python, VB.NET Status Beta
Documentation Yes
Features
General Features Object-Oriented Design, Plug-in Architecture, Save/Load System:
• 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
Physics Basic Physics, Collision Detection, Rigid Body, Vehicle Physics:
• The Tao C# binding for ODE is used for an excellent open-source physics implementation
• The OOP plugin architecture allows for an extensible physics engine which can easily be configured for you game
• Rag-doll physics allows for characters to be designed from a series of body parts for a vast array of different character with minimal effort
• Support for the dismemberment of characters
Lighting Per-vertex, Per-pixel, Lightmapping:
• Unlimited number of lights
• Easy application of lighting effects such as blinking and sparks
• scriptable Light entities with scriptable movement paths
• A wealth of properties including ambient and diffuse colors, intensity and radius
• Support for different light types including spotlight, point, cone, and ambient
Shadows Shadow Mapping, Projected planar, Shadow Volume:
• Supported techniques include modulative stencil, additive stencil, modulative projective, texture mapped, texture modulative, and decals
• Multiple stencil shadow optimizations
• Texture shadows fade out at far distance for FPS optimization
Texturing Basic, Multi-texturing, Bumpmapping, Mipmapping, Volumetric, Projected:
• 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
Animation Keyframe Animation, Skeletal Animation, Facial Animation, Animation Blending:
• Skeletal animation with blending of multiple animations and variable bone weights
• Physics-based animations in which forces are applied to bones and body parts to ensure the realism and integrity of animations
• Built-in tools for animating rag-doll characters
Meshes Mesh Loading, Skinning, Progressive:
• Hardware-accelerated skinning
• Flexible mesh data formats accepted
• Loads OGRE Mesh, Skeleton, and Material formats
• Working on 3DS and LWO loading
• Exporters for 3DS Studio Max, Blender, Lightwave, Maya, Milkshape, Wings3D
Surfaces & Curves Splines, Patches:
• Biquadric Bezier patches for curved surfaces
Special Effects Environment Mapping, Lens Flares, Billboarding, Particle System, Sky, Water, Fire, Explosion, Decals, Fog, Weather, Mirror:
• 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
• Support for multiple material techniques
|