WordPress 3.2: Endlich!

Zuerst: Schöne Ferien! 6 Wochen Zeit für was besseres als Schule… Studienberatung zum Beispiel 🙁

WordPress 3.2 ist jetzt also endlich da. Das neue Layout ist ganz nett, das neue Theme muss ich mir noch mal ansehen. Der neue „Zen“-Editor zum schreiben ohne UI ist ziemlich praktisch, auch wenn die Tastenkombinationen noch einen kleinen Fehler haben.

Doch eine Sache ist da, auf die ich schon ewig gewartet habe: Das neue Linktool.Endlich kann man direkt aus dem Link-Menü nach alten Posts suchen und diese verlinken. Darauf warte ich schon, seit ich WordPress benutze.

Eine andere Sache wurde auch Zeit: Der Support für den IE 6 ist Geschichte, und ein halbwegs modernes PHP und MySQL wird jetzt auch vorausgesetzt. Das ist wirklich praktisch für Plugin Autoren (wie mich) die sich jetzt endlich nicht mehr mit dem uralten PHP und Browser Versionen rumschlagen müssen.

Weiterlesen

Statusupdate 2

Mal wieder ein paar Dinge, an denen ich grade so arbeite:

Zum einen ist da YaME: Yet another Minecraft Engine. Hier ein kleines Video:

Ich wollte mal etwas in 3D mit XNA machen, und habe aus Spaß dieses Projekt angefangen. Momentan gibt es schon endlose Landschaften (zumindest bis der Speicher voll ist ;)), und die Framerate ist noch akzeptabel. Ich werde wohl zumindest noch bessere Grafiken und etwas Physik einbauen, zusammen mit einem besseren Renderer (Octrees und Occlusion Culling wäre super)

Dann bin ich grade dabei das LuaInterface um die Fähigkeiten der DLR zu erweitern. Microsoft hat mit .NET 4 eine bessere Interoperabilität mit Scriptsprachen eingebaut: Mit dem Schlüsselwort „dynamic“ kann man Objekte definieren, die z.B deren genaues „Aussehen“ erst zu Laufzeit festgelegt wird. Außerdem ist es damit möglich viele expliziete Konvertierungen wegzulassen. Das passt natürlich wunderbar zu Lua, und dem LuaInterface, mit dem man schon jetzt sehr elegant aus .NET auf Lua zugreifen kann. Kleines Code-Beispiel gefällig?

Weiterlesen

Würfel mit nur 12 Vertices texturieren

Hat mich grade etwas nachdenken gekostet:

Wie muss man die Texturkoordinaten eines Würfels setzen, damit auf allen Seiten die gleiche Textur zu sehen ist?

Mit nur acht Vertices geht es nicht (für jede Ecke einer), aber mit 12 geht es:

Man verzeihe meine Paint-Künste… Die hinteren Vertices müssen doppelt vorhanden sein, die obere und untere Seite wird dann mit diesen Vertices generiert. Die Farben geben die Texturkoordinaten an, die Zahlen an den Ecken sind die Nummern der Vertices. Weil ich ja so nett bin, gibt es die passenden Indices jetzt auch noch dazu:

Weiterlesen

Neues Projekt: XNA FAQ

Fast hätte ich vergessen, darüber zu bloggen: Ich habe einen neue Website gestartet, das XNA FAQ. Ich zitiere mal von der Startseite:

Nach dem im XNA.mag immer mal wieder die Frage nach einer FAQ Sammlung laut wurde, da die gleichen Fragen immer wieder gestellt werden, habe ich mich jetzt entschieden, einfach mal einen Versuch zu starten, und habe diese Website gestartet.

Momentan ist hier noch nicht besonders viel zu lesen, was auch daran liegt, dass ich noch alleine bin. Wer also hier mithelfen will, kann mich gerne fragen (s. Kontakt).

Ich hoffe mit diesem Projekt eine Sammlung von relativ kurzen Antworten zu bieten, die häufig gestellte Fragen kurz beantworten, oder, sollte dies nicht möglich sein, einen Anhaltspunkt bieten in welche Richtung man die Lösung findet. Das ist aber auch nur ein grobes Konzept, das ich auch gerne nach Bedarf anpassen werde.

Weiterlesen

Snoopy und der Refresh-Header

Snoopy pompiereNein, um diesen Snoopy geht es nicht. (Aber ich wollte mal wieder ein Bild einbauen 😉 Sondern um die PHP Klasse mit dem gleichen Namen, die einen Webbrowser in simuliert. Damit kann man z.B. in PHP den Inhalt einer anderen Seite abrufen, ohne sich um die Implementierung zu kümmern. Zusätzlich werden z.B. Weiterleitungen auch verfolgt, und Cookies gesetzt.

Und genau da liegt das Problem: Snoopy beachtet nur die beiden Weiterleitungsheader „Location“ und „URI“. Location ist der quasi-Standard, was anderes habe ich noch nicht gesehen.

Weiterlesen

Umzug

Jetzt habe ich es lange genug vor mir hergeschoben, jetzt kommt der lang erwartete Bericht über meinen Serverumzug 😉

Situation am Anfang: Reines Webhosting beim einem Hoster, von dem ich weg wollte. Ein WordPress-Blog (dieser ;)), Maximilians UpdateServer, ein Mantis Bugtracker und meine Emails. Dazu ein Subversion Repository bei Assembla, das mit verschoben werden sollte.

Neue Situation: Ein vServer bei netcup, „ohne alles“. Und doch war der Umzug ziemlich einfach, er hat eigentlich problemlos geklappt. Was ich allen empfehlen kann, die noch nicht so fit mit Linux sind (wie ich…): Baut euren vServer erstmal in einer VM nach, und probiert dort alles aus! Also der kompletten Umzug. Da lernt man eine Menge!

Ich hatte den neuen Server mit einem Monat Vorlauf gemietet, ich hatte also genug Zeit, alles umzuziehen. Als Betriebssystem sollte Debian auf meinem Server zum Einsatz kommen, leider hab ich etwas zu früh angefangen, und noch Lenny verwendet, jetzt muss ich auch Squeeze updaten… Die Installation von Debian war mehr als einfach: Im ControlPanel von netcup das Debian Lenny ohne alles Image ausgewählt, schon steht der Server, und ist per SSH erreichbar.

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

Tileset Packer: Details zum Code

Wie versprochen gibt es jetzt ein paar Details zum Code des Tileset Packers. Das Programm hat (meiner Meinung nach) ein paar interessante Stellen, die dem einen oder anderen .Net-Coder bestimmt helfen können.

Im Grunde hat der Packer drei Probleme zu lösen:

  1. Das Tileset muss verschnitten werden
  2. Doppelte Tiles müssen aussortiert werden
  3. Das Tileset muss effektiv wieder zusammen gesetzt werden

Dazu sollte das Programm natürlich eine gewisse Geschwindigkeit an den Tag legen. Das verschneiden kann man relativ einfach mit Bitmap.Clone erledigen, doch das ist sehr langsam, und dazu nimmt die Geschwindigkeit auch noch mit zunehmender Größe der Bitmap ab. (Große Bitmap = langsamer Code). Es musste also eine Alternative her. Durch einen Tipp in einem Forum bin ich dann auf Bitmap.LockBits gestoßen, eine Methode die direkt (unsafe) auf die Bitmap zugreift und dadurch sehr schnell ist. Von dieser Methode bekommt man ein BitmapData Objekt, mit dem man über einen Pointer auf die Daten im Arbeitsspeicher zugreifen kann.

Diese Daten verwendet dann die Methode GetHash, die aus den Bitmapdaten einen Hash generiert, mit dem doppelte Tiles aussortiert werden können.

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

XNA 4: Probleme mit WinForms

Nachdem mein anderer Beitrag über Probleme und Lösungen bei XNA 4.0 Upgrade ja scheinbar ein paar Leuten geholfen hat, gibt es jetzt das gleiche nochmal für XNA in Kombination mit Windows Forms, wie es ja oft bei Editoren zu finden ist. Ich baue meinen Editor auf diesem soliden Gerüst auf, und wollte jetzt auch hier langsam mal auf XNA 4 wechseln. Was gab es also für Probleme?

Die Klasse Color befindet sich jetzt nicht mehr unter XNA.Framework.Graphics, sonder nur noch unter XNA.Framework. Das für u.U. zu Problemen mit den usings, da es ja auch Windows.Forms.Color gibt. Hier ist der Trick, das man bei using auch einen alternative Namen angeben kann:

Weiterlesen