16Aug
Modern bir sistemde eski bir bilgisayar oyunu hazırlamaya çalıştıysanız, hızlı oyununun nasıl koştuğu konusunda şok olmuş olabilirsiniz. Eski oyunlar neden modern donanım üzerinde kontrolsüz çalışıyor?
Bugünün başlarında sana eski bilgisayarlarınızı modern bilgisayarlarda nasıl çalıştırdığınızı gösterdik;günümüzün soru-cevap oturumu, bazı eski yazılımların( özellikle oyunların) neden modern donanımlarda çalıştırmayı denediğinizde doğru çalışmadığını anlamayan güzel bir iltifattır.
Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.
Soru
SüperKullanıcı okuyucu TreyK, eski bilgisayar oyunlarının neden yeni donanımlarda delice çalıştıklarını bilmek istiyor:
90'lı yılların başında eski bir Windows bilgisayarından çıkardığım ve nispeten modern bir bilgisayarda çalıştırmaya çalıştım birkaç eski programım var.İlginçtir ki, inanılmaz derecede hızlı bir hızda koştular - hayır, saniyede 60 kare gibi hızlı değil, daha ziyade oh-tanrım-karakter-is-yürüyen-at-hız-ses türündedirhızlı.Bir ok tuşuna basardım ve karakterin sprite ekrandan zip normalden daha hızlı olurdu. Oyundaki zaman ilerlemesi, olması gerekenden çok daha hızlı gerçekleşiyordu. Hatta CPU'larınızı yavaşlatmak için yapılan programlar vardır; böylece bu oyunlar aslında oynanabilir durumdadır.
Bunun, CPU döngülerine bağlı olarak oyuyla ilgili olduğunu veya bunun gibi bir şey olduğunu duymuştum. Sorularım şunlardır:
- Eski oyunlar neden bu işlemi yapar ve onunla nasıl kurtuldular?
- Yeni oyun bunu nasıl yapmaz ve CPU frekansından bağımsız olarak çalışır?
Öyleyse hikaye nedir? Eski oyunlarıdaki sprite'ler tam olarak ekranda parlıyor ve oyun o kadar hızlı oynatılamıyor?
Cevap
SuperUser katkıda bulunan JourneymanGeek bunu çökertiyor:
Sistem saatinin belirli bir hızda çalışacağını ve iç saatlerini bu saat hızına bağladığını varsayıyorlar. Bu oyunların çoğu büyük olasılıkla DOS üzerinde çalışıyordu ve gerçek modduydu( tamamen ve doğrudan donanım erişimi olan) ve PC'ler için iirc 4.77 MHz sistemi ve Amiga gibi diğer sistemler için ne tür standart işlemci uyguladığınızı varsayıyorduk.
Ayrıca, program içinde dahili zamanlama döngüleri yazmamakla az miktarda kaynağın kaydedilmesi de dahil olmak üzere bu varsayımlara dayalı akıllı kısayollar kullandılar. Onlar da, mümkün olduğunca çok işlemci gücü aldılar - bu, yavaş, genellikle pasif soğutmalı cipslerin günlerinde iyi bir fikirdi!
Başlangıçta farklı işlemci hızını yakalamanın bir yolu eski eski Turbo düğmesiydi( sisteminizi yavaşlattı).Modern uygulamalar korumalı moddadır ve işletim sistemi, kaynakları yönetme eğilimindedir - ( çoğu durumda 32 bitlik bir sistemde NTVDM'de çalışan bir DOS uygulaması), çoğu durumda tüm işlemciyi kullanmak üzere 'ye izin vermez. Kısacası, OS'ler API'larda olduğu gibi daha akıllı hale geldi.
Oldskool PC'de bu kılavuzu temel alarak, mantık ve bellek beni hatalı bulmuştu - bu harika bir okuma ve muhtemelen "neden" içine derinliklerine gider.
CPUkiller gibi şeyler, sisteminizi "yavaşlatmak" için mümkün olduğunca çok kaynak kullanır; bu da verimsizdir. Uygulamanızın gördüğü saat hızını yönetmek için DOSBox'u kullanmak daha iyi olurdu.
Gerçek kodun erken bilgisayar oyunlarında nasıl uygulandığını merak ediyorsanız( ve neden bazı sistem öykünme programlarında gizlenmeden çağdaş sistemlere bu kadar kötü adapte olduklarını), bu uzun ama ilginç dökümanlara bakmayı öneririzbaşka bir SuperUser yanıtında.
Açıklamaya eklemek için bir şey var mı?Açıklamalarda ses çıkıyor. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.