As part of a games developer internship opportunity at INFINITY27, I had the chance to design, develop, and implement a spell to feature in their studio title- Samsara. Samsara is a rogue-like action-adventure game based on the Buddhist life theory of Samsara, players are challenged to meditate on their philosophy, life, and actions to navigate their own story. Samsara, in Buddhist ideology, is the cycle and torture of life; determined by one's karma.
These ideologies are built into the very fabric of Samsara; so I needed to ensure that my contribution to their game met the following criteria:
​
- introduced a novel feature or mechanic, not already part of the game
- could be adaptable/ a utility spell
- a stylistic and meaningful spell, inspired by one of the playable characters.
I chose to craft my spell for the character 'Preta' which is the Sanskrit word for 'hungry ghost'. I thoroughly enjoyed researching and learning about Buddhist lore, it made my conceptual ideas very clear and allowed me to express my creative freedom.
Preta's insatiable hunger became the driving force behind my thought process.
a
I
CONCEPTUAL DESIGN:
To begin the development process, I wanted to be confident in knowing the games' current mechanics and spells. During my time at INFINITY27, I used Parsec for remote working, Discord for communications/meetings, Perforce and Unreal Game Sync for version control, and Hansoft to log my progress and document my work. Being agile in my work and thinking was made easier by fortnightly scrum reviews. giving me targets to chase.
While progressing through different levels of fidelity from Alpha, Beta, and Release Testing, I used Miro to lay down my ideas and thought processes:
​
Process Design - The logic flow of my spell 'Preta's Pilum Mantra'
Class Design - An overview of the relationships between classes I was going to use. UML helped communicate my ideas greatly to the other developers
II
IMPLEMENT, TEST, ITERATE:
During the design and conceptual stage, I had created a clear idea of what my spell; 'Preta's Pilum Mantra' could and should be. Each LoF 'level of fidelity' check progressed further towards a game-ready asset that was optimised and polished to playing standard. The first step of this process was to rapidly prototype a blueprint script that established the basic functionality of the spell, without any visual or sound effects; speed was the key.
I originally set out on this internship because I wanted to understand and increase my competency with visual scripting, and to iterate on my ideas with speed. However, due to the nature of my spell, I had to implement novel features from the very outset. This included a custom projectile, due to the nature of the base ACF plug-in projectiles, mine had too many unique features to use it as a base.
By the time I had finished implementing an optimised blueprint, the spell worked as the following:
- Preta summons a ghostly pilum from their hands
- The pilum flies through the air, penetrating and impaling enemies in it's path, keeping a record of them (integer)
- Once landed, the pilum spawns a dormant version of the projectile; equipped with the damage information
- Preta can take the risk to pick up the dormant projectile to heal themselves and satiate their hunger.
III
OPTIMISATION:
In order to make the spell performant, I re-implemented the spells again in C++ code, this is because Unreal Engine processes C++ code much faster than processing blueprints, giving run-time performance benefits. There were several techniques I had never encountered before, such as using casts appropriately and softly referencing classes; which came with learning opportunities of their own. I hadn't used C++ in rapid development before, having the blueprints as a logic map helped development push on at a healthy speed.
This is a code snippet which generates an overlap event.
Similar to the blueprint logic, this function checks whether:
- the pilum has landed
- the overlapping actor is friendly or not
- spawning the heath pick-up
Similar to
Optimisation efforts allowed me to reduce the storage size, which was important as INFINITY27 had a large team and file store, and processing power needed to support the spell during runtime.
>
IV
SHOWCASE:
Here is the technical showcase for the spell I developed during my internship at INFINITY27; following this time, I signed a freelance contract with the company to integrate my spell into their release branch of the game. Preta's Pilum Mantra is designed to reward the player most if they use the mantra during risky situations. The design team particularly liked this idea, as 'stacking hits' is currently a feature not built into it yet. The unique features of this spell are explored in the video below: