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

1

06.02.2017, 21:30

[C++ / SFML] Zu sf::Text und sf::Font

Hallo!
Ich bin am Programmieren eines "Textadventures" und will dafür trotzdem SFML benutzen. Textadventures haben logischerweise viel mit Text etc. zu tun und im Internet, Youtube etc. findet man wenig Infos darüber. Die ganz allgemeinen Dinge sind mir bereits bekannt, aber ich suche einige speziellere Funktionen. Weiß jemand, ob man einen Text Buchstabe für Buchstabe erscheinen lassen kann, damit man beim Lesen nicht von einem riesigen Absatz überfordert wird, der auf einmal erscheint? Außerdem wäre hilfreich etwas wie das Ausblenden von den Text-Strings und eine Möglichkeit, Strings schräg auf dem window erscheinen zu lassen! Ich bin mir nicht sicher, ob SFML über solche Funktionen verfügt, aber deshalb frage ich ja auch.
Freue mich auf Antworten ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

06.02.2017, 21:39

Eingebaut gibt's sowas nicht, aber es hindert dich niemand daran, die Buchstaben einzeln zu zeichnen und einzublenden ;)

3

06.02.2017, 21:55

Das macht Sinn :D Wird aber anstrengend :hmm: Die ganze Verzögerung und sowas alles... mal sehen, ob ich das wirklich durchziehe.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

06.02.2017, 23:13

Also das sollte wirklich das geringste Problem bei der Programmierung eines Spiels sein.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

07.02.2017, 09:11

Außerdem wäre hilfreich etwas wie das Ausblenden von den Text-Strings und eine Möglichkeit, Strings schräg auf dem window erscheinen zu lassen!
Das geht problemlos. sf::Text ist transformable, kann also rotiert und skaliert werden, wie du lustig bist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

6

07.02.2017, 09:51

Schriften rendern ist schon nicht so ohne wenn man nicht einfach monospaced Bitmapfonts benutzen will. Wenn die Bibliothek das nicht unterstützt, ist sowas wie einzelne Buchstaben einfaden nicht möglich ohne einen grossen Teil davon neu zu schreiben. Ich würde dir daher einfach vorschlagen deine Schrift komplett zu rendern und nur mit schwarzen Rechtecken zu überdecken, die du dann wegschiebst. Die Rechtecke können am Rand ja noch einen Alpha-fade haben, dann sieht das Ganze mit relativ wenig Aufwand trotzdem ganz rund aus. Für ein Textadventure hoert sich das nach einem vernuenftigen Kompromiss an.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

07.02.2017, 09:57

Das ist unter gegebenen Umständen wirklich 'ne gute Idee. So ähnlich mache ich das an manchen Stellen auch - man muss halt immer wissen, wie man tricksen kann ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

07.02.2017, 19:43

Danke für die Ideen, werde versuchen, sie umzusetzen ^^ .
Achja, eins noch, wisst Ihr, wie man Texte zerstört? Oder muss mann dann auch schwarze Rechtecke drüberpacken?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

07.02.2017, 19:48

Normalerweise zeichnet man bei Spielen jedes Frame jedes Mal von Null an. Also erst leert man alles, dann zeichnet man die Objekte, Texte etc. und zeigt das Bild an. Also einfach den Text nicht mehr zeichnen, dann ist er beim Anzeigen des nächsten Frames weg ;)
Bei “normalen“ Spielen zeichnet man z.B. 60x pro Sekunde neu (je nach Bildfrequenz des Monitors), oder so schnell wie es geht. Bei Textadventures ist das vielleicht etwas übertrieben, weil die meiste Zeit nichts passiert. Da könnte man dann nur so oft neu zeichnen, wie es wirklich nötig ist, also immer wenn sich etwas ändert (bei Animationen, z.B. einzublendendem Text, natürlich mehrmals pro Sekunde, damit es schön weich aussieht).

10

07.02.2017, 20:14

Okay... Ich weiß, das ist eine Frage, die man nicht stellen sollte und ich habe bestimmt irgendetwas Auffälliges übersehen, aber wie schafft man es, das man aufhört, ein Objekt zu zeichenen, hier den Text? :rolleyes:
Ich habe es bereits mit window.clear(); etc. versucht, aber das klappt logischerweise nicht.

Werbeanzeige