Contact us:
Dev@ThePlayChannel.com
P.O. Box 300
The Dalles, OR 97058
United States

Site map:

Game Dev Home
Principia overview
  Components
  Scripting
  Procedural generators
  Technical specs
  Versions roadmap
  Tutorial and demos
  User skills
  Licensing
Services overview
Jobs
ThePlayChannel games

Big news! ThePlayChannel has joined Amity Games and Amity3D to become part of the Western Star Entertainment family. Our game development work will continue under the Amity Games umbrella. Our Principia development platform is now part of the Amity Game Engine (Amity3D), and will be released to the public in June 2016. Please stay tuned!

The Principia Production Platform: Structure and Components

The Principia Production Platform features almost everything you need to produce a release-grade game. It consists of:

Principia Software Components

The Principia components are objects that you define using a simple scripting language, and that you use to assemble your application from top to bottom. There are five major classes of Principia components:

Principia's Application Components are divided in several major groups:

Principia Scripts and Interpreters

A powerful feature of Principia is the ability to use scripting and code in any combination to create the desired application. Scripting is a much more efficient manner to define application components, workflows...etc. that are portable and do not require specialized developer skills. Here is a very simple example, that renders a 3D object with procedural materials:

##define (MTRL_STATUE) as <MATERIAL_3A>
 #tag VShader = ( VS_LAYERED_STONE )
 #tag PShader = ( PS_LAYERED_STONE )
 #tag Material = ( M_EMBEDDEDLIGHT , NONE )
 #tag TX = ( "Files_Media\Ochre_Layers.png" , SLOT_0 )
 #tag TX = ( "Files_Media\Synthetic_Map.png" , SLOT_1 )

##define (GEOM_STATUE) as <VERTEXSET_3A>
 #tag File = "Files_Media\Mesh_Statue.3ds"
 #tag Definer = ( DECL_POS3F )
 #tag Loader = ( PROC_3DSLD_DEMO )

##define (MESH_STATUE) as <MESH_3A>
 #tag Component = ( FRAME_0 , MTRL_STATUE , GEOM_STATUE )

##define (OBJ_STATUE) as <OBJECT_3A>
 #tag Construct = ("Decl(M);Set(tM,0)", MESH_STATUE , ANIM_STATUE)

##define (WORLD_DEMO) as <WORLD_3A>
 #tag Layer_Decl = ( LAYER1 , "Solid Items" , NONE , NONE , 16 )
 #tag Layer_Item = ( LAYER1 , OBJ_STATUE )

##define (VIEWER_DEMO) as <WORLDVIEWER_3A>
 #tag World = ( WORLD_DEMO )
 #tag Camera = ( MAIN_CAMERA )

##define (SCENE_DEMO) as <SCENE_2A>
 #tag Element = ( 0 , 0 , VIEWER_DEMO )

##run (SCENE_MAIN)

The script defines a shader-based material, a geometry, an object, a world and a simple engine for viewing these. If this script is stored in a file named "statue.cfg", the application code consists in a single line:

Principia->Parse("statue.cfg");

Of course, even the simplest game consists in more than this, but the principle remains the same:

For instance, Principia covers about 98% of the total coding effort (TCE) required for simple game such as "BubbleBath II", and about 90% of TCE required for a more complex game such as "Word War III".

Q: You might ask “why not have a more natural scripting language, reading something like - render (head.3ds) with shader (layered_stone.vs) ...etc”?

A: That would be fine if we wanted a fine-arts rendering language. For game development however, we need a much deeper structural resolution into the rendering cascade and its relationship to the game contents. Hence, the scripting language is a bit more complex and hierarchical. But think of the alternative - coding API calls to the graphic subsystem, audio drivers, resource managers...and so on.

Principia Procedures and Utilities

Principia’s procedural software components are divided in several major groups:

To find out how Western Star Entertainment can help you make the most of Principia, please visit our Production Services Overview.