ZText is now available on the marketplace!

Feel free to ask any questions you might have, and I’ll try and answer them as best as I can!




Easily create a wide variety of true 3D texts with proper depth within your game using this asset.

Included is a fully customizable, well-optimized and organized blueprint to make any sentence into a proper 3D text for use in 3D menus or just placement in-world. It supports multiple lines, left/center/right-alignment, adjustable line-height, kerning and space width, and can be interacted with, using for example on-click events.

Comes with a variety of royalty-free fonts chosen to best suit various game types and platforms. Each font has been painstakingly reproduced in low-poly 3d, letter by letter and imported as static meshes with simplified collision models.

Available characters are:

8 fonts (will add more if the package sells well):

  • AudioWide
  • FreckleFace
  • JollyLodger
  • Montserrat
  • Open Sans Extrabold
  • PressStart2P
  • RobotoCondensed Bold
  • RussoOne



Physically­Based Rendering: Yes
Number of meshes: 704 Static meshes
Average Triangle count: 500 ranging from 12 to ~1740 triangles
Texture Resolutions: N/A
Number of Materials: 12 materials (1 master materials and 11 material instances)
Collision: Simplified collision mesh
Engine Compatibility: Tested to work on 4.10 - 4.12.5
Intended Platform: PC, Console and Mobile
Platforms Tested: PC
Documentation included: Yes
Number of Blueprints: 1

Price: 49 USD (+5 USD VAT where applicable)

Thanks for making ZText as I was looking exactly for this.

I did have a question regarding array’s of text or a Data Structure as an input. Do you see an easy way of using a Data Structure like a CSV to populate data across multiple Objects? I’m trying to get my head around it, as I have a need of multiple 3D texts to be in place, as in over 100, and was wondering if it’s feasible, or would bog things down.

I’m trying not to write hundreds of instances manually. :wink:

Closest I can come up with would be Instanciating a Ztext object in the world, and using variables to feed the construction script from my Data Structure CSV file.

Hi, I sent you a mail regarding shipping build issues, did you get that?

Are you having issues with the text not appearing when packaging a game? I have that problem as well if so.

EDIT - Scrap that, was my fault! Hope you get your issue sorted.

I’ve tried to recreate the issue here by making a shipping in both 4.13 and 4.14 build with a ZText which updates every frame to print out the time elapsed since start, but after 54 minutes of running it, all text still looked okay to me. Please tell me if you’re still encountering problems and we can look into it further.

I’m also about to update the 4.13 version with the realtime text update feature that 4.14 has and lower the price to 39 usd, so don’t buy the asset until the update has gone through (might take a couple of days for it to pass through Epic).

The issue has been fixed by the author! Sorry for not posting here, everybody who read it and hesitated, the issue is fixed already!

Hi btengelh,

What was the issue you were having exactly? I’ve upgraded to the latest version of ZText and am having an issue where the text will not work in the packaged game. :confused:

Specifically, I have it in my PlayerCharacter BP and when I ServerTravel or OpenLevel to load a new level, the ZText stops working.

This is only an issue in the Packaged game, and I have tried many different options including having it in the Level BP/World Outliner.

If the ZText BP is fully set up and static in the World Outliner it works fine though.

Hm. :confused:

Hi everyone,

We do have the same problem. Everything works fine in the editor / standalone game / VR preview, but in the packaged application the ZText breaks.
In our scenario we update a BP_ZText instance with a DateTime structure as text every second and accelerate later.


In the editor it behaves like it should do:


In the packaged application only two characters (or depending on the month only one) gets displayed:


@btengelh & @Acriax, could you share the solution you found? :confused:

That is very disconcerting… as I wrote in an earlier post, I could run a shipping build (4.13 and 4.14 for Windows) for 50 minutes where it updated every frame without it failing, so I figured it must have been something wrong in btengelhs code/scripts that was causing it, but now that there’s more reports of the same thing… which version of UE4 are you using, and what platform are you packaging for?

Sorry I’m late in replying. I’m subscribed to this thread, but I don’t get notifications or mails about it for some reason. :confused:

It seems this is a recurring problem, but I just don’t understand why it happens, or why it happens to some and not others. Could you give me some more info on your environment? UE4 version, what you are packaging for, anything you can think of that could help narrow it down? If you create a blank project, import ZText, set the startup level to the Overview map and package it, does the text still disappear?

I’ll look into it more, but I’m just not sure where to begin looking. Hinted by that it only happens in the packaged game, it could be something as insidious as a UE4 garbage collection thing. Feel free to ask Epic for a refund as well if you don’t manage to get it working.

Hi everyone,

@Acriax thank you for your response. We are developing for Windows 64 bit, based on the Blueprint VR template with engine version 4.15.1.
I got some time to investigate a bit more and tested the same method of text updating we’re using in an empty third person template and could reproduce the issue.
After inserting some debug prints it turned out, all the static mesh components for the characters were build correctly, but were missing their static meshes.
I stumbled upon this thread:
What might explain why the “pr” in my previous screenshot is still visible in the build, but not the rest.
In the level are other ZText instances placed which texts contain the two letters but are currently hidden in game.

For a test I just took all static meshes of the font we want to use and threw them into the level somewhere out of the users vision:

ZText_Placing Meshes_In_Level.jpg

and it instantly worked in the bulid.

So the issue seems to be the loading of the static mesh objects from asset IDs although the assets are not laoded yet.


You might want to have look at the LoadAssets node. The challange here is, it’s an asynchronous operation and can’t be placed in the construction script or in a function.


This thing is really tricky, because the editor just keeps everything laoded and masked the problem.
For our purposes it’s resolved so far, we will just place all character meshes somewhere hidden in the level so they are loaded upfront. :o

Thank you very much for the thorough testing,! btengelh and me were on that same track when we were troubleshooting his issue, but I didn’t know about the “Load Asset” node, so I never managed to find a better solution. And yes, that would explain why it worked for me as I was testing on the overview map which already has all letters spawned in the scene! I tested on a blank project and could reproduce the problem.

However, the Load Asset node is giving me some trouble…

I moved the Spawn Text nodes out into the event graph and refactored the variables a bit to be able to use the latent Load Asset node. The refactoring worked with the way I did it before, but with the Load Asset node, the text fails to spawn at all, both in the editor and when updating the text after a second of delay.

Here’s how it looks like with Load Asset:

And here’s how it looks like with the way I did before:

That’s when pressing the compile button on the script though, but when I debug and reach that part during play, the execution continues past “Completed” and past the cast, and everything looks good in the script, but it still fails to spawn.

So yeah, I’m unsure of what the problem is at this point. Will look into it more, but if you have more experience with Load Asset, maybe you have any ideas on what could be wrong?

Alright, so it took a lot longer than I had anticipated, as each time I thought I had found a workaround that fixed an issue, another one popped up. Sorry for the inconvenience!

However, now the issue of disappearing meshes in packaged projects should be a thing of the past (once Epic deploys the update on the marketplace).

The new approach of loading the meshes during runtime means that text can appear to be “written out” as each mesh is loaded, so to remedy that I’ve added a “Hide until fully loaded” checkbox (not enabled by default) which will do exactly what it says.

The way the system works now also meant that a feature I wanted before could easily be implemented now. A typewriter effect, where there is a customizable delay between each letter being shown. Similar to what happens unintentionally when the meshes aren’t loaded and the text is shown instantly, but more consistent.

Oh, and I dropped the price as well. :slight_smile:

I am downloading now and hoping this will fix that issue for us. It is one of the final bugs we need to fix before launching a project. :slight_smile:

Thanks again!