Czcionka do gry RPG

Czcionka do gry RPG
EX
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:7
0

Witam, nie jestem pewien czy to zagadnienie w ogolę będzie związane stricte z c++ więc jeśli nie to proszę o przeniesienie do innego działu.

Tworzę grę RPG na pracę inżynierską w c++, Visual Studio 2013 z wykorzystaniem biblioteki SFML. Nie jestem zadowolony z wyglądu mojej czcionki. W załączniku widać pierwsze od lewej to z mojej gry, a dalej Diablo II i Patch of Exile. Chociaż używam czcionki z Diablo II w formacie .ttf to jednak daleko mi z efektem do oryginału. Wszystko dlatego że znaki w Diablo składają się z wielu kolorów, mają taką ciemniejszą otoczkę a w środku są jaśniejsze. Podobnie to wygląda w PoE, jak i zresztą w reszcie gier. Teraz pytanie, jak uzyskać taki efekt?

ttfcomparasion.png

twonek
"żadka" tarcza eh..
mr_jaro
FONT! Grafik płakał jak czytał temat wątku...
EX
Co do literówki to zwykłe czepialstwo, to nie jest już wersja ostateczna gry i na poprawę takich rzeczy mam jeszcze czas. A co do Font, to wiem że font =/= czcionka, ale jakoś pisząc ten temat odruchowo użyłem słowa czcionka nie myśląc za bardzo, cóż ze złymi nawykami wpojonymi przez lata ciężko wygrać.
PR
Chłopie jakie czepialstwo, ktoś cie ratuje przed tym aby ten kto to będzie sprawdzał nie wykitował ze śmiechu jak pierdylion byków zobaczy, a ty psioczysz.
EX
Psioczyć - kląć, przeklinać, obrażać kogoś. Nie wiem gdzie zrobiłem którąś z tych czynności. Btw. Po prostu jestem osobą której "pierdylion byków" nie przeszkadza, i gdy robię coś dla siebie to nie zwracam uwagi na ortografię. Ale gwarantuję ci że zanim ktokolwiek zobaczy moją grę to każdą linijkę sprawdzę dwa razy, no bo jeszcze trafi na takiego "strażnika" ortografii, i wtedy rzeczywiście może "wykitować". Proponuję zakończyć dyskusję bo chyba jeden byk nie jest tego w ogóle wart.
Dawid90dd
  • Rejestracja:około 12 lat
  • Ostatnio:około 6 lat
  • Postów:196
1

W SFML-u nie ma niczego co pozwoli ci osiągnać ten efekt w sposób bezpośredni. Jak Ci na tym zależy to zrób sobie jakiś osobny generator znaków które będzie je zapisywać do jakiegoś spritesheeta (lub każdy znak do osobnego obrazka) potem jakąś klase która będzie je układała te znaki koło siebie tworząc tekst. Albo spójrz sobie do source kodu SFML-a, może znajdziesz tam coś konkretniejszego jak wygląda renderowanie fontów, i na podstawie tego sam coś napiszesz. Albo sam coś wymyśl.

edytowany 2x, ostatnio: Dawid90dd
Sopelek
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Kraków
  • Postów:467
3

Problemem może być to, że SFML słabo radzi sobie z antyaliasingiem i innymi opcjami w tekstach, niestety nic z tym nie zrobisz.
Musiałbyś użyć innej biblioteki do wyświetlania tekstu lub stworzyć bitmapową czcionkę.

@Edit
ref
https://github.com/SFML/SFML/issues/228

@edit2
Jest jeszcze opcja, żeby renderować tekst najpierw na osobny render target, przepuścić przez jakiś shader, i dopiero wyrenderować.
Ostatnio udało mi się uzyskać ładne efekty aplikując lekko przekształcony coherent noise user image (zesaturowany płomień z gimpa ze zmienionym kontrastem i jasnością) na bitmapę metodą Grain Merge (szum można też wygenerować w shaderze, nie trzeba osobnej tekstury)
http://gmc.yoyogames.com/index.php?showtopic=606721 <-- wzory
efekt na bitmapie (na tekście powinno też dobrze się komponować z odpowiednio dobranym kontrastem i jasnością)
przed
user image
po
user image

edytowany 8x, ostatnio: Sopelek
Dawid90dd
Antialiasing w SFML-u to jest porażka.
EX
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:7
0

@Sopelek Własnie próbowałem coś z SFML kombinować , ale skoro się nie da to na razie sobie to zostawię bo mam pilniejsze rzeczy do dokończenia. Ale jakby jednak mnie kiedyś naszło zmienić bibliotekę do samego wyświetlania tekstu to jesteś w stanie podać jakąś która by sobie dobrze z tym poradziła?

@Edit: Z tym shaderem to może być jakieś rozwiązanie, ale trzeba by zobaczyć jakby to wyszło.

edytowany 1x, ostatnio: excaidium
Sopelek
Właściwie to sam korzystam z SFML, bo większość problemów da się rozwiązać, a te, których się nie da nigdy mi nie przeszkadzały. Jeśli jednak przenosić się na coś z SFML to chyba jedynie OpenGL lub D3D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.