Seite 1 von 3
Arial, Verdana, Times New Roman etz. Frage
Verfasst: 07.09.2007 09:55
von Fusselohr
Hallo ihr Progger da draußen,
ich wollt mal wissen ob ich die oben genannten Schriften auch in meinen Spielen verwenden kann, oder muss ich wegen (c) oder so, meine eigene Schrift entwerfen ? Wenn ich die einfach nehmen kann, wollt ich auch noch fragen obs vielleicht irgendwo ne liste mit den erlaubten Schriften gibt ,da ich so viele versch. Schriften auf meinem PC hab und die bestimmt nicht alle standard sind.
Gruß Fusselohr

Verfasst: 07.09.2007 10:08
von Kaeru Gaman
schriften, die vorhanden sind, darfst du verwenden.
du darfst keine dieser schriftarten bei deinem spiel mitliefern.
also z.b. Arial, Comic, CourierNew, TimRom, Tahoma und Verdana solltest du als vorhanden voraussetzen können.
ich bin mir aber nicht sicher, welche alle dazugehören.
du solltest auch an die win2000 nutzer denken, bei denen nicht alle XP-Fonts mitgeliefert werden.
vielleicht könnte mall jemand mit jungfräulichem win2000 seine vorhandenen Fonts benennen,
ich gleiche die dann mal mit den XP-standards ab...
Verfasst: 07.09.2007 10:13
von Fusselohr
Achso, also das heißt ich darf die Schriften verwenden, aber nicht mit meinem Spiel weiterschicken und ich muss darauf achten das Leute mit anderem Windows auch die Schrift haben, richtig ?
Verfasst: 07.09.2007 10:20
von Kaeru Gaman
yup, genau.
professioneller wäre es allerdings, eine eigene schriftart zu verwenden.
dazu musst du nicht unbedingt eine TTF erstellen,
es würde genügen, ein spriteset mit den benötigten buchstaben zu kreieren.
gerade wenn du sehr kleine schriftzüge erstellen willst, ist das die bessere lösung.
an standardschriften gibt es kaum was schönes in sehr klein.
und mehrfarbig ist mit standardfonts auch nicht möglich.
schau dazu auch mal hier:
http://www.purebasic.fr/german/viewtopic.php?t=2350
Verfasst: 07.09.2007 12:20
von STARGÅTE
Wenn man abersehr viel Schrift zum anzeigen hat (HIlfe-Text, große ToolTips), dann hat man sehr schnell ein Geschwindigkeits verlust im ganzen spiel, sodass es bei mir besser war einmal StartDraing aufzurufen und dann die gesamten Text zu drawen.
Gibt es auch ein Programm mit dem ich TTFs erstellen kann ?
Verfasst: 07.09.2007 13:38
von Kaeru Gaman
> dann hat man sehr schnell ein Geschwindigkeits verlust im ganzen spiel,
> sodass es bei mir besser war einmal StartDraing aufzurufen und dann die gesamten Text zu drawen.
möchte ich erstmal in frage stellen, halte ich für nen sonderfall bei dir.
es kommt auf die routine drauf an, mit der man den spritetext darstellt.
die sollte natürlich möglichst optimiert sein.
generell ist ein sprite schneller als jedes Draw.
> HIlfe-Text, große ToolTips
..würde ich ggf. vorab beim Init in ein ToolTipSprite schreiben,
und in der gameschleife selber nur noch das ToolTipSprite anzeigen.
(zumal ich bei ToolTipSprites gerne mit translucent-effekten rumspielen würde...)
> Gibt es auch ein Programm mit dem ich TTFs erstellen kann ?
da wurde von ner ganzen weile mal eins erwähnt, ist mir aber wieder entfallen, wie es heißt...
du könntest mal schaun, ob
InkScape ne funktion hat, als TTF zu speichern.
Verfasst: 07.09.2007 14:08
von STARGÅTE
naja du hast schon recht, es gibt mehrere Möglichkeiten:
- Ein FontSprite erstellen welches in echtzeit geclipt wird und dann die einzelnen Buchstaben angezeigt werden (gut für sehr dynamische Texte)
- Ein FontSprite welches vorab zu 255 MINI-Sprites verarbeitet wird. (vorteil, das echtzeitclippen wird erspart)
- Ein statischer Text wird zu einem beliebigen Zeitpunkt geclipt und dann in einem Extra-Sprite gespeichert (Gut für Hilfen oder große Texte)
- Ganze Fenster mit Texten werden in Fenster-Sprites gespeichert
(Gut für Spiele in denen mehrere Windows übereinander liegen)
Das problem ist nun das ich eigendlich alle 4 brauche damit ich immer das "passendste" zur Hand habe, was aber dazu führen würde das ich viel "Sprite-Schrott" hätte.
Wenn man meinen großen Text mit der 1. Variante darstellt, ist es langsammer als die Text mit DrawText zu erstellen. Das habe ich mehrfach getestet.
Es ist leider auch langsamer wenn ich große Textsprites (512*512) darstelle, weil es sehr viel Transparente Pixel gibt, die man sich eigendlich ersparen könnte.
Verfasst: 07.09.2007 14:21
von Kaeru Gaman
ich persönlich würde grundsätzlich niemals mit 1) arbeiten,
immer auf 2) zurückgreifen als basis.
dafür routinen schreiben, die man dann wahlweise
vorab für tooltips oder life für score etc. verwenden kann.
ganze fenstersprites würde ich eigentlich auch nicht verwenden,
weil es immer ein vorteil ist, große transparente teile garnicht erst darzustellen.
bei jedem HUD dient ein großer bereich fürs game selber,
da braucht man nix transparentes drüber displayn.
ein großes augenmerk muss man auch auf den speicherort richten.
dafür immer den gesamtbedarf im auge behalten.
wenn man sprites normal lädt/created, werden diese
wenn die Graka voll ist in den Hauptspeicher gepackt,
von dort aus darzustellen ist erschreckend! langsamer.
um das zu vermeiden kann es von vorteil sein,
die sprites für hauptmenu etc. wieder zu freen,
und dann erst die gamesprites zu laden, und umgekehrt.
wer keinen plattenzugriff dafür verwenden will,
kann beim start alle sprites in den Hauptspeicher laden,
und später die jeweils benötigten in das GrakaRAM kopieren.
Verfasst: 07.09.2007 14:31
von Fusselohr
Also sollte man um möglichst viel Speicher zu sparen den Text, soweit wie möglich, auf den Sprite machen und immer wieder die Sprites dann freen wenn ich sie nicht mehr brauche, oder ?
Gruß Fusselohr
Verfasst: 07.09.2007 14:37
von Kaeru Gaman
ähm... nein.
du musst nen mittelweg finden.
wenn du nichts vorab erstellst, benötigst du nur den platz in der graka,
den deine buchstaben-sprites belegen.
dafür wird dein game aber u.U. langsamer,
wenn du jeden Frame ne menge text darstellen willst.
um schneller zu sein, kannst du texte die sich nicht verändern,
also ToolTips und sowas, vorab auf extra sprites schreiben.
diese extra-sprites brauchen aber auch platz in der Graka.
wenn deine Graka "überläuft", verkehrt sich der geschwindigkeitsvorteil ins gegenteil,
weil dann die spites aus dem hauptspeicher dargestellt werden müssen,
was wesentlich länger dauert, als sie life zusammenzusetzen.