01 — Overview
Project Overview
Platform virtual casino game berbasis web. User punya saldo virtual untuk bermain.
Saldo tidak bisa ditambah sendiri — harus lewat request top-up yang disetujui admin.
Batasan MVP: Tidak ada uang asli — no deposit, withdrawal, payment gateway, crypto, transfer antar-user, atau betting antar-user. Saldo hanya Virtual Coin.
02 — Konsep Utama
Alur Sistem
USER
│
├── Register / Login
├── Melihat saldo
├── Request Top Up
│
▼
ADMIN
│
├── Review Request
├── Approve → Saldo bertambah
└── Reject → Status rejected
│
▼
USER MEMAINKAN SLOT
│
├── Bet → Spin → Menang / Kalah
│
▼
TRANSACTION + GAME HISTORY
Inti Desain
- Admin mengontrol konfigurasi mesin global (probabilitas & payout)
- User hanya bermain dengan saldo virtual
- Hasil spin ditentukan server-side RNG
- Setiap perubahan saldo & permainan tercatat di transaction / history
03 — Role Sistem
User & Admin
👤
User
Dashboard, Wallet, Request Top Up, Slot Machine, Game History, Transaction History. Tidak bisa ubah saldo, payout, atau konfigurasi mesin.
🛡️
Admin
Overview, User Management, Top Up Approval, Machine Config, Game History, Transaction History, Statistics, System Settings.
Authentication
Register → Create User → Create Wallet (balance = 0). Role disimpan di users.role (user / admin).
04 — Wallet & Top Up
Wallet System
Setiap user punya satu wallet. Saldo hanya berubah lewat operasi server yang valid.
Jenis Perubahan Saldo
| Type | Contoh | Keterangan |
TOPUP | +100.000 | Admin approve top-up |
BET | −10.000 | User menempatkan taruhan |
WIN | +50.000 | Payout kemenangan |
REFUND | +10.000 | Pengembalian (jika perlu) |
Top Up Flow
USER → Request Top Up (status: PENDING)
│
▼
ADMIN → Review
│
├── APPROVE → Wallet +amount · Transaction TOPUP · status=approved
└── REJECT → status=rejected · saldo tidak berubah
Keamanan saldo: Semua operasi memakai DB transaction — BEGIN → Lock Wallet → Check → Deduct/Add → Create Transaction → Create Game Session → COMMIT. Error → ROLLBACK.
05 — Slot Machine
Classic Slot Engine
Game pertama: Classic Slot Machine 3 reel. Simbol memakai asset PNG/WebP (bukan emoji).
Simbol & Payout Default
| Combination | Multiplier |
| 3 × Cherry | 5× |
| 3 × Lemon | 5× |
| 3 × Bell | 10× |
| 3 × Diamond | 20× |
| 3 × Crown | 25× |
| 3 × Lucky 7 | 50× |
Game Flow (Server-side)
USER tekan SPIN
│
▼
SERVER
├── Cek machine status
├── Cek bet (min / max)
├── Cek saldo
├── Lock wallet
├── Generate RNG
├── Tentukan result
├── Hitung payout
├── Update wallet
├── Simpan transaction
└── Simpan game session
│
▼
HASIL → CLIENT → ANIMASI REEL → TAMPILKAN
Penting: Browser tidak boleh mengirim result / payout. Browser hanya POST /game/slot/spin. Server yang menentukan semuanya.
Win Probability
Default 10%. Dipakai sebagai parameter RNG — bukan pola tetap “setiap 10 spin pasti menang”. Hasil tetap acak.
Admin Machine Config
- Status (Active / Inactive)
- Win Probability
- Min Bet / Max Bet
- Payout per simbol (multiplier)
Setiap perubahan konfigurasi dicatat di audit log.
Animasi Reel
Mesin, frame, tombol, background diam. Hanya REEL 1 → REEL 2 → REEL 3 yang bergerak dan berhenti berurutan.
06 — Database Blueprint
Schema & Relationships
Tabel Utama
| Table | Key Columns |
users | id, name, email, password, role |
wallets | id, user_id, balance |
top_up_requests | id, user_id, amount, status, processed_by |
transactions | id, user_id, type, amount, balance_before, balance_after |
games | id, name, slug, is_active |
game_histories | id, user_id, game_id, bet, result, winnings |
game_settings | win_probability, min_bet, max_bet, multipliers |
Relationships
USER
├──── 1 : 1 ──── WALLET
├──── 1 : N ──── TOPUP_REQUEST
├──── 1 : N ──── TRANSACTION
└──── 1 : N ──── GAME_HISTORY
│
N : 1
▼
GAME
│
├── GAME_SETTINGS
└── PAYOUT_SETTINGS
07 — Architecture
Laravel Structure & Routes
Auth
showLogin, login, showRegister, register, logout
User Area
Dashboard, Wallet, TopUp, Transaction, Slot, GameHistory, Settings
Admin
Dashboard, User, TopUp (approve/reject), Machine, Transaction, GameHistory
Games
Slot (spin), FlipCoin, Roulette, Dice — server-side result
Route Blueprint
/login /register /logout
/dashboard /wallet /topup /transactions /game-history
/game/slot /game/slot/spin
/admin/dashboard /admin/users /admin/topups
/admin/machines /admin/transactions /admin/game-history
Route /admin/* hanya untuk role admin (middleware).
Asset Structure (Slot)
public/assets/slot/
├── machine/ frame · background · spin-button
├── symbols/ cherry · lemon · grape · watermelon · bell · diamond · bar · crown · seven
└── effects/ win · coins · glow
08 — Fitur MVP
Yang Dikunci vs Ditunda
Fitur MVP
- ✓ Register & Login
- ✓ User / Admin Role
- ✓ User Wallet + Virtual Coin
- ✓ Top Up Request + Admin Approve/Reject
- ✓ Transaction History
- ✓ 1 Slot Machine (Classic)
- ✓ Server-side RNG + Configurable Win Probability
- ✓ Configurable Payout + Min/Max Bet
- ✓ Slot Reel Animation
- ✓ Game History (User & Admin)
- ✓ Admin Statistics & Audit konfigurasi
Ditunda
- ✕ Blackjack, Roulette, Poker (sebagai core MVP)
- ✕ Jackpot progresif, Multiplayer, Tournament
- ✕ Referral, Bonus harian, Chat
- ✕ Payment Gateway, Deposit/Withdrawal uang asli
- ✕ Cryptocurrency, Mobile App
09 — Development Roadmap
Phase 01 → 17
Development tidak langsung bikin game. Ikuti urutan ini:
Phase 02
Database + Migration
Phase 04
Role User / Admin
Phase 08
Transaction System
Phase 10
RNG + Probability
10 — Target Akhir MVP
Flow Lengkap
ADMIN ──Configure Machine──► SLOT ENGINE
│
RNG · Probability · Payout
│
USER ──Request Top Up──► ADMIN APPROVE ──► WALLET (Virtual Coin)
│
│ Bet
▼
SLOT
Spin → RNG → Result → Payout
│
┌─────────┴─────────┐
▼ ▼
Transaction Game History
Dengan blueprint ini, coding bisa dimulai dari Phase 01 → database/migration tanpa mengubah arsitektur di tengah jalan.