Chaos God

About the game

The game ‚Chaos God‘ was born during my first Global Game Jam. The goal of the game was to bring as much harm as possible to the world. The player got to the god of chaos. This god could perform various rituals in order to spread chaos in the world. Our team choosed a 2.5D look which was strongly inspired by the survival game ‚Don’t Starve‘. The project was realised in the Unity3D engine.

My tasks

Beside game design my tasks included to implement the logical representation and execution of the available rituals as well as their presentation in an user interface. I did not have any experiences in the area of user interfaces and therefore selected these tasks on purpose.

The rituals could be performed by combining three different items out of the players inventory. I decided to use a XML document to represent the rituals. Using a XML document should make it easier to add rituals to the game while providing a good overview over their structure.

Ritual XML Document
Chaos God – Ritual XML Document

After the game was started all rituals were loaded from the XML document, saved and processed in order for the player to use them while playing.

Show code
private void LoadRituals(){
   XmlDocument xmlDoc = new XmlDocument();
   xmlDoc.LoadXml(GameAsset.text);
   XmlNodeList ritualsList = xmlDoc.GetElementsByTagName("Ritual");    foreach (XmlNode ritualInfo in ritualsList){
      XmlNodeList ritualcontent = ritualInfo.ChildNodes;
      obj = new Dictionary();
      foreach (XmlNode ritualItems in ritualcontent){
         if (ritualItems.Name == "name"){
            obj.Add("name", ritualItems.InnerText);
         }
         if (ritualItems.Name == "object"){
            switch (ritualItems.Attributes["name"].Value){
               case "Item1": obj.Add("Item1", ritualItems.InnerText); 
               break;
               ...
            }
         }
      }
      rituals.Add(obj);
   }
}



Another task of mine was to make sure that objects reacted to casted rituals. I created scripts which could be applied easily to an object. Within these scripts the needed behaviour had to be implemented via code. Our team decided to use sprite swapping in most cases.

The next task of mine was to create a user interface where the player could easily access and cast the different rituals. I decided to display the individual objects in a grid, as this was a typical representation of inventories in rollplaying games.

Inventory
Chaos God – Inventory

When selecting an item, its image and description were displayed in an additional information window. Using an item made it appear in the ritual circle on front of the player character.

Casting a Ritual
Chaos God – Casting a Ritual

In retrospect

In retrospect, I would implement my duties differently. The usage of an XML document and the associated effort to read this document could easily be circumvented by implementing it as a class or struct. My argument was that rituals could be added and be displayed in a simple way. In such a small game an approach like that was not necessary and a waste of time.

In addition, I would implement the user interface in different way. I would no longer manually create and place each item in the inventory but create them at runtime and then position them using vertical and horizontal layout groups. And finally, I would no longer work with string comparisons. These are costly and can have a negative impact on the performance of the game when used heavily.

Ultimately, I can say that this weekend was a lot of fun. Everyone shared my enthusiasm for games and their development. We helped each other and talked shop together. I hope to later work in an company with the same kind of atmosphere.

Diese Diashow benötigt JavaScript.