All Dev Logs

LoneStar

A 2D Wild West cowboy platformer for the Playdate

About the Project

LoneStar is a 2D Wild West cowboy platformer built in Lua for the Playdate handheld. I joined the project to take the prototype through a major feature and performance pass, and have shipped two iteration cycles alongside the project's lead.

Playdate Lua 2D Commission LDtk Python

What I worked on

LoneStar gameplay

Snake enemy AI

Built a five-state machine (idle, patrol, chase, attack, reset) with a configurable detection range. The snake spots the player within range, follows them along its platform, attacks when close enough, and walks back to its starting spot once the player escapes range. Integrated with the existing animation table and sprite sheet.

Snake slither animation

Player combat: stomp, pop-gun, and projectile framework

Down-arrow stomp when airborne, pop-gun ranged shot that takes priority over dash when an enemy is in range, and an extensible projectile system designed to slot in for future enemies (coyote, gila monster) without rewriting per-encounter logic.

Stomp and pop-gun combat

Continuous world camera

Smooth deadzone follow camera with lerping, clamped to the world bounds across all 30 LDtk levels. Per-spawn camera positioning so the designer sets the opening view of each level instead of just centering on the player, and viewport-driven level activation so adjacent rooms don't bleed into the active scene.

Playing on hardware

Cross-level systems

IntGrid-driven ladder mechanics rebuilt so they work reliably in LDtk, the main script, and the ladder code. Cross-level door teleportation that loads the destination level on demand. Chest interaction reworked so the player triggers it from beside the chest instead of underneath.

Performance

Pulled the slowest spots from around 14 FPS up to a stable 26+ on hardware. Wins came from viewport-based level activation, off-screen entity culling using sprite bounds, precompiled binary level data, and a stationary-camera-when-in-deadzone model that avoids redrawing the whole tile grid every frame.

Engineering polish

Auto-detecting Windows build script for the Playdate SDK, a Python LDtk-to-binary baker for faster level loads, and a clean delivery pipeline that strips dev flags while preserving useful runtime toggles.

Tech

Lua, Playdate SDK, LDtk, Python, Windows batch.

From the client

Client reviews