xis-engine

Most of our games are created with the xis-engine, our own cross-platform C++ game engine.

History

Java

In 2010 we wanted to find out how a game engine could work. Therefore we began to build our own engine, the xis-engine. It was the 3rd term of our Mediatechnology and –Design studies and we had only learned Java so far. Therefore we implemented a small framework in Java and at the same time we created the 2D multiplayer game “Betreten verboten!”.

bada

A new mobile platform bada of Samsung was published. To jump on this new train we decided to implement the next game for the Samsung Wave I. So done. In a team of two we designed and created Bubble Shooter Extended with its legendary gameplay. We took the best techniques from the base java game environment and built the xis-engine for C++ bada.

Cross Platform

The following term we went cross-platform. Now the whole engine is written in C++ and can be compiled for Windows, Mac OSX, Android and iOS. Therefore we have the header file “Platform.h” and for every operating system we’ve a specific cpp-file.

Architecture

The xis-engine has a singleton core, which can be easily accessed everywhere in the code. It is service-based and therefore it is easy to extend. You can also select what to install depending on your use case. At the beginning of the program you just install the services you need and leave out those which are not necessary for your game. You can also write your own services to extend the engine.

Librariesseveral libraries used in the xis-engine

  • OpenGL ES
  • Box2D (Physics Engine)
  • OpenAL (Audio Engine)
  • libpng: We needed this library for decoding PNG image files to draw them as textures in the OpenGL context.
  • zlib: zip library, required for libpng
  • pthread
  • rapidjson
  • rapidxml: A light-weight and fast Open Source library which can interpret XML.
  • spine (for skeleton animation, in development)
  • boost

Services some of the currently available services

  • Animation for sprite animations
  • Audio
  • Box2D as Physics Engine
  • CameraSystem which allows developers to create multiple cameras, views and pages
  • Entity
  • Events
  • GuiSystem
  • Inory: Features for RPGs like inventories, dialogues, ...
  • Logging onto the console or into an HTML file which shows a colourful logfile including possibilities for searching and filtering the content
  • Network Manager

For easy reading and writing data into text files there is a very easy, but also powerful data structure called Model which stores the content in a JSON-like format and makes it easy to load and save content.

We also implemented our own string as we found differences in the platform specific implementations of the String class. We also extended the string functionalities and added also other very useful utility functions for example for mathematical operations.

In this master's project Chris integrated Lua for his universal second screen solution SeccoPlay.

Our Responsibilities

Angelika

  • Entity System incl. Entity Factory
    • unused entities can be reused to avoid lots of memory allocations/ delocations
  • Physics Service: Integration of Box2D library
  • GUI system + reading GUI from Model file
  • Metric tracking system
    • Features defined by game
    • Creation of test sessions
    • In-game questionnaires
  • Several parts of the Windows platform layer
  • Game state management system

Christoph

  • Service-based core system
  • Render system using OpenGL ES
    • two different data structures: a flat list which is sorted depending on an order number and a node based tree to define the transformation hierarchy
  • platform facade and implementation for each platform(iOS, Android, Mac OS X, Windows)
  • Services: AnimationService, ViewManager, CameraSystem, TimerSystem, NetworkManager, AdventureSystem (inventory, dialogues and basic scripting functionalities), Resource System ...
  • Creation of a separate thread for loading resources
  • Integration of libraries
  • Generic binding function system
  • Logging into filterable, well-structured HTML
  • Design decisions and extensions of services
  • Integration of Lua
Project Infos
Type Game Engine
Language C++
Platforms Windows, Mac OS X, Android, iOS

Related ProjectsYou might also be interested in these

GTS - Gameplay Testing Suite

Angelika Bugl, Christoph Lipphart, Web

Game Evaluation Tool

Angelika Bugl, Tool

Lawn Shader

Angelika Bugl, Christoph Lipphart

Website - Zur alten Mühle

Angelika Bugl, Christoph Lipphart, Web