this post was submitted on 21 Nov 2025
15 points (100.0% liked)

Godot

7223 readers
1 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

!roguelikedev@programming.dev

Credits

founded 2 years ago
MODERATORS
 

Like how Half-life 2 (etc.?) used a font for weapon icons. I'm guessing TF2 and CSGO (smart way to easily use it wherever supports text). Though it's difficult finding info on this without info about basic text instead.

No-color unicode ( ๐Ÿ›  ) works everywhere, and can be made with Font Forge*, a bit clunky to me though. I wonder if newer node-based editors like Graphite/PixiEditor are better... or for (M)SDF fonts/textures.

I prefer textmesh** for the look... though color emojis ( ๐ŸŽˆ ) don't work with this (even with a vertex-color-as-albedo material, trying SVG emoji fonts). Plus FontForge doesn't handle color as far as I can see.

Label3D does support color, pixels instead of polygons (high scale or oversampling are options, but M.SignedDistance breaks color emojis). (also modulate_color_glyphs import setting seems to work in only 2D though)

* I've also tried Inkscape, didn't like how glyphs are created/managed (also, text width)

** I want a low-poly font anyway, though even smooth fonts look interesting with a high curve-step



Not strictly necessary (I'm already using Blender for simple models with vertex colors, and polygons+labels also work for 2D or 3D via canvas layer), but fonts are a more interesting workflow. Easier HUDs or text grid map maybe.

top 3 comments
sorted by: hot top controversial new old
[โ€“] sp3ctr4l@lemmy.dbzer0.com 1 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

Unfortunately I have nothing useful to add to this, but I do think this is a very interesting topic.

Emulating many of the various ways that Source is clever, within Godot, is I think a very good idea.

EDIT:

Ok maybe I do have something useful to add:

If you're running into oddities between 2D and 3D text based nodes...

You could, for a HUD, just design an actual 2D node/scene as the HUD, that is then plastered over the 3D player's view port, scales with resolution sizing, etc.

You could also, for things like making names appear over interactable items in 3D worlds... don't draw the text in 3D, with 3D text nodes.

Have your 2D HUD scene simply 'see' that 3D object, that 3D object is a class that has a property that defines its 'DisplayText', and then the player has a sphere check around them, or a 'center of player vision' check, maybe a cone... that builds up a buffer of 'things close enough we should be drawing text for' and 'things too far away for that', as the player's view moves around.

The 3D position data, and the display text data is then sent to the 2D HUD scene/node, translated from 3D position into 2D screen position, and then the actual text is rendered purely in 2D.

[โ€“] insomniac_lemon@lemmy.cafe 4 points 3 weeks ago (1 children)

I just tested 2D text out a bit, spent quite a bit of time trying to fix aliasing (I had oversampling set too high, seems like that should be noted if not just 1.0 being default) which is the sort of problem that Textmesh does not have.

With 2D text I do like that shadow (combined with other colors) really makes it feel theme-like (plus outline can fill in the negative space, making non-color emojis look better with the right color). Stacked is even cooler (3D effect).

So if I keep it to 1 color, I can use the same font for each type of text:

Low-poly, freeform text in 3 forms: 2D, Textmesh, and label3D. They each say "Look" with a single-color fire icon, though the label3D has an outline and the 2D text has stacked outlines/shadows which add color (also, a default eye emoji on the 2D text).

Color emojis still have broken outlines though. With label3D oversampling doesn't seem to work as well* (smaller pixel size+larger font for text clarity-->worse emoji outline alignment) but even for some characters alignment is even off in 2D (balloon, hammer&wrench are fine; eye, fire are not). Could be a font issue though, but the 2 I've tried are broken in slightly different ways.

* MSDF could work for single-color, but it messes up the fire icon I have (and makes straight lines a bit wobbly). Better for more standard fonts/designs, I guess.

So, just sort of a mess... simple text is fine, but even if color could be injected per-glyph (like if every vertex on the fire were set to yellow) that would add depth (I don't know if that'd be a script, add-on, or some context/function in low-level shader code but it's probably beyond me).

[โ€“] sp3ctr4l@lemmy.dbzer0.com 2 points 2 weeks ago

Well, I now definitely have nothing useful to add to this, you've explored this whole area much more in depth than I have!

If you do come up with a kind of optimal paradigm you find very useful, I would highly suggest adding/uploading a generalized version of it it to the ... godot 'market', whatever its called, as an addon or template!