Design document · Neon Rekha
Design document
My design doc, 6 pages: the idea, how the game checks a drawn shape, beat-mapping the music, the levels and the weekly leaderboard.
Neon Rekha (नियॉन रेखा)
Game design document: an endless rhythm game where you draw the shape on the beat
The idea
I liked the look of rhythm games like Tiles Hop: a white ball bouncing on glowing tiles, in time with the music, on a dark neon road. But in those games you only tap or slide. I wanted the player to do something with a bit more thought in it, while still keeping it quick and musical.
So the idea became: every tile carries a shape, and you have to draw that shape on the screen before the tile reaches the ball. If the tile shows a sleeping line, you draw a sleeping line. If it shows a circle, you draw a circle. While you are drawing it correctly the line turns green, and when you finish it the shape blasts and the next one comes.
The name
Rekha means "line" in Hindi. Everything you do in the game is drawing lines, and everything on the screen is made of glowing neon lines, so I called it Neon Rekha, नियॉन रेखा.
How to play
- Tiles ride down the neon road toward the bouncing ball, landing on the beat of the music.
- The shape on the front tile floats up and shows big in the middle of the screen, with its name under it, for example "Sleeping line".
- You draw the same shape with one stroke, anywhere on the screen. You do not have to trace it, only make the same gesture.
- While you draw, the shape fills up green. When it is complete it blasts, the tile explodes on the road, and the next tile becomes the target.
- If you draw a different shape, or the tile reaches the ball before you finish, the run is over.
A ring around the shape empties as the tile gets closer, so you can always see how much time is left. If you lift your finger halfway, nothing bad happens: the shape just resets and you can start again while there is time.
The shapes
There are 19 shapes. They are split into five groups, from easy to hard, and a new group opens at each of the first five levels.
| Opens at | Group | Shapes |
|---|---|---|
| Level 1 | Lines | Sleeping line, standing line, slope up, slope down |
| Level 2 | One corner | V, mountain, L, arrow left, arrow right |
| Level 3 | Curves | Rainbow, smile, moon, circle |
| Level 4 | Combos | Triangle, square, Z, wave, tick |
| Level 5 | Hardest | M |
The newest group comes up a little more often than the older ones, and the same shape never comes twice in a row.
Checking the drawing
This was the hardest part to build. The game has to know while you are still drawing whether you are on the right track, not only after you finish. People also draw at different sizes, a bit tilted, and with shaky lines.
So while the finger moves, the game compares the part you have drawn so far with the beginning of the target shape. Both are scaled to the same size before comparing, so a small circle and a big circle both count. A little tilt is allowed too. Shapes can be drawn from either end, and closed shapes like the circle and the square can be started from any point.
Some shapes look alike: a circle, a triangle and a square, or a V and a smile. To tell them apart, the game also counts the sharp corners in your drawing. A circle has none, a triangle has two and a square has three. For straight lines it only checks the direction and that the line is straight.
Before putting it in the game, I tested the checker with thousands of computer-made "shaky hand" drawings of every shape, both correct ones and wrong ones, and adjusted it until correct shapes were accepted and different shapes were not mixed up.
Music
A rhythm game needs music with a steady beat. I wrote a prompt for each track (instrumental, a fixed tempo, a kick drum on every beat from the first second, no fade out) and made the tracks with Google Gemini's music model. There is one calm track for the home screen and five tracks for the levels, each one faster than the last.
| Track | Tempo |
|---|---|
| Home screen | 90 BPM |
| Level 1 | 105 BPM |
| Level 2 | 112 BPM |
| Level 3 | 126 BPM |
| Level 4 | 137 BPM |
| Level 5 onwards | 150 BPM |
The AI did not always get the tempo exactly right, and its tempo also wanders a little inside a track, by up to about 80 milliseconds. That is enough to make the ball bounce off the beat. So I measured every track: I found its real tempo, cut a clean loop of whole bars from the steady middle part (skipping the intro and the fade out), and then marked the exact time of every single beat by finding the kick drum. The game moves the ball and the tiles using this list of beats, so they stay on the music even where the track drifts.
Levels and speed
The game does not end. Every 10 shapes you go up one level. For the first five levels the music switches to the next, faster track, so everything moves faster. After level 5 the tempo stays at 150 BPM and the tiles start coming closer together instead.
| Level | Normal gap between tiles |
|---|---|
| 1 to 5 | 4 beats |
| 6 and 7 | 3 beats |
| 8 onwards | 2 beats |
Harder shapes always get some extra space: a line needs at least 2 beats, a corner shape 3, and a circle or a square 4. So a square is never squeezed in like a line. Tiles appear 8 beats before they reach the ball.
The very first run is a short lesson. The first three shapes are always a sleeping line, a standing line and a circle, with a lot of space between them, and a small light runs along the shape to show how to draw it.
One mistake ends the run
I chose to end the run on the first mistake, the same as in Tiles Hop. It keeps every run short and tense, and it makes the score mean something: a high score is a long run without a single wrong shape. Because runs are short, starting again is quick, and "Play again" is the biggest button on the game over screen.
Points
Every shape gives points depending on how hard it is, plus a bonus for drawing it early.
| Shape group | Points |
|---|---|
| Lines | 10 |
| One corner | 15 |
| Curves | 20 |
| Combos | 25 |
| Hardest | 30 |
| Finished with | Shown as | Bonus |
|---|---|---|
| 3 or more beats to spare | PERFECT | +10 |
| 1.5 beats or more | GREAT | +5 |
| Less than that | GOOD | none |
Shapes drawn in a row build a combo. Every 8 shapes in the combo the points are multiplied by one more, up to five times.
The look
Everything is glowing lines on a dark purple night: the road and its pink edges, the tiles, the shapes and the falling light streaks in the sky. A bloom effect makes the bright lines glow. The white ball bounces on every beat and leaves a pink trail, the road lines pulse on the beat, and a finished shape bursts into green and pink sparks. The buttons, panels and icons are drawn in the same neon style, so the menus and the game feel like one thing.
Language
The first time the game opens it asks "Choose your language" (अपनी भाषा चुनें): English or Hindi. It can be changed later in the settings. Every word is in both languages, including the names of the shapes, like सोई हुई रेखा for the sleeping line, गोला for the circle and चाँद for the moon. In Hindi the logo shows नियॉन रेखा.
As in my earlier game, Unity's UI does not join Hindi letters properly, so the Hindi text is prepared in advance with a small tool and comes with its own font.
The weekly leaderboard
How it works
- When you start, the game asks for your name. That name shows on the leaderboard.
- Your score for the week is your best single run of the week.
- The leaderboard shows the top 50 players, the level each one reached, and your own rank. The game over screen also shows your rank for the week.
- Without internet the game still works. The leaderboard just says you are offline and gives you a button to reconnect.
When it resets
The leaderboard resets every Monday at 12:00 midnight, Indian time, and everyone starts again from zero. The screen shows how long is left, for example "New week in 4d 23h". The old weeks are saved on the server.
Why every week
If it never reset, the players who started early would stay on top forever. With a weekly reset anyone can be first this week, and it gives people a reason to come back and try to beat their best run.
Where it runs
- Android phones (an APK, made for portrait).
- The web, on itch.io, where it can be played with a finger or a mouse.
- iPhone, built on a Mac from an Xcode project.
What I learned
- AI-made music sounds good but is not exact. I had to measure and fix the beat before I could build a rhythm game on it.
- Checking a drawing while it is being drawn is much harder than checking it at the end. Testing it with many fake drawings before putting it in the game saved a lot of time.
- Shapes that look alike need a second check. Counting corners was a simple way to stop a circle and a square from being confused.
- Small kindnesses matter in a hard game: lifting your finger never punishes you, and the first run teaches the idea with three easy shapes.
Neon Rekha (नियॉन रेखा), made in Unity for Android, the web and iPhone.