I Shipped A Game!

Well… sort of?

For years, my wife has been asking me to make a game featuring a chihuahua as a protagonist, who ventures out into the world to hand out invites to a birthday party for their friend. Every time she talks about the game, it balloons in scope, with new characters and sub-levels and game mechanics littered throughout like sprinkles in a funfetti cake.

The past two months, I’ve spent the dwindling hours of ~10:30pm to midnight working quietly on making her chihuahua-filled dreams a reality.

Today is her birthday and today I released the game (to an audience of one)! While I preferred the title “Party Pup”, she insisted on “Chihuahua Pockets” so alas, the latter it is. Perhaps one day I’ll release Chihuahua Pockets out into the wild, but for the time being, it remains the most exclusive and unattainable game on the market.

 

Development Experience

This section dives into the platform, libraries, and art behind the game. For those with no interest in any of the above… sorry? I really am becoming a Canadian at this point, jeez.

Anyways, as you’ll see throughout this section, there were quite a few pieces to this puzzle. One of the biggest challenges in making this game was simply figuring out what I needed. A lot of time was spent familiarizing myself with new tools, libraries, and APIs rather than actually writing code or creating bespoke content. I’ll try to keep things somewhat brief, at the cost of being dry and cutting back on the rambles.

Playdate

From the start of development, I knew I wanted to release Chihuahua Pockets on a physical device. Created by Panic Inc. with some design pointers from Teenage Engineering, Playdate is a retro-inspired handheld with a delightful hand-crank and monochrome display. From a development perspective, Playdate offers three main ways of creating games:

  1. Pulp - A simple web-based “game engine” that uses a high level language called PulpScript for gameplay programming. While it’s a wonderful way for people to get started with game development, more experienced developers will quickly run into limitations with performance, halved screen resolution, debugging tools, etc.

  2. C API - For those looking to dive into the weeds and maximize performance (and development headaches), the C API is a great option. There’s no hand-holding here. That said, having spent far more time in the more object oriented land of C++, I wasn’t ready to risk the time sink of writing everything from the ground up in C.

  3. Lua API - With plenty of experience writing ReaScripts in Lua, I naturally gravitated towards this option as a healthy middleground between the browser-based Pulp and the low-level C API. While memory management facilities and static typing are effectively nonexistent in Lua, it is probably the fastest way to build a high-quality game for the Playdate.

So, after setting up a basic project and opting for the Lua API, I was well on my way to making a game for the Playdate!

Libraries

Out of the box, the Lua API provides classes like graphics, audio, hardware inputs, etc. While that’s all you really need to make a game for the Playdate, there are certainly some nice-to-have features that I didn’t want to pursue writing from scratch for this side project. Some of the third party libraries I relied on include:

  • LDtk Importer - If you’re unfamiliar with LDtk, it’s a level editor made by one of the developers that worked on Dead Cells. It’s hard to describe what a magnificent tool LDtk is, and without both LDtk and the Playdate importer library, this project would not have been possible.

  • Noble Engine - A wonderful little “engine” that provides high level abstractions for scenes, transitions, state management, save data storage/recall, and plenty of other goodies. Don’t be confused though, this engine has nothing like a standalone editor you might expect from more conventional game engines.

  • pdDialogue - A simple dialogue manager with convenient additions like character portraits.


Art

I am an audio person. My visual art skills are relatively nonexistent, so the art for this game was my biggest challenge by far. I’d generally call the art style of Chihuahua Pockets a “kit-bash mish mash”, in that my typical workflow involved purchasing asset packs on itch.io, then modifying them or animating them by hand using either Aseprite or Spritemancer. In no particular order, I’d like to credit and thank the following artists:


Audio

The music for each level was hastily written using a smattering of software synths, a Pocket Operator, and my trusty Moog Matriarch. Minimal editing. No mixing. Mastering? LOL

The sound design was even more nonexistent than my art skills so I don’t want to talk about it lest I bring great shame to my game audio brothers and sisters.

As far as this side project was concerned, audio ended up being near the bottom of my to-do list, as I had a hard enough time figuring out how to load tilemaps and avoid clipping off screen into the pixel-less abyss.

 

Playthrough

For those that made it through the dev section, congrats! Enjoy this playthrough of an incredibly brief, cute, and janky game. You can clearly tell there were some massive corners cut in order to make the hard deadline, but given that it’s at least somewhat playable and silly, I’ll call it a success. At least the critics love it.

Conclusion

Okay so I know the game leaves a lot of room for the imagination. The jungle looks nothing like a jungle and the city is about as engaging and interactive as Reno, Nevada (apologies to any readers with a connection to Reno - no really, I’m sorry for you).

But despite its bountiful flaws, a lot of time and heart went into this dinky little game. I’m proud of it.

Now go out there and make something silly!

Micro Blog Post - DIY Sennheiser AMBEO Cables

Sennheiser AMBEO Mic Wiring Diagram

I was recently asked to make some custom cables for the Sennheiser AMBEO. It uses custom cables with some funky 12-pin Amphenol connectors, namely model T3635 (male) and T3636 (female). After a bit of rummaging, I wasn't able to find an existing pin diagram for wiring, so if it's of use to anyone... here you go! The lettering on those connectors is infinitesimally small.

  Channel     Wire      Pin        Color*    
1 Gnd A Shield
Pos (+) J Yellow
Neg (-) K Green
2 Gnd C Red, Lrg.
Pos (+) B Pink
Neg (-) L Blue, Sm.
3 Gnd F Blue, Lrg.
Pos (+) D Brown
Neg (-) E White
4 Gnd H Black, Lrg.
Pos (+) G Grey
Neg (-) M Red, Sm.
*Color based on stock cables!
Always double-check.

Amphenol T3635 (Male)