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: , , , , , ,

Statusbericht: Content Compiler 3

Nach einem Monat Artikelstille melde ich mich mal wieder mit einem Statusbericht. Die Funkstille hat natürlich auch ihren Grund, diesmal die ganzen Arbeiten, Tests und so weiter vor den Zeugnissen. Aber der Stress ist jetzt vorbei (heute Zeugniskonferenzen ._.) und somit bleibt auch wieder ein wenig Zeit fürs Proggen, vorrausgesetzt ich hab Lust dazu.
Naja zur Zeit sieht der Content Compiler 3 schon recht gut aus, wenn auch noch der größte Teil der Programmlogik fehlt, denn man kann gerade mal ein altes Projekt upgraden. Aber dafür macht er optisch schon einiges her :D

Content Compiler Statusbericht

Content Compiler Statusbericht Foto


Dazu muss ich sagen, dass sich gerade im Design eine Komponente die ich benutze, das AvalonDock, um ein vielfaches verbessert hat. So werden jetzt zum Bleistift verschiedene Themes angeboten, wo früher nur die Möglichkeit bestand, die Farbe zu ändern.
Da der neue Content Compiler ja auch Build-Parameter unterstützt und es somit natürlich spezielle Attribute gibt, brauchte es natürlich eine Toolbox. Und schon hat sich der Einbau von einer Docking-Komponente schon gelohnt. Das die komplette GUI in WPF geschrieben ist, brauche ich ja nicht zu erwähnen, oder? ;)
Hiermit verbleibe ich bis zum nächsten Update,
Euer
Flo

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: , , , , , ,

Ein neuer Bildschirm und ein neuer Content Compiler

Endlich habe ich ihn: Meinen zweiten Bildschirm. Jetzt kann ich mich richtig als “professioneller” Entwickler fühlen! :D Mein neues Schätzchen heißt W2261VP und wurde von LG hergestellt. Es hat weiterhin eine Auflösung von 1920×1080 Pixeln (also eine 16:9 Kiste) und hat somit FullHD :) Vielleicht poste ich auch noch ein Bildchen, vorausgesetzt die SD-Karte von meiner Kamera funktioniert wieder…

UPDATE: So , SD Karte formatiert, geht wieder. Und hier das Bildchen von meinem Desktop:

Naja nach dem bisschen Angeberei kommen wir zum zweiten Punkt an der Tagesordnung, der da heißt: Content Compiler 3.
Also, wie bei jedem großen Update des Funktionsumfangs, gibt es auch diesmal gleich wieder eine völlig neu geschriebene Content Compiler Version. Zum neuen Funktionsumfang gehören sowohl Spritefont-Unterstützung als auch die Unterstützung von Compiler Parametern und Eigenen Importern und Prozessoren. Diese können bequem in den Optionen hinzugefügt oder entfernt werden. Genauso gibt es ein neues Projektformat, welches im komprimierten Zustand gespeichert wird und so weniger Platz verbraucht, als auch die Übersicht besser ist. Alte Projekte können problemlos über den Upgradeassistenten auf die neue Projektversion gebracht werden ohne das gesamte Projekt neu zu erstellen. Und das Beste zum Schluss: Die Benutzeroberfläche ist mal wieder neu designt worden! Ein Ribbon im Office2010 Stil und andockbare Fenster sind jetzt enthalten. Im Moment ist der Compiler noch kurz vor dem CTP Status, aber ich rechne mit einem eventuellen Betarelease Mitte nächsten Monats.

Das wars dann erstmal wieder, ich hoffe bis zum Update dauert es nicht allzu lang.

Es grüßt seine lieben Follower und Blogreader

Flo

Statusbericht: Duckshoot

Ja ich weiß es ist schon länger her seit ich mal wieder ein Update zu Duckshoot rausgegeben hab, aber wer immer schön meinen Twitter mitliest hat ja schon das ein oder andere mitgekriegt. Also verwenden tue ich jetzt die NorthwindEngine, da es so ziemlich die einzige einfache und voralledem fortgeschrittendste ist. Naja jedenfalls sagt mir der Editor der mitgeliefert wird nicht wirklich zu, ziemliche Augenkrebs-Gefahr! So hab ich eben angefangen meinen eigenen Editor zu basteln. Und da dies ja hier Statusupdate heisst poste ich mal ein Bildchen:

Mein knuffiger Editor *g*

mfG

Flo

Settingsdateien in Visual C#

In letzter Zeit habe ich mal drauf geachtet wie C#-Programmierer ihre Einstellungen für Anwendungen speichern. Dabei ist mir aufgefallen, dass Anfänger in C# häufig in stinknormalen Textdateien abspeichern und diese mit neuer Endung versehen. Oder eine (möchtegern)XML Datei verwenden, die total das Schema verfehlt. Alles unprofessionell ;) Man sollte zumindest den XML-Serializer verwenden oder gleich noch besser die Möglichkeit von VisualStudio bzw. Visual C# Einstellungsdateien(.settings) zu verwenden. Diese werden dann je nach Einstellungen sofort oder beim Build serialisiert und für Anwendungseinstellungen z.B. als app.conf im Bin Ordner abgespeichert. Das macht dem faulen Informatiker noch weniger Arbeit :) Man kann sogar eigene Datentypen auswählen. Einzige Beschränkung ist dass diese in einer seperaten Assembly stecken müssen, aber das ist meistens ja kein Problem, oder?

Jetzt mag sich manch einer Fragen: “Schön und gut jetzt hab ich die Settingsdatei. Und wie greif ich drauf zu?”

Demonstrieren wir das mal an einem Beispielprojekt: Als erstes Erstellen wir ein neues WinForms Projekt. Und wie wir sehen, tadaa, die Einstellungsdatei ist gleich da im Properties-Ordner:

Wenn wir jetzt einen Doppelklick dadrauf machen, können wir unsere Einstellungen eintragen. Dabei gilt folgendes:

  1. Links den Namen für die Einstellung eintragen wie z.B. “TestSetting” oder so
  2. Datentyp des Inhalts auswählen, beliebige andere können über ‘Durchsuchen’ ausgewählt werden.
  3. Wählen ob die Einstellungen für die gesamte Anwendung gelten oder nur für den aktuellen Benutzer.
  4. Wert eintragen.

Fertig ist die Einstellungsdatei.

Jetzt können wir über folgenden Aufruf auf unsere Einstellungen zugreifen:

Properties.Settings.Default.TestSetting

Wobei TestSetting natürlich durch den Namen der Einstellung zu ersetzen ist.
Bauen wir uns jetzt ein Formular mit einem Button und einem Label und weisen dem Text des Labels unsere “TestSetting” zu und lassen den Button nur anzeigen wenn IsCool “wahr” ist, dann sieht das ganze so aus:

Das sind natürlich nur die Basics von Settings Dateien. Da lassen sich noch viele andere tolle Dinge mit anstellen aber dazu vielleicht ein anderes Mal mehr ;)

Bis dann

Flo

Content Compiler Build Framework released

Moinsen,

Das CCompiler Build Framework ist hochgeladen.

Nach mehreren Anfragen hab ich mich doch dazu durchgerungen das Build Framework schon hochzuladen, wobei ich das doch erst mit dem GUI zusammen machen wollte :(

Nun denn, ein ausreichend kommentiertes (eigtl fast schon verspammtes) Sample ist auch dabei.

Ihr findet es unter Personal Progs

Happy Building,

Flo

Content Pipeline und MS Build

Hallo ich bins mal wieder ;)

Nachdem ich heute das Build Framework für die nächste Version des Content Compiler fertiggestellt hab, muss ich doch mal loswerden, wie einfach das Microsoft Build Framework/Microsoft Build Engine zu benutzen ist :) . Einfach Engine initialisieren, BuildProject erstellen, Items und ihre MetaDaten hinzufügen, Build Target basteln, fertig.

Nun aber zu meinem Content Build “Framework”. Ich hab mir diesmal gedacht, es ein wenig dynamischer zu gestalten gegenüber der jetzigen Compiler Version. Man kann jetzt Plugins benutzen, welche vor und nach dem Build auf die Dateien und Optionen zugreifen können. Dies ermöglicht z.B. ein einfaches Verschieben der Dateien nach dem Build oder die Ausführung eines Spiels, Editors was auch immer. Die Importer und Processor werden über Klassen angesprochen, welche Assemblynamen, Processor/Importer Namen, sowie den Typ der Datei enthalten, sowie die jeweiligen Extensions. So können die entsprechenden Importer/Processor vom Compiler kinderleicht zugeordnet werden und damit ist es endlich auch möglich eigene Importer/Processor zu verwenden.

Das Assoziations-Prinzip der Importer/Processor mit den Dateien ist recht einfach: Die Dateiendung der aktuellen Datei wird ermittelt und mit den in den Importerklassen verglichen. Ist die Endung vorhanden, wird Name des Importers und Medientyp gespeichert. Danach wird anhand des Medientyps der Processor ermittelt. Damit sind dann alle Anforderungen für ein glückliches Erstellen vorhanden :)

Demnächst werd ich dann mal mein Framework hochladen, damit es auch bewundert werden kann. Danach mach ich mich dann gleich ans Zusammenbauen des Compiler GUI.

In diesem Sinne, ein fröhliches Content Bauen :D

mfG

Flo

Ein Update!

Hallo zusammen,

nach langer Zeit gibts endlich mal wieder ein Update. In letzter Zeit hatte ich ein bisschen mehr zu tun, da ich jetzt irgenwie voll in die Computer AG in meiner Schule eingebunden bin (jahaa ich schreib das grad von einem Schul-Netbook ;) ) daher bin ich auch nicht wirklich viel weiter gekommen. Habe wohl mal wieder die Spontanität des Lebens unterschätzt. Naja jedenfalls beschäftige ich mich wegen oben genannten jetzt mehr mit Ubuntu und da ist mir grad ein ziemlich geniales Programm zwischen die Finger gekommen. Es nennt sich Unison und kann Daten abgleichen und wenn auf der einen Seite Veränderungen festgestellt werden diese gleich automatisch synchronisieren, bzw. nur die Änderungen kopieren. D.h. man braucht endlich keine GB Images mehr durch die Gegend zu schieben. Hier mal ein kleines Bild von einem meiner Testläufe:

Das wars dann erstmal wieder, vielleicht gibts ja demnächst nochmal wieder ein Update, mal sehen.

mfG Flo

Tags: , , , , ,

Windows 7 GodMode

Moin, moin,
heute hab ich auf Computerbild.de eine Möglichkeit gefunden die umständliche Systemsteuerung von Windoof 7 zu umgehen. Dies nennt sich wirklich GodMode und wird folgendermaßen aktiviert, aber man sollte sich unter dem Namen nicht zuviel versprechen ;)

  1. Man lege einen neuen Ordner auf dem Dektop an.
  2. Man benenne diesen Ordner wie folgt: GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
  3. Man drücke Enter.
  4. Das Symbol ändert sich von einem Ordner zu einem Systemsteuerungssymbol.
  5. Wenn man auf “GodMode” doppelklickt, öffnet sich ein Fenster, indem sämtliche Systemsteuerungsoptionen detailliert dargestellt werden. Vorbei ist das stundenlange Suchen nach bestimmten Optionen.

Anscheinend war den Entwicklern die Systemsteuerung auch zu unübersichtlich :lol:

Viel Spaß damit,

Flo

Videos, Slideshows and Podcasts by Cincopa Wordpress Plugin

Florian Vicks Blog is Digg proof thanks to caching by WP Super Cache