top of page
UniwizardryMain.png

About Uniwizardry

Platform: Windows Desktop

Project Duration: 2 Months

Project Type: University/ Solo

Engine: GameMaker

Team Size: 1

My Tasks

GameMaker was my introduction to game engines and writing code. During this project, I learned about finite state machines, animations, coding conventions, programming patterns, and many more things. For this solo project, my tasks consisted of designing the game, taking care of writing its logic and creating visuals.

The Game

I concepted Uniwizardry around requirements given to us by lecturers for this project. The experience was supposed to help future students of Hanze UAS, with difficulties of integrating and finding connections in a new and possibly unknown environment. Additionally, the game was to implement intercultural competencies into its design. In hindsight, the final product was a good attempt at fulfilling those requirements at most, being childish in its narrative and scraping only the surface of why difficulties and conflict may arise. The mechanics barely supported the message if the message was clear at all. However, I look back at it with pleasure! It was the first proper "game" I created with a start, middle, and finish and the production as well as retrospective taught me a lot.

Feature Example

This code snippet shows the Strolling behaviour for an enemy called "Runner". During development, I was very interested in getting more natural movement behaviour from the enemies and came across Perlin Noise. I got the Perlin Noise function for GameMaker from a public GitHub repository and used it to create my own movement behaviour.

function scr_RunnerStrolling()
{

//Caclulate Perlin Noise values
strollingX = scr_PerlinNoise(xRandom, 100.213, 480.2311);
xRandom += inc;
strollingY = scr_PerlinNoise(243.8585, yRandom, 321.261);
yRandom += inc;

//Move direction
if (place_free(x + strollingX, y))
       {
           x += strollingX;
       }
if (place_free(x, y + strollingY))
       {    
           y += strollingY;
       }

//State change logic
counter += 1;
if (counter >= room_speed * 3)
   {
       runnerState = RunnerStates.idle;
   }
   
if (collision_circle(x, y, 256, obj_Player, false, false))
   {
       runnerState = RunnerStates.hunting;
   }

}

Edgar Alexander Knauer

©2022 von Edgar Alexander Knauer. Erstellt mit Wix.com

bottom of page