Tag Archive: Projekte


Meshes

Und mal wieder ein Tool für Xrodon: Der Mesh Editor.

Allgemein

Da Xrodon II ja irgendwann mal mehr als ein Paar dutzend Spielobjekte haben wird, muss bei der Darstellung auch auf Performance geachtet werden. Abgesehen von den andren Wahnsinnsmöglichkeiten, die Ogre3D in dem Performancesektor bietet, gibt es ja noch das gute alte Level of Detail. Und damit sich kein Grafiker unnötig damit herumplagen muss, dass per Komandozeile zu generieren, hab ich jetzt einen Editor für Geschrieben. Hier kann man angeben, welches LOD ab wann geladen werden soll, und wieviel Prozent der Vertices pro LOD wegfallen sollen,  und diese dann generieren. (Was schlussendlich Ogre selber übernimmt. Siehe Ogre::Mesh::generateLodLevels ;) ) Eigentlich hatte ich früher noch an ein Paar ausbaumöglichkeiten für den Editor gedacht, allerdings scheint Ogre nicht allzuviele Modifikationen am Algo zu erlauben, ohne dass man im Code der Engine rumpfuscht. (mein persönlicher Eindruck)

Technik

Wie schon der Languageeditor ist das ganze in wxWidgets (unter erweiterung durch eigene Controls) geschrieben, Ogre3D ist natürlich auch dabei.  Ansonsten gibts eigentlich nicht viel Interessantes dazu zu sagen, da er mehr die Möglichkeiten von Ogre3D in eine Grafische Oberfläche kapselt.

“Bildchen”

Und natürlich gibts noch nen Screen ;)

Hier ist der Screen. Die Anzeige unten zeigt an, wieweit die Kamera von der Scenenode entfernt ist.

Und nachdem ich schon länger nichtsmehr von mir verlauten lassen habe, ein neuer Artikel:

Aktuell schlag ich mich damit rum, mehrere Sprachen zu unterstützen. Da Xrodon MyGui verwendet, wird dessen Languagesystem verwendet.

Sprachen und MyGUI

Erstaunlicherweise hat MyGUI zwar ein Sprachsystem, allerdings beschränkt sich dieses darauf die Sprachen zu verwalten. Die Einzelnen Einträge sind im klassischen Wörterbuchprinzip mit Tag und zugehörigem Value gespeichert. Dabei wird das ganze aus einer oder Mehreren XML-Dateien ausgelesen. Man hat eine XML, in der die Einzelnen Sprachen “deklariert” sind, und zugehörige Source xml’s.

Was ich persönlich sehr schade finde, ist das die Texte der Steuerelemente dann nicht automatisch gesetzt werden, bei einem Sprachwechsel. Das muss man selber tun. Zu diesem Zweck gibt es ein Multi-Delegate im MyGUI::LanguageManager-Singleton, der eine Callbackmöglichkeit bei Sprachwechsel bietet.

EDIT: Er macht das Doch. Wenn in der Caption des Widgets #{derNamedesTags} is, macht ers.

Dabei muss man allerdings feststellen, dass es sich schwierig gestaltet sich durch die Einzenlen Fensters eines MyGUI-Roots zu iterieren. Dieser bietet nämlich nur eine Methode zum bekommen des Enumerators auf das erste Top-Level Window an, aber nicht auf die anderen. Deshalb muss die ganze GUI für solche Zwecke einem einzigen MyGUI::Widget zugeordnet sein, womit sich mit folgendem Code rekursiv durch die einzelenen Childs Iterieren lässt.


void setWidgetLang (MyGUI::Widget* wid )
{
if (wid->getChildCount () == 0)
{
// Tu den Text ändern
return;
}

for (size_t i = 0; i< wid->getChildCount(); i++)
{
setWidgetLang (wid->getChildAt (i));
}
}

Der Xrodon Languageeditor

Ein Screenshot ausm Xrodon Languageeditor

Ein Screenshot vom Xrodon Languageeditor

Doch wer will schon jeden Tag in der XML-Datei bearbeiten,

das könnnen bei einem

Großen Projekt ja mehere Tausend werden, und das auf mehrere Dateien verteilt. Daher gibt es für Xrodon einen Spracheditor, in dem diese gesamte Bearbeitung komfortabel geschehen kann.

Im TreeView Rechts kann man nach Sprache gruppiert die einzelnen Dateien auswählen, und dann die Tags einer solchen Datei komfortabel in einer Tabelle bearbeiten.

Der Editor selbst ist unter der Verwendung von wxWidgets geschrieben.


void setWidgetLang (MyGUI::Widget* wid )
{
// Rekursiv
if (wid->getChildCount () == 0)
{
wid->setCaption (MyGUI::LanguageManager::getInstance().getTag (wid->getCaption()));
return;
}

for (size_t i = 0; i< wid->getChildCount(); i++)
{
setWidgetLang (wid->getChildAt (i));
}
}

Mitarbeit an Xrodon II

Von nun an werde ich an Xrodon II (alternativlink hier) mitarbeiten. Daher wird es weniger News zu Bomb3D geben, da ich mich ansonsten mehr auf die Technische Seite Konzentrieren werde :)

Und ich war emsig am arbeiten :)

Der Mapeditor ist schon Halbfertig und komplett funktionsfähig. Jetzt werden endlich mehr Maps entstehen.

Hier einmal 2 Screens:

Hier der Editor im Editing-Prozess

Der Wizard für eine Neue Karte

Und auch Alpha 2 ist released. Diesmal ist (erstaunlicherweise) der ungepackte Ordner, trotz 20MB neuen daten um fast 20% kleiner als bei Alpha1.

als .7Zip (11MB)

als .zip (16MB)

WICHTIG: Es wird das Visual c++ 2010 Redistributable benötigt. Es kann hier heruntergeladen werden. Daher rühren alle Fehler vonwegen MSVPP100.dll fehlt, und ähnliche.

Des weiteren übernehme ich wie immer keine Haftung für Schäden an ihrem Computer :)

Was mich von denjenigen, die sie herunterladen, interessiert, ist, ob auf welchen Grafikeinstellungen es läuft. Ich habe auf einem PC getestet, da gings mit DX9 gar nicht, und mit OpenGL nur auf niedrigsten Einstellungen.

Also wäre freundlich mich über Qualität in Kenntniss zu setzen, diese erkennt ihr daran, ob das Terrain, wie auf dem Screenshot weiter unten mehrere verschiedene Texturen (Gebirge, …) und die Blöcke reflexionen haben.

Für die ganz faulen noch ein Template:

RenderSystem: Direct3D9 OpenGL

Qualität: Gut Schlecht

Known Issues:

  • Wenn kein Level ausgewählt wird, hängt sich das Hauptmanü auf.
  • Bei OpenGL ist die Grafikqualität automatisch gleich 0, da dort die Shader nicht funktionieren. (wird mit alpha 3 sowieso rausgeschmissen)

Gekürztes Changelog:

###### NEW FEATURES
- Faster-Item
- Maximum für Spielergeschwindigkeit
- Modding erleichtert
- Random Spawn für Items
- Items drehen sich nun
- neuer Shader für Faster-Item
- und vieles mehr, was ich nicht mitgeschrieben habe

## TODO
- Spielerfarben
- Warnings Weg
- Neue Items
- Level Automatisch anwählen am anfang

## KNOWN ISSUES
- Wenn kein Level ausgewählt wird, gibt es eine zugriffsverletzung
- Manchmal bekommt man unendlich viele Bomben

###### BUGFIXES
- # Wenn beide Spieler gleichzeitig explodieren, dann gibt es eine Exception, und das Programm fährt sich herunter SOLVED
- # Bei OpenGL ist die Grafikqualität automatisch gleich 0, da dort die Shader nicht funktionieren. SOLVED
- # Wenn eine Bombe auf dem Selben Feld wie ein Spieler ist Explodiert, dann gibt es eine Exception, und das Programm fährt sich herunter SOLVED
- # Explosion geht durch unpassierbare Blöcke durch SOLVED

Als nächstes werde ich ausser den ToDo’s haputsächlich in Angriff nehmen:

  • Level Editor
  • PostProcessing
  • Rendering in mehrere Render-Targets auf einmal
  • Ein Paar Tuts
Follow

Bekomme jeden neuen Artikel in deinen Posteingang.