Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

K-Bal

Alter Hase

  • »K-Bal« ist der Autor dieses Themas

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

1

21.02.2009, 00:02

Textboxes im RPG-Style

Moin Forum!

Ich möchte Textboxes mit SFML implementieren, die in etwa die Funktionalität wie bei Zelda haben. Wollte euch mal zu einem generellen Brainstorming dazu aufrufen, da ich irgendwie das Gefühl hab, immer etwas zu übersehen oder zu vergessen bei meinen Klassenstrukturen :)

Ich fang damit mal an:
- Ich bin mir nicht sicher, ob man den Hintergrund der Box einfach als Bild speichern soll oder aus Primitives bastelt. Letzteres macht dynamische Größenänderungen natürlich wesentlich einfacher, macht aber auch mehr Arbeit.
- Für fließenden Text dachte ich daran, dem Text immer die vergangene Framezeit zu übergeben und abhängig davon ein weiteres Zeichen zu rendern oder nicht. Geht es vielleicht noch simpler?
- Die Funktionalität sollte außerhalb des Programmcodes skriptbar sein. Ich dachte da an Lua.

Wer also irgendwas zu diesem Thema zu sagen hat, soll einfach mal schreiben.

Erfahrungsberichte oder Tutorials wären natürlich wunderbar ;)

Viele Grüße,
Marius

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

2

21.02.2009, 00:37

was für erfahrungen hast du den schon in C/C++ und mit SFML gesammelt?
Homepage: fkrauthan.de | Browser-game: flowergame.net

K-Bal

Alter Hase

  • »K-Bal« ist der Autor dieses Themas

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

3

21.02.2009, 10:42

Zitat von »"fkrauthan"«

was für erfahrungen hast du den schon in C/C++ und mit SFML gesammelt?


In C++ bin ich relativ firm und mit SFML hab ich bisher ein paar Spielereien gemacht sowie ne eigene Tilemap-Implementierung und animierte Sprites.

Frage mich ein wenig, was das zur Sache tut :D

Gruß Marius

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

21.02.2009, 11:24

Gibts denn da nichts fertiges, dass du benutzen könntest? (falls du möchtest.)

Also für GUI Boxen habe ich mir 3 Sachen überlegt.
1. Du machst alles mit Primitiven, respektive Sprites, die du zusammensetzen kannst. Wie gesagt macht das ganze recht dynamisch, allerdings ist es imo Overkill für eine Box (oder jedes GUI Element) mehr als eine Textur zu rendern. (Ich hab mal ein ganzes GUI-System so aufgebaut, war aber nicht so toll, wenn so Sachen, wie Dropdowns, oder Auswahlboxen dazu kommen..)

2. Du verallgemeinerst das erste Konzept. Im Grunde besteht ein GUI Element im wessentlichen aus den Ecken, die speziell sind und vlt. noch ein Hintergrund. Daher kannst du das für jede Ecke ein Sprite machen und für die Linien dazwischen kannst du ein Sprite einfach strecken. Hintergrund kannst du vlt. ein Bild optional setzen. Ich weiss nicht wie gut das geht, aber ich vermute mal, dass es nicht wirklich gut aussieht..

3. Du machst eigentlich das gleiche, wie bei 1, nur, dass du das nicht ständig machst, sondern nur einmal oder wenn sich die Grösse ändert. Dann renderst du alles in eine Textur und für das idlen kannst du einfach auf diese Textur zugreifen und sobald sich etwas an der Grösse ändert renderst du die Textur halt neu.
Das sollte performant, sowie möglichst flexibel sein.

Beim Text bin ich nicht so sicher, was du meinst mit fliessend.. Aber die Zeit wirst du auf die eine, oder andere Art brauche, wenn du eine schöne Animation willst. (respektive ein fliessen. ;)). Am einfachsten wäre das bestimmt, wenn du den Text einfach renderst und halt Zeichen hinzufügen kannst. Wenn du grössere Texte hast, könntest du auch wieder so etwas machen, dass du das ganze in eine Textur renderst und dann diese auf den Screen bringst. Das schöne ist dann, dass du praktisch ohne verlust den ganzen Text scrollen kannst. (Ist ja dann nix anderes, als ein Sprite ein wenig zu verschieben..)

Skriptbar sollte das schon auch machbar sein..

Ich weiss jetzt nicht genau, wie gut sich das alles mit SFML umsetzen lässt, aber mit nativem OGL/DirectX geht das sehr gut. ;)

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

5

21.02.2009, 11:46

Naja im ersten Post klang es so nach dem Motto ich bin C++ einsteiger habe noch nichts mit SFML getan will aber ein Zelda proggen daher habe ich gefragt. Nicht böse gemeint.
Homepage: fkrauthan.de | Browser-game: flowergame.net

K-Bal

Alter Hase

  • »K-Bal« ist der Autor dieses Themas

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

6

21.02.2009, 14:37

Zitat von »"drakon"«

Gibts denn da nichts fertiges, dass du benutzen könntest? (falls du möchtest.)


Ja ich möchte es selbst machen ;-) Zum einen aus Prinzip :D Zum anderen, weil ich wirklich nicht viel brauche: HUD, Textbox, Itemmenu. Da wär ne GUI-lib totaler Overkill.

Ich habe mich daher auch erstmal entschieden die Textbox komplett als einzelnes Bild zu speichern, also eine konstante Größe. Darüber render ich dann einfach den Text.

Fließender Text soll heißen, dass nicht gleichzeitig der ganze Text gerendert wird sondern ein Buchstabe nach dem anderen. Ich denke, das werde ich technisch so realisieren wie meine animierten Sprites. Der Aufruf sollte dann später etwa so geschehen: textbox.showDialog(std::string).

Worüber ich noch grübel ist Abfragen in den Dialog einzubauen: "Willst du xyz kaufen? - Ja -Nein -Lass mich in Ruhe".

fkrauthan: kein Thema ;)

Gruß Marius

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

7

21.02.2009, 14:58

Vielleicht wäre es sinnvoll eine Methode zu schreiben mit der du Rahmen allgemein zeichnen kannst (z.b. Aus 9 Bildern: links oben, oben, rechts oben, rechts, rechts unten, unten, unten links, links und Hintergrund. )

Damit kannst du dann praktisch alles an UI Elementen zeichnen was du brauchst.

K-Bal

Alter Hase

  • »K-Bal« ist der Autor dieses Themas

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

8

21.02.2009, 15:10

Zitat von »"xardias"«

Vielleicht wäre es sinnvoll eine Methode zu schreiben mit der du Rahmen allgemein zeichnen kannst (z.b. Aus 9 Bildern: links oben, oben, rechts oben, rechts, rechts unten, unten, unten links, links und Hintergrund. )

Damit kannst du dann praktisch alles an UI Elementen zeichnen was du brauchst.


Ja das klingt vernünfitg! Ich denke aber, dass für meine Anforderungen ein fertiges Bild reicht. Wenn ich dann doch verschiedene Boxen brauche kann ich immer noch ein oder zwei weitere Bilder erstellen. Da ich komplett alleine arbeite, möchte ich mir möglichst wenig Arbeit machen. Hab keine Lust nen Monat an der Textbox zu sitzen ;)

Gruß Marius

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

9

21.02.2009, 15:33

Hehe, okay das kann ich verstehen. Die Frage ist jedoch, ob du langfristig dann nicht länger am Basteln der verschiedenen Fenster als Bild sitzt, als an einer Methode die nen Rahme zeichnet.

K-Bal

Alter Hase

  • »K-Bal« ist der Autor dieses Themas

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

10

21.02.2009, 15:38

Zitat von »"xardias"«

Hehe, okay das kann ich verstehen. Die Frage ist jedoch, ob du langfristig dann nicht länger am Basteln der verschiedenen Fenster als Bild sitzt, als an einer Methode die nen Rahme zeichnet.


Ich bin grafisch eh total untalentiert, das kann dann später mal schön jemand anderes machen ;)

Werbeanzeige