Memulai Game Server lebih mudah dibandingkan Modding Server
Selama 2 minggu terakhir di bulan April aku menjalankan misi yaitu mencoba membuat game server di dalam container, aku berpikir melakukan ini setelah magang 6 bulan menjadi DevOps Engineer dan merasa kalau game server di dalam container bisa dilakukan selama depedensi dan cara memulai gamenya bisa diatur di dalam Dockerfile.
Aku mengikuti guide milik Harry Potter dalam instalasi game server, aku pertama kali mencobanya di laptop lama. Pada guide yang kutemukan di internet user bisa mendownload secara anonim lewat steamcmd namun sekarang tidak bisa dan harus login terlebih dahulu, aku melihat forum di steam untuk alternatif lainnya yaitu menggunakan DepotDownloader dan ketika aku coba pakai buat download gamenya ternyata berhasil dan game servernya sudah bisa dijalankan walaupun local.
Tahap berikutnya adalah mencoba packaging L4D2 Servernya ke dalam container, selama aku membuatnya aku tidak tahu kalau steamcmd sudah ada Docker Imagenya sehingga selama aku membuat imagenya masih belum mengetahui apa saja yang diperlukan oleh steam client sehingga ada beberapa error seperti game tidak mau jalan, game tidak terdeteksi, ataupun steamclientnya tidak terkoneksi. Karena itu aku mengikuti instalasi steamcmd dari repository CM2WAIKI mulai dari konfigurasi steamcmd sampai home usernya.
Setelah di buatkan Image untuk download steamcmd dan entrypoint untuk download gamenya hal berikutnya adalah menjalankan game server di dalam container, ketika dijalankan terjadi error yaitu steamclientnya tidak bisa dijalakan dari execstack. Dari forum steam ini dijelaskan kalau Valve update runtime dari library mereka kemudian sistem operasi yang saat ini mencegah kode eksekusi di dalam stack karena dikira adalah malicious behavior demi keamanan sistem. Jalan keluarnya adalah menggunakan pathelf untuk clear execstack dari binary yang dipakai.
Setelah itu selesai game berhasil dijalankan dan aku berhasil terhubung dengan server yang ada di dalam container, aku akan jelaskan ini di dokumentasi nya tersendiri bagaimana pendekatan ku dan cara kerjanya. Dari sini merasa bahwa 80% pekerjaan untuk menjalankan game server di dalam container sudah selesai. 20% nya adalah menambahkan plugin, membuat server configuration, dokumentasi cara memakai imagenya dan berbagai macam tahapan yang berada di downstream nantinya.
Mari bicara mod dalam server, pada sourcegame modding dan scripting yang populer adalah Sourcemod dan Metamod. Valve merilis gamenya dengan dua versi yaitu Linux dan Windows, Sourcemod dan Metamod juga memiliki dua versi untuk sistem operasi Linux dan Windows. Pada tahap instalasi mod mengalami kegagalan yaitu salah memasang versi dari SM dan MM, karena server yang kujalankan adalah Linux maka aku perlu binary untuk Linux sedangkan yang aku pakai adalah versi Windows, aku tidak sadar ini karena aku hanya copy paste dari repository dan tidak menyadari pesan di readme nya yang tertulis kalau plugins ini untuk Windows. Aku baru sadar ketika melihat extensi dari binarynya itu .dll dan extensi ini hanya bisa bekerja untuk Windows.
Setelah instalasi SM dan MM berhasil berikutnya adalah mencari plugins yang support platfrom yang dipakai untuk server, karena tidak semua plugins yang dicompile untuk Windows bisa dipakai untuk Linux seperti plugins l4dtoolz plugins ini berfungsi untuk mengatur jumlah player serta tick rate di dalam server. Di dalam releasenya ada dua versi yaitu untuk Windows dan Linux, namun ada beberapa plugins yang tidak release versi Linux nya sehingga harus build from source untuk bisa memakai pluginsnya.
Souremod memiliki extensi khususnya yaitu .smx untuk plugins yang dipakai, dari observasi ku tentang direktori struktur sourcemod ada scripting dan include, scripting ini adalah bahasa pemrograman yang dipakai untuk membuat plugins kemudian include sebagai tempat untuk data struktur yang akan dipakai oleh progrmnya. Setelah membuat plugins yang diinginkan menggunakan sourcespawn berikutnya adalah compile, sourcemod menyediakan compile dengan Windows maupun Linux yang aku belum tahu apakah plugins dari SM terpengaruhi jika di compile oleh Windows maupun Linux.
Dan masih banyak lagi yang aku belum ketaui yaitu extension untuk sourcemod fungsinya untuk apa lalu metamod memiliki formatnya sendiri yaitu .vdf dan aku belum tahu ini fungsinya apa, yang pasti menurutku mendapatkan plugins ataupun menulis sendiri itu lebih sulit dibandingkan deploy game server. Menurutku orang awam yang ingin hosting servernya sendiri tanpa plugins bisa melakukannya dalam 20 menit sedangkan plugins bisa menghabiskan seharian karena faktor faktor seperti extension yang diperlukan, apakah untuk Linux atau Windows, lalu data data lain yang diperlukan agar plugins itu bisa bekerja memperlukan resource lebih banyak dibandingkan memulai server.