Krissel095 Member
Anmeldedatum: 21.12.2009 Beiträge: 97
|
Verfasst am: 10.05.2012, 08:23 Titel: UI Engine |
|
|
Eine auf echter Geometrie basierende, Theme-fähige UI Engine, die ich für mein aktuelles Pokemon MMORPG geschrieben habe.
Momentan sind gängige Controls wie Textboxen, Panels, Windows, Buttons, Scrollbars, Checkboxen usw. bereits implementiert. Eigene Controls können über die Beerbung von Widget erstellt werden.
Die Controls werden dabei über RenderTargets gacached, sodass die Geometrie nur bei Änderungen neu gezeichnet werden muss.
Für eigene Themes kann man über die Graphics2D Klasse, sowie einen kompletten Graphics-Namespace bekannte Funktionen aus GDI+ nutzen, um z.B. Shapes, Brushes und Pens zu erstellen und diese dann in ein WidgetView hinzuzufügen.
Arbeitszeit: etwa 4-6 Wochen. |
|
| Nach oben |
|

|
JeReT Member
Anmeldedatum: 19.07.2007 Beiträge: 3248 Wohnort: µnchen
|
Verfasst am: 10.05.2012, 14:17 Titel: |
|
|
Da gibt es absolut nichts zu meckern! Sieht top aus! Sehr gute arbeit hast du da scheinbar geleistet. Daher gibt es von mir die bestnote.
Das einzige manko ist, dass dieser Windows-Style zu sogut wie keinem Spiel passt. Aber ich nehme an, man kann die Themes ganz nach seinen Bedürfnissen gestalten.
Wenn du dafür einen Editor schreibst, würde ich mich sogar bereit erklären, mein mächtiges XML-Serialisierungsframework dir zur Verfügung zu stellen und eine angepasste Klasse zu schreiben, mit der man mit einem methodenaufruf einen theme oder einen menu-screen (de-)serialisieren kann. Bedingung wäre aber, dass auch ich die GUI-Engine verwenden darf
EDIT: Ich weiß, dass du einen Shader zum Maskieren verwendest. Sind sonst noch andere eigene Shader im Spiel?Es geht mir darum, ob man das ganze für das Windows Phone zum laufen bekommt... _________________
Shapes |
|
| Nach oben |
|

|
Luux Member
Anmeldedatum: 11.12.2011 Beiträge: 118
|
Verfasst am: 10.05.2012, 14:30 Titel: |
|
|
Sieht sehr gut aus
Wirst du das ganze vielleicht irgendwann OpenSource machen? Wäre nicht nur für Anfänger interessant  |
|
| Nach oben |
|

|
Krissel095 Member
Anmeldedatum: 21.12.2009 Beiträge: 97
|
Verfasst am: 10.05.2012, 16:44 Titel: |
|
|
@JeReT: Der einzige Shader, der hier verwendet wird ist ein eigener AlphaMask Effect, der die über Geometrie erstellte Maske mit dem Brush kombiniert. Ansonsten läuft alles über ein PrimitiveBatch und ein SpriteBatch.
@Luux: Da wir sowieso planen, unsere Engine früher oder später Open-Source zu machen, wird wahrscheinlich auch die GUI Engine Open-Source. Momentan gibt es aber noch keine wirklich für die Öffentlichkeit zugängliche Version, da ich mich noch um ein Memory Leak kümmern muss, dass durch die RenderTargets verursacht wird. Bis ich das gefunden habe, wird es noch ein bisschen dauern.
MfG |
|
| Nach oben |
|

|
Razer Member
Anmeldedatum: 31.05.2009 Beiträge: 1796
|
Verfasst am: 13.05.2012, 12:33 Titel: |
|
|
Wow, echt fantastische Arbeit
Wär natürlich nice wenn das mal Opensource/Closed-Source o.Ä. werden würde, ein System ala GDI+ für XNA wär echt top...
Kannst du vielleicht noch weitere Screenshots posten? Vielleicht ein paar andere Controls, anderes Theme oder andere Brushes usw.?
Wenn dir das nicht zu viel Arbeit ist natürlich - würd das gerne sehen
Auch von mir gibt´s die 1
MfG
R |
|
| Nach oben |
|

|
Bert Member
Anmeldedatum: 19.06.2011 Beiträge: 162
|
Verfasst am: 26.05.2012, 20:26 Titel: |
|
|
Wie hast du diese schönen Textboxen hinbekommen ?
Un who the fuck hat ne 6 gegeben ? _________________ Nein ! nicht Bert ! |
|
| Nach oben |
|

|
Krissel095 Member
Anmeldedatum: 21.12.2009 Beiträge: 97
|
Verfasst am: 27.05.2012, 19:19 Titel: |
|
|
Die Textboxen werden über unser Graphics2D Objekt gerendert. Jedes Widget hat ein WidgetView, das vom aktuell geladenen Theme erstellt wird. Ein WidgetView enthält geometrische Formen, sowie Brushes und Pens, die die Darstellung des Widgets übernehmen. Im Fall der Textbox ist das ein abgerundetes Rechteck für den Hintergrund mit einem LinearGradientBrush und ein halbtransparenter, schwarzer Pen.
Falls du die Eingabe an sich meinst arbeiten wir mit einem NativeEventInput, der quasi die Systemevents aufgreift und dir in Abhängigkeit des aktuellen Keyboardlayouts die entsprechenden Character zurückgibt. Cursorposition, Selektion, Textscrolling usw. muss natürlich auch behandelt werden, allerdings ist das wiederverwendbar in den TextInputCore ausgelagert.
MfG |
|
| Nach oben |
|

|
Bert Member
Anmeldedatum: 19.06.2011 Beiträge: 162
|
Verfasst am: 28.05.2012, 09:39 Titel: |
|
|
Uuuuuh ;D
Also die Textboxen sind wirklich schön gemacht ;D
Ist das projekt open source ? Oder gibt es ein Tutorial dafür ?
in XNA habe ich noch nie schöne Textboxen hinbekommen... _________________ Nein ! nicht Bert ! |
|
| Nach oben |
|

|
MasterSoft Member
Anmeldedatum: 26.05.2012 Beiträge: 27
|
Verfasst am: 28.05.2012, 10:52 Titel: |
|
|
Also wenn es ein Tutorial dafür gibt, müsste das ziemlich lang sein Ich denke da musst du dir noch ein wenig Gedanken machen... Ich habe damals auch lange gebraucht als ich Textboxen für mein Projekt entworfen habe.  _________________ mfg |
|
| Nach oben |
|

|
|