Strattica is a general purpose, high-performance 3D game engine designed
to facilitate the development of real-time or turn-based geographic strategy
games. Games that fall into this category include Civilization,
Populous,
Master
of Magic, Alpha Centauri, and many others.
Here are some features of the game engine:
-
Convenient asset management. "Assets" are resources such as artwork and
sound, as well as executable scripts. The Strattica engine uses ordinary
zip files as the resource file format. Strattica will include a
"standard" zip file containing a comprehensive set of generic assets for
various types of terrain and units.
Like Java, Strattica supports the concept of a "classpath" (or in this
case, an "asset path") consisting of a list of places to find assets. Each
element of the path can be either a zipfile or a directory. Replacement
of individual art or sound files can easily be done by simply placing the
artist's working directory first in the asset path. When the artist wishes
to distribute their work, they need merely to zip up the contents of the
directory and make it available for download.
The code which reads assets from zip files is implemented as a seperate
library (libasset) which can be incorporated into other games.
-
Scriptability. Strattica will incorporate a high-performance scripting
language (probably Java using JNI; Performance tests show that Java is
3 times as fast as python, and 9 times as fast as perl, except in the case
of object allocation where Java is the slowest. I assume that in the case
of Strattica, object allocation will be rare.
-
Strattica will be rendered in a 3D overhead perspective similar to isometric
tiles but using true perspective. Unlike tile-based systems, buildings
do not need to all be aligned to the same axis. Because z-buffering is
used, buildings can penetrate the terrain. Strattica currently uses Mesa3D,
although may at a later time incorporate drivers for particular hardware
cards. The game requires hardware acceleration of some form, as I am not
going to attempt to make the game run at a reasonable speed under software-only
rendering. (Also, the game requires alpha blending in many places.) Instead,
software-only rendering will be used primarily for debugging.
-
Strattica will include an example game "Kingdoms of Darkness and Light"
which is an original design by Talin. It is a game where the character
of the lanscape changes based on what types of creatures are living there
(inspired by numerous fantasy novels.)
-
The Strattica code-based has been designed with simplicity and high performance
in mind. Although written in C++, it avoids many C++ features (templates,
operator overloading, and STL are almost never used). It uses solid, sensible
coding techniques that anybody can understand rather than adhering to the
latest fads. The number of libraries upon which the code depends has been
kept to a minimum. The graphical user interface components have been deliberately
coded in a style which is somewhat archaic because that style has been
shown to be very adaptable and flexible.
-
Strattica includes a sophisticated, seed-based random terrain generator.
Terrain maps can also be stored in a resource file. The engine will allow
dynamic modification of terrain during game play.
-
Strattica supports several different kinds of objects in the world: Mesh-based
objects and animated sprites. The Mesh objects are defined using a subset
of VRML (The Indexed Face Set primitive is supported, along with a few
others). Sprites will probably be PNG files, with multiple images, and
the embedded PMG comment feature will be used to store the animation meta-data
(such as frame origins and timing info.)
Return to Talin's project page.
Return to Talin's home page.