Quake II Rerelease Game Source - Kode game untuk rilis ulang Quake II 2023
(github.com/id-Software)- Kode sumber yang berisi kode game untuk edisi rilis ulang Quake II 2023 serta kode game asli sebagai referensi, sehingga pengguna dapat memodifikasi game
- Mod dapat dimuat ke edisi rilis ulang dengan cara yang sama seperti game asli; saat menjalankan, gunakan
+set game mymod, atau masukkangame mymoddi konsol saat game berjalan - Untuk menghindari perubahan pada file game asli, disarankan memasang mod di direktori
%USERPROFILE%\Saved Games\Nightdive Studios\Quake II - Edisi rilis ulang menggunakan API baru untuk komunikasi antara server dan modul game, serta memperkenalkan modul game klien ringan yang mirip dengan modul
cgamemilik Quake III Arena agar perilaku klien yang sebelumnya di-hardcode dapat diubah - Basis kode ini merupakan gabungan modul game
baseq2,ctf,rogue, danxatrixdari game asli, dan memerlukan compiler C++17 - Kompilasi hanya diuji dengan Clang, VS2019, dan VS2022; dapat dikompilasi dengan C++17 maupun C++20, dan jika menggunakan C++20, dependensi
fmtlibdapat dihilangkan - Dependensinya adalah fmtlib dan jsoncpp, dan dapat dipasang dengan
vcpkg install jsoncpp:x64-windows fmt:x64-windows - DLL edisi rilis ulang mungkin tidak memuat map dari expansion pack asli dengan benar, dan ada kasus map telah dimodifikasi untuk mengatasi masalah
spawnflagsyang saling bertabrakan - Mod lama mungkin dapat dimigrasikan mengikuti perubahan pada antarmuka export game, tetapi karena ada perubahan besar pada struktur dan layout untuk mendukung semua expansion pack dalam satu basis kode serta mencerminkan fitur baru, penggunaan basis kode baru mungkin memerlukan penulisan ulang
- Logika internal DLL game telah disesuaikan menjadi tickrate 40hz, bukan 10hz pada engine asli; 40hz dipilih sebagai keseimbangan antara langkah 25ms serta pertimbangan bandwidth dan CPU
- Sistem penyimpanan mencatat data level dan game sebagai JSON UTF-8, bukan menggunakan offset pointer dan penyalinan memori, dan sistem penyimpanan tidak lagi berinteraksi langsung dengan filesystem
- Edisi rilis ulang Quake II menggunakan protokol server version 2023; sebagian besar pesan tetap kompatibel ke belakang, tetapi beberapa telah disesuaikan untuk fitur baru, fitur yang diubah, dan limit yang dinaikkan
- id Software tidak dapat menyediakan dukungan untuk rilis ini, dan menyarankan penggunaan sumber daya yang digerakkan komunitas
1 komentar
Komentar Hacker News
Quake II adalah pengalaman pertama saya menulis C
Kodenya jelas, konsisten, dan lugas. Saya tidak akan bilang itu sumber terbaik yang pernah saya baca, tetapi ia menetapkan standar yang tinggi. Setelah itu saya melihat banyak kode aneh di berbagai source game, seperti nesting yang melewati sisi kanan layar dan fungsi raksasa yang melakukan terlalu banyak hal, dan itu menjadi pelajaran awal bahwa hal-hal keren bisa dibuat dengan kode yang sederhana
Pada akhir 1990-an hingga awal 2000-an, saya mengajar kelas VR untuk anak-anak dengan Quake dan Quake II. Kami menyiapkan headset VR dan beberapa PC yang terpasang Q.E.D. atau Qoole, lalu meminta siswa usia 12–14 atau 14–18 tahun membuat game realitas virtual mereka sendiri
Pada praktiknya, mereka membuat level Quake/Quake II tanpa monster atau senjata, dan menyampaikan cerita lewat pesan di layar yang dipicu oleh trigger di dalam level. Satu tim membuat level tempat pemain menyeberangi slime lalu menyalakan pompa dengan tombol untuk menguras slime; tim lain membuat labirin air 3D yang mengambang di luar angkasa dan harus direnangi. Saya masih punya beberapa level buatan siswa di hard disk, tetapi sebagian tidak berjalan dengan baik
Untuk keperluan kelas, saya membuat mod yang memberi pemain pistol suar alih-alih blaster. Pada dasarnya itu blaster, tetapi efek suaranya berbeda, tidak ada model senjata, dan pelurunya diubah agar terpengaruh gravitasi, memantul-mantul, lalu padam setelah beberapa waktu. Kalau Anda ikut kelas itu, mungkin saja Anda tidak sempat mencoba headset, karena perangkatnya tidak selalu bekerja dengan benar
Komentar di dalam fungsi relatif jarang, dan tanpa pemahaman tinggi tentang grafis 3D, sering muncul ekspresi seperti sandi yang membingungkan. Itu wajar karena ini karya pelopor industri seperti Carmack, tetapi untuk mengikutinya dengan percaya diri dibutuhkan banyak pengetahuan awal dan sedikit banyak kecenderungan matematis
Dulu saya kronis menulis kode makaroni, dengan 25 baris kode menjadi kerangka untuk belasan fungsi, lalu belasan hal lain lagi ditumpuk di atasnya. Eksekusinya sangat cepat, tetapi utang teknis menumpuk dengan cepat, dan pada akhirnya fungsi-fungsi itu tidak bisa disentuh karena berisiko merusak banyak hal yang dibangun di atasnya
Saya mencoba menjelaskannya lewat komentar, tetapi komunikasinya buruk: saya hanya menulis apa yang dilakukan fungsi, bukan bagaimana cara kerjanya. Misalnya “pemrosesan tabel SINE”, “defragmentasi tabel”, “interpretasi biner”. Semua orang berkata, “Ini apaan sebenarnya? Tapi cepatnya luar biasa,” dan kalau bukan di bidang video game, saya maupun produknya mungkin tidak akan bertahan lama
Mengejutkan bahwa game-game yang sukses, menyenangkan, dan cukup stabil bisa dirilis dengan kode di balik layar yang benar-benar seperti bencana. Kalau sampah yang dirangkai asal-asalan seperti itu saja bisa menghasilkan cukup uang, kadang saya mempertanyakan usaha dan waktu yang saya habiskan untuk mencegah kekacauan
Saya tertawa di bagian ini: https://github.com/ESWAT/john-carmack-plan-archive/blob/mast...
Dalam .plan John Carmack pada 31 Januari 1997, ia menulis bahwa ia pergi ke dealer Ferrari untuk membeli F355 baru sebagai mobil yang “masuk akal”, lalu melihat F40 di depan dan akhirnya membelinya. Setelah itu ia juga menulis rencana untuk memberikan Ferrari pertamanya sebagai hadiah juara turnamen Quake, karena Ferrarinya sudah terlalu banyak
Hadiahnya adalah 328 GTS turbocharged keluaran 1987, pernah dimuat di majalah Turbo edisi Januari 1994, menghasilkan 360 tenaga kuda di roda belakang pada chassis dyno, sudah mendapat mesin baru dan cat baru, tetapi interiornya masih perlu diperbaiki. Ia juga berniat memberi uang tunai untuk menanggung pajak dan asuransi
Untuk berbagi satu kisah Quake II, Quake II adalah first-person shooter pertama yang saya tamatkan
Saya memainkannya selama seminggu saat mengunjungi teman di negara bagian lain pada musim panas, dan kalau bukan begitu rasanya saya tidak akan pernah diizinkan memainkannya. Saat mulai, saya hanya pernah bermain DOOM, jadi saya memakai kontrol yang sama; ternyata cukup berhasil, jadi saya lanjut tanpa banyak berpikir
Lalu tiba-tiba pandangan terkunci ke langit-langit dan saya benar-benar bingung. Ternyata saya menyentuh mouse, dan setelah mengutak-atik cukup lama saya memahami konsep mengendalikan pandangan dengan mouse. Setelah itu gamenya jauh lebih mudah
Tidak ada internet, baik saya maupun teman saya tidak tahu tentang kontrol pandangan dengan mouse, dan saya belum pernah melihat orang memainkan FPS 3D sungguhan. Sekarang pengetahuan itu sudah begitu tersebar luas sampai sulit membayangkan betapa asing dan seperti dari dunia lain antarmuka game saat itu. Senang melihat source code-nya dirilis
[0]: https://github.com/id-Software/Quake-2
[1]: https://github.com/id-Software
Sekitar tahun 1999, saya berada di ComicCon di Roma, Italia; Half-Life baru saja masuk tahap gold master dan demo multiplayer-nya dirilis. Setidaknya 20 orang semuanya bermain Half-Life multiplayer lewat LAN, dan mereka bahkan memakai mouse. Pemandangan yang gila
Setelah itu saya pergi ke banyak sekali LAN party sampai 2005, tetapi matchmaking online membunuh QuakeNet dan budaya sosialnya
Ah, nostalgia sekali
Pada 1999, Quake II adalah game yang saya mainkan, dan secara harfiah nyaris satu-satunya game saya. Saya menghabiskan sangat banyak waktu di QII, dan menulis kode pertama saya lewat pembuatan mod
Tidak berlebihan kalau dikatakan Quake II mengubah saya dari pengguna komputer menjadi programmer. Game ini menentukan arah hidup dan karier saya setelah dewasa
Saat membuat mod pertama, saya belajar perhitungan vektor, memahami codebase yang sudah ada, dan mengintegrasikan build otomatis untuk pengujian cepat. Saya juga sempat menyentuh pembuatan map dan seni 3D, tetapi segera sadar bahwa saya bukan artis ataupun desainer
Saat itu saya sama sekali tidak punya version control maupun kebijakan backup, jadi semua kode aslinya hilang. Game berikutnya yang membuat saya tenggelam dengan cara serupa adalah Tribes 2, dan scripting serta modding yang bisa dilakukan di sana benar-benar luar biasa
https://xn0.co/Xeno-Mod_1.9_Setup.exe
Semua orang di HN tentu saja akan mengunduh dan menjalankan file executable dari sembarang sumber internet! Tapi kalau Anda punya QII asli dan penasaran, aman untuk dijalankan
Penghormatan: http://guake-project.org/
Luar biasa, benar-benar membawa saya kembali ke era 90-an. Tepatnya ini soal Quake pertama
Di lantai kamar tidur saya ada PC yang seingat saya Pentium 166MMX, dan seorang teman membawa mesin serupa yang sedikit lebih cepat, sekitar 233. Tidak ada kartu LAN
Kami memakai kabel paralel tua milik ayah saya untuk membuat Windows mengira itu koneksi LAN, dan itu bekerja cukup baik sehingga kami bermain selama beberapa hari. Lalu kami agak bosan dan masuk ke dunia modding, bukan membuat sendiri, melainkan mengunduh dan mencoba yang sudah dirilis. Girobot dan KQP (Killer Quake Patch) tidak akan pernah saya lupakan
Bot Girobot cukup kuat selama tidak tersangkut di medan. Yang benar-benar tambang emas adalah KQP; ia menambahkan berbagai mod dan senjata gila, serta sistem bot. Vampire Gun membuat pemain yang terkena pelan-pelan, tapi tidak terlalu pelan, hancur menjadi potongan daging sampai mati, dan itu selalu membuat kami tertawa terbahak-bahak. Saya benar-benar merindukan era 90-an
Sebagai catatan, seingat saya KQP juga menyertakan ZeusBots
[1] https://github.com/Jason2Brownlee/QuakeBotArchive
Saya melihat orang mengeluh di tempat lain karena rilis ulangnya tidak punya versi Linux, tetapi source-nya sudah dibuka seperti ini dan disebut sudah diuji dengan clang. Tepuk tangan besar untuk id karena tetap berpegang pada prinsip
Menurut saya, mereka pasti juga memiliki kode lama itu, jadi seharusnya tidak ada kewajiban hukum
Ada terlalu banyak game yang sudah tidak dijual lagi dan tidak berjalan di stack software/hardware modern
Rasanya bagus kalau ada hukum yang mewajibkan software yang selama 20 tahun tidak diberi patch agar berjalan di platform baru untuk dirilis sebagai open source, dari sudut pandang kepentingan budaya
Saya penasaran bagaimana pendapat orang tentang penggunaan _t sebagai sufiks tipe di C/C++ seperti pada source ini
Setahu saya itu dicadangkan untuk tipe yang didefinisikan bahasa, tetapi saya belum pernah melihat alternatif yang masuk akal. Tanpa sufiks, kodenya juga kadang terasa aneh. Misalnya untuk tipe kustom “viewport”, menurut saya
viewport_t viewport;lebih baik daripadaviewport viewport;Biasanya saya tidak cukup keberatan untuk menentangnya, jadi saya memberi nama tipe sesuai yang diminta style guide. Prefiks
tlebih buruk, dan menambahkan kata lengkaptypedefjuga lebih buruk_tadalah POSIX, bukan CTetap saja, setelah menangani codebase id Tech, saya jadi terbiasa dengan
_s/_t, dan saya memutuskan tidak masalah kalau codebase C saya selamanya diberi label “tidak patuh POSIX”. Apa pun arti praktisnya. Di C++, saya cukup memakai InitialCamelCaseunder_scoresuntuk variabel. Memang bisa muncul bentuk sepertiViewport viewport;, tetapi setidaknya mudah diketahui bahwaViewportadalah tipe_typeMenariknya, codebase besar untuk produk embedded yang memakai OS kustom tidak memakai tipe seperti
uint32_tuntuk integer lebar tetap. Sebagai gantinya, header umum perusahaan mendefinisikanuint32dan sejenisnya tanpa sufiks_t. Saya tidak tahu kenapa keputusan itu diambilPada masa pertumbuhanku, game ini adalah segalanya bagiku. Clan, ladder, dan untuk pertama kalinya benar-benar memperkenalkanku pada budaya game online
Map-ku adalah The Edge, dan senjatanya railgun atau rocket launcher. Saat itu masih dial-up, jadi penting sekali menemukan server dengan latency yang bagus. Yang paling menyebalkan adalah orang-orang yang memakai senjata yang menyebabkan lag untuk semua orang
Aku tahu Q3 adalah game yang lebih besar yang menyempurnakan genre ini, tapi favoritku akan selalu Quake 2. Single-player-nya solid dan ada expansion pack juga, sementara kecepatannya pas untukku. Ketika Q3 keluar, semuanya jadi terlalu cepat
VQL jauh lebih dekat ke Q2, sedangkan PQL lebih dekat ke CPMA atau QuakeWorld. Sebagai bonus, The Edge juga bisa dimainkan di Quake Live
Kalau kamu penggemar Quake 2 dan punya Oculus Quest 2, disarankan mencoba Quake2Quest. Rasanya benar-benar berbeda bisa berlari-lari langsung di map yang dulu pernah kuhabiskan begitu banyak waktu