The story of Another End centers around the character known as Entity, and the four "Glyphs" he created.

Originally all that existed in the world was Entity. After building the world and a tower to live in, he grew lonely and bored. So, Entity created 4 Glyphs to spread out and help build and maintain the world. He did this by splitting his powers between the Architect, Destroyer, Protector, and Illusionist. However, the Destroyer became dissatisfied with its role, and sparked a conflict which escalated to the Glyphs separating from Entity. The world has since been in a slow decay. In desperation, Entity created You, the Player, to seek out and reconnect the four Glyphs back to Entity.


When you play Another End, you'll never see the same world twice. That extends to the story. There are tons of stories to experience within the world of Another End, you'll just have to keep playing to see them all!


Become fully immersed in the world of Another End with the Oculus Rift VR headset. Feel the world at your fingertips by using your hands to cast out your powers using the Leap Motion controller.



Client Side Developer
Procedural Generation

I love how games push the limits of technology. What are we if we're not always trying to innovate and do something that's never been done?


Art Director
2D Artist
Public Relations

Art. Photography. Gaming. Sports. Portuguese. Go Habs Go. Straight to the point.


Server Side Developer
Procedural Generation

I'm a procedural generation nerd, who loves Javascript. Dream Job Title: Code Artist. Things I enjoy: playing games, making games, cats, tea and poutine.


3D Artist
Story Writer

Besides school I spend my time keeping active. From snowboarding to rowing I'm always on the go. After graduation I hope to enter the film production industry.


2D & 3D Artist
Story Writer

I enjoy being outside biking or swimming (in a heated pool), or inside snuggled under a blanket watching movies & playing "Don't Starve". This sounds a lot like a dating profile. Awkward.



When we came up with the idea for Another End, there were two main questions we wanted to answer:

  1. Is it possible to create a compelling, dynamic story that would be unique for every player?
  2. Can the browser handle an immersive, 3D experience, using new input technologies?

From these questions, we decided to create what became Another End:

"A procedurally-generated story-driven adventure game for the web browser using the Leap motion and Oculus Rift VR."


Another End is written 100% in Javascript. The game is played in the browser, and makes use of the Three.js WebGL library. A custom game engine was written to support user interaction.

Another End features a procedurally generated world AND story. In order to achieve this in the browser, we chose to offload the computationally heavy generation to a web-server and database combination.

The server runs Node.js, and uses the library to manage communication between the client instance and the game server. Objects and story nodes are stored in an ElasticSearch database.


Much of the environmental generation is accomplished through compositing a variety of noise maps. For example, the terrain is 100% procedural, using a combination of algorithms and noise maps to determine the heights of each vertex. The actual mesh object for the terrain is created by the server, and loaded by the client.

Objects are pre-modelled, and placed procedurally by the game generator. Object information is stored in the database. This information is used to place objects appropriately in the game. For example, in an area with a very low temperature, plants and trees cannot be generated. Objects can be modified in some ways when being generated, such as changing its scale or rotation. Some types of objects, mainly "Trees", consist of multiple pre-modelled pieces which are assembled procedurally by the game.

The colour palettes used in the world are also pre-defined, and placed procedurally. When an object is generated, the game will determine which colour palette corresponds to the position it has been generated, and will apply the appropriate colours.

Object meshes are never loaded or sent directly from the server. Instead, one of the data pieces stored in the database is the client's local URL to the asset file corresponding to that object. This file is then loaded by the client, and coloured with the colours sent by the server with the object information.


One of the goals of the project was to try and create a dynamic story, unique to every player, which was also compelling to the player. As the project developed, it became clear that a 100% unique story was not possible for every player within the timeframe available. Therefore, a compromise was found: Create a rich and well-defined "Story World", and procedurally generate what happens within this world.

To accomplish this, the characters in the game, and the world's "backstory" were written. A single, overarching story arc was written for the world, with procedural events filling in the details of that story. As such, even though the major arc will be the same for every player, their experience of that story, and its ultimate resolution, will be determined by their actions while playing.

Story generation is surprisingly similar to the environment generation described in the above section, with one key difference. The environment is generated as the player moves around. The story, however, is generated more intelligently, based on player activity and engagement with the game. The goal is to always provide the player with enough to do, but not to overwhelm them with activities. When the server has determined that a node should be generated, it is selected from the database in a manner very similar to object generation. Nodes are then assigned to locations, characters, and objects as applicable. A variety of actions and results have been added to the story node system, and can be combined in a variety of ways to produce unique story events.


There are 5 major characters within the game: Entity, and his 4 Glyph Creations.


Entity is the initial creator of the world and the Glyphs. It created the glyphs to work together and bring harmony to the world. Entity is very powerful and feels it is an all knowing being.


The destroyer has been mistaken for a villain in the world. As the cause of the deterioration of the world, he feels guilty for doing only what he knows, destruction. The destroyer is hot-headed, arrogant and stubborn on the surface. Underneath it only wishes to contribute to the world and will co-operate as long as this wish is fulfilled.


The Protector is a wise, poetic, and soothing individual. Their main concern is protecting and preserving the world. The Protector will avoid change at all cost. It will protect even destroyed objects, as it believes that preservation is the best way of finding harmony.


The Illusionist is an energetic and sarcastic character. It tends to only cares about themself and does not care about making the world better. The Illusionist is known for being manipulative, causing trouble and wanting to see others fail.


Twitchy, intense, and a bit strange but very intelligent. The architect is a being of creation, it wishes to bring innovation and creativity into the world by building all types of objects and organisms.



Another End is a procedurally generated, story driven adventure game made for the web browser using Oculus Rift VR and Leap Motion or mouse and keyboard.

The world of Another End has five major non-player characters: Entity, the all powerful master of the world, and the four glyphs, who are trying to overthrow Entity and achieve dominance for themselves.

Another End is ultimately an exploration game that lets players create and explore the relationships between the Glyphs and Entity. The player can unlock powers from each character which can be used to affect the environment and the characters within it. Powers have a range of effects, from destroying objects to teleporting the player.

The focus of Another End's development has been the creation of the procedural generation systems. Both the world and the story are procedurally generated in the game. For the environment, the terrain is completely procedural, with a dynamically created mesh. Objects and colour palettes are pre-defined, and procedurally placed throughout the world. Certain objects, such as trees, are assembled dynamically by the game. The goal is to create a distinctly unique world for each player.

The uniqueness of the world will extend to the story. Each player will experience the same major arc, discovering the characters and unlocking their powers. However, the intervening events are procedurally linked, based on the state of the world.

Another End aims to create a dynamic, character driven world that players feel compelled to explore.