I Made a Tiny Compose App. Then I Asked Better Questions.
I had a simple Android idea: tap, drag, and leave shapes that fly across the screen.
https://www.youtube.com/watch?v=1dp4sCYTYIQ
The first version was already Compose. Squares, a vsync loop, a date in the corner. It worked. It just wasn’t fun to look at, and I had no idea when the phone was struggling. Cursor IDE has helped.
This is how that demo turned into TouchMoveCompose — teal cubes, a live FPS HUD, and a version that’s actually useful for learning Android.
What I started with
- One screen, Jetpack Compose, no game engine
- Drag to spawn squares
- Squares only moved after you lifted your finger
- A small HUD: date, counts
- The important bit I already had: a loop that ticks every frame (
withFrameNanos)
That’s enough. You don’t need Unity to learn drawing, touch, and performance.
What we changed
I used Cursor as a pair programmer. I didn’t ask it to “make a 3D game.” I asked for the next small step.
Cubes, still 2D. Real 3D would mean OpenGL or Filament. We stayed on Compose Canvas and drew isometric cubes instead. Same loop, better look.
A HUD that tells the truth. FPS, frame time, CPU, memory. That’s when I learned two things:
- “CPU 200%” can just mean two cores, not a dying phone
- FPS drops when the UI thread misses vsync, not when the whole chip is busy
Why it died at ~400 cubes. Each cube was many little draw calls. Engines stay fast because they batch. We packed every cube into two draws per frame. Then we added a simple rule: if FPS falls under about 55, stop spawning for a bit.
Get Rick Perez’s stories in your inbox
Join Medium for free to get updates from this writer.
Move as soon as it exists. We already had a frame loop. Cubes didn’t need to wait for finger-up.
One theme. Teal cubes, dark/mint background, pink text. The colors you set in the theme are the colors you see on screen.
How to ask for this (the useful part)
Don’t ask: “Make it 3D” or “Make it production-ready.”
Ask:
- Keep my vsync loop. Make the squares look like cubes without a new engine.
- Show FPS and UI CPU on screen.
- Why is FPS falling? Change that, not everything.
- Don’t stay below ~55 FPS. Slow down spawning if you have to.
- Use my theme: primary = shapes, secondary = background, accent = text.
One change at a time. If you can’t see it on the HUD, you didn’t learn it.
https://www.youtube.com/watch?v=1dp4sCYTYIQ
Why it’s a good learning project
In one small app you touch:
- Compose UI and gestures
- A game loop without SurfaceView
- Custom drawing
- Why phones differ (60 Hz vs 120 Hz)
- Measuring before “optimizing”
Creativity here isn’t more effects. It’s watching the HUD and thinking: what is this phone actually doing?
Tap, drag, read the numbers, then ask the next small question.
TouchMoveCompose is on GitHub. The short README is the landing page; docs/OVERVIEW.md is the full map if you want to dig.








