- Bahkan tanpa game engine komersial, pengembangan game tetap bisa dilakukan dengan cukup mudah dan menyenangkan
- Sebagian besar fitur engine besar tidak diperlukan, dan menulis alat sendiri meningkatkan fleksibilitas serta efisiensi pengembangan
- Dengan memanfaatkan C# modern dan library open source, lingkungan pengembangan yang memadai bisa disediakan terlepas dari ukuran tim
- Dengan menggabungkan library seperti FMOD, SDL3, Dear ImGui dan tool buatan sendiri, pipeline dapat disusun sesuai kebutuhan
- Dari sisi pengembangan lintas platform, pemeliharaan, dan portabilitas, framework ringan yang dibangun sendiri sangat menguntungkan
Kata pengantar: refleksi seorang pengembang game dengan pengalaman 20 tahun
- Pada 2025 pun saya masih mengembangkan video game tanpa game engine komersial
- Orang-orang di sekitar saya sering terkejut karena saya tidak memakai engine komersial
- Fitur dasar dari engine besar seperti Unity atau Unreal kurang memuaskan dibanding mengimplementasikannya sendiri, dan pada akhirnya banyak bagian tetap harus dibuat ulang
- Saat memakai engine komersial, kita rentan terkena dampak perubahan kebijakan bisnis atau masalah akibat pembaruan
- Membuat alat kecil yang benar-benar cocok untuk tiap proyek jauh lebih efisien, dan dalam jangka panjang juga lebih mudah dirawat
Memilih bahasa pemrograman yang dibutuhkan untuk pengembangan game
- Selama bertahun-tahun, C# digunakan sebagai bahasa utama
- C# modern telah banyak meningkat dibanding masa lalu dalam hal performa, sintaks, dan pengalaman pengembangan
- Ada fitur hot reload seperti dotnet watch, sehingga sangat nyaman untuk mengubah dan menguji kode secara real time
- Bahkan non-developer pun mudah mendekatinya, sehingga pembagian peran dan efisiensi kolaborasi antaranggota tim meningkat
- Fitur reflection bawaan memberi keunggulan saat membuat editor atau tool
Library lintas platform serta implementasi rendering dan input
- Menggunakan SDL3 untuk mengimplementasikan semua fungsi dasar seperti window, rendering, controller, dan dukungan lintas platform
- Dengan GPU abstraction milik SDL3, dukungan untuk berbagai lingkungan seperti DirectX, Vulkan, Metal menjadi lebih mudah
- Layer C# buatan sendiri di atas SDL (misalnya Foster) digunakan sebagai utilitas bersama
- FMOD dipakai sebagai tool audio komersial terakhir yang tersisa; selain itu pipeline dibangun berbasis open source
- Sebelumnya juga pernah berpengalaman mengimplementasikan OpenGL/DirectX secara langsung, tetapi stabilitas SDL memberi keuntungan yang besar
Cara menangani aset
- Jika memakai engine buatan sendiri, cukup memuat file yang benar-benar dibutuhkan oleh game
- Untuk aset berskala kecil seperti pada game pixel art, semua file dimuat sekaligus saat inisialisasi
- Pada proyek besar, hanya aset yang diperlukan yang dimuat saat diminta, lalu memori dibebaskan ketika berpindah adegan
- Jika perlu konversi, cukup menulis skrip pemrosesan otomatis saat kompilasi
Level editor dan tool UI
- Mudah menghubungkan data dengan level editor open source seperti LDtk, Tiled, Trenchbroom
- Pada umumnya, editor kustom diimplementasikan sendiri untuk tiap proyek
- Alih-alih menulis UI utama sendiri, GUI immediate-mode dari Dear ImGui dimanfaatkan secara aktif
- Kombinasi reflection di C# dan ImGui memungkinkan visualisasi status game object secara real time
- Jika diperlukan, tool eksternal yang sesuai tujuan dapat dicampur dengan tool internal
Lintas platform dan portabilitas ke konsol
- Dulu pemilihan C++ sangat penting karena masalah porting ke konsol, tetapi kemunculan C# Native-AOT membantu menyelesaikannya
- Framework open source seperti FNA juga sedang aktif memperluas dukungan konsol
- Jika memanfaatkan layer abstraksi umum yang didukung SDL3, basis kode yang sama dapat dijalankan di sebagian besar sistem
Lingkungan pengembangan: ekosistem terbuka berpusat pada Linux
- Platform pengembangan utama telah dipindahkan ke Linux, dan sangat cocok dengan toolchain open source
- Masih ada keterkaitan dengan beberapa software komersial tertentu (misalnya vscode, github), tetapi makin luas ekosistem open source, makin besar pula dukungannya
- Secara pribadi, lingkungan kerja yang sama juga disiapkan di berbagai platform berbasis Linux seperti Steam Deck
Tanya jawab tambahan dan contoh
- Pertanyaan tentang penggunaan Godot: jika kebutuhan pengembangan berfokus pada engine open source, Godot direkomendasikan; selain itu lebih menyukai tool kustom
- Pekerjaan 3D: engine besar memang punya keunggulan, tetapi untuk proyek kecil yang sangat spesifik, framework kustom sudah memadai
- Kebutuhan teknologi berperforma tinggi: tergantung tingkat kebutuhan, memakai engine besar seperti Unreal juga tidak masalah
- Perubahan engine di tingkat tim: cocok untuk pengembangan kecil/solo, dan bahkan studio menengah-besar juga makin banyak beralih ke engine kustom untuk menghindari risiko jangka panjang
- Workflow aset: file Aseprite dapat otomatis dikonversi menjadi animasi dengan memanfaatkan tag dan timing bawaan
Kesimpulan
- Membuat game tanpa game engine komersial adalah pilihan yang bergantung pada selera dan cara kerja
- Yang penting adalah memprioritaskan kebutuhan dan kesenangan, lalu memilih metode yang paling cocok untuk diri sendiri
5 komentar
Ini kegiatan yang bagus.
Saya adalah pengembang game generasi pertama.
Sebelum Unreal muncul, tentu saja studio pengembang
wajib mengembangkan engine sendiri,
dan itulah daya saing mereka.
Pengembangan engine pada dasarnya sebagian besar diisi oleh pengembangan tool
yang berbasis pada core, kernel, rendering, dan berbagai input/output lainnya.
Saat itu saya menangani tool partikel, suara, layer, dan objek,
dan jika anggota tim yang berjumlah 7 orang dikumpulkan,
sepertinya kami dengan mudah melampaui sekitar 20 tool.
Sejak suatu hari Unreal muncul dan game-game model produksi massal
bermunculan, mereka tidak lagi berinvestasi dalam pengembangan engine.
Sepertinya saat itulah banyak orang keluar dan mendirikan perusahaan sendiri.
Ternyata itu sudah cerita 27 tahun yang lalu.
Saya pun sekarang sudah bertambah tua dan bekerja di bidang lain, bukan game.
Ini mengingatkan saya pada masa-masa penuh nostalgia ketika saya mengerjakan core
sesuai mode directx dan opengl bergantung pada kartu grafis.
Semangat...
Belakangan ini saya sudah lama mencari engine untuk membuat game strategi, sampai berpikir kalau begini lebih baik bikin sendiri saja. Melihat ada contoh orang yang benar-benar mempraktikkannya dan berhasil, rasanya jadi makin bersemangat.
Komentar Hacker News
Selama 5 tahun mengembangkan engine game 2D sendirian sambil mengerjakan pekerjaan berbayar terkait, saya ingin menjelaskan poin penting yang sering tidak disadari orang
Engine itu bagian yang mudah
Yang benar-benar penting adalah tooling di sekitar engine, konten, dan pipeline aset
Mengimpor tekstur, audio, file model (
gltf,fbx, animasi, dll.) dari berbagai sumber data dan formatFitur editing dasar di aplikasi editor seperti potong, salin, tempel, undo, redo, simpan, hapus
Visualisasi dan fitur yang memungkinkan developer membuat dan memanipulasi data nyata di editor (entity, animasi, scene, audio graph, dukungan scripting, dll.)
Pengemasan data dan prapemrosesan seperti baking geometri statis, kompilasi shader, resampling dan packing tekstur/audio, pembuatan asset pack konten game
Setelah semua itu selesai, bagian runtime yang sebenarnya (yakni main loop game dan subsistem di bawahnya) hanyalah sebagian kecil dari keseluruhan sistem
Itulah sebabnya di studio game, orang yang menangani engine jumlahnya sedikit, sementara mayoritas adalah programmer yang membuat tool
engine detonator: https://github.com/ensisoft/detonator
Penting untuk fokus membuat engine yang cocok untuk game saya sendiri, bukan mengejar tujuan serbaguna
UI, kompresi, dan semacamnya bisa diselesaikan dengan library dan framework
Pilihan OP memakai library kecil seperti imGUI juga contoh yang bagus
Karena bukan membuat engine untuk semua jenis game, jadi ada banyak hal yang pada praktiknya tidak perlu dikerjakan
Engine itu seperti runtime kecil yang ditempelkan pada pipeline aset
Belakangan ini compiler shader bahkan makin penting dibanding 3D API
Bagian yang menarik terkonsentrasi pada compiler shader, sementara 3D API pada dasarnya hanya berperan menjalankan shader dan mengirimkan data
Saat orang mengatakan engine, mereka sering kali memasukkan pipeline aset dan editor ke dalamnya juga
Engine masa kini bukan sekadar main loop + fungsi 3D API
Meski memakai engine seperti Unity, sangat sedikit developer yang hanya menulis kode rendering
Tentu saja, memakai Unity/Unreal juga bukan berarti sama sekali tidak perlu memakai tool aset sendiri
Saya sangat setuju dengan ini setelah baru-baru ini merombak engine untuk sekuel
Seperti yang saya tulis di postmortem, kebanyakan orang membayangkan “engine” sebagai kode yang masuk ke executable game, tetapi secara nyata saya rasa porsi yang lebih besar justru adalah kode yang tidak didistribusikan bersama game, seperti level editor, pipeline konten, debugging/profiling, dan workflow development
Pengembangan tool lebih membosankan dan lebih mudah menguras tenaga dibanding pengembangan engine
Karena alasan inilah banyak pengembangan game dengan engine kustom berhenti di tengah jalan
Postmortem: https://ruoyusun.com/2025/04/18/game-sequel-lessons.html
Membuat editor dari nol adalah pekerjaan yang sangat besar
Kalau memungkinkan, lebih baik memanfaatkan editor yang sudah ada
Misalnya kombinasi TrenchBroom (editor Quake) + func_godot, dan untuk 2D ada Tiled
Untuk pengelolaan data game dulu ada CastleDB, tetapi sekarang sudah terintegrasi dengan Hide (editor 3D yang lebih serius)
Setelah tool selesai dibuat, mendesain game dan membuat kontennya juga menjadi tahap utama berikutnya
Beberapa tahun lalu saya membuat kelas
spritesederhana dengan SDL2 dan sedikit C++, lalu menambahkan fitur sederhana seperti collisionKalau apa yang saya buat itu mau disebut engine, mungkin lebih seperti bantuan sepeda listrik
Poinnya adalah bahwa “engine” sering kali malah memimpin keseluruhan proyek/game
Sering kali game akhirnya disesuaikan dengan engine, karena itu saya selalu menghindari engine besar seperti Unity
Pada akhirnya engine-engine seperti itu hanya menghasilkan struktur game yang sama, yang berbeda cuma asetnya
Secara pribadi, daripada membuang waktu mempelajari engine, saya lebih suka mulai dengan SDL yang kurva belajarnya pendek, dan SDL juga bisa dipakai untuk proyek lintas platform lain di luar game
Game saya: https://store.steampowered.com/app/2318420/Glypha_Vintage/
Memang membuat engine sendiri butuh waktu lama, tetapi saya bertanya-tanya berapa banyak waktu yang dibutuhkan untuk benar-benar menguasai Unreal atau Unity sampai bisa langsung menuangkan ide menjadi game
Begitu pembuatan engine saya selesai, pada akhirnya saya juga mendapatkan tingkat keahlian itu secara langsung, jadi dalam jangka panjang ini menghemat waktu
Semakin panjang karier saya sebagai engineer, semakin terasa bahwa membuat sendiri lebih menguntungkan dari sisi waktu
Semakin unik atau niche game-nya, semakin masuk akal membuat sendiri
Menghabiskan beberapa bulan tersesat di UI Unreal yang rumit lalu sadar bahwa hal yang sebenarnya diinginkan hampir mustahil dilakukan di engine generik sejak awal itu tidak efisien
Sebaliknya, kalau yang dibuat adalah RPG open world superambisius, membuat sendiri jelas bukan pilihan yang baik
Keterbatasan engine kustom justru bisa memunculkan kreativitas, dan meski tidak mencapai level tertinggi, hasilnya bisa jadi game yang lebih orisinal
Saya pernah membuat engine sendiri
Awalnya butuh sekitar 1 tahun sambil melewati banyak trial and error dan jalan buntu
Saya mengimplementasikan hampir semua subsistem yang biasa ada di game: rendering 3D, UI adaptif, skeletal animation, save file, smart object, pathfinding, scripting, audio, fisika, dan lain-lain
Secara khusus saya juga mengimplementasikan fitur rewind (seperti sistem di Braid) sendiri
Fitur seperti ini membutuhkan dukungan dari semua subsistem engine (script, fisika, dll.)
Karena saya memahami semua bagian engine yang saya buat, saya punya kebebasan luar biasa untuk mengembangkan fitur tambahan
Tetapi setelah 1 tahun pengembangan, saya makin burnout dan kehilangan motivasi
Saya tidak tahu soal Unreal, tetapi Unity memungkinkan pengembangan lebih dari 10 kali lebih cepat dibanding menulis semuanya sendiri
Fitur fisika bisa ditambahkan dalam 1 menit, sedangkan kalau pakai engine buatan sendiri, hanya untuk mengintegrasikan library eksternal saja bisa makan waktu satu atau dua hari
Fitur visualisasi internal yang ditunjukkan Noel untuk Unreal juga sudah ada di Unity
Editing seperti memanipulasi bounding box juga tersedia secara bawaan
Kalau perilaku dasar engine kurang, itu bisa dengan mudah diperluas menggunakan ImGui atau engine CSS berbasis Yoga
Ada banyak fitur seperti particle editor canggih, shader yang kompleksitasnya sudah disederhanakan, modular data streaming, dan sebagainya
Secara teori saya juga ingin membuat semuanya sendiri, tetapi pada akhirnya waktu terbatas dan yang utama adalah menyelesaikan
Waktu yang dibutuhkan untuk mempelajari Unreal atau Unity sampai bisa langsung mewujudkan ide game, dan waktu yang dibutuhkan untuk membuat engine sendiri, adalah dua pertanyaan yang berbeda
Kalau diberi sedikit gambaran ide saja, saya bisa membuat prototipe yang sudah bisa dimainkan dalam hitungan jam
Di Unity, pada tahap awal cukup dengan pemrograman, dan di Unreal, hanya dengan blueprint saja pun hampir bisa sampai mendekati rilis game
Lihat video prototipe game gaya Super Hexagon yang selesai dalam 10 menit: https://www.youtube.com/watch?app=desktop&v=p8MzsDBI5EI
Elemen yang benar-benar khas milik Unity mungkin cuma prefab; selebihnya adalah konsep umum pengembangan game
Dari sudut pandang developer Unreal, membuat prototipe serupa di Unity pun mungkin bisa dilakukan dalam kurang dari 1 jam
Asumsi “setelah engine selesai” itu sendiri mungkin tidak realistis
Bahkan aksi sederhana seperti
GameObject.Instantiatepun membutuhkan sumber daya yang sangat besar jika harus diimplementasikan sendiri di enginePertimbangkan kompleksitas fisika 2D/3D, shader, dukungan platform, dan lain-lain
Kalau tujuan Anda adalah engine, buatlah engine; kalau tujuan Anda adalah game, buatlah game itu sendiri
Kalau pengetahuan pengembangan game Anda sudah cukup untuk membuat game engine
Belajar Unreal atau Unity sampai bisa membuat prototipe hanya butuh satu hari
Butuh waktu lama untuk benar-benar mahir, tetapi waktu untuk menyelesaikan prototipe game yang diinginkan tidak bisa dibandingkan
Membuat game tanpa engine besar yang “melakukan semuanya” itu lebih mudah, lebih menyenangkan, dan kadang lebih efisien
Namun, saat harus mendalami fitur engine tertentu (misalnya inverse kinematics atau animation blending di Unreal), saya jadi berpikir “syukurlah saya tidak perlu susah-susah membuat ini sendiri selama 2–3 minggu”
Minimalisme atau mencegah pembengkakan juga penting, tetapi engine-engine ini populer karena mereka menanggung pekerjaan berat itu untuk kita
Dulu saya juga seperti ini
Saat membuat game 3D pertama, saya mengimplementasikan semuanya: input, manajemen objek, culling, loading model, library matematika, grafis, normal map, SSAA, dan seterusnya, lalu tingkat penyelesaian game-nya justru 0%
Meski begitu, untuk proyek 2D hobi saya masih tetap melakukan pengembangan tanpa dependensi hanya dengan browser canvas
Pada praktiknya browser itulah yang berperan sebagai engine
Menanggapi pendapat “syukurlah tidak membuat sendiri”
Kalau memikirkan karier jangka panjang sebagai developer indie, meski butuh beberapa minggu, pemahaman yang lebih dalam + kepemilikan 100% atas source code dan nilai guna ulang tetap lebih besar
Skripsi kelulusan saya bertema mem-porting particle engine berbasis NeXTSTEP/Objective-C ke Windows 95/Visual C++ (berbasis OpenGL, termasuk sampel marching cubes)
Tema seperti itu sekarang di engine modern mungkin cuma sebagian dari fitur satu baris
Memakai engine membuat proyek berjalan jauh lebih cepat, dan Anda tidak perlu menghabiskan waktu untuk membangun infrastruktur
Bagi kebanyakan orang, menemukan kembali roda bukanlah hal yang terlalu menyenangkan
Fitur seperti inverse kinematics atau animation blending
Kalau itu inti dari game-nya, maka layak diimplementasikan; kalau tidak, itu cuma jebakan teknis yang tidak perlu
Saya membuat game dengan cara saya sendiri memakai Lua & Love2D
Bagian paling menyenangkan justru terletak pada memberi batasan pada diri sendiri
Kalau pengembangan sudah tidak menyenangkan, itu tanda ada yang salah, jadi perlu mencari cara yang lebih baik
Game saya YOYOZO kecil, hanya 39KB, tetapi masuk daftar game terbaik Ars Technica 2023 bersama judul-judul besar
https://news.ycombinator.com/item?id=38372936
Beberapa tahun setelah membeli Playdate, saya baru mulai bermain-main dengan SDK-nya, sambil untuk pertama kalinya belajar Lua juga
Saya memang berharap ada strong typing dan keamanan bahasa yang lebih baik, tetapi untuk konteks ini rasanya sudah cukup
Sejauh ini saya baru membuat demo teknis kecil berupa teks yang berputar di ruang 3D palsu mengikuti crank
https://bsky.app/profile/haydenblai.se/post/3lpgnya4cqk2a
Saat mengerjakan proyek ini, saya sadar bahwa setelah lama berkarier di CRUD/web app, saya hampir melupakan semua trigonometri
Keunggulan terbesar pengembangan Playdate adalah kanvasnya tetap, jadi begitu posisi piksel ditentukan, hasilnya akan sama persis di semua perangkat, dan itu terasa sangat membebaskan
Dalam pengalaman pengembangan saya sebelumnya yang selalu membuat UI responsif, pengalaman ini terasa sangat baru
Setiap kali mencoba membuat sesuatu dengan game engine (Godot, Unity, Unreal, dll.), saya selalu akhirnya bergulat dengan engine-nya
Pada akhirnya terasa seperti hanya menaruh aset di atas format game yang sudah ditentukan, sehingga sulit membuat game yang benar-benar saya inginkan
Kalau dianalogikan ke web development, rasanya seperti produk jadi semacam WordPress
Saat konfigurasi dasarnya tidak sesuai dengan niat awal, dibutuhkan banyak hack dan solusi memutar yang besar
“Template game” ikut memperparah keadaan di sini
Anda bisa membeli template yang hanya perlu diganti title screen dan modelnya supaya terlihat seperti game jadi
Hampir setengah game baru di Steam tampak seperti sekadar template Unity/Unreal dengan skin yang sedikit diganti
Berbagai contoh:
https://assetstore.unity.com/packages/templates/…
https://store.steampowered.com/app/2488370/Cash_Cleaner_Simulator/
https://store.steampowered.com/app/2073910/A_Webbing_Journey/
https://store.steampowered.com/app/3498270/Better_Mart/
https://store.steampowered.com/app/2625420/Drive_Beyond_Horizons/
https://store.steampowered.com/app/3163790/Toy_Shop_Simulator/
https://store.steampowered.com/app/3023600/Horse_Farm_Simulator/
https://store.steampowered.com/app/3124550/Liquor_Store_Simulator/
Di Google Play, semua game terlihat sama, dan muncul masalah khas Unity seperti loading lama, masalah rendering, teks rusak, bug audio, dan sebagainya
Kalau ini game “idle RPG” untuk iklan mobile, mungkin masih bisa diterima, tetapi di ranah VR saya benar-benar sulit memahami penggunaan Unity
Untuk memenuhi performa Meta Quest Store, banyak bagian dari engine Unity harus dibongkar dan diutak-atik
Sulit mencapai performa yang dibutuhkan, dan cara kerjanya juga terasa kuno
Kalau ingin membuat software berkualitas tinggi, itu mustahil dimulai dari engine yang sejak awal tidak bisa dipercaya
Penulisnya (Noel) membuat game bernama Celeste, yang telah terjual lebih dari 3 juta kopi
https://en.wikipedia.org/wiki/Celeste_(video_game)
Saya juga cukup setuju, dan sedang membuat framework game C# berbasis kode (penerus spiritual XNA/Monogame, memakai Sokol alih-alih SDL)
https://zinc.graphics/
Kekuatan C# modern: lintas platform, kompilasi NativeAOT, native hot reloading, reflection, dan sebagainya
Saya juga secara pribadi menambahkan source generator
Memang masih ada citra negatif dari masa lalu, tetapi perkembangan CoreCLR dan bahasa ini dalam 5 tahun terakhir benar-benar luar biasa
Satu-satunya hal yang saya harapkan hanyalah Union Types, dan itu sudah diajukan, jadi saya berharap akan ditambahkan tahun depan
https://github.com/dotnet/csharplang/blob/main/proposals/TypeUnions.md
Saya hanya pernah memakai C# di Win32 atau Unity, dan meski punya pengetahuan engine tingkat rendah dari C/C++, saya dulu mengira C# tidak mungkin dipakai lintas platform seperti di game console
Sekarang saya sadar pemikiran saya itu keliru
Untuk software apa pun, saya lebih suka memulai dari nol
Bagi orang yang pernah menangani proyek besar, ini mungkin terasa lambat, tetapi pada tahap startup justru sering lebih cepat
Cukup implementasikan yang minimum, lalu begitu abstraksi mulai terbentuk, kecepatan menambahkan fitur baru meningkat
Produktivitas software enterprise besar dan mini engine yang saya tulis sendiri benar-benar berbeda
Kode yang saya tulis sendiri jauh lebih cepat untuk dipotong dan direfaktor
Karena itu saya menyukai microservice dan tim kecil
Saat membuat sendiri, Anda pasti harus melewati trial and error dan ladang ranjau yang gampang rusak, dan juga butuh waktu bertahun-tahun untuk benar-benar memahami sifat asli bahasa atau platform
Tetapi proses itu sendiri pada akhirnya menjadi fondasi kemampuan developer
Bukan engine, saya penasaran bagaimana kalau memakai framework setingkat MonoGame~
“Proses itu sendiri pada akhirnya akan menjadi jam terbang pengembang” — saya sangat setuju.