Page MenuHomePhabricator

Feature Distribution
Updated 2,670 Days AgoPublic

Purpose of Document

The following is taken from Game Engine Architecture by Jason Gregory [AK Peters, Ltd.], page 29. Not all features will be included in the RATs Game Engine.

Our goal here is to a) determine which features to include, b) what components they belong in, and c) when to pursue that feature.

Component Codes [CC] (for table):

  • A: Anari
  • C: Core (manages the other components of the RaTS Game Engine)
  • R: Ratscript
  • T: Trailcrest
  • X: Do not include.
  • ?: Undecided

Descriptions are often omitted until we know what one of these features DOES. (I'm actually reading the book actively.)

Platform Independence Layer

NameCCDescription
Platform Detection?
Atomic Data TypesRThe basic data types. Usually implemented in Ratscript, though it would be logical to use C++'s in some places in the code.
Collections and Iterations?
File System?
Network Transport Layer?
Hi-Res Timer?
Threading LibraryCFor one, this will achieve threading of the three components when the computer in question isn't actually capable of threading.
Graphics Wrappers?
Physics/Collision Wrappers?

Core Systems

NameCCDescription
Module Start-Up & Shut-Down?
Assertions?
Unit Testing?
Memory AllocationRRatscript will handle its own memory allocation.
Math LibraryRRatscript's math library will be used heavily by TC.
Strings and Hashed String IDs?
Debug Printing and Logging?
Localization ServicesTTrailcrest will handle localization via configuration files and Captio.
Movie Player?
ParsersRDuh.
Profiling/Stats Gathering?
Engine Config?
Random Number GeneratorRThis is right up there with the math library.
Curves & Surfaces Library?
RTTI/Reflection & Seralization?
Object Handles/Unique IDs?
Async File I/ORRatscript's file I/O will probably be the best way to go.
Memory Card I/OXNot sure this is needed at all.

Resources (Game Assets)

NameCCDescription
3D Model Resource?
Texture Resource?
Material Resource?
Font Resource?
Skeleton Resource?
Collision Resource?
Physics Parameters?
Game World/Map?
Resource Manager?

Low-Level Renderer

NameCCDescription
Materials & Shaders?
Static & Dynamic Lighting?
Cameras?
Text & Fonts?
Primitive Submission?
Viewports & Virtual Screens?
Texture and Surface Mgmt.?
Debug Drawing?
Graphics Device Interface?

Profiling & Debugging

NameCCDescription
Recording & Playback?
Memory & Performance Stats?
In-Game Menus or Console?

Collision & Physics

NameCCDescription
Forces & Constraints?
Ray/Shape Casting (Queries)?
Rigid Bodies?
Phantoms?
Shapes/Collidables?
Physics/Collision World?

Human Interface Devices (HID)

NameCCDescription
Game-Specific Interface?
Physical Device I/O?

Audio

NameCCDescription
DSP/Effects?
3D Audio Model?
Audio Playback/Management?

Skeletal Animation

NameCCDescription
Animation State Tree & Layers?
Inverse Kinematics (IK)?
Game-Specific Post-Processing?
LERP and Additive Blending?
Animation Playback?
Sub-Skeletal Animation?
Animation Decompression?
Skeletal Mesh Rendering?
Ragdoll Physics?
Hierarchical Object Attachment?

Scene Graph/Culling Optimizations

NameCCDescription
Spatial Subdivision?
Occlusion & PVS?
LOD System?

Visual Effects

NameCCDescription
Light Mapping & Dynamic Shadows?
HDR Lighting?
PRT Lighting, Subsurf, Scatter?
Particle & Decal Systems?
Post Effects?
Environment Mapping?

Front End

NameCCDescription
Heads-Up Display?
Full-Motion Video (FMV)?
In-Game Cinematics (IGC)?
In-Game GUI?
In-Game Menus?
Wrappers/Attract Mode?

Gameplay Foundations

NameCCDescription
High-Level Game Flow System/FSM?
Scripting SystemR
Static World Elements?
Dynamic Game Object Model?
Real-Time Agent-Based Sim?
Event/Messaging System?
World Loading/Streaming?

Game-Specific Subsystems

NameCCDescription
Game-Specific Rendering?
Player Mechanics?
Game Cameras?
AI?
Achievements?
Content?
Last Author
jcmcdonald
Last Edited
Apr 18 2015, 3:26 PM

Event Timeline

jcmcdonald edited the content of this document. (Show Details)
jcmcdonald edited the content of this document. (Show Details)