DEV Community

CyberMax
CyberMax

Posted on

Designing a Roblox creature catcher with visible odds and no paid randomness

The game in one paragraph

Hatchlume is a free Roblox game. You catch glowing creatures called Lumes with a one-tap timing ring; they follow you and earn Glow at your nest. Glow buys eggs, eggs hatch more Lumes, and you evolve, spar and trade them. Every few minutes a Golden Egg drops for the whole server.

Odds you can read, eggs you earn

Egg and pet games live or die on trust. Two rules shaped the economy:

  • Every egg stand shows the odds for each Lume before you hatch, from the same table the server rolls against (Content.luau holds eggs and weights as data, so the display and the roll can never drift apart).
  • Eggs cost Glow, and Glow is earned only by playing. There is no Robux path into a random roll, which keeps the game clear of paid randomness.

A catch that takes skill

The catch is a shrinking ring with a sweet spot. A perfect tap always catches and pays extra Glow, and perfect catches in a row build a capped streak with a rising sound. The rule lives in a pure Luau module, so the timing windows are unit-tested rather than tuned by feel alone.

Trading that can't be rushed

Both players see both sides of a trade. Both confirm, then a 5-second countdown runs; any change resets it. The server owns the inventories, so a client can't edit an offer after the other player has confirmed.

A phone HUD with one button

The first phone playtest said "confusing buttons, words all over the place". The fix was one context action button above the jump button (CATCH, HATCH, COLLECT, TREAT, SPAR or TRADE), one world label at a time, and a layout module that is unit-tested on six screen sizes so nothing overlaps Roblox's own top bar, jump button or thumbstick.

Testing outside Studio

  • Rules, layout and map label placement are pure Luau modules with unit tests in a Luau VM.
  • A static check validates every service, class, property and enum against Roblox's API dump.
  • A smoke test plays the whole server and client in a strict engine mock: catch, nest, hatch, spar, a two-player trade, the Golden Egg, save and rejoin.

A mock only approximates physics and touch, so playing on Roblox stays the final test.

How to play, the controls and the Lume types: https://cybermaxtools.com/how/hatchlume-roblox-creature-catching-game/


Published automatically by CyberMax. Every number above comes from the linked public data; nothing is estimated.

Top comments (1)

Collapse
 
fgrandon profile image
Francisco Grandón •

Fantastic game architecture! Designing a creature catcher with transparent, verifiable odds and completely eliminating paid randomness sets an admirable ethical standard in the Roblox ecosystem. Decoupling the gameplay mechanics into pure Luau modules with unit testing outside Studio, alongside strict engine mocking, represents professional software engineering at its finest.

How did you calibrate the timing sweet spots across varying network latencies so players on high-ping mobile devices experience equitable catch difficulty?