Artikel getaggt mit content

Content Compiler 3 hat den Beta Status erreicht!

Hallo allerseits, lang ist es her seit ich das letzte Mal meine Finger an der Tastatur wetzte um einen Blogeintrag zu verfassen. Es gab ja auch nicht so viel zu berichten ;-) . Nun ist aber da doch noch etwas, was von manchen sehnsüchtig erwartet wurde: Der neue Content Compiler 3! Da ich nun auch endlich die Developer Package hochgeladen habe, steht eurem Content Bauen nichts mehr im Wege! Finden tut ihr das gute Stück hier: Klick!

Daraus besteht dann auch meine Monatszusammenfassung: Ich hab diesen Monat nix anderes gemacht, außer den Content Compiler auf einen (halbwegs) vernünftigen und fertigen Stand zu bringen. Die Beta läuft einen Monat bis zum 28. Februar. Für dieses Datum sieht mein Zeitplan den Release Candidate vor… und am 31. März ist dann Release…. noch ein weiter Weg, denn die ToDo Liste ist lang (und wieder Pünktchen)….

Ich wäre also jedem dankbar, der konstruktive Vorschläge oder Bugs berichtet, z.B. per Mail an support<at>eagle-eye-studios<dot>net .

Das wär’s dann wieder einmal, vielleicht gibbet noch ein kleines Tutorial demnächst, mal sehen ob ich dran denke…

Tags: , , , ,

Monatszusammenfassung

Hallo lieber Leser/ liebe Leserin!
Ich habe soeben beschlossen, jeden Monat eine kleine Zusammenfassung über meine Projekte und ihren Status zu schreiben. Also fange ich mal damit am Ende diesen Monats an:
Punk numero eins:
Wie ich vielleicht schon vorher erwähnt hatte (Hab ich das? Hab ich das nicht? Ich weiß es nicht mehr.), ist meine Motivation am Projekt Duckshoot = null. Das liegt vor allem daran, dass es mir einfach keinen Spaß macht, einen Game Editor zu schreiben. Klar, jetzt wird der geneigte Leser wahrscheinlich denken: Jetzt heult der alte Sack hier rum, dabei gibt es doch genug Editoren im Netz. Klar gibt es das! Aber die sind meistens entweder unfertig, total kompliziert oder zu Engine gebunden. Bei der Northwindengine, welche ich für Duckshoot verwende gibt es einen Editor. Aber hat sich den mal jemand angeschaut? Von dem Funktionsumfang ist er vollkommen okay, ein bisschen hier schrauben, ein bisschen dort schrauben. Aber hat sich mal jemand die GUI angesehen? Absolut scheußlich! Von einem Editor erwarte ich eine vernünftige GUI, wo man sich gut zurechtfindet und die funktioniert. Außerdem mag ich diese selbstgezeichneten GUI Elemente absolut nicht. Zu einem vernünftigen Editor gehört für mich eine Windows Forms oder auch WPF GUI. Sogar mit einer Neoforce Oberfläche wäre ich noch zufrieden, aber bitte keine selbstgezeichnete Oberfläche, die nicht nur unprofessionell aussieht, sondern dazu auch noch ein wunderbares lila-farbenes Flackern an den Tag legt! Da hätte sich der Programmierer ruhig mehr Zeit für die Features nehmen können, denn die sind, soweit ich es über die GUI erforschen konnte, nämlich wirklich gut (z.B zufällige Platzierung einer Anzahl von Objekten wie Bäumen o.ä). Und ansonsten habe ich noch keinen 3D-Szeneeditor gefunden, der ein einfach zu integrierendes Format verwendet. Aber falls jemand einen solchen Editor kennt, lasse ich mich gerne überzeugen, über Vorschläge wäre ich also sehr dankbar.
Dann geht’s weiter zum nächsten Punkt auf meiner Liste: dem neuen Content Compiler 3. Hier bin ich im Moment dabei, schönes Multithreading einzubauen, das hab ich auch soweit fertig, allerdings bin ich mit meiner Fortschrittsanzeige noch nicht zufrieden. Die Grundfunktionalität, das Contentkompilieren, funktioniert aber schon schnell & zufriedenstellend. Als nachsten Meilenstein werde ich mich erstmal an das Speichern und Laden von Projekten machen.
Weiter zu Punkt drei: Die EES-Website.
Ich habe mich dazu entschlossen meine gesamte Entwicklungsarbeit erstmal hierdrauf zu lenken, denn ich bin mit der alten Seite einfach nicht mehr zufrieden. Komplett war sie sowieso nie, da ich während der Backend-Programmierung die Lust an der Site verlor. Der Hauptgrund dafür ist, der über die Monate zusammengeflickte, unorganisierte Code. Flexibel war das System auch nie wirklich, was wohl auch mit an meiner Faulheit lag :) Jetzt werde ich jedenfalls mich bemühen eine schöne, flexible neue Seite zu gestalten bzw. zu programmieren. Denn ich werde auch weiterhin auf PHP im Serverbereich setzen. Dem einen mag es vielleicht schon aufgefallen sein, die Seite ist bereits offline! Ja, ich möchte das Thema EES-Site auch möglichst schnell wieder vom Tisch haben und mich wieder meinen anderen Projekten zuwenden. Und ich hoffe zutiefst, dass mir das auch einigermaßen gelingt.

So, das war dann die erste Monatszusammenfassung. Ich glaube das war der bisher längste meiner Artikel. Liegt das vielleicht daran, dass ich so faul bin?

Ach ja, nochmal zur Erinnerung: Kennt jemand einen schönen/guten Editor, welcher die Szenen gut abspeichert, sodass man diese einfach in seine Engine integrieren/laden kann?

Tags: , , , , , ,

Dictionaries serialisieren in .NET

Während meiner Arbeit an dem Content Compiler 3 (Beschreibung siehe letzter Artikel), bin ich auf das Problem gestoßen, dass das .NET Dictionary nicht mittels XML serialisierbar ist. Kein Problem, schmeiß ich mal Google an, um zu wissen warum. Und siehe da: Das Dictionary wird, aus welchem Grund auch immer, nicht von IXmlSerializable abgeleitet. Also weiter gesucht und mehrere Ansätze gefunden. Den meines Erachtens besten Ansatz möchte ich hier mal vorstellen.

Und zwar holen wir das Ableiten von IXmlSerializable einfach nach. Dazu bauen wir uns unser eigenes Dictionary, welches wir dann von IXmlSerializable ableiten. Dazu müssen wir dann auch noch die von IXmlSerializable erforderten Methoden implementieren:


#region Usings
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
#endregion

[XmlRoot("Dictionary")]
public class SerializableDictionary : Dictionary, IXmlSerializable
{
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}

public void ReadXml(System.Xml.XmlReader reader)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));

bool wasEmpty = reader.IsEmptyElement;
reader.Read();

if (wasEmpty)
return;

while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
{
reader.ReadStartElement("item");

reader.ReadStartElement("key");
TKey key = (TKey)keySerializer.Deserialize(reader);
reader.ReadEndElement();

reader.ReadStartElement("value");
TValue value = (TValue)valueSerializer.Deserialize(reader);
reader.ReadEndElement();

this.Add(key, value);

reader.ReadEndElement();
reader.MoveToContent();
}
reader.ReadEndElement();
}

public void WriteXml(System.Xml.XmlWriter writer)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
foreach (TKey key in this.Keys)
{
writer.WriteStartElement("item");

writer.WriteStartElement("key");
keySerializer.Serialize(writer, key);
writer.WriteEndElement();

writer.WriteStartElement("value");
TValue value = this[key];
valueSerializer.Serialize(writer, value);
writer.WriteEndElement();

writer.WriteEndElement();
}
}
#endregion
}

Damit haben wir dann den IXmlSerializable Member implementiert und wir können nun fröhlich unser Dictionary serialisieren. Wer noch Fragen hat, ab in die Kommentare damit ;)

(Code wurde in abgeändertert Form von Paul Welter’s Blog übernommen)

Tags: , , , , , ,

Content Compiler 2 Service Pack 1

Moin,

und schon wieder gibts ne neue Content Compiler Version :D Wie von vielen Leuten gewünscht gibt es jetzt Drag und Drop Support zum einfacheren hinzufügen von Dateien.

Zum Download

mfG Flo

Tags: , , , ,