Show whole topic Jul 09, 2009 9:05 pm
Eiko Offline
Moderator, Developer
Registered since: Aug 03, 2007
Location: -


Subject: Re: Neue Einheiten XMLs
So, mein Senf dazu:

Erstmal, super Arbeit! Hab auch nur noch ein paar Kleinigkeiten dazu.

DownloadSource code (XML):
  1.  <Unit ID="0 1" name="air_transport">
  2. .
Brauchen wir die ID eigentlich noch? Wenn nein,hätten wir kein Problem mehr mit möglicherweise doppelten IDs.

DownloadSource code (XML):
  1.  
  2.   <Weapon>
  3.       <Muzzle_Type Const="None"/>
  4.       <!-- Typ des Geschosses -->
  5.       <!-- None: Kein Geschoss -->
  6.       <!-- Big: Ein großes Geschoss -->
  7.       <!-- Rocket: Eine normale Rackete -->
  8.       <!-- Small: Ein kleines Geschoss -->
  9.       <!-- Med: Ein mittleres Geschoss -->
  10.       <!-- Med_Long: Ein mittelgroßes aber langes Geschoss -->
  11.       <!-- Rocket_Cluster: Eine Clusterrackete -->
  12.       <!-- Torpedo: Ein Torpedo -->
  13.       <!-- Sniper: Eine Gewehrkugel -->
  14.  

Rocket_Cluster würde ich raus nehmen, da es das Attribut Cluster_Attack gibt.

DownloadSource code (XML):
  1.       <Can_Drive_And_Fire YN="No"/>
  2.       <!-- Verliert die Einheit alle Schüsse mit der ersten Bewegung oder nehmen diese erst langsam mit den Bewegungspunkten ab? -->
Hier würde ich als zusätzliche Flexibilität einen Num nehmen, der angibt, ab wie viel Bewegung ein Schuss verloren geht. Das is im Code mit einer Zeile behandelt, also sollten wir das einbauen Smiling

DownloadSource code (XML):
  1.      
  2.   </Weapon>
  3.  
  4.   <Production>
  5.  
  6.     <Produces_Units>
  7.       <Unit ID="xx yy"/>
  8.       <!-- Liste der Einheiten die diese Einheit herstellen kann-->
  9.     </Produces_Units>
Hier würde ich, wie im IRC erwähnt die Attribute Can_Build und Build_By nehmen. Wenn die beiden von 2 Einheiten zueinander passen, kann die Einheit von der anderen gebaut werden. Vorteil: keine Referenzierung von anderen Einheiten per ID notwendig. Dadurch braucht man beim Hinzufügen von neuen Einheiten nie zusätzlich eine andere XML editieren müssen.

DownloadSource code (XML):
  1.    
  2.   </Production>
  3.  
  4.   <Abilities>
  5.  
  6.     <Can_Move_On Num="1"/>
  7.     <!-- Auf welchen Untergründen kann sich diese Einheit bewegen -->
  8.     <!-- - Air: 1 -->
  9.     <!-- - Sea: 2 -->
  10.     <!-- - Ground: 4 -->
  11.     <!-- Kombinationen sind möglich. Z.b. 3 für Air+Sea oder 6 für Ground+Sea -->
Coast wäre dann 8

DownloadSource code (XML):
  1.  <No_Water_Deceleration YN="No"/>
  2.     <!-- Fährt die Einheit auf Wasser genau so schnell wie auf Land (Gutachter) -->
Ich würde vorschlagen, Faktoren für verschiedene Terrains zu benutzen, die angeben, wie schnell sich eine Einheit auf einem bestimmten Terrain bewegen kann. Eine 0 würde bedeuten gar nicht, eine 0.5 halbe Geschwindigkeit, eine 1 normal schnell, usw.
Damit hätten wir festgelegt, auf welchen Terrains sich Einheiten bewegen dürfen und wie das Terrain die Geschwindigkeit Beeinflusst. Das macht die Sache flexibler, als wenn nur "No_water_deceleration" benutzt wird.

DownloadSource code (XML):
  1.     <Makes_Tracks YN="No"/>
  2.     <!-- Werden Spuren hinterlassen -->

Das sollte in die Grafik-Sektion.

DownloadSource code (XML):
  1.     <Can_Clear_Area YN="No"/>
  2.     <!--Kann die Einheit Wracks und Bäume beseitigen? (Später eventuell auch Gelände modifizieren) -->
Bäume?^^ Ich bin mir ziemlich sicher, dass der Bulldozer das nicht kann Wink

DownloadSource code (XML):
  1.     <Can_Mine_Resources YN="No"/>
  2.     <!-- Kann diese Einheit Material fördern -->
Hier würd ich ein Num nehmen, der die maximalanzahl angibt. Der Code kann, seitdem ich ihn überarbeitet hab bereits mit Variablem Maximalwert umgehen.

DownloadSource code (XML):
  1.     <Is_Stealth_On Num="0"/>
  2.     <!-- Auf welchen Untergründen ist die Einheit unsichtbar -->
  3.     <!-- - Air: 1 -->
  4.     <!-- - Sea: 2 -->
  5.     <!-- - Ground: 4 -->
  6.     <!-- Kombinationen sind möglich. Z.b. 3 für Air+Sea oder 6 für Ground+Sea -->
  7.    
+ Coast

DownloadSource code (XML):
  1.     <Surface_Position Const="Normal"/>
  2.     <!-- Auf welcher Höhe befindet sich die Einheit -->
  3.     <!-- - Normal (Blockiert auf eigener Ebene[Flugzeuge blockieren Flugzeuge, Boden/Wassereinheiten untereinander])-->
  4.     <!-- - Beneath -->
  5.     <!-- - Above -->
  6.     <!-- - BeneathNAbove (Für Brücken die sowohl über als auch unter Standard(Normal)-einheiten sein können)-->
  7.    
Hm, ich bin mir gerade nicht sicher, ob das ausreicht. Was ist zum Beispiel mit See-Mine und Brücke auf einem Feld? Das is möglich, wäre aber beides "Beneath" oder?

DownloadSource code (XML):
  1.     <Build_On_Water YN="No"/>
  2.     <!-- Kann diese Einheit nur auf Wasser errichtet werden -->
Würde ich erweitern auf "Build_On" und wieder eine Bitkombination für Wasser, Küste, Land, da sonst nicht alle Fälle abgedeckt werden können.

DownloadSource code (XML):
  1.     <Is_Activatable YN="No"/>
  2.     <!-- Kann diese Einheit aktiviert werden -->
Welche Bedeutung hat das?

DownloadSource code (XML):
  1.   </Abilities>
  2.  
  3.   <Storage>
  4.     <!--Lagerung-->
  5.  
  6.     <Capacity_Metal Num="0"/>
  7.     <!--Wieviel Metall kann diese Einheit speichern-->
  8.     <Capacity_Oil Num="0"/>
  9.     <!--Wieviel Öl kann diese Einheit speichern-->
  10.     <Capacity_Gold Num="0"/>
  11.     <!--Wieviel Gold kann diese Einheit speichern-->
würde ich zusammenfassen, zu "Capacity" und "Type". Ansonsten würde das zu kompiliert, da man ja auswählen können müsste was nun geladen werden soll, also umfangreiche Änderungen am Userinterface nötig wären.

DownloadSource code (XML):
  1.     <Capacity_Units Num="3"/>
  2.     <!--Wieviele andere Einheiten kann diese Einheit speichern-->
  3.  
  4.     <Capacity_Units_Type Num="12"/>
  5.     <!-- - Air: 1 -->
  6.     <!-- - Sea: 2 -->
  7.     <!-- - Ground: 4 -->
  8.     <!-- - Human: 8 -->
  9.     <!-- Kombinationen sind möglich. -->
Wie werden die Attribute Air, See, Ground, Human einer Einheit bestimmt? Das steht ja nicht explizit in der XML drin. Air, See, Ground könne man anhand "Can_Move_On" bestimmen. Und Human?

DownloadSource code (XML):
  1.  
  2.   <Graphic>
  3.    
  4.   </Graphic>
Ich finde die Abtrennung aller rein grafischen Eigenschaften sehr gut! Ich würde sogar noch einen Schritt weiter gehen und das in eine Extra Datei auslagern. So dass Verhalten und Aussehen der Einheit komplett getrennt sind. Dadurch kann zum Beispiel das freie Grafikset unabhängig von den originalen Grafikeigenschaften gestaltet werden. Der resinstaller kann dann die Grafik-XML einfach ersetzen.

Was ist mit der Eigenschaft "ConnectToBase", woraus wird das abgeleitet, oder muss das noch zusätzlich rein?

So, das wars erstmal, da ich gerad nicht allzuviel Zeit hab. Smiling