PHost - Bauliste (Build Queue)

PHost 4.1h


Inhalt

Einleitung

Im ursprünglichen VGA Planets können zu jedem Zeitpunkt maximal 500 Schiffe existieren. Sobald dieses Limit erreicht ist, können neue Bauaufträge solange nicht ausgeführt werden, bis ein existierendes Schiff zerstört, recyclet oder anderweitig aus dem Spiel genommen wurde und somit einen Platz (ship slot) frei macht. Wenn ein freier Platz verfügbar ist, bewerben sich oftmals mehrere Sternenbasen darum, ihren Bauauftrag ausführen zu können. PHost muss nun eine Entscheidung treffen und eine Basis auswählen. Dies ist das schwierigste Problem des Spieles, welches bereits zu umfangreichen Diskussionen geführt hat.

(v4.0:) PHost 4 (und HOST999) unterstützen bis zu 999 Schiffe in einem Spiel. Damit wird das Schiffslimit verzögert, aber nicht außer Kraft gesetzt.

Die Liste noch abzuarbeitender Bauaufträge heißt Bauliste bzw. Build Queue. PHost bietet drei Strategien an, die Bauliste zu verwalten. Diese Strategien und ihre Parameter sind hier beschrieben.

Nach oben


Grundlagen

PHost verwaltet eine Liste noch auszuführender Bauaufträge. Diese Liste wird auch über mehrere Züge hinweg gepflegt.

PHost sucht jeden Zug nach Sternenbasen mit neuen Schiffsbau-Aufträgen. Diese werden dann in die Bauliste aufgenommen. Die Suche beginnt bei einer zufällig gewählten Sternenbasis. Damit haben Basen mit niedrigeren Id-Nummern keinen Vorteil gegenüber den anderen; jede Basis hat die gleiche Wahrscheinlichkeit, gewählt zu werden. Die neuen Aufträge werden an die Bauliste angehängt, wo sie darauf warten, bis alle vor ihnen stehenden Aufträge ausgeführt wurden.

Nach dem Zusammensuchen aller Bauaufträge versucht PHost, neue Schiffe zu bauen. Dazu wird der Anfang der Warteliste abgearbeitet. Solange noch Schiffsslots frei sind, werden die Baufaufträge im gleichen Zug ausgeführt, in dem sie eingereicht wurden. Der Bau erfolgt dann in der Schiffsbau-Phase. Sobald alle Schiffsslots aufgebraucht sind, sammeln sich Bauaufträge in der Bauliste an.

Wenn ein Schiffsslot frei wird, entscheidet der Modus der Bauliste (BuildQueue), welcher Bauauftrag ausgeführt wird. Dazu wird jedem Auftrag eine Priorität gegeben. Der Auftrag mit der höchsten Priorität wird zuerst ausgeführt.

Spieler können diese Prioritäten mit ihren Baupunkten (build points) (Player Activity Level, PAL) beeinflussen. Für riskante Aktionen im Spiel gibt es Punkte: je aktiver du spielst, desto schneller kannst du bauen. Die in einem Zug gesammelten Baupunkte heißen Turn Activity Level (TAL).

Normalerweise werden Schiffe in der Reihenfolge gebaut, in der du die Bauaufträge einreichst. Du kannst jedoch ein paar Aufträge priorisieren, damit sie eher ausgeführt werden: Priority Build.

Um Priority Builds verwenden zu können, muss die Option AllowPriorityBuild eingeschaltet sein. Du kannst dann mit dem Kommandocode PBn die Reihenfolge der Bauaufträge beeinflussen.

Die PBn-Kommandocodes sind Spezialcodes, und gelten daher für Kämpfe, Frachttransfers usw. nicht als Übereinstimmung (friendly code match). Der Kommandocode PB0 zählt jedoch nicht dazu und hat auch keine Auswirkung auf die Bauaufträge.

Bauaufträge ändern: Wenn du einen Bauauftrag änderst, bevor das Schiff gebaut wurde, beginnt der neue Bauauftrag normalerweise, die Bauliste erneut komplett zu durchwandern, als ob der vorige Auftrag nie existiert hätte. PHost kann aber auch so eingerichtet werden, dass der neue Auftrag Teile der Priorität des alten Auftrags übernimmt. Die Einstellung BuildChangeRelativePenalty gibt an, welchen Teil der Priorität ein neuer Bauauftrag verliert, verglichen mit der Priorität des alten Auftrags. Der Standardwert ist 100% (Komplettverlust). Bei einem Wert von 25 verliert der Bauauftrag ein Viertel seiner Priorität, und beginnt damit das Warten im vorderen Viertel der Bauliste, nicht am Ende.

Aus historischen Gründen gibt es auch eine Option SBQBuildChangePenalty, die eine feste Strafpunktzahl angibt. Jene Option wird aber nur bei einer PAL-Queue verwendet, und gibt dort eine Anzahl Strafpunkte an, die zusätzlich zu BuildChangeRelativePenalty vergeben wird.

PAL-System

Dies ist das ursprüngliche Baulisten-System von PHost 3. Die Bauliste wird nur über Prioritäten gesteuert. Baupunkte (Player Activity Level, PAL) wirken sich direkt auf die Prioritäten deiner Bauaufträge aus. Das Schiff mit der höchsten Priorität wird zuerst gebaut.

Neu aufgenommene Bauaufträge erhalten eine Priorität entsprechend deinem gesamten Player Activity Level:

PAL * PALPlayerRate% * SBQNewBuildPALBoost

Außerdem erlangen Bauaufträge durch deinen Turn Activity Level (TAL, diesen Zug verdiente Baupunkte) Priorität:

TAL * PALPlayerRate% * SBQBuildPALBoost * scale + SBQPointsForAging

Der Faktor scale soll Spieler dazu bewegen, nur Schiffe zu bauen, die sie wirklich brauchen. Mathematisch ist dieser Wert

1/N ^ (SBQBoostExpX100 / 100)

dabei ist N die Anzahl Bauaufträge, die der Spieler hat. Dabei kann SBQBoostExpX100 folgende Werte annehmen:

  • Mit dem Standardwert 0 ist die Anzahl Bauaufträge nicht relevant. Wenn du einen TAL von 800 hast, werden die Prioritäten aller deiner Aufträge um 800 erhöht (unter der Annahme, dass PALPlayerRate und SBQBuildPALBoost den Wert 100 haben). Damit macht es keinen Unterschied, ob ein Spieler nur wichtige Kriegsschiffe baut oder einfach Plätze in der Bauliste mit sinnlosen Schrott-Schiffen blockiert, nur um eine gute Position in der Liste zu erlangen. Das ist das Verhalten von PHost 3.2 und davor..
  • Mit dem Wert 100 wird der Prioritätsgewinn durch die Anzahl Bauaufträge geteilt. Wenn du nur zwei Bauaufträge ausstehen hast, ergeben die 800 Punkte also einen Prioritätsgewinn von 400 für jeden der beiden. Wenn du stattdessen 20 Aufträge aktiv hast, bekommt jeder nur magere 40 Punkte.
  • Werte dazwischen können die Reduktion bei vielen Bauaufträgen reduzieren. Bei 50 wird der Gewinn um Wurzel-N reduziert, so dass bei viermal so vielen Bauaufträgen jeder halb so viele Punkte erhält wie normal.
  • Du kannst auch Werte außerhalb dieses Bereiches nutzen, um "interessante" Effekte zu erhalten.

Zusätzlich zu den PAL-Punkten erhält jeder Bauauftrag einen Bonus von SBQPointsForAging Punkten jeden Zug. Damit haben ältere Bauaufträge üblicherweise mehr Priorität als neue.

Wenn du einen Bauauftrag änderst, erhält dieser eine Rückstufung von SBQBuildChangePenalty (zusätzlich zu BuildChangeRelativePenalty). Mit dem Standardwert 2147483647, quasi "unendlich" für den Computer, müssen geänderte Bauaufträge also die Warteliste vollständig von vorn durchlaufen. Du kannst diesen Wert absenken, um eine mäßigere Rückstufung zu erhalten.

Priority Build mit PAL-System

Die PBn-Codes sortieren einfach deine Bauaufträge um. Eine Sternenbasis mit einem dieser Codes springt an den Anfang der Queue, so dass ihr Bauauftrag vor den Basen ohne Prioritäts-Angabe oder mit niedriger Priorität ausgeführt wird.

Angenommen, du hast drei Bauaufträge:

Basis #100  Priorität 10000
Basis #200  Priorität 9000
Basis #300  Priorität 5000

Die Prioritäten werden sich über den Spielverlauf erhöhen, aber die Reihenfolge bleibt immer erhalten: Sternenbasis #100 wird vor Sternenbasis #200 bauen, zuletzt ist #300 an der Reihe. Wenn nun der Kommandocode von Planet #300 auf PB1 geändert wird, ändert sich die Bauliste wie folgt (unter der Annahme, dass die Prioritäten sich nicht geändert haben):

Basis #300  Priorität 10000  (mittels PB1)
Basis #100  Priorität 9000
Basis #200  Priorität 5000

Basis #300 ist an den Anfang der Warteliste "gesprungen" und hat alle anderen Basen "verdrängt". Die Prioritäten haben sich nicht geändert. In einem echten Spiel werden die Prioritäten normal steigen. Die wichtige Tatsache ist jedoch, dass du die eigentlichen Werte der Prioritäten mit einem PB-Kommandocode nicht beeinflussen kannst. Du kannst nur die relative Reihenfolge deiner eigenen Bauaufträge beeinflussen, nicht jedoch die Reihenfolge deiner Aufträge im Vergleich zu denen der Gegner.

Sobald ein Bauauftrag mit einem Prioritäts-Code umsortiert wurde, kannst du den Kommandocode wieder ändern. Die neue Position bleibt auch ohne den Code bestehen, bis die Reihenfolge mit einem weiteren Code möglicherweise noch einmal geändert wird.

Mit den Zahlen 1 bis 9 kann eine relative Reihenfolge angegeben werden. Dabei ist PB1 der zuerst auszuführende Bauauftrag. Die Prioritätsangaben müssen nicht direkt aufeinanderfolgen. Um zwei Sternenbasen in eine Reihenfolge zu bringen, kannst du beispielsweise PB1 und PB2 verwenden, oder PB1 und PB5, oder PB8 und PB9. Sternenbasen ohne Prioritätsangabe behalten ihre relative Reihenfolge, werden aber immer erst nach den Basen mit Prioritätsangabe bearbeitet.

FIFO-Queue

Das FIFO-System ist das einfachste von allen. Bauaufträge werden in der Reihenfolge abgearbeitet, in der sie eingereicht wurden -- First In, First Out, wer zuerst kommt, mahlt zuerst. Baupunkte spielen hier keine Rolle.

Wenn ein Schiffslot frei ist, führt PHost den Bauauftrag aus, der als erstes in die Bauliste gegeben wurde.

Wenn du das FIFO-System nutzen willst, musst du einfach nur in pconfig.src BuildQueue = FIFO einstellen. Die anderen Optionen werden in diesem Modus ignoriert, müssen aber momentan dennoch angegeben sein. PHost verwaltet hier die Prioritäten automatisch, so dass der älteste Bauauftrag immer die höchste Priorität hat.

Für Schiffslisten, in denen die Top-Schiffe aller Spieler vergleichbar sind (wie z.B. PLIST[Remote]), ist ein FIFO-System eine gute Wahl (und sehr einfach zu handhaben).

Priority Build mit FIFO-System

Wie im PAL-Modus sortieren die PBn Kommandocodes einfach deine Bauaufträge um. Siehe dort für mehr Informationen.

PBP-System

Die Idee hinter dem PBP-System ist, dass Spieler Baupunkte sammeln (die hier als PBPs bezeichnet werden, es sind aber immer noch die guten alten PAL-Punkte), und diese Punkte gegen Schiffe eintauschen können. Dieses System ähnelt dem System von HOST, ist aber nicht identisch.

Wenn dieses System verwendet wird, können Spieler entscheiden, welche Bauaufträge sie für wichtig halten, und diese priorisieren. Dazu werden die PBn-Kommandocodes auf der Sternenbasis benutzt. Jeder Spieler kann bis zu 9 Prioritäts-Aufträge (priority builds) definieren, da es 9 dieser Kommandocodes gibt. PB1 ist dabei der wichtigste Bauauftrag, PB2 der zweitwichtigste, usw. Im Gegensatz zu den anderen Modi musst du hier die PBn-Codes bestehen lassen, bis das Schiff gebaut wurde.

Jeden Zug werden die ersten freien Schiffsslots an Spieler vergeben, die bereit sind, mit ihren Baupunkten dafür zu bezahlen. Der Spieler mit den meisten PBPs bekommt den ersten Slot, solange, bis alle Slots aufgebraucht sind oder keine weiteren Priority Builds mehr möglich sind. Alle Schiffe, die in dieser Phase gebaut werden, kosten Baupunkte. Wenn ein Spieler einen Priority Build bekommen könnte, aber keinen weiter in Auftrag gegeben hat oder seine Punkte nicht für sein höchst-priorisiertes Schiff ausreichen, wird er übersprungen.

Wenn nach den Priority Builds noch Schiffsslots frei sind, werden Schiffe in FIFO-Reihenfolge gebaut: der älteste Bauauftrag zuerst.

Priority Build mit PBP-System

Es kostet PBPs, ein Schiff zu bauen. Je schwerer das Schiff, desto mehr Punkte kostet es. Die Option PBPCostPer100KT legt fest, wieviel für 100 kt Schiffsmasse berechnet werden. Es gibt allerdings einen Mindestpreis PBPMinimumCost. Klon-Aufträge kosten nochmals mehr Punkte, entsprechend der PBPCloneCostRate.

Nehmen wir an, du möchtest ein Schiff mit 150 kt bauen, und die Konfiguration verwendet die Standardwerte:

PBPCostPer100KT               = 200
PBPMinimumCost                = 400
PBPCloneCostRate              = 200

Nach der PBPCostPer100KT betrügen die Kosten 150*200% = 300 Punkte. Da das Minimum aber 400 Punkte sind, musst du für dieses Schiff 400 Punkte bezahlen, für einen Klon-Auftrag sogar das Doppelte.

Wenn ein Schiff geklont wird, werden die Baupunkte dem Besitzer der Sternenbasis abgezogen. Dies muss nicht der gleiche Spieler sein wie der Besitzer des zu klonenden Schiffes (und somit der Besitzer der Kopie) wenn das Schiff eine Planeten-Allianz nutzt.

PHost nötigt dich nicht dazu, einen Priority Build auszuführen. Wenn du in deinem Spiel die meisten PBPs hast, aber keinen PBn-Code gesetzt hast, sammelst du einfach weiter Punkte (zum Beispiel für ein besonders dickes Schlachtschiff). Im Gegensatz dazu musst du in HOST in diesem Fall einen Priority Build ausführen.

==> Beachte, dass in PHost die PBn-Kommandocodes immer wirksam sind (wenn AllowPriorityBuild aktiv ist), egal, wie viele Schiffe im Spiel sind. Wenn du PBn am Anfang des Spieles benutzt, wirst du PBPs für ein Schiff bezahlen, auch wenn genug Schiffs-Slots verfügbar sind, so dass es ohnehin gebaut würde.

Nach oben


Details der Baupunkte

Dieser Abschnitt beschreibt die Auswirkungen der Aktionen eines Spielers auf seine Baupunkte.

Grundlagen

In jedem Zug sammeln Spieler Turn Activity Level. Diese Aktivitätspunkte werden über alle Züge zum Player Activity Level aufsummiert. Damit Spieler weiter aktiv bleiben anstatt sich auf bereits gesammelten Punkten auszuruhen, wird der PAL jeden Zug um einen gewissen Prozentsatz reduziert: Punkte verfallen, wenn sie nicht genutzt werden.

New PAL      = Round((Old PAL - Points Used) * Decay Factor) + TAL
Decay Factor = 1 - (PALDecayPerTurn/100)

Old PAL ist der alte Aktivitäts-Wert, mit dem du den vorigen Zug beendet hast. Am Anfang eines Spieles beginnt jeder mit 0 PAL-Punkten.

Points Used ist die Anzahl für Priority-Builds verbrauchter PAL-Punkte im PBP-Baumodus. In anderen Modi werden Punkte nicht "verbraucht", und dieser Wert ist 0.

TAL ist die Summe aller Punkte, die diesen Zug mit diversen Aktionen erlangt wurden, siehe nächsten Abschnitt. Punkte können in dem Zug, indem sie gesammelt wurden, noch nicht benutzt werden. Wenn du in einem Kampf siegst und damit hunderte Punkte erhältst, kannst du sie dennoch erst nächsten Zug nutzen. Damit wird der Schiffsbau ein wenig vorhersagbarer, da du vorher weißt, wieviele Punkte dir zur Verfügung stehen und du deine Bauaufträge gegebenenfalls umsortieren kannst.

Aktionen mit Belohnung

Im PAL-System werden im Allgemeinen riskante Manöver belohnt. Das spiegelt sich in der Standardkonfiguration wieder, die für viele Dinge Punkte verteilt. Die Zahlen wurden ansonsten einfach aus dem Hut gezogen; es gibt inzwischen auch bessere Konfigurationen als PHost's eingebaute Standardwerte.

Im PBP-System werden im Allgemeinen nur Aktionen belohnt, die zur Zerstörung von Schiffen führen, und somit neue Schiffslots verfügbar machen. Sehr häufig kostet der Bau eines Schiffs mit N Kilotonnen Hüllenmasse doppelt so viel wie ein Spieler dafür bekommt, das er so ein Schiff zerstört.

Im FIFO-System werden keine Baupunkte benutzt. Damit sind die Werte der PALxxx-Optionen nicht wichtig. Du kannst sie aber dennoch als eine Art Aktivitäts-Indikator nutzen.

Kampf

Beachte, dass es keine Baupunkte gibt, wenn die Gegner verbündet sind. Die angebotenen Allianz-Privilegien sind dabei unerheblich, es kommt nur darauf an, ob eine Allianz besteht oder nicht.

PALCombatAggressor             = 0

Punkte dafür, dass du im Kampf Aggressor bist. Dies ist eine feste Punktmenge. Siehe Kampfreihenfolge für die Bedeutung des Begriffes Aggressor. Vereinfacht ist das ein Schiff oder Planet, der einen Kampf beginnt.

PALAggressorPointsPer10KT      = 2
PALOpponentPointsPer10KT       = 2

Punkte für je 10 KT Masse des Gegners im Kampf. Für Aggressor und Opponent kannst du verschieden viele Punkte geben. Wenn du den Gegner zerstörst, erhältst du die volle Punktzahl (plus die Punkte von den nächsten beiden Optionen). Wenn du den Gegner zu 40% beschädigst, bekommst du nur 40% der Punkte.

PALAggressorKillPointsPer10KT  = 10
PALOpponentKillPointsPer10KT   = 10

Punkte für je 10 KT im Kampf zerstörte Masse, wenn du Aggressor oder Opponent warst. Wenn ein Planet zerstört wird, zählt nur die Masse der Verteidigungsposten für den TAL, der Basiswert 100 KT wird nicht mitgezählt.

PALShipCapturePer10Crew        = 5

Punkte für je 10 getötete Crewmitglieder, wenn du ein Schiff im Kampf kaperst.

PALCombatBaseScaling           = 50
PALCombatPlanetScaling         = 80

Setzt die Masse eines Planeten zur Masse eines Schiffes in Relation, für die Punkteberechnung. Wenn diese Option den Wert 100 hat, ist ist das Beschädigen eines Planeten genausoviel wert wie das Beschädigen eines Schiffes. Ist der Wert nur 50, gibt es für das Beschädigen von 10 kt Planet nur halb so viele Punkte wie für das Beschädigen von 10 kt Schiff.

PALIncludesESB                 = Yes

Wenn diese Option aktiviert ist, gehen diverse Boni (Engine/Shield-Bonus, Föderations-Bonus) in die Punkteberechnung ein. Ansonsten wird nur die Masse der Hülle verwendet.

Boarding

PALBoardingPartyPer10Crew      = 3

Punkte für je 10 Crewmitglieder auf einem Schiff, das von den Privateers oder Crystals geentert wird. Wenn beide Schiffe verbündet sind, gibt es keine Punkte.

Glory Device

PALGloryDevice                 = 100
PALGloryDevicePer10KT          = 0

Punkte für das Zünden eines Glory Device. Diese Punkte erhält der Besitzer des Glory Device. Mit der ersten Option kannst du dem Glory-Schiff eine feste Punktzahl geben (die traditionelle Methode). Mit der zweiten Option kannst du Punkte in Abhängigkeit von der Masse vergeben. Mit PALGloryDevice = 50 und PALGloryDevicePer10KT = 3, erhält ein Spieler für das Zünden eines 120-kt-Glory-Schiffes 50 + 3*12 = 86 Punkte.

PALGloryDamagePer10KT          = 2

Punkte für je 10 kt gegnerischer Hüllenmasse, die von einem Glory Device beschädigt wurden. Diese Punkte, skaliert mit dem angerichteten Schaden, erhält der Besitzer des Glory Device. Schiffe, die diesem Spieler oder seinen Verbündeten gehören, zählen nicht.

PALGloryKillPer10KT            = 0

Punkte für je 10 kt gegnerischer Hüllenmasse, die von einem Glory Device zerstört wurden. Diese Punkte erhält der Besitzer des Glory Device zusätzlich zu den Punkten, die er für die Beschädigung des Schiffes erhält. Schiffe, die diesem Spieler oder seinen Verbündeten gehören, zählen nicht.

Bodenkampf & Co

PALGroundAttackPer100Clans     = 100

Punkte für je 100 Clans, die durch einen normalen Bodenangriff getötet wurden (also kein Imperial Assault). Diese Punkte werden mit dem Bodenkampf-Verteidigungs-Faktor des Verteidigers multipliziert und durch den Bodenkampf-Angriffs-Faktor des Angreifers dividiert (für das Ausschalten von Lizards gibt es also mehr Punkte als für Bird Men). Der Verteidiger erhält keine Punkte. Für Kämpfe zwischen Verbündeten gibt es ebenfalls keine Punkte.

PALImperialAssault             = 100

Punkte für das Ausführen von Imperial Assault. Für Kämpfe zwischen Verbündeten gibt es keine Punkte.

PALPillage                     = 10

Punkte für das Ausführen von Pillage an einem gegnerischen Planeten. Eigene, unbesetzte oder verbündete Planeten zählen nicht.

PALRGA                         = 10

Punkte für das Ausführen von Rebel Ground Attack an einem gegnerischen Planeten. Eigene, unbesetzte oder verbündete Planeten zählen nicht.

Verschiedenes

PALRecyclingPer10KT            = 4

Punkte für je 10 kt Schiffsmasse, die an einer Sternenbasis recycelt oder an einem Planeten ausgemustert werden.

PALShipMinekillPer10KT         = 0

Punkte für je 10 kt Hüllenmasse, die durch einen Minentreffer zerstört wurden. Diese Punkte erhält der Besitzer des Minenfeldes.

(v3.4c:) Die Punktestände werden mit drei Nachkommastellen berechnet, also exakt. Am Ende des Zuges werden die Nachkommastellen verworfen. PHost bis 3.4b tut dies nach jedem Rechenschritt.

Nach oben


Letzte Aktualisierung 31 May 2015.


Mail support@phost.de for support, ideas, bug reports, questions. Contact Details