Civilization und keine Ende


Neue Version für den 8K-ZX81


A similar page in english

Einleitung

Die Verschwendungssucht und Hybris in unserer heutigen Gesellschaft nimmt immer weiter zu, wie wir alle wissen. Die Autos werden immer schneller und größer, die Menschen werden immer fetter und schwerer und der Nachbar kauft sich nun schon aller zehn Jahre einen neuen Gartenzwerg. Das kann nicht so weiter gehen. Das wissen wir alle. Und trotzdem machen wir immer weiter. Auch das wissen wir. Wir können uns diesem Trend einfach nicht verschließen. Also verschreiben auch wir uns in der ZX81-Gemeinde dem sinnlosen Gigantismus und schreiben Programme für einen ZX81 mit 8K (!!!) RAM. Auch das ZX-Team muß auf der Höhe der Zeit bleiben!
Wie kommen wir aber an einen Speicher von 8 Kilobyte? Ich habe lange über dieser Frage gegrübelt, aber dann kam mir eine absolut geniale Idee. Es gibt ja RAM-ICs mit 4K Kapazität. Ich beschaffte mir (Waffendeal und so....) zwei davon, schleuste sie am BND vorbei und machte mich ans Werk: Vorsichtig beide jeweils an einer Seite anfeilen, bis das ganze Porzellan weg ist. Dann die abgefeilten Flächen mit Leitpaste bestreichen und die beiden Steine an diesen Flächen zusammenfügen. Das Ganze kann mit handelsüblichem Tesafilm fixiert werden. Wenn man etwas sorgfältig ist und auf die Deckung der Leiterbahnen in den ICs achtet, klappt das ganz hervorragend. Für Nachahmungen wird allerdings keine Haftung übernommen. Da der fertige Doppel-IC nicht mehr auf die ZX81-Platine passt, muß eben mit Klingeldraht verdrahtet werden.

Soweit zum Hardwareproblem. Nun zum Programm. Seit der 4K-Version im letzten Jahr hat sich Einiges getan. Das sind die Neuerungen:
  1. Diese Version ist für zwei Spieler, die gegeneinander spielen.
  2. Das Spielfeld wurde auf 9x9 Felder vergrößert.
  3. Es können mehrere mobile Einheiten gleichzeitig existieren. (bis zu 5 pro Spieler)
  4. Es gibt zwei Typen: Siedlereinheiten ('S') und militärische Einheiten ('M').
  5. Bewegung der Einheiten nun auch diagonal.
  6. Städte brauchen Nahrung, die sie nur über die Bewirtschaftung von speziellen Landwirtschaftsflächen erlangen.
  7. Das Spielfeld ist durch Seen landschaftlich gestaltet.
  8. Es kann gehandelt werden: Mit Nahrungsmitteln, mit Truppen und sogar mit Leuten.
  9. Laufende Spiele können abgespeichert werden.

Spielanleitung

Das Grundprinzip wurde in den vorangegangenen Artikeln schon erläutert: Zwei Zivilisationen entwickeln sich in einer (9x9 Felder großen) Welt. Ziel ist, die andere Zivilisation zu besiegen. (Ich verspreche: Das ist die letzte Version mit diesem martialischen Ziel...)
Nach dem Start erscheint das oben dargestellte Bild. Die beiden eingeklammerten C's - eins positiv, eins negativ - stehen für die Städte von Spieler 1 und Spieler 2. Die schwarzen Felder sind Seen, die nicht betreten werden können und die grauen Felder sind landwirtschaftliche Flächen. Drunter steht hinter 'Civ' die Größe der Stadtbervölkerung und hinter 'Food' die Nahrungsmitteleinheiten pro Kopf. Rechts oben neben dem Spielfeld befindet sich ggf. die militärische Stärke der Bewegungseinheit. Das Spiel findet in Runden statt. In jeder Runde kommt zuerst Spieler 1 und dann Spieler 2 zum Zug. Der Zug eines Spielers beginnt mit der Entscheidung, ob eine neue Einheit erstellt werden soll ('Dev'). Soll keine erstellt werden, wird '0' eingegeben, ansonsten die Menge der Leute, die von der Stadt dieser Einheit zugeordnet werden sollen. Sollen Siedler erstellt werden, genügt die Eingabe einer '1', da deren Mannschaftsgröße automatisch und relativ zur Stadtbevölkerung festgelegt wird. (Kleine Stadt - geringer Bedarf an Leuten.) Anschließend wird noch entschieden, ob's eine Militär- oder eine Siedlereinheit (Civil = C) werden soll.
Siedlereinheiten werden benötigt, um die landwirtschaftlichen Flächen zu bebauen und dadurch Nahrung zu beschaffen. Am Anfang verfügt die Stadt über 20 Nahrungseinheiten pro Kopf. Dieser Vorrat schmilzt aber dahin. Wenn weniger als 10 Einheiten da sind, schrumpft die Bevölkerung. Je größer die positive Differenz zu 10, desto schneller wächst die Stadt. Allerdings braucht eine größere Stadt auch mehr Nahrung pro Kopf (Lebensstandard steigt!). Wie sich also diese Nahrung beschaffen? Nun, man erstellt einen (oder auch mehrere Siedler) und besetzt einen 'Acker' (landwirtschaftliche Fläche). Ein besetzter Acker liefert anfangs 1 Nahrungseinheit pro Runde. Wenn er jedoch lange genug bebaut wird (sieben Runden), erhöht sich der Ertrag auf 2. Nach vierzehn Runden auf 3, usw. Die Anzahl der Runden, die der Acker schon bebaut wird, sieht man rechts unter der Truppenstärke hinter 'F'. Die Bebauung ist beendet, wenn der Siedler den Acker verläßt. Dann muß er wieder bei Null beginnen. Damit aber nicht genug: Nach ca. 50 Runden ist der Acker erschöpft und sein Ertrag fällt wieder auf Eins zurück: Die Aufbauarbeit beginnt von vorn.
Wie kommt der Siedler zum Acker? Nachdem die Entscheidung zur Erstellung einer Einheit getroffen wurde, werden nacheinander alle gerade aktiven Einheiten (Militär oder Siedler) angesprungen. Welche gerade dran ist, sieht man an einem kleinen Pfeil nach rechts '>', links neben der Einheit. Für diese Einheit kann man nun eine Marschbefehl abgeben. '5','6','7','8' sind entsprechend der Pfeiltasten zu verstehen. Dann gibt's noch
'R': Nach links oben.
'T': Nach links unten.
'U': Nach rechts unten.
'I': Nach rechts oben.
Man kann aber die Einheit auch einfach stehen lassen ('0'). Dies ist natürlich besonders nötig, wenn sich der Siedler auf dem Acker befindet.
Eine Einheit kann natürlich nicht in einen See bewegt werden (Nichtschwimmer). Mehrere Einheiten können grundsätzlich auf demselben Feld stehen. Das gilt allerdings nicht für mehrere Siedler. Insbesondere kann also ein Acker nur von einem Siedler bewirtschaftet werden. (Es gibt allerdings einen hinterhältigen Trick, wie man das umgehen kann, da das Programm nicht exakt diesen Sachverhalt prüft...) Man kann die Einheiten auch in die eigene Stadt ziehen, was allerdings nichts besonderes bewirkt, jedoch für Stadtverteidigung natürlich interessant ist.
Zieht man eine Einheit gegen eine gegnerische Truppe, hängt die Wirkung vom Einheitentyp ab: Beim Siedler passiert gar nichts, die Militäreinheit greift an. Der Kampf wird rechts oben in Form der Truppenstärken vorher - nachher protokolliert. Die Truppenstärke wird allerdings immer nur als Vielfache von 10 gespeichert. Also nicht wundern, wenn die Truppe am Schluß der Schlacht 14, in der nächsten Runde dann nur noch 10 hat. Maximale Truppengröße: 2550. Die Verteidigungsstärke von Siedlern ist immer 20. Wird ein Feld mit mehreren Einheiten angegriffen, so ist es quasi Zufall, welche Einheit den Angriff entgegennimmt. (Genauer gesagt: Es hängt von der Reihenfolge der internen Speicherung ab.) Wird ein Siedler auf seinem Acker besiegt, dann bleibt die Bebauung erhalten - wichtig für die strategischen Überlegungen. Wird eine Stadt angegriffen, so zählt die Einwohnerschaft wie eine militärische Einheit. Wir die Einwohnerschaft negativ, ist das Spiel verloren.

Zu den Sonderfunktionen

Bei der Erstellung von Einheiten:
-1: Wenn man mal alle Siedler auf ihre Äcker gestellt hat, geht viel Zeit drauf, in jeder Runde zu bestätigen, daß sie dort stehen bleiben sollen. Mit -1 wird der 'Sleep'-Modus für alle Siedler eingeschaltet: Nur noch militärische Einheiten werden gesteuert. An der Effektivität der Siedler ändert sich nichts. Wichtig: Es können nur alle Siedler zugleich in den Sleepmodus versetzt (oder aus diesem erweckt werden: Zweites Mal -1).
-2: Save. Das gesamte Programm, samt Spielsituation wird unter dem Namen 'civ8' abgespeichert. Mit Load "Civ8" kann die aktuelle Situation wieder eingeladen werden. Ein Save sollte allerdings nur von Spieler 1 aktiviert werden. (Sonst wird Spieler 2 übersprungen.)
-3: Tausch von Leuten oder Nahrung. Derjenige, der -3 aktiviert, ist der Gebende. Aktiviert z.B. Spieler 1 '-3' dann 'F' und gibt dann '10' ein, so werden von seinem Nahrungsvorrat 10 Einheiten an Spieler 2 übertragen. Welche Tauschgeschäfte zustande kommen, ist natürlich Sache direkter mündlicher Verhandlung.

Bei der Einheitenbewegung:
'D': Disband. Einheiten können aufgelöst werden. Sehr wichtig, da ja maximal fünf Einheiten möglich sind. Gibt's zuwenig Militär, muß halt ein Siedler aufgelöst werden u.u..
'C': Change. Übergebe die Einheit an den Gegner. Kann als Gegenstand eines Tauschgeschäfts sinnvoll sein.

Zur Strategie:

Zunächst mal: Ein Spiel dauert mindestens eine Stunde, in der Regel sehr viel länger! Man kann schon getrost einen ganzen Abend für zwei Spiele reservieren.
Die gewählte Strategie zeichnet sich durch das Management der Einheiten aus: Wieviel Siedler und wieviel Militäreinheiten zu welchem Zeitpunkt? Eine Strategie: "Soviele Siedler wie möglich, damit man möglichst schnell wächst und dann möglichst mächtige Truppen hat" geht in der Regel nicht auf, da man dann keine Soldaten hat, um die Siedler zu beschützen. Generell gilt: Weniger Siedler, die kontinuierlich bebauen, ist besser, als mehr Siedler, die immer wieder von ihren Feldern verjagt werden. Umgekehrt ist natürlich eine beliebte Strategie, mit vielen eigenen Truppen die gegnerischen Siedler zu stören und damit dessen Wachstum zu hemmen. Was sinnvoll ist, hängt stark von der geographischen Lage und natürlich auch vom Gegner ab. Es kann auch sinnvoll sein, eine schwache eigene Einheit selbst aufzulösen, um rechtzeitig eine neue stärkere Einheit erstellen zu können.

Zum Programm:



Der größte Teil des Programms ist in Basic geschrieben. Das Herz bildet eine Datenbank für die mobilen Einheiten und die 'Äcker'. Ein Maschinenspracheproggy sucht zu gegebenen Koordinaten die entsprechenden Einheiten. Diese direkte Speicherung im RAM hat den Vorteil, Zeiger zu ermöglichen. Damit wird der größte Teil des Programmcodes von beiden Spielern gemeinsam benutzt - nur mit unterschiedlichen Basisadressen für die Daten. Ansonsten habe ich - dem durch die vielen Goto's erweckten Anschein zum Trotz - versucht, möglichst modular und strukturiert zu programmieren. Jedes kleine Modul hat klar definierte Aufgaben. Dem ist es zu verdanken, daß das Programm während der Debuggingphase auch dann stabil lief, wenn unvorhergesehene Spielzustände auftraten. (Was jetzt immer noch nicht ausgeschlossen werden kann.) Die Goto's kommen dadurch zustande, daß ich Routinen oft in zwei Teile spaltete: Der erste ist für die beiden Spieler spezifisch, der zweite gemeinsam. Nach dem ersten Teil wird dann mittels Goto in die gemeinsame Routine gesprungen.

Ausblick

Wird's auch eine 16K-Version für den Zeddy geben? Eigentlich war das schon geplant. Aber irgendwann habe ich in einem geheimen Memorandum des FBI gelesen, daß es irgendwo eine gigantische Supergroßversion des ZX81 gäbe - mit Farbgrafik, Sound, erweitertem Basic und 16K Speicher. Ich traue diesem Gerücht noch nicht so ganz - vermutlich dient es der Verunsicherung von Saddam. Aber wenn es diesen ZX Spectrum tatsächlich geben sollte und ich mit Hilfe des israelischen Mossads und der IRA drankäme, dann würde Civilization 5.0 auf dem Speccy 16K laufen. Wobei allerdings folgendes berücksichtigt werden muß: Die Leistungsfähigkeit wird nicht so groß sein, wie die auf einem 16K-Zeddy erzielbare! Schlicht und einfach, weil der erstere weniger freien Speicher zur Verfügung hat! Aber bis dahin werden noch einige Bytes den Bus runterfließen. Deshalb einstweilen: Viel Spaß beim Spielen und beim Genießen der unendlichen Weiten eines 8K-Speichers!

PS: Übrigends ist dieser Speicher durch das Spiel bis auf vielleicht 100 Bytes restlos voll!

Back to Home