Allgemein

Waren es 0.5 oder 0.6 Eragon?

Vor kurzem habe ich mal erwähnt, dass der Film so mies war, er wäre fast an ein Eragon heran gekommen. Darauf hin wurde ich gefragt was das für eine Maßeinheit sei und wie ich darauf gekommen bin. Ob ich nicht mal einen Blog Post dazu verfassen könnte. Warum also nicht. Ich habe ja schon länger nichts mehr geschrieben was Hand und Fuß hat. =)

Die Maßeinheit bezieht sich auf das Fantasy Buch Eragon von Christopher Paolini. Versteht mich nicht falsch! Ich mag das Buch. Es ist jetzt nicht überragend in meinen Augen aber es ist schön geschrieben und versprüht seinen eigenen Charme. Im Folgenden werde ich ein wenig auf die Geschichte eingehen es ist also Spoiler Gefahr angesagt. Wer das Buch noch nicht kennt und plant es doch noch irgendwann zu lesen sollte jetzt also besser nicht mehr weiter lesen.

Es geht um den jungen Eragon der in seinem abgelegenen Dorf ein Drachenei findet. Aus dem Ei schlüpft schon bald ein Drache, den er vor den anderen Dorfbewohnern verstecken muss und in monatelanger Pflege aufzieht. Merkwürdige Schergen überfallen das Dorf, großes Geschrei, Eragon muss fliehen mit seinem Drachenweibchen. Ab da an überschlagen sich die Ereignisse und die Geschichte entfaltet sich. Eragon wird in immer größere Konflikte verwickelt da der verrückte König hinter seinem Drachen her ist und er zu allem Überfluss noch magische Fähigkeiten entwickelt. Auf seiner Reise trifft er immer neue Freunde und Feinde. Na klingt nach ner üblichen Fantasy Story? Ist es auch. Herr der Ringe als Vorbild ist deutlich zu erkennen aber es liest sich wie gesagt gut.

Ich habe nun 2006 gehört dass das Buch verfilmt werden soll und auch zunächst einiges positives über den Film. Die Computeranimation des Drachens (Saphire heißt sie übrigens) soll bahnbrechend sein und überhaupt, die Effekte, die Effekte. Also habe ich bei Freunden den Film dann auch irgendwann gesehen. Aber was sich dort meinen Augen offenbarte war die schlechteste Verfilmung eines Buches die mir je untergekommen ist. Nicht einfach dass Charaktere fehlen, oder sterben die nicht sterben sollten. Es werden einfach auch wichtige Schlüsselszenen des Buches ausgelassen, die sowohl für das Verständnis des weiteren Verlaufes im Film wichtig, sondern auch essentiell für nachfolgende Teile gewesen wären. (Immerhin sorgt das dafür dass neue Teile des Films nicht oder nur extremst schwer möglich wären und erspart uns so mit weiteres Leid).

Um einige kleine Verfehlungen zu nennen: Eragon lernt im Buch in einer Hafenstadt (hab den Namen vergessen) den Umgang mit Magie und lernt dort auch wichtige Charaktere kennen. Im Film findet dieses Treffen nicht statt. Im Buch fliehen sie auf einem Boot in Richtung Rebellen. Im Film dagegen reiten sie direkt zur Rebellen-Festung. Auch sehen die Requisiten teilweise aus wie aus dem Baumarkt zusammen geklaubt. Holzhütten dort wo laut Buchbeschreibung prächtige Bauten aus Stein die Szenerie ausmachen sollten. Eine Festung der Zwerge welche in ihren Hallen aus Stein (höhö) den Rebellen Unterschlupf gewähren, wird da schon mal im Film zu einer Bretterbude in nem Berg. Hab ich schon erwähnt dass es keine Zwerge gibt? Angeblich sollte es da in dem Berg einen riesigen Kristall geben, das Wahrzeichen der Zwerge und ihr größtes Heiligtum. Der wird im Buch beim Endkampf zerstört und Saphira kann ihn reparieren und sichert sich so die Gunst der Zwerge. Keine Sorge, da es im Film ja keine Zwerge gibt kann man sich den Kristall ja auch gleich sparen. Doof nur das er der Grund war weswegen die Zwerge Eragon zu den Elfen schicken damit sie seine Magie weiter trainieren. Aber macht nichts, auch die Elfen wurden ja im Film konsequent weg gelassen oder nur mal am Rande erwähnt (ich erinnere mich nicht mehr).

Wenn man den Film einfach ohne Buch sieht mag er ja noch halbwegs akzeptabel erscheinen (aber selbst da gibt es um Längen bessere Filme). Des weiteren bin ich mir natürlich bewusst dass ein Film sich nicht 1:1 an ein Buch halten kann. Aber die Buchvorlage derart abstrus und schlecht um zu setzen ist mir in meinen über 10 Jahren in denen ich Filme als Hobby schaue noch nicht ansatzweise untergekommen. Bis jetzt wurden wenigsten Anstalten unternommen immerhin die Schlüsselszenen zu übernehmen. Das ist ja wie als wenn ich Herr der Ringe verfilme, aber die Ringgeister weglasse. Oder Sarumann, den brauch man ja auch nicht. Und statt in Isengard zu landen sind die Hobbits eben direkt nach Minas Tirith geritten. Zwerge fragt ihr? Was für Zwerge?!

Da ich noch keinen schlechteren Film als Eragon (sofern man ihn unter dem Gesichtspunkt einer Buchverfilmung betrachtet) gesehen habe bekommt er das Maß 1 Eragon. Alles andere wird daran relativ bewertet. Und glaubt mir, seht ihn euch an, am besten wenn ihr dazu das Buch gelesen habt und ihr wisst was richtig, richtig schlecht ist. Alternativ könnt ihr euch ja euren absoluten Hassfilm als 1 Eragon vorstellen. ;)

Habt ihr so ein paar Filme? Wenn ja bewertet sie in der Eragon Skala und posted sie in den Kommentaren, würde das ja gerne Mal lesen.

Daher schließe ich auch mal mit den Worten des User billkupert von imdb.com:

Really Bad. If you read the books, do yourself a favor and don’t put yourself through the agony of sitting through this travesty. The story line (which skips about 70% of the original story line) wanders miles from the novel. Except for Rachel Weisz’s great voice over work for the dragon (which is the best acting this film has) the acting from the rest of the actors is just above high school play level.

Silvestervideo 2009 Online!

So, nachdem ich das Video dummerweise in Riedberg vergessen hatte gibt es jetzt endlich auch das Video von diesem Jahr. Leider ging auch da wieder einiges schief aber im Video wird es kommentiert werden. Ich bitte die lausige Tonqualität am Anfang zu entschuldigen, mein Mikro am PC hat irgendwie nicht mehr hergegeben.

KI in Spielen eine Ideensammlung

Zunächst einmal sollten wir uns mit der Idee beschäftigen was eine KI zu leisten hat. Ich wollte nun nicht auf Kampfhandlungen im Detail eingehen, sondern eher mich auf das Konzept konzentrieren wie man eine lebendige Welt simulieren könnte indem man eine KI umsetzt die sich ihrer Umgebung bewusst ist.

Was macht also eine Bewusste-Umgebung aus?

Stellen wir uns ein ein Monster M vor das durch die Ruinen einer Stadt schleicht. Es verspürt leichten Hunger und beginnt zu suchen. Plötzlich kann M ein leises Geräusch feststellen. Es deutet auf Beute hin. Auch die Richtung aus der das Geräusch kam ist recht klar. M beginnt also in diese Richtung zu schleichen. Hinter der nächsten Häuserecke entdeckt es also unsere Heldentruppe und beginnt sofort mit dem Angriff (unser M ist ein wenig einfältig). Doch unsere Helden sind schnell und gut bewaffnet. M wird schnell klar das es hier nichts holen kann und es beschließt zum Rückzug zu blasen!

Analyse des Verhaltens

Was wir also benötigen wird schnell klar. Einerseits brauchen wir ein System welches Events in der Welt verbreitet (zb Geräusche). Andererseits benötigen unsere Actor (Monster, NPC etc welche KI nutzen) ver. Arten von Sinnen (im weiteren Senses genannt) um diese Umwelteinflüsse wahrnehmen zu können. Ein Listener-Pattern scheint hier das Maß der Dinge zu sein. Die verschiedenen Sinne der Actor können sich zentral an der Engine anmelden und warten dann darauf das die einzelnen Events gefeuert werden um diese zu verarbeiten und mit ihrer KI zu reagieren. DIe Engine muss hier besonderen Wert darauf legen und nur solche Senses auslösen welche das Event auch tatsächlich empfangen können. Ein Monster welches 1km weit weg steht wird kein Geräusch hören können welches in der nächsten Stadt gesendet wurde. Auch die Line of Sight muss beachtet werden wenn visuelle Events gesendet werden.

Der Actor muss aber über weitere Variablen verfügen und eine Art Statemachine implementieren. Z.B. müsste es für jedes elementare Bedürfnis eine eigene Variable geben wie Hunger. Wenn das Monster besonders intelligent sein soll, müsste man überlegen auch Informationen mit anderen Actor zu verknüpfen (Wenn das Monster vielleicht Katzen (Actor ID 7) gerne frisst aber weiß, dass ihn Spieler (Actor ID 345) oft Schaden zugefügt hat, so kann es sich mit den Actor IDs verknüpften Listen eben jene Informationen merken. Es sollten dabei statische und dynamische Listen vorhanden sein. Sodass es Monster M immer eine Präferenz auf Katzen hat, aber der Hass auf bestimmte Spieler sich dynamisch anpasst.

Ich habe mal einen interessanten Ansatz gesehen indem man KI Objekt erzeugt hat welche jedes ein eigenes Verhalten verfolgt hat und sich auch selbst durch ein anderes ausgetauscht hat, sollte ein Bedürfnis erfüllt sein. Aber ich bin mir nicht so ganz sicher ob dies auch hier funktionieren wird, da ver. Monster ver. interne Variablen haben werden und sich die KI darauf einstellen müsste was unnötige Komplexität mit sich bringen dürfte. Auch müssten unterschiedliche Actor natürlich unterschiedlich auf die von den Senses gelieferten Daten reagieren. Die Logik sollte also im jeweiligen Actor implementiert werden oder besser in einem eigenem KI Objekt welches sich dann um das Steuern des Actors bemüht.

Fassen wir also zusammen:

  • Listener Pattern zum lauschen von Events welche andere Actor oder World spawnen.
  • Sense Objekte welche nach bestimmten Events der World lauschen und evtl weiterverarbeiten.
  • KI Objekte welche auf einen eigenen Satz von internen Variablen zurückgreifen können um eine Art Statemachiene zu implementieren und das Verhalten steuern. / Evtl. verschiedene KI Objekte einsetzen welche den aktuellen Zustand der KI repräsentieren und sich selber austauschen.

Bestia wird wohl keines dieser Konzepte verwenden, da zu keinem Zeitpunkt freie Monster auf der Map vorkommen. An sich ist dies Schade, das wäre nämlich ein richtig gutes Feature. Leider habe ich keine Ahnung wie ich sowas nur in PHP machen sollte. Das einmalige positionieren von Monstern wäre noch machbar. Aber wie sollen sie sich bewegen und wie soll das jedem Client mitgeteilt werden? Ich müsste die Pfade eines jeden Entity zwischenspeichern bis der jeweilige Client sie vom Server pollt. Ziemlich ressourcenfressend und komplex wie ich finde. Aber ein interessanter Ansatz. Ich werde nochmal drüber nachdenken…