Ergebnis 1 bis 5 von 5

Thema: Terra Karte mit zufälligen Startpositionen?

  1. #1
    Registrierter Benutzer Avatar von saarworres
    Registriert seit
    09.11.05
    Ort
    Saarland
    Beiträge
    12

    Frage Terra Karte mit zufälligen Startpositionen?

    Hallo

    Also ich hab diesen Thread schon in das Civfanatic's Forum geradebrecht , aber ich hänge was technische Fragen angeht irgendwie an meiner Muttersprache (iss so schön einfach ), also poste ich das hier nochmal.

    Ich habe meine XML-Dateien angepasst um die Weltgröße auf gigantisch setzen zu können. Was alles wunderbar funktioniert hat. Allerdings habe ich bei meiner bevorzugten Karte "Custom Continents" so einige Probleme mit dem Ergebnis dieser kleinen Anpassung.

    Jedenfalls bekomme ich meist etwas wie ein verottetes Pangäa heraus. Eine massive Landmasse und evtl ein zwei Subkontinente die wie abgeschnitten wirken. Große Teile der Landmasse wirken zerfasert und so etwa wie gestreckte Inseln oder Fjorde.
    Teilweise strotzt die Karte auch bei niedrigem Meeresspiegel vor gigantischen Binnenmeeren oder Seen.

    Jedenfalls ist man entweder arm dran weil man auf einer der Inseln startet, oder auf einem der Kontinentschnipsel die zu allem Überfluß auch noch meist zur hälfte unwirtlich sind, oder man startet normal und erbaut Küstenstädte in dem glauben man hätte eine Verbindung zum offnenen Meer was meist nach hinten losgeht.

    Jedenfalls kam mir die Idee das die Terra-Map ohne Einschränkung der Startposition und etwas "getuned" genau das sein könnte was mein Siedlerherz begehrt. Also habe ich mir die entsprechende terra.py Datei mal genauer angesehen, und mir kamen dabei ein paar Fragen.

    Folgende Codezeilen erregen da meine Aufmerksamkeit:

    Code:
    def findStartingPlot(argsList):
    	[playerID] = argsList
    
    	def isValid(playerID, x, y):
    		map = CyMap()
    		pPlot = map.plot(x, y)
    		
    		if (pPlot.getArea() != map.findBiggestArea(False).getID()):
    			return False
    
    		return True
    	
    	return CvMapGeneratorUtil.findStartingPlot(playerID, isValid)
    Ich habe zwar einige Erfahrung in Scriptsprachen und Programmiersprachen, was die Sache etwas einfacher macht, aber Python ging bisher irgendwie an mir vorbei. Allerdings erscheint mir an dieser Stelle der Hund begraben zu sein:

    Code:
    if (pPlot.getArea() != map.findBiggestArea(False).getID()):
    			return False
    
    		return True
    	
    	return CvMapGeneratorUtil.findStartingPlot(playerID, isValid)
    Was meiner Meinung nach folgendes bedeutet:
    Nimm die geplante Startposition der Civilisation und untersuche ob sie sich auf der größten Landmasse befindet. Wenn ja mach weiter mit der Abfrage der Entfernungen zwischen den Civ-Startpositionen. Wenn nein, errechene eine neue Position und untersche diese. etcpp...

    Da man die Funktion ja schlecht komplett auskommentieren kann, da ja nach dem Check der Entfernung zwischen den Civs wahrscheinlich wieder auf diese Funktion verwiesen wird, sollte es genügen den Rückgabewert bei nichtbestehen der Abfrage ebenfalls auf "True" zu setzen. Damit wären die Startpositionen nur noch von der Entfernung zueinander abhängig.
    Stimmt das und kann das jemand bestätigen? Echt so simpel???

    Was mich zu den andern Fragen führt.
    Da ich die Weltgröße ja in den XML-Dateien bereits angepasst habe und die neue größe Gigantic existiert jedoch die Größenangaben im py-File ebenfalls angegeben sind, welche der Größenangaben hat priorität? Die hardgecodete im Pythonfile oder die in der XML-Datei? Oder werden beide irgendwie verrechnet? Falls ja wie?

    Ich vermute das die Pythondatei priorität besitzt, ich aber in der py-Datei ebenfalls eine Angabe für gigantisch hinzufügen sollte, da das fehlen der Angabe dazu führt das die Größenangaben aus der XML-Datei genommen werden. Die jedoch entprechen bestimmt nicht der Vorlage für die Generierung
    der Terra-Map was bestenfalls dann zu seltsamen Ergebnissen führt und schlimmstenfall zu ner Fehlermeldung mit Absturz.

    Hat jemand vielleicht auf diese Fragen ein zwei Antworten? Das würde mir echt helfen. Ich werde es sowieso austesten, aber wenn jemand genaueres weis geht das vielleciht schneller als "Trial and Error".

    Danke im vorraus.

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.11.05
    Beiträge
    6
    schon was rausgefunden ? würde mich interessieren Danke

  3. #3
    Registrierter Benutzer Avatar von saarworres
    Registriert seit
    09.11.05
    Ort
    Saarland
    Beiträge
    12
    Ja hab relativ zügig eine Antwort auf meinen Post in Civ'Fanatics Fprum bekommen.

    zum Thread

    Jedenfalls scheint es so zu funktionieren. Setzt man den Rückgabewert auf True, weden die Startpositionen auf der Terramap zufällig erstellt.
    Code:
    if (pPlot.getArea() != map.findBiggestArea(False).getID()):
    			return True
    
    		return True
    Angeblich kann man die Gesamte Funktion auch einfach Löschen. Das war mir aber zu riskant bzw auskommentieren zu aufwendig, da ich irgendiwie nicht glauben kann das nach einer negativen Abfrage der Entfernung der Startpositionen zueinander, nicht wieder auf diese Funktion zurückgegriffen werden MUSS um eine andere Startposition zu erzeugen.

    Mann kann in der terra.py die Entfernungen zwischen den einzelnen Startpositionen der Spiler ändern indem man sich folgender Zeile widmet:

    Code:
    startingDistanceModifier = -20
    Allerdings kam der Einwand das auf diese Weise die Civilisationen die auf dem kleineren Kontinent starten der Amerika darstellen soll, schnell Opfer von Babaren werden könnten, da sich auf dem ja eigentlich unzivilisierten Kontinent Babarenstädte gründen.

    Davon konnte ich aber bisher nichts bemerken. Nach mehrmaligem Anspielen auf beiden Kontinenten scheint mir die Babarenaktivität nocht größer als sonst auch. Erst später im Spiel wirds etwas nervig. Aber zu diesem Zeitpunkt sollte man damit relativ locker fertigwerden können. WEnn man keine Stadt unverteidigt lässt.

    Die Babarensiedlungen scheinen mir verflucht schwer einzunehmen zu sein. Aber auch das ist kein großes Hindernis, solange man die Kartengröße heraufsetzt.

    Den Punkt mit der Gigantic-Map kann ich nicht bestätigen.
    In Gegenteil. Wenn man der Terra.py einträge für Gigantic hinzufügt, (z.B weil man den MOD eingebaut hat wie ich) dann wird eine große Landmasse erzeugt. Ohne Meere evtl. kleine Seen, aber Flüsse von nord-west nach süd-ost durchgehend. Was in der Minimap und kleinem Zoom den Eindruck eines Teppichs hervorruft. Es DAUERT AUCH das zu generieren. Ich hab teilweise 20min gewartet bei einer Kartengöße die sonst keine 3 Minuten benötigt wenn man den Eintrag HUGE verändert.

    Auch nur dort bekommt man dann die gewünschte Karte. Einem Extraeintrag "Gigantic" (mit oder ohne den entsprechenden MOD)
    fehlt offenbar eine Anbindung an den Weltenbauer sonst würde er ja etwas mit mehr Sinn erzeugen.

    Ich habe also die einstellungen für HUGE angepasst und es geht recht gut.
    Bei vergrößerter Karte sind die Babaren kein Primärproblem.

    Momentan versuche ich gerade die Größe und Verteilung der Landmassen etwas zu vergrößern. z.B Mithilfe des Meeresspiegeleinstellung. Die muss in der Terra.py ja irgendwo verarbeitet werden. Ich habe nämlich den Eindruck das durch eine größere Karte die Landmasse zwar mitwächst, aber trotzdem im Verhältnis zurückbleibt.

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.11.05
    Beiträge
    6
    also danke auf jedenfall mal für die Info muß aber dazu sagen das ich Laie bin und ich die größe nur in der XML Datei geändert habe nach Vorlage von so einer englischen Seite
    kannst das mal Posten ? wie du das mit den Standorten der Startpositionen macht damit ich das dann auch einfach so ändern kann ? Bitte

    Danke

  5. #5
    Registrierter Benutzer Avatar von saarworres
    Registriert seit
    09.11.05
    Ort
    Saarland
    Beiträge
    12
    Ich hab das ganze mal als eigenen Thread aufgemacht. Je nachdem was ich so herausfinde. HIER hab ich eine bessere Erklärung gepostet. Hoffe es hilft und man kanns verstehen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •