Tujuan Sistem
Spin adalah daily passive activity yang berlangsung di Lobby.
Tujuan utamanya adalah meningkatkan Average Session Time (AST) dan Concurrent Users (CCU) melalui looping delay, sehingga pemain memiliki alasan untuk tetap berada di dalam game sambil menunggu spin berikutnya.
Spin diberikan 100% gratis dan menjadi bonus di luar core economy. Sistem ini tidak menggantikan pendapatan dari aktivitas berburu aktif.
Interval Spin
Interval Spin bersifat progresif dan reset setiap pukul 00:00.
Spin pertama tersedia setelah 1 menit. Spin kedua tersedia setelah 3 menit. Mulai Spin ke-3, interval dihitung dengan rumus:
interval(n) = round(interval(n-1) × 1.23)
Cooldown tidak dibawa ke hari berikutnya.
Pola Interval
Pola interval dalam menit:
1, 3, 4, 5, 7, 8, 10, 12, 15, 19, 23, 28, 35, 43, 53, 65, 79, 97, 119, 147, 180, 221, 271, ...
Dengan pola ini, pemain yang online selama 24 jam penuh memperoleh sekitar 24 Spin per hari. Gap yang semakin lebar pada jam-jam akhir membentuk soft-cap alami. Pemain casual diperkirakan memperoleh sekitar 10–15 Spin per hari.
Logic Backend
Setiap kali tombol Spin ditekan, server terlebih dahulu menambahkan pityCounter += 1.
pityCounter merupakan variabel lifetime dan tidak ikut reset harian.
Server kemudian memeriksa kondisi Crystal yang bersifat wajib sebelum melakukan RNG biasa.
Crystal Pity
Crystal tidak pernah mengikuti RNG bobot biasa.
First-Time Hook
Jika hasReceivedFirstCrystal == false dan pityCounter == 10, hasil Spin dipaksa menjadi Crystal.
Setelah itu pityCounter = 0 dan hasReceivedFirstCrystal = true.
Regular Pity
Jika hasReceivedFirstCrystal == true dan pityCounter == 50, hasil Spin dipaksa menjadi Crystal.
Setelah itu pityCounter = 0.
RNG Spin
Jika tidak memenuhi kondisi Crystal Pity, server mengundi satu hasil dari 9 segmen non-Crystal menggunakan bobot kumulatif yang telah ditentukan.
Crystal tidak termasuk dalam bobot RNG biasa.
Hasil Spin ditentukan oleh server sebelum animasi roda diputar.
Server Authority
Client hanya menerima informasi hasil = X dan target segmen = Y.
Client kemudian menjalankan animasi visual roda yang ending-nya sudah ditentukan oleh hasil server.
Prinsipnya adalah data hasil Spin tidak boleh ditentukan atau dimanipulasi oleh client.
Daily Reset & Lifetime State
Interval dan cooldown Spin reset setiap pukul 00:00.
Sebaliknya, pityCounter dan hasReceivedFirstCrystal merupakan state lifetime pemain dan tidak ikut reset harian.
Catatan Implementasi
pityCounter dan hasReceivedFirstCrystal disimpan server-side per pemain dan tidak boleh dapat dimanipulasi oleh client.
Setiap hasil Spin dicatat untuk kebutuhan audit, meliputi timestamp, hasil, dan pityCounter.
Posisi Crystal
Crystal dari Spin tetap memiliki kontribusi kecil dibanding jalur Level/Caravan.
Prinsipnya, Crystal dari Spin hanya berfungsi sebagai jalur tambahan untuk menggembok kepemilikan permanen.
Dengan maksimal sekitar 24 Spin per hari, estimasi jalur reguler adalah sekitar 1 Crystal setiap 2 hari, dan lebih lambat untuk pemain casual.