Unterhaltsame Hacks: eine kurze Geschichte

Es ist schwierig, alle Schwierigkeiten aufzulisten, mit denen Entwickler bei der Umsetzung ihrer Ideen konfrontiert sind - von unerwarteten Problemen der Eisenkompatibilität, Zeitmangel, nicht reproduzierbaren Fehlern bis hin zu technologischen Fehlern, die es Ihnen nicht ermöglichen, alles neu zu erstellen, was Sie wollen, oder zu großen Ambitionen. Nach dem Lesen einer Reihe von Post-Mortem-Enthüllungen, in denen sich Entwickler über unerwartete Hindernisse beschwerten, die ihnen im Weg standen, kann man sich nur fragen, wie interessant und spielbar das Endprodukt war, obwohl es nicht einmal die Hälfte dessen enthielt, was gedacht war. In diesem Artikel werden jedoch einige bemerkenswerte Beispiele aus der Geschichte der Entwicklung berühmter Spiele vorgestellt, bei denen es Programmierern gelungen ist, Schwierigkeiten zu überwinden, und dies auf ungewöhnliche Weise.

Das Interesse an dem Thema wurde durch die jüngsten Nachrichten geweckt, dass der Zug im Addon zu Fallout 3 überhaupt kein Zug ist, sondern ein Objekt in der Hand eines NPC, der irgendwo auf Schienen getragen wird. Wir haben dies ganz zufällig erfahren, indem wir uns die Eigenschaften des Objekts im Editor angesehen haben. Mit einem solchen Hack hat Bethesda viel Zeit gespart, indem sie echte Züge ins Spiel gebracht hat (es gibt zumindest keine Transportmittel), ohne dem Spieler das Gefühl zu nehmen, in die virtuelle Welt des postapokalyptischen Ödlands einzutauchen ... Aber fangen wir von vorne an.


Der blaue Wagen schwingt ....

Die frühen PCs, die in der zweiten Hälfte der 70er Jahre auftauchten, boten einerseits viele Möglichkeiten, die keinen Zugang zu Mainframes hatten, andererseits waren sie zu diesem Zeitpunkt bereits sehr begrenzt. Zu diesem Zeitpunkt war es Richard Garriott, dem Eroberer des Weltraums und einstigen Lord of Britain, bereits gelungen, Computerspiele zu entwickeln. Kein Wunder, dass seine Akalabeth, eines der ersten Rollenspiele für einen Personal Computer, die Nummer 28 in der Erfolgsbilanz wurde. Und der letzte Vorschlag von Steve Jobs erfüllte seine spielerischen Ambitionen nicht vollständig. Einschränkungen des eingebauten Compilers Apple Basic und 64 Kilobyte RAM führten dazu, dass das Programm nicht vollständig in den Speicher passte. Er musste ein Unterprogramm schreiben, das unnötige Daten (Bilder von Monstern oder etwas anderem) entlud und an ihre Stelle setzte, was im Moment erforderlich war.Es blieb nur der Dateikopf übrig, dh es wurde der Auslagerungsalgorithmus ausgeführt. Damit das Programm keinen Haken bemerkte, wurde alles manuell synchronisiert, und als ich versuchte, es durch das Debug zu führen, gab es einfach eine Reihe von Fehlern.


Von hier ging alles.

Seien Sie nicht überrascht - moderne Spiele verwenden ähnliche Techniken, um die Arbeit mit Ressourcen zu optimieren. Die bekannte Grand Theft Auto-Serie, die neben einer Jahr für Jahr wachsenden Musiksammlung und einem umfangreichen Auto und nicht nur einer Flotte aufwartet, wird Sie niemals in ihrer ganzen Vielfalt schätzen lassen. Tatsache ist, dass in den meisten Szenen auf der Straße im vierten Teil (in den frühen tritt dies auch auf) Epen nur etwa 20 verschiedene Automodelle vorhanden sein können, obwohl sie oft tatsächlich weniger sind. Wenn ein Charakter in diesem Moment auch ein Auto gemietet hat, ist es sehr wahrscheinlich, dass dieselben Autos mit ihm die Straße entlang rutschen. Dies geschieht, um Ressourcen zu sparen. Natürlich gibt es Möglichkeiten, diesen Algorithmus zu deaktivieren, aber gleichzeitig einen Treffer im Frame-Frame-Bereich zu erzielen.


Massenkundgebung? Nein - nicht genug Speicher.

Ein weiterer Klassiker, der ungewöhnliche Hacks ausnutzt, ist Elite, das erstmals 1984 veröffentlicht und auf die meisten damals verfügbaren Systeme ausgedehnt wurde. Das ehrgeizige Spiel, bei dem ein Weltraum-Action-Simulator aus der ersten Person und ein Handelsteil kombiniert wurden, schien den Herausgebern immer noch darauf ausgerichtet zu sein, mit dem Markt für Arcade-Automaten zu konkurrieren, und die Entwickler Ian Bell und David Braben suchten einige Zeit. Aber Elite erwies sich als definitiver Hit und brachte ein ganzes Genre hervor. Interessanterweise war es jedoch für dieselben 8-Bit-Computer gedacht, auf denen Charaktere primitiver Plattformer über den Bildschirm krochen. Der grenzenlose Raum von der Größe von acht Galaxien und 256 Planeten erregte die Fantasie der Spieler und passte in nur 25 Kilobyte.


Hinter diesem Bildschirm war enormer Platz verborgen.

Um dies zu ermöglichen, verwendeten die Entwickler eine Assembler-Programmiersprache auf niedriger Ebene sowie einen eigenen Algorithmus, bei dem Daten zufällig aus Tabellen entnommen wurden, wodurch die Welt beim Erstellen eines neuen Spiels neu generiert wurde. Daher wurden Ressourcenwechselkurse, Planetentypen und andere Informationen ausgewählt. In zukünftigen Ports und verbesserten Versionen wurden viele Einschränkungen aufgehoben, aber der Algorithmus zum Erstellen einer Galaxie bleibt bestehen.

Außerdem ist Space Invaders ein Spiel, von dem jeder gehört hat, wenn nicht alle, dann ist alles sicher. Die Idee war recht einfach: Die Starinterventionisten sanken langsam auf den unteren Bildschirmrand, den der Spieler auf einem sich bewegenden Turm verteidigte. Und je weniger sie auf dem Bildschirm wurden, desto schneller flogen sie und stiegen ab. Idee des Autors? Na sicher. Aber wie wurde es umgesetzt! Der Spielautomat war Intel 8080 - der erste weit verbreitete Mikroprozessor mit einer Kapazität von 300.000 Operationen pro Sekunde. Der Geschwindigkeitsunterschied ergab sich aus der Tatsache, dass er die ihm zugewiesenen Aufgaben nicht bewältigen konnte - das Spiel verlangsamte sich banal, wenn der Bildschirm voll war. Der Schöpfer von Space Invaders, Tomohiro Nishikado, entschied sich jedoch, dies als zusätzliche Schwierigkeit zu belassen, und verbrachte daher viel Zeit mit der Entwicklung der Hardware.Unnötig zu erwähnen, dass die Flug- oder Farbgrafiken reibungslos animiert wurden - sie mussten für spätere Versionen verschoben werden. Übrigens blieb diese Mechanik in den folgenden Anschlüssen für Computer und Set-Top-Boxen erhalten, wurde jedoch ohne die Verwendung eines "Bremsprozessors" implementiert.


, .

Und nach mehr als 30 Jahren ist das Problem der reibungslosen Leistung in Spielen aktueller denn je. Um eine konstante Geschwindigkeit des Spiels aufrechtzuerhalten, werden verschiedene Technologien verwendet. Eine davon ist der dynamische Framebuffer, der in einer Reihe von Konsolenspielen und auf neuen Konsolen verwendet wird. Das Wesentliche des Ansatzes ist, dass sich die Bildgröße je nach Auslastung ändert, um die versprochenen 30 oder 60 Bilder pro Sekunde beizubehalten. Und es ändert sich Frame für Frame, direkt im laufenden Betrieb und wird vom Hardware-Skalierer der Konsole gestreckt. Gleichzeitig wird jedoch nur die horizontale Auflösung angepasst, während die vertikale Auflösung gleich bleibt - 720 oder 1080 Pixel. Und nach den verfügbaren Beispielen kann es in der ersten Version von 1280 Punkten auf 640 (!) Punkte gehen, in der zweiten - es kann irgendwo auf 1200 Punkte fallen. Darüber hinaus erzeugt die Technologie in Spielen, die auf verschiedenen Konsolen laufen, unterschiedliche Auflösungen.



Ein und derselbe Frame, eine Bildschirmgröße, aber völlig unterschiedliche horizontale Auflösung.

Dies wurde zuerst in Wipeout HD gesehen, wurde aber später im Rage-Shooter von id Software, im Kampfspiel Tekken Tag Tournament 2 und anderen verwendet.

Manchmal ergeben sich interessante Entscheidungen aus Langzeitstudien der Fähigkeiten eines bestimmten Systems. Der Commodore 64 ist nicht nur das erfolgreichste PC-Modell, sondern auch eines der langlebigsten, das sich vom 82. bis zum 94. Jahr in derselben Konfiguration erstreckt. Eines der Spiele, die unter dem Sonnenuntergang der Plattform herauskamen, ist der wenig bekannte Plattformer Mayhem in Monsterland. Im Vergleich zu Spielen, die in den 80er Jahren auf genau derselben Hardware hergestellt wurden, sieht es jedoch erstaunlich aus: schnelles, reibungsloses Scrollen des Bildschirms, viele Sprites, leuchtende Farben. Die Entwickler von Apex Software haben alle Hacks in ihrem Arsenal verwendet.


Es ist schwer vorstellbar, dass dies ein Screenshot eines Spiels von einer Plattform ist, die 3 Jahre vor NES erschien.

Um ein so schnelles Scrollen zu erreichen, ist das Spiel schließlich eine Mischung aus Mario und Sonic, und letzteres wäre kaum auf das Scrollen mit jeweils 7 Pixel beschränkt gewesen, was C64 bietet. Es wurde ein undokumentierter Fehler im Grafikchip verwendet, der das Scrollen auf 320 ermöglichte Pixel, d.h. Breite eines Bildschirms. Das ist aber noch nicht alles. Trotz der Tatsache, dass der Name des Computers das Vorhandensein von nur 64 Kilobyte Adressraum impliziert, benötigt die ausführbare Datei 68. Der zusätzliche RAM wird aus dem ROM entnommen, wo aus irgendeinem Grund freier Speicherplatz übrig blieb. Der Grafikmodus ist auch eine Mischung aus zwei - HIRES (hoch) Nach den Standards von 82.) und MULTICOLOR wird ein zusammengesetztes Bild verwendet, bei dem das Bild sozusagen aus mehreren Teilen des Rahmens besteht, um die Begrenzung der Anzahl der Sprites im Rahmen (die auf Hardwareebene festgelegt wurde) zu überwindendas Eisen austricksen.

Natürlich endet die Geschichte des Einsatzes von Hacks hier nicht, aber für diejenigen, die sich die vorgestellten Spiele ansehen und diese und andere unterhaltsame Beispiele anhören möchten, sind wir herzlich willkommen: unser Video.



// Virgil & Dimouse

Source: https://habr.com/ru/post/de382877/


All Articles