Iktsua

Iktsua is an open-world survival developed by a small group of friends in June of 2014 for an indie game jam competition. It was released May 1st, 2014 on 64digits, Gamejolt, and Itch.io. (Gamejolt page)

In this game, you play the role of a young hunter in the arctic tundra. Players must explore, hunt, eat, and survive the cold as you traverse the map to find and defeat three great beasts. My involvment in this game included some programming and writing the soundtrack. Don't mind the lack of polish on this game as it's mainly due to development only lasting about a month. Voting for the game contest opened May 8th, and Iktsua ended up winning first place. Development on the game continued for a short time after that before being abandonded.

Music

The biome system

As for the programming, I implemented implementing the biome and procedural generation systems which would procedurally generate the exploration area for each playthrough. How does a game set in the arctic have biomes? Well, we used the term "biome" loosely. There are eight different "biome" types, blizzard, deep snow, frozen lake/river, glacier, rocky, sea, tundra, and village. The system worked by assigning a hexagonal grid of nodes to the exploration area. Each node is randomly assigned a biome type using a random graph coloring method so no two neighbors are of the same biome type. The biome types determine which types of objects and enemies to populate the area. The object and enemy types can be weighted for each biome type to allow certain objects or enemies to appear more frequently than others, and the biome types are also weighted to adjust the balance of each biome type in the world.

Once the biomes were setup, a fixed amount of random objects would be generated around the map. The position of these objects were determined first through random selection of the world coordinates. Certain areas of the map were blacklisted for predefined game objects and areas. Once a position was selected, the type of object would be chosen based from the set of objects available to the three nearest biome nodes. Of the available object types, the object type to be selected would be based on the distance to the biome node and the weight of the object type within that biome.

The same logic would be applied to the generated enemies. The world still felt a little too evenly distributed, so to keep it interesting, we decided to try to have objects more localized in random areas. To do this, prior to the random placement of objects and enemies, a random set of positions would be generated that would act like gravity wells. Whenever a random position was selected for an object or enemy, it would be nudged towards each gravitational point based on its distance to that point.