HUD Frage

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Heiko

Betreff: HUD Frage

BeitragMo, Sep 22, 2008 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich in einem Spiel ein HUD integrieren möchte, gibt es da irgendwas zu beachten?

Mir schwebt eine fast komplette Umrandung des Screens vor, wo die einzelnen Elemente (Score, Lives, etc.) eingebunden werden.

Ist es sinnvoller ein komplettes png zu machen, wo einfach die Mitte eben leer gelassen wird, oder für jede seite ein png?

Und einfach am ende des codes diese sozusagen HUD routine einbauen, oder muss ich was dabei beachten, damit es nicht flackert?(hatte mal sowas gelesen)

ozzi789

BeitragDi, Sep 23, 2008 8:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach ein komplettes Png und das was du rauslassen wilst machst du alles in einem Farbton zmb 255,0,255 dann schneidest du mittels Maskimage den Teil raus.


Was das flakern angeht, zeichne alles in den Backbuffer und bau einen Framlimiter ein, dann sollt das kein Problem sein Wink





(tipp am rande, solltest du probleme haben das der Rand nicht schön übernommen wird, machst du einfach bevor du mit der maskcolor farbe anfängst einfach einen kleinen dünnen schwarzen rand Wink , hoffe es is verständlich)



Mfg Ozzi[/code]
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Eingeproggt

BeitragDi, Sep 23, 2008 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es dir nicht zu aufwendig ist, mach für jede Seite ein Bild, schont den Graphikspeicher ein bisschen.
Grundsätzlich würden aber beide Varianten funktionieren, wenn du nicht auf ärgste Optimierung aus bist Smile

Was das Flackern angeht:
In 3D macht man es üblicherweise so:
Code: [AUSKLAPPEN]
;Beginn Hauptschleife
  ;3D-Kram
  Renderworld
  ;2D-Kram
  Flip
;Ende Hauptschleife

Cls ist eig gar nicht von Nöten, da durch Renderworld sowieso der ganze Buffer überschrieben wird.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Mr.Keks

BeitragDo, Sep 25, 2008 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Es macht eigentlich mehr Sinn, das HUD auch mit 3d-Sprites umzusetzen. Die kannst du dazu an die Kamera heften und mit EntityOrder vor allem zeichnen lassen oder in zwei Passes arbeiten. Zweiteres würde so aussehen: Code: [AUSKLAPPEN]
;Camera für 3d-Welt aktivieren
RenderWorld()
;Camera für HUD aktivieren, die auf bestimmten CamClsMode eingestellt ist, um nicht den Rest zu löschen, und die andere deaktiviern
RenderWorld()
Flip
MrKeks.net

draco

BeitragDo, Sep 25, 2008 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
außerdem kannst du mit mr. keks methode die sprites auch in ihrer transparenz einstellen (EntityAlpha), was mit normalen Images nicht geht... auch sehr praktisch wenn ein interface etwas halbtransparent sein soll...
Die einzige Möglichkeit, etwas vom Leben zu haben, ist, sich mit aller Macht hineinzustürzen...
 

Heiko

BeitragDo, Sep 25, 2008 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
lol so auf die normale 2d methode ist das jetzt soweit klar.
hab aber mal bisschen geschaut, wegen sprites in 3d mit createsprite usw.

aber so richtig blick ich das noch nicht.
habe in die hilfe geschaut, und mal createsprite in die sufu eingegeben.

wie bekomm ich den ein eigens gezeichnetes sprite in 3d hin?

Tankbuster

BeitragDo, Sep 25, 2008 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Such mal nach "Draw3D"
Ist ne nette lib von Hectic, die genau das kann, was du suchst Wink
Twitter
Download Jewel Snake!
Windows|Android
 

Heiko

BeitragDo, Sep 25, 2008 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist mir ehrlich gesagt zu aufwendig, weil ich nur wissen möchte, wie man grundlegend 3d sprites hinbekommt.
von ner lib lernt ich ja nicht wirklich was, wenn ichs nur nutze.

The_Nici

BeitragDo, Sep 25, 2008 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/help/?subcat=73
Viel Spass.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Sep 25, 2008 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist doch kein Ding ein Sprite vor die Kamera zu heften (EntityParent). Soll das Sprite 1:1 angezeigt werden, so sollte es die hälfte der Bildschirmauflösung/Breite in Z nach vorne gezogen werden. ScaleSprite dann auf die volle (oder halben) Kantenlänge des Sprites setzen. EntityOrder auf höherer Priorität setzen. Meisten reicht bereits -1 wenn man keine Skybox hat.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Heiko

BeitragDo, Sep 25, 2008 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
achso, dachte das ist was besonderes, weils ja 2d ist.
also muss es nur mit vor dem renderworld rein, und nicht dannach, und wird automatisch im 3d bereich mit angezeigt.
das wußte ich nicht.
hatte bisher strickt zwischen 2d und 3d unterschieden...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Sep 25, 2008 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Sprite ist zwar flach 2D, wird aber von der Grafikkarte als 3D Objekt behandelt. Es ist also in dem Sinne nichts besonderes, ausser dass ein Sprite von Blitz3D weitere Optionsmöglichkeiten (z.B. SpriteViewMode) hat was andere Objekte nicht haben.

Da ein Sprite ein 3D Objekt ist, muß es nicht immer wieder extra ''neu'' gezeichnet werden. Es bleibt bestehen, solange man es nicht explizit wieder löscht. Es wird aber in der Zeit auch keine Änderungen vornehmen können. Also Ziffern anzeigen die sich ändern etc... Dazu müsste man sich wieder was extra schreiben, was auch viel Aufwand bedeuten kann.

Kurz:

- Wenn du nur ein Fadenkreuz haben möchtest, dann nimm ein Sprite und packe es vor die kamera und fertig.

- Willst du aber Änderungen vornehmen (Ziffern anzeigen, Grafikanimation), dann solltest du auch mal damit anfangen mit den Befehlen rumzuspielen. Ab einen gewissen Umfang, werden aber Sprite recht langsam, was dann eine Singlesurface-Grafiklib in Erwegung bringen könnte. Dazu kannst du zum Beispiel die Draw3D benutzen (oder FreeImage oder nach anderen Funktionssammlungen und Engines nachschau halten), oder dich selber mit den ganzen Vektortransformationen und den Restkram kümmern. Allerdings sind die Berechnungen für 2D-Darstellung nicht sehr aufwendig. Wenn man in der Schule auch nur ein wenig aufgepasst hat, oder sonst kein Problem mit Mathe hat, sollte es auch so kein großes Problem sein. Es kann allerdings recht umfangreich werden und es wird vor allem größte Sorgfalt benötigt.

--

Oje... Ich glaub dieser Text ist mein Rekordhalter für ''und'' und ''oder'' -Wortfolgen. *lalala*
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Heiko

BeitragDo, Sep 25, 2008 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal die beiden posts von "eingeproggt" und "mr.keks" an, da sind schon unterschiede, deswegen bin ich auch immer noch verwirrt...

Eingeproggt

BeitragFr, Sep 26, 2008 4:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach, mach es einfach wie mehrmals vorgeschlagen mit der Draw3D.

Meine Methode ist wie du sagst, die strikte Trennung zwischen 2D und 3D.
Habe diese Antwort nur gegeben, weil es etwas besser auf deine Frage trifft wie ich finde.
Aber eigentlich hat 3D nur Vorteile. Es ist erstens schneller und zweitens mit Transparenz. Und wenn dir schon jemand die Arbeit abnimmt, dann ist es wirklich zu bevorzugen.

Als jemand, der selber nur in 2D denkt und sich etwas unbeholfen in 3D rumschlägt rate ich dir, 2 markante Unterschiede zu reinem 2D zu berücksichtigen:
Der Ursprung des Koordinatensystems liegt im Bildschirmmittelpunkt und nicht links oben Wink Daran wirst du dich aber schnell gewöhnen.
Außerdem müssen all deine Bilder quadratische Abmessungen in 2er-Potenzen haben, wie zB 16*16, 32*32, 64*64... bis hin zu 2048*2048 (Mehr geht mit den heutigen GraKa's nicht soweit ich weiß)

In der Hoffnung dich nicht noch mehr verwirrt zu haben,
mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group