⚠
PROYEK KONSEP · DALAM TAHAP PEMBANGUNAN AKTIF · BUILD 0.2A
⚠
Flutter · Supabase · Dart · In-Dev
DEKODE ATAU HANCUR.
Permainan intelijen berbasis teks dengan Flutter & Supabase — retas satelit, manipulasi memori perangkat keras, dan interogasi target di bawah tekanan waktu. Setiap keputusan Direktur menentukan hidup dan mati agen di lapangan.
Alur navigasi nyata dari main.dart — setiap layar sudah dikodekan lengkap. Navigator stack dikelola dengan pushReplacement agar tidak ada tumpukan layar yang tidak perlu.
Layar ini adalah pusat semua mekanik — dekripsi real-time, pilihan bercabang naratif, perk agen, dan integrasi semua overlay (Blackout, Static Noise, Matrix Decrypt). Layar lain (Dashboard, Inbox, Registry, Profile, AgentDetail, MissionResult, AgentSelection) sudah selesai dan fungsional penuh.
Dart · Provider Pattern · Supabase
KODE SISTEM
Potongan kode nyata dari berkas yang sudah dikodekan. Bukan prototipe — ini produksi.
final _chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#\$%&*<>?';
agent_model.dart
DATA MODEL
enum AgentStatus { active, injured, mia }
// Null-safety: trust_level bisa null dari Supabase
trustLevel: (json['trust_level'] as num?)?.toInt() ?? 80,
// Status parse dengan orElse fallback
status: AgentStatus.values.firstWhere(
(e) => e.toString().split('.').last ==
json['status'],
orElse: () => AgentStatus.active,
),
// copyWith: hanya mutable fields yang bisa diubah
AgentModel copyWith({String? name, String? bio,
int? trustLevel, AgentStatus? status, ...})
// id, callsign, specialty → immutable
static_noise_overlay.dart
NOISE ENGINE
// Intensitas noise NAIK seiring waktu habis
double_noiseIntensity() {
final ratio = secondsRemaining / timeLimitSeconds;
if (ratio <= 0.3) return0.40; // 40% korupsi
if (ratio <= 0.6) return0.25; // 25%
return0.15; // awal: 15%
}
// Spasi & tanda baca TIDAK dikotori
if (char == ' ' || char == '.' || char == ',') {
buffer.write(char); // preserve structure
} else if (_random.nextDouble() < intensity) {
buffer.write(_noiseChars[...]); // korupsi
}
// Interval 1500ms · blink indicator 800ms
AgentModel · AgentProvider · AgentDetailScreen
DOSSIER &PERKS
Setiap agen tersimpan di Supabase dengan fallback lokal. Specialty diterjemahkan ke Perk pasif yang aktif di WorkspaceScreen. Trust di bawah 40% — performa menurun drastis.
A001 · INFILTRATOR
AGEN KALA
CS: CHRONOS
🕵️
PERK: TOUGHENED4 LIVES
Paling tahan banting terhadap penalti kegagalan dekripsi. Ideal untuk misi Grande dengan Blackout aktif.
Trust:
85%
A002 · CRYPTOGRAPHER
AGEN BIMA
CS: ENIGMA
🧮
PERK: TIME BOOST+15 DETIK
Menambahkan 15 detik ke time_limit_seconds. Krusial untuk Seasonal Mission batas waktu 45 detik.
Trust:
92%
A003 · PROFILER
AGEN SITA
CS: ORACLE
🧠
PERK: IDENTIFIED TRUTHFILTER
Memilah kebohongan interogasi otomatis. Sangat berguna di modul Linguistik & puzzle text replace.
Wajib saat misi pembongkaran server — bypass I2C (VCC·GND·SDA·SCL) dan Hexadecimal port hack.
Trust:
65%
STATUS: MISSING IN ACTION
REDACTED
CS: UNKNOWN
💀
STATUS: M.I.ALIVES: 0
Nyawa habis → agen gugur permanen. Data ter-update di Supabase via upsert(agent.toJson()). Tidak bisa pulih tanpa reset kampanye.
KONEKSI TERPUTUS · AGEN HILANG
⚠️
DIRECTORATE SHUTDOWN: Semua Agen Gugur
Jika semua agen berstatus mia atau injured, AgentSelectionScreen mendeteksi isAgencyCollapsed dan merender layar SHUTDOWN merah dengan opsi reset kampanye — semua agen di-set active dan trust kembali ke 80%.
evidence_board (Supabase table) · attachment_url
PAPAN BUKTI FORENSIK
Setelah misi Grande selesai, attachment_url dari GrandeMissionModel otomatis di-insert ke tabel evidence_board Supabase bersama user_id. Fitur ini terkunci di Dashboard — masih dalam pembangunan.
GM-02
CCTV_PLATFORM_A.PNG
attachment_type: 'image'
"PRIA DI PERON"
prerequisiteId: GM-01 · Caesar +3
GM-04
CCTV_MALL_ATRIUM.PNG
choices: [RuteA, RuteB]
payout_funds: 0
"WANITA DI MALL"
Bypass HEX I2C · Kunci: A3FF4E
EVIDENCE
> INSERT INTO evidence_board
(user_id, grande_mission_id,
title, image_url)
> VALUES (auth.uid, 'GM-04',
'Forensik: Wanita di Mall',
attachment_url);
> INSERT 1 ✓
"KANTOR YANG KOSONG"
successReport → Supabase persisted
Tabel: grande_missions
id, title, operation_id
puzzle_type, time_limit_seconds
raw_message, clean_message
noise_character, translated_word
choices[] (JSONB), prerequisite_id
attachment_url, attachment_type
success_report, fail_report
pre_mission_log, briefing
Tabel: seasonal_missions
id, title, operation_id
puzzle_type, time_limit_seconds
payout_funds (Dana Intel)
raw_message, translated_word
clues[] (array)
pre_mission_log, briefing
— batas waktu 45 detik —
— tidak ada choices —
Tabel: user_progress
user_id (FK auth.users)
grande_mission_id
seasonal_mission_id
status: 'completed'
completed_at timestamp
+ SharedPreferences fallback
local_completed_grande
local_completed_seasonal
MissionProvider · Global State · ChangeNotifier
TRINITY PILLARS
Tiga variabel global yang mengontrol seluruh alur permainan. Dikelola oleh MissionProvider dengan ChangeNotifier dan di-watch oleh semua layar via context.watch().
💎
TRINITY A
INTEL FUNDS
Mulai: 150F · Clamp(0, 99999)
Seasonal mission selesai → +payoutFunds
Heal injured agent → -50F
Beli clue rahasia → cost varies
Saldo Aktif150 F
⚔️
TRINITY B
THREAT LEVEL
Mulai: 25% · Clamp(0, 100)
Gagal dekripsi → +threat
M.I.A timeout → +25 otomatis
>= 80% → StaticNoise aktif penuh
Level Saat Ini75%
🤝
TRINITY C
TRUST METER
Per-agen 0–100 · Clamp via copyWith
Misi sukses → +trustDelta
Misi gagal/bunuh diri → -trust
< 40% → performa lapangan turun
CHRONOS Trust85%
GRANDE MISSIONS
18 TOTAL · STORY MODE
Misi kampanye utama dengan prerequisite_id dan sistem choices JSONB. Menyelesaikan misi GM-04 membuka dua rute: GM-05A atau GM-05B via _unlockedBranchMissions.
preMissionLog: teks naratif TypewriterText
cleanMessage: target dekripsi final
noiseCharacter: karakter noise BlackoutMode
successReport / failReport: debriefing teks
attachmentUrl → evidence_board insert
SEASONAL MISSIONS
45 DETIK · TAKTIS
Misi sampingan tanpa pilihan naratif, murni kecepatan dekripsi dengan payout_funds sebagai reward. Agen Bima (TIME BOOST +15s) sangat vital di sini. Dapat di-retry terus, tidak ada prerequisite.
payoutFunds: dana intel yang didapat
timeLimitSeconds: umumnya 45 detik
puzzleType: lockdown / caesar / hex / dll
translatedWord: jawaban dekripsi
→ Tidak ada attachmentUrl / choices
⚡ MIDNIGHT PROTOCOL
OP_BLACK_OPS hanya muncul di InboxScreen antara jam 00:00–03:00 WIB. Deteksi via DateTime.now().hour. Banner: "UNAUTHORIZED ACCESS DETECTED. NO LOGS KEPT." — Easter egg untuk pemain notturnal.
Belum ada komentar. Jadilah yang pertama! 👋