Halo semuanya, AL di sini. Selamat datang di intipan pertama di balik layar Mortumus.
Sementara Fin terkubur di tambang server, bergulat dengan database, subscription, dan semua sihir distributed system yang mengerikan yang menjaga dunia tetap hidup, aku di sisi lain memastikan setiap ayunan pedang, langkah kaki, kedipan obor, dan setiap bagian armor benar-benar terlihat dan terasa pas di layar kalian.
Membangun sebuah MMO dark fantasy bukan hal yang bisa kamu rakit dengan drag-and-drop dari asset store. Nuansa kasar dan oldschool yang kami kejar — beratnya pertarungan, derit armor-mu, rasa ngeri saat melihat pemain lain di cakrawala — hanya muncul kalau tool di bawahnya dibangun khusus untuk itu. Jadi hari ini aku akan membuka tirai beberapa sistem Unity kustom yang sudah kami rakit di sisi client: sistem-sistem yang tidak akan pernah dilihat siapa pun, tapi akan dirasakan semua orang.
Langsung saja.
Visual, Loot, dan Privasi PvP
Kalau ada satu kebenaran tentang pemain MMO, ini dia: kita suka gear. Dan di game full-loot PvP seperti Mortumus, gear bukan cuma suntikan dopamine — gear adalah informasi. Apa yang dipakai seseorang memberitahu kamu apa yang bisa dia lakukan padamu.
Simpan Rahasianya, Jaga Keamanannya — Equipment Visualizer
Sejak awal kami menyadari ada masalah yang banyak MMO diam-diam abaikan: kalau client tahu item ID persis dari setiap perlengkapan di setiap pemain yang terlihat, cheater yang tekun bisa mengekstraknya dari memori dan tahu stat persismu sebelum memutuskan untuk menyerangmu.
Jadi, Equipment Visualizer kami melakukan sesuatu yang agak paranoid. Untuk karaktermu sendiri, dia membaca dari equipment service lengkap — kamu melihat segalanya tentang gear-mu. Tapi untuk setiap pemain lain, dia hanya membaca blob "visual" yang sudah dipangkas yang dipublikasikan server. Kamu melihat pedangnya, bukan stat sheet-nya. Item ID orang asing tidak pernah keluar dari server Fin.
Hal kecil. Tapi ini juga membuat cheat memory scraping jadi jauh kurang berguna. Trade yang bagus.
Animation Stack
Combat berbasis skill hidup atau mati di animasi. Kalau windup-nya tidak terbaca, kamu tidak bisa bereaksi. Kalau pukulannya tidak terasa mendarat, pertarungan terasa tanpa bobot. Kalau kematian terlihat seperti model-nya cuma... mati, kamu kehilangan setengah mood-nya.
Player Animation Coordinator
Kami memulai seperti kebanyakan orang: satu class animation controller raksasa yang mencoba mengelola segalanya. Movement, spell, death, hit, idle — semua dalam file yang sama. Dalam sekitar dua minggu sudah berantakan.
Jadi, kami memecahnya. Sekarang Player Animation Coordinator adalah entry point kecil yang menjalankan tumpukan modul kecil yang terspesialisasi: movement, rotation, attack, spell, hit reaction, death, idle. Masing-masing punya satu tugas. Masing-masing bisa dibaca sendiri. Bug butuh menit bukan jam untuk dilacak.
Code lebih bersih untukku. Combat lebih ketat untukmu.
Responsivitas Combat — Attack Animator & Spell Animator
Ini masalah klasik MMO: server-authoritative combat adalah satu-satunya cara menghentikan cheating, tapi menunggu server mengonfirmasi setiap cast terasa seperti sirup.
Spell Animator kami sedikit curang — tapi jujur. Saat kamu menekan tombol spell, animasi cast langsung dimainkan — diprediksi secara lokal, jadi terasa instan. Lalu server Fin memvalidasi apakah cast-nya benar-benar legal (cooldown sudah selesai, mana cukup, target valid, dll.). Kalau dikonfirmasi, tidak ada yang berubah. Kalau ditolak, kami keluar dengan bersih.
Attack Animator melakukan tarian yang sama untuk melee, dan bahkan menskala kecepatan ayunan agar cocok dengan kadence yang server tentukan untuk senjatamu. Matamu melihat combat yang responsif. Server melihat dunia yang tidak bisa dibohongi.
Sweet spot antara "terasa enak" dan "bermain adil" adalah tempat di mana seluruh game ini hidup.
Suara-Suara dari Kerajaan
Audio adalah 50% dari mood dan orang selalu meremehkan berapa banyak kerja yang dibutuhkan.
Membangun Atmosfer — Audio Manager & Music Region System
Game tradisional cenderung mengganti musik dengan hard-cut saat kamu melewati garis tak terlihat. Itu mengagetkan. Kami melakukannya dengan zona polygon 3D. Music Region System memungkinkan kami menggambar area berbentuk bebas di dunia — hutan berhantu, kapel terkutuk, jalur menuju boss — dan saat kamu masuk dan keluar, Audio Manager melakukan crossfade soundtrack dengan mulus. Tidak ada potongan. Tidak ada restart track yang sama kalau kamu cuma sedikit melewati batas.
Dan karena semua ini berjalan melalui pooled audio source dengan mixer group routing, biayanya praktis nol dalam frame budget.
Character Audio Manager
Setiap langkah kaki di Mortumus terhubung ke animasi karaktermu dan permukaan di bawahmu — batu terdengar seperti batu, lumpur terdengar seperti lumpur. Suara spell terikat pada ability, ayunan senjata terikat pada senjata. Character Audio Manager berada di antara animation event dan Audio Manager sehingga kami bisa menukar SFX pack per ras/class tanpa menyentuh code gameplay.
Hal-hal kecil. Banyak sekali. Semuanya menumpuk.
Tepian Air
Setiap dunia dark fantasy punya air. Rawa, sungai, reruntuhan yang terendam, laut di ujung tanjung terkutuk. Dan air adalah salah satu hal yang gampang terlihat palsu — terutama di mana air bertemu daratan. Garis air poligonal yang jelek di mana mesh berpotongan dengan terrain adalah ciri khas game yang terlihat murahan.
Basis Air Kami
Kami tidak membangun air dari nol. Unity sebenarnya menyertakan proyek demo yang fantastis bernama Boat Attack yang menyertakan salah satu sistem air URP terbaik yang ada; refleksi nyata, refraksi, buoyancy, semuanya. Jadi, kami memulai dengan air Boat Attack sebagai fondasi, karena menemukan kembali roda itu akan menghabiskan waktu berbulan-bulan tanpa keuntungan nyata.
Tapi Boat Attack dibangun untuk, yah... kapal. Garis pantai laut yang bersih dan rapi. Perilaku garis pantai yang terlihat bagus di pantai berpasir terlihat mengerikan di sekitar jalur air yang berlumpur, penuh alang-alang, dan tidak beraturan yang sebenarnya kami inginkan di Mortumus. Jadi, kami harus melakukan operasi bedah.
Shader Kustom — Water Shoreline
Daripada mengedit paket Unity secara langsung (yang akan rusak setiap kali kami memperbarui), kami menulis shader kustom tipis "WaterShoreline" yang hanya menukar bagian pipeline yang bertanggung jawab untuk tepian pantai. Sisanya — refleksi, flow map, caustic — langsung dari Boat Attack. Kami hanya meng-override yang kami butuhkan.
Dua perubahan besar:
Cutoff busa 2 meter yang keras sudah hilang. Band busa default Boat Attack punya depth cutoff yang tetap, yang menghasilkan "lingkaran putih" seragam di setiap tepian. Kami menggantinya dengan falloff yang lebih lembut ditambah noise field yang bergeser, jadi busanya sekarang memudar secara bertahap dan pecah menjadi lidah-lidah dan jari-jari organik alih-alih pita sempurna.
Alpha tepian pantai yang lembut. Masalah garis air poligonal terhadap terrain itu? Kami membuat air itu sendiri memudar ke transparan di setengah meter terakhir kedalaman. Garis air menghilang sepenuhnya. Terrain hanya menjadi lebih gelap saat masuk ke bawah air, seperti tepian pantai basah yang asli.
Sistem Sungai Kami
Begini masalahnya dengan air Boat Attack: secara default dia menangani lautan dengan indah, tapi dia tidak benar-benar tahu apa itu sungai. Air bisa beriak di tempat, tapi tidak bisa mengalir ke hilir dan mengelilingi tikungan seperti sungai sungguhan. Itu jadi masalah ketika setengah dari dunia dark fantasy-mu seharusnya berawa, penuh sungai, dan basah kuyup.
Jadi, kami membangun sistem sungai di atasnya.
Sebuah sungai di Mortumus dibuat sebagai flow path — polyline sederhana berisi titik-titik yang menelusuri tulang punggung sungai dari hulu ke muara. Designer menempatkan titik-titik di mana mereka ingin air mengalir, dan shader mengurus sisanya: untuk setiap piksel permukaan air, dia mencari segmen flow path terdekat dan menggunakan arah segmen itu sebagai arus lokal. Hasilnya: air di dekat bagian lurus mengalir lurus, air di sisi dalam tikungan melengkung mengikuti tikungan, dan semuanya bertransisi dengan mulus di antaranya.
Tekstur, normal, dan busa semuanya bergeser mengikuti arah aliran itu alih-alih hanyut tanpa tujuan. Kamu benar-benar bisa melihat ke arah mana sungai mengalir.
Semuanya bisa di-tweak secara live dari ShoreFoamTuner, komponen inspector kecil yang kami taruh di scene mana pun yang punya air. Slider untuk kelembutan busa, noise scale, noise strength, drift speed, alpha falloff. Ubah mood seluruh danau tanpa menyentuh material.
Komunitas dan Trash Talk: Chat & Sosial
MMO oldschool itu soal orang sebanyak soal game-nya. Kalau social tool-nya terasa jelek, dunianya terasa kosong.
Overhead Chat System
Teks yang ditambatkan tepat di atas kepala karakter, mengikuti mereka saat bergerak, memudar di kejauhan — ini adalah keharusan absolut dari genre ini, dan sesuatu yang akan kami pertahankan mati-matian.
Ini mengubah party menjadi percakapan sungguhan. Ini memungkinkanmu trash-talk seseorang di tengah pertarungan. Ini membuat kata-kata terakhir pemain yang sekarat menjadi sesuatu yang konyol dan lucu alih-alih baris log sistem. Overhead Chat System menangani pooling, distance culling, dan anchor tracking sehingga tetap bisa scale bahkan saat dua puluh orang saling teriak di dungeon sempit.
Tampil Gaya
Jujur saja — kamu akan menghabiskan waktu yang memalukan di layar karakter. Kita semua begitu. Ini cermin terindah dalam game.
Sistem Preview Karakter
Paper doll kami bukan 2D render yang sudah di-bake — ini adalah scene 3D live yang di-render ke dalam UI render texture. Full lighting, geometri nyata, setiap perlengkapan di badanmu secara real time. Putar, zoom, tatap. Ini jenis fitur yang sama sekali tidak mengubah gameplay, tapi benar-benar mengubah rasanya memiliki game ini.
Mengisi Tas: Icon Studio
Ini rahasia kecil yang agak memalukan dari pengembangan MMO: ikon. Kamu butuh ratusan. Setiap pedang, setiap potion, setiap sampah loot yang kamu temukan di peti butuh kotak kecil 64x64-nya sendiri yang terbaca dengan jelas di inventory yang penuh sesak. Dan semuanya harus terlihat seperti milik game yang sama.
Kamu tidak bisa cuma screenshot model 3D dan selesai. Pencahayaan harus konsisten. Sudut kamera harus konsisten. Dan — ini bagian yang semua orang remehkan — framing harus cocok dengan ukuran grid yang akan ditempati item di inventory. Dagger 1x1 dan great sword 2x3 butuh komposisi yang sangat berbeda, kalau tidak keduanya terlihat salah.
Solusi Kami: Icon Studio
Icon Studio adalah jendela editor Unity kustom yang kami buat supaya satu orang (biasanya aku, sambil menggerutu) bisa memproduksi seratus ikon konsisten tanpa kehilangan akal sehat.
Workflow-nya: masukkan daftar item prefab. Beritahu tool ukuran grid masing-masing di inventory — 1x1, 2x2, 2x3, 1x4, terserah. Frame kamera sekali. Simpan framing sebagai preset. Tekan Generate.
Keajaibannya adalah ukuran grid bukan kosmetik — ini menggerakkan render sebenarnya. Item 2x3 di-render pada lebar 2x dan tinggi 3x (dari basis 512px), jadi saat duduk di inventory-mu proporsinya benar, tidak diregangkan. Longsword benar-benar mengisi slot 1x4 secara diagonal. Botol potion benar-benar muat di 1x1. Inventory terasa seperti kamu menyusun benda nyata.
Di atasnya, tool ini menangani: background transparan atau kustom per item, bone pose capture supaya item berbasis skeleton bisa men-snapshot pose tampilan tanpa mengganggu gameplay rig, dan preset untuk seluruh kategori item — semua kapak di-render dengan kamera yang sama, semua potion dengan yang berbeda. Konsistensi gratis.
Hasil akhirnya adalah setiap ikon dalam game — yang terbaca dengan baik di 32 piksel dalam grid inventory yang padat — di-render dari model in-game yang sebenarnya, dengan bentuk yang sebenarnya ditempati item itu di tasmu. Tidak ada 2D art outsource. Tidak ada pencahayaan yang tidak cocok. Tidak ada dagger yang entah bagaimana terlihat lebih besar dari great sword di UI.
Ini jenis tool yang tidak dilihat siapa pun. Ini juga alasan kenapa inventory-nya tidak terlihat seperti tas berisi stock art yang tidak cocok.
Sampai Lain Waktu
Tidak satupun sistem ini adalah fitur utama Mortumus. Tidak ada yang akan membeli game ini karena langkah kakinya terdengar bagus atau karena skeleton meledak jadi potongan fisika. Tapi inilah tulang di bawah semuanya — pekerjaan tak terlihat yang membuat hal-hal besar terasa benar saat mendarat di atasnya.
Dengan fondasi ini, Fin dan aku bisa membangun dunia gelap, brutal, full-loot yang sudah kami coret-coret di buku catatan selama dua tahun — dengan kecepatan yang tidak membuat kami ingin melempar komputer ke sungai.
— AL