Van olyan, hogy egy programot (játékot) szándékosan belassítanak?
És ha igen, akkor hogyan csinálják? Direkt lassú algoritmust használnak az optimális helyett? Vagy telerakják a lassítandó részeket wait-ekkel? Egyéb hack?
A kérdés apropóját a régi játékok adják, amik túl gyorsan futnak a mai processzorokon.
A kérdés alapjában véve nem rossz, hiszen nem csak a programokban, a mobiltelefonokban követhető mindez nyomon, hanem bárhol máshol is.
Legutóbb azt hallottam, hogy egy lámpatest-összeszerelő üzemben a lámpa szoftverét úgy írták meg, hogy bizonyos üzemóra eltelte után álljon le, ez egy egyszerű RTC-vel megvalósítható. (és ez már újításnak számít, mert régebben egy áramkört rövidre zártak és a lámpatest valóban megsemmisítette magát)
Így kényszerítik az embereket az észnélküli vásárlásra... :-)
#4
Anno a Crysist gyanúsították meg ezzel, nem tudom, mennyi alapja van, sosem néztem utána.
Nyilván hatalmas botrány lenne, ha kiderülne, hogy ilyen módon szándékosan lassítják a programokat vagy verik fel a gépigényeket. És ez olyan dolog, ami nagyon gyorsan kiderülne.
Egy számítógép komplex rendszer, ha valamit suttyomban meg akarnak oldani, hogy lassan fusson, számtalan módja van nem hatékony program írásának.
#6: hozod a formádat, látom. :D
A lámpa szoftverét. :D Aha. :D
A kérdés olvasásakor hirtelen egy bizonyos telefongyártó jutott eszembe, amely a "frissítéssel" jócskán belassította a régebbi telóit. De látom, a kérdés nem az ilyen jellegű galádságokra vonatkozik. ;)
Igazából nem teljesen értem a kérdésedet. Az napnál is világosabb, hogy vannak (voltak) olyan játékok, amik a későbbi, gyorsabb gépeken gyorsabban futottak. Jellemzően azok, amiket a sokáig szinte szabványnak tekintett 4,77 MHz-es gépekre írtak. Ezt egy 16 MHz-es masinán futtatva valószínűleg élvezhetetlenné vált a játék. De ez azért volt, mert a fejlesztők abból indultak ki, hogy a frekvencia adott, és nem fog változni. Ez egyébként egyáltalán nem buta vagy felelőtlen hozzáállás, sokáig az volt a megszokott, hogy egy géptípus egyetlen frekvencián üzemel, és legfeljebb a RAM, meg az egyéb hardverkonfigurációk változtak kis mértékben. Aztán amikor megjelentek a 4,77 MHz-nél gyorsabb PC-k, akkor jött a felismerés, hogy más módszerrel kéne időzíteni. De jó ideig még volt "turbo" gomb a PC-ken, amikkel vissza lehetett kapcsolni 4,77 MHz-re, pont azért, hogy ezek a régi szoftverek fussanak. Azóta pedig megszűnt az a gyakorlat, hogy a játék egy az egyben rátelepszik a procira, és fut, ahogy a csövön kifér. ;) Ezek már nem puszta üres ciklusokkal, "nop" utasításokkal, meg hasonló trükkökkel időzítenek, hanem egyszerűen nem használják azt az erőforrást, amire épp nincs szükségük. Nem pörgetik egyfolytában 100%-on a procit, hanem ha nincs szükségük rá, akkor a rendszer elveszi tőlük ezt az erőforrást. (Vagy ha úgy tetszik, a szoftver maga mond le róla.) A Windows (és minden más korszerű rendszer) pedig eseményvezérelten fut, a szoftver futása nem abból áll, hogy maximális teljesítményen pörgeti a procit, akkor is, ha épp nem csinál a játékos semmit, hanem a szoftver egyes részei jól meghatározott események hatására futnak le. Pl. az egérkattintáshoz, vagy az egyes billentyűzeteseményekhez tartozó kódrészlet akkor fog lefutni, ha a rendszer értesíti a szoftvert az adott esemény bekövetkezéséről. Addig meg a szoftver nem fogja feleslegesen a procit.
Egyébként pedig ami az optimális algoritmusokat illeti... nem kell trükközni, meg sumákolni, a legtöbb fejlesztő pusztán hanyagságból, és/vagy időkényszerből borzasztóan erőforráspazarló algoritmusokat ír.
Ha pedig régi játékokat akarsz futtatni, akkor azoknak a megfelelő sebességéről a futtatására használt szoftver (emulátor) gondoskodik. Egy DOS szoftvert a legtöbb mai rendszeren már el sem tudnál indítani, a Windows annyira gyéren támogatja. És ha el is indul, nem csak a sebességével lesz probléma. Ezért a régi DOS játékokat inkább DOSbox segítségével szokták futtatni. Ez a szoftver remekül kalibrálható, képes emulálni azokat a régi videoszabványokat is, amik a mai rendszerekkel már nem, vagy csak nagyon gyéren kompetibilisek (MDA, CGA, sőt, némelyik a kompozit CGA-t is tudja), és pontosan szabályozható a virtuális gép sebessége. Itt sem fogja a DOSbox feleslegesen pörgetni a procit, hanem lassításkor csak minden második, harmadik, ... többedik ciklusban futtatja le az emulált rendszer egy órajelciklusát.
A Nintendo NES, és hasonló konzolok, vagy pl. a C64 számítógép esetén pedig eleve csak emulálás jöhet szóba, hiszen teljesen más architektúra, mint egy PC. Az emulátor pedig hűen fogja emulálni az eredeti sebességet. Kivéve persze, ha mást nem kérünk tőle. Mert pl. egy C64-es szoftvernél van, hogy hasznos, ha be tudjuk gyorsítani a gépet.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!