Heyho alle zusammen.
Ich entwickle derzeit ein 2D-Game-Framework für .Net, das ich auf das Tao-Framework sowie irrKlang stütze. Die Grundlage für die grafische Darstellung bildet OpenGL und theoretisch - habe es in Ermangelung entsprechender Betriebssysteme noch nicht ausprobiert - sollte das ganze via Mono auch plattformunabhängig sein.
Eigentlich entwickle ich das Framework nur für eigene Zwecke, aber ich spiele im Moment mit dem Gedanken, das Framework, wenn es fertig ist, online zu verkaufen - allerdings müsste ich dann eine kleine Lizenzgebühr an irrKlang zahlen und wäre mir dann doch gerne vorher sicher, dass ein Verkauf auch etwas einbringen würde. Mir schweben keine astronomischen Verkaufszahlen vor, auch reich werden muss ich dabei ja nicht - aber ein kleines Taschengeld würde den strapazierten Schülergeldbeutel doch sehr erfreuen.
Die Zielgruppe bilden in jedem Fall .Net-Hobbyisten, die auf XNA verzichten wollen, um auf plattformunabhängiger Basis via OpenGL spiele zu entwickeln.
Über die genaue Art des Verkaufs habe ich mir noch nicht viele Gedanken gemacht - spontan würden mir da die Möglichkeiten "Verkauf der .dll mit Tutorials & Nachschlagewerk", "Verkauf der .dll" und "Verkauf des Sourcecodes" einfallen. Gibt es bessere Möglichkeiten? Wie würde ich diese Möglichkeiten am besten (= guter Kompromiss aus "gewinnbringend" und "kundenfreundlich") umsetzen?
Was den Preis betrifft habe ich mir ebenfalls noch keine großen Gedanken gemacht - sollte jedenfalls in Anbetracht der vrgleichsweise kleinen Zielgruppe nicht zu viel sein. 15€? Muss ich mir noch überlegen - über Tips oder Vorschläge der Art "Ich würde XY bezahlen" würde ich mich freuen!
Damit ihr euch eine Vorstellung vomderzeitigen Stand des Moduls machen könne, liste ich mal hier die "Haupfeatures" in der Struktur, in der auch die .dll-Dateien vorliegen:
(Fett: Umgesetzt)
(Kursiv: Umsetzung im Gange)
(Unformatiert: Geplant)
Fetze.Module.ZweiDe
--> Befehlssatz zur zweidimensionalen grafischen Darstellung
--> OpenGL Koordinatensystem-Wrapper: (0, 0) oben Links, nach unten rechts steigend
--> Geometrische Objekte
--> Oval
--> Rect
--> Line
--> Point
--> Polygon
--> Grafik-Setup
--> Viewport, Ortho, Scissorbox (relativ zu VP u. Ortho)
--> (Vertex)Color, UV-Werte, sinnvoll vordefinierte Blendmodes
--> Handle, Origin, Rotation, Skalierung
--> Optional: Z-Buffering
--> Zugriff auf Stencil- u. Accumbuffer
--> Einfache Funktion zur direkten Zeitmessung
--> Funktionen zur Abfrage und Kontrolle von Maus & Tastatur
.Texture
--> Laden von Texturen aus nahezu beliebigem Grafikformat (powered by DevIL)
--> Optional: Pixelgenaue Darstellung von Texturen
--> Mipmapping, Anisotropic Filtering, Lokales Handling, optional völlig ohne FIlter bei Transformation
--> Herunterladen der Textur in den Ram-Speicher (= Umwandlung in Pixmap)
--> Render2Texture via FBO - alle Grafikoperationen können auf einer Textur ohne signifikante Zeiteinbuße normal durchgeführt werden. Bis auf den Stencilbuffer, der sich nicht in einem FBO initialisieren lassen will *grml*
.Pixmap
--> Laden von Pixmaps aus nahezu beliebigem Grafikformat (powered by DevIL)
--> Manueller per-pixel-Zugriff, Resize-Funktion
--> Hochladen von Pixmaps in den Videospeicher (= Umwandlung in Texture)
--> Rescale-Funktionen, Hq3x-Dreifachvergrößerung
.Sound
--> 2D / "3D", Soundeffekte, Streaming
--> Alles in allem: Das irrKlang-Sortiment an Soundkram. Um ehrlich zu sein, habe ich zum SOund nicht viel beigetragen, abgesehen davon, ihn in die ZweiDe-Struktur zu wrappen - was ich bei einem eventuellen Verkauf auch nicht zu verschweigen gedenke.
.Font
--> Laden von Bitmap- und TrueType-Fonts mit zwischengeschalteter Configfile
--> Darstellung von Text mit einem einfachen Befehl
.TextHelper
--> Einfach zu benutzende Helperklasse zur schnellen Darstellung von Text via Prerendering auf eine Textur
--> Automatische Erkennung von Textveränderungen / automatisch ausgelöstes Prerendering
--> Möglichkeit der Darstellung von formatiertem Text
--> Zeilenumbrüche
--> Farben
--> Versch. Schriftarten
--> Variabler Zeichenabstand
--> Tabbing
--> Zeilenweise Textausrichtung
--> Bilder / Texturen
--> Optional: WordWrap, max. Zeilenzahl
Fetze.Module.Fenster
--> ZweiDe basiertes Ingame-GUI Modul
--> 100% Skinbar, Skins Objektlokal nutzbar
--> Automatisches Parent-Handling
--> Cursor-Klasse mit erweiterten Mausabfragen / Optionen
--> Auf Geschwindigkeit optimierte Darstellung via Prerendering (Optional auch deaktivierbar)
--> GUIObjekt-Klasse, die geerbt werden kann, um eigene GUIObjekte zu konstruieren - interne Abläufe werden automatisch erledigt
.Window
--> Child-Positioning-Regeln beim Resizing
--> Titelleiste mit Statusbuttons, optionale Statuszeile
--> Menüpunkte
--> Diverse Zusatzregeln für Fensterverhalten, beispielsweise "Immer im Vordergrund"
.Button
--> Yo! (Optional mit Bild)
--> Kleiner Bonus: Da Fenster intern zur Textdarstellung ZweiDe.TextHelper verwendet, ist sätlicher dargestellter Text optional auch formatierbar!
--> Breiteres Sortiment an GUI-Objekten. (Derzeit ist das GUI-Modul noch kaum nutzbar bzw. WiP)
Fetze.Utility
--> Klassensammlung, die man "immer mal brauchen könnte"
--> Point<>, Rect<>
--> Vector2D
--> Func (Diverse mathematische und andere FUnktionen für dinge wie Abstandsberechnung, Schnittpunktbestimmung, etc.)
--> DynArray2D<>
--> LogFile
--> UpdateGrid, SizedUpdateGrid - beide zur optimierten positionsbasierten Objektfindung
--> Profiler
Und zu guter letzt noch ein paar Bilder, die zum Zeitpunkt ihrer Erstellung als kleine "TextHelper-Präsentation" gedacht waren, aber auch so vielleicht ganz gute Dienste leisten (Am besten in Reihenfolge ansehen):
www.fetzenet.de/th_wip2.jpg
www.fetzenet.de/th_wip3.jpg
www.fetzenet.de/th_wip4.jpg
www.fetzenet.de/th_wip5.jpg
www.fetzenet.de/th_wip6.jpg
www.fetzenet.de/th_wip7.jpg
Und noch zwei zum Rescaling-Verfahren von Pixmaps:
(Beachten: Hq3x unterstützt NUR Dreifachvergrößerung!)
Ich hoffe, die Vorstellung des Frameworks reicht für ein Urteil oder zumindest einen ausreichenden Eindruck aus. Außerdem hoffe ich, dass nach dieser langen "Projektbecshreibung" die ursprüngliche Frage nicht in Vergessenheit geraden ist *g*
Freue mich über jede konstruktive Antwort! :)
Moderiert von
Christian S.: Topic aus Freeware Projekte verschoben am Fr 07.03.2008 um 10:58