Tag Archives: !∃2.0

Update KI: erste Lernerfolge :)

So, heute mal wieder ein wenig Zeit mit meiner KI verbracht, habe Auswirkungen eingepflegt und ein paar “komplexere” Handlungsoptionen. Das und ein paar Stunden Bugfixing später führt der NSC nicht mehr nur wild Aktionen durch, sondern lernt, dass Brot und Fleisch sehr stark sein Bedürfnis 1 (= Hunger) befriedigen, aber auch dass Aktionen wie “zum Marktplatz laufen” und “ein Brot kaufen” in geringerem, aber doch merkbarem Maße zur Befriedigung seines Bedürfnisses 1 beitragen. Also wenn er ein Brot (oder Fleisch) besitzt und Hunger hat, wird er dies essen, wenn nicht, wird er versuchen, Brot oder Fleisch zu erstehen. Morgen schaue ich mal an, wie gut (und damit unter Anderem wie stabil) sich das Ganze auf längere Sicht verhält und ob er darauf kommt, dass er anheuern muss, um wieder neues Geld zu bekommen und so weiter.. Zusätzlich werde ich morgen auch schauen, dass ich Bedürfnisse wieder auffrische, also er über die Zeit wieder hungrig wird und so.. Aber für heute bin ich zufrieden :)

Posted in Code-O-Matic. Tagged with , .

Die SOM wird nun angepasst..

Soo, nach langer Zeit mal wieder an die KI gesetzt und ich kann nun einen NSC mit leichtem Hunger, Durst und ein paar anderen offenen Bedürfnissen in meine simulierte Umwelt setzen und zu folgender Erkenntnis kommen lassen: Das bringt doch alles nichts. Stimmt ;) Die Tage dann mal möglichst viele Auswirkungen in die DB einpflegen :) Das hat Spaß gemacht :)

Posted in Code-O-Matic. Tagged with , .

Das Umfeld wird simuliert

So.. und hier ein weiteres kurzes Update zum Stand der KI :) Was bereits funktioniert: Die Gewichtung der Motivationsklassen für den NSC wird ermittelt, die Bedürfnisse des NSCs werden ermitteln und der NSC entscheidet sich für die laut aktuellem Stand der SOM optimale Handlungsoption. Eigentlich würde in diesem Moment ja diese Handlungsoption an die Situationsebene weitergegeben, die dann einzelne Elementaroptionen zur Ausführung aussuchen würde. Da sowohl die Situationsebene als auch das Umfeld des NSCs nicht zur Verfügung stehen, wird dieser Teil simuliert. Jede Handlungsoption hat spezifische Wahrscheinlichkeiten für Events (sowohl für sofort eintreffende als auch für zeitversetzte), die dann von der Simulationsumgebung eingeplant und zum eingetragenen Zeitpunkt ausgeführt werden. Was noch fehlt: Die Auswirkungen von Events auf die Bedürfnisse des NSCs, die Änderung der Gewichtung der Motivationsklassen des NSCs, die Zuordnung der auf den NSC einprasselnden Events zu Handlungsoptionen und damit verbunden die entsprechende Änderung der SOM. Das nächste (ansonsten endlich mal wieder unbeplante) Wochenende kann kommen! :D

Posted in Code-O-Matic. Tagged with , .

erste Customizing Einträge für die KI

die 5 Motivationsklassen

die 5 Motivationsklassen

So.. noch einmal ein kurzes Update über den aktuellen Stand der KI :) Grundgerüst der beiden oberen Ebenen der KI in C++ steht soweit, vorgestern habe ich nun erste Daten eingetragen um die Tage erste Tests starten zu können :) Also nicht, dass es schon fast fertig klingt: erste Tests sind erst einmal technische Tests. Danach muss erst einmal eine Simulation für die Situationsebene und für das Umfeld (und die Effekte der Entscheidungen) und dann folgen erst erste Tests, ob dieser erste Prototyp tut, was ich mir erhoffe :) Naja, eingetragen sind nun die fünf Motivationsklassen (Bild links), 13 Bedürfnisse aus diesen Motivationsklassen (Bild unten) und 27 Handlungsoptionen.

erste Bedürfnisse

erste Bedürfnisse

Posted in Code-O-Matic. Tagged with , .

Update: Entwicklungsstand KI Prototyp

Grobkonzept KI

Grobkonzept KI

Soo.. mal ein kurzes Update zum Stand der Dinge für den zweiten Science-O-Matic Prototypen: die oberen beiden Ebenen der KI :) Ein grobes Konzept mit beteiligten Parteien, Ablauf und Datenhaltung steht, rechts im Bild einmal verknappt dargestellt. UML Diagramm mit den Klassen und die Klassenrümpfe im Coding stehen. Die Datenbank hierzu ist auch schon aufgestellt, alle Tabellen angelegt, momentan bin ich gerade dabei, den DBHandler (siehe Ordnung schaffen: eine Datenbank Handlerklasse) für die neue Datenbank, die neuen Tabellen und vor allem die neuen, zu puffernden Daten anzupassen und hoffe, die Tage mit dem Programmieren der eigentlichen Logik beginnen zu können :)

Posted in Code-O-Matic. Tagged with , .

Mode: spanische Mode

Anna von Österreich (1571)

Anna von Österreich (1571)

Mitte des 16. Jahrhunderts verbreitete sich der strenge, fromme spanische Stil in ganz Europa. Korsetts, Halskrausen und Reifröcke wurden eingeführt, die Kleider enger, die Farben dunkler. Auffallend sind die betonten Schultern und die überlangen Ärmel des Oberkleides. Die Strenge der Kleidung an sich wurde wett gemacht durch Perlen, Edelsteine und goldene Manschetten, aber auch durch viel Schmuck wie Ketten, Ringe und Diademe. Rechts zu sehen ein Gemälde von Anna von Österreich von 1572, in einem Outfit in Schnitt und Farbwahl, aber auch in den Accessoires (Perlen, Ringe, Spitzentaschentuch) typisch für diese Zeit ist. Obwohl diese Modeepoche einige schöne Stilelemente wie die extravaganten Ärmel bereitstellen, freut mich doch die Auflockerung (und damit das Ende der Modeepoche spanische Mode) nach der Jahrhundertwende.

Posted in Inspiration-O-Matic. Tagged with , .

kurze Notiz: neues Thema :)

So.. die Suche nach einem neuen Thema ist vorbei, ich habe mich entschieden: die obersten beiden Ebenen der KI sollen es sein :) Noch sind wir / bin ich in der Brainstormingphase.. Ich melde mich, wenn es was zum melden gibt :)

Posted in News-O-Matic. Tagged with , .

Wirtschaft und Handel

Ein weiteres mögliches Thema wäre die Entwicklung eines Wirtschaftssystems inklusive Handelssystem, Monitoring und Steuerungsmöglichkeiten. Es soll in unserem Spiel einen geschlossenen Geldkreislauf geben. Geschlossener Geldkreislauf, also geschlossene Volkswirtschaft heißt in unserem Falle auch, dass alle Teilnehmer in Wirtschaftssystem (Spieler und NPCs) einen festen Geldbetrag haben und damit agieren. Während über das Verhalten der Spieler nur Annahmen getroffen werden können und wir dieses Verhalten auch nur indirekt steuern können, sollten sich die teilnehmenden NPCs nach Regeln verhalten, die der Stabilität des Systems zuträglich sind. Als Ziele lassen sich also festhalten:

  1.   langfristig stabiles Preisniveau
    1. gleichbleibende Anfangsbedingungen für neue Spieler
    2. kein “Explodieren” der Geldmenge
    3. keine übermäßige Differenz zwischen armen und reichen Spielern
  2. geringe Konjunkturschwankungen

Die uns zur Verfügung stehenden Steuerungsmöglichkeiten sind:

  • Events zur Erhöhung / Senkung der Geldmenge
  • Verhalten der teilnehmenden NPCs

Continue reading

Posted in Theory-O-Matic. Tagged with .

nun auch mit Ton: der erste Blogartikel ist vertont :)

Yay :) Gestern haben wir den ersten Blogartikel auch zum Anhören (und Anschauen) veröffentlicht :) 30 Minuten Erklärungen meinerseits zum Artikel Verhalten der NSCs sind bei YouTube hochgeladen :) Freu mich über Klicks und Feedback :)

Posted in News-O-Matic, Theory-O-Matic. Tagged with , .

Den (eigenen?) Weg finden

In diesem Artikel möchte ich einen Gedanken zur Wegfindung von NSCs mit euch teilen. Wie kann ein NSC einen Weg finden, ohne dass ein offizieller Pfad existiert? Und ohne dass – noch viel schlimmer – geskriptete Wege hinterlegt werden? Aber gleichzeitig auch ohne dass der NSC allwissend ist, die Wege besser findet als der Spieler und ohne dass er, alles bisher gewesene ignorierend, außerhalb von Städten und offiziellen Wegen rein nach Himmelsrichtungen läuft? Nun habe ich schon mehrfach das Wort offizieller Weg / Pfad genutzt, was ist eigentlich ein Weg?

“Wege entstehen dadurch, dass man sie geht.” (Franz Kafka)

Dieses schöne Zitat von Kafka war sicherlich im übertragenen Sinn gemeint, stimmt aber auch in seiner wörtlichen Bedeutung.

Continue reading

Posted in Theory-O-Matic. Tagged with , , .

Verhalten der NSCs

Ein weiteres mögliches und sehr ergiebiges neues Thema wäre die KI der NSCs. Welche Anforderungen und welche Wünsche werden an eine KI in einem Computerspiel gestellt? Ich weiß vor allem, was ich nicht möchte. Ich möchte keine “dummen Bots”. Ich möchte keine feindlichen NSCs, die nach der Uhr ihre Attacken ausführen, ich möchte keine zivilen NSCs, die zu jeder vollen Stunde ihren üblichen Weg laufen und dabei jedes Mal dieselbe Unterhaltung führen. Mehr noch: Frei nach dem Motto “Lernen ist wie Rudern gegen den Strom. Sobald man aufhört, treibt man zurück” (Benjamin Britten) ist jede KI, die sich dem Verhalten der Spieler nicht anpasst, die nicht dauerhaft von ihrer Umwelt lernt, unbefriedigend. Ich würde also erwarten, dass sich die NSCs dem Umfeld und damit auch meinen Aktionen anpassen. Das Ziel einer KI für feindliche, vor allem aber für verbündete NSCs in einem Spiel, in dem viel Zeit auch außerhalb von Kämpfen verbracht wird, sollte auch die Erhaltung und Erzeugung von Ambiente und Konsistenz beinhalten. Die NSCs sollten Aktionen nicht ausführen, weil wir das so geskriptet haben, sondern weil sie einen Grund dafür haben. Sie sollten kein Brot kaufen, weil ein Skript ihnen sagt, dass sie jeden Tag ein Brot kaufen, sondern weil sie Hunger haben und ein Brot kaufen dann eine gute Idee ist. Wenn die gesellschaftlichen Gepflogenheiten sich durch die Spieler ändern, dann sollten sie es erkennen. Wenn sich Treffpunkte heraus gebildet haben, an denen sich die Spieler vermehrt aufhalten, dann sollten die NSCs sich daran anpassen und zum Beispiel beginnen, dort Ware zu verkaufen oder nach Arbeit zu suchen. Und das alles, ohne! für jede Situation ein eigenes Skript zu schreiben. Leider bestehen die meisten KI Systeme, wie sie in Lehrbüchern stehen, nur aus immer komplexeren Skripten, die immer mehr Daten mit einrechnen. Die KI, wie ich sie mir vorstelle, ist in drei Ebenen unterteilt:

  • Ebenen der KI

    Ebenen der angedachten künstlichen Intelligenz

    Motivationsebene: Mit Hilfe einer Motivationspyramide wird bestimmt, welche Bedürfnisse den NSC motivieren, also welche Ziele angegangen werden. Je nach Archetyp des NSCs kann die Motivationspyramide entsprechend angepasst sein, bzw. die sich dahinter verbergenden konkreteren Ziele können variieren (Anerkennung kann sowohl in handwerklichem Können, in Reichtum oder auch im Krieg gesucht werden). Diese Ziele schränken die Optionen, die der nächsten Ebene gewählt werden können, stark ein. Beispiel für eine in dieser Ebene getroffene Entscheidung: Die Bedürfnisse der Art “Grundbedürfnisse” sind erfüllt, Ziele mit Zweck Bedürfniserfüllung “Sicherheit” werden nun auch verfolgt.

  • Optionsebene: Welche Handlungsoptionen stehen zur Verfügung, wie werden sie bewertet, welche werden ausgeführt? Beispiel für eine in dieser Ebene getroffene Entscheidung: Aus der Motivationsebene kamen hohe Bewertungen für die Bedürfnisse “Grundbedürfnisse” und “Sicherheit”. Es stehen also Optionen wie “Essen / Trinken bei Gastwirt y oder Bauer z besorgen” aber auch “ein Schloss bei Schmied y kaufen und einbauen” oder “eine Waffe bei Schmied x kaufen” zur Verfügung, nicht aber Optionen der Selbstverwirklichung wie “ein Bild malen”. Diese Optionen werden gewertet und eine Entscheidung für eine oder mehrere Optionen werden getroffen.
  • Situationsebene:Die Optionsebene hat eine auszuführende Handlung bestimmt. Die Situationsebene ist die konkreteste Ebene, hier geht es um Fragen wie: Wie verhalte ich mich, wenn ein “befreundeter” NSC oder Spieler vorbeiläuft, wie führe ich die eigentlich Aktion (“Waffe kaufen”) durch, wie biege ich an Kreuzung b ab, wenn mein eigentlicher Weg versperrt ist, wie reagiere ich, wenn mich jemand angreift? Beispiel für eine Entscheidung dieser Ebene: “Gib dem Schmied x Geld für die Waffe”, aber auch Reaktionen auf einen Angriff wie “die Flucht ergreifen” oder “zur Wehr setzen” und damit verbunden das Kampfverhalten (welche Schläge führe ich aus..).

Continue reading

Posted in Theory-O-Matic. Tagged with , , .

Simulation der Fauna

Soo.. Immer noch auf der Suche nach einem Nachfolgethema für mich.. Vielleicht mal das naheliegendste Thema als Vorschlag überdenken: die Simulation der Flora, beziehungsweise von Teilen der Flora haben wir nun, der Kleinbewuchs und die Fauna warten noch auf ihre Berechnung. Das wäre natürlich das kanonische Nachfolgethema. Welche Unterschiede müssen in der Simulation beachtet werden? Bisher wurden immobile Individuen berechnet. Beide Punkte sind für die Simulation von Kleinbewuchs und Fauna nicht praktikabel:

  • Berechnung auf Ebene von Individuen ist bei Kleinbewuchs bei Weitem zu rechenaufwendig (Gräser sind wohl besser auf Populationsebene als auf Individualebene zu betrachten), bei Fauna ist das Problem sogar noch größer: bei generativer Vermehrung und Berechnung von Individuen müsste man auch Paarungsverhalten, Laufwege und Geschlecht von Tieren beachten – uncool.
  • Tiere sind – abhängig von ihrer Größe – auch mobil. Bei schlechten Umweltbedingungen sterben sie nicht notwendigerweise, sondern würden zunächst eine Auswanderung in benachbarte Regionen versuchen.

Also, was tun? Erste Gedanken dazu:

  • Die Bevölkerungsdichte wird pro Art, pro Gebiet bestimmt, die Größe des Gebiets ist abhängig von der Art und entspricht dem durchschnittlichen Mobilitätsgebiet der Tiere. Bei Blattläuses reden wir wahrscheinlich von einer Gebietsgröße von wenigen Quadratmetern, bei Löwen sind Territoriumsgrößen (und damit Gebietsgrößen) von bis zu 400 Quadratkilometern möglich.
  • Auch für die Berechnung von Kleinbewuchs und Fauna werden Umweltfaktoren mit einbezogen – natürlich andere als bei Pflanzen. Wesentlich mehr Augenmerk muss aber auf die Interdependanzen zwischen Arten gelegt werden (Beispiel Prädatoren).
  • Vor allem bei langlebigen Tieren könnte eine Unterscheidung in Generationen notwendig sein. Verbunden damit könnte ein größeres Augenmerk auf die Einbeziehung der altersbedingten Sterblichkeit sein.
  • Bei schlechten Bedingungen gibt es keine (unbegrenzte) Biomasseabnahme ohne den Tod des Individuums, dafür ist je nach Art eine Auswanderung in angrenzende Gebiete möglich.
  • Man stellt sich vor, dass die Volterra Regeln zumindestens in abgeschlossenen, kleinen Systemen beobachtbar sein sollten.. Scheint aber eine toughe Aufgabe..

Insgesamt ein interessantes Thema, das sich vom Realkontext her an das bisherige Thema angliedert. In der technischen Umsetzung lassen sich aber kaum Parallelen erkennen, dementsprechend wird sich auch kaum etwas vom Prototypen zur Simulation der Flora wiederverwenden lassen.

Posted in Inspiration-O-Matic. Tagged with , .

“…und zwei herstellungsberufe auf cap”

Soo, nachdem die Generierung der Flora weitestgehend funktioniert, ist es an der Zeit, sich ein neues Thema zu suchen. Voll toll :) Natürlich wird an der Generierung der Flora weiter geschraubt, es werden neue Pflanzenarten gebaut, Fehler gesucht und Fehler behoben. Aber es ist auch Zeit für etwas Neues. Ich hätte da auch schon die eine oder andere Sache, die mich total interessieren würde.. Einige davon will ich euch kurz vorstellen, bevor ich mich hier entscheide :) Eine Sache, die mir sehr am Herzen liegt ist das ermöglichen von nicht kampforientierten Charakteren. Diese müssen dann natürlich andere, ebenfalls erfüllende Entertainmentquellen haben. Und eine davon, die kanonische in Computerspielen, ist das Handwerks.

item_craftingHinweisend auf die stiefmütterliche Missachtung der Handwerksberufe in MMORPGs spreche ich wohl auch keinen unbekannten Missstand an. Handwerk ist fast immer etwas, was nebenbei läuft, eine Sache für ungeliebte Twinks und in den meisten Fällen eine recht monotone Angelegenheit. Die Möglichkeit selber Sachen herstellen zu können verliert an Reiz, wenn man dabei quasi keine eigenen Entscheidungen treffen darf, wenn das Handwerk daraus besteht, aus x möglichen Gegenständen zu wählen und diesen durch einen einfachen Mausklick herzustellen. Die bisherigen Versuche der “Großen” schienen immer eher halbherzig.. Und doch bin ich mir sicher, dass viele Spieler einen reinen Handwerkercharakter zu schätzen wüssten.

Dazu muss ein solcher Handwerkercharakter aber ebenso erfüllend sein wie ein Magier oder Krieger es auch ist. Und zwar sowohl zeitlich als auch spielerisch. Der Charakter ingame sollte Vollzeit damit beschäftigt sein, ein guter Handwerker zu sein. Ein reiner Handwerker sein macht keinen Spaß, wenn andere Charaktere ebenso gute Handwerker sind und ganz nebenbei auch noch Hohemagier des Ordens der Blabla. Klar, man kann ein guter Krieger und ein passabler Schmied sein, dessen Skill zum groben Flicken der eigenen Rüstung auf Wanderschaft reicht. Aber es sollte nicht alles gleichzeitig gehen. Die Mischung, die der Spieler antrebt sollte durch die Zeit des Charakters begrenzt sein, nicht einfach fest als Auswahl vorgegeben (kein Wählen einer Klasse oder eines Berufes). Und der Handwerkercharakter muss spielerisch erfüllend sein. Was erfüllt einen im wahren Leben an handwerklichen Tätigkeiten? Nicht von der Stange kaufen zu müssen, Gegenstände in Aussehen und Funktion frei gestalten zu können, sie auf Anforderungen anpassen zu können. Und der Stolz, ein vielleicht schwieriges Handwerksstück vollendet zu haben, der Stolz auf das fertige Produkt. In einem Spiel würde ich jedem Handwerksberuf eine eigene Spielweise mit eigener Schönheit zusprechen. So glänzen Schneiderei und Feinschmied vielleicht durch umfassende Freiheiten im Design der Optik, Waffen- und Rüstungsschmiede über handwerkliches Geschick und die Möglichkeit, ihre Handwerksstücke an verschiedene Kämpfertypen, an Kampfsituationen und andere Anforderungen anzupassen und Alchemisten können ihren Entdeckerdrang voll ausleben.

Posted in Inspiration-O-Matic. Tagged with , .

Die Generierung der Umwelt – erste Schritte eines Prototypen

Wie letzten Freitagangekündigt ist es heute soweit – ein erstes kurzes Video mit vollständig generierten Bäumen ist online. Die Fläche ist noch recht klein, die Bäume noch nicht besonders schön, aber für eine erste Vorführung bin ich durchaus zufrieden :)

Posted in Graphic-O-Matic, News-O-Matic. Tagged with , , , , , .

Der Prototyp wird getauft..

Soo.. bald ist es soweit… Inspiriert und ermutigt von “Die Kunst des Game Designs”, einem Buch von Jesse Schell und Teil meiner Beute des letzten UniBib Runs werde ich heute einen ersten, “fertigen” Screenshot eines generierten Ahorns reinstellen und nächste Woche ein erstes Video dazu hoch laden. Wieso inspiriert durch dieses Buch? In Kapitel 7.5: Risokoanalyse und Prototypentwicklung gibt er einem eben für die Erstellung von Prototypen (wie der Simulation der Flora) Tipps an die Hand, und gleich der zweite lautet “Lassen Sie die Qualität außer Acht”, also (grob zusammengefasst): Es ist ein Prototyp, er soll zeigen, ob eine Überlegung umsetzbar ist, er soll nicht das fertige Produkt sein. Zu viel Augenmerk auf Feinschliff und Optik eines Prototypen kann sogar eher hinderlich sein, lenkt ab von den eigentlichen Fragen, zum Beispiel: Ist ein solches Vorgehen mit individuellen Bäumen performancetechnisch machbar?

Also höre ich an dieser Stelle auf mit dem weiteren Schrauben an der Optik des Baumes, an den Wuchseigenschaften, am Balancing der beiden Baumarten und nutze den Prototypen für eine erste Demonstration so, wie er ist :) Heute ein Foto, am Wochenende dann werden wir die von Chro erstellte Landschaft (siehe Blogeintrag von Mittwoch) laden und die Simulation laufen lassen. Und nächste Woche dazu das Beweisvideo :) Ich freu mich drauf :)

Prototyp Testlauf: erster baum in Torque

Prototyp Testlauf: erster baum in Torque

Posted in Graphic-O-Matic. Tagged with , , .