A Look at Utage Text Adventure Game Engine

Are you a Visual Novel developer with previous programming experience in C# or other object-oriented languages? Do you feel restricted by the limitations of Ren’py and other free engines? Do you want the option of porting to all operating systems, mobile, and consoles? Are you already familiar with or would like to learn Unity? If you answered yes to 2 or more of these, Utage might be the engine for you.

Utage is a commercial Visual Novel engine for Unity. It provides you with all of the basic features of a Visual Novel and allows you to modify anything to suit your specific needs. Utage isn’t just intended for Visual Novels, but any kind of game made in Unity that incorporates Visual Novel scenes, making it ideal for gameplay-heavy VNs. As you probably know, Unity games use C# for their code, so if you are not comfortable with using or at least learning C#, then Unity engines are not for you, at least while you have that mindset.

When you go to view its page on the Unity Asset Store, you’re going to notice a few things:

First off, this engine is $80. If you’re looking for a free engine, look elsewhere. If you plan on using it on commercial projects anyway, or have the money to spend and just want something less limiting than free engines, then this shouldn’t be a problem.

Second, this engine is developed and maintained in Japan, and the developer isn’t super great at English. The translated documentation is missing a large number of articles available in the Japanese version, and the ones that are will often have untranslated labels in screenshots. They provide a built-in Google-translate tool to read untranslated articles but, as you may know, Google-translate is not entirely reliable for a clear translation. However, this is usually enough to get the point and shouldn’t be too big of an issue most of the time.

Finally, the UI they show you in their demos and screenshots is awful, an absolute eyesore. However, do not let this be the reason you decide against the engine, as you are not limited by its likeness for your own UI in any way, and it’s actually quite easy to substitute it with your own.

Take the UI from Syntactic Sugar as an example:

Look at it as a motivator to make sure you get all of your own UI done because you probably wouldn’t want to be caught dead using any of theirs in a commercial project.

If you’ve read this far and can deal with these three things, then I can recommend this engine to you as a viable option. Let’s talk about how it’s used.

I hope you don’t have anything against Microsoft Excel, because you’re going to need it a lot for this engine. An Excel document with multiple sheets will contain all of your dialogue, characters, flags, animations, and various other elements. Is your customization limited to what you can do in these sheets? Not at all, it just requires less code that way. Moreover, it even has a macro system, allowing you to define a series of commands as its own reusable command.

So, outside of what you can do in Excel, what is required to make a VN in Utage? Depending on how ‘fancy’ you want your UI to be, it can be anywhere from hardly anything to a lot of work. Replacing the UI shouldn’t be too much work, and in most cases will just require simple changes to UI Image sources and some moving and resizing. If you’re completely new to Unity, you may have to look up how to do this, but don’t be discouraged: I began my Utage project with little to no previous Unity experience and eventually got everything figured out; you can too if you’re willing to put the time in. If you’re already well-acquainted with Unity, then great!

If you’re like me and you really want it to look and act a certain way no matter what it is involved, you will likely have to write some of your own code. Please note that updating the engine will revert its own code to the base version, so I highly recommend taking my approach of writing your own versions of its classes when necessary and extend the originals, overriding the methods you intend to change. Sometimes you want to override a non-virtual method, in which case you can simply change the original file’s accessors to suit your needs and whenever you update the engine the compiler errors will remind you what changes need to be made. You can also request accessor changes and even new features on Utage’s Q&A board, which is actually very well managed; the developer will usually respond within a few hours and will often make changes just for you as long as your requests are reasonable. Again, this engine’s developer is Japanese and his English isn’t the best, but it’s generally good enough to understand your requests and follow up.

Adding your own sprites, backgrounds, and CGs is pretty straightforward and you just need to put them in their appropriate resource folders. Possibly my favourite thing about this engine is its ‘Dicing’ tool which allows you to put multiple images in a single folder and have them converted to a sprite sheet to save on file size. That’s right, you don’t need separate images for single sprites! If you’d much rather use separate images instead, that’s also an option.

You can add your own commands that you can call from your script in Excel by making your own custom command manager with custom commands. Provided in the plugin is a sample of one of these, as well as samples for various other custom implementations of Utage features.

Utage is bundled with the ‘iTween’ library which provides an easy way to ‘tween’ objects with whatever easing type you like. I found myself using this for a lot of UI animations as it made the process very simple.

Utage fully supports localization to as many languages as you want to support, and adding translations is as easy as putting the translations of the lines in another column of your script’s spreadsheet and assigning localization components to UI Text elements with respective values in the localization file.

You may have the opinion that Unity is overkill for a Visual Novel, but there’s actually a lot of benefits to using it. For one, you can port to every major platform with relative ease, even WebGL which allows you to play it from your browser. You can also easily implement shaders, which you may need if you want some particularly fancy UI or blending effects.

If there’s one complaint I’d voice for Utage, it’s that the message box text it uses currently does not support TextMeshPro in any way, which is far superior to Unity’s UI Text. It would require a lot of work to implement this yourself, and you’d likely run into significant issues. On the other hand, Unity plans to integrate this plugin as a replacement for UI Text in the future, and at that point Utage will likely be changed to support it. Also, implementing TextMeshPro in UI is not very difficult, and I recommend doing so if you’d like any kind of fancy text.

Edit: TextMeshPro is now supported as of version 3.7.1

With all this, would I recommend Utage to a Visual Novel developer? I would, as long as someone on the team is a competent C# programmer and either has Unity experience or is willing to learn it. Though, if what you’re looking to do is just make a simple Visual Novel with no gameplay and nothing too fancy, Ren’py is probably enough for you and I don’t recommend spending $80 on this in that case unless you’ve got money to throw around.

Utage on Unity Asset Store
Utage Documentation
Utage Web Demo

Author: Samuel

Syntactic Sugar Dev Team

2 thoughts on “A Look at Utage Text Adventure Game Engine

  1. Thanks for this blog post Samuel!
    I use Unity for my VNs and been on a lookout for some additions for unity to help with the process of creating the VNs. Utage looks interesting, to say the least, and I really appreciate the review you did of it and how you really took a deep look at it instead of trying to get just the good side of the engine. Nice work!

    1. I’m glad you felt that way as I felt it was a little biased due to the fact that I have no experience in other engines to compare. I’m sure there are things that other engines do better but I wouldn’t know about these things. I just know that if I really want it to do something, I can get it to work one way or another, and that’s enough for me.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.