|
- Personal tools
- Navigation
- SEARCH
- TOOLBOX
- LANGUAGES
- Toolbox
|
|
|
Open Source Platform
for interconnected virtual worlds
 |
 |
 |
 |
NG Design Document/Technical Requirements
From Rex community wiki
Cross-platform
- OS: Windows, Linux, and Macintosh
- CPU: Intel Atom, Intel Core+, etc.
- Graphics hardware: OpenGL-ES, OpenGL, Direct3D
- Form-factor: Console, PC, Hand-held
- Input: Mouse/Keyboard, Cell Phone, accelerometer, GPS, haptic devices, etc.
Network
- Firewalls and NAT Traversal
Animations
- Skeletal based animation
- Exporters
- Tweening
- Animation channels
- Blending multiple animations
- Vertex (or mesh) based animation
- Morphing
- Facial animations
- Lipsynch
- Inverse kinematics
- Blending IK & physics based animations with keyframe animations
Artificial Intelligence
- Bot support
- Scriptable behaviour
- Line of Sight check
- Path finding
- State machines
Graphics
Rendering window
- Full screen or windowed display
- Configurable anti-aliasing
- Multiple viewports can be defined, with (at least) following parameters
- Position
- Size
- Priority (draw order)
Scene graph
- The 3D world is represented using a hierarchic scene graph, where each node has (at least) the following properties
- Position
- Orientation
- Scale
- Any number of child nodes
- The scene graph is extensible: new kinds of nodes can be defined. Examples:
- Objects to be rendered (meshes, particle systems)
- Cameras
- Joints of skeletally animated objects
Basic rendering operations
- Static (unchanging) & dynamic (changing) geometry can be rendered as
- Billboard rendering
Cameras
- The 3D world can contain any number of cameras, from whose perspective the world is rendered. They have (at least) the following additional properties
- Aspect ratio
- Field of view
- Near and far clipping distances
- Projection type: normal, orthographic
- A camera can render into a viewport directly on screen, or into a texture
Textures
- Different dimensionalities of textures are supported
- 1D, 2D, 3D textures
- Cube map textures
- Different texture color depth and components are supported
- 16-bit, 32-bit, float
- Alpha channel
- Mipmapping
- Texture filtering modes
- Nearest (no filtering), bilinear, trilinear, anisotropic
- Compressed texture support
- Loading textures from different formats
- JPG, JPEG2000, PNG, BMP, TGA, DDS
- Textures as render targets
- Procedural textures
Materials and shaders
- A material can define (at least)
- Any number of textures
- Vertex and pixel shader programs to used
- Parameters for textures and shader programs
- Blending mode
- How rendering is split up into passes, if required
- Materials can define variations (techniques) of rendering
- Level of detail
- Fallbacks for poorer hardware
- Basic material/shader library should include
- Combinations of diffuse / normal / specular (with fresnel effect adjustment) / luminance / opacity / lightmap / reflection mapping (with fresnel effect and blur adjustments)
- Multitexturing
- Enviroment mapping
- Ramp shader (toon)
- Skin shader
- One- and two-sided rendering
- Scrolling and rotating textures
- Animated texture sequences
- Decals
- Projective texturing (projectors)
- Hardware skinning for animated objects
- Automatic shader combination generation to reduce error-prone manual work?
Object geometry (mesh + skeleton) data
- Vertex coordinates
- Normals
- Tangents for normal mapping
- 0-n sets of texture coordinates
- Skinning weights and indices
- For example up to 4 joints can affect a single vertex
- Vertex morph targets and vertex animation
- LOD levels
- Skeleton hierarchy
- Skeleton basic pose (position, orientation, scale for each joint)
- Skeletal animations
- Keyframe based
- Keyframe contains position, orientation, scale for each animated joint
- Load data from some good fileformat(s)
- Runtime generated & modifiied geometry data
Lighting
- Dynamic per-vertex and per-pixel lighting
- Different light types supported
- Ambient
- Directional
- Point light
- Spot light
- Both diffuse & specular colours can be defined for a light
- Precalculated lighting for static objects (lightmaps)
- Lightmap generation, offline or semi-realtime (radiosity calculations)
- Static and dynamic lighting can be combined
- Fog support
- Linear or exponential
- Start & end distance
- Fog colour
Particle effects
- A particle system can have 0-n particle emitters
- Particle emitters have (at least) following properties
- Point/billboard or object (mesh) particles, with definable material
- Particle size
- Emission rate
- Particle height, width and scale
- Repeat delay
- Direction
- Initial location
- Acceleration
- Time to live
- Rotation rate
- Initial rotation
- Velocity
- Particle material / texture
- Maximum amount of particles active at one time (quota)
- Emission direction and spread
- Different types of emitters
- Primitives (point, circle, line, box, sphere etc.)
- Mesh
- Surface
- Position
- Light
- Slave (of other object or emitter)
- Trail
- Affectors
- Linear force
- Vortex
- Gravity
- Scale
- Sine force
- Randomizer
- Align
- Rotators (texture & geometry)
- Primitive colliders
- Path follower
- Color/alpha over time/over life
- Collision avoidance / inter particle collider
- Lifetime of particles
- Emitters can emit other emitters (and can have different types of triggers)
- Triggers
- Time
- Collision
- Position
- Lifetime
- Count
- Emission
- Quota
- Expire
- Random
- Velocity
- Colour fading in/out effects
- Simple collision of particles with the world
- Any emitter properties should be randomizable and have max/min random values
World rendering
- Skybox, skydome
- Volumes, like water for instance
- Weather effects
- Particle systems that can be attached to camera or an object
- Dynamic enviroment mapping
Post processing & special effects
- Lens flare
- Color correction
- Bloom
- High dynamic range lighting
- Filters: black & white, blur etc.
- Depth of field
- Screen-space ambient occlusion or screen-space global illumination
Culling & spatial division
- View frustum culling
- Possibility to split the world into zones
- Zones can contain different lighting/fog/weather settings for example
- Polygonal portals to connect the zones, used for
- Portal culling
- Mirror rendering
- Antiportals: defined like portals, but cull anything behind them
- Hardware occlusion culling
- Determine through hardware occlusion queries, which objects are obscured
Level of detail
- Draw distance
- Mesh LOD
- Material & lighting LOD
- Animation LOD
- Texture LOD
- Configurable global graphics detail settings
Shadows
- Depth shadow mapping, with per-light configurable parameters, including
- Maximum shadow distance
- Shadow textures' size
- Shadow filtering (PCF for example)
- Cascaded shadow maps for directional lights
- Paraboloid or cube shadow maps for point lights
Physics
- Collision detection
- Collision models for objects (cylinder, box, per-poly)
- Movement modes
- Walking, falling, flying, swimming, gliding, spidering
- Network support
- Projectiles
- Movers
- Base (what object is this object on top of)
- Raycast (from point A to point B, what is the first object that is hit)
- Trigger (when object or player enters or leaves volume, event is triggered)
- Toucher list (which objects are touching me)
- Attach to another object
- Detach from attached object
- Relative location from attached object
- Relative rotation from attached object
- Physical properties
- Mass, friction, gravity, inertia, buoyancy
- Flight model
- Cloth physics
- Soft body physics
- Rag dolls
- Vehicles
- Fluid simulation
Scripting
Based on
- High level programming for object logic. Simple and usable.
- Support time, state, properties and networking
- No pointers
- Automatic garbage collection
- Single inheritance class graph
- Safe execution in a sandbox so you can’t crash client or server with scripting
- Object oriented with basic concepts of class, functions and variables
- Strong type checking preferred
- Loops, conditional statements, structs, arrays
Basic features
- Script is defined per object in the world
- Can be run on both server and client
- Object properties accessible from script
- Subscribing & unsubscribing to world & object events
- Objects can be added and deleted in the world
States (state machines)
- Function overriding. If function is not defined inside the state, then the version of it outside the state is called. If that doesn’t exist, the version of it in the parent class is called. If that doesn’t exist, log error is generated.
- State code with labels. State can contain “state code”, which is executed when the object is in that state. State code can be split into different labels. State code starts executing from Begin label. State code cannot contain new variable definitions.
- Execution can jump to different labels using Goto command inside the state
- Gotostate<statename,labelname> can be used to go to a different state and label.
- Latent functions are functions which take some period of time to be finished before script execution is continued. Only state code can contain latent functions.
- Sleep, MoveToLocation, TurnToDir, FinishAnim
List of events
- Created
- Destroyed
- Tick
- Timer
- Trigger
- Hitwall
- Landed
- VolumeChange
- Touch
- Bump
- Basechange
- Attach
- Detach
- EndedRotation
Other features
- Timers
- Object lists and iterating object lists by different criteria: all objects, touching objects, objects on radius, based objects, objects of class
- Classes and interfaces for handling specific objects like
- HUD (Heads-Up Display), inventory, projectile, static mesh, avatar, avatar controller
Sound
- Supported sound formats
- WAV, MP3, OGG, Dolby digital (AC-3)
- Sampling rate, resolution, file size
- 3D sound (spatialization)
- Sound parameters
- Volume/gain
- Position
- Radius
- Loop
- Duration
- Channels
- Obstruction
- Sound effects
- Network support
- Streaming
- TTS (Text to Speech)
- VOIP (Voice over IP)
Terrain
Basic terrain features
- World can have any number of terrains. (0 – N)
- Terrains can be added and removed from the world
- Terrain has the following properties
- Drawscale
- Number of patches (X & Y)
- Terrain can be edited using a terrain brush
- Terrain brush contains the following properties
- Size
- Radius
- Falloff
- Strength
- Following actions can be applied to the terrain (vertexdata) using terrain brush
- Raise
- Lower
- Smooth
- Flatten
- Visibility
- Noise
- Paint material
- Remove painted material
- Paint deco layer
- Remove deco layer
- Terrain polygon facing direction can be flipped to point down instead of up
- Selected faces on terrain can be deleted or hidden for holes and caves
- Terrain can be modified in real-time by
- Using terrain brush and some action
- Modifying terrain properties
Terrain materials
- Terrain supports unlimited number of material layers
- Material layers can be added and removed from terrain
- Every material is on its own layer
- Material layers form a hierarchy
- Materials can be painted onto the terrain using terrain brush
- If painted material is higher in hierarchy than the material below it, it covers it.
- Material can be removed from the terrain after it has been painted there. After removal the material below it is shown again.
- Material layers can be scaled, panned and rotated.
Deco layers
- Deco layer has the following properties
- 3D model
- Minimum scale
- Maximum scale
- Density
- Slope rotation blend
- Terrain supports unlimited number of deco layers
- Deco layers can be painted onto the terrain which defines when deco layer is used
- Deco layer can be removed from the terrain after it has been painted there
User Interface
- Hardware support for control devices (mouse, keyboard, webcam, microphone)
- User can refedine controls
- Modular and dynamic menu system
- Graphical layout with skin/theme support
- UI creating parameters loaded from server
- Basic UI elements
- Dialog window (with minimize, full screen and close controls)
- Button (with text and/or image)
- Static text
- Checkbox
- Radio button
- Combo box
- Slider
- Text edit box
- Scroll list
- Scroll bar
- Tab
- Embedded UI elements allowed, e.g. text edit box within scroll list or image button within combo box
- Support for localization
|
 |
 |
 |
 |
|