Contents
Key takeaways
- A pure C# cube engine, tested, handling 2×2 to 5×5 with no rounding errors.
- Scrambling with real moves guarantees an always-solvable cube, and hints are always right.
- Duels on one shared screen, against a “human-like” robot or online via Unity Gaming Services.
- 60 skins fully described as data, with automated colour readability tests.
- Purchases credited exactly once, even after an interruption, and remotely fixable settings.
Cubix is a 3D cube game for iPhone and Android, played in portrait, from 2×2 to 5×5. Swipe on a piece to turn its row, swipe beside the cube to rotate it. Behind that simple gesture: a cube engine written from scratch, three hundred levels, online duels with no server to manage and sixty skins described as data.
What Cubix does, and who it is for
Cubix targets casual players as well as cube regulars. Beginners are guided from the very first launch; experienced players get timed 5×5, duels and a global leaderboard.
The first launch has no menu: just the cube, scrambled with three moves. An animated hand and a glowing line show each gesture to put it back in order, and a wrong gesture is undone automatically. The player then learns to rotate the cube, and “Let’s go!” opens the home screen.



Features
- A 300-level journey across 15 worlds of 20 levels, from the Village to the Heart of Darkness. Each level has a fixed scramble, the same for everyone, and a move target for three stars.
- From 2×2 to 5×5: the 5×5 and the timer arrive at level 121, with time going down from 15 minutes to 4 minutes at level 300.
- Free play with no time limit, with a “Cold / Hot” gauge showing whether you are getting closer to the solution.
- Survival: one minute to start, increasingly scrambled cubes, time earned with each cube and a global leaderboard.
- Daily challenge: a 3×3 to solve in three minutes, and a chest to open every four hours.
- Duels: two players on the same phone, against a robot with six levels, or online (quick match or invite by code), with emotes.
- Duel powers: freeze, ink, scramble, mirror, whirlwind, steal, shield and turbo.
- Move-by-move hints with tokens, and 60 skins to unlock by playing, with coins or with gems.
- Eleven languages, the phone’s language by default, with a choice in Settings.
A cube engine written from scratch
The heart of Cubix is pure cube logic, with no dependency on Unity, covered by automated tests. It rests on a few principles:
- each piece keeps its position, in doubled coordinates so it stays in whole numbers whatever the cube size, and its orientation, as an integer matrix of quarter turns: no rounding error can build up;
- a move is the rotation of a slice (axis, slice, direction), and the same engine handles 2×2, 3×3, 4×4 and 5×5;
- scrambling uses real moves only, so the cube is always solvable;
- “solved” means each face shows a single colour, even if the whole cube has been flipped over.
On screen, the rounded pieces and domed stickers are meshes generated by code. The gesture follows the finger: swiping on a piece turns its slice in real time, swiping beside the cube or with two fingers rotates it.
Duels: real time with no server to manage
The duel is the most demanding part of the game. Both players get the same scramble; the first to solve two cubes wins, in rounds of three minutes at most.
- Two players on the same phone: the screen is split, the top half is flipped for the player sitting opposite, and each plays in their half at the same time thanks to multi-touch.
- Against the robot: six levels, from Beginner to Wild. To stay believable, the robot always keeps at least 4% errors, at least 0.6 seconds of thinking per move and random hesitations.
- Online: Unity Gaming Services provides the two-player lobby and a relay for messages. Each phone plays its own cube and sends its moves, which the other replays on its copy. The host decides the rounds.
Several edge cases had to be handled. Two players can start a quick match at the same moment and each wait on their own: the one whose match is more recent closes it and joins the other. An opponent who has sent nothing for six seconds is treated as gone (app closed, network lost). And only compatible versions of the game can find each other.
Powers add depth: three good moves fill the gauge, a bad move removes one, and putting the golden piece back in place also grants a power. The player who is behind draws comeback powers more often.



Sixty skins described as data
Skins are not just colour sets. Each one combines a sticker shape, a cube silhouette (cube, sphere or star), a material with a procedural pattern (wood, marble, nebula, scales, circuits…), animations, particles, an effect on every move and its own sounds, synthesised by the game. Some have a glowing core you can see shining between the pieces when a slice turns.
Everything is described in a configuration file: adding a skin means adding an entry, without touching the code. Automated tests check the playability rules: the six face colours must stay clearly distinct, and the inside of the pieces must contrast with the body, otherwise the rotation would no longer be visible.
The fifteen worlds of the journey also have their own animated backdrop during play (snow, bubbles, embers, rain, lightning, fireflies), set world by world in the configuration and rendered by a dedicated shader.



Purchases, ads and remote settings
- In-app purchases with RevenueCat: hint token and gem packs, ad-free option. For each product, the game compares the number of known purchases with the number already credited: an interrupted purchase is credited on the next launch, never twice.
- Google AdMob ads: in-game banner, rewarded videos and an occasional full-screen ad after a loss, with Google’s consent form in Europe.
- Game Center and Google Play Games linked to the player’s anonymous account, to recover their player identity on another phone.
- Remotely corrected settings (Unity Remote Config): balancing, skins and translations. Each patch is checked against the same rules as the tests; if it is invalid, it is ignored entirely and the game keeps its shipped settings.
- Translations: the French text in the code serves as the key, and fallback fonts cover the alphabets the main font lacks.
Tech stack
Cubix is built with Unity 6.5 and C#, with a UI Toolkit interface and custom shaders for skins, particles and backdrops. Online services run on Unity Gaming Services (anonymous sign-in, leaderboard, sessions, relay, Remote Config). On top of that: RevenueCat, Google AdMob, Google Analytics for Firebase and native haptic feedback on iPhone. Automated tests cover the cube logic, duel rules, levels, skins and translations.
What this project shows
Cubix was designed and built end to end by Ahmed: game design, cube engine, gestures, online duels, leaderboard, shop and game page. It brings together what a mobile game really demands: exact, tested logic, real time between two phones, a shop that never loses a purchase and settings that can be fixed without waiting for store review.
Have a game or mobile app to build? Get in touch. The video and every screen of the game are on the Cubix page.
Frequently asked questions
Can the cube end up unsolvable?
No. Scrambling only uses real moves from a solved cube, so a solution always exists, and the hint derives the next move from it.
How do online duels work without a dedicated server?
Unity Gaming Services provides the two-player lobby and a message relay. Each phone plays its cube and sends its moves; the host phone decides the rounds.
Can balancing be fixed without publishing an update?
Yes. Game settings, skins and translations can be corrected remotely with Unity Remote Config. Each patch is checked before being applied on the next launch.