What are you looking for?
Case studies
How Subcult Joint managed 2,000+ Sprite Sheets and 10,000+ 2D Lights in Cookie Cutter
Feb 22, 2024|11:0 Min
Cookie Cutter by Subcult Joint – Key Art featuring Cherry

Learn about their 2D tools, plus the last-phase Unity LTS version upgrade that unlocked new possibilities for this mold-breaking beat-em-up.

The challenge:
Optimizing high-resolution assets and lighting for performance on multiple platforms
Project staff:
15
Platforms:
PC, PlayStation®5, Xbox Series X|S
Location:
Brighton, U.K.

How does a small team showcase hand-drawn animation in its best light across platforms? Subcult Joint spent six years working on Cookie Cutter, which includes thousands of high-resolution assets made using traditional animation techniques and optimized in Unity. The studio needed to balance crisp visuals with snappy gameplay, and they used 2D Lights extensively to add depth to their graphics and exploration-focused game design.

Read on to learn how they achieved this vision – and the last-minute surprise change that unlocked faster asset management capabilities and helped them take their lighting setup to the next level.

Cherry disemboweling a robotic enemy
Cookie Cutter by Subcult Joint

Artist, animator, Unity Learn educator, and Subcult Joint founder Stefano Guglielmana began working on Cookie Cutter in 2018. He was inspired by a rejected character from a previous Unity project: Cherry, a tough-talking android. “I was in love with her design, so I started creating animations for her,” he says. Stefano had a clear vision for Cookie Cutter’s beat-em-up Metroidvania gameplay but needed support from a developer to make it happen. After securing funding, he hired programmer Francesco Bizzini and a roster of artists and designers to collaborate on the project.

The results:

• Sold 60,000 copies and generated $1,200,000 within a month of launch

• Easily managed 2,000+ Sprite Sheets and 50+ Sprite Atlases

• Lit up the game with over 10,000 2D Lights

• Successfully upgraded to Unity 2022 LTS mid-project

Packaging the content

Cookie Cutter’s hand-drawn visuals are a major selling point. Stefano knew they’d be complicated to create, but that extra effort would be worth the payoff. “Eye candy is what makes us fall in love with video games,” he says. “At Subcult Joint, we admire the masters at Studio Ghibli and Disney. We’re not at that level, but with Cookie Cutter, we wanted to push our animation skills and make a really cool game.”

This project is extremely ambitious for a small team. The majority of art assets (over 1,000 backgrounds, Sprites, animations, and particle effects) are visually complex and painstakingly created using traditional animation techniques. Between the player character (Cherry) and NPCs (27 standard enemy types and five gigantic bosses), each character in Cookie Cutter has 20–40 animations. Each of these individual animations can take anywhere from eight to 48 hours to complete. Different artists relied on a few different DCCs, but Stefano created most of the assets in Adobe Photoshop.

Once Stefano finished an illustration, he used the PSD Importer to convert it into an 8K texture before optimizing it in-Editor to prevent video memory overflow issues. Smart use of texture import settings helped to reduce texture size per-platform, and following best practices like the power of two achieved further optimizations.

Cookie Cutter animations open in the Unity Editor
An in-Editor look at Cherry’s various animation states. Subcult Joint spent a lot of time working on animation transitions to ensure smooth gameplay.

“After I finished my work in Photoshop, I manually created my Sprite sheets by placing the animation cells one by one into a new file, always in a multiple of 512 x 512, following the power of two rule in Unity,” says Stefano. “From there, Unity’s Sprite Sheet Editor made it easy to slice the sheet or perform other tricks by moving the pivot or the sheet pixel per frame.” These workflows ensured that Cookie Cutter’s visuals were optimized across platforms with minimal performance issues.

By the end of the project, Subcult Joint had packed more than 2,000 Sprite Sheets into 50+ Sprite Atlases, organizing them by character. “Sprite Atlases made it super easy to export the game to the different target consoles while maintaining a solid frame rate,” says Stefano. “We’re pretty much focused on smashing 60 fps to keep the gameplay and overall performance smooth as butter. This really optimized memory use in an amazing way and made loading times even faster.”

Cherry knocks over an enemy with her motorbike attack
Cookie Cutter by Subcult Joint

Customizing gameplay

Stefano wanted to avoid common pitfalls he’s seen other animation-focused games fall into. “Games with a lot of animations can be clunky. Sometimes the animator wants to flex, and it ends up punishing the gameplay,” he explains. “With Cookie Cutter, we were equally attentive to the gameplay, so the game feels as smooth as the animations when you have the controller in your hands.”

With this in mind, he needed a way to work in the Editor and tweak gameplay quickly, without risk of breaking the project. This led to what Francesco calls one of the biggest technical hurdles on the programming side: Building a flexible system in Unity that works with poor code intervention.

“My goal was to give the designers a way to customize any aspect of the game directly from the Editor,” he says. With Unity’s built-in extensibility, Francesco was able to add his own customizations to bridge the knowledge gap between himself and less-technical artists on the team.

Cherry's combat abilities
Cookie Cutter by Subcult Joint

To enable punchy gameplay and brutal action combos, Francesco implemented third-party visual tool ActionGraph to modularly craft and structure finite state machines in Unity. When an animation’s Sprites are loaded, ActionGraph makes it possible to add gameplay logic to each frame, enabling artists to tweak settings like colliders or damage numbers on the fly. For example, Stefano can use ActionGraph to add a hitbox to an attack and set it to be active on specific frames, enable and disable jump counters, trigger combat resource generation and spend, and so on – without involving a programmer.

Francesco also programmed a number of his own Editor customizations to allow more of Subcult Joint’s artist-centric team to contribute to the project. Based on the xNode visualization system, UpWire enables artists to easily manage both human and AI inputs, edit colliders, add visual effects to specific animation nodes, and more.

Upwire for managing inputs, colliders, and VFX
Cookie Cutter’s Graph Combo System – from here, Subcult Joint can customize hitboxes and parameters to create attacks that chain together, add visual effects like camera shaking, and adjust how enemies respond to attacks.

“I built it to be a true combat editor,” he explains. “It handles all game variables, so specific moves can only be executed if the player has unlocked that ability, weapon, or upgrade, and is in the right position – air attacks versus ground attacks, for example.” UpWire also handles settings like physics force, position translation, and body rotation, so artists can experiment with combat mechanics more easily.

Boss Sprite Sheet from Cookie Cutter
The Graph Combo for a boss fight. Here, Subcult Joint can adjust factors like attack hitboxes’ force, direction, and repulsion values, or customize how the boss responds to attacks from Cherry’s different weapon types.

Timeline EZ Events, another of Francesco’s custom tools, allows designers to send messages and call functions directly in-Editor with almost no limits on parameters, including Scene Objects, and add multiple functionalities to a GameObject. For example, the team can create a lever that unlocks a door when pulled while simultaneously hiding a “locked door” marker on the map and minimap.

Timeline EZ Events
Subcult Joint used Timeline EZ Events to create Cookie Cutter’s cutscenes. This tool allows them to create cinematic moments by sequencing character animations, camera movement, audio, and visual effects.

To help designers work on Cookie Cutter’s minimap – a crucial thing to get right in any exploration-focused game – Francesco built EzMiniMapPro. “This is used for creating maps for game areas and has some useful customizations and optimizations for the image generation,” says Francesco. “At runtime, it supports animated overlay markers and automatic exploration masks based on what the camera sees. The mask can be written and restored through SaveGame.”

Creating and implementing these customizations took work, but it unlocked creative freedom across the team, giving everyone at Subcult Joint a seat at the table on Cookie Cutter’s design, mechanics, and gameplay balance.

EzMinimapPro
With EzMiniMapPro, Subcult Joint could capture the entire map they’d built in the Editor and export the image to Photoshop. From there, Stefano could paint on top of the generated map to match the game’s visual style before importing it back into Unity.

Designing the world

Cookie Cutter’s huge world, the Megastructure, features nine areas to explore. Once concept art for an area was finalized, Subcult Joint’s level designer, Gabriel Raymond Roy, would grey-box each area to create a labyrinth for players to uncover.

“A good level designer knows how to create primary and secondary paths that are entertaining to explore and also to retrace,” says Stefano. “Each dead end should have some kind of reward for the player, and every open area should have enemy encounters so players can farm materials.”

Once an area was grey-boxed, Stefano and the designers dressed the scene with environmental details, arranging the hand-drawn Sprites in layers across four points on the Z-axis. Cookie Cutter uses a perspective camera view with no coded parallax, so when the player moves, they can see “misplaced” elements in perspective. Cherry stands on the “default” point alongside interactable GameObjects like enemies, items, and platforms, while noninteractive foreground, background, and “faraway” elements add simulated depth to the Scene view.

Lighting up the Megastructure

“We tried to give each area a unique personality, though with the cyberpunk setting and our love of hangers and metal factories, I’m not sure how successful we were,” jokes Stefano.

To give each zone its own visual flavor, Subcult Joint made heavy use of Spot and Freeform 2D Lights in URP. Cookie Cutter’s world is lit up by more than 10,000 of them. “Every light in the game illuminates our Sprites in real-time, creating a feeling of density and cohesion between characters, animations, and the environments,” says Stefano. “In dark places, characters are shaded, and bathed in light when they’re exposed to the saturated, contaminated skylights in exterior areas. I love these details so much!”

Cookie Cutter's expansive world, the Megastructure
Cookie Cutter by Subcult Joint

Subcult Joint used Unity’s 2D Lights out of the box, without special management, applying them across the same Z-axis layers as the environmental Sprites. “Default 2D Lights are amazing at illuminating your gameplay area, and it’s great being able to decide which layers they can affect,” explains Stefano. “We wanted the default layer to always be clear for the player, so they had an understanding of where they can walk and where not. Then we added lights to the background, foreground, and faraway layers.”

Cookie Cutter’s eye-catching 2D lighting plays an important role in the overall game design. As a Metroidvania, it’s an exploration-focused title. Lighting is used to provide environmental cues for the player. “Lighting tells a story – it shows the player where to go, driving them into the main path, or hiding secondary optional paths,” explains Stefano.

Flickering lights are used to draw the player’s eye. Stefano shares how he created this effect: “The beautiful thing about the 2D Lights is that you can animate them,” he says. “Creating flickering lights is super simple: You select the light, go to the Animation Window, create another Animation, and play with the intensity – 0, 9, 0, 9 – and copy that animation onto other lights if you want to create the same effect elsewhere.”

Unlocking bonus benefits with a last-minute version upgrade

Near the end of Cookie Cutter’s development, video memory overflow issues became a blocker for the PlayStation 5 build. Subcult Joint realized they had to upgrade their Unity version to fix the problem.

Doing this so close to launch wasn’t ideal, but not reaching PlayStation’s massive audience wasn’t an option – so they rolled up their sleeves and got to work moving the project to 2022 LTS. This long-term support version gave them access to new profiling and debugging tools like the updated Memory Profiler.

“The new snapshot comparison feature in the Memory Profiler helped us to identify and resolve the lingering video memory overflow issues,” says Francesco. “2022 LTS is also faster for importing textures, and upgrading made our game much more stable in the end.”

Cherry regenerating HP using her Void powers
Cookie Cutter by Subcult Joint

As it turned out, moving to the latest Unity version allowed them to add a final layer of visual polish to Cookie Cutter that wouldn’t have been possible otherwise, since they now had access to the production-ready 2D Lights system. This meant individually reviewing and fixing the game’s thousands of previously experimental 2D lights based on the new parameters – a process that, fortunately, was made faster with new features.

With 2022 LTS’s updated Sprite Atlases, Subcult Joint could push hundreds of hand-drawn animations to different target platforms more easily and more efficiently. And the full-release version of the URP’s 2D Lights helped add even greater depth and mood to the environments.

“We used the new 2D Light Explorer to select each light and make adjustments manually,” explains Stefano. “We’d mostly been using Spot and Freeform lights, and 2022 LTS actually had an updated falloff feature for Freeform lights that was much better-looking than the old one. It was a lot of work, but we were able to fix outlying issues and improve the game even further.”

Subcult Joint’s debut game Cookie Cutter is an example of the magic that happens when artists and programmers can work in lockstep. This small team created a visually ambitious and successful Metroidvania game that sold more than 60,000 copies in its first month, and they were able to stick to their original vision without compromising on graphics or gameplay.

Upgrading to 2022 LTS not only helped Subcult Joint resolve lingering technical challenges; it allowed them to maximize Cookie Cutter’s platform reach and elevate the game to its full potential.

Cherry from Cookie Cutter riding her motorcycle
Cookie Cutter by Subcult Joint

Fuel your ambitions with Unity 2022 LTS

Built through years of feedback and user testing, Unity 2022 LTS delivers stable new features and enhancements so you can create with confidence using the latest technology. Optimize your game for the latest platforms and deliver high-quality visuals that scale across devices.