Page 1 of 29
System Requirements Document for kerajaan-naga-donghua
1. Introduction
Kerajaan Naga (Season 1) is a single, complete Android APK that delivers one continuous donghua-style cultivation fantasy world: a large open-world map with no shrinking zone, free exploration, cultivator housing, a player-to-player spirit market, demon hunting, dragon-mountain meditation, a gathering plaza, player-founded sects with server-wide fame and rankings, sect-versus-sect wars over market territory, four starter tianko classes, and a Batu Roh shop whose purchases are paid by manual DANA transfer directly to the owner.
The product intent is a power fantasy with a social ladder: players explore a glowing world, grow a character, build and lead a sect, fight rival sects, and buy sultan-tier gear — while the owner personally receives every rupiah into their own DANA account and personally approves each order. The visual register is donghua tianko (Soul Land / BTTH): all characters are handsome and beautiful, rendered in a cinematic future-tech cultivation language of dark voids, glowing dragon qi, and motion as the hero.
Audience: Indonesian mobile players who already play Free Fire and Mobile Legends — young, communal, status-driven, hungry for "kece" visuals, sect rivalry, and sultan-tier gear. The owner (Zams Animasi) is also a first-class user of the product through the /admin surface.
Page 2 of 29
2. System Overview
Kerajaan Naga Season 1 is delivered as one APK containing the entire experience: the open world, all five map locations, housing, the spirit market, sect systems, party play, sect war, rankings, the store, the manual DANA payment flow, and the owner admin panel.
Actors:
- Pemain (Player) — explores the zoneless open world, chooses one of four tianko classes, buys and enters cultivator housing, stores items, trades weapons/armour/Batu Roh with other players, hunts demons and Demon Bosses with friends, meditates for EXP, gathers at the plaza, and buys Batu Roh/zirah via manual DANA transfer.
- Pemimpin Sekte — a player who founds a sect with a name and flag, recruits members, invites friends, organizes shared cultivation and 4-person demon-hunting parties, and leads sect-versus-sect war to seize market territory.
- Admin Pemilik (Owner) — the owner, who manages
/admin: edits the DANA number and DANA name shown to buyers, uploads the DANA QR photo, reviews all incoming transfer proofs marked Pending, and presses APPROVE (auto-delivering Batu Roh/zirah to the buyer) or TOLAK.
Accepted behavior in scope: the full zoneless open-world map and its five locations; cultivator housing levels 1–10 with interiors and item storage; the Spirit Market for player-to-player weapon, armour, and Batu Roh trade; Demon Forest hunting with Demon Bosses and Batu Roh drops; Dragon Mountains group meditation for EXP; the Main Square gathering space; sect creation with name and flag, recruitment, server-wide fame and rankings; friend invites, shared cultivation, and 4-person demon-hunting parties; sect-versus-sect war over market territory; four starter classes (Pedang Naga – Tebasan Api, Penyihir Roh – Hujan Meteor, Pemanah Bayangan – Beku, Assassin Naga Hitam – the most OP sultan class); the Batu Roh currency; the store with its exact price ladder; and the manual DANA payment flow with screenshot proof upload and owner approve/reject.
Narrow exclusions: No TriPay, Duitku, or Xendit API is used. Money goes 100% directly into the owner's DANA account and never through 8080.ai. Payment approval is always manual by the owner. The map has no shrinking zone.
Page 3 of 29
2a. Product Interpretation and Delivery Boundary
Kerajaan Naga is a first-party application with its own identity and its own custom UI. Players and sect leaders create their own accounts and sign back in to resume durable progress — character class and level, EXP, Batu Roh balance, owned housing, stored items, sect membership and leadership, party state, war participation, and purchase history. The owner signs in with owner authorization before /admin becomes usable; the DANA number, DANA name, and QR photo the owner edits there are the same values every buyer sees in the purchase popup.
Payment is deliberately outside any gateway. The buyer transfers DANA directly to the owner's personal account, uploads a screenshot of the transfer and enters the nominal amount, and the order sits Pending until the owner approves or rejects it. Approval is what delivers Batu Roh or zirah into the buyer's account. No third-party payment provider is integrated, and no funds pass through any intermediary.
Everything described in this document is current for Season 1. No future-horizon features are accepted in this thread.
2b. Source Content Inventory
Not applicable — no reference directive in this thread declares a content_source.
2c. Page Content and Component Coverage
Page 4 of 29
Landing
- Information/state: Anonymous entry surface presenting Kerajaan Naga, the open cultivation world, the players it is for, and the main features before any protected access. Full-bleed dark void with the black dragon hero occupying the right 60% of the viewport, bleeding off the top and right edges; type stack low-left.
- Primary actions:
MASUK DUNIA (solid amber) leading into the world; PILIH 4 KELAS (1px cyan-outlined) leading into class selection.
- Supporting actions: Entry into Login and Sign Up for returning and new players.
- Domain entities: Product identity (Kerajaan Naga, Season 1), the four tianko classes, the five map locations, server name and online count.
- Component responsibilities: Hero dragon subject with cyan qi along the spine and amber fire under the wings; asymmetric type stack (
KERAJAAN NAGA in Space Grotesk 700, SEASON 1 · DUNIA KULTIVASI TERBUKA as uppercase micro-label); two hard-edged controls; thin radial HUD ring top-right showing server name and online count in JetBrains Mono.
- States: Loading — hero subject streams in over the void with a light sweep. Empty — not applicable (static entry content). Success — controls are reachable and route into the world or class selection. Error — if the hero subject fails to load, the void ground, type stack, and both controls remain fully usable. Recovery — retry the hero subject without blocking entry. Reduced motion — one lit still frame of the dragon, no pulsing, controls unchanged.
Login
- Information/state: Returning verification surface for players, sect leaders, and the owner, resuming durable character progress, ownership, transactions, sect state, and administration.
- Primary actions: Submit credentials to resume the account.
- Supporting actions: Navigate to Sign Up; return to Landing.
- Domain entities: Account identity, session continuity.
- Component responsibilities: Credential fields; submit control; link to Sign Up; error region.
- States: Loading — submit control shows in-progress. Empty — fields blank with labels. Success — session established and the actor continues to their prior context (world, character, or
/admin). Error — invalid credentials shown inline without clearing entered values. Recovery — retry submission; navigate to Sign Up if the account does not exist.
Sign Up
- Information/state: Self-service registration for players and sect leaders; no invitation or provisioning boundary is set for starting to use the application.
- Primary actions: Create an account.
- Supporting actions: Navigate to Login; return to Landing.
- Domain entities: Account identity.
- Component responsibilities: Registration fields; submit control; link to Login; validation region.
- States: Loading — submit control shows in-progress. Empty — fields blank with labels. Success — account created and the actor proceeds to character creation. Error — validation or duplicate-account errors shown inline. Recovery — correct the field and resubmit.
Page 5 of 29
Character
- Information/state: Class selection and character progress surface. The player chooses exactly one of four tianko classes at the start: Pedang Naga (Tebasan Api), Penyihir Roh (Hujan Meteor), Pemanah Bayangan (Beku), Assassin Naga Hitam (the most OP sultan class). Character progress is stored durably.
- Primary actions: Select a class; confirm the choice to begin play.
- Supporting actions: Review each class's identity and signature ability before confirming.
- Domain entities: Character, class, class ability, level, EXP, cultivation stage.
- Component responsibilities: Four class cards in donghua tianko register (long-haired, sharp-featured, ornate robes, luminous qi trails); ability name per class; confirmation control; character progress panel with level and EXP in tabular JetBrains Mono inside a clipped-corner metal plate; radial HUD ring around the cultivation stage.
- States: Loading — class cards stream in. Empty — no class chosen yet; confirmation disabled. Success — class locked and the player enters the world. Error — confirmation failure leaves the selection intact for retry. Recovery — reselect and reconfirm.
World Map
- Information/state: The home screen and main exploration space — a full-viewport open world with no shrinking zone, freely traversable, with five floating glass POI markers: Perumahan Kultivator, Pasar Roh, Hutan Iblis, Pegunungan Naga, Alun-Alun.
- Primary actions: Move freely across the map; tap a POI marker to enter that location.
- Supporting actions: Read the right-edge HUD rail (Batu Roh counter, EXP ring, party of 4 avatars, sekte crest); open the store, sect, party, war, and ranking surfaces.
- Domain entities: Map terrain, POI locations, player position, Batu Roh balance, EXP, party roster, sect crest.
- Component responsibilities: Full-viewport terrain with glowing biome rings; bottom-left joystick pad; right-edge vertical HUD rail; five POI markers pulsing on a 2.4s breathing loop; camera push-in on location entry.
- States: Loading — terrain and biome rings stream in. Empty — no party formed and no sect joined; HUD rail shows those slots unoccupied. Success — free movement and location entry work. Error — if terrain streaming fails, the HUD rail and POI list remain usable. Recovery — retry terrain load; POI list becomes a vertically scrollable column under reduced motion.
Housing
- Information/state: Cultivator housing surface covering purchase of a home from Level 1 Gubuk Bambu through Level 10 Istana Naga Emas, entry into the interior, and item storage inside the home.
- Primary actions: Buy a house at a chosen level; enter the interior; store items.
- Supporting actions: Review the level ladder and the owned home's tier; retrieve stored items.
- Domain entities: House, house level (1–10), interior, storage contents, Batu Roh cost.
- Component responsibilities: House level ladder from Gubuk Bambu to Istana Naga Emas; radial HUD ring around the house tier; interior view; storage panel; Batu Roh cost in tabular JetBrains Mono.
- States: Loading — level ladder loads. Empty — no house owned; purchase options shown. Success — house owned, interior enterable, items stored and retrievable. Error — insufficient Batu Roh or purchase failure shown with the balance unchanged. Recovery — earn or buy more Batu Roh and retry.
Page 6 of 29
Spirit Market
- Information/state: Pasar Roh at the centre of the map — the player-to-player trading surface for weapons, armour, and Batu Roh.
- Primary actions: List a weapon, armour piece, or Batu Roh for sale; browse listings; complete a trade with another player.
- Supporting actions: Filter and inspect listings; review own active listings.
- Domain entities: Listing, weapon, armour, Batu Roh, seller, buyer, price.
- Component responsibilities: Listing grid with hexagon rarity chips and coded rarity glows; price in tabular JetBrains Mono inside clipped-corner metal plates; trade confirmation; own-listings panel.
- States: Loading — listings load. Empty — no listings match; prompt to create one. Success — trade completes and both sides' holdings update. Error — trade failure (listing withdrawn, insufficient Batu Roh) shown without partial transfer. Recovery — refresh listings and retry.
Demon Forest
- Information/state: Hutan Iblis — the hunting ground for demons and Demon Bosses together with friends, dropping Batu Roh.
- Primary actions: Engage demons; engage a Demon Boss with the party; collect Batu Roh drops.
- Supporting actions: Form or join a party before hunting; track party state during the hunt.
- Domain entities: Demon, Demon Boss, party, Batu Roh drop, combat state.
- Component responsibilities: Hunting field with demon and Demon Boss encounters; party roster of up to 4 avatars; drop readout with rolling number counters; HP values in tabular JetBrains Mono.
- States: Loading — encounter field loads. Empty — no demons currently engaged. Success — demons or the Demon Boss defeated and Batu Roh dropped and collected. Error — defeat or failed engagement leaves the player able to withdraw and regroup. Recovery — heal, regroup with the party, and re-engage.
Dragon Mountains
- Information/state: Pegunungan Naga — the shared cultivation ground where sitting in meditation grants EXP.
- Primary actions: Sit in meditation to gain EXP; cultivate together with others.
- Supporting actions: Track EXP gain and cultivation stage during the session.
- Domain entities: Meditation session, EXP, cultivation stage, co-cultivators.
- Component responsibilities: Meditation seating area; EXP ring; cultivation stage radial HUD ring; EXP counter rolling up on reward in tabular JetBrains Mono.
- States: Loading — cultivation ground loads. Empty — no session started. Success — EXP granted and the cultivation stage advances. Error — session interruption ends the gain without corrupting progress. Recovery — resume meditation.
Page 7 of 29
Main Square
- Information/state: Alun-Alun — the gathering space for all players.
- Primary actions: Gather with other players; see who is present.
- Supporting actions: Move from the plaza into any other location or surface.
- Domain entities: Present players, gathering state.
- Component responsibilities: Open plaza space; presence display of gathered players; POI markers back into the world.
- States: Loading — plaza loads. Empty — no other players present. Success — players gather and are visible to each other. Error — presence feed failure leaves the plaza traversable. Recovery — refresh presence.
Sect Management
- Information/state: Sect creation and administration surface — founding a sect with a name and flag, recruiting members, and managing invitations.
- Primary actions: Create a sect with a name and flag; recruit members; invite friends into the sect.
- Supporting actions: Review the sect roster; manage pending invitations.
- Domain entities: Sect, sect name, sect flag, member, invitation, sect leader.
- Component responsibilities: Sect name field; flag selection; luminous crest rendered as a radial HUD ring around the sect name in Space Grotesk caps; member roster; invitation controls.
- States: Loading — sect data loads. Empty — no sect founded or joined; creation and invitation options shown. Success — sect founded or joined and members appear on the roster. Error — name conflict or invitation failure shown inline. Recovery — adjust the name or resend the invitation.
Party
- Information/state: Party surface for forming and continuing a party of at most four people for shared hunting and cultivation.
- Primary actions: Form a party; invite players; join an existing party.
- Supporting actions: View the party roster of up to 4 avatars; leave the party.
- Domain entities: Party, party member, party leader, party size limit of 4.
- Component responsibilities: Party roster of up to 4 avatars; invite control; party-size indicator enforcing the 4-person limit.
- States: Loading — party state loads. Empty — no party formed. Success — party formed with up to 4 members and shared activities enabled. Error — invitation to a full party rejected with the limit stated. Recovery — free a slot or join another party.
Page 8 of 29
Sect War
- Information/state: Sect-versus-sect war surface for contesting market territory, with war banners and the contested Pasar Roh region.
- Primary actions: Enter the war on behalf of one's sect; contest the market territory.
- Supporting actions: Track war state and which sect currently holds the territory.
- Domain entities: War, participating sects, contested territory (Pasar Roh), territory holder.
- Component responsibilities: War banners with a light sweeping across their edge; radial layout around the central sect crest; the Pasar Roh prize marked as an amber-lit node on the map.
- States: Loading — war state loads. Empty — no active war. Success — war resolved and the winning sect recorded as territory holder. Error — failed entry into the war leaves the sect's prior state intact. Recovery — re-enter when the war is active.
Sect Rankings
- Information/state: Server-wide sect fame and leaderboard surface — sects are known across one server and ranked on a leaderboard.
- Primary actions: View the server leaderboard of sects.
- Supporting actions: Inspect a ranked sect's crest and standing.
- Domain entities: Sect, sect fame, rank, server.
- Component responsibilities: Ring of orbiting crests ranked by radius around a central crest; rank numerals in tabular JetBrains Mono.
- States: Loading — rankings load. Empty — no ranked sects yet. Success — sects displayed in rank order. Error — ranking fetch failure leaves the last known order visible. Recovery — refresh rankings.
Page 9 of 29
Store
- Information/state: Item and package store displaying the exact price ladder in Batu Roh and rupiah, with the manual DANA purchase popup.
- Zirah Standar Bambu Level 1 = 50 Batu Roh = Rp5.000
- Zirah Kulit Naga Level 5 = 150 Batu Roh = Rp15.000
- Zirah Kaisar Naga Hitam OP Goreng Level 10 (efek sayap api naga, paling kece) = 1150 Batu Roh = Rp115.000
- Paket 15K = 150 Batu Roh = Rp15.000
- Paket Sultan 115K = Zirah OP Goreng + Pedang Langit + 1000 Batu Roh
- Primary actions: Press
BELI BATU ROH / BELI ZIRAH; open the large purchase popup.
- Supporting actions: Inspect each item and package; proceed to Payment Submission.
- Domain entities: Item, package, zirah, Pedang Langit, Batu Roh, price in Batu Roh, price in rupiah, DANA number, DANA name, DANA QR photo.
- Component responsibilities: Shop cards as clipped-corner (12px) forged-metal plates with hexagon rarity chips and coded rarity glows (#7CF6FF common → #4DE08A rare → #B07CFF epic → #FFB03A sultan); rotating Zirah Kaisar Naga Hitam armour with flame wings on the sultan card; full-screen glass DANA console showing
TRANSFER DANA KE: [NOMOR DANA SAYA] ATAS NAMA: [NAMA SAYA] as the largest type on screen in amber, with the price ladder as a ruled telemetry list beside it; DANA QR photo; all values in tabular JetBrains Mono.
- States: Loading — store items and the current DANA identity load. Empty — not applicable (the price ladder is fixed). Success — popup shows the current DANA number, DANA name, and QR photo with the full price list. Error — if the DANA identity fails to load, the popup does not present stale or blank transfer details. Recovery — retry loading the DANA identity before purchase.
Payment Submission
- Information/state: Submission surface for a Batu Roh or zirah order — the buyer uploads a DANA transfer screenshot and enters the nominal amount, and the order becomes Pending until the owner decides.
- Primary actions: Upload the DANA transfer screenshot; enter the nominal amount; submit the order.
- Supporting actions: Review the order summary and the DANA transfer details before submitting.
- Domain entities: Order, transfer proof screenshot, nominal amount, Pending status, ordered item or Batu Roh quantity.
- Component responsibilities: Upload-proof field framed as a HUD drop-zone with a scanning line; nominal amount field in tabular JetBrains Mono; order summary; submit control.
- States: Loading — submission surface loads with the order summary. Empty — no proof uploaded and no nominal entered; submit disabled. Success — order recorded as Pending and awaiting owner review. Error — missing proof, missing nominal, or upload failure shown inline without losing entered data. Recovery — re-upload the screenshot or correct the nominal and resubmit.
Page 10 of 29
/admin
- Information/state: The owner's admin surface, reachable at
/admin, for managing the DANA identity shown to buyers and deciding every incoming transfer proof.
- Primary actions: Edit
NOMOR DANA SAYA (changeable at any time, shown to buyers); edit NAMA DANA SAYA (changeable); upload the DANA QR photo; review the list of all incoming transfer proofs marked Pending; press APPROVE (automatically delivering Batu Roh/zirah to the buyer) or TOLAK.
- Supporting actions: Review each proof's screenshot and nominal against the order.
- Domain entities: DANA number (default 083870821316), DANA name (default EKSIS), DANA QR photo, transfer proof, Pending status, approve decision, reject decision, delivered Batu Roh/zirah.
- Component responsibilities: DANA number field; DANA name field; QR photo upload; Pending proof list with screenshot and nominal in tabular JetBrains Mono;
APPROVE and TOLAK controls; delivery confirmation readout.
- States: Loading — admin data loads after owner authorization. Empty — no Pending proofs; the DANA identity fields remain editable. Success —
APPROVE delivers the Batu Roh/zirah to the buyer and the proof leaves Pending; TOLAK closes the proof without delivery. Error — failed save of the DANA identity or failed delivery shown inline with the proof still Pending. Recovery — resave the identity or retry the decision.
Page 11 of 29
3. Functional Requirements
FR-01 — Single complete APK (explicit)
As a Pemain, I should receive Kerajaan Naga Season 1 as one complete APK that contains the open world, housing, market, sect, war, classes, store, and manual DANA payment together, so that I can play the whole game without a second app.
- Trigger/input: Install and open the APK.
- Observable result: All accepted surfaces are reachable from within the single application.
- Access state: Anonymous entry first; protected surfaces after identity is established.
- Failure/recovery: If a surface fails to load, the rest of the application remains usable and the surface can be retried.
- Continuation: The player proceeds into the world.
- Provenance: explicit.
FR-02 — Product identity and donghua tianko style (explicit)
As a Pemain, I should see the product named Kerajaan Naga and rendered in donghua tianko style like Soul Land / BTTH with all characters handsome and beautiful, so that the world feels like the cultivation fantasy I came for.
- Trigger/input: Open any surface.
- Observable result: The name Kerajaan Naga and the donghua tianko character register are consistently presented.
- Access state: All surfaces.
- Failure/recovery: If character art fails to load, the surface remains usable.
- Continuation: The player continues in the same surface.
- Provenance: explicit.
FR-03 — Zoneless open-world map (explicit)
As a Pemain, I should explore one large open-world map with no shrinking zone, so that I can roam freely wherever I want.
- Trigger/input: Enter World Map and move.
- Observable result: The player moves freely across the map; no zone ever closes in.
- Access state: Protected — requires an established identity.
- Failure/recovery: If terrain streaming fails, the HUD rail and POI list remain usable and terrain can be retried.
- Continuation: The player continues exploring or enters a POI.
- Provenance: explicit.
FR-04 — Cultivator housing purchase, entry, and storage (explicit)
As a Pemain, I should buy a house from Level 1 Gubuk Bambu up to Level 10 Istana Naga Emas, enter inside it, and store items there, so that I own a home in the world and have somewhere to keep my belongings.
- Trigger/input: Choose a house level and purchase it with Batu Roh; enter the interior; place items into storage.
- Observable result: The house is owned at the chosen level, its interior is enterable, and stored items are held and retrievable.
- Access state: Protected — requires an established identity.
- Failure/recovery: Insufficient Batu Roh or a failed purchase leaves the balance unchanged and the level ladder available for retry.
- Continuation: The player enters the home or continues exploring.
- Provenance: explicit.
FR-05 — Spirit Market player-to-player trade (explicit)
As a Pemain, I should buy and sell weapons, armour, and Batu Roh with other players at Pasar Roh in the centre of the map, so that I can trade what I own with the rest of the server.
- Trigger/input: List an item or Batu Roh, or select another player's listing and confirm the trade.
- Observable result: The trade completes and both participants' holdings update.
- Access state: Protected — requires an established identity.
- Failure/recovery: A withdrawn listing or insufficient Batu Roh fails the trade without any partial transfer; the player refreshes listings and retries.
- Continuation: The player returns to browsing or to the world.
- Provenance: explicit.
FR-06 — Demon Forest hunting with Batu Roh drops (explicit)
As a Pemain, I should hunt demons and Demon Bosses together with friends in Hutan Iblis and receive Batu Roh drops, so that I can earn the game currency through combat.
- Trigger/input: Engage demons or a Demon Boss, alone or with the party.
- Observable result: Defeated demons and Demon Bosses drop Batu Roh that the player collects.
- Access state: Protected — requires an established identity.
- Failure/recovery: Defeat or a failed engagement lets the player withdraw and regroup; no progress is corrupted.
- Continuation: The player regroups with the party and re-engages, or leaves the forest.
- Provenance: explicit.
FR-07 — Dragon Mountains meditation for EXP (explicit)
As a Pemain, I should cultivate together at Pegunungan Naga by sitting in meditation to gain EXP, so that my character grows.
- Trigger/input: Sit in meditation, alone or alongside others.
- Observable result: EXP is granted and the cultivation stage advances.
- Access state: Protected — requires an established identity.
- Failure/recovery: An interrupted session ends the gain without corrupting progress; the player resumes meditation.
- Continuation: The player continues meditating or returns to the world.
- Provenance: explicit.
FR-08 — Main Square gathering (explicit)
As a Pemain, I should gather with all players at Alun-Alun, so that the server has a shared meeting place.
- Trigger/input: Enter Main Square.
- Observable result: The player is present in the plaza and can see other gathered players.
- Access state: Protected — requires an established identity.
- Failure/recovery: A presence-feed failure leaves the plaza traversable; presence can be refreshed.
- Continuation: The player moves on to another location.
- Provenance: explicit.
FR-09 — Found a sect with name and flag (explicit)
As a Pemimpin Sekte, I should create my own sect by giving it a name and a flag, so that my sect has an identity in the world.
- Trigger/input: Enter a sect name and choose a flag, then confirm creation.
- Observable result: The sect exists with that name and flag, and the founder leads it.
- Access state: Protected — requires an established identity.
- Failure/recovery: A name conflict or creation failure is shown inline and the entered name and flag are preserved for retry.
- Continuation: The leader proceeds to recruit members.
- Provenance: explicit.
FR-10 — Recruit members and invite friends to the sect (explicit)
As a Pemimpin Sekte, I should recruit members and invite my friends into the sect, so that my sect grows and my friends play alongside me.
- Trigger/input: Send a recruitment or friend invitation to a player.
- Observable result: Accepted invitations add the player to the sect roster.
- Access state: Protected — requires an established identity.
- Failure/recovery: A failed invitation is shown inline and can be resent.
- Continuation: The leader continues building the roster.
- Provenance: explicit.
FR-11 — Server-wide sect fame and leaderboard (explicit)
As a Pemimpin Sekte, I should have my sect known across one server and placed on a leaderboard, so that my sect's standing is visible to everyone on the server.
- Trigger/input: View Sect Rankings.
- Observable result: Sects are displayed in rank order for the server, including the leader's own sect.
- Access state: Protected — requires an established identity.
- Failure/recovery: A ranking fetch failure leaves the last known order visible; rankings can be refreshed.
- Continuation: The leader returns to sect management or the world.
- Provenance: explicit.
FR-12 — Party of four for shared play (explicit)
As a Pemain, I should form a party of at most four people to hunt demons and cultivate together, so that I can play with friends.
- Trigger/input: Form a party and invite players, or join an existing party.
- Observable result: The party holds up to four members and shared hunting and cultivation are enabled for it.
- Access state: Protected — requires an established identity.
- Failure/recovery: An invitation to a full party is rejected with the four-person limit stated; the player frees a slot or joins another party.
- Continuation: The party proceeds to Hutan Iblis or Pegunungan Naga.
- Provenance: explicit.
FR-13 — Sect-versus-sect war over market territory (explicit)
As a Pemimpin Sekte, I should lead my sect into war against another sect to seize the market territory, so that my sect can control Pasar Roh.
- Trigger/input: Enter the war on behalf of the sect and contest the market territory.
- Observable result: The war resolves and the winning sect is recorded as the holder of the market territory.
- Access state: Protected — requires an established identity.
- Failure/recovery: A failed entry into the war leaves the sect's prior state intact; the leader re-enters when the war is active.
- Continuation: The leader returns to sect management or the world.
- Provenance: explicit.
FR-14 — Four starter tianko classes (explicit)
As a Pemain, I should choose one of four tianko classes at the start — Pedang Naga (Tebasan Api), Penyihir Roh (Hujan Meteor), Pemanah Bayangan (Beku), or Assassin Naga Hitam (the most OP sultan class) — so that my character has a defined fighting identity.
- Trigger/input: Select a class on the Character surface and confirm.
- Observable result: The chosen class is locked to the character and its signature ability is available.
- Access state: Protected — requires an established identity.
- Failure/recovery: A confirmation failure leaves the selection intact for retry.
- Continuation: The player enters the world with the chosen class.
- Provenance: explicit.
FR-15 — Batu Roh as the in-game currency (explicit)
As a Pemain, I should use Batu Roh as the in-game currency, so that all in-game value is denominated in one currency.
- Trigger/input: Earn Batu Roh from demon drops, trade for it at Pasar Roh, or receive it from an approved purchase.
- Observable result: The Batu Roh balance updates and is displayed in the HUD rail.
- Access state: Protected — requires an established identity.
- Failure/recovery: A failed balance update leaves the previous balance intact.
- Continuation: The player spends or accumulates Batu Roh.
- Provenance: explicit.
FR-16 — Store price ladder (explicit)
As a Pemain, I should see the exact store price ladder in Batu Roh and rupiah, so that I know precisely what each item and package costs.
- Trigger/input: Open Store.
- Observable result: The store shows Zirah Standar Bambu Level 1 = 50 Batu Roh = Rp5.000; Zirah Kulit Naga Level 5 = 150 Batu Roh = Rp15.000; Zirah Kaisar Naga Hitam OP Goreng Level 10 (efek sayap api naga, paling kece) = 1150 Batu Roh = Rp115.000; Paket 15K = 150 Batu Roh = Rp15.000; and Paket Sultan 115K = Zirah OP Goreng + Pedang Langit + 1000 Batu Roh.
- Access state: Protected — requires an established identity.
- Failure/recovery: If store data fails to load, the store can be retried.
- Continuation: The player proceeds to purchase.
- Provenance: explicit.
FR-17 — Purchase buttons and large DANA popup (explicit)
As a Pemain, I should press BELI BATU ROH / BELI ZIRAH and see a large popup reading TRANSFER DANA KE: [NOMOR DANA SAYA] ATAS NAMA: [NAMA SAYA] together with the price list, so that I know exactly where to send money and how much.
- Trigger/input: Press
BELI BATU ROH or BELI ZIRAH.
- Observable result: A large popup appears showing the current DANA number, the current DANA name, and the price list.
- Access state: Protected — requires an established identity.
- Failure/recovery: If the DANA identity fails to load, the popup does not present stale or blank transfer details; the identity is retried before purchase.
- Continuation: The player proceeds to upload proof.
- Provenance: explicit.
FR-18 — Upload transfer proof and enter nominal (explicit)
As a Pemain, I should upload a screenshot of my DANA transfer and enter the nominal amount, so that the owner can verify my payment.
- Trigger/input: Upload the DANA transfer screenshot and enter the nominal amount, then submit.
- Observable result: The order is recorded with the screenshot and nominal and is marked Pending.
- Access state: Protected — requires an established identity.
- Failure/recovery: Missing proof, missing nominal, or an upload failure is shown inline without losing entered data; the player re-uploads or corrects the nominal and resubmits.
- Continuation: The order awaits the owner's decision.
- Provenance: explicit.
FR-19 — Owner-editable DANA identity (explicit)
As an Admin Pemilik (Owner), I should edit NOMOR DANA SAYA and NAMA DANA SAYA at any time and upload my DANA QR photo on /admin, so that buyers always see my current DANA details.
- Trigger/input: Edit the DANA number field, edit the DANA name field, or upload the QR photo on
/admin, then save.
- Observable result: The saved DANA number, DANA name, and QR photo are the values shown to buyers in the purchase popup.
- Access state: Protected — requires owner authorization.
- Failure/recovery: A failed save is shown inline and the previously saved identity remains in effect; the owner resaves.
- Continuation: The owner continues reviewing proofs.
- Provenance: explicit.
FR-20 — Default DANA identity values (explicit)
As an Admin Pemilik (Owner), I should have NOMOR DANA SAYA: 083870821316 and NAMA DANA SAYA: EKSIS as the default values that I can change through admin, so that the correct account is shown from the start.
- Trigger/input: Open
/admin before changing anything.
- Observable result: The DANA number field shows 083870821316 and the DANA name field shows EKSIS, and both remain editable.
- Access state: Protected — requires owner authorization.
- Failure/recovery: If the defaults fail to load, the owner can enter the correct values and save.
- Continuation: The owner edits or keeps the values.
- Provenance: explicit.
FR-21 — Pending proof list (explicit)
As an Admin Pemilik (Owner), I should see a list of all incoming transfer proofs marked Pending on /admin, so that I can process every order.
- Trigger/input: Open
/admin.
- Observable result: All submitted transfer proofs appear in the Pending list with their screenshot and nominal amount.
- Access state: Protected — requires owner authorization.
- Failure/recovery: A failed list load is shown inline and the list can be refreshed.
- Continuation: The owner opens a proof to decide it.
- Provenance: explicit.
FR-22 — Approve with automatic delivery (explicit)
As an Admin Pemilik (Owner), I should press APPROVE to automatically send the Batu Roh or zirah to the buyer, so that a verified payment is fulfilled without manual item handling.
- Trigger/input: Press
APPROVE on a Pending proof.
- Observable result: The purchased Batu Roh or zirah is delivered to the buyer's account and the proof leaves Pending.
- Access state: Protected — requires owner authorization.
- Failure/recovery: A failed delivery is shown inline with the proof still Pending; the owner retries the approval.
- Continuation: The owner continues with the next proof.
- Provenance: explicit.
FR-23 — Reject a proof (explicit)
As an Admin Pemilik (Owner), I should press TOLAK on a proof, so that an invalid or unverified payment is closed without delivery.
- Trigger/input: Press
TOLAK on a Pending proof.
- Observable result: The proof is closed without any Batu Roh or zirah being delivered.
- Access state: Protected — requires owner authorization.
- Failure/recovery: A failed rejection is shown inline with the proof still Pending; the owner retries.
- Continuation: The owner continues with the next proof.
- Provenance: explicit.
FR-24 — No payment gateway; direct DANA; manual approval (explicit)
As an Admin Pemilik (Owner), I should receive money 100% directly into my DANA account with no TriPay, Duitku, or Xendit API and no routing through 8080.ai, and I should be the one who approves manually, so that no intermediary touches my money.
- Trigger/input: A buyer transfers DANA directly to the owner's account and submits proof.
- Observable result: No third-party gateway is involved at any point, and delivery only happens after the owner's manual approval.
- Access state: Owner authorization for approval; player identity for submission.
- Failure/recovery: If a proof cannot be verified, the owner rejects it and no delivery occurs.
- Continuation: The owner continues processing proofs.
- Provenance: explicit.
FR-25 — Self-service registration (required_inference)
As a Pemain, I should register myself before making durable progress, so that my character, ownership, and transactions belong to me.
- Trigger/input: Complete registration on Sign Up.
- Observable result: An account exists and the player proceeds to character creation.
- Access state: Anonymous entry.
- Failure/recovery: Validation or duplicate-account errors are shown inline and the entered data is preserved for retry.
- Continuation: The player creates a character.
- Provenance: required_inference.
FR-26 — Returning login for durable progress (required_inference)
As a Pemain, I should sign back in to resume my progress, inventory, sect, transactions, and game activity, so that my durable state is preserved across sessions.
- Trigger/input: Submit credentials on Login.
- Observable result: The session resumes and the player's prior state is available.
- Access state: Anonymous entry.
- Failure/recovery: Invalid credentials are shown inline without clearing entered values; the player retries or navigates to Sign Up.
- Continuation: The player returns to their prior context.
- Provenance: required_inference.
FR-27 — Owner authorization for /admin (required_inference)
As an Admin Pemilik (Owner), I should be authorized as the owner before /admin becomes usable, so that only I can change the DANA identity and decide proofs.
- Trigger/input: Attempt to open
/admin.
- Observable result:
/admin is usable only after owner authorization is established.
- Access state: Protected — owner authorization required.
- Failure/recovery: An unauthorized attempt does not expose admin controls; the owner signs in and retries.
- Continuation: The owner manages the DANA identity and proofs.
- Provenance: required_inference.
FR-28 — Approval gates delivery (required_inference)
As a Pemain, I should receive my Batu Roh or zirah only after the owner approves my proof, so that delivery matches a verified payment.
- Trigger/input: The owner presses
APPROVE on the player's Pending proof.
- Observable result: The purchased Batu Roh or zirah appears in the player's account.
- Access state: Protected — requires an established identity.
- Failure/recovery: If delivery fails, the proof stays Pending and the owner retries; the player's balance is unchanged until delivery succeeds.
- Continuation: The player uses the delivered items in the world.
- Provenance: required_inference.
Page 12 of 29
4. User Personas
Page 13 of 29
Pemain (Player)
Product context: The Pemain is the main actor of Kerajaan Naga. They arrive from the Free Fire and Mobile Legends audience — used to big maps, fast action, and visible status — and expect a donghua cultivation world where characters are handsome and beautiful and the world itself glows. They play on mobile, often with friends, and care about looking strong and being seen.
Primary goal: Explore the zoneless open world freely, grow a character through one of the four tianko classes, own a home, trade with other players, hunt demons for Batu Roh, and acquire sultan-tier gear.
Distinct accepted responsibilities: Choosing exactly one of the four starter classes (Pedang Naga – Tebasan Api, Penyihir Roh – Hujan Meteor, Pemanah Bayangan – Beku, Assassin Naga Hitam – the most OP sultan class); roaming the large map with no shrinking zone; buying a house from Level 1 Gubuk Bambu to Level 10 Istana Naga Emas, entering its interior, and storing items there; buying and selling weapons, armour, and Batu Roh with other players at Pasar Roh; hunting demons and Demon Bosses with friends in Hutan Iblis for Batu Roh drops; meditating at Pegunungan Naga for EXP; gathering at Alun-Alun; forming or joining a party of at most four; and buying Batu Roh or zirah through the manual DANA flow by uploading a transfer screenshot and entering the nominal.
Relevant inputs or decisions: Which of the four classes to lock in; which house level to buy; what to list or buy at Pasar Roh; whether to engage a Demon Boss; when to meditate; which store item or package to purchase; and the nominal amount and screenshot to submit as proof.
Interactions with other accepted participants: Trades with other Pemain at Pasar Roh; hunts and cultivates with up to three other party members; gathers with all players at Alun-Alun; joins or is recruited into a Pemimpin Sekte's sect; and submits payment proof that the Admin Pemilik (Owner) approves or rejects.
Observable success: The character's class, level, and EXP are visible; the owned house is enterable with items stored inside; trades complete and holdings update; demon hunts yield Batu Roh; meditation advances the cultivation stage; and purchased Batu Roh or zirah appear in the account after approval.
Page 14 of 29
Pemimpin Sekte
Product context: The Pemimpin Sekte is a Pemain who has taken on the social and competitive layer of Kerajaan Naga. They are status-driven and communal: they want a named, flagged sect that the whole server recognizes, a roster of friends, and territory they can point to. Their play is organized around other people rather than solo progression.
Primary goal: Build a sect that is known across one server, holds a place on the leaderboard, and controls the market territory.
Distinct accepted responsibilities: Founding a sect with its own name and flag; recruiting members and inviting friends into the sect; organizing shared cultivation and 4-person demon-hunting parties; leading the sect into sect-versus-sect war to seize the market territory; and tracking the sect's fame and leaderboard standing on one server.
Relevant inputs or decisions: The sect name and flag; whom to recruit or invite; when to take the sect into war; and how to organize the roster for shared hunting and cultivation.
Interactions with other accepted participants: Recruits and leads Pemain as sect members; invites friends into the sect; forms parties of up to four with members; contests the market territory against rival sects; and appears on the server leaderboard alongside other sects.
Observable success: The sect exists with its chosen name and flag, its roster grows through accepted invitations, it appears on the server leaderboard, and it is recorded as the holder of the market territory when it wins the war.
Page 15 of 29
Admin Pemilik (Owner)
Product context: The Admin Pemilik is the owner of Kerajaan Naga — the person who receives every payment personally. They are not a player in this role; they operate the business side of the game through /admin, and they care about one thing above all: money arriving directly in their own DANA account with no intermediary and no gateway.
Primary goal: Keep the DANA details buyers see accurate and process every incoming payment proof manually so that verified buyers receive their Batu Roh or zirah.
Distinct accepted responsibilities: Editing NOMOR DANA SAYA at any time so the change is what buyers see; editing NAMA DANA SAYA; uploading the DANA QR photo; reviewing the list of all incoming transfer proofs marked Pending; pressing APPROVE to automatically deliver Batu Roh or zirah to the buyer; and pressing TOLAK to close an invalid proof without delivery.
Relevant inputs or decisions: The current DANA number and DANA name (defaults 083870821316 and EKSIS); the DANA QR photo; and, for each Pending proof, whether the screenshot and nominal justify approval or rejection.
Interactions with other accepted participants: Receives DANA transfers directly from Pemain; sees the proofs those Pemain submit; and delivers Batu Roh or zirah back to them on approval.
Observable success: The DANA number, DANA name, and QR photo shown to buyers match what the owner saved; every submitted proof appears in the Pending list; approvals deliver the purchased Batu Roh or zirah automatically; rejections close proofs without delivery; and no TriPay, Duitku, or Xendit API is involved and no money passes through 8080.ai.
5. Core User Flows
Page 16 of 29
Flow 1 — First entry and character creation (Pemain)
- The player opens the APK and lands on Landing, an anonymous surface showing the black dragon hero in the void, the
KERAJAAN NAGA type stack, and the two controls.
- The player presses
PILIH 4 KELAS (or MASUK DUNIA), which leads to Sign Up.
- On Sign Up, the player registers an account. On success, the player proceeds to character creation.
- On Character, the player reviews the four tianko classes — Pedang Naga (Tebasan Api), Penyihir Roh (Hujan Meteor), Pemanah Bayangan (Beku), and Assassin Naga Hitam (the most OP sultan class) — and selects one.
- The player confirms the selection. The class is locked to the character and the player enters World Map.
- Observable result: The character exists with the chosen class and the player is standing in the open world.
- Next step: The player explores freely or taps a POI marker.
- Failure/recovery: If registration validation fails, the error is shown inline with the entered data preserved. If class confirmation fails, the selection remains intact and the player reconfirms.
Flow 2 — Returning to play (Pemain)
- The player opens the APK and reaches Login from Landing.
- The player submits credentials.
- Observable result: The session resumes and the player's character, Batu Roh balance, owned house, stored items, sect membership, party state, and purchase history are available.
- Next step: The player continues in World Map or returns to whatever surface they were using.
- Failure/recovery: Invalid credentials are shown inline without clearing the entered values; the player retries or navigates to Sign Up.
Flow 3 — Free exploration of the zoneless map (Pemain)
- From World Map, the player moves using the bottom-left joystick pad.
- The player roams the large map freely; no zone ever closes in.
- The player reads the right-edge HUD rail: Batu Roh counter, EXP ring, party of 4 avatars, and sekte crest.
- The player taps one of the five floating glass POI markers — Perumahan Kultivator, Pasar Roh, Hutan Iblis, Pegunungan Naga, or Alun-Alun — and the camera pushes in as the location opens.
- Observable result: The player is inside the chosen location.
- Next step: The player performs that location's activity.
- Failure/recovery: If terrain streaming fails, the HUD rail and POI list remain usable and terrain can be retried; under reduced motion the POI list becomes a vertically scrollable column.
Page 17 of 29
Flow 4 — Buying and using a cultivator home (Pemain)
- From World Map, the player enters Housing via the Perumahan Kultivator marker.
- The player reviews the house level ladder from Level 1 Gubuk Bambu to Level 10 Istana Naga Emas and selects a level.
- The player purchases the house with Batu Roh.
- Observable result: The house is owned at the chosen level and the radial HUD ring shows the house tier.
- The player enters the interior and places items into storage.
- Observable result: The items are stored inside the home and can be retrieved later.
- Next step: The player leaves the home and returns to World Map.
- Failure/recovery: Insufficient Batu Roh or a failed purchase leaves the balance unchanged and the ladder available for retry.
Flow 5 — Trading at Pasar Roh (Pemain)
- From World Map, the player enters Spirit Market via the Pasar Roh marker at the centre of the map.
- The player browses listings of weapons, armour, and Batu Roh, reading prices in tabular JetBrains Mono on clipped-corner metal plates with hexagon rarity chips.
- The player selects a listing and confirms the trade, or lists their own item or Batu Roh for sale.
- Observable result: The trade completes and both participants' holdings update.
- Next step: The player continues browsing or returns to World Map.
- Failure/recovery: A withdrawn listing or insufficient Batu Roh fails the trade with no partial transfer; the player refreshes listings and retries.
Page 18 of 29
Flow 6 — Hunting demons with a party (Pemain)
- From World Map, the player enters Party and forms a party, inviting players until the roster holds up to four members.
- Observable result: The party exists with up to four avatars shown in the HUD rail.
- The player enters Demon Forest via the Hutan Iblis marker.
- The party engages demons, and then a Demon Boss.
- Observable result: The demons and the Demon Boss are defeated and Batu Roh drops are collected, with the drop counter rolling up.
- Next step: The party continues hunting or leaves the forest.
- Failure/recovery: Defeat or a failed engagement lets the player withdraw and regroup with the party and re-engage; no progress is corrupted. An invitation to a full party is rejected with the four-person limit stated.
Flow 7 — Cultivating for EXP (Pemain)
- From World Map, the player enters Dragon Mountains via the Pegunungan Naga marker.
- The player sits in meditation, alone or alongside party members and other players.
- Observable result: EXP is granted and the cultivation stage advances, with the EXP counter rolling up.
- Next step: The player continues meditating or returns to World Map.
- Failure/recovery: An interrupted session ends the gain without corrupting progress; the player resumes meditation.
Flow 8 — Gathering at Alun-Alun (Pemain)
- From World Map, the player enters Main Square via the Alun-Alun marker.
- The player gathers with other players present in the plaza.
- Observable result: The player is present and can see other gathered players.
- Next step: The player moves on to another location.
- Failure/recovery: A presence-feed failure leaves the plaza traversable; presence can be refreshed.
Page 19 of 29
Flow 9 — Founding and growing a sect (Pemimpin Sekte)
- From World Map, the player enters Sect Management.
- The player enters a sect name and chooses a flag, then confirms creation.
- Observable result: The sect exists with that name and flag, rendered as a luminous crest — a radial HUD ring around the sect name in Space Grotesk caps — and the founder leads it.
- The leader recruits members and invites friends into the sect.
- Observable result: Accepted invitations add players to the sect roster.
- The leader opens Sect Rankings and sees the sect placed on the server leaderboard among a ring of orbiting crests ranked by radius.
- Next step: The leader organizes shared cultivation and hunting, or prepares for war.
- Failure/recovery: A name conflict or creation failure is shown inline with the entered name and flag preserved; a failed invitation can be resent.
Flow 10 — Playing together: shared cultivation and 4-person hunting (Pemimpin Sekte)
- From Sect Management or Party, the leader invites sect members and friends into a party.
- Observable result: The party holds up to four members.
- The leader takes the party to Dragon Mountains for shared cultivation, where the group meditates together for EXP.
- The leader then takes the party to Demon Forest to hunt demons and a Demon Boss together.
- Observable result: EXP is gained from shared meditation and Batu Roh drops are collected from the hunt.
- Next step: The leader returns to sect business or the world.
- Failure/recovery: A full party rejects further invitations with the four-person limit stated; a failed hunt lets the party regroup and re-engage.
Page 20 of 29
Flow 11 — Sect-versus-sect war for the market (Pemimpin Sekte)
- From World Map or Sect Management, the leader enters Sect War.
- The leader takes the sect into war against a rival sect, with war banners sweeping light across their edges and the Pasar Roh prize marked as an amber-lit node on the map.
- The sects contest the market territory.
- Observable result: The war resolves and the winning sect is recorded as the holder of the market territory.
- Next step: The leader returns to Sect Management or World Map.
- Failure/recovery: A failed entry into the war leaves the sect's prior state intact; the leader re-enters when the war is active.
Flow 12 — Buying Batu Roh or zirah with manual DANA (Pemain)
- From World Map, the player enters Store.
- The player reviews the price ladder: Zirah Standar Bambu Level 1 = 50 Batu Roh = Rp5.000; Zirah Kulit Naga Level 5 = 150 Batu Roh = Rp15.000; Zirah Kaisar Naga Hitam OP Goreng Level 10 (efek sayap api naga, paling kece) = 1150 Batu Roh = Rp115.000; Paket 15K = 150 Batu Roh = Rp15.000; Paket Sultan 115K = Zirah OP Goreng + Pedang Langit + 1000 Batu Roh.
- The player presses
BELI BATU ROH or BELI ZIRAH.
- Observable result: A large popup appears as a full-screen glass console showing
TRANSFER DANA KE: [NOMOR DANA SAYA] ATAS NAMA: [NAMA SAYA] as the largest type on screen in amber, with the price ladder as a ruled telemetry list beside it and the DANA QR photo available.
- The player transfers the money directly to that DANA account outside the app.
- The player proceeds to Payment Submission, uploads the DANA transfer screenshot into the HUD drop-zone, and enters the nominal amount.
- The player submits. Observable result: The order is recorded as Pending.
- Next step: The player waits for the owner's decision; on approval the Batu Roh or zirah appear in the account.
- Failure/recovery: If the DANA identity fails to load, the popup does not present stale or blank transfer details and the identity is retried before purchase. Missing proof, missing nominal, or an upload failure is shown inline without losing entered data, and the player re-uploads or corrects the nominal and resubmits.
Page 21 of 29
Flow 13 — Owner configures the DANA identity (Admin Pemilik)
- The owner opens
/admin and is authorized as the owner.
- The owner edits
NOMOR DANA SAYA — currently 083870821316 — and NAMA DANA SAYA — currently EKSIS — and uploads the DANA QR photo.
- The owner saves.
- Observable result: The saved DANA number, DANA name, and QR photo are the values shown to buyers in the Store purchase popup, and the owner can change them again at any time.
- Next step: The owner moves on to reviewing proofs.
- Failure/recovery: A failed save is shown inline and the previously saved identity remains in effect; the owner resaves.
Flow 14 — Owner reviews and decides a payment proof (Admin Pemilik)
- The owner opens
/admin and sees the list of all incoming transfer proofs marked Pending, each with its screenshot and nominal amount.
- The owner opens a proof and compares the screenshot and nominal against the order.
- The owner presses
APPROVE.
- Observable result: The purchased Batu Roh or zirah are automatically delivered to the buyer's account and the proof leaves Pending.
- Next step: The owner continues with the next proof.
- Failure/recovery: A failed delivery is shown inline with the proof still Pending, and the owner retries the approval.
- Alternative decision: If the proof cannot be verified, the owner presses
TOLAK. Observable result: The proof is closed without any Batu Roh or zirah being delivered. A failed rejection is shown inline with the proof still Pending and the owner retries.
Flow 15 — Receiving a purchased item (Pemain)
- The player has submitted a Pending proof from Payment Submission and waits.
- The owner approves the proof on
/admin.
- Observable result: The purchased Batu Roh or zirah appear in the player's account and the Batu Roh counter in the HUD rail updates.
- Next step: The player equips or uses the item in the world, or spends the Batu Roh at Spirit Market or Housing.
- Failure/recovery: If delivery fails, the proof stays Pending and the player's balance is unchanged until the owner retries successfully. If the owner rejects the proof, no delivery occurs.
Page 22 of 29
6. Visuals Colors and Theme
Muse: Gleb Kuznetsov. Headline direction: Cinematic future-tech cultivation — dark void, glowing dragon qi, motion as the hero.
The register is epic, glowing, powerful, and slightly show-off: a power fantasy with a social ladder, not calm utility. The world itself is the interface.
Palette (dark mode):
| Role | Hex | Use |
|---|
| Background | #05060E | Deep void ground — approximately 70% of every screen |
| Surface | #0D1024 | Glassy panels at 60–80% opacity with 1px luminous #7CF6FF22 borders |
| Text | #EAF2FF | Body and headings on #05060E (~17:1 contrast) |
| Primary | #7CF6FF | Qi/energy light — strokes, focus rings, active map nodes, cultivation aura; never large fills |
| Accent | #FFB03A | Dragon-fire — sultan gear, the BELI BATU ROH CTA, sect-war banners, the Zirah Kaisar Naga Hitam card |
| Muted | #7A85A8 | Micro-labels only, 12px+ uppercase; never body copy |
Rarity ladder (thin glows only): #7CF6FF common → #4DE08A rare → #B07CFF epic → #FFB03A sultan/legendary.
Typography:
- Headings: Space Grotesk 700/500. Display sizes large and tight-leading (0.92) with wide negative tracking; headings never below 500 weight. Uppercase micro-labels at 11–12px with 0.22em tracking.
- Body: Sora.
- Numerals: JetBrains Mono, tabular, for every value — Batu Roh, harga Rp, level, EXP, HP — set one step smaller than their heading, so economy data reads like instrument telemetry.
- Scale: 1.25 modular with a wide top — 44px mobile → 96px desktop hero display; 28/22/18/16/14/12 body-and-label ladder.
Shape language: Full-bleed dark scenes with floating glass panels at 20–28px radii and 1px luminous strokes; thin radial HUD rings around anything with a level (cultivation stage, house tier, sect rank); hexagon chips for item rarity; clipped-corner (12px) frames for shop cards so they read as forged metal plates rather than soft SaaS tiles.
Layout: The map is the home screen — a full-viewport 3D world with a bottom-left joystick pad, a right-edge vertical HUD rail (Batu Roh counter, EXP ring, party of 4 avatars, sekte crest), and floating glass POI markers for Perumahan Kultivator, Pasar Roh, Hutan Iblis, Pegunungan Naga, and Alun-Alun. Every non-map screen (shop, sekte, admin) is a scroll-scrubbed panel that slides in from the right over a dimmed, still-orbiting world. Sect war and leaderboard use radial layouts around a central crest, not stacked rows.
Imagery: One crafted real-time 3D subject per key screen — the black dragon coiled in a void with volumetric qi fire (hero), a rotating Zirah Kaisar Naga Hitam armour with flame wings (shop sultan card), a low-poly island terrain with glowing biome rings (map). Character art is generated in donghua tianko register: long-haired, sharp-featured, ornate robes, luminous qi trails — never flat clip art, never stock photography.
Avoid: Blue–indigo SaaS primary on white (no #2563EB / #4F46E5 / #7C3AED grounds, no white-first screens); Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, or system-ui for headings or body; gradient-blob heroes and grids of identical hover-lift cards; flat clip-art characters or stock photography standing in for donghua art; soft pastel or candy palettes that would break the void-and-glow contrast; bouncy toy physics or cartoon easing; readable labels crammed over the dragon or map imagery; any TriPay/Duitku/Xendit payment UI or third-party gateway branding.
Page 23 of 29
7. Signature Design Concept
The void and the dragon — the world as the first screen.
The public entry is not a headline-and-button SaaS hero. It is a full-bleed black void (#05060E) with a single huge black dragon coiled in three-dimensional space, its body lit only by cyan qi (#7CF6FF) along the spine and amber fire (#FFB03A) under the wings. The dragon occupies the right 60% of the viewport and bleeds off the top and right edges.
Type sits low-left as an asymmetric stack: KERAJAAN NAGA in Space Grotesk 700 at clamp(44px, 9vw, 96px), leading 0.92, over a two-line subline SEASON 1 · DUNIA KULTIVASI TERBUKA in 12px uppercase with 0.22em tracking in #7A85A8. Beneath it sit two hard-edged controls: a solid amber MASUK DUNIA and a 1px cyan-outlined PILIH 4 KELAS. A thin radial HUD ring floats top-right showing the server name and online count in JetBrains Mono.
On mobile the dragon crops to its head and neck behind the type stack, and the two controls stay whole, full-width, and above the fold. The readable type and both controls always occupy their own clear zone — the dragon bleeds and crops, never the text or the controls.
The concept recomposes only accepted content: the product name, the Season 1 subline, the two entry controls, the server identity ring, and the dragon hero. It introduces no new behavior, page, or destination.
8. Interaction Model & Motion Direction
Interaction Model: Animated
Motion Tempo: cinematic
Hero Dimensionality: webgl
Page 24 of 29
Landing Hero Motion Brief
Focal subject: The black dragon coiled in three-dimensional space in a #05060E void, lit by cyan qi (#7CF6FF) along the spine and amber fire (#FFB03A) under the wings, bleeding off the top and right edges.
Input → transformation → outcome thesis: As the entry surface loads, the dragon's slow orbit carries a light sweep across its scales; the sweep resolves into the lit still of the coiled dragon, and the two entry controls — MASUK DUNIA and PILIH 4 KELAS — settle into their low-left position. The transformation uses only accepted entry behavior: the player either enters the world or goes to class selection.
Motion vocabulary: Cinematic and continuous. The dragon hero orbits slowly with a light sweep across its scales. Map POI markers pulse with a 2.4s breathing glow. Entering a location scrubs a camera push-in. Sect war banners sweep a light across their edge. Number counters roll up on reward. All entrances are 240–420ms with cubic-bezier(0.22,1,0.36,1).
Composed first frame: Full-bleed #05060E void; the dragon coiled right-of-centre, bleeding off the top and right edges, spine lit cyan and wing-undersides lit amber; KERAJAAN NAGA in Space Grotesk 700 low-left over the SEASON 1 · DUNIA KULTIVASI TERBUKA micro-label; the amber MASUK DUNIA and cyan-outlined PILIH 4 KELAS controls beneath it; the radial HUD ring top-right with server name and online count in JetBrains Mono.
Reduced-motion state: The hero renders one lit still frame of the dragon; markers stop pulsing; counters appear at their final value; the POI list becomes a vertically scrollable column. Both entry controls remain whole and usable.
Page 25 of 29
Landing Hero 3D Scene Brief — DIRECTION-DERIVED
One crafted real-time object: a black dragon coiled in a void, its defining state being the cultivation power fantasy itself — a body lit only by its own qi. Cyan #7CF6FF volumetric light runs along the spine; amber #FFB03A fire glows under the wings. The dragon orbits slowly with a light sweep across its scales, and the readable type and both controls stay in their own clear low-left zone at every viewport. Under reduced motion the scene resolves to a single lit still frame.
Page 26 of 29
9. Non-Functional Requirements
NFR-01 — Single-APK delivery (explicit)
The entire accepted experience — open world, housing, market, sect, war, classes, store, manual DANA payment, and /admin — must ship as one complete APK. Rationale: the user explicitly asked for "1 APK FULL JADI SEKARDUS" delivered now.
NFR-02 — No payment gateway integration (explicit)
TriPay, Duitku, and Xendit APIs must not be used anywhere in the product. Rationale: explicit hard constraint.
NFR-03 — Direct DANA settlement (explicit)
Money must go 100% directly into the owner's DANA account and must not pass through 8080.ai. Rationale: explicit hard constraint.
NFR-04 — Manual owner approval (explicit)
Every payment must be approved manually by the owner before Batu Roh or zirah are delivered. Rationale: explicit hard constraint.
NFR-05 — Editable DANA identity (explicit)
The DANA number and DANA name shown to buyers must be editable at any time from /admin, with defaults 083870821316 and EKSIS. Rationale: explicit hard constraint.
NFR-06 — Zoneless map (explicit)
The open-world map must never apply a shrinking zone. Rationale: explicit hard constraint.
NFR-07 — Four-person party limit (explicit)
Parties for hunting demons together are limited to four people. Rationale: explicit hard constraint.
NFR-08 — Single-server sect fame (explicit)
Sect fame and the leaderboard operate within one server. Rationale: explicit hard constraint.
NFR-09 — Readable text and controls at every viewport (explicit design constraint)
Headlines, wordmarks, labels, numbers, card text, and controls must stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element may cover any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control. Moving and scrollable content may cross the viewport or container edge by design and is judged by whether it actually moves or scrolls and whether every item becomes fully readable as it passes. Under prefers-reduced-motion, a usable static arrangement must be provided — items wrap into rows or allow horizontal scrolling so each item can be brought fully into view. Rationale: explicit design constraint.
NFR-10 — Reduced-motion usability (explicit design constraint)
Under prefers-reduced-motion, the hero renders one lit still frame, markers stop pulsing, counters appear at their final value, and the POI list becomes a vertically scrollable column. Rationale: explicit design constraint.
NFR-11 — Owner authorization boundary (required_inference)
/admin must not expose DANA identity editing or proof decisions before owner authorization is established. Rationale: the owner's DANA identity and payment decisions must remain bound to the correct participant.
NFR-12 — Durable player state (required_inference)
Character class and progress, Batu Roh balance, owned housing, stored items, sect membership and leadership, party state, war participation, and purchase history must persist across sessions for the correct account. Rationale: the accepted journeys require resumable durable state.
Page 27 of 29
10. Tech Stack
- Client: React Native mobile application delivered as a single Android APK, carrying the full open-world map, HUD rail, POI markers, and all non-map panels.
- Real-time 3D: WebGL/R3F for the dragon hero subject, the rotating Zirah Kaisar Naga Hitam armour with flame wings, and the low-poly island terrain with glowing biome rings, as required by the creative direction's
webgl hero dimensionality.
- Backend: Python / FastAPI service providing identity, character and class state, Batu Roh balances, housing ownership and storage, Spirit Market listings and trades, demon hunting and drops, meditation EXP, sect creation and membership, party state, sect war and territory, rankings, store catalog, payment proof submission, and the owner admin operations.
- Storage: Persistent datastore for accounts, characters, inventories, housing, listings, sects, parties, wars, rankings, orders, transfer proofs, and the owner-editable DANA identity (number, name, QR photo).
- File handling: Upload storage for DANA transfer proof screenshots and the owner's DANA QR photo.
- Deployment: Docker / docker-compose for the application and its datastore. Kubernetes is not required by any accepted requirement.
Page 28 of 29
11. Assumptions and Constraints
Assumptions
- A-01 (required_inference) — Players and sect leaders register themselves; no invitation or provisioning boundary is set for starting to use the application.
- A-02 (required_inference) — Returning players sign in to resume durable progress, inventory, sect, transactions, and game activity.
- A-03 (required_inference) — The owner is authorized as the owner before
/admin becomes usable.
- A-04 (required_inference) — Delivery of purchased Batu Roh or zirah occurs only after the owner approves the corresponding proof.
- A-05 (required_inference) — The DANA transfer itself happens outside the application, directly between the buyer and the owner's DANA account; the application records the proof and the nominal.
- A-06 (required_inference) — The four tianko classes are chosen once at the start and locked to the character.
Constraints
- C-01 (explicit) — Do not use TriPay, Duitku, or Xendit API.
- C-02 (explicit) — Money goes 100% directly into the owner's DANA account and does not pass through 8080.ai.
- C-03 (explicit) — The owner approves manually; approval is the owner's action, not an automated process.
- C-04 (explicit) — Payment is manual and direct to the owner's DANA account.
- C-05 (explicit) — Default DANA number 083870821316 and default DANA name EKSIS, changeable at any time through
/admin.
- C-06 (explicit) — The open-world map has no shrinking zone.
- C-07 (explicit) — Parties for hunting demons together are limited to four people.
- C-08 (explicit) — Sect fame and the leaderboard operate within one server.
- C-09 (explicit) — The store price ladder is fixed as stated: Zirah Standar Bambu Level 1 = 50 Batu Roh = Rp5.000; Zirah Kulit Naga Level 5 = 150 Batu Roh = Rp15.000; Zirah Kaisar Naga Hitam OP Goreng Level 10 = 1150 Batu Roh = Rp115.000; Paket 15K = 150 Batu Roh = Rp15.000; Paket Sultan 115K = Zirah OP Goreng + Pedang Langit + 1000 Batu Roh.
- C-10 (explicit) — The four starter classes are exactly Pedang Naga (Tebasan Api), Penyihir Roh (Hujan Meteor), Pemanah Bayangan (Beku), and Assassin Naga Hitam (the most OP sultan class).
- C-11 (explicit) — The in-game currency is Batu Roh.
- C-12 (explicit design constraint) — Readable text and controls stay whole at 375px, 768px, and 1280px; imagery and motion carry any cropping or bleeding.
- C-13 (explicit design constraint) — The generic indigo/blue-on-white SaaS template is forbidden for this project.
Page 29 of 29
12. Glossary
- Kerajaan Naga — The product name; Season 1 is the current and only accepted release.
- Tianko — The donghua-style character register used for all characters, who are handsome and beautiful.
- Batu Roh — The in-game currency, earned from demon drops, traded at Pasar Roh, or delivered after an approved purchase.
- Pemain (Player) — The main human actor who explores, fights, trades, builds, and buys.
- Pemimpin Sekte — A player who founds and leads a sect, recruits members, organizes parties, and leads sect war.
- Admin Pemilik (Owner) — The owner, who manages
/admin, the DANA identity, and every payment decision.
- Perumahan Kultivator — The cultivator housing location, with homes from Level 1 Gubuk Bambu to Level 10 Istana Naga Emas, enterable interiors, and item storage.
- Pasar Roh — The Spirit Market at the centre of the map, where players trade weapons, armour, and Batu Roh, and the territory contested in sect war.
- Hutan Iblis — The Demon Forest, where players hunt demons and Demon Bosses with friends for Batu Roh drops.
- Pegunungan Naga — The Dragon Mountains, where players sit in meditation together to gain EXP.
- Alun-Alun — The Main Square, the gathering place for all players.
- Sekte — A player-founded sect with its own name and flag, a member roster, server-wide fame, and a leaderboard position.
- Sect War — Sect-versus-sect conflict fought to seize the market territory.
- Party — A group of at most four players formed for shared demon hunting and cultivation.
- Zirah — Armour; the store's armour tiers are Zirah Standar Bambu Level 1, Zirah Kulit Naga Level 5, and Zirah Kaisar Naga Hitam OP Goreng Level 10 with the flame-wing dragon effect.
- Pedang Langit — The sword included in the Paket Sultan 115K.
- Paket 15K — A package granting 150 Batu Roh for Rp15.000.
- Paket Sultan 115K — A package granting Zirah OP Goreng, Pedang Langit, and 1000 Batu Roh.
- DANA — The payment channel; buyers transfer directly to the owner's personal DANA account.
- Pending — The status of a submitted transfer proof awaiting the owner's decision.
- APPROVE / TOLAK — The owner's two decisions on a Pending proof: approve with automatic delivery of Batu Roh or zirah, or reject without delivery.
- EXP — Experience gained from meditation at Pegunungan Naga, advancing the cultivation stage.
- POI — A point of interest on the open-world map: Perumahan Kultivator, Pasar Roh, Hutan Iblis, Pegunungan Naga, or Alun-Alun.
No comments yet. Be the first!