jME unter Eclipse einrichten

Ich beschreibe hier eine einfache möglichkeit jME unter Windows und Eclipse einzurichten. Ich weis nicht ob es der Optimale weg ist, aber er funktioniert. 

Als Voraussetzung müssen erfüllt sein:
Betriebssystem Windows, installierte JRE und JDK sowie Eclipse.

Folgende Schritte sind zum Einrichten notwendig:

  • Download der jMonkeyEngine

    Diese kann unter http://code.google.com/p/jmonkeyengine
    heruntergeladen werden. Ich empfehle jME_2.0_Complete_(r4093) für GameDeveloper. Und entpacken sie die Zip-Datei in ein beliebiges Verzeichnis.
     
  • Anlegen eines neuen Projekts in Eclipse

    File -> New Project -> Auswählen des Menüpunkts „Java Project“, Projektnamen eingeben und bestätigen.

  • Erstellen Sie nun eine neue Java-Main Klasse.

    Rechtsklicken Sie auf das gerade erstellte Project, dann Properties. Im nun erscheinenden Menü müssen unter dem Punkt JavaBuildPath-> Libraries die JARS aus der JME-Zip-Datei hinzugefügt werden (Siehe Screenshot 3).Des Weiteren müssen unter Run / Debugg Settings die Einstellungen der Main Datei angepasst werden. Unter dem Reiter „Argument“s muss im Feld "VM Arguments" der Pfad zum lib\\natives Ordner aus dem Zip-Archiv angegeben werden (siehe Screenshot 1 und 2).
     

WxRuby - TaskBarIcon

Mit WxRuby ist es möglich TaskBarIcons zu erstelle. Abhänig vom genutzten Betriebssystem werden diese unterschiedlich Dargestellt. Leider ist es nicht möglich die aus Windows bekannten Ballong-Tool-Tipps zu verwenden.

Anbei ein Beispiel:

 require "wx" 
 include Wx class MinimalApp < App
  def on_init  
   mainWindow=Frame.new(nil, -1, "The Bare Minimum")
   mainWindow.icon=Wx::Icon.new("ragersLogoAll.ico", BITMAP_TYPE_ICO)
   taskIcon=TaskBarIcon.new() taskIcon.set_icon(Wx::Icon.new("ragersLogoAll.ico", BITMAP_TYPE_ICO),"Info Text") 
   mainWindow.show() 
  end 
 end 
 MinimalApp.new.main_loop() 

Applications-Icons mit WxRuby

Lange habe ich versucht eine WxRuby Anwendung mit Icon zu erstellen. Das ist auch nicht schwer, das einzige Problem ist das es dazu nirgends eine brauchbare Anleitung oder ein brauchbares Beispiel gibt.

require "wx" include Wx 
 class MinimalApp < App 
   def on_ini main
     Window=Frame.new(nil, -1, "The Bare Minimum") 
     mainWindow.icon=Wx::Icon.new("ragersLogoAll.ico", BITMAP_TYPE_ICO)
     mainWindow.show() 
   end 
 end 
 MinimalApp.new.main_loop()

Andere Icon-Formate können ebenfalls eingebunden werden. Dazu muss nur die entsprechende Konstante "bitmap_type" geändert werden. Mehr dazu findet ihr unter wxruby.rubyforge.org.

Deutsche Sonderzeichen in einer Ruby Konsolenanwendung

Leider ist es mit Ruby nicht direkt möglich deutsche Sonderzeichen in einer Konsolenanwendung auszugeben. Aber er gibt eine Möglichkeit sie trotzdem zu verwenden, dafür ist eine Zeichenkettenkonvertierung nötig:

require "iconv"
   puts "Anbei meine Sonderzeichen:\n"  
   puts Iconv.conv("CP850","ISO-8859-1","ÄÖÜäöüß")  
   puts "\n\n"  
 system("PAUSE")  

WxRuby Tutorial: Erstellen eines Fensters

###Die Absoluten Grundlagen

Das Programmieren von GUIs ist eine der schönsten Aufgaben die ein Programmierer haben kann. Man schreibt etwas Code, und Volai, es erschein eine schöne GUI, fast  wie magisch auf dem Bildschirm. Es ist ein großer Unterschied ob man einen Parser oder Compiler schreibt (was natürlich auch eine interessante Aufgabe ist), oder ob man eine GUI erstellt. Den Parser oder Compiler kann man nämlich nicht sehen.Das programmieren mit WxRuby ist dabei keine Ausnahme. Mit WxRuby steht einem eine große Auswahl, von einer länderübergreifender Community ausführlich getesteter WxWidgets zu Verfügung - und das beste ist, man kann sie jetzt auch mit Ruby einsetzen. Anstatt lange darüber zu reden wie WxRuby funktioniert beginnen wir am besten mit einem einfachen Beispiel, welches wir anschließend erklären.

require "wx"
include Wx 

 class MinimalApp < App
     def on_init
         Frame.new(nil, -1, "The Bare Minimum").show()
     end
 end
 MinimalApp.new.main_loop

Das war es schon, sehr kurz und einfach, Die erste Zeile require „wx“ muss in jedem Programm auftauchen das WxRuby verwendet – es macht Ruby mit dem WxRuby-Modul bekannt. In der zweiten Zeile wird WxRuby eingebunden, dadurch müssen wie nicht immer den gesamten Klassennamen angeben wenn wir Funktionen aus WxRuby benutzen wollen. Anstatt Wx:App oder Wx:Frame zu schreiben, können wir einfach App oder Frame benutzen. Das ist möglich weil wir das Modul dem Namespace des Programms hinzugefügt haben. Das ist super wenn man mal schnell etwas testen will oder ein Beispiel (oder Tutorial) schreibt. Allerdings empfehle ich bei größeren Programmen immer das WX-Prefix zu verwenden, da man dadurch besser erkennt was zu WxRuby gehört und was nicht.
Die nächste Zeile class MinimalApp < App wird meistens mit dem von euch geschribeenn Code idetisch sein. Jedes WxRuby-Programm muss von der Klasse App abgeleitet werden. App ist die Main-Application-Class, sie ist dafür verantwortlich das Programm zu starten und die GUI bei jedem Schleifendurchlauf zu verwalten. def on_init überschreibt den Konstruktor der App Klasse. Der Konstruktor wird immer aufgerufen wenn das Programm gestartet wird.
 In diesem Beispiel-Programm wird innerhalb unseres Konstruktors eine Frame erstellt. Dieser Frame sagen wir dann auch noch dass sie sich selbst zeigen soll.  Frame.new(nil, -1, "The Bare Minimum").show()

Betrachten wir das ganze jetzt etwas genauer:

  1. Das erste Argument das dem Construktor übergeben wird, ist nil (in anderen Programiersprachen auch oft als NULL bezeichnet). Es sagt WxRuby das die erstellte Frame kein Eltern-Fenster hat.
  2. Das zweite Argument ist der Identifier. Über den Identifier kann das Widget immer wieder angesprochen werden. 
  3. Das dritte Argument ist der Titel des Fensters der auch in der Taskleiste erscheint.
  4. Das vierte Argument das wir hier aber nicht verwenden, ist die Position des Fensters. Es könnte so aussehen Point.new(100,100).
  5. Das fünfte Argument das wir ebenfalls nicht verwenden, gibt die Größe des Fensters an. Bsp: Size.new(600,480).
  6. Das letzte Argument das wir hier in diesem Beispiel auch nicht verwenden gibt die Art des Rahmens an. Der Standartwert ist DEFAULT_FRAME_STYLE.
     

Um Platz zu sparen rufe ich die Metode show() auf. Diese sagt WxRuby das die Frame angezeigt werden soll. Wird „show“ nicht aufgerufen wird der Code ausgeführt ohne das etwas sichtbares passiert. Hinweis: show() akzeptiert einen boolean-Wert wenn man ein Fenster wieder verstecken will kann man einfach show(false) aufrufen.

Am Ende rufe ich MinimalApp.new.main_loop auf. Auch hier habe ich die kurzschreibweise verwendet. Durch den Aufruf der main_loop Methode wird das Programm ausgeführt.

Das war’s. Hier noch mal die wichtigsten Schritte:

  1. require "wx"
  2. include Wx
  3. Erstellen einer Klasse die von App ableitet
  4. Überschreiben des Konstruktors on_init()
  5. Erstellen einer neuen Instanz der Abgeleiteten App-Klasse
  6. Aufrufen der main_loop() Methode

Übersetzt aus dem englischen:
http://wxruby.rubyforge.org/wiki/wiki.pl?Getting_Started

PHP-Ext eine PHP-Widget-Bibliothek

PHP-Ext ist eine auf Ext aufsetzente PHP-Bibliothek. Sie ermöglicht das einvache verwenden von den aus Ext bekannten Widgets. Dabei muss kein JavaScript-Code geschrieben werden, der benötigte Code wird automatisch erstellt. Momentan sind noch nicht alle Funktionen von Ext aus PHP-Ext ansprechbar, aber ich gehe davon aus dass diese bald ergänzt werden. PHP-Ext kann bei  php-ext.quimera-solutions.com heruntergeladen werden.

CrazyBump & ShaderMap - BumpMaps einfach erstellen

Wer schon einmal versucht hat ohne besondere Hilfsmittel eine Normal - oder Specular-Map zu erstellen weis wie schwierig das ist. Momentan gibt es zwei bekannte Produkte die einem bei der Erstellung unter die Arme greifen können. CrazyBump ist hierbei wahrscheinlich das bekanntere der beiden. CrazyBump macht das Bumpmapping zum Kinderspiel. Einfach Textur laden ein paar einfache Einstellungen treffen und fertig. Leider sind die kostenlosen Beta-Versionen von CrazyBump nicht mehr erhältlich (und auch nicht merhr Lauffähig), da die Entwicklung abgeschlossen ist. Allerdings kann man sich immer noch eine kostenlose zeitlich begrenzte Demoversion auf der Homepage herunterladen. Die Vollversionen die ebenfalls über die Homepage bezogen werden kann Kostet zwischen 69 $ und 299$. Ein nicht ganz so komfortabler weg ist das Tool „ShaderMap“, in der Command-Line-Version ist dieses für den privaten Einsatz kostenlos.