top of page

Arjybeasts

A turn based RPG where you create pixel characters called Arjybeasts, whose RGB values determine their power in battle.

Systems Programmer

July 2023 - Ongoing

​

Small Visual Studio Icon, Logo
Small C# Icon, Logo
Small Unity Icon, Logo
Small PlasticSCM Icon, Logo

Responsibilities + Skills Used:

  • Adaptor / Mediator Programming Pattern

  • Frequent usage of Refactoring

  • Storing and Loading player character and data

  • Creating an obfuscation algorithm

  • Kanban methodology

  • Removed technical limitations to allow for Game Feel

Look out for the release on

Steam!

Arjybeasts

Arjybeast Creator

An Arjybeast is an image the player creates, and I was responsible for implementing the 'software' that could be used to draw them.

​

The design was based off of Microsoft Paint (the software was named 'Pant').

I made use of the Mediator design pattern to integrate many different painting functions easily, including:

  • Selecting colors

  • Drawing / Erasing / Fill Tool / Eye dropper

  • Editing the Hue / Saturation / Value of the image

  • Adding colours to your palette

  • Undo function

ezgif-7-52d899a4c7.gif

Each element in the editor communicates with a central Pant Manager 'brain', reqesting it to perform actions like coloring a pixel, adding a color, or setting the currently selected color.

​

The Pant Manager either approves or denies these actions based on the state of certain variables.

 

 

[diagram here]

Arjybeast Creator
Obfuscation Algorithm

Obfuscation Algorithm

We stored the 'Arjybeast' files in the project at the risk of the player easily editing the enemies in the game.

To mitigate this, I created an Obfuscation algorithm to encodes an arjybeast data file into an unreadable string.

​

The goal was to create a string that hides a hidden message to keep in line with the lighthearted tone of the game, rather than something cryptographically secure. 

download (13).png

"Jimmy the Lock"

25x25

Move A, Move B, Move C

 ARJYBEAST YEABB JRAY JSJTE JBJEJ JYBYA JTERS BJEE EBAT EATR RERJS JBSAE YSBYT JJAYA YBERY YRYBA YSBBT JABY JJSE JBTY RBJAT RYJTA RABES RJSJA RRTYT RRYRR EAAT EYJY ESYT SJAR SESE TREY RJRTS RAREA RAEEE RRJAE RRSYR JSBAR...

download (14).png

"Suitcase"

18x18

Move D, Move E

!suitcase!isceu!cessc!ccusc!caiat!ciitt!eiess!aecs!cssis!acuec!usctu!eutuu!esaua!uitac!icuei!ccaeu!aac...

The obfuscation process involves these steps:

​​

Provide data to encrypt, and a key whose characters will be used in the final string, and a separator character.

​

Convert the data into an array of bytes based on UTF32, and XOR each byte with the index in their list.

UTF32 was chosen to handle all possible characters.

XOR was chosen as it's an easily reversible operation and adds an extra layer of obfuscation.

​

Use Szudzik Pairing to combine each pair of numbers into one number.

This pairing algorithm was used to prevent manual decryption. Pairing is a simple equation, but unpairing requires a much longer process.

​

Convert the final numbers to text, using the unique characters from the key as 'digits', and the separator character to separate each 'number'

The key is extracted by finding the text between the first two occurences of the separator character. The characters in the key don't matter, as long as they don't include the separator character.

 

 

​

​

​

​

​

​

​

[diagram here of steps]

FMOD Adaptor Pattern

​[...]

  • X
  • itch_io_logo_icon_145157
  • GitHub
  • LinkedIn

© 2035 by Tripo. Powered and secured by Wix

bottom of page