Text Engine Update: v1.1 Roadmap

The v1.1 update to Text Engine is going to provide a big face-lift to the Feedback Controller. As I wait for Unity to approve Text Engine’s initial release, I’m getting the final touches in place for a massive improvement to Text Engine.

Here’s a summary of the changes I’ll be going over in detail:

  • Occupying Overlay Screen Space
  • Feedback Controller Types
  • Named Feedback Controllers

Occupying Overlay Screen Space

One of the reasons I developed Text Engine was to tackle a problem I was having with some in-game text that I was trying to make behave a certain way. I wanted to have 3D text and phrases appearing in world space, but in a way that was very integrated into the environment. I needed an engine, and that’s what I developed. Unfortunately, that meant that I made some assumptions about how other people were designing games, which led Text Engine’s Managers to start out with a Canvas in World Space.

Of course, you can always just change it–but doing so breaks my goal of extreme plug-and-playability; I like to write things that can be used immediately, with little to no configuration, and especially in an existing project. Nevertheless, I decided to reconfigure a lot of the default properties and values for the Feedback Controllers to accommodate an Overlay screen space. I’ll be producing a video to help introduce why this is important, too, so be on the lookout for that when v1.1 is published.

Feedback Controller Types

Instead of just the default bottom-corner scrolling-up text system, you can now choose between three feedback controller types: RisingFalling, and Stacking.

A Rising controller is the one you’re used to seeing–text appears and then rises up.

A Falling controller is, well, the opposite of a rising controller.

A Stacking controller is a system that will allow many lines of text to be pushed to it, but it only renders one line at a time. New lines are not rendered until the previous line is completely gone. This is like when you have completed a lot of achievements and you want to show one at a time, one after another, in the same spot. Neat!

Named Feedback Controllers

I’ve also redone how to reference Text Engine components throughout the scene. Previously, you would call GetFeedbackController() from your component script reference to the Text Engine Manager. Now, you can just create a reference to the manager as you did before and call the feedback controller by its object name.

For example, let’s say I have two Feedback Controllers, one called Interaction and another called Quest:

I can access them in any component script by using their actual names, like this:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using com.lawsonry.textengine;

public class DemoInput : MonoBehaviour {

    public TextEngineManager _TextManager;

    void Awake() {
        _TextManager = (TextEngineManager)Object.FindObjectOfType(typeof(TextEngineManager));
	void Update () {
        if (Input.GetKeyDown(KeyCode.H))
            _TextManager.GetFeedbackController("Quest Feedback Controller").AddLine("Hello, World!");

On line 9, a public reference to the scene’s text manager is created for the script. This is mandatory.

On line 12, automatically establish the reference to the scene’s Text Engine Manager on Awake() (which we ensure by also adding [ExecuteInEditMode] on line 6). You don’t have to do this, but I recommend you do.

On line 19, use the object name of the Feedback Controller to call it.

Of course, you can always use Unity Events for one-off updates like this. However, I wanted the ability to call controllers by name for integrating Text Engine into other tools, like Inventory, Quest, and Dialogue management systems, to name a few.

v1.2 Roadmap

Now that the Feedback Controllers are polished off, I’ll be putting the final touches on the Tooltip Controller and getting to work on the Orthotext Controller. This is something that will give you the kind of text you see in a game like Diablo 3–text that is 2D on the screen, and boundable to 3D objects if you want. The way it will work is you would simply attach an Orthotext Controller to your object, configure it, then be on your way.

Leave a Reply