GWEN.NET

Wenn man ein Spiel in OpenGL realisiert, hat man meist irgendwann das Problem das man auch Bedienelemente wie Menüs, Checkboxen, Textfelder etc. im Spiel haben möchte. Diese sollen dann natürlich auch noch Events erhalten und möglichst auch in OpenGL gezeichnet werden (da niemand z.B. GDI Objekte im OpenGL haben möchte).

Die GWEN.NET Beispielanwendung

Für .NET/Mono gibt es hierfür eine Portierung von GWEN welche GWEN.NET heist und unter http://code.google.com/p/gwen-dotnet/ zu finden ist. Diese arbeitet z.B. mit OpenTK zusammen. Das ganze ist dabei unter der MIT Lizenz verfügbar.

Weitere Informationen gibt es unter:
http://omeg.pl/blog/2011/07/the-quest-for-c-opengl-gui/

Prototypische Quelltextkonvertierung (C -> C#)

Bei der Portierung von C Quelltext ist man manchmal am überlegen wie man eine bestimmte Stelle wohl syntaktisch nach C# bringt. Möchte man eine automatische prototypische Quelltextkonvertierung für solche Sachen so sollte man sich mal die Webseite http://code2code.net/ anschauen.

Dort kann man C Quellcode eingeben und bekommt ihn in C# oder Visual Basic.NET zurück. Je nach Eingabedaten kann die Konvertierung dabei allerdings unterschiedlichster Qualität sein. Um das Nachdenken kommt man also nicht herum ;)

Das Minecraft maintenance tool

Ich betreibe einen Minecraft Server und ab und an kommt es vor das man ein paar neue Dinge zur Welt hinzufügt. Manchmal kommt es dabei zu unschönen Fehlern, welche z.B. die Bedrockschicht beschädigen. Da ich nun natürlich nicht alles von Hand nachbessern möchte habe ich ein kleines Tool geschrieben. Dieses hört dabei auf den Namen „Minecraft maintenance tool“ und ist unter http://mcmt.googlecode.com zu finden. Das Tool steht dabei unter GPLv3 Lizenz und sollte unter Linux und Windows laufen.

Mit dem Tool sind im Moment folgende Dinge möglich:

  • Entfernen von Entities
  • Ersetzen von Blöcken
  • Erzeugen einer flachen Welt
  • Neuberechnung der Beleuchtung
  • Reparieren der Bedrockschicht

Wenn jemand Ideen hat was es noch alles können soll, kann diese in den Kommentaren loswerden. Das Tool selbst setzt auf der Substrate Bibliothek (unter MIT Lizenz) auf welche unter http://substrate-minecraft.googlecode.com zu finden ist.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Minecraft
http://www.minecraftforum.net/topic/245996-sdk-substrate-map-editing-library-for-cnet-103/

Visual Studio ignoriert die Haltepunkte beim Debuggen

Manchmal kann einen die Softwareentwicklung schon in den Wahnsinn treiben, vor allem wenn es um triviale Dinge geht. So sollte es ja eigentlich selbstverständlich sein, das der Debugger an einem Haltepunkt hält. Mein erster Gedanke war, das es daran liegt das ich das Projekt im Debugmodus auf „Any CPU“ eingestellt habe. Sobald ich es auf „x86“ oder „x64“ gestellt habe, hielt der Debugger an der gewünschten Stelle. Allerdings hatte ich ein ähnliches Projekt mit fast den selben Einstellungen (auch „Any CPU“), doch dort funktionierte es mit dem Debugger. Also sollte es ein Vergleich der Projektdateien richten. Nach einiger Zeit war hier auch kein Erfolg zu melden.

Beim Starten des Projektes fiel mir allerdings auf das die Haltepunkte ausgeblendet wurden:

Im Tooltip zu den Haltepunkten stand dann:

No symbols have been loaded for this document

Dies brachte mich dazu in das „bin/Debug“ Verzeichnis zu schauen und siehe da, es gab keine pdb Dateien für das Projekt. Um die pdb Dateien für das Projekt anzulegen, geht man in die Projekteinstellungen, dort auf „Build“ und dann auf „Advanced“.

In dem sich darauf öffnenden Dialog stellt man die „Debug info“ auf „full“. Damit sollten die PDB Dateien erzeugt werden und das debuggen wieder funktionieren.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/Program_database
http://msdn.microsoft.com/en-us/library/yd4f8bd1%28v=vs.71%29.aspx
http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx

MonoDevelop und GTK# und Windows 7 Probleme

Wenn man in MonoDevelop eine GTK# Anwendung schreibt und sie zwingt auf „jeder CPU“ zu laufen so wird diese Anwendung beim Start abstürzten. Meist sieht das dann so aus:

Unbehandelte Ausnahme: System.TypeInitializationException: 
Der Typeninitialisierer für "Gtk.Application" hat eine Ausnahme verursacht. 
System.BadImageFormatException: Es wurde versucht, eine Datei mit einem falschen Format zu laden.
(Ausnahme von HRESULT: 0x8007000B)

 bei GLib.Thread.glibsharp_g_thread_supported()
 bei GLib.Thread.get_Supported()
 bei Gtk.Application..cctor()
 
--- Ende der internen Ausnahmestapelüberwachung ---
 bei Gtk.Application.Init()
 bei testapp.MainClass.Main(String[] args) in d:\testapp\Main.cs:Zeile 10.

Das Problem ist wohl das es noch keine x64 GTK# Bibliothek für Windows gibt. Aus diesem Grund sollte man seine Assemblys auf x86 stellen, dann klappt es auch mit Windows 7.

Weitere Informationen gibt es unter:
http://mono.1490590.n4.nabble.com/windows-7-x64-and-gtk-app-td1516626.html