Nur zur Kartengröße:
Da ich Puste nicht reinreiten möchte, geht das Folgende auf meine Kappe.
Das mit den mehreren EXEn geht. Ich habe aktuell auch drei:
BOTE.exe 749kb ist die Alpha5
BOTE_gross.exe mit einem 40x30 Feld, selbstkompiliert 1.705kb groß
und BOTE_gross_KI.exe, ebenso groß, nur da sind alle 6 Majors KIs. War zum über die Schulterschauen und ggf. optimieren der KI gedacht. Sollte man ggf. nicht nehmen, wenn man nicht wissen möchte, wie die genau spielt.
Im Code sind das 10 Zeilen Änderungen im Quelltext: 3x2 Zeilen um alte FOR-Schleifen anzupassen (die Laufweite), + 4 Zeilen in der options.h, also die Anzahl der Sektoren + die Größe der Gesamtkarte. Eine Anpassung des minimalen Zooms halte ich auch für sinnvoll
Zusätzlich muss man die Galaxiehintergründe von der Größe her anpassen. Ich habs bei mir erstmal nur für die Konfed per Bildbearbeitung gemacht. Müsste man dann aber für alle Rassen machen, die man spielen möchte. Wenn die Karte die falsche Größe hat, ist das Feld immer schwarz, was ziemlich blöd ist.
Zu klein darf das Feld auch nicht sein. Bei 5x5 Feldern ist das Spiel nicht terminiert bei der Galaxyerstellung. Ich nehme mal an, dass es in der Schleife ist, wo die Rassen generiert und platziert werden, und da war nicht genügend Platz und Abstand.
Außerdem wird es zu Fehlern kommen, wenn man mit der falschen Größe einen anderen Spielstand initalisiert. Da werden die Arrays (zB Sektoren) nicht vollständig geladen, oder die Arraygrenzen werden überschrieben und das Ding stürzt ab
Also für mehrere EXEn kein Problem.
Wie Du an meiner Frage gestern ggf. gemerkt hast, wollte ich das Ganze generalisieren, also alles in eine EXE. Dazu müsste man m.E. nach (puste kann mich korrigieren) drei Dinge machen:
1. Die Kartengröße müsste dynamisch beim Erstellen des Spiels eingestellt werden, und dann auch in die Savegames gespeichert werden, weil es ja bei jedem savegame variieren kann. Beim Laden muss es natürlich auch ausgelesen werden.
2. Die Galaxyhintergründe müssten dynamisch angepasst/erzeugt werden. Notfalls durch Zurechtschneiden oder sonstwas. Was puste mit Überlagerung gemeint hat, habe ich ehrlich gesagt nicht verstanden.
3. Die Größen und ein paar Werte sind aktuell über #define fest vorgegeben. Man müsste das aber dynamisch machen, also über Variablen. (die dürfte dann wahrscheinlich 'final' sein). Da hackt es bei mir im Kopf aktuell noch. Ich glaube nicht, dass man es einfach 'so' umstellen kann, da der Compiler wahrscheinlich rummeckern wird. Bzw kann ich das gesamte Projekt noch nicht genau überblicken, muss mir ggf. nochmal das Klassendiagramm anschauen. Aber vielleicht versucht mans auch einfach mal und es klappt - oder eben nicht.
Also Schritt 3 ist das Problem, der Rest ist wohl eher Fleißarbeit.
<Informatiker-blabla>
Problem ist ggf. noch das Laden von Spielen. Da sich dabei die Größen ändern können, kann man wohl doch nicht den 'final', 'static', 'const' oder sonstwas modifier nehmen, da die Dinge sich ja ändern können müssen. Oder man erzeugt sich externe Objekte, für jedes Spiel. Nur ob der Compiler das alles so schluckt?
</Informatiker-blabla>
sany