Hari's Portfolio   |   Procedural Spell System

Project Overview

This is a spell generation framework which consists of modular components, derived from various aspects and behaviours of abilities observed in gaming, with which abilities/spells can now be generated procedurally or manually in game. The goal is to create a flexible and expandable system which can generate a vast amount of spells users may come up with, which makes this project extremely complex, high-scoped, and challenging. Each generated ability is defined by a recipe containing its spell type, element, movement, targetting, modifiers, and other properties. To ensure the framework doesn't produce spells whose components conflict or contradict each other, the spells are generated based on various compatibility rules that determine how different components combine with eachother.
This project also includes a spell builder system where users can build various spells, store them in different loadouts, and swap between them. This can be used as a tool for developers to prototype new spells, and also as act a fun in-game feature for players which lets them customize their own spells. Addtionally, the spell builder also comes with a spell upgrade system where players can upgrade different aspects that may change based on a given spell's properties.

Unity C# UI PCG Design
Responsibilities
Technical Design, Gameplay Programming, UI Programming, Tool Development
Development Time
11 Weeks
Grade
Merit

Systems and Features

What I Learnt

The initial challenges were about understanding how to classify various aspects of abilities seen in gaming into separate categories, understand what makes an ability feel unique or meangingful to players, and how to design a framework that provides a modular structure for the code. This whole process was especially hard because there aren't any well-established methodologies that breakdown all aspects of an ability into defined categories, and such resources are often underexplored or inaccesible due to games being proprietary. To build this framework, I had to research, playtest various games, evaluate my framework in iterations, and revise it to accommodate new mandatory changes made when coding it in Unity. This process gave me a lot of experience in approaching the design of large and complex systems. I've also gained experience in writing modular code as this project involves many distinct behaviours of an ability that need to work together such as its motion pathing, activation modes, positioning anchors, modifiers, targetting, collision detection methods, and etc. Additionally, making the spell builder UI using Unity's UI Toolkit also required a good amount of exploration in UI programming.

Future Work