Pengembang game dan Modder Silent, mungkin paling dikenal karena silentpatches yang dirilisnya untuk berbagai game termasuk Grand Theft Auto: San Andreas, telah menemukan (dan memperbaiki) bug yang telah terbengkalai selama dua dekade. Dan sementara manifestasi ini, tampaknya, dipicu oleh build baru Windows 11, sudah ada sepanjang waktu.
Silent menerima “laporan bug yang agak spesifik” yang berkaitan dengan SilentPatch, di mana pengguna mencatat bahwa setelah memperbarui Windows 11 ke versi 24h2, pesawat skimmer menghilang sepenuhnya dari permainan. Itu tidak dapat diteluskan menggunakan alat pelatih, juga tidak muncul di titik -titik bertelur yang biasa.
Pahlawan pemrograman kami mencatat ini bukan keluhan yang terisolasi, dan dia telah menerima komentar tentang skimmer yang hilang sejak November tahun lalu. Satu pengguna mengatur mesin virtual (VM) yang menjalankan Windows 11 23H2, mengkonfirmasi bahwa pesawat melahirkan OK, kemudian memperbarui VM ke Windows 11 24H2 dan pesawat menghilang. Seperti yang dikatakan pengguna ini, mengapa “pembaruan fitur kecil pada tahun 2024 memecahkan pesawat acak dalam permainan 2005 adalah dugaan siapa pun.”
Diam meminta beberapa orang pada 24h2 untuk menguji dan, ya, mereka semua menabrak bug ini. Pada titik ini ia menggulung lengan bajunya, mengatur VM -nya sendiri berlari 24 jam, dan mengkonfirmasi. Di sinilah menjadi bagus:
“Saya kemudian menggunakan skrip untuk memunculkan skimmer dan memasukkan CJ di dalamnya,” tulis diam, “hanya akan diluncurkan 1,0287648030984853E+0031 = 10,3 non-miliar meter, atau 10,3 oktillion kilometer, atau 1,087 quadrillion-tahun di atas langit.”
Saya akan ha 'itu
Tak perlu dikatakan GTA: San Andreas tidak memiliki sarana untuk benar-benar menunjukkan peristiwa luar biasa ini, alih-alih menunjukkan “efek terbakar 'yang terkenal yang diketahui terjadi ketika kamera diluncurkan menjadi tak terbatas atau dekat dengan itu. Cukup lucu, Anda masih bisa membuat bentuk pesawat meskipun animasi menyerah sepenuhnya pada ketidakakuratan nilai-nilai titik mengambang.”
Diam mulai menyelidiki masalah ini dan menabrak nilai numerik “jelas besar” untuk kecepatan blade rotor pesawat, tetapi apa yang menyebabkan pesawat menembak jarak yang tak terbayangkan? “Ada dua kemungkinan,” jelas diam:
- Pesawat sudah bertelur tinggi di langit.
- Pesawat muncul di permukaan tanah dan kemudian menembak di bingkai berikutnya.
Pada titik ini diam mulai masuk ke detail fungsi, koordinat z, kotak terikat, dan selusin sepotong terminologi lainnya. Jika saya mencoba menjahit penjelasan, saya mungkin akan salah dan itu akan terlihat seperti omong kosong. Untuk lebih banyak kode-cenderung, Anda dapat berpesta di tempat kerja Silent dalam penulisan penuhnya yang luar biasa.
Panjang dan pendeknya adalah bahwa diam mengidentifikasi nilai Z yang rusak (koordinat bertelur), dan menebak bahwa ini mengakibatkan salah satu file tabrakan yang dibaca secara tidak benar (“sangat tidak mungkin, tetapi bukan tidak mungkin mengingat bahwa masalah ini berpotensi menjadi bug OS”) atau “kotak pembatas dibaca dengan benar, tetapi kemudian diperbarui dengan nilai yang keliru.
Hal ini mengarah ke analisis lebih lanjut dari kotak pembatas dan koordinat Z, dan kesadaran bahwa ketika kendaraan tertentu diteluskan untuk pertama kalinya, permainan memperbarui koordinat Z untuk mencerminkan ketinggian suspensi alami mobil. Ya, kita masih berbicara tentang pesawat.
“Di sinilah segalanya menjadi salah terlebih dahulu,” tulis diam, sebelum meluncurkan analisis terperinci tentang bagaimana garis suspensi dihitung, dan di mana ia akhirnya mengidentifikasi masalah: di kendaraan. Di luar, skimmer memiliki parameter lebih sedikit daripada pesawat lain, membuatnya menyerupai entri untuk kapal sebagai gantinya. Itu satu-satunya pesawat yang hilang parameter untuk roda depan dan belakangnya. “Apakah penambahan kembali parameter-parameter itu memperbaiki pesawat amfibi? Tidak mengherankan, memang begitu!” Dia menulis.
Setelah mengidentifikasi masalah, yang entah bagaimana melibatkan permainan berpikir pesawat itu adalah perahu, pria kami kemudian pergi sherlock penuh untuk mengidentifikasi mengapa coders Rockstar melewatkannya.
“Saya memiliki penjelasan tentang mengapa Rockstar membuat kesalahan khusus ini dalam data untuk memulai dengan-di Vice City, Skimmer didefinisikan sebagai perahu, dan karena itu tidak memiliki nilai-nilai yang ditentukan oleh desain! Ketika di San Andreas mereka mengubah jenis kendaraan Skimmer ke dalam pesawat, seseorang lupa untuk menambahkan kesalahan yang sekarang disyaratkan.
“Dalam kasus lubang kelinci ini, penemuan perbaikan ini hanya menimbulkan lebih banyak pertanyaan – mengapa ini hanya istirahat sekarang? Apa yang membuat permainan bekerja dengan baik meskipun masalah ini selama lebih dari dua puluh tahun, sebelum pembaruan baru untuk Windows 11 tiba -tiba menantang status quo?”
“Ini adalah bug paling menarik yang pernah saya temui untuk sementara waktu.”
Diam
Cukup mengejutkan, versi windows 11 khusus ini sebenarnya bukan bertanggung jawab. Dia mengidentifikasi masalah akhir sebagai “nilai titik mengambang aktual yang duduk di tumpukan di tempat yang tepat.
“Saya kemudian memeriksa kendaraan. Di luar untuk Topfun – kendaraan yang ditentukan langsung sebelum skimmer. Tentu saja, skala roda 0,7!” dia menulis. “This is the exact proof I needed—notice that in the Windows 10 run, some of the local variables are even still visible to the human eye (like the normal vehicle class), while in Windows 11, they are completely gone. It's also worth pointing out that even in Windows 10, the very next local variable after the wheel scales has been overwritten by LeaveCriticalSection, which means the game was 4 bytes away from hitting this exact bug years earlier! The luck at display here is gila.”
Jadi meskipun Windows 11 24H2 membawa bug ini menjadi terang, “Masalah sebenarnya di sini adalah permainan yang mengandalkan perilaku yang tidak ditentukan (variabel lokal yang tidak diinisialisasi).” Bug itu bisa muncul di Windows 10, atau 7, atau XP, atau bahkan Windows 98 – matematika tidak berakhir seperti itu. “
Pernah penyelamat, Silent melanjutkan untuk melihat melalui kode pada rilis San Andreas lainnya, dan menemukan bahwa versi Xbox asli dari game termasuk perbaikan yang tidak berbeda dengan miliknya. Perbaikan ini termasuk dalam rilis San Andreas lainnya, termasuk GTA: Edisi Definitif.
“Ini adalah bug paling menarik yang pernah saya temui untuk sementara waktu,” tulis diam. “Awalnya saya kesulitan meyakini bahwa bug seperti ini akan langsung mengikat dengan rilis OS tertentu, tetapi saya terbukti benar -benar salah. Pada akhirnya, itu adalah bug sederhana di San Andreas dan fungsi ini seharusnya tidak pernah bekerja dengan benar, namun, setidaknya pada PC disembunyikan selama dua dekade.”
Dalam perkembangan saya hanya bisa mengagumi, diam -diam dengan menjelaskan mengapa perbaikannya sedikit lebih akurat daripada yang setara Rockstar, dan menggunakan penemuan untuk memperkuat beberapa prinsip pengkodean yang baik seperti memvalidasi data input Anda: “San Andreas terkenal buruk dalam hal ini.” Meow!
Dalam buku Tom Wolfe, The Right Stuff, yang berfokus pada pilot uji luar biasa yang bekerja pada tahap awal program luar angkasa, ia mengajukan pertanyaan: “Apa itu, saya bertanya -tanya, yang membuat seorang pria yang mau duduk di atas lilin Romawi yang sangat besar, seperti redstone, atlas, rocket atau rocket sendok, dan menunggu orang untuk menerangi?”
Dalam mikrokosmos San Andreas, seorang pria bernama Silent bertanya-tanya apa yang membuat CJ memasuki pesawat dan kemudian secara instan meluncurkan “1,087 Quadrillion-Years di langit.” Jawaban sebenarnya semuanya di atas, dan dalam penulisan lengkapnya. Tetapi jawaban lainnya adalah absurditas dari hal-hal ini yang bekerja sama sekali, perhitungan co-dependent yang tak terhitung jumlahnya dan hal-hal yang bisa salah dalam sesuatu yang begitu sederhana seperti membuat kendaraan muncul di dunia. Sekarang Anda melihatnya: Sekarang Anda berada di galaksi lain.