Hallo zusammen,
erst mal vielen Dank für Eure vielen Antworten!
Ich denke mal wir stimmen grob überein, Civilization 1 ist
möglich auf dem C64.
Wenn Ihr Euch wirklich dransetzen und etwas entwickeln wollt,
würde ich alles semantisch oo und in Pseudocode
entwerfen/dokumentieren, dann läßt es sich später beliebig
skalieren und umsetzen - egal womit. Außerdem haben wir ein
zentrales Dokument, das jeder versteht.
(Hat jemand einen Server, der eine Versionsverwaltung aufnehmen könnte, Subversion oder sowas?)
Die Karte als pointerfeld umzusetzen find ich schon mal nicht
schlecht, würde aber noch einen Schritt weiter gehen und
Pointer.pointerlisten nehmen, damit man nur was speichert, wenn
auch was da ist. D.h. Meer wird nicht gespeichert, nur Objekte
die sich darauf befinden, also Land, Resourcen, Bebauungen,
Städte und Einheiten.
Mal ein Beispiel basteln:
Schiff(25).x=1 .y=2
Land(5).x=4 .y=3
Land(6).x=71 .y=7
Land(7).x=89 .y=25
Land(8).x=112 .y=2
Wollen wir jetzt einen Kleinen Screen von x1y1 bis x4y4
darstellen, dann gehen wir die nach x,y sortierte Liste durch, setzen auf den blauen Hintergrund alle Einheiten, dann die Landfelder gefolgt von den Recourcen. Land und Resourcen muß man natürlich nur darstellen, wenn keine Einheit oder Stadt an der gleichen Stelle ist, wir brauchen also noch die Z-Ebene, einen Adressstapel.
Ein Problem ist, dass wir die Liste nach x, y und eigentlich auch
nach z sortiert haben bräuchten, wobei man Z sicher auch live
sortieren lassen kann.
Sollte man doch eine Lösung mit Zeichensatz wählen, dann würde
ich evtl. sogar vier Zeichen pro Feld nehmen - einzelne Zeichen
pro Feld nur beim rauszoomen
Sehr hübsch fänd ich, wenn mann die Wellen an die Küste rollen
lassen könnte
Zur KI:
Man braucht nur eine KI, die je nach Charakter andere Parameter
bekommt.
In Civ 1 spielt die auch alles andere als fair, die haben da
getrickst wie sonst was.
Da werden ganz einfache Faustformeln genügen, wie zB.
Modus Siedeln:
Laufe nach dem Muster X
n Felder weit,
merke dir auf dem Weg Muster A, B, C, D, E und F,
wobei A das günstigste, F das am wenigsten günstigste Muster ist.
Sobald du mindestens Y Felder von deiner letzten Stadt entfernt
bist und Muster A oder B entdeckt hast, baue dort eine Stadt.
Bist Du die ganze Stecke n gelaufen, ohne Muster A oder B zu
finden, laufe bis zum günstigsten Muster zurück und siedel dort.
Modus Feindkontakt:
Vorab Diplomatie, Selbsteinschätzung, Gegnereinschätzung, je nach
Charakter und Unter- oder Überlegenheit zum Gegner, gekoppelt mit
dem bisherigen Status zu anderen Civilisationen, wird Krieg
geführt, geblockt, geflohen, Tribut gefordert oder gegeben.
/* Einschub!
An dieser Stelle würde ich gerne ansetzen ein großes Manko
auszubessern. Ich möchte Vertrauenspunkte für Gegner vergeben,
so daß im krassen Gegensatz zum Original Frieden tatsächlich auch
Nutzen haben kann und zu Freundschaft und Kooperation führen
kann. */
Diplomatie
Also man bekommt ja auf jeden Fall eine grobe Schätzung, wie
mächtig der jeweilige Gegner ist, und wie mächtig man selbst ist,
Größe: Anzahl der Einheiten, Städte, Einwohner
Stärke: Summe der Trefferpunkte(TP) die man mit allen Einheiten
pro Runde austeilen könnte
Verteidigung: Summe der TP die man mit allen Einheiten pro Runde
abwehren könnte.
Entwicklung: Summe der Fortschrittspunkte pro Runde.
Also je nach diplomatischer Entscheidung, werden verschiedene
Strategien ausgewählt, wie
Angriff,Blocken, Rückzug, Expansion, gesicherte Expansion
D.h. wir haben pro Civilisation, pro Stadt, und pro Einheit eine
ganze Reihe von Informationen, die gespeichert werden müßten.
Sagen wir mal, wir hätten 256 Einheiten, Städte, Zivilisationen (E+S+Z=256),
Beispiel "ein Siedler", er hat, wie alles,
eine Position, 2 Byte,
gehört einer Stadt an, 1 Byte,
Entfernung zur Stadt, 2 Byte,
das gewählte Suchmuster, 1 Byte
Bisher gegangene Schritte, 1 Byte,
gemerkte Muster,sagen wir 5 pro Musterschritt* 1 Byte,
Klasse(A-F) 3 Bit + weitere Informationen, wie Feindkontakt,
Städte, sagen wir also einfach 1 Byte, damit sind wir schon bei
5x2 Byte, also 10 Byte
(*pro Muster müssen wir uns keine Position merken, wir haben ja
die Position der Stadt, also das Startfeld, die Schrittnummer und
das Suchmuster, spart also 1 Byte pro Muster)
256*(2+1+2+1+1+10)=256*17=4352 Bytes.
Dann braucht man noch die Muster A-F,
verschiedene Suchmuster, die die Bewegung beschreiben.
Die Zivilisation steuert die Diplomatie und die Städte, die
Städte die Entwicklung und die Einheiten, wobei die Zivilisation
Angriffsziele und entwicklungsrichtungen angeben kann.
Viel Code, der aber schön skaliert werdenen kann, grob über den
Daumen gepeilt je nach Anzahl der Einheiten, 5 bis 10 KB Code,
Daten inklusive.
Die Spektrum-Version sieht beeindruckend aus!