NeoEngine
From NeoWiki
[edit]
What is NeoEngine?
NeoEngine 2 – Evolution is the second iteration of the game engine created by Reality Rift Studios. It is a modern object-oriended game engine written in C++, featuring all components needed to create a modern 3D game including subsystems for rendering, audio, physics, input, scripting and networking with a platform-independent API.
NeoEngine 2 – Evolution is currently ported to Windows, Linux and MacOS X, and runs on x86, x86–64 and PPC CPUs.
[edit]
Feature list
Platforms
- Windows
- GNU/Linux
- MacOS X
Core subsystem
- Efficient generic containers (array, hashmap, balanced tree, any)
- Manager objects for core platform information and engine subsystems
- Smart pointers and reference counting for shared resources
- Radix sorter
- Platform-independent high-precision timers
- String utility methods
- Base functionality classes (hash, activator, exceptions)
File subsystem
- Platform and byte order independence
- Virtual file system
- Mount directories and packages anywhere in file system
- Package support through codecs (read/write)
- ZIP codec
- Wrapper streams classes for std streams and debuggers
- Network integration for downloadable packages
Image subsystem
- Load/save functionality through codecs
- PNG, JPEG, TGA, DDS codecs
- Image resize and format conversion
- Custom mipmaps
- Compressed formats (DXTn)
- Generic pixelformats
Math subsystem
- Vector, matrix and quaternion classes
- Euler angles and axis-angle legacy support
- Optimized core math routines
Log subsystem
- Generic log stream support through file subsystem ostreams
- Log level, threshold and filtering
Scripting subsystem
- Scripting language Lua
- Most engine resources accessible to scripting
Rendering subsystem
- Generic platform and API independent device
- OpenGL and DirectX device implementations
- Vertex and index buffers with multistream support
- Accelerated storage with read/write buffers in system RAM
- Flexible vertex format
- Vertex and pixel shaders with support for vs1.x, vs2.x, ps1.x, ps2.x, arbvp, arbfp, atifs and nvrc targets
- Trianglelist, trianglestrip, linelist, linestrip, point and pointsprite primitives
- Fixed-function "shading" language
- GLSL, vs3.x, ps3.x support
- Adapter and resolution enumeration
- Technique with multipass rendering, zbuffer modes and blend modes
- Dynamic lights and shadows with integration to shaders
- System shaders and textures
- Occlusion culling
- Curved surfaces (bezier pathces, NURBS)
- Z buffer and stencil buffer support
GUI susbsystem
- Core classes for 2D overlay rendering
- Font rendering and text formatting with support for flow control (right-to-left, bottom-to-top)
- Core widgets, areas, buttons, textfields, static controls, scrollbars
- Complex widgets, listboxes, tree controls, edit boxes, windows
- Z ordering
- Event system, processing, hooks
- Scripting integration
Input susbsystem
- Events for keyboard, mouse, joystick and auxiliary devices
- Device base and implementations for supported APIs and platforms
- Scripting integration
Network susbsystem
- Streams for TCP and UDP sockets
- Scripting integration
Scene susbsystem
- Generic object with SRT data management and generic attributes
- Controller plugin architecture for extending objects
- Hierarchy management through controller
- Geometry for render, collision, occlusion and shadow processing
- Mesh as collection of geometries with LOD management
- Generic scene manager class
- Scene specializations (ABT, BSP, terrain)
- Scripting integration
Animation susbsystem
- Skeletal and vertex animations
- Animation blending
- Scripting integration
Collision susbsystem
- AABB, OBB, sphere and capsule bounding volumes
- Intersection and collision queries
- Ray and sphere-swept volume queries
- Polygon soup queries
- Scripting integration
Physics susbsystem
- Rigid-body simulation
- Stacking and friction model
- Joints and constraints
- Ragdolls
- Scripting integration

