Posted at: Today 16:36
EN : Improvment Suggestion : No Ship stacking
In vergangenden Mehrspieler Partien , zuletzt gegen carlie2 am 31.12.2024 , bin ich zum Schluss gekommen dass die neue Seekrieg Funktion doch noch unausgereift ist .
Außerdem hat man das auch schon in vielen Partien im Seekriegturnier 2023 gesehen .
Viel zu viel Mikro-Management und ein einziges "wer den anderen schneller mit Kriegsschiffen überschütten kann gewinnt" .
Ich habe eine simple Lösung für das Problem : An Land wird dies bereits bei Soldaten durchgeführt . Es kann sich nur ein Soldat auf einen Punkt befinden .
Genau das gleiche brauchen wir für Schiffe im allgemeinen , also nicht nur Kriegsschiffe .
Entweder man kopiert den Code für die Soldaten mit dieser entsprechenden Funktion und passt Sie an Schiffe im allgemeinen an oder ,
da ich nicht weiß wie diese Blockierung technisch gelöst wird , hier mein Lösungsvorschlag :
Bei der initalisierung der Partie wird eine neue Tabelle / ein neues Feld erstellt .
Jeder Punkt erhält eine leere String-Liste . Soldaten haben einen Blockierungsradius von 1 .
Schiffe sollten einen Blockierungsradius von 2 haben . Ich gehe mal davon aus das jede Einheit in Widelands eine eindeutige Nummer hat ,
die fortlaufend erhöht wird und immer an neu erschaffene Einheiten vergeben wird .
Das Beispiel Schiff mit der ID 1253 führt an allen Punkten im Radius von 2 um sich herum einmalig bei Erstellung des Schiffes
( Die Schiffsbaustelle wird in ein Schiff umgewandelt ) einmalig aus : "Füge Integer / String "1253" zur Integer / String Liste des Punktes hinzu .
Wenn das Schiff den Befehl erhält nach Osten zu fahren dann :
Prüfe alle 3 Punkte in Richtung Osten , außerhalb des Radius 2 , ob die Integer / String Liste der Punkte leer sind .
Prüfe alle 3 Punkte in Richtung Osten , innerhalb des Radius 2 , ob die Integer / String Liste nur die eigene ID 1253 enthält .
Eigentlich müsste man statt 6 Punkte nur 2 überprüfen aber ich bin mir da nicht ganz sicher , deshalb vorsichtshalber alle 6 .
Trifft obriges zu dann bewege um eins nach Osten . Wenn die Bewegung um eins nach Osten abgeschlossen ist ,
Füge bei allen 3 Punkten in Richtung Osten , die nun innerhalb des 2 Radius liegen die eigene ID 1253 zur Integer / String Liste hinzu .
Entferne bei allen 3 Punkten in Richtung Westen , die nun außerhalb des 2 Radius liegen die eigene ID 1253 aus der Integer / String Liste .
Trifft obriges nicht zu dann warte Beispielsweise 5 Sekunden ab und prüfe danach erneut ob nun eine Bewegung nach Osten möglich ist .
Falls das Schiff auch nach 60 Sekunden nicht weiter nach Osten sich bewegen kann , gebe eine Nachricht an den Spieler aus , dass das Schiff keinen Weg findet .
Diese Lösung führt aber auch zum Problem das wenn sich zwei Schiffe auf einer Route gegenseitig blockieren ,
das diese dann jedes mal vom Spieler manuell durch Mikro-Management entknoten werden müssen .
Um diese Art von Mikro-Management zu unterbinden , sollten Schiffe , sobald sie sich nicht mehr weiter bewegen können ,
versuchen einen Alternativen-Weg um das "Schiff-Hindernis" herum zu finden und erst wenn Sie gar keinen Weg mehr finden , dann den Spieler benachrichtigen .
Wenn der Spieler zu viele Schiffe bauen ließ und somit seine Küste verstopft der ist selbst Schuld .
Dann hat die "Schiff versenken" Funktion auch mal mehr nutzen .
Aber wenn ich es richtig beobachtet habe , gibt es bereits diese Ausweich Funktion für Schiffe , zumindest für Transport-Schiffe .
Das bringt übrigends auch die netten Taktien mit feindliche Transportschiffe zu blockieren an engstellen oder Häfen . Würde ich begrüßen .
Kann man mit der realen Welt vergleichen wo Kriegsschiffe dies Handelsschiffen auch androhen und behindern können .
Aber Sie dürfen keine Zivilen Schiffe angreifen und genau gleiches sollte auch in Widelands so bleiben . Blockieren ja , Versenken nein .
-
EN : The new Warship Function needs improvment . To much Micro-Management by Player in Warship fights .
The Solution : Similar to Land Soldiers , Ships generally , including Warships needs a Blocking Radius of 2 around the Ship ,
where no other Ship can enter the Point by moveing .
Each Point get at initzializing a new table / integer-list / string-list which is at start empty .
When the construction of a Ship is completed , the Ship send one time a add Ship-Unique-Unit-Number to all Points in Radius of 2 around the new Ship add Unit-Number .
When Ship moveing the table / list of next point is checked if it is empty . If not empty than ship try to find a alternative path to target .
If the ship cant find another alternative path to target than ship notificate the player that it cant find a path / ship moving is blocked .
If the player orders to many ships at shipyard and flooding his own coast , to the point where the ships no longer find a path ,
than the player self make the mistake and not the game . The current Function "Ship deleteing" becomes than also more usage .
This brings also the Tactic of blocking enemy civil ships at small sea points or ports . I would like that .
But similar to the real world , warships dont have the right to attack civil ships and i would say this must be also in Widelands .
icon |
name |
meaning |
|
/wlmedia/wlimages/square_red.png |
contra / -1 |
|
/wlmedia/wlimages/square_red_green.png |
partially pro / +0.5 |
|
/wlmedia/wlimages/square_green.png |
pro / +1 |
|
! [ ] ( /wlmedia/wlimages/square_green.png ) |
Bild einbinden |
Edited: Today 16:57
Top
Quote
|