What is Asteria?
Asteria hopes to be a high performance 3D game engine. The three main goals of this project are as follows
- A efficient and high performance system
- A completely open source project under the GPL licence
- Well documented so it is easily understood by anyone who wishes to use it
The project is under active development by Samuel Payson and Akanksha Vyas, members of the Clarkson Open Source Institute.
Progress
Current progress includes the near completion of two core modules
- The Animation Subsystem
- The Resource Manager
The Animation Subsystem
The first component of the animation subsystem parses a md5file that contains a description of an animated mesh. The md5 file format was popularized by the makers the DOOM 3, and the specifications are freely available. The file contains a description of an animated mesh. Files of this format are the output of programs like blender. The parser creates a structure that contains, among other information, the position, orientation and parent of each joint for a list of frames.
The next component actually draws the frame. Before I explain this it would be useful to understand how animation is represented in md5file. The file stores a list of frames at regular intervals in the animation. Using this information, interpolation techniques can be used to calculate the position and orientation of joints when they are between two given frames. Given a time, the function first calculates the two frames that the animation is currently between. With this it interpolates between them to calculate the position and orientation of each joint at that time. After this it iterates through the list of joints in order and modifies them to account for the position and orientation of their parent. At this point it sends this information to a function that draws the animation on the GPU.
The Resource Manager
Games require many different kinds of resources to run. These include images, audio files, 3D models, and many other types of files. The job of the resource manager is to provide easy programatic access to this data, and provide faster access time than simply traversing the filesystem would. The resource manager abstracts away compression and filesystem navigation to allow much wiser use of (system) resources.
License Information
All of the code is being released under the GPL version 3.