Mengapa Game Lama Berlari Terlalu Cepat Di Komputer Modern?
Jika Anda pernah mencoba membuat game komputer kuno dan berjalan pada sistem modern, Anda mungkin akan terkejut dengan caranya cepat permainan berlari. Mengapa game lama kehabisan kendali pada perangkat keras modern?
Sebelumnya hari ini kami menunjukkan kepada Anda bagaimana menjalankan perangkat lunak yang lebih tua di komputer modern; sesi tanya jawab hari ini adalah pujian yang bagus yang menggali mengapa beberapa perangkat lunak yang lebih lama (khususnya game) tampaknya tidak berfungsi dengan benar ketika Anda mencoba menjalankannya pada perangkat keras modern.
Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.
Pertanyaan
Pembaca SuperUser TreyK ingin tahu mengapa game komputer lama berjalan sangat cepat pada perangkat keras baru:
Saya punya beberapa program lama. Saya menggunakan komputer Windows era 90-an dan mencoba menjalankannya di komputer yang relatif modern. Yang cukup menarik, mereka berlari dengan kecepatan sangat cepat - bukan, bukan kecepatan 60 frame per detik, melainkan jenis oh-my-god-the-character-is-walking-at-the-speed-of-sound dari cepat. Saya akan menekan tombol panah dan sprite karakter akan melintasi layar lebih cepat dari biasanya. Kemajuan waktu dalam permainan itu terjadi jauh lebih cepat dari yang seharusnya. Bahkan ada program yang dibuat untuk memperlambat CPU Anda sehingga game-game ini sebenarnya dapat dimainkan.
Saya pernah mendengar bahwa ini terkait dengan permainan tergantung pada siklus CPU, atau sesuatu seperti itu. Pertanyaan saya adalah:
- Mengapa game lama melakukan ini, dan bagaimana mereka bisa lolos begitu saja?
- Bagaimana gim yang lebih baru tidak lakukan ini dan jalankan secara independen dari frekuensi CPU?
Jadi bagaimana ceritanya? Mengapa sprite di game-game lama menyala di layar begitu cepat sehingga game menjadi tidak bisa dimainkan?
Jawabannya
Kontributor SuperUser JourneymanGeek menguraikannya:
Saya percaya mereka menganggap jam sistem akan berjalan pada kecepatan tertentu, dan terikat pada timer internal mereka ke laju jam itu. Sebagian besar game ini mungkin berjalan pada DOS, dan adalah mode nyata (dengan lengkap, akses perangkat keras langsung) dan menganggap Anda menjalankan iirc Sistem 4,77 MHz untuk PC dan prosesor standar apa pun yang dijalankan model untuk sistem lain seperti Amiga.
Mereka juga mengambil jalan pintas yang pintar berdasarkan asumsi-asumsi itu termasuk menghemat sedikit sumber daya dengan tidak menulis loop waktu internal di dalam program. Mereka juga mengambil daya prosesor sebanyak yang mereka bisa - yang merupakan ide yang baik pada masa chip yang lambat dan sering didinginkan secara pasif!
Awalnya satu cara untuk mengatasi kecepatan prosesor yang berbeda adalah tombol Turbo tua yang baik (yang memperlambat sistem Anda). Aplikasi modern dalam mode terproteksi dan OS cenderung mengelola sumber daya - mereka tidak mau mengizinkan aplikasi DOS (yang berjalan di NTVDM pada sistem 32-bit) untuk menggunakan semua prosesor dalam banyak kasus. Singkatnya, OS menjadi lebih pintar, seperti halnya API.
Sangat berdasarkan dari panduan ini pada Oldskool PC di mana logika dan memori mengecewakan saya - ini adalah bacaan yang bagus, dan mungkin masuk lebih dalam ke "mengapa".
Hal-hal seperti CPUkiller menggunakan sumber daya sebanyak mungkin untuk "memperlambat" sistem Anda, yang tidak efisien. Anda akan lebih baik menggunakan DOSBox untuk mengatur kecepatan jam yang dilihat aplikasi Anda.
Jika Anda ingin tahu tentang bagaimana kode aktual diimplementasikan dalam permainan komputer awal (dan mengapa mereka beradaptasi sangat buruk untuk sistem modern tanpa sandboxed dalam semacam program emulasi), kami juga menyarankan untuk memeriksa rincian panjang tapi menarik dari ini. proses dalam jawaban SuperUser lain.
Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.