
@@CryEngine
<Title CryENGINE>



@@Components of CryEngine
* Main systems in CryEngine *

<TABLE>
System            \Description
----------------  ----------------------------------------------------
Cry3DEngine       Handles loading and rendering of terrain, voxel and
                   static geometries.
CryAction         Provides several game related sub systems,
                   including the animation graph, flow graph and the
                   vehicle systems.
CryAISystem       Handles behaviors and path-finding for AI
                   controlled entities.
CryAnimation      Loads and animates skinned character (CHR) and
                   animated static geometry (CGA).
CryEntitySystem   Handles entity management.
CryFont           Loads unicode true type fonts.
CryInput          Handles keyboard, mouse and joystick events.
CryMovie          Handles cut scene playback.
CryNetwork        Handles client/server network synchronisation.
CryPhysics        Handles dynamic and static collisions.
CryScriptSystem   Exposes Lua scripting language.
CrySoundSystem    Handles sound effects and dynamic music.
CrySystem         Manages initialization/shutdown of the the various
                   CryEngine systems. It includes the console
                   implementation. Also provides memory, pak file and
                   thread management.
</TABLE>

@@Initializing the systems
The easiest way to initialize CryEngine is to use the
IGameStartup interface from the GameDLL.



<b>Top level intialization</b>

Here are the different steps needed to create a new instance
\of a game using CryEngine.



  1. Load the CryGame.dll dynamic library to obtain a pointer
     to the <link IGameStartup::TEntryFunction, CreateGameStartup>
     function
  2. Call the <link IGameStartup::TEntryFunction, CreateGameStartup>
     function to obtain a pointer to the startup class which
     implements the IGameStartup interface
  3. Call the <link IGameStartup::Init@SSystemInitParams &amp;, IGameStartup::Init>
     function to intialize CryEngine and the game implementation
  4. Call the <link IGameStartup::Run@const char *, IGameStartup::Run>
     function to allow the game loop to run until the engine is
     requested to quit
  5. Once the Run function returns, <link IGameStartup::Shutdown>
     should be called and after the CryGame library should be
     freed from memory

* Engine initialization *
The <link IGameStartup::Init@SSystemInitParams &amp;, IGameStartup::Init>
function will initialize both CrySystem and the game
framework (ie: CryAction).



CrySystem will handle the intialization of all the CryEngine
system. The initialization functions of CrySystem aren't
exposed in the interface, but will be called once an System
interface has been created with the function <link CreateSystemInterface@const SSystemInitParams &amp;, CreateSystemInterface>.

@@CryEngine Systems
<Title CryENGINE Systems>
\ \ 

@@CryENGINE Tools
\ \ 
