Engine Features: Difference between revisions

From Orion Engine Wiki
Jump to navigation Jump to search
 
(9 intermediate revisions by the same user not shown)
Line 29: Line 29:
** Mesh object manager.
** Mesh object manager.
** Texture manager.
** Texture manager.
* Easily maintain large worlds by dynamically loading/unloading scene elements.
* Device render state management.
* Device render state management.
* Camera/viewport management.
* Camera/viewport management.
Line 50: Line 51:
** CSG Brushes
** CSG Brushes
* Portal Based Cell Graph
* Portal Based Cell Graph
* Terrain Management
* Terrain Management (i.e. allows multiple chunks of terrain to be patched together into a seamless landscape of nearly any size)
* Mesh Objects, Primitives, 2D Shapes, etc.
* Mesh Objects, Primitives, 2D Shapes, etc.
* Animatable Objects
* Animatable Objects
Line 66: Line 67:
* 2D font support.
* 2D font support.
* 2D pointer/cursor support.
* 2D pointer/cursor support.
* Window manager.
* Theme manager.
* Windows/dialogs/message boxes.
* Buttons.
* Buttons.
* Check boxes.
* Check boxes.
* Labels/input text boxes.
* Labels/input text boxes.
* List boxes.
* Popup text windows.
* Popup text windows.
* Progress bars.
* Progress bars.
Line 75: Line 80:
* Spinners.
* Spinners.
* LCD/LED simulations.
* LCD/LED simulations.
* Windows/dialogs/message boxes.
* Window manager.
* Theme manager.


== Input Manager ==
== Input Manager ==
Line 98: Line 100:
== Network Manager ==
== Network Manager ==


* Includes a scalable, high-performance, Winsock server driver designed to handle many connections simultaneously.  The server utilizes overlapped I/O, with a completion port, for TCP and UDP over both IPv4 and IPv6.
* Go peer to peer, or create high capacity client/server applications.  We allow upwards of 10,000 connections per-server (depending on each particular implementation).
* Generic network controller.
* Generic network controller.
* Network packet/file buffer helpers.
* Generic packet parser.
* Generic packet parser.
* Go peer to peer, or create high capacity client/server applications.
* Useful network packet/file buffer helpers.


== File Manager ==
== File Manager ==
Line 158: Line 161:


* Provides the ability to provide custom AI and game logic through scripts attached to objects in the scene. Can be used to define NPC behaviors, motivations, etc.
* Provides the ability to provide custom AI and game logic through scripts attached to objects in the scene. Can be used to define NPC behaviors, motivations, etc.
* Orion Script IDE, can be used to create/edit/compile proprietary Orion Engine script files.
* [https://script.orionengine.com Orion Script IDE], can be used to create/edit/compile proprietary Orion Engine script files.
* Generic virtual machine, can be easily embedded into any application.
* Generic virtual machine, can be easily embedded into any application.
* Script compilers for an assembly-like language, and a C-like language.
* Script compilers for an assembly-like language, and a C-like language.
Line 165: Line 168:
== Tool Applications ==
== Tool Applications ==


* [http://genesis.orionengine.com Orion Genesis World Builder]
* [https://genesis.orionengine.com Orion Genesis World Builder]
* [http://script.orionengine.com Orion Script IDE]
* [https://script.orionengine.com Orion Script IDE]
* Asset Manager application, tracks media revisions, etc.
* Asset Manager application, tracks media revisions, etc. (See also: [[Using the Orion Engine Asset Manager]])
* Setup programs, bootstrap, self-extractor, etc.
* Several application development helpers. (See also: [[Using the Orion Result Lookup Tool]], [[Using the Orion GUID Tool]] and [[Using the Orion Network Tools]])
* Tool library for Windows with GUI helpers, custom controls, SQL database connectivity, platform tools, etc.
* Setup programs, bootstrap, self-extractor, etc. (See also: [[Setup Bootstrap]] and [[Self Extract Wizard]])
* Tool SDK library for Windows with GUI helpers, custom controls, SQL database connectivity, platform tools, etc.


== Plug-ins ==
== Plug-ins ==
Line 182: Line 186:
** Win64
** Win64
** Linux/Unix (T.B.A.)
** Linux/Unix (T.B.A.)
** XBOX 360/ONE (T.B.A.)
** XBOX ONE (T.B.A.)
** PS3/PS4 (T.B.A.)
** PS4 (T.B.A.)


* Video
* Video
** Win32 Direct3D 9
** Win32 Direct3D 9
** Win32 OpenGL
** Win32 OpenGL
** Win32/64 Direct3D 10 (T.B.A.)
** Win64 Direct3D 12 (T.B.A.)
** Linux/Unix OpenGL (T.B.A.)
** Linux/Unix OpenGL (T.B.A.)
** XBOX 360/ONE (T.B.A.)
** XBOX ONE (T.B.A.)
** PS3/PS4 (T.B.A.)
** PS4 (T.B.A.)


* Sound
* Sound
** Win32 DirectX 9
** Win32 DirectX 9
** Win32/64 DirectX 10 (T.B.A.)
** Win64 DirectX 12 (T.B.A.)
** Linux/Unix (T.B.A.)
** Linux/Unix (T.B.A.)
** XBOX 360/ONE (T.B.A.)
** XBOX ONE (T.B.A.)
** PS3/PS4 (T.B.A.)
** PS4 (T.B.A.)


* Input
* Input
** Win32 DirectX 9
** Win32 DirectX 9
** Win32/64 DirectX 10 (T.B.A.)
** Win64 DirectX 12 (T.B.A.)
** Linux/Unix (T.B.A.)
** Linux/Unix (T.B.A.)
** XBOX 360/ONE (T.B.A.)
** XBOX ONE (T.B.A.)
** PS3/PS4 (T.B.A.)
** PS4 (T.B.A.)


* Network
* Network
Line 211: Line 215:
** Win64 Sockets
** Win64 Sockets
** Linux/Unix (T.B.A.)
** Linux/Unix (T.B.A.)
** XBOX 360/ONE (T.B.A.)
** XBOX ONE (T.B.A.)
** PS3/PS4 (T.B.A.)
** PS4 (T.B.A.)

Latest revision as of 10:27, 11 July 2023

The Orion Engine is a full-featured real-time rendering software development kit and tool set. Code is provided to allow the creation of cross-platform applications, and to create custom drivers/modules that support new operating systems and/or platforms. This page lists the main features of the engine that are currently finished.

NOTE: See the Incomplete Code page for details on the features that are not yet finished.

This documentation is only a preliminary specification and is subject to change at any time.


General Details

  • Custom run-time type information (RTTI) implementation.
    • Scene loaders can instantiate new objects using only the class name.
    • Allocate at run-time a scene object that was enumerated from a plug-in.
    • Dynamically create and manage classes through scripting.
  • Custom object serialization routines.
  • Custom memory manager, with detailed statistics tracking.
  • Advanced error logging functionality.
  • Log file management.
  • String localization database support.

Scene Manager

  • The core engine design is based on an abstract object model that allows the definition of a wide range of scene object types.
  • Comprehensive plug-in scene object support.
  • Customizable object parameter system.
  • The engine provides the ability to embed other scene graphs into the core engine scene graph hierarchy. Different methods can be used for different regions as appropriate; such as BSP/PVS and/or portal based approaches for indoor scenes, or Quadtree and/or ROAM based approaches for outdoor scenes, etc. Thanks to the use of RTTI and our custom plug-in architecture, instantiating a new class to render a node containing a user defined scene graph type could be done dynamically by the engine at run-time.
  • Scene loader/writer for our proprietary scene file format.
  • Provides management of multiple interconnected scenes, predictive caching of scene data and resources, etc. There are several resource managers that are used to deal with the creation, lifetime control and destruction of objects.
    • Material/effect manager, with full pixel shader and vertex shader support.
    • Mesh object manager.
    • Texture manager.
  • Easily maintain large worlds by dynamically loading/unloading scene elements.
  • Device render state management.
  • Camera/viewport management.
  • Object picking utilities.
  • CPU/thread scheduler.

Effect System

  • Used to make vertex, pixel and geometry shader management easier.
  • Can import .fx effect files into Orion Engine Effect (.osfx) files.
  • Supports most standard parameter annotations and semantics. Many shader constants can be linked automatically.
  • Ability to use the same data files, no matter what shader model is present, and no matter what platform is used. Basically, our effect files can contain various binary blobs of shader code which can then be selected at run-time, based on the platform and/or rendering API that is being used.
  • The engine also supports shader processing without effect files.

Core Scene Objects

  • BSP Scene Graph
    • Potential Visibility Sets (PVS)
    • Solid Leaf Trees
    • Solid Node Trees
    • CSG Brushes
  • Portal Based Cell Graph
  • Terrain Management (i.e. allows multiple chunks of terrain to be patched together into a seamless landscape of nearly any size)
  • Mesh Objects, Primitives, 2D Shapes, etc.
  • Animatable Objects
  • Sky Objects (i.e. Sky Dome, Sky Box, Sky Bodies, Lens Flares, etc.)
  • Particle Systems (Basic and Advanced)
  • Lights
  • Sounds
  • Effects
  • Triggers
  • Message Relays
  • Helper Objects

2D GUI Control Library

  • 2D font support.
  • 2D pointer/cursor support.
  • Window manager.
  • Theme manager.
  • Windows/dialogs/message boxes.
  • Buttons.
  • Check boxes.
  • Labels/input text boxes.
  • List boxes.
  • Popup text windows.
  • Progress bars.
  • Scroll bars.
  • Sliders.
  • Spinners.
  • LCD/LED simulations.

Input Manager

  • Full keyboard, mouse and controller support.
  • Universal input action mapper.
  • Input event triggering support.
  • Input logger.
  • Force feedback support.

Sound Manager

  • Voice and/or buffer management.
  • Stream playback.
  • Loaders for many sound file formats.
  • Sound mixer.
  • Support for 3D positional sounds.
  • Support for many basic audio effects, such as environmental reverb, EAX, etc

Network Manager

  • Includes a scalable, high-performance, Winsock server driver designed to handle many connections simultaneously. The server utilizes overlapped I/O, with a completion port, for TCP and UDP over both IPv4 and IPv6.
  • Go peer to peer, or create high capacity client/server applications. We allow upwards of 10,000 connections per-server (depending on each particular implementation).
  • Generic network controller.
  • Generic packet parser.
  • Useful network packet/file buffer helpers.

File Manager

  • Custom compressed archive support.
  • Simulate folder on hard drive as an archive.
  • Support for background (asynchronous) file loading and streaming.
  • File patching support.
  • Generic support for devices such as memory cards, etc.

Image Processing Library

  • Supports many image file formats, with both read and write support.
  • Supports many high dynamic range (HDR) formats.
  • Extremely fast, and very high quality rescaling, dithering and filtering routines.
  • Supports conversion to and from many different pixel formats.
  • Generic image map processing.
  • Texture helpers for managing texture sets, creating mip-map levels, locking device buffers, etc.

Math Library

  • Comprehensive, highly optimized, C++ template support for most all math types used by a 3D engine, such as quaternions, matrices, vectors, planes, etc.
  • Camera/projection helpers.
  • Color helpers.
  • 2D and 3D helpers.
  • Interpolation routines.
  • Intersection routines.
  • Bounding volume routines.
  • Random number/noise generators.

Geometry Library

  • Mesh file reading and writing.
  • Mesh containers with many helper methods.
  • Animation data processing.
  • Mesh subset processing.
  • View frustum visibility testing routines.
  • Vertex helper functions.

Physics Library

  • Rigid body simulation.
  • Collision and response routines.
  • Notification of object interaction.
  • PID motion control.
  • Generic acceleration/deceleration templates.
  • Most basic techniques, such as gravity, etc.

Animation Library

  • Animation controller with track blending support.
  • Support for multiple animation outputs.
  • Custom animation events can be keyed into each animation track and/or the controller itself.

Scripting Language

  • Provides the ability to provide custom AI and game logic through scripts attached to objects in the scene. Can be used to define NPC behaviors, motivations, etc.
  • Orion Script IDE, can be used to create/edit/compile proprietary Orion Engine script files.
  • Generic virtual machine, can be easily embedded into any application.
  • Script compilers for an assembly-like language, and a C-like language.
  • Easily register new functions with the virtual machine at run-time.

Tool Applications

Plug-ins

Platform Specific Drivers/Modules

  • System
    • Win32
    • Win64
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Video
    • Win32 Direct3D 9
    • Win32 OpenGL
    • Win64 Direct3D 12 (T.B.A.)
    • Linux/Unix OpenGL (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Sound
    • Win32 DirectX 9
    • Win64 DirectX 12 (T.B.A.)
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Input
    • Win32 DirectX 9
    • Win64 DirectX 12 (T.B.A.)
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Network
    • Win32 Sockets
    • Win64 Sockets
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)