John Sensebe’s Portfolio

A portfolio for John Sensebe, software engineer.

Skylanders: Giants

Platform(s): Nintendo 3DS

Role: Gameplay / Systems Engineer

Engine / Tech: Toys for Bob engine, proprietary scripting tools

Year: 2012


Overview

Skylanders: Giants is a “toys‑to‑life” game where physical figures store character progress and abilities. Players place the toys on a reader (the “portal”), and the game reads the character’s packed data directly from the figure through an RFID chip. Because the 3DS is a portable device, the RFID reader was not connected during gameplay. Instead of keeping the toy on the reader continuously, the player had to visit a designated location in the hub to read and write Skylander data.

Due to system constraints, the engine could only store two Skylanders at a time, and each character’s animations, abilities, and toy metadata consumed a significant portion of available memory. Combined with expanded hat assets and handheld‑specific limitations, memory pressure shaped much of the engineering work on the project.

The 3DS version was a fast‑turnaround adaptation built on Toys for Bob’s engine and an undocumented proprietary scripting system. Most of the team’s work involved rapidly implementing gameplay behaviors using the existing toolset, but several technically challenging tasks required deeper engine understanding. My standout contributions included rewriting RFID logic, expanding memory allocations for hats and character data, implementing new camera modes, supporting localization through font‑atlas updates, and reverse‑engineering the engine to learn how to implement new Skylanders.


My Responsibilities


Technical Highlights

1. RFID Read/Write Code for Packed Data

Skylanders toys store character data on RFID chips in packed formats. The Toys for Bob scripting engine lacked binary and shift operations, which would normally be used to pack and unpack data into bytes. I altered the read/write logic to support new fields in the Skylanders data. This required:

This demanded careful manipulation of data structures and a deep understanding of how the toys encoded information.


2. New Camera System

The original camera code only supported a simple linear follow mode. Designers needed more flexibility, so I implemented:

These additions improved readability, supported level‑specific needs, and expanded the engine’s camera capabilities.


3. Memory Allocation Overhaul

The number of collectible hats nearly doubled for Giants, since it had to include all hats from the previous title for compatibility. The hat‑selection menu had to be broken out into its own “level” (similar to a Unity scene) or the hub would be too large to fit in memory. I modified memory allocations so:

This required “leaching” RAM from other systems and carefully balancing character, UI, and level data.


4. Reverse‑Engineering the Toys for Bob Engine

The scripting system was one of the most unusual parts of the project.

The engine and scripting system had no documentation. To work effectively, I had to learn the system by:

The scripting workflow was unusual: commands were selected from dropdown menus, conceptually like a primitive version of Scratch. Script files were stored in an XML format that directly represented syntax trees, making them extremely difficult for a human to read. Source control was nearly useless. Despite these constraints, I learned the system quickly and used it to support designers and implement required behaviors. I even learned how to trace commands in the XML files in Windows Notepad to track down differences from older versions.


5. Implementing New Skylanders

New Skylanders were implemented by finding the closest matching character from the previous game, cloning its script, and modifying behaviors as needed. This workflow required:

This was the core production methodology for character implementation on the handheld version.


6. Localization & Font Atlas Work

The font atlas used to display Skylander names only supported characters used in the original game. To support localized names for new Skylanders, I coordinated with artists to add new glyphs to the atlas. This required:

This was a small but important cross‑discipline responsibility.


Engineering Challenges

Compressed Schedule

The handheld version had a very short production window. All systems had to be implemented quickly and reliably.

Undocumented Engine

With no documentation for the engine or scripting language, all learning came from reverse‑engineering existing content.

Restrictive Scripting Workflow

The dropdown‑based scripting tool slowed iteration and required a different mental model than text‑based scripting.

Memory Constraints

Expanded hats and new Skylanders pushed the 3DS memory limits, requiring careful restructuring of the hub level.


Collaboration

I worked closely with designers who needed specific camera behaviors and gameplay interactions. I coordinated with artists on font‑atlas updates for localization, and collaborated with QA to ensure stability after modifying core systems like RFID logic and memory allocations.


Outcome

Skylanders: Giants shipped on Nintendo 3DS in 2012. My contributions strengthened the engine’s capabilities, enabled expanded content, supported localization, and ensured compatibility with Skylanders toy data — all under a compressed schedule and within the constraints of an undocumented engine and restrictive scripting environment.



← Back to Projects


© 2026 John Sensebe — Gameplay & Simulation Engineer