Mein Ansatz für das Würfelspiel
Bei dem Würfelspiel-KI-Wettbewerb vom Linuxmagazin hatte ich angekündigt, später mehr über meinen Ansatz zu schreiben. Denn der ist an sich simpel, funktionierte aber ganz gut - bis zu einer gewissen Grenze.
Statt auszurechnen, was die beste Lösung für das Problem ist, habe ich ein sehr simples Botmodell gebaut. Nochmal vereinfacht sah das so aus:
class DiceClient(): def __init__(self, maxPoints, sprint, enemySprint): self.enemySprint = enemySprint self.maxPoints = maxPoints self.sprint = sprint
Er würfelte also und hatte zur Entscheidung, ob er weiterwürfelt, drei Merkmale bzw Grenzen. Wieviele Punkte ...
- ... haben ich bereits in diesem Versuch erwürfelt
- ... hat der Gegner insgesamt
- ... habe ich insgesamt
Bei Erreichen der ersten Grenze speicherte er, bei Erreichen der anderen beiden versucht er, durchzuwürfeln um doch noch zu gewinnen.
Statt also nun diese Grenzen selbst möglichst optimal zu wählen, erstellte ich 20 solcher Bots mit zufälligen Werten und ließ sie spielen - gegen sich selbst, gegen andere Bots (von mir und von Freunden), gegen die Bots auf den Servern. Die Bots wurden nach ihrem Erfolg geordnet. Waren ein paar Spiele zusammen, ersetzte ein Kind der gewinnenden Bots einen der verlierenden. Dazu wurde die mutate() aufgerufen:
def mutate(self): random.seed() self.maxPoints = self.maxPoints + random.randint(-1,1) self.sprint = self.sprint + random.randint(-1,1) self.enemySprint = self.enemySprint + random.randint(-1,1)
Das Kind eines Bots war also eher kein identisches Abbild, sondern hatte leicht andere Werte. So sollte die Gesamtpopulation sich schrittweise den optimalen Grenzen annähern.
maxPoints: 30, sprint: 46, enemySprint: 48, generation: 23
Dieser Auszug aus der Speicherdatei beschreibt mein Endergebnis bei ungefähr 10000 Spielen mit diesem Botmodell, dabei habe ich es dann auch gelassen. Mit dem simplen, wobei schon erweiterten, Botmodell sind ein paar Konstrukte nicht ohne weiteren Umbau möglich gewesen die ich gerne als manuellen Startwert ausprobiert hätte, z.B. erst bis 16 würfeln, speichern, danach durchsprinten. Und dafür fehlte mir dann die Zeit.
Fallout: New Vegas
Während Fallout 3 mir nicht wirklich gefallen hat, macht New Vegas wirklich Spaß. Es ist ein bisschen schwer genau zu bestimmen, woran das liegt, denn eigentlich sind sich die Spiele sehr ähnlich - auf den ersten Blick sehen sie sogar identisch aus. Doch die später bemerkbaren Unterschiede machen einiges aus.
New Vegas ist einfach mehr Rollenspiel. In Fallout 3 war die Welt so groß, dass man innerhalb des Levellimits gar nicht alles entdecken konnte. Das fühlte sich äußerst unangenehm an, denn es führte dazu, dass ich genau abwog, ob hier Nebenquests erledigt werden sollten oder doch besser woanders oder gar nicht. In New Vegas levelt man langsamer und das Limit ist höher, das scheint ziemlich gut zu passen, sodass der Spieler am Ende nur dann auf einem hohen Level sein sollte, wenn er viele Nebenquests erledigt.
Diese Quests sind ziemlich gut geworden - es gibt Unmengen, die alle unterschiedlich sind und mit ihren Geschichten das Ödland lebendiger wirken lassen. Das verbunden mit dem Ansehenssystem aus Fallout 2, das für jede Stadt und jede Fraktion abgesehen vom Karma unabhängig ist, macht Spaß und baut eine echte Welt. Von Autolevelling und ähnlichen Absurditäten hab ich nichts bemerkt, im Gegenteil: Direkt am Anfang wird man nach Süden geleitet, weil im Norden starke Gegner den Weg blockieren. Natürlich könnte man es trotzdem versuchen - so soll es sein.
Izulu: Automatische Standortbestimmung
Ohne Konfiguration nahm izulu bisher Berlin als Standort an. Nochmal kurz: izulu setzt passend zum Wetter am Standort ein Hintergrundbild. Beispielsweise in Moskau ist nun aber wahrscheinlich nicht Berliner Wetter, der erste Eindruck für jemanden, der sich noch nicht mit der Konfiguration beschäftigt hat, also eher unerfreulich. Daher holt das Programm nun per Geoip-Api von Maxmind über die IP-Adresse den Stadtnamen. Natürlich wird die Funktion nur genutzt, wenn kein Standort manuell angegeben wurde.
Beim Nachdenken über diese Änderung kamen mir noch weitere Bereiche in den Sinn, bei denen man die Benutzung vereinfachen könnte, insbesondere beim Hintergrundsetzbefehl und beim nichtvorhandenen Menüeintrag - vielleicht kommt da noch was in einer späteren Version.
Download: izulu-0.2.6.deb
Wird Deus Ex 3 gut?
Viel von dem, was man bis jetzt über Deus Ex - Human Revolution gehört hat, klang gut. In Vorabberichten redeten sie nicht zu viel von Grafik und Gewalt, sondern von Design - sowohl Grafik- als auch Spieldesign. Deus Ex 1 sei das Vorbild und echte Spieler die Zielgruppe.
Jetzt kommt zum ersten Mal eine Nachricht, die kritisch einzuschätzen ist. Es werde keinen wählbaren Schwierigkeitsgrad geben, sondern einen dynamischen. Das ist doppelt schade:
- Es hat noch nie in einem Spiel funktioniert, sondern hat immer das Spiel kaputtgemacht. Bestes Beispiel: Oblivion, bei dem schließlich gewöhnliche Banditen teuerste Ausrüstung trugen und das Spiel unschaffbar wurde, wenn man Gesellschaftsfähigkeiten hochstufte.
- Deus Ex 1 zog einen besonderen Reiz aus dem Schwierigkeitsgrad Realistisch, bei dem man kaum mehr aushielt als ein gewöhnlicher Soldat und entsprechend geschickt vorgehen musste. Trotzdem war das Spiel in diesem Modus durchspielbar, es war sogar besonders spaßig
Bei Fallout 3 war damals absehbar, dass das Spiel nichts werden würde, da die Entwickler immer nur unwichtiges als toll präsentierten. Ob Deus Ex 3 ein Deus Ex wird muss sich angesichts dieser Entwicklung noch zeigen. Bisher schien es so.
OpenTTD
Über OpenTTD (Open Transport Tycoon Deluxe) bin ich die Tage gestolpert. Das war schon früher immer mal wieder im Forum ein Thema, weil es problemlos unter Linux läuft, aber damals brauchte man noch die Originaldateien des Transport Tycoon Deluxe - die ich nie hatte. Die braucht man nun schon eine Weile nicht mehr, und das Spiel entpuppt sich als zeitfressende suchtverursachende Plage, kurz: als sehr spaßig.
Aufgabe ist es, Waren dorthin zu transportieren wo sie gebraucht werden. Dafür baut man vornehmlich Schienennetze, zusätzlich sind LKWs, Schiffe und Flugzeuge vorhanden. Auch Städte fungieren als Abnehmer für produzierte Güter, in ihnen kann man aber auch den Personennahverkehr oder einen Postbetrieb aufmachen - im Grunde sind das jedoch nur weitere Waren, die von A nach B transportiert werden. Je schneller und weiter der Transport, desto mehr Geld bringt er ein - was dann zu solchen Streckenkonstruktionen führt.
Im Grunde also wie Industriegigant, nur dass man keine eigene Produktionsbetriebe errichtet sondern sich auf den Transport konzentriert. Wobei die Reihenfolge wohl eher andersrum ist, Industriegigant wie ttd plus eigene Betriebe. Dazu kommt Kleinkram wie die korrekte Signalplatzierung an den Bahnstrecken.
Die Grafik ist alt, der Sound wird irgendwann nervig - dem Spaß schadet das nicht, dafür läuft es auch mit dem freien Nvidia-Grafikkartentreiber problemlos.
Blogzaehler: Verlauf und Details
Der Blogzaehler wurde gerade aktualisiert. Jetzt wird nicht mehr nur die momentane Nutzung der Blogsoftware von Blogs in den Blogcharts angezeigt, sondern auch der Verlauf und die (alphabetisch sortierte) Detailliste.
Somit kann man selbst prüfen, ob meine Software richtig zählt, und den Verlauf anzuzeigen dient dem eigentlichen Zweck, nämlich zu schauen, welche Blogsoftware beliebt ist - dazu gehört ja auch, welche derzeit mehr oder weniger genutzt wird als früher.