DynamicLua

So, ich denke es ist Zeit, die Katze aus dem Sack zu lassen, und mein neues Projekt vorzustellen: DynamicLua

Kurz ein paar Worte zum Hintergrund: Mit .NET 4.0 wurde die sog. Dynamic Language Runtime (DLR) eingeführt. Die dient zum einen dazu, es Entwicklern einfacher zu machen, neue Sprache auf .NET Basis zu entwickeln (wie IronPython/IronRuby), hat aber auch ein paar tolle andere Features zu bieten. Eines davon ist das neue Schlüsselwort „dynamic“. Es funktioniert ähnlich wie „var“ kann also jeden Typ annehmen. Wenn man darin aber ein Objekt speichert, das von System.Dynamic.DynamicObject abgeleitet ist, kann man bestimmen was passiert, wenn etwas „nicht erlaubtes“ passiert, also wenn z.B. eine Methode aufgerufen wird, die es gar nicht gibt. Solche Aufrufe landen dann bei der Methode TryInvokeMember, und die kann dann entscheiden, was passieren soll.

Dieses Konzept habe ich jetzt genutzt, um einen Wrapper für das LuaInterface zu schreiben. Das Lua Interface ist eine Library für .NET, die es erlaubt, Lua in C# zu benutzen. Dabei kümmert sie sich auch darum, .NET Objekte in Lua abzubilden und vieles mehr. Diese Library ist wirklich unglaublich, man denkt wirklich, Lua hätte was mit Objekten am Hut.

Weiterlesen

WP Month Calendar

Mal wieder ein neues Plugin von mir: WP Month Calendar. Macht was der Name sagt: Es ist eine modifizierte Version des Kalender Widgets, das WordPress schon an Bord hat. Die Version von WordPress stellt immer einen Monat dar, meine ein ganzes Jahr, immer mit einem Link pro Monat. Im Tooltip sieht man dann die Beiträge aus diesem Monat.

Das ganze wurde aus Eigenbedarf geschrieben, ich wollte das Widget einsetzen, aber ich schreiben zu wenige Artikel um es zu füllen 😉

Weiterlesen

Der tKoD Map Editor

Jetzt sind ja Ferien, und da hat man wenigstens mal Zeit an seinem Hobbyprojekt weiterzuarbeiten 😉 Ich habe die Zeit dazu genutzt dem Editor zu meinem Spiel mal ein paar neue Features zu verpassen:

Es gibt einen Scripteditor der auf ScintillaNet basiert, und den Inhalt auch an einen externen Editor senden kann. Dazu gibt es eine ComboBox für die Hintergrundmusik und ein DataGridView, das an ein Dictionary gebunden ist, wodurch man eigene Schlüssel-Wert-Paare festlegen kann.

Das ganze kann auch in eine Datei geschrieben werden und wird auch korrekt wieder ausgelesen.

Weiterlesen

Hürden für das Upgrade auf XNA 4.0 und wie man sie umgeht

Nachdem am 16. September ja nun endlich XNA 4.0 erschienen ist, habe ich natürlich auch meine Projekt auf die neue Version aktualisiert. Das ganze hat erstaunlich wenig Probleme gemacht, und nur eine Sachen bereit mir ernsthafte Probleme.

Alte XACT Dateien können nicht gelesen werden. Das Problem lässt sich sehr einfach beheben: Mit dem neuen Game Studio kommt auch ein neues XACT (auch Version 3.0, aber vom Februar 2010). Die alte Datei damit öffnen, Hinweis abnicken und wieder speichern, Problem behoben.

DisplayMode.RefreshRate fehlt. Eines der Probleme, die ich nicht wirklich beheben konnte. Um das Ruckeln von Animationen zu beheben hatte ich die FPS Rate an die Wiederhohlrate des Monitors angepasst. Da die entsprechende Eigenschaft jetzt einfach fehlt, kann ich das so einfach nicht mehr machen.

Weiterlesen

Mein erstes WordPress Plugin

Es ist geschafft: Mein erstes WordPress Plugin ist fertig!

In der letzten Zeit habe ich an einem Plugin gearbeitet, das es ermöglicht, Bugs, Chagelogs und Roadmaps aus Mantis direkt in WordPress einzubinden. So kann man auf Projektseiten immer über den aktuellen Status informieren. (Jetzt ratet mal, was ich vor habe ;))

So ein Plugin gibt es ansich schon, aber es wurde wohl von Autor aufgegeben und hatte auch nicht alle Funktionen, die ich mir gewünscht hatte. Also habe ich selber Hand angelegt und das ganze verbessert. Die Früchte meiner Arbeit kann man jetzt im offiziellen Repository betrachten: http://wordpress.org/extend/plugins/wp-mantis/

Wer noch Fehler findet darf sie gerne im Bugtracker melden. (oder hier in den Kommentaren)

„Im Zelt“ Tilesets

Ich bin mal wieder beim „mappen“ (soll heißen, ich erstelle Karten für The Kingdom of Darkness), und mir ist aufgefallen, dass in den Tilesets vom RPG Maker (die ich ja benutze) das innere eines Zeltes fehlt!

Nach ein wenig (bzw. ziemlich viel) war dann auch ein Tileset gefunden, das wunderbar zum Originalstil passt:

Ich habe das hier mal hochgeladen, weil es ziemlich schwer zu finden ist. Was ich leider nicht finden konnte ist, wer dieses geniale Set gezeichnet hat… Ich hoffe, er ist mit der Benutzung einverstanden, ich würde ihn auch gerne in den Credits nennen, aber ich habe wirklich nichts gefunden 🙁 Wenn jemand mehr weiss würde ich mich wirklich über Informationen freuen 😀

Weiterlesen

SimpleScreenshot 0.9.3.2

Leider war auch die letzte Version von SimpleScreenshot nicht Bugfrei, und der verbliebene Bug war auch noch sehr gemein: Wenn SimpleScreenshot gestartet wurde, wurde manchmal das Fenster nicht ausgeblendet. Der Fehler beruhte auf einem Wettlauf: Wenn das Form geladen wird, wird zuerst die Sichtbarkeit von Windows auf true gesetzt (das Fenster ist also sichbar) und gleichzeitig dem Fenster mitgeteilt, das es geladen wurde. Wenn es so benachrichtigt wurde, wurde es wieder ausgeblendet. Wenn man Pech hatte, hat das Auslebenden das Sichtbarmachen überholt, und das Fenster blieb sichtbar… Das Problem ist jetzt aber behoben, zusammen mit einem Fehler, der manchmal den Sound nicht abgespielt hat. (Hintergrund: Wenn in einer aufrufenden Verknüpfung als Arbeitsverzeichnis nichts eingetragen wurde, konnte das Programm die Sounddatei nicht finden…). Zudem wurde eine fehlende Übersetzung hinzugefügt: Auch Nicht-Deutsche kommen jetzt in den Genuss einer Englische Fehlermeldung, wenn SimpleScreenshot mehr als ein Mal gestartet wird (was nicht geht).

Wie auch schon bei Version 0.9.3.1 habe ich auf der Downloadseite keinen neuen Eintrag erstellt, sondern einfach die Zipdatei ausgetauscht. Wer SimpleScreenshot schon hat, muss einfach nur auf das AutoUpdate warten, das bei nächsten Start aufgerufen wird.

Weiterlesen

Gedanken zu Dialogen

Ok, ich gebe zu, der Titel ist blöd. In Englisch klingt er besser: Thoughts on Dialogue Systems. Aber das ist halt ein deutscher (und in letzter Zeit ein wenig vernachlässigter) Blog, also gibst blöde, deutsche Titel 😉

Aber nun zum eigentlichen Thema dieses Post: Wie macht ein gutes Dialogsystem? Fangen wir mit den Anforderungen an:

  • Der Spieler muss verschiedene Optionen haben. Es gibt keinen festen Ablauf.
  • Der Dialog wird zwischen dem Spieler und einem oder mehr NPCs geführt. Technisch gesehen ist der Spieler aber auch ein NPC.
  • Zu bestimmten Zeitpunkten sollen Scripte ausgeführt werden können. Möglichst, wenn eine Dialogzeile zu Ende ist.
  • Es soll durch Scripte möglich sein, zu bestimmen, ob eine Dialogzeile angezeigt wird, bzw. den Verlauf des Dialogs zu bestimmen.
  • Es muss einen Editor geben, in dem man die Dialoge erstellt.
  • Die Dialoge sollen über die Content Pipeline geladen werden können.

Ich habe jetzt angefangen, ein eigenes System zu schreiben. Dieses funktioniert auch relativ gut, und es hatte auch eine Integration der Content Pipeline. Nun bin ich aber auf ein Problem gestoßen: Die Auswahl durch den Spieler.

Weiterlesen

SimpleScreenshot 0.9.3.1

Es gibt mal wider eine neue SimpleScreenshot Version: Diesmal war es nur ein winziger Bug, der mir aber erst heute aufgefallen ist: Wenn SimpleScreenshot durch Windows beendet wurde, also wenn das System heruntergefahren wurde, wurden die Einstellungen nicht gespeichert. In den Einstellungen stehen aber auch die Anzahl der schon gemachten Screenshots, und wenn man die im Namen benutzt, konnte es sein, das z.B. „Screenshot123.png“ schon existierte und deshalb überschrieben wurde. Der Bug ist gefixed, und ist per Autoupdate verfügbar, auch hier habe ich den Download aktualisiert. (Kein neuer Eintrag in der Liste, dafür war mir die Änderung zu minimal.) Einfach 0.9.3 nochmal downloaden.

P.S. Momentan sind die Webserver hier etwas langsam, aber das ändert sich hoffentlich bald wieder.

Weiterlesen

Pläne für SimpleScreenshot 1.0

In den letzten Tagen habe ich mich ausgiebig mit SimpleScreenshot 1.0 beschäftigt. Ich habe mal GIMP angeworfen und in Screenshots einige von meinen Ideen eingebaut. Die Ideen dazu habe ich auch aus den Windows Design Richtlinien, an die sich das ganze auch ungefähr halten wird. Also zeige ich euch jetzt mal alle meine Ideen:

So geht es los, wenn man SimpleScreenshot startet. Also so wie bis jetzt. Höchstens der Text wird noch angepasst.

Weiterlesen