Hinweis

Nach Klick auf "OK" wird eine Verbindung zu Facebook oder twitter hergestellt. Dadurch werden ggfs. Daten an diese Plattformen übermittelt.

 

Tagebuch: Siedler3 Remake bekommt einen Computerspieler

Umfrage

Möchtest du noch mehr Tagebucheinträge lesen?
Ja gerne!
 
24 (96%)
Hör bloß auf mit deinem Scheiß!
 
1 (4%)
Stimmen insgesamt:25
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 25.06.2015 - 21:57 Uhr  ·  #1
Liebes Tagebuch,
seit einiger Zeit wird das Siedler3 Remake programmiert: http://www.settlers-android-clone.com.
Das Remake ist ein Open Source Projekt, welches so lizensiert ist, dass es jeder benutzen und für seine eigenen Zwecke weiterentwickeln darf.
Da ich gerne Berufliches mit meinen Hobbys verknüpfe und ich aus beruflicher Sicht noch nie ein GitHub-Repository geforked habe, um dann einen Pull-Request zu schicken und ich aus Hobbysicht mich gerne mit Strategien auseinander setze, habe ich mich entschieden, einen Computerspieler für das Siedler3 Remake zu programmieren.

Ein GitHub-Repository ist ein Ort, wo Programmierer ihren Quelltext mit anderen Programmierern teilen können.
Ein Fork bedeutet, dass ich das GitHub-Repository kopiert habe, um dort selbstständig weiter zu arbeiten.
Ein Pull-Request bedeutet, dass ich meine eigenständig entwickelte Arbeit automatisiert an die ursprünglichen Entwickler des Remakes weiterleiten kann und diese können dann entscheiden, ob sie meine Arbeit mit in das Original Remake mit aufnehmen.

In den Kommentaren des Projektplans habe ich gelesen, dass ein Computerspieler noch nicht implementiert ist und dessen Entwicklung noch in sehr weiter Ferne liegt. Ich pfusche mit meinem Vorhaben also niemanden ins Fuhrwerk.

Der Ist-Zustand ist also, dass der Computerspieler gar nichts tut. Er steht mit seinen Siedlern und Waren herum und wartet, dass der menschliche Spieler auf ein Bier vorbei kommt und den Turm einnimmt.

Ich möchte die KI (Künstliche Intelligenz, also den Computerspieler) in zwei Bereiche aufteilen, damit ich nicht so viel nachdenken muss:
- eine High-Level KI, die entscheided, was zu tun ist. (Was zu bauen ist)
- eine Low-Level KI, die Befehle von der High-Level KI entgegen nimmt und sich überlegt, wo der Auftrag zu erledigen ist (Wo das Gebäude zu bauen ist)

Als ersten Schritt, damit ich überhaupt etwas sehen kann, implementiere ich die High-Level KI so, dass sie erstmal Stupide den Grundstock einer Siedler baut: Steinmetz, Holzfäller, Förster, Sägewerk und ein Wohnhaus.
Die Low-Level KI ist momentan noch nicht ganz so helle -> Ich will ja schnelle Ergebnisse sehen. Sie ermittelt alle möglichen Punkte, wo das in Auftrag gegebene Gebäude gebaut werden kann und nimmt dann den ersten davon, um es zu bauen.
Zum Glück haben die Programmierer des Original Remakes schon eine canConstructAt(x, y) Funktion bereitgestellt, dass ich einfach jeden Punkt der Karte durchgehen kann und fragen kann, ob das Gebäude hier gebaut werden kann, oder nicht. Die Karte ist nämlich ein Kartesisches Koordinatensystem (Also sie hat x und y Koordinaten, die bei 0 beginnen und bei der Kartenbreite und Kartenhöhe aufhören)

Weil die Programmierer des Originalen Remakes so nett waren und für den menschlichen Spieler schon programmiert haben, dass Gebäude planiert, mit Waren beliefert und dann hochgezimmert werden, sieht das erste Zwischenergebnis schon ganz schniecke aus.

Ich habe dir - liebes Tagebuch - zwei Bilder in das Album geklebt. Auf dem einen ist zu sehen, wie die Waren zu den von der KI platzierten Baustellen getragen werden und auf dem anderen sind die fertigen Gebäude abgebildet.

PS: Der Link zu meinem Fork
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.

Ähnliche Themen

chriissii
Wasserträger
Avatar
Geschlecht:
Beiträge: 690
Dabei seit: 06 / 2009

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 00:07 Uhr  ·  #2
Hallo maximilius,

ich finde es super, dass du das schon tot geglaubte Projekte weiter entwickelst. Ich würde auch gerne unterstützen, habe im Moment aber absolut keine Zeit. Ich hoffe ich kann vielleicht im Herbst mit anpacken, ohne etwas versprechen zu wollen :-)

Gerne lese ich in deinem Tagebuch weiter und mich freut es zu erfahren, wie du dieses Projekt voran treiben wirst.

Beim Coden wünsche ich dir viel Spaß :)

Grüße

Chris
ramstein
Bastler
Avatar
Geschlecht:
Alter: 52
Beiträge: 7761
Dabei seit: 04 / 2005

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 00:15 Uhr  ·  #3
Hi,

schön das wieder was mit "S3" machst :-)
Ich schau mir gerne deine Fortschritte an ...

PS: Schau doch mal nach deiner Signatur - die schaut komisch aus :-)
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 07:33 Uhr  ·  #4
@chriissii: Ich musste das Original Remake Repo im Github schon wieder unwatchen, weil die vielen Commits der anderen Programmierer, die ich per E-Mail rein bekam, meinen Posteingang überflutet haben. -> Ich habe eher den Eindruck, dass da gerade richtig die Post abgeht :-)

@ramstein: Signatur ist gefixed
adrianer
Bastler ohne Hand
Avatar
Geschlecht:
Herkunft: Bern
Alter: 40
Homepage: adrianer.org
Beiträge: 3134
Dabei seit: 06 / 2009

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 09:00 Uhr  ·  #5
Zitat geschrieben von maximilius

@chriissii: Ich musste das Original Remake Repo im Github schon wieder unwatchen, weil die vielen Commits der anderen Programmierer, die ich per E-Mail rein bekam, meinen Posteingang überflutet haben. -> Ich habe eher den Eindruck, dass da gerade richtig die Post abgeht :-)


Ging mir ähnlich - unwatch war auch notwendig... Seit dem das Projekt "open-sourced" wurde, ist es halt schon fast zu sehr aktiv ;)
chriissii
Wasserträger
Avatar
Geschlecht:
Beiträge: 690
Dabei seit: 06 / 2009

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 10:38 Uhr  ·  #6
Wow, das hätte ich ja nicht gedacht. Nachdem hier im Forum und auf der "offiziellen" Seite des Remakes nicht mehr berichtet worden ist, bin ich davon ausgegangen, dass das Remake nicht mehr weiter entwickelt wird.
Umso erfreulicher zu hören, dass dort sehr viel Beteiligung da ist :)

EDIT: Habe gerade gesehen, dass seit Januar doch einige Einträge auf der originalen Seite sind. Da aber in 2014 nichts los war habe ich das Projekt für tot geglaubt.
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 26.06.2015 - 17:46 Uhr  ·  #7
Liebes Tagebuch,
beflügelt von den schnellen Ergebnissen meiner ersten Testimplementierung habe ich mich am Strategy- und Factory-Entwurfsmuster orientiert.
Wenn die High-Level KI sich entscheidet, einen Steinmetz zu bauen, bittet sie die Fabrik, ihr den entsprechenden BestConstructionPositionFinder zu geben, damit sie den beauftragen kann, die beste Bauposition zu suchen.
Die Factory gibt im Falle des Steinmetzses natürlich den BestStonecutterPositionFinder zurück. für alle anderen Gebäude gibt es den FirstPossiblePositionFinder, der den Algorithmus vom ersten Tagebucheintrag enthält, die Gebäude einfach oben links hinzuklatschen :-)

Der BestStonecutterPositionFinder geht alle Punkte der Karten durch, also x = 0 bis x = Breite der Karte und jeweils y = 0 bis y = Breite der Karte. Dabei fragt sie die im ersten Tagebucheintrag erwähnte canConstructAt(x, y), ob an dem Punkt überhaupt ein Steinmetz gebaut werden kann. Dabei bleiben nur noch wenige Punkte übrig, weil der Computerspieler nur einen Turm hat und somit wenig Land.
Für jeden möglichen Baupunkt im Computerspielerland geht der BestStonecutterPositionFinder alle Steine auf der Karte durch und berechnet die Entfernung zu diesen. Dabei merkt er sich den Baupunkt, der am nächsten an irgend einem Stein liegt.
Wurden alle Kartenpunkte untersucht wird an dem Punkt, der am allernächsten an einem Stein liegt und das Bauen des Steinmetzes möglich ist ausgewählt, um den Steinmetz zu bauen.

Wenn ich mir dann überlege, dass es m Steine auf der Karte gibt und n Kartenpunkte, dann bedeutet das, dass das asymptotische Verhalten meines Algorithmus' gleich O(n*m) = O(n*n) = O(n²)
Das bedeutet, dass je mehr Steine es gibt, und je größer die Karte ist, es exponentiell länger dauert bis der beste Baupunkt gefunden wurde.
Das folgende Bild verdeutlicht das:

Quelle: http://www.linux-related.de/in…tation.htm

Eine Optimierung des Quelltextes würde ihn schwieriger zu verstehen machen und vielleicht hält das Remake die Laufzeitkomplexität ja aus. Ich entscheide mich also dafür, erstmal weiter zu implementieren und später, wenn das Spiel anfängt zu ruckeln oder auf Android nicht mehr gut läuft (denn dafür wird es ja auch entwickelt und dort gibt es sicher weniger Ressourcen als auf einem Desktoprechner) kann ich mit Analysen herausfinden, welcher der vielen später geschriebenen Algorithmen einen Hotspot darstellt, also am meisten den Rechner in die Knie zwingt und diesen zuerst optimieren. So lange, bis das Spiel flüssig läuft.
So komme ich schnell voran und optimiere effizient nur dort, wo es auch notwendig ist.

Ach liebes Tagebuch, ich kann einfach nicht anders. Ich habe wenigstens als kleine Optimierung eingebaut, dass ermittelt wird, welches die Landpunkte des Computerspielers sind und nur dort drin werden die Bäume und Bauplätze gesucht. Es ist zwar jetzt immer noch O(n²) aber mit einem viel kleineren n :-)

Hey das hat super geklappt! Hm .. da fällt mir auf, dass ich auch ganz schnell einen BestLumberjackPositionFinder programmieren kann, indem ich den Code des BestStonecutterPositionFinder wiederverwende und statt der Entfernung zu Steinen, die Entfernung zu Bäumen berechnen. Ich habe dir ein Bild in den Anhang geklebt, das das Ergebnis zeigt. Zu sehen sind gut platzierte Steinmetze und Holzfäller. Die stehen sogar schön in Reihe. So hätte ich sie als Mensch auch gebaut. Die Förster und Sägewerke sind immer noch links in die Ecke geklatscht, wo am ersten Platz ist. Sieht schon fasst gewollt aus, aber leider nur auf dieser Karte :-)

Hey das hat auch super geklappt! Dann implementiere ich auch gleich einen BestSawMillPositionFinder der in der Nähe von Holzfällern baut und einen BestForresterPositionFinder. Halt! Der BestForresterPositionFinder sollte zwar in der Nähe von Holzfällern bauen aber weit weg von anderen Förstern, damit letztendlich alle Holzfäller des Computerspielers mit neuen Bäumen versorgt werden, statt nur wenige. Auch hierfür habe ich dir ein Bild in den Anhang geklebt, das das Ergebnis zeigt.

Auf dem Bild ist jedoch zu sehen, wie alles vollgebaut wird. Die Gebäude platzieren auf der einen Seite das Aufforstungsgebiet der Holzfäller, sodass sie ineffektiv arbeiten und auf der anderen Seite ist gar kein Platz, die Gebäude woanders zu bauen, weil der Computerspieler noch keine Türme baut.
Aber wie ich das löse, schreibe ich dir ein anderes mal.
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 29.06.2015 - 12:37 Uhr  ·  #8
Liebes Tagebuch,
vielleicht gefallen dir bewegte Bilder besser als Fotos. Deswegen habe ich mich mal damit beschäftig, wie ich dir ab sofort Videos in das Album kleben kann :-)

Im zweiten Tagebucheintrag hatte ich erzählt, dass es für die Holzfäller ganz schön eng wird, weil die KI ihnen einerseits Gebäude direkt vor die Tür setzt und dort dann keine Bäume mehr wachsen können. Heute möchte ich dir davon erzählen, wie die KI Türme platziert, damit neues Land für weitere Gebäude zur Verfügung steht.

Als erstes sollte ein Turm ganz nah an der Grenze gebaut werden, damit durch seinen Bau, der ja wertvolles Baumaterial kostet maximal viel Land eingenommen wird. Also kommt ein BestMilitairyBuildingConstructionPositionFinder her, der einen Bauplatz für einen neuen Turm dort findet, wo er am weitesten entfernt von bereits gebauten militärischen Gebäuden ist.

Zum Testen dieses BestMilitairyBuildingConstructionPositionFinder lass ich die High-Level KI stupide einen Turm nach dem anderen bauen. Das Ergebnis dieses ersten Schrittes sieht so aus:
[youtube]5IcNfLJqJso
Wenn die KI alle 3 Sekunden einen Turm baut, geht dem Computerspieler schnell das Baumaterial aus. Also bedeutet der zweite Schritt, dass immer nur ein Turm im Bau ist. Sobald dieser besetzt wurde und sich das Land damit erweitert hat, wird eine neue Baustelle für einen Turm platziert.
Das Ergebnis des zweiten Schritts sieht wie folgt aus (Für das Video habe ich ab und zu F12 gedrückt. Das geht im Siedler3 Remake auch):
[youtube]5tT1bL6D9ws
Im Video ist zu sehen, dass die Schwertkämpfer schon zu weit weg vom 2. Turm stehen, um ihn zu besetzen und dass das Einnehmen von neuem Land weiter geht. Also ist der dritte Schritt, den Schwertkämpfer, der am nächsten zur neuen Turm-Baustelle steht zur Baustelle zu schicken.
Das sieht dann so aus:
[youtube]3X_Ro7WZL2I
Wenn ich so als Mensch draufgucke, wirkt das noch nicht so richtig sexy. Es erinnert mich auch an früher, als der Computerspieler des originalen Siedler3 auf Alien sich überall hin, nur nicht in Richtung Berg ausgebreitet hat.
Also folgt noch ein 4. Schritt:
Es wird ermittelt, welche Ressourcen fehlen und der Turm wird in diese Richtung entwickelt. Der Abstand zu anderen militärischen Gebäuden ist dann nicht mehr wichtig, weil der nächstgelegene Punkt zu den benötigten Ressourcen auch immer genau am Rand des Landes des Computerspielers ist.
Die wichtigste Resource für den Computerspieler sind Bäume, gefolgt von Steinen. Steine gibt es gleich mehrere pro Steinvorkommen. Bei den Bäumen ist der Baum weg, wenn er "das erste mal" gefällt wurde.
Zur Zeit lege ich den Computerspieler nicht als Rusher aus. Er soll nur stark genug sein, dass er einem menschlichen Spieler etwas entgegensetzen kann. Später sind weitere High-Level KI's möglich, wie in Siedler2, wo man zwischen Octavian, Caesar etc. wählen konnte, die sich unterschiedlich verhalten haben. Aber heute soll es ein wirtschaftlich starker Computerspieler werden, also ist die nächste wichtige Ressource nach Bäumen und Steinen das Wasser.
Wasser gibt es an Flüssen. Nach den Flüssen kommt Kohle und Eisenerz. Schließlich ist Siedler3 ein Kriegsspiel für Soldaten!!!! :-) ... eh ich meine eine Strategiewirtschaftssimulation ... wo Soldaten das wichtigste sind :P
Nach dem Eisenerz kommt dann der Fisch, damit dann das Golderz kommen kann. Kampfkraft durch Goldbarren benötigt der wirtschaftlich starke Spieler erst später. Zuerst soll er sich verteidigen können.

Zuerst habe ich hart priorisiert. Haben Bäume gefehlt, wurde ein Turm in Richtung Bäume gebaut. Die anderen Ressourcen waren egal. Dabei ist mir aufgefallen, dass der Computerspieler sich nicht optimal ausbreitet. Es wurde zum Beispiel ein Turm nach Westen gebaut, weil es dort Bäume gab, obwohl in Richtung Süden auch Bäume vorhanden waren und Kohle.
Also drehte ich den Spieß um und habe ermittelt, welche Rohstoffe noch fehlen und berechnen lassen, welche Richtung die meisten Rohstoffe enthält. Schwupps fing das Spiel an zu ruckeln. Du erinnerst dich an das asymptotische Laufzeitverhalten aus dem zweiten Tagebucheintrag? ... Wenn ich außerhalb des Landes des Computerspielers nach Rohstoffen suche, dann geschieht das auf der kompletten Karte. Es werden also immer sehr viele Punkte angeschaut. Und das ganze gleich bis zu 7-fach je nachdem, welche Rohstoffe noch fehlen. Teilweise benötigte die KI bis zu 4 Sekunden, um die Position eines einzigen Turmes zu berechnen.

Daher entschied ich mich nur die ersten 3 wichtigsten Rohstoffe zu überprüfen. Jetzt braucht der Algorithmus im Maximalfall nur noch 0,5 Sekunden zur Berechnung eines Turmes.

Im Übrigen habe ich gleich von Anfang an aus Bauchgefühl für die Berechnung des nächstgelegenen Punktes außerhalb des Computerspieler Landes keinen Algorithmus mit O(n²) verwendet, sondern einen mit O(n*log n). Ich habe mich dabei an diesem Algorithmus orientiert.

Das Ergebnis sieht nun wie folgt aus:
[youtube]DeQnk-ruI5Q
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 05.07.2015 - 14:37 Uhr  ·  #9
Liebes Tagebuch,

ich habe die KI nun soweit implementiert, dass ich gerne einen Pull-Request starten möchte. Leider ist im Master-Branco des original Repositories ein Bug in der Netzwerkspielanzeige, sodass ich meinen letzten Test der KI im Mehrspielerspiel nicht durchführen kann. Ich habe ein Issue dazu geöffnet:
Deswegen warte ich noch mit dem Pull-Request. Qualität geht vor :-)

Als ich ein Video aufgenommen habe mit dem aktuellen Stand ist mir aufgefallen, dass noch ein paar Dinge im Siedler3 Remake ausbalanciert werden müssen, bevor es so richtig rund läuft.

Die Einzige Karte, wo der Computerspieler überhaupt Waren und Soldaten hat, startet mit mittleren Waren.
In Folge dessen baut die KI früh eine Werkzeugschmiede. Leider produziert die erstmal eine Armee von Hämmern und Schaufeln, bevor die dritte Sense kommt.
Das schwächt die KI enorm, eigentlich würde sie gerne 12 Waffenschmieden bauen, aber erntet keine Nahrung.
Ein Video wäre also eher langweilig.
Wenn du aber unbedingt eins sehen möchtest, würde ich eins hochladen.

Bis dahin der aktuelle Stand in textueller Form.

Features:
  • Es werden folgende Gebäude gebaut:
  • Immer ein Turm im Bau
  • Türme in Richtung: Bäume, Steine, Flüsse, Kohle, Eisenerz, Fisch, Golderz
  • Türme im Hinterland werden zerstört, um Material und Soldaten zurückzugewinnen
  • Soldat läuft zur Turmbaustelle. War bei Erzeugung der Turmbaustelle kein Soldat vorhanden, oder wurde er während der Bauzeit getötet, läuft ein neuer Soldat zum fertig gebauten, unbesetzten Turm
  • Werkzeugschmiede, Eisenschmelze, Kohlebergwerk, Eisenerzbergwerk werden gebaut, sobald ein Werkzeug fehlt.
  • Wohnhäuser werden permanent gebaut, wenn Schwellwert unterschritten. Schwellenwert wächst linear mit Gebäudeanzahl
  • Steinmetze werden abgerissen, wenn außerhalb Reichweite von Steinen
  • Holzfäller, Farmen, Weingute erhalten südlich Platz, wo keine anderen Gebäude gebaut werden.
  • Fischer werden bei Fisch gebaut
  • Holzfäller werden bei Bäumen gebaut
  • Förster bei Holzfällern, aber nicht zu nah an anderen Förstern
  • Minen auf Rohstoffvorkommen
  • Wohnhäuser dort, wo gerade Planierer sind
  • Alle anderen Gebäude haben eine "In der Nähe von Beziehungen“ zu ihren Abhängigen Gebäuden. Bsp. Bäcker wird in der Nähe von Mühlen gebaut
  • Es werden kontinuierlich Lager gebaut, wenn die Goldbarrenanzahl steigt
  • Computerspieler ist an Gameclock angeschlossen. Das heißt, dass die KI beim Vorspulen und im Multiplayergame funktioniert

Noch offen:

  • Weingut nördlich von Hängen bauen
  • Gegner angreifen, wenn genügend Soldaten vorhanden sind
  • Wohnhäuser abreißen, um Baumaterial zurück zu gewinnen
  • Verteidigungs-Waffenschmiede bauen, falls der Gegner rushed
  • Kampftaktik implementieren hinsichtlich: http://tips.siedler3.net/page….kampfkunst
mavmav
Bauarbeiter
Avatar
Geschlecht:
Alter: 26
Beiträge: 46
Dabei seit: 03 / 2013

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 08.07.2015 - 19:44 Uhr  ·  #10
Hi,

Ich hatte schon eine verbesserung für die KI direkt zu maximilius geschrieben. Doch ich habe noch weitere Ideen und Fragen und andere vieleicht auch deswegen poste ich hier rein.
Wie weit kann man und willst du die Ki auf das Spiel vorbereiten.
Ich denke man kann alles berechnen um den perfekten Spieler zu erstellen. (z.B bei Setmap wo man versucht das beste Ergebniss zu Pt-Ende zu erziehlen).
Nur braucht die Ki auch ein Ziel/Endpunkt auf das sie das beste ausarbeitet ? Danach könnte man neue Ziele anheften. Wie läuft das bis jetzt, wie geht die Ki an ihren Aufbau heran ?

Meine Idee man fängt an dem Endpunkt an herunter zu rechnen zb. 20 Waffenschmiede zu der best möglichen Zeit.

-Wie viele Mienen werden benötigt ( optimales Verhältniss einsetzen )
-Wie viel Nahrung braucht man, Fisch und Farmen (optimales Verhätnis von Verbrauch und Produktion)
-Aufwertung auf L3 soldaten (Zeitgleich zur fertigstellung der Schmieden)
-Wie lange sind die Laufwege mit Baumaterial zur Baustelle und von Bauarbeitern und Schauflern.
-Wie viele Bauarbeiter, Siedler, Träger Schaufler brauch ich damit die Baugeschwindlichkeit ansteigt "Werkzeugschmieden" ( wie viele Bauarbeiter passen an ein Gebäude ? wie viele Baustellen gibt es ? Wie lange benötigen Bauarbeiter und Schaufler zur fertigstellung)
-Wie oft braucht man neue Siedler?
-Daraus könnte man dann genaue Zeitangaben ermitteln die aussagen zu welchem Zeitpunkt man wie viele Hölzer und Steine man braucht und wie weit man die Holz-und Steinproduktion ausbauen muss.

zusätzliche Dinge die im Spiel Vorteile erbringen:

- Grüne Bauplätze bevorzugen
- Zum besetzten eine Schmiede oder Werft Bauarbeiter auf 0% einstellen, danach wieder erhöhen.
- Arbeitsgebiete wechseln. Für Holz z.B die Förster, oder Steine die näher liegen. Pflanzgebiete von Wein und Farmen auf freie Flächen legen.
- Wissen wann die ersten Getreidebündel fertig werden und Wein geerntet wird. ( sodass kein Güter liegen bleiben)
- Die Gebäude stopen wenn der Arbeiter am arbeiten ist und die benötigten Waren vor der Tür liegen für die Produktionzeit pro Minute. Die Arbeit für das Gebäude danach und kurz bevor er die nächsten Waren wieder nimmt wieder arbeiten lassen. ( So werden alle gleich Gebäude gleich ausgelastet)
- Vorteilhafte Trägerwege und Abstände von zueinander abhängigen Gebäuden
- Berechnen wie lange der Stein auf der Karte reicht
- Grenzbereiche zu gegnerischen Fronten verstärken, andere Bereiche unbewacht lassen

Jetzt noch ein paar Fragen :)

- Kann die Ki sich auf Maps ohne Bäume ausbauen ( einen frühe Forstwirtschaft planen )
- Die Ki kennt die ganze Karte, aber der Spieler nicht ? ;)
- wurde/wird der Kohlebug behoben ?
- werden die selben Produktionraten/Laufwege/usw. wie vom orginalen Spiel übernommen ?
- kann die Ki keine Pioniere kontrolieren ?
- warum Lager und keine Schiffe oder Esel
- wie werden die Mienen gesetzt. Wenn auf einem Feld vier mit 100 % laufen, aber mit quetschen drei 100% und drei mit 80 %, dann ist Typ 2 vorteilhafter.
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 09.07.2015 - 07:47 Uhr  ·  #11
Hi mavmav,

wow das sind alles sehr gute Fragen. Die werde ich in mehreren Posts beantworten.
Du hattest mich per PN ja auf die roten vs. grünen Bauplätze angesprochen.
Ich habe da schon angefangen mit der Programmierung.
Es gibt ja für die Gebäude jeweilige BestConstructionPositionFinder die Koordinaten ermitteln, wo das Gebäude gebaut werden kann und diese mit einem Score belegen, wie gut diese Koordinate geeignet ist. Ich habe nun hinzugefügt, dass der Score um so mehr negativ beeinflusst wird, desto mehr planiert werden muss.

Dann habe ich die KI mal gegen sich die alte KI, der es egal war, wo sie baut antreten lassen und habe festgestellt, dass die neue KI langsamer geworden ist. (Das heißt, sie hatte nach 30 Minuten weniger Gebäude/Waren/Siedler)
Die Ursache war, dass die Holzfäller ganz am Anfang circa 4 Bäume weiter weg vom Wald gebaut wurden, weil dort flacheres Land war.
Jetzt ist es aber so, dass zwar der Holzfäller dadurch ein kleinwenig früher fertig gebaut ist, aber hat er bei jedem einzelnen Baum einen längeren Weg und produziert dadurch langsamer Holz. Irgendwann hat der Förster zwar vor seiner Tür aufgeforstet, aber der ökonomische Schaden, der bis dahin entstanden ist, machte die komplette KI langsamer.

Deswegen habe ich die Beeinflussung des Planieraufwandes bei Holzfällern, Steinmetzen und Türmen wieder entfernt. Holzis und Steinmetze sollen so nah wie möglich an ihren Rohstoffen gebaut werden. Türme sollen am optimalen Ort gebaut werden, damit das Land sich optimal ausbreiten kann, egal ob ich 10 Sekunden länger planieren muss.

Jetzt ist die verbesserte KI auch tatsächlich schneller als die alte KI, die auch gerne mal auf rot gebaut hat :-)

---------

Dieses Beispiel zeigt, dass Siedler3 zwar wenige verständlich Regeln hat:
- Je kürzer der Weg, desto schneller werden Rohstoffe abgeerntet
- Je mehr Gebäude, desto schneller werden Waren produziert
- Siedlermangel führt zu Warenproduktionsstopp
- Mehr Planieren bedeutet langsamer bauen
- ...

Da aber alle einfachen Regeln in Wechselwirkung zueinander stehen ist Siedler3: Easy to learn. Hard to master!

Weil Siedler3 "Hard to master" ist und ich die KI als Hobby in meiner Freizeit entwickle gehe ich Schritt für Schritt vor und möchte nach jedem Schritt eine einsetzbare KI haben.
Das bedeutet, dass die KI heute wichtigsten Gebäude baut (Baustoffwirtschaft, Nahrungswirtschaft, Waffenwirtschaft, Mana und Gold)
Jeder Soldat wird sofort rekrutiert. Denn: Wenn die KI angegriffen wird, ist ein Level1 Soldat ist besser als gar kein Soldat :-)

Später einmal kann ich das zurückhalten von Waffen, bis Level3 erreicht ist als Optimierung implementieren. Aber bis dahin ist die KI auch so wie sie jetzt ist einsetzbar.

Meine Vision:
Die Ki baut eine sehr gute Wirtschaft auf mit 20 Waffenschmieden oder so. Dabei soll sich die KI aber auch gegen einen Rush verteidigen. Also baut sie sofort eine Verteidigungs-Waffenschmiede, wenn der Gegner seine fertig gestellt hat. Aufgrund der Laufwege und der geringeren Kampfkraft am Anfang reichen dann weniger eigene Soldaten aus, um den Angriff zu verteidigen, aber durch den kleinen Zeitlichen Versatz hat die KI vor der Notfall-Waffenschmiede in ihre Wirtschaft investiert und kann im späteren Spielverlauf den Rusher plätten.

... ok jetzt geh ich mal auf Arbeit. Bis demnächst ;-)
Zwirni
Forumsinventar
Avatar
Geschlecht:
Alter: 42
Beiträge: 4647
Dabei seit: 11 / 2013

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 09.07.2015 - 10:31 Uhr  ·  #12
Ich lese hier schon seit Tagen erstaunt und begeistert mit. Eine KI zu programmieren ist selbst für mich etwas besonderes. Dein Vorgehen und die Umsetzungen empfinde ich als richtig geil :D Also weiter so - ich weiß, dass Programmierer immer mal einen Ansporn brauchen ;)

Btw. eine rein philosophische Fragestellung:
So wie Du die KI in deiner Vision beschreibst könnte sie durchaus ein würdiger Gegner werden, mehr noch als die vom Originalspiel. Ich frage mich jedoch, ob das so gut ist. Könnte die KI nicht für viele Spieler zu stark sein, so dass sie die Lust am Spiel verlieren? Bedenke: auch heute fangen viele Spieler mit der KI lokal an und wechseln erst, wenn sie merken das das langweilig wird, zu onlinespielen. Gäbe es bei deiner Vision nicht die Gefahr, dass man Spieler vergrault? Eine mögliche Lösung könnte sein 3 oder mehr Schwierigskeitsgrade zu integrieren: leicht (baut wenig, auch keine Verteidigungswaffi), mittel (entspricht deiner Vision) und schwer (quasi ein Pieps-/Kingcat-Klon ;) ). Was denkst Du (und die anderen)?
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 11.07.2015 - 15:37 Uhr  ·  #13
@mavmav 2. Teil
Du hast von Zielen für den Computerspieler gesprochen. Ich habe tatsächlich konzeptionell Ziele bei der Programmierung im Kopf:
1) mehr Soldaten als der Gegner produzieren
2) Level3 für Bogenschützen erreichen.
3) Kampfkraft erhöhen

Das erste Ziel ist dabei das wichtigste. Andererseits: wenn der Gegner mich mit 100 Soldaten angreift und ich habe zwar Level3, aber keinen Soldaten, bin ich tot. Oder wenn der Gegner mich mit 100 Soldaten angreift und ich habe zwar 100% kk aber keinen Soldaten, bin ich ebenfalls tot.
Daher strebt die KI nach einer kontinuierlich steigenden Waffenproduktion. Für Waffen benötige ich aber Nahrung, sonst bringen mir auch 18 Kohleminen nichts.

Jedenfalls baut die KI momentan folgendes:
1) 8 Holzfäller, 4 Förster, 3 Sägewerke, 5 Steinmetze
2a) 4 Weingute
3a) 2 Farmen
2b) 4 Tempel
3b) 1 Scheinefarm, 1 Mühle, 3 Bäcker, 1 Fleischer, 2 Wasserwerk
4a) 1 Eisenschmelze, 1 Waffenschmiede, Minen, 1 Kaserne
2c) 1 großen Tempel
4b) 5 Waffenschmieden (+Schmezlen und Minen)
5) Gold
6) ... weiter mit Nahrung / Waffen

Anmerkungen:
- Es wird von einem 0pt Spiel ausgegangen
- Die Werkzeugschmiede wird genau dann gebaut, wenn das Werkzeug ausgeht
zu 1) Warum 8 Holzis: Das sind Erfahrungswerte, mit 6en geht es echt langsam und mit 21 benötigt man zusätzliche Planierer und Bauarbeiter und viel Land, damit man überhaupt so bauen kann. Ist also ein Kompromiss
zu 2) Ich benötige Level3, weil ich vorher nicht rekrutieren möchte. Je länger ich auf auf Level3 warten muss, desto länger bin ich schutzlos Angriffen ausgeliefert. In meiner aktiven Siedler3 Zeit habe ich Messungen durchgeführt (etwas gerundet, zur Veranschaulichung): Ein produzierender Weingut benötigt 60 Minuten, bis er alleine Level3 erreicht hat. Wenn ich die Baustelle eines Weingutes setze, vergehen 10 Minuten, bis er gebaut ist und bis der Wein erntereif ist, ab jetzt erntet der Winzer kontinuierlich abwechselnd mit dem anpflanzen.
In der Minute, wo ich den Winzer setze entscheide ich also, wann ich später Level3 haben werde:
1 Weingut = 10 Min Bau/Wachsphase + 60 Min Produktionszeit = 70 Min
2 Weingute = 10 Min Bau/Wachsphase + 30 Min Produktionszeit = 40 Min
3 Weingute = 10 Min Bau/Wachsphase + 20 Min Produktionszeit = 30 Min
4 Weingute = 10 Min Bau/Wachsphase + 15 Min Produktionszeit = 25 Min
5 Weingute = 10 Min Bau/Wachsphase + 12 Min Produktionszeit = 22 Min

Habe ich in der 15. Spielminute alle Holzes fertig und platziere 4 Winzer, habe ich in der 40 Minute Level3. Das reichte für die meisten 0pt Spiele aus.
Bau ich stattdessen 5 Winzer, bin ich nur 3 Minuten schneller ... das ist meistens nicht so entscheidend gewesen, da investierte ich lieber das Baumaterial in schneller und damit später mehr Waffen.

Du hattest vorgeschlagen, von einem Zielpunkt aus zurückzurechnen.
Ich gehe bisher andersherum ran, indem ich mich am Schachspielcomputer orientiere:
Bei einem Schachspiel gibt es n mögliche Spielzüge. Auf die n möglichen Spielzüge folgen m Gegnerische Reaktionen, darauf wieder o mögliche eigene Spielzüge etc.
Wenn ein Schachcomputer das alles berechnet, muss er n * m * o * ... rechnen, was eine Laufzeitkomplexität von O(n hoch n) ist. In meinem weiter oben gerosteten Tagebucheintrag habe ich dargestellt, dass das schnell nicht mehr weitergerechnet werden kann, weil es 1 Million Jahre dauern würde, bis der Computer seine Entscheidung getroffen hat.
Beim Schach bewertet der Computer also die Spielsituation und setzt Zuge, die die Situation am meisten verbessern. Er rechnet aber nicht das Spiel zu Ende.
Bei der KI für das Siedler3 Remake gehe ich genauso vor. Ich versuche die Spielsituation für den Computerspieler zu verbessern. Daher entschied ich mich, direkt nach den 8 Holzfällern die 4 Winzer zu bauen. Die kleinen Tempel müssen nicht sofort folgen, dazwischen können die Farmen errichtet werden, damit die auch schonmal das Getreide wachsen lassen können.

Der große Tempel folgt sofort auf die Kaserne. Wie oben geschrieben: Soldaten sind wichtiger als Level3, aber der große Tempel nach der Kaserne liefert uns fast auf einen Schlag Level2. In Verbindung mit der angelaufenen Weinproduktion kann mal also sofort Level2 Verteidigungslanzen produzieren.

Das Gold kommt dann erst ziemlich spät. Wichtig ist die Verteidigung und die Waffenproduktion, Die Kampfkraft bekommt jeder Soldat auch später noch dazu.

Deinen Hinweis, die Arbeitsgebiete regelmäßig zu wechseln habe ich auf meine ToDo Liste gesetzt.

Die Trägerlaufwege habe ich insofern berücksichtigt, dass es für viele Gebäude eine "In-der-Nähe-von" Platzierungsstrategie gibt. Daher wird der Bäcker in der Nähe der Mühlen gebaut. Das ist vielleicht noch weiter verfeinerbar, dass ich den Bäcker nicht nur neben der Mühle, sondern auch in Richtung der Kohlebergwerke baue.

Bezüglich der Verstärkung der Grenzgebiete habe ich schon implementiert, dass Türme im Hinterland abgerissen werden. Es bleiben nur Türme stehen, die eine Außengrenze beschützen. Das ist mein erster Schritt in die Richtung Baumaterialrückgewinnung und Soldatenrückgewinnung gewesen. Hier ist noch mehr optimierter.

Deine Fragen:
- Ja, die KI kann auch ohne Bäume sich weiterentwickeln, weil sie Förster baut.
- Ja, die KI kennt die ganze Karte. Bei den Set-Maps kennt auch jeder Spieler die Karte ;-) Ich denke, dass dieser Cheat der KI hilft, für den menschlichen Spieler überhaupt ein würdiger Gegner zu sein, aber falls sich herausstellen sollte, dass die KI total krass ist (wovon ich heute nicht ausgehe), kann auch implementiert werden, dass die KI erst Rohstoffe und Landschaften kennt, wenn sie Soldaten hingeschickt hat.
- Die Produktionsraten und auch die Baukosten scheinen sich derzeit vom Originalspiel zu unterschieden. Das ist aber nur ein Bauchgefühl, ich habe noch nicht genau nachgeschaut. Ob das noch angeglichen wird, weiß ich nicht.
- Der Kohlbug ist sicher behoben :-)
- Grundsätzlich kann die KI Pioniere kontrollieren. Vielleicht hast du ja ein Konzept im Kopf, wie man das programmatisch realisieren kann?
- Derzeit setze ich Warenhäuser als Goldlager ein, weil das einfacher zu programmieren war. (1. Schritt) Dabei habe ich festgestellt, dass das Remake noch gar keine Waren einlagert (Ist noch nicht programmiert) Daher warte ich mit dem Optimieren noch ein bisschen.
- Die Minen setze ich derzeit dort, wo am meisten Rohstoffvorkommen ist, ich achte noch nicht darauf, die maximale Auslastung zu erreichen. Das ist auch ein Optimierungsschritt, den ich mir auf die TODO Liste gesetzt habe.
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 11.07.2015 - 17:21 Uhr  ·  #14
Hi Zwirni,
danke für die schönen Worte ... und den Ansporn ;-)

Die KI soll definitiv besser werden als die des Originalspiels. Ich habe es tatsächlich angemacht, dass es verschiedene KIs geben kann.
Von Age of Empries 2 habe ich mich inspirieren lassen. Dort ist es so, dass jeder eine KI scripten kann, basierend auf Regeln:
Code
(defrule
   (total-building-count barracks < 1)
   (can-build barracks)
   =>
   (build barracks)
)

Meine Idee war, dass die High-Level-KI, die entscheide, was zu tun ist, aus Dateien ausgelesen werden kann.
So können auf der einen Seite Kartenersteller eine KI passend zur Karte Skripten. Andererseits kann man bei jedem Spiel eine beliebig gesprintete KI auswählen.
Bei Siedler2 war das auch der Fall. Hat man "Octavius" oder "Julius Caesar" ausgewählt, hatte man zwei verschiedene Computerspieler. "Julius Caesar" war stark auf Militär und Angriff ausgelegt, Octavius mehr auf Wirtschaft.

Ich hatte dann auch begonnen, solche einfachen Regeln wie "Wenn Holzfälleranzahl < 5 Dann baue Holzfäller" zu definieren. Leider ist mir dann bewusst geworden, dass Siedler weit aus komplexer ist, als Age of Empires, wenn man bei AoE2 angegriffen wird, gibt es zwei Dinge zu tun: 1. Kaserne bauen, 2. Soldaten rekrutieren. Dann kann man einen Angriff abwehren.
Wenn man bei Siedler3 angegriffen wird, gibt es mehr Dinge zu tun: 1. Farm bauen, 2. Wasserwerk bauen, 3. Mühle bauen, 4. Bäcker bauen, 5. Eisenerzmine bauen, 6. Kohlemine bauen, 7. Eisenschmelze bauen, 8. Waffenschmiede bauen, 9. Kaserne bauen, 10. Wohnhaus bauen, dann kann man Soldaten rekrutieren und sich verteidigen ... naja vielleicht ist man jetzt auch schon tot :-)

Jedenfalls habe ich das Skripten erstmal auf Eis gelegt und mit komplexerem Regelwerk die High-Level-KI konstruiert, um Siedler3 und KI kennen zu lernen.

Wenn die KI tickt und es viel Andrang und Interesse beim Thema Computerspieler gibt (z.B. KI Turniere, wo heute Ihre KI einreichen können und gegeneinander antreten lassen), kann ich mir das ganze noch mal anschauen und überlegen, ob man irgendetwas aus dem Code rausabstrahieren kann, was Skriptbar wäre. (z.B. die Gebäudereihenfolge wäre so ein Fall)

Jedenfalls ist es im Code so umgesetzt, dass auch beim Siedler3 Remake eine Auswahl verschiedener KIs "Einfach, Mittel, Schwer, Pusher, Kingcat" möglich wäre.

Vielleicht äußert sich Kingcat ja noch und liest meine konzeptionellen Denkmodelle (nach denen ich 10 Jahre lang Siedler3 spielte) und schreibt: "Ey Stephan das ist ja völliger Quatsch, probier es mal so ..."

Ich kann mich noch erinnern an früher, wo ich mit Erasor zusammen auf dem Schulhof stand und ihm meine neueste Taktik erklärt habe, wir danach gemeinsam gezockt haben und er mal eben besser war als ich. Frustriert fragte ich ihn dann: Ey hier der Fischer, warum hast du den denn gebaut, der ist doch gar nicht in der Taktik enthalten. Seine Antwort war: Ach das hat sich da gut angefühlt :-)

Also Kingcat: Wie gehst du beim Siedeln vor, welche gedanklichen Konstrukte hast du im Kopf?
Wann baust du eine Farm? Gehört da immer eine Mühle dazu? Wann kommen die Schweine? Muss es immer Fleisch für die Eisenminen sein oder ist Brot am Anfang besser, weil man sich das Baumaterial für die Schweinszucht spart?

Zurück zur einfachen KI: Ich habe überlegt, so etwas einzubauen wie:
Einfach: Ich greife den menschlichen Spieler immer mit weniger Soldaten an, als er selbst hat.
Mittel: Ich greife den menschlichen Spieler erst an, wenn er mich einmal angegriffen hat, dann aber mit allem, was ich habe.
Schwer: Ich rushe den menschlichen Spieler weg, bevor er seinen ersten Holzfäller fertig hat :-)

Was haltet ihr davon?

VG Stephan
Braveheart
Geologe
Avatar
Geschlecht: keine Angabe
Alter: 49
Beiträge: 91
Dabei seit: 04 / 2013

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 12.07.2015 - 14:25 Uhr  ·  #15
*gelöscht da andere Meinungen scheinbar nicht gewollt sind.
adrianer
Bastler ohne Hand
Avatar
Geschlecht:
Herkunft: Bern
Alter: 40
Homepage: adrianer.org
Beiträge: 3134
Dabei seit: 06 / 2009

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 12.07.2015 - 14:29 Uhr  ·  #16
Zitat geschrieben von Braveheart

(...)die Spieler immer weniger werden und es kaum noch neue Spieler gibt, weil einfach der technische Aufwand (VPN, Lobby, Betriebsystem) immer größer wird.

Meine Meinung dazu ist: Die Ära Siedler3 war sehr schön und langliebig, aber selbst diese wird in absehbarer Zeit zuende gehen.


Ich glaube, Du hast gar nicht verstanden, um was es hier geht...
Zwirni
Forumsinventar
Avatar
Geschlecht:
Alter: 42
Beiträge: 4647
Dabei seit: 11 / 2013

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 12.07.2015 - 14:30 Uhr  ·  #17
Du vergisst eines denke ich: hier geht es um ein Remake. Und das heißt es wird nicht einfach nur neu geschrieben und von den bekannten Bugs "befreit" sondern auch zeitgemäß angepasst, solange es den Spielfluss nicht stört. Mit der alobby, VPN und älteren Betriebssystemen hat das (derzeit) gar nichts zu tun. Das Remake wird voraussichtlich auch unter mehr Betriebssystemen besser funktionieren als das Original und daher unproblematisch sein. Und btw. ist das was Maximilius macht "nur" ein kleiner Teil des Ganzen, wenn auch wichtig für Nutzer die einfach mal zocken wollen ;)
Rafiki
Träger
Avatar
Geschlecht:
Herkunft: Hamburg
Alter: 32
Beiträge: 18
Dabei seit: 03 / 2014

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 14.07.2015 - 22:31 Uhr  ·  #18
KI's aus alten Spielen sind bekannt dafür zu cheaten - Wäre entspannt wenn du die KI darauf programmierst entscheidungen nach der Bauweise des Gegners zu treffen, mithilfe von Spionen. :D
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 15.07.2015 - 09:16 Uhr  ·  #19
Also grundsätzlich wären Entscheidungen treffen aufgrund dessen, was die KI sieht möglich.
Es kann für jede Kartenkoordinate abgefragt werden, ob ein bestimmter Spieler diese sieht oder nicht. So könnten die Gebäudestatistiken entsprechend gefiltert werden, dass die KI nur jene Informationen bekommt, die sie sehen kann.

Natürlich würde die KI dann nicht nur auf Spione zurückgreifen, sondern auch einen Schwerti Scout losschicken ;-)

... das wär schon ne coole KI, von der unerfahrene Spieler noch was lernen können :P
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: Tagebuch: Siedler3 Remake bekommt einen Computerspieler

 · 
Gepostet: 19.09.2015 - 17:39 Uhr  ·  #20
Liebes Tagebuch,

ich habe den programmierten Computerspieler für das Siedler3 Remake als Pullrequest eingereicht und den Entwicklern vom Remake hat der Code so gut gefallen, dass sie mich in Ihr Team aufgenommen haben.

Nach einem guten dutzend kleinen Änderungen im Quelltest des Computerspielers steht er kurz davor, in den master-branch (das ist Hauptquellcode des Siedler3 Remakes) gemerged zu werden.

Heute gab es vom Remake ein neues Release, welches sich die ganze Welt herunterladen kann: https://github.com/jsettlers/settlers-remake/releases
Der Computerspieler ist noch nicht dabei, aber er wird es ins nächste Release schaffen.

Da Programmierer nachts im Schlaf weiterprogrammieren, wache ich ständig mit neuen Ideen auf, sodass ich begonnen habe, ein Kampfsystem für den Computerspieler zu programmieren. Bisher baut er ja nur Gebäude.

Zusätzlich zu dem Konzept der Highlevel (Was zu tun ist) und Lowlewel (Wo es zu tun ist) KI, habe ich mich entschieden, Wirtschaft und Kriegsführung zu trennen.
Du kannst dir das so vorstellen, als wenn die Gefolgsleute des Computerspielers von zwei Ministern kommandiert werden:
Der Wirtschaftsminister kümmert sich darum, das die richtigen Gebäude gebaut werden und die Wirtschaft boomt.
Der Militärminister (General) kümmert sich darum, wann Soldaten rekrutiert, welche Soldaten rekrutiert werden und wohin die Soldaten marschieren.

So besteht später die Möglichkeit, aus verschieden starken Wirtschaftsministern und Generälen verschieden starke Computergegner zu erzeugen.
Stell dir vor, es gibt einen schwächeren und einen stärkeren Wirtschaftsminister. (Der schwächere baut zum Beispiel weniger Holzfäller und Farmen als der stärkere.)
Stell dir weiter vor, es gibt einen schwachen und einen starken General (Der schwächere lässt Schwertkämpfer in Bogenschützen reinlaufen, der stärkere produziert erst gar keine Schwertis)
Dann wär es möglich, vier Kombinationen herzustellen:
schwacher Wirtschaftsminister + schwacher General = Sehr einfacher Computerspieler
schwacher Wirtschaftsminister + starker General = Einfacher Computerspieler
starker Wirtschaftsminister + schwacher General = Schwerer Computerspieler
starker Wirtschaftsminister + starker General = Sehr starker Computerspieler

Soweit zur Idee, jetzt zum Konkreten:
Ich habe den schwachen General programmiert. Ich nenne ihn den LooserGeneral.
Der LooserGeneral prüft regelmäßig, ob ein gegnerischer Soldaten in sein Land eingedrungen ist und falls ja, befiehlt er ALLEN Soldaten, genau dorthin zu gehen, um sich zu verteidigen.
Befindet er sich nicht in einem Verteidigungsfall, zählt der LooserGeneral die Anzahl der eigenen Truppen und die der Gegner (Ja, momentan auch, wenn er sie gar nicht sehen kann ... der cheater :P)
Hat der LooserGeneral mindestens 20 Soldaten und mehr als seine Gegner, sucht er sich den davon den Gegner aus, der am meisten Soldaten hat.
Jetzt greift der LooserGeneral mit genau so vielen Soldaten seinen Gegner an, wie dem Gegner selbst zur Verfügung stehen.
Durch die KK wird der LooserGeneral dann nie gewinnen. Daher sein Name.
Der Gegner bekommt aber etwas zu tun. Handelt es sich um einen menschlichen Gegner, wird er nicht demotiviert, weil er geplättet wird, aber es wird ihm auch nicht langweilig, weil er sich schließlich verteidigen muss.
Gut also für einen einfachen Computergegner :-)

VG Stephan
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.

Cookie-Einwilligung

Diese Seite verwendet Cookies sowie Tracking-Technologien, um Dir die bestmögliche Funktionalität bieten zu können und um unsere Website stets zu verbessern.

Mit der Auswahl "Zustimmen" erlaubst Du dieser Webseite die Verwendung dieser Cookies und Technologien. Diese Webseite kann diese Daten an Dritte – etwa Social Media-Werbepartner wie Facebook und twitter – zu Marketingzwecken weitergeben. Weitere Informationen findest Du in der Datenschutzerklärung.

Cookie-Einstellungen verwalten

Bitte wähle und akzeptiere Deine Cookie-Einstellungen:

Weitere Informationen zu den verwendeten Daten kannst Du der Datenschutzerklärung entnehmen.