Ten Indian art traditions made the mood board. Two made the game.
Prajjwal Pathak38 min
- date
- words
- 7 591
- read
- 38 min
- sources
- 36 sources
- windows
- 25 windows
- generated
- 17 generated
- collections
- 5 collections
- gcd grids
- 81/81 gcd grids
- deadline
- 30 Sep
- views
- 2 views
Renamed on 17 September 2026. The game in this post was called Curvved when it was written; it is now ChitraYatra. Apart from the name, nothing in it has changed.
The concept board that started this was made with an image model. Across the top it says Indian Art Traditions, Reimagined, and below that are ten traditions, each shown twice: scrambled into hexagonal tiles and then solved. Kolam, Madhubani, Warli, Pattachitra, Kalamkari, Rajasthani miniature, Gond, Phad, rangoli, Mughal floral. It is beautiful, and it would sell the game in one screenshot.
It is also a precise picture of what we decided not to ship. One panel shows a Pattachitra goddess’s face split across hexagonal tiles. Another is a Gond deer that no Gond artist drew.
We are building ChitraYatra for RevenueCat Shipaton 2026, whose submissions close on 30 September. This is the first post in a series about building it. The game is a drawing cut into hexagonal panes of stained glass: turn or move the panes until every line meets its neighbour, and each region of the picture lights up as glass. On 13 September we decided it should carry Indian traditions. By the end of that day, of the ten on the board, two were in the game, kolam and rangoli, generated entirely by our own code, along with a third the board never showed: mandala, as plain geometry. Three are waiting for artists we have not yet paid. Two are shrines rather than pictures, and stay out. The last three might come later, from artists or from public-domain museum collections, but never as the board shows them.
This post is how that sorting happened: the history of each tradition, the mathematics that made one of them almost free to implement, and the rules that kept the rest out.
TL;DR
- Kolam, rangoli and mandala are in the game, and all 17 of their windows are generated by code. Kolam is a Tamil threshold drawing made every dawn in rice flour; rangoli is the festival floor art that goes by a different name in almost every state; mandala here means only “circle”. Together they give the game 3 of its 5 collections and 17 of its 25 windows, and every window passes all five of the level validator’s gates.
- A kolam is a mirror curve, so it can be generated exactly. A line bouncing through an m×n dot grid draws gcd(m, n) separate loops, so coprime grids give the single unbroken line the tradition prizes. Our generator agrees on 81 of 81 grids from 1×1 to 9×9.
- Symmetry decided which kolams we could make. Across 16,000 samples on square grids, no mirror set with full eightfold symmetry kept a single line. On 5×5 and 7×7, every single-line set with only fourfold rotation (289 of 289) was a pinwheel, and a four-armed pinwheel reads as a swastika. So every mirrored kolam in the game is drawn on an odd-by-odd rectangle.
- Gond, Madhubani and Warli wait for commissioned artists. These are authored styles practised by living communities, and each carries a Geographical Indication. Under the Indian Copyright Act an assignment is only valid in writing (s.19), and the artist’s right to object to distortion survives the sale (s.57). We will not generate these styles, and we will not prompt an image model to imitate them.
- Deities and yantras are never puzzle pieces. That rules out most of Pattachitra, Phad and temple Kalamkari. Our mandalas are secular geometry with no bindu and no interlocking triangles.
ChitraYatra, in one paragraph
A drawing is laid under a coarse grid of 21–23 hexagonal panes. Wherever a line crosses the edge of a pane, it is snapped to one of seven evenly spaced ports. The panes are scrambled, and the rule is simply no loose ends: when every port meets the matching port on the neighbouring pane, the board is the drawing, exactly. Enclosed areas of the drawing fill with stained glass as soon as every pane around them is right, so the picture arrives while you play rather than being revealed at the end. There are four ways to play: rotate a pane, swap two, drag one in from a tray, or turn a ring of seven. There is no timer, no score and no way to fail. The engine is pure Dart with no Flutter, the same rule that kept Lumina’s level generator testable, so every level can be validated in bulk from the command line before anyone plays it.
That mechanic is the filter every tradition had to pass. The game needs lines: continuous strokes that cross pane edges and have to meet. A tradition built from lines slots straight in. A tradition built from filled figures, with meaning in faces and scenes, can only be used as a picture cut into pieces, which is what a jigsaw is and what we were trying not to make.
Three questions for every tradition
Each of the ten traditions on the board, plus mandala, got the same three questions, in this order:
- Does it have a line the mechanic can carry? This is a design question, and the easiest to answer.
- Who owns it? Is it a shared, living practice that anyone may take part in, or an authored style practised by particular artists and communities?
- Is it sacred in a way that scrambling would insult? Cutting a picture into pieces and handing them to a stranger to reassemble is not a neutral act when the picture is of a god.
| Tradition | Region | Line? | Ownership | Sacred content | Where it landed |
|---|---|---|---|---|---|
| Kolam | Tamil Nadu | a single looped line, by definition | shared daily practice | auspicious, abstract | In the game, generated |
| Rangoli | across India | rings, petals, stars | shared festival practice | auspicious, mostly abstract | In the game, generated |
| Mandala (not on the board) | pan-Asian | circles and petals | geometry belongs to nobody | ritual mandalas and all yantras | In the game, secular geometry only |
| Gond | Madhya Pradesh | strong outlines, dot-and-dash fills | authored, GI-registered | nature and folk myth | Waiting for a commissioned artist |
| Madhubani (Mithila) | Bihar | bold double outlines | authored, GI-registered | often deities | Waiting for a commissioned artist, no deities |
| Warli | Maharashtra | circles, triangles, lines | community heritage, GI-registered | the marriage chauk is ritual | Waiting for a commissioned artist, no chauk |
| Kalamkari | Andhra Pradesh | flowing vines | authored, GI-registered | temple narrative cloths | Florals only, commissioned, if ever |
| Pattachitra | Odisha | dense figures | authored, GI-registered | centred on Jagannath | Not planned |
| Phad | Rajasthan | narrative panels | authored | portable shrines of folk deities | Not planned |
| Rajasthani miniature | Rajasthan | fine outlines | historical works, many public domain | varies by object | Public-domain museum art, object by object |
| Mughal floral | North India | vines and blossoms | historical works, many public domain | mostly decorative | Public-domain museum art, object by object |
Download CSVall tables as JSONCC BY 4.0
Kolam answered all three questions most cleanly, and its own rules turned out to be the game’s rules, so that is where to start.
Kolam: the tradition that is already a puzzle
What a kolam is
A kolam is drawn in rice flour on the threshold of a home, a shop or a temple. Tamil women draw them before dawn, letting pinches of flour run from between the thumb and first finger (Sahapedia; Nagarajan, OUP). Most begin as a grid of dots, the pulli. The line is then drawn around the dots, looping, encircling or joining them, but never touching one. The most prized kind is the sikku (knot) kolam, where a single stroke runs once around every dot and comes back to where it started, so that, in Sahapedia’s words, “one can not figure out where the design begins… and where it ends.” Slavik Jablan’s survey of the geometry names the culturally ideal single-line design pavitram, or Brahma-mudi (Jablan, Bridges 2001).
A kolam is also food, and it is meant to disappear. The coarse flour is eaten by ants, birds and insects. In Vijaya Nagarajan’s phrase, drawing it fulfils the duty of feeding a thousand souls (Sahapedia, on Nagarajan’s work). By afternoon it has been walked over, rained on and eaten, and tomorrow’s is drawn fresh (Wikipedia). In the month of Margazhi, from mid-December to mid-January (Asia InCH), the kolams get bigger and the streets compete. Chennai’s Mylapore Festival has held a kolam contest on North Mada Street since the late 1990s (Mylapore Festival; DT Next).
Read that as a game designer and it is already a puzzle: one line, no loose ends, around every dot, back to the start. That is the same rule the ChitraYatra board enforces. When we surveyed Google Play in September, we found no rotate-to-solve kolam puzzle at all; the kolam apps were tracing tutorials and design catalogues.
Kolam is a mirror curve
Mathematicians have been reading kolam for fifty years. In 1974, Gift Siromoney, R. Siromoney and Kamala Krithivasan at Madras Christian College used kolam to develop array grammars, formal languages for two-dimensional pictures (Computer Graphics and Image Processing). Marcia Ascher gave the tradition a chapter in Mathematics Elsewhere and an essay in American Scientist. Paulus Gerdes tied it to the sona sand drawings of the Chokwe in Angola (Gerdes, 1989), and Jablan generalised both into mirror curves.
The construction is simple. Put a dot at the centre of every cell of an m×n grid. Start a ray at the midpoint of any cell edge and send it diagonally. It travels from edge midpoint to edge midpoint, reflects off the outer border like a billiard ball, and eventually comes back to where it started. That closed path, smoothed, is a kolam: it passes between every pair of neighbouring dots and loops around the outer ones.
The result that matters is about how many separate lines this draws. With no interior mirrors, an m×n grid draws exactly gcd(m, n) closed curves. Shojiro Nagata states it for kolam specifically (“the loop number of the lattice Kolam on a N × M dot array is GCD(N,M)”) and credits Gerdes; the argument comes from how a billiard ball reflects off the edges of a table (Nagata, Forma 2015). Jablan states it for mirror curves in general, and Darrah Chavey for sona (Chavey, Bridges 2009). So a coprime grid (3×4, 5×7) gives the prized single line, and a square grid bigger than 1×1 never does.
Our generator does not rely on the theorem. It walks the line and counts what it drew. Every diagonal hop between two edge midpoints belongs to exactly one line, so the walk marks each hop as it goes and starts a new line only from a hop nobody has walked yet:
for (var guard = 0; guard < 8 * (cols + 1) * (rows + 1); guard++) {
loop.add(Vec2(x + ox, y + oy));
walked.add(hop(x, y, x + dx, y + dy));
x += dx;
y += dy;
ox = 0;
oy = 0;
if (_reflectsAt(x, y)) { // the border, or an interior mirror
if (x == x.roundToDouble()) {
ox = -_bounce * dx.sign; // pull the drawn point back 0.2 cells
dx = -dx;
} else {
oy = -_bounce * dy.sign;
dy = -dy;
}
}
if (x == sx && y == sy && dx == sdx && dy == sdy) break;
}
Then I checked it against the theorem anyway. For every grid from 1×1 to 9×9, the number of lines the walker draws with no mirrors equals gcd(m, n): 81 of 81. That is not a proof of anything the mathematicians did not already prove. It is a test that our code draws what the literature says it should, and the point of measuring a generator rather than trusting it is that the day it disagrees, you find out.
Mirrors, and where the line turns away
A kolam with no interior mirrors is a plain diagonal lattice, which is pleasant but not what a threshold looks like on a festival morning. Real sikku kolams double back on themselves. In mirror-curve terms, you place mirrors on some of the interior edges between dots, the ray reflects off those too, and the pattern becomes a knot.
Our first mirrored kolams looked exactly like the unmirrored ones. When a line reflects off an interior mirror, the two strands meeting from either side both pass through the mirror’s midpoint, so on screen they read as a crossing, and every mirrored kolam collapsed back into the plain lattice. The fix is the _bounce in the code above: wherever the line reflects, the drawn point is pulled 0.2 cells back toward the side it came from. The strands now turn away from each other instead of meeting in an X, which is also how a hand draws the turn around a dot.
Mirrors come at a price. Most mirror sets break the single line into several. The level author’s tool, tool/kolam_presets.dart, samples mirror sets, keeps only those whose walk still returns one line, and prints them ready to paste into the level file.
Symmetry, and the pinwheel problem
Real kolams are symmetric, so the preset tool doesn’t sample mirrors one at a time. It samples them in symmetric orbits: pick one interior edge, and the tool adds its reflection across the vertical axis, the horizontal axis and both, plus the diagonals on a square grid. The first version sampled rotations instead, turning each mirror 90° about the centre, which is a perfectly good symmetry and one many real kolams have. The comment in the tool records what happened:
// Mirror symmetry, not rotation alone. Rotation-only (C4) sets make
// pinwheels, and a four-armed pinwheel reads as a swastika — an old
// auspicious motif, and not one to put in front of the world without
// context. Reflections across both axes (and the diagonals on a square
// grid) give the balanced, achiral patterns that are also the commonest on
// real thresholds.
The swastika is sacred in Hinduism, Buddhism and Jainism, from the Sanskrit for well-being, and it is still a common sight on temples and houses in India (USHMM). It appears in rangoli at Diwali. It is also a symbol that a player in Europe or the US will read one way only, and that misreading has real consequences: in 2019 an Indian family in Adelaide had a Diwali rangoli destroyed by a delivery driver because it contained one (ABC Religion & Ethics). A game shipped worldwide cannot add the context a neighbour would. So the tool now samples mirror symmetry only.
For this post I measured how much that constraint costs, running 4,000 random mirror sets per grid through the same generator the game uses:
| Grid | Interior mirror sites | Random mirror sets that keep one line | Mirror-symmetric sets that keep one line |
|---|---|---|---|
| 3×5 | 22 | 609 / 4,000 | 612 / 4,000 (7 distinct) |
| 3×7 | 32 | 375 / 4,000 | 452 / 4,000 (23 distinct) |
| 5×7 | 58 | 232 / 4,000 | 383 / 4,000 (184 distinct) |
| 5×5, 7×7 | 40, 84 | — | 0 / 8,000 with eightfold symmetry |
| 4×4, 6×6 | 24, 60 | — | 0 / 8,000, even with only the two axes |
Download CSVall tables as JSONCC BY 4.0
Two things came out of that table that I did not expect.
On a rectangle, symmetry helps rather than hurts. A symmetric mirror set is more likely to keep the line whole than a random one, and on 5×7 it is 1.65 times as likely. On 3×5 the symmetric search is small, though: only seven distinct sets exist.
On a square, it is the other way round. Full eightfold symmetry, meaning both axes plus both diagonals, never produced a single line in 16,000 samples across four square grids. Even-sized squares failed with only the two axes. I then ran the rejected rotation-only sampler on 5×5 and 7×7. It found 289 distinct single-line kolams, and all 289 were chiral: none had a mirror line. On a square grid, as far as this sampler can see, the only way to get one line with fourfold symmetry is a pinwheel.
I don’t have a proof of that, and I would like one. V. Gopalan’s 2024 symmetry classification of square-tile sikku kolams is where I would look first; I have not yet checked these counts against it. In practice, every mirrored kolam in the game is drawn on an odd-by-odd rectangle: 3×5, 3×7 and 5×7.
The Threshold collection
Six kolams make up the Threshold collection. They are painted in a separate dawn theme: stone, rice-flour chalk, turmeric and vermilion, instead of the paper and stained glass of the rest of the game.
| Window | Dots | Mirrors | Lines | Panes | Glass regions | Played by |
|---|---|---|---|---|---|---|
| Threshold | 3×4 = 12 | 0 | 1 | 22 | 18 | rotating |
| Padi Kolam | 4×5 = 20 | 0 | 1 | 22 | 32 | rotating |
| Little Sikku | 3×5 = 15 | 8 | 1 | 22 | 15 | rotating |
| Veranda | 3×7 = 21 | 12 | 1 | 22 | 21 | swapping |
| Lotus Sikku | 5×7 = 35 | 24 | 1 | 23 | 35 | turning rings |
| Festival Threshold | 5×7 = 35 | 16 | 1 | 23 | 43 | rotating |
Download CSVall tables as JSONCC BY 4.0
Each window carries a short card that names the practice, the place and how it is done. Veranda’s reads: “Narrow thresholds get long kolams — a column of dots down the step, the line running the whole length and back.” Padi Kolam’s is the one I would keep if I could keep only one: “A kolam is not meant to last. Feet, rain and the ants it feeds take it by afternoon, and tomorrow’s is drawn fresh.”
Kolams repeat their tiles, which caused a problem for the swap and tray mechanics. Two panes from different parts of a kolam can look identical, so “is this pane in its home slot?” is the wrong question. A board could look finished and still refuse to light. For kolam, “correct” means looks like the slot’s own pane at some rotation: the same ports, the same dots, and a drawn difference under 6% of a pane’s size. The tradition’s regularity, which makes kolam easy to generate, is exactly what made it hard to score.
Rangoli: colour on the floor, under many names
Rangoli, from the Sanskrit rangavalli, is floor art made for festivals and ceremonies: Diwali above all, but also Pongal, Onam and Ugadi. It is laid in rice flour, powdered limestone, coloured sand or flower petals (Wikipedia). The tradition is so widespread that it has no single name. The design school at IIT Bombay lists alpana in West Bengal, aripan in Bihar, aipan in Uttarakhand, jhoti or chita in Odisha, kolam in Tamil Nadu, muggu in Andhra Pradesh, mandana in Rajasthan, chowkpurana in Uttar Pradesh, and rangoli in Gujarat, Karnataka and Maharashtra (D’source, IIT Bombay). Kolam, on that list, is one regional member of a much larger family. It gets its own collection in the game because its single-line rule suits the mechanic so well.
The rangoli the game draws is the geometric core of the tradition: rings around a centre, in n-fold symmetry. One generator, lib/engine/glass/ornament.dart, has five ring kinds: circles, petals, star points, overlapping arcs (whose overlaps make the lens shapes floor ornament is built from) and scalloped edges. Every closed shape it draws becomes a coloured facet. A whole window is a short JSON spec. This is the Pookalam:
{
"folds": 16,
"palette": ["#F5A623", "#D7263D", "#C2185B", "#43A047", "#00A6A6", "#F9C80E"],
"rings": [
{"kind": "circle", "r2": 7},
{"kind": "circle", "r2": 14},
{"kind": "petals", "r1": 14, "r2": 26, "width": 0.9, "alternate": true},
{"kind": "circle", "r2": 28},
{"kind": "petals", "r1": 28, "r2": 40, "shift": 0.5, "width": 0.8},
{"kind": "circle", "r2": 41}
]
}
The palette is marigold, vermilion, magenta, parrot green, turquoise and turmeric: the colours of the powder, not of a design system. shift: 0.5 rotates a ring by half a fold, so its petals sit between the ones inside. That single trick produces most of the “bloom” in real floor ornament.
A pookalam is Kerala’s flower rangoli, made for Onam. It is begun on Atham, the first day of the ten-day festival, in the month of Chingam. On the first day only one kind of flower is used, more kinds are added each day, and the pookalam grows larger as the festival goes on (Kerala Tourism). The first draft of the window’s card said it was laid “ring by ring, one day at a time,” which is the version you find on blogs. The official description is more careful, and the card now follows it.
Six windows make up the Festival collection:
| Window | Folds | Panes | Glass regions | Played by |
|---|---|---|---|---|
| Diya Petals | 8 | 21 | 19 | swapping |
| Marigold | 12 | 21 | 38 | the tray |
| Lamp Ring | 8 | 22 | 33 | rotating |
| Pookalam | 16 | 22 | 51 | swapping |
| Festival Star | 10 | 22 | 12 | the tray |
| Six Lanterns | 6 | 22 | 19 | turning rings |
Download CSVall tables as JSONCC BY 4.0
Honesty requires a caveat here. Real rangoli is often figurative, with peacocks, lamps, lotuses and pots, and ours is not. The generator does geometry because geometry is what we can make without borrowing anyone’s drawing. The figurative side of rangoli is where commissioning comes in, as it does for the next three traditions.
Mandala, and the line we drew at yantra
The Rubin Museum puts it in one line: “The word mandala means a circle with a center” (Rubin Museum). In Buddhist tantric practice, mandalas are aids to meditation and visualisation. The Tibetan sand mandala, dul-tson-kyil-khor or “mandala of colored powders” (Asia Society), is made from millions of grains of coloured sand. At the end, monks sweep it up and pour it into flowing water, enacting the impermanence of existence (Smithsonian National Museum of Asian Art). Kolam and sand mandala share that ending: both are made in order to disappear.
The Rubin also notes that “a similar concept in Hinduism is a yantra”, and this is where the line is. A yantra, in Stella Kramrisch’s definition as quoted by the Indologist Gudrun Bühnemann, is “a geometrical contrivance by which any aspect of the Supreme Principle may be bound… to any spot for the purpose of worship.” In most cases yantras “are considered to be representations of the deity himself” (Bühnemann, Brill 2003). The Sri Yantra, nine interlocking triangles around a central point called the bindu, is the best known (Wikipedia). Scrambling a representation of a deity into hex panes for a stranger to reassemble is exactly what our third question rules out.
So the Mandala collection uses only the word’s plainest meaning. The generator’s doc comment says what it will not draw: no yantra (no bindu-and-triangles), no deity, no script. The palette is indigo, teal, saffron, rose, violet and sandstone. The Wheel’s card reads: “Mandala means circle. Here it is only that — geometry turning around a centre, for the pleasure of the pattern.”
The five mandala windows are Wheel (8-fold, 26 regions), Lotus Circle (12-fold, 38), Star Garden (6-fold, 23), Rose Window (16-fold, 49) and Compass (8-fold, 18). Rose Window is where the two halves of the game meet: sixteen petals, lit as stained glass, a pattern that looks equally at home on a threshold and in a cathedral window.
Geometric ornament has deep Indian roots beyond the floor, too. The Harvard Art Museums hold a Mughal jali, a window screen from around 1580 drilled from a single slab of red sandstone into interlocking four-pointed stars. The museum notes that geometric patterning of that kind was introduced in the Islamic courts (Harvard Art Museums). Some of that geometry lives in the Mandala windows. None of it is copied from a particular screen.
Gond, Madhubani and Warli: why they wait for artists
These three are the traditions players would recognise fastest, and they are the ones we have not built. We are not avoiding them. We have not paid for them yet.
Gond
Gond painting grows out of the Pardhan Gond community’s house art. Digna is geometric patterns worked in wet mud on walls, floors and doorways, made seasonally by women; bhittichitra is wall painting (Pareek, International Journal of Intangible Heritage, 2022). What the world now calls Gond art is in large part the invention of one man. Around 1981, J. Swaminathan’s team, collecting for the Roopankar museum at Bharat Bhavan in Bhopal, found Jangarh Singh Shyam in the village of Patangarh. Jangarh combined songs, stories and wall patterns into a style, the Jangarh Kalam, of forms filled with repeated, varying dots and lines (Impart). “Gond Painting of Madhya Pradesh” became a registered Geographical Indication in 2022–23, announced in April 2023 (ThePrint).
For the game, Gond is the best of the three. Its strong outlines behave like lead lines, and the dotted fills would glow as glass. It is also unmistakably an authored style, traceable to named artists who are alive and working today.
Madhubani (Mithila)
Mithila painting was made by women on the walls of their homes, above all the kohbar, the paintings of the nuptial chamber meant to bless a marriage with love, prosperity and fertility (Sahapedia). The outside world saw it because of a disaster. After the 1934 Bihar earthquake, collapsed walls exposed the paintings, and the British officer W. G. Archer photographed them (Asian Art Museum). A second push came from the 1966–68 drought, when the Handicrafts Board sent the artist Bhaskar Kulkarni to encourage the women to put their wall paintings on paper as a source of income (Sainsbury Centre).
“Madhubani Painting” has been a GI since 2007–08. The GI shows how weak that protection can be for the artists themselves. Down To Earth reported in 2025 that the applicant was not an artists’ association but the Government of Bihar’s Director of Industries, and that only 51 authorised users are listed (Down To Earth). Much Mithila painting depicts deities, so a commissioned pack would be the fish, the birds and the flora, and nothing from the shrine.
Warli
Warli painting belongs to the Warli community of Maharashtra. It is traditionally painted in rice paste by married women, with a human body drawn as two triangles touching at their tips (Sahapedia). At the centre of ritual Warli painting is the chauk, also called the lagna chauk: a square enclosing Palaghata Devi, the Warli goddess of fertility (Impart). Jivya Soma Mashe moved it onto canvas and out of its ritual context, and received the Padma Shri in 2011. It became a GI in 2014.
Warli is also the tradition with the clearest record of what happens when outsiders use it without asking. Scroll reported that in 2017 the community group AYUSH sent a legal notice to a Dutch company that had trademarked Warli-style human figures, and that the company abandoned the design. In 2018 the group objected to a Bata footwear line as “disrespectful and demeaning”, and Bata acquiesced. AYUSH’s president described enforcing the GI as “far too expensive and cumbersome” (Scroll, 2022). A game studio is exactly the kind of outsider in those stories. The marriage chauk is out entirely; everything else waits for a Warli artist.
Why not generate them, or prompt for them?
Kolam and rangoli are shared practices. Millions of people draw them every morning, and the particular pattern our code generates belongs to nobody but us. Gond, Madhubani and Warli are different. They are styles of work, recognisable as the work of particular people and communities. A generator that imitated them would be imitating those people.
An image model is the same thing done faster. It takes the community’s style without the community. The artists would recognise it immediately, and it is the version of this project most likely to end up in a news story. The concept board at the top of this post is the proof: a gorgeous Gond deer, painted by nobody. HCI researchers have begun asking these communities what generative AI means to them. There is a 2023 community-centred study of text-to-image models in South Asia (Qadri et al., FAccT ‘23), and a 2026 study of the Patua painters of Naya meeting generative AI (Ghoshal and Ragavan, DIS ‘26). I would rather read those than become an example in the next one.
What a commission has to say
The rule we wrote down is short: these packs come only from commissioned artists under a written licence, the artist is credited by name in the level and in the credits, and the artist’s fee is the cost of the pack. The law gives three reasons it has to be that specific. (What follows is my reading of the statutes, not legal advice; a lawyer reads the contract before money moves.)
- An assignment must be in writing. Section 19 of the Copyright Act, 1957 says no assignment is valid unless it is in writing and signed. It must identify the work and specify the rights, duration, territory and royalty. If the term is left out, it is deemed to be five years; if the territory is left out, it is presumed to be India. A handshake commission would expire, and not cover the US, the one country Shipaton requires.
- Moral rights survive the sale. Section 57 gives the author the right to claim authorship, and to restrain “any distortion, mutilation, modification or other act” prejudicial to their honour or reputation, independently of the copyright and even after assigning it. Cutting a painting into hexagons, scrambling it and snapping its lines to ports is a modification. So the contract has to say so plainly, and the artist sees the cut before it ships.
- A GI protects an origin, not a style. The Geographical Indications Act, 1999 protects the use of an indication “in the designations or presentation of goods” that misleads about where they come from. So our copy will say “by [artist], [community]” and never imply that an unlicensed pack is Madhubani painting.
Until a commission is signed, the home screen will say these collections are coming with commissioned artists, and nothing in the game is drawn in their style.
What stays out of the game entirely
Some of the board was never going to be a puzzle, however it was sourced:
- Pattachitra. Its main subject is Jagannath, and the paintings originated as substitutes for the deities during Anasar, the fortnight after the ritual bath when the temple images are not shown (Live History India). That is not a picture to scramble.
- Phad. Bhopa priest-singers carry phad scrolls with them and use them as “the mobile temples of the folk deities”, mostly Pabuji and Devnarayan (Wikipedia). A temple is not a jigsaw.
- Temple Kalamkari. Kalamkari temple cloths were hangings and canopies commissioned by temples and monasteries, telling the Ramayana, the Mahabharata and the Puranas (Impart). The florals and the Tree of Life are a possible future commission; the narrative cloths are not.
- Deities anywhere. No god, goddess or avatar is ever cut into pieces to be reassembled, whatever tradition they come from.
- Yantras and the Warli marriage chauk. These are ritual diagrams, not ornament.
- Script. No sacred syllables and no calligraphy that a player cannot read but someone else holds sacred.
This is not the only way to make these calls, and other people will draw the lines elsewhere. Games that draw on Indian art get read closely. Raji: An Ancient Epic, a Pune-made action game whose visuals drew on Pahari painting, was nominated for Best Debut at The Game Awards (Wikipedia). It was also criticised in Vice for what it left out of India (Vice). The standard I would actually like to meet is Never Alone, made with some forty Iñupiat elders (Peabody Awards). This post is one developer reading. That gap is the honest reason three traditions are waiting.
How a tradition becomes a window
The tradition matters only in the first of four steps. After that, a kolam and a heron are handled identically.
- A generator emits lead lines and coloured facets.
KolamSpec.strokes()returns the closed kolam curves and their dots;OrnamentSpec.build()returns rangoli or mandala strokes plus a coloured facet for every closed shape. Both produce exactly the shape of a hand-designed figure imported from our design tool, so nothing downstream knows which tradition it is cutting. - The drawing is cut into 21–23 hex panes, with seven ports per edge. It is seven because at five, a fern’s stem visibly wobbled. The whole plane is displaced in one smooth motion onto the ports, rather than each line being bent at each seam, so strands that touch, like a frond on its stem, do not pull apart.
- Enclosed areas become glass. The drawing is rasterised and flood-filled from the border. Every enclosed area becomes a region that lights when all the panes it touches are right. In a kolam, the regions are the lozenges between strands; in a pookalam, they are the petals and rings.
- Five gates, reported as counts, not a pass/fail status.
dart run tool/glass_check.dartchecks every window for a unique solution, no two crossings sharing a port, no crossing too close to a corner, no rotation that shows the right ports but the wrong drawing, and at least one pane pinned by the outline alone.
The run from the day this post was written, trimmed to the columns discussed here:
PASS Lotus Sikku tiles=23 ports=124 anchors=9 solutions=1 lookalikes=0 collisions=0 regions=35 mindless=1.00
PASS Pookalam tiles=22 ports=184 anchors=13 solutions=1 lookalikes=0 collisions=0 regions=51 mindless=1.00
PASS Rose Window tiles=22 ports=184 anchors=6 solutions=1 lookalikes=0 collisions=0 regions=49 mindless=1.00
...
25 of 25 levels pass every gate
Look at the last column. mindless=1.00 means a player that turns any wrong pane to whatever fits its neighbours best finishes every window, every time. The step-by-step solver says the same thing from the other side: every rotation on every level can be read from the window’s edge or from settled neighbours, and none needs looking ahead. On rotate, ChitraYatra is a jigsaw, not a deduction puzzle. Last month we built eight bots to play every level of another game, because there we needed to know whether levels were fair. Here we already know: they are easy. For now, that is deliberate. In our September market review of about 1,150 Play reviews of the genre’s biggest titles, only about 4% of the low ratings complained that a game was too easy. Whether assembling a kolam is satisfying enough is the playtest question, not the validator’s.
Why build this for Shipaton at all
Shipaton’s rules are simple: the app’s first public release must fall inside the submission window, it must be downloadable in the US, and the RevenueCat SDK must power at least one purchase (rules). This year there is a new Best Game award, judged on “great gameplay, art direction, and a monetization fit that suits the genre” (RevenueCat).
Art direction is where a one-person studio can compete, and it is where this game was weakest. Rotate-to-connect is saturated: our review found that of 23 rotate, pipe and loop games released on Play between December 2025 and September 2026, 16 had under a thousand installs and none had more than ten thousand. The first version, a lattice that lit up to reveal a drawing and the one that was called Curvved, was one more of them, and after two playtests we stopped it. What no game in that list has is a tradition behind it. Venba, a short game about a Tamil family, won Best Debut Game at the 2024 BAFTA Games Awards (Wikipedia) and the IGF’s Seumas McNally Grand Prize (Business Wire). Culturally specific games travel, when they are made with care.
As of 13 September, when this was written, ChitraYatra had not been released, and the Glass version existed as test builds on one phone. The RevenueCat integration, the release and what the judges need from us are later posts in this series. The one decision already made is that the deadline does not get to decide the game: if it is not good by 30 September, it ships when it is.
Verdict
Of the ten traditions on an image model’s concept board, two survived three plain questions: is there a line, who owns it, and is it sacred. A third, mandala, came in as nothing but geometry. The one that survived best was not chosen for the mechanic; it turned out to be the mechanic. A sikku kolam is a line that loops around every dot and comes home, and a mirror curve on a coprime grid is that line, fifty years after Gift Siromoney first wrote kolam down as a grammar.
The measurements added two rules nobody asked for. Symmetry decides which kolams you can make, and on a square grid the only single-line fourfold kolams our sampler found are the ones a worldwide audience will misread. And the traditions players would recognise fastest, Gond, Madhubani and Warli, are the ones a generator must not touch, because a style that belongs to living people is not a pattern. It is their work. Those packs cost an artist’s fee, a written contract under section 19 and a promise under section 57. Until we can pay for them, the shelf says so.
All game figures are first-party: tool/glass_check.dart output on the proto/glass branch, and a sampling run against the game’s own kolam generator (KolamSpec) on 13 September 2026, 4,000 random mirror sets per grid and seeded, so the table is reproducible. The symmetry results are counts from a sampler, not proofs: “no single line in 16,000 samples” means none was found, not that none exists. Market figures come from our own September 2026 review of Google Play. Statutory text is quoted from the official consolidations and is not legal advice. The figures in this post are drawn by the game’s generators and are ours; no traditional artwork is reproduced.
FAQ
What is a sikku kolam?
A sikku kolam is a South Indian threshold drawing, from Tamil Nadu, in which a single line loops around every dot in a grid of dots (pulli) without touching any of them and returns to its starting point. Sikku means knot. The single unbroken line is the culturally ideal form, sometimes called pavitram or Brahma-mudi, and it is drawn at dawn in rice flour at the door of a home.
Why does a coprime dot grid give a single-line kolam?
A kolam on an m×n dot grid behaves like a mirror curve: a line bouncing diagonally between the midpoints of the grid’s edges, reflecting off the border like a billiard ball. With no interior mirrors that construction draws exactly gcd(m, n) separate closed lines, a result stated for kolam by Shojiro Nagata (Forma, 2015) and for mirror curves by Slavik Jablan (Bridges, 2001). When m and n share no common factor, gcd is 1 and the whole kolam is one line; ChitraYatra’s generator reproduces this on all 81 grids from 1×1 to 9×9.
What is the difference between kolam and rangoli?
Kolam is the Tamil Nadu form of the Indian floor art that is called rangoli in Gujarat, Karnataka and Maharashtra, alpana in West Bengal, muggu in Andhra Pradesh and mandana in Rajasthan. Kolam is usually a white rice-flour line drawing made daily at dawn, often around a grid of dots, while rangoli usually refers to coloured powder or flower designs made for festivals such as Diwali. IIT Bombay’s D’source lists more than a dozen regional names for the family.
Can I use Madhubani, Gond or Warli art in a commercial game?
Only with a licence from the artist, in our reading of Indian law. Gond, Madhubani and Warli are authored styles practised by living artists and communities, and all three are registered Geographical Indications. The Indian Copyright Act requires an assignment to be in writing (Section 19), and gives the artist a right to object to distortion or modification that survives the sale (Section 57). ChitraYatra commissions these packs from artists under a written licence and never generates or AI-imitates the styles.
What is a pookalam?
A pookalam is the flower rangoli made in Kerala for Onam. According to Kerala Tourism, it is begun on Atham, the first day of the ten-day festival, with a single kind of flower, and it grows larger each day as more kinds of flower are added. It is made to welcome the mythical king Mahabali.
Is a mandala the same as a yantra?
No. Mandala means “a circle with a center” (Rubin Museum), and in Buddhist practice it is an aid to meditation, like the Tibetan sand mandala that is swept away when finished. A yantra is a Hindu geometric diagram used for worship, and is generally considered a representation of the deity itself. The Sri Yantra, nine interlocking triangles around a central bindu, is the best-known example. ChitraYatra’s mandalas are secular geometry and never draw a yantra.
What is RevenueCat Shipaton 2026?
Shipaton 2026 is RevenueCat’s app-building competition, run on Devpost, with $740,000 in cash prizes. A project qualifies if its first public release lands on the App Store, Google Play or the Galaxy Store between 31 July and 30 September 2026, and it uses the RevenueCat SDK to power at least one in-app or web purchase. The 2026 edition adds a Best Game award judged on gameplay, art direction and monetization fit.
Can kolam patterns be generated procedurally?
Yes. Treat the kolam as a mirror curve: a line bouncing through the edge midpoints of a dot grid, reflecting off the border and off chosen interior mirrors. ChitraYatra’s generator walks that line, counts how many separate lines it drew, and keeps only mirror sets that give one line with mirror symmetry. On rectangular grids such as 5×7, about 10% of symmetric mirror sets keep the single line.
Sources
- RevenueCat Shipaton 2026 and official rules — Devpost
- Announcing Shipaton 2026 — Perttu Lähteenlahti and Charlie Chapman, RevenueCat, July 2026
- Significance of Kolam in Tamil Culture — Anni Kumari, Sahapedia
- Female Aesthetics and Ecological Connect in Kolam — Shefali Rathi, Sahapedia
- Feeding a Thousand Souls: Women, Ritual, and Ecology in India — An Exploration of the Kolam — Vijaya Nagarajan, Oxford University Press, 2018
- Rangoli & Kolam: Threshold Arts of India — Asia InCH, Craft Revival Trust
- Kolam — Wikipedia
- Kolam Contest — Sundaram Finance Mylapore Festival
- Why the Mylapore Festival matters — DT Next, January 2026
- Array Grammars and Kolam — G. Siromoney, R. Siromoney and K. Krithivasan, Computer Graphics and Image Processing, 1974
- The Kolam Tradition — Marcia Ascher, American Scientist, 2002
- Reconstruction and extension of lost symmetries: examples from the Tamil of South India — Paulus Gerdes, Computers & Mathematics with Applications, 1989
- Mirror Curves — Slavik Jablan, Bridges 2001
- How Many Loops Kolam Loop Pattern Consists of — Shojiro Nagata, Forma, 2015
- Mathematical Experiments with African Sona Designs — Darrah Chavey, Bridges 2009
- Sand Drawings and Mirror Curves — Ivars Peterson, Science News, 2001
- Sand drawings and Gaussian graphs — E. Demaine, M. Demaine, P. Taslakian and G. Toussaint, Journal of Mathematics and the Arts, 2007
- A Topological Approach to Creating Any Pulli Kolam — V. Gopalan and B. VanLeeuwen, Forma, 2015
- Symmetry classification and enumeration of square-tile sikku kolams — Veena Gopalan, Journal of Mathematics and the Arts, 2024
- History of the Swastika — United States Holocaust Memorial Museum
- The swastika and the problem of cultural appropriation — Sangeetha Thanapal, ABC Religion & Ethics, 2019
- Types of Rangolis — Madhuri Menon, D’source, IDC IIT Bombay
- Rangoli — Wikipedia
- Pookkalam: Onam’s floral carpet — Kerala Tourism, 2021
- Mandala — Rubin Museum of Art
- About the Mandala — Smithsonian National Museum of Asian Art
- Mandala Sand Painting: Creating an Enlightened World — Asia Society
- Maṇḍala, Yantra and Cakra: Some Observations — Gudrun Bühnemann, in Maṇḍalas and Yantras in the Hindu Traditions, Brill, 2003
- Sri Yantra — Wikipedia
- Pierced Window Screen (Jali) — Harvard Art Museums
- “We paint stories we heard from our ancestors”: Intangible heritage of the Pardhan Gonds of Central India — Shivangi Pareek, International Journal of Intangible Heritage, 2022
- Jangarh Singh Shyam — Impart Encyclopedia of Art
- Madhya Pradesh’s Gond painting gets GI tag — ANI via ThePrint, April 2023
- On Mithila Painting — Sahapedia
- Painting is My Everything: Art from India’s Mithila Region — Asian Art Museum, San Francisco
- Bull, by Shanti Devi — Sainsbury Centre, University of East Anglia
- Authenticity in question: Why Madhubani art deserves better protection — Mohit Sharma, Down To Earth, November 2025
- Warli Painting — Mushtak Khan, Sahapedia
- Warli Painting — Impart Encyclopedia of Art
- The women who are reclaiming Warli art — Nolina Minj, Scroll, June 2022
- Kalamkari — Impart Encyclopedia of Art
- Pattachitra: The Heritage Art of Odisha — Akshata Mokashi, Live History India, 2021
- Phad painting — Wikipedia
- The Copyright Act, 1957 (with Rules) — Copyright Office, Government of India
- The Geographical Indications of Goods (Registration and Protection) Act, 1999 — IP India
- AI’s Regimes of Representation: A Community-centered Study of Text-to-Image Models in South Asia — R. Qadri, R. Shelby, C. Bennett and E. Denton, FAccT ‘23
- When Heritage Folk Artists Meet Generative AI: A case of Chitrakars of Naya — A. Ghoshal and S. Srinivasa Ragavan, DIS ‘26
- Raji: An Ancient Epic — Wikipedia
- How ‘Raji: An Ancient Epic’ Falls into the Indian Far-Right’s Trap — Adesh Thapliyal, Vice, 2020
- Never Alone (Kisima Inŋitchuŋa) — Peabody Awards
- Venba (video game) — Wikipedia
- Venba Wins the Seumas McNally Grand Prize — Business Wire, March 2024
GamesShipatonIndian ArtProcedural GenerationMathematicsFlutter
Read next
- Eight bots played all 500 levels. They were measuring the wrong game.We built eight bots to play a 500-level arcade game and measure how hard each level is. They played it 720 pixels wide. Phones are 412. Levels do not scale, so the shipped game was roughly twice as hard as the game being measured: 172 of 500 levels in band, not the 421 we were reporting.
- Our puzzle generator lied about difficulty. Twice.Reversing a solved puzzle by K random moves does not give a K-move puzzle. Our first generator produced 14 usable levels from 91,322 candidates; the second, 14 from 16,249. This is the multi-source BFS that finally measured difficulty correctly.
- Our Chrome extension sat untouched for four months. Review took one day.MapWit is a free Chrome extension for Google Maps lead generation: it scores the local businesses in a search and exports them to Excel, with no server and no account. It sat untouched for four months, went from zero tests to 171 in one day, and passed Chrome Web Store review on the first round.