A Whirlwind of Pixels: Crafting Joy in Tooth Fairy’s Tale: The Smile Saviour

Chukwuyenum Opone
7 min readJan 29, 2024

--

Tooth Fairy Logo

Once upon a keyboard, I found myself amidst the symphony of code, pixels, and laughter during the Global Game Jam 2024. The theme, “Make me Laugh,” echoed through the hall as five remarkable comrades and I embarked on a journey to create the whimsical delight known as “Tooth Fairy: Smile Saviour.” In this article, I will be explaining how we worked to achieve success in this jam, detailing techniques, tools, mode of communication, and our synchronised efforts to maximise success.

This wasn’t my first rodeo; my initial dance with game jams was at the Dink’s Game Jam, a rollercoaster of setbacks and lessons.

Team Formation:

Armed with newfound experience and determination, my partner, Cecil Odutola (2nd Jam) (Game Designer), and I are members of the Game Creation Society at Teesside. We meet every Tuesday to discuss and assist each other on projects. So, we teamed up with Saw Hsar Kapaw & Jiaxian Chen (1st Jam) (Game Designer) in the society, and we decided to form a team to participate in the upcoming Global Game Jam. Kapaw also recruited Hannah Appiah (2nd Jam) & Pan Jia Xuan (1st Jam) (Animator/Concept Artist) to join.

L - R : Pan Jia Xuan, Jiaxian Chen, Cecil Odutola, Hannah Appiah, Saw Hsar Kapaw & Chukwuyenum Opone,

While I and Cecil were not entirely Successful in our first jam, we had hannah who had a successful 1st jam. This made the team a bit balanced as we had the Do’s and Don’t based off past experience to achieve a successful jam.

Planning:

On Friday, January 26th, Cain declared the commencement of the jam. Our game’s origin story unfolded over a plate of chicken wings, where ideas collided like pixelated dreams. Tooth Fairy, a 2D pixel art hero in a 3D candy world, emerged as our protagonist. We crafted gameplay loops, donut villains, and toothy villagers — a delightful ensemble. With the challenge set, we delved into the realms of Microsoft 365 Planner, Whiteboard, Discord, and Github.

Opting for Microsoft 365 tools due to free access through our university email addresses, we aimed to learn a new tool alongside popular ones like Trello and Miro. The decision paved the way for us to explore and experiment with different tools and libraries. After the session, we decided to head home, conducting research on various tools, libraries, or anything that could enhance our progress. This served a dual purpose: gaining more knowledge and rejuvenating ourselves for the task ahead the following day.

Tools we agreed to use:
- One Drive: Documents and Assets
- Microsoft 365 Planner: For Kanban management
- Microsoft 365 Whiteboard: Moscow, GD Documentation and Concept Sketches
- Discord: Communication
- Github: Source Control
- Unreal Engine 5.2: Game Engine
- PaperZd: Unreal Engine Library for creating 2D projects

Upon reaching home, I delved into extensive research about PaperZd, aiming to understand and utilize the library since I had no prior experience with it.

Image of An Excuse to show Off my Death Note

D-Day (28th January 2024):

I woke up, had a hot coffee, and headed straight to the Athena Building to kick off the jam. I created the GitHub repository, added Kapaw and Jiaxin, and linked it to Discord using webhooks as we divided ourselves into two teams: programming and art. On the programming team, I was responsible for AI behavior and gameplay programming, Kapaw handled game design, specifically UI, map linking, and menu programming, while Jiaxin took charge of the level blockout and design.

Image of how github commits notifies everybody on the discord
Asset Pack Used for the Level Design by Jiaxin

Kapaw took charge of Microsoft 365 Planner where we all prepared our task on the board and he signed off on it as we completed.

Image of Microsift 365 Planner with Basic Kanban Workflow

The art team collaborated using a whiteboard for documentation and OneDrive for storing created videos, cutScenes, and pixel art assets, placed in the shared OneDrive folder for Kapaw to import into Unreal Engine and craft flipbook animations. I then used these animations to create Animation Source & Animation Blueprints, connecting them to their associated mechanics. Additionally, I implemented notifies to activate and deactivate animations, such as idle, walk, attack, receive damage, and death.

Image of OneDrive Folder

This was a seamless workflow and made us really fast in bringing everything together.

I also worked on the health UI and the tooth counter logic as it was linked to the character parameters, while kapaw worked on the npc counter linked.

Jiaxin was focused on the Level Design he was also assisted by Cecil with feedbacks as he has a lot of experience with blockouts, we decided Jiaxin go wild with it as we needed Cecil to Support with artworks.

Problems We Encountered and How We Overcame Them:

Our journey was not without hiccups. Directionless sprites prompted ingenious solutions, and unity within the team became our armor. Navigating the unknown, we adjusted rotations, fixed map glitches, and adapted like seasoned warriors.

In terms of programming, I encountered a setback that cost around 30 minutes — debugging an attack animation glitch. Surprisingly, the animation was well-written, but the Attack flipbook was not available yet. In my testing, I inadvertently replaced it with the idle flipbook. Fortunately, Kapaw was there to scrutinize and detected the error. Such challenges are not uncommon under the pressure to deliver on time.

The art team encountered a design challenge: sprites were created facing in one direction. To address this, we had to track the direction the player and enemy were facing and flip them accordingly. Kapaw handled this for the character using controllers, while I managed it for the enemy by updating the relative rotation. To avoid conflicts, we established a protocol — no one should modify files someone else is working on without notifying the other person.

Another issue arose with the Enemy AI, which rotated while moving. While acceptable for a 3D skeletal mesh, it posed problems for our 2D paper mesh, as it needed to face the screen consistently. To resolve this, I called the component within the PaperZD class, which is a parent of the Character class containing the character movement component. I disabled the orientation for the yaw, pitch, and roll during the event begin play.

During playtesting by Zach, we identified a map spot where the character could fall off. This was promptly fixed by Jiaxin, ensuring a seamless gaming experience.

How we Unwind:

Amidst the unfolding jam, our team sought solace in Chinese noodles proposed by Kapaw. In the evening, we indulged in free pizzas and drinks, generously provided for all participants. Fueled by the determination to conquer the digital realm, these moments of culinary delight served as a rejuvenating break during our creative endeavors.

Noodles & Pizza

On Sunday morning, January 28, 2024, we unveiled our first build, without the cutscenes and sound. Cecil generously volunteered to lend his voice for the game the previous day. As we awaited the finalisation of videos and sound by the art team, we took the opportunity to tidy up the project, eliminating any unused assets. By 2:30 PM, we had completed this cleanup, and the art team uploaded the cutscenes, sounds, and background images.

Kapaw seamlessly imported these assets into Unreal and replaced the placeholders. With everything in place, we initiated another build and conducted a thorough playtest. The results were unanimous — everyone was pleased with the outcome. The final stretch revealed the fruits of our labor: a playable build, complete with cutscenes and the enchanting voiceovers by Cecil.

This is our project on the Global Game Jam WebSite

GGJ

It is also available on Itch.io

You can watch our Video Gamplay Trailer on Youtube as well

The curtain fell on our game-making odyssey, leaving behind lessons etched in teamwork, leadership, and communication. Personally, I unveiled the power of Microsoft 365 Planner, PaperZD, and the alchemy of setting up Discord servers & integrating Github web-hooks. Our bounty included not just a game but newfound friendships, skills, and a dazzling addition to our portfolios.

Dear reader, thank you for sharing in our tale of pixels, laughter, and game jam coding sessions. Your presence in this digital fable is treasured. Stay tuned for more adventures — the pixels are restless, and our keyboards await the next symphony.🚀✨

Feel free to drop your thoughts or suggestions in the comments below. Let’s stay connected on LinkedIn! Reach out to me on my social media handles @officialyenum. Don’t miss out on the next chapter — subscribe for more thrilling adventures! Your 👏 will be immensely appreciated.

Your time and attention to this tale of game-making adventures are truly cherished. Stay tuned for more block buster capers coming your way! Until then, keep the excitement alive!

--

--

Chukwuyenum Opone

Software and Game Programmer sharing insights on game development, backend architecture, and emerging tech. Follow for coding tips, projects, and inspiration.