Moving to Unity: What’s good and what’s the nightmare

So… I decided to write it here too, after I wrote a Japanese blog about this before. For anyone who hasn’t known yet, I’m a visual novel developer who has made visual novel for nearly 10 years. I’ve used Renpy, Lemonovel Air (AS3 based Japanese engine) and now I decided to move to unity because Lemonovel Air hasn’t been up to date lately and Adobe Air itself is quite not up-to-date. I have another reason why I moved from Renpy, but let’s not to talk about that now. Let’s started about why I like about Unity.

For your information, I’m using Win 10, CPU i5 10Gen, 32GB RAM.

What’s Good About Unity

Like what everyone has already known, we can do various think with Unity with WYSIWYG format. Like animated this or that, and more.
Additionally, there are a lot of plugin/add-on to add to make your games more “woah”. I won’t comment the plugin you use this time, but I want to discuss about “Unity” itself.
By the way, I’m using Utage which is a Visual Novel Assets/Engine for Unity which is already known in Japan to produce various visual novel both for mobiles or consoles.

What I like about Utage:

  • BGM will automatically turned a bit quieter when the character is talking.
  • They have 2 scripts to handle mouth or eyes movements, called the avatar and dicing. The movement also can depends on the voice (mouth will shut if there is no voice) and also can depend on text, or both. If you use avatar mode, character’s mouth will be scaled depends on the voice’s volume.
  • Support is very fast and reliable.
  • Excel based, so it’s easy to arrange the localize. Like Japanese text column can be placed beside English and others.

The Nightmares

…Sorry for immediately going proceed to the bad sideπŸ™„πŸ™„πŸ™„. But I think most of you has already known about the good side? Hopefully…. but yes, I think you need to know more about the nightmares. Ahem.

Very, Not Important Nightmare: C#

It’s pretty obvious, but, even though you can make visual novel on unity by just purchasing the add-ons, you-mostly-need C# skills to customize a lot of features. In my case, since the default menu format doesn’t meet what I want, it’s a must to use C# to customize the timing when the menu will appear, when the screenshot will be taken as the save slot’s thumbnail, and others.
This though, might not be a big deal for developers who are used to customize this and that for their games.

A “Bit” Troublesome Nightmare: Project Size

So, at first I was “shocked” but, I eventually get used with it. My game/project file size was around 300MB when I made it first using Lemonovel Air. But when I move it to Unity, it turns to around 5.5GB.

…I’m not lying. I was shocked very first, and I noticed it’s because the Library folder inside the project files is damn huge. Though, it seems this folder is necessary to run the game on Unity. You can simply delete it, but then whenever you start your game on Unity, this folder will be automatically remade.

Another File Size Issue: Asset Size IS NOT SAME with the Asset Size Unity will import

I have a habit to compress the file size first before putting it inside the project folder to keep the size small. I used to use PNGQuarts (Since it can compress the file size a lot, like 80% or more, without changing the file extension), but with Unity, it doesn’t matter.

Even if the image file, either if it’s in psd or png or jpg is about 5MB, by default Unity would import it as 10MB or more 😨😨😨
I didn’t notice this first and the first time I built my demo, it was around 1GB++…

It seems you need to change the “Import Setting” manually inside unity (something like changing a file properties) to compress the files, and some images, are actually not enable to be compressed, if… they can’t be divided by 4!!! (yes, I have some 1280×721 images, and I need to turn it to 1280×720 first)

You can though, skip this by just making asset bundle later, but asset bundle itself is full of other nightmares, so I prefer to compress it manually (well we can just select couple of images and change the compression all together).

One of Main Nightmares: BGM could cause so many “Now Loading” screen.

This is hard to notice on PC, but it still happens, especially when you “jump” to a specific label/scene (since the assets usually can’t be preloaded before they “jump” as, they don’t know what to use after the “jump”), as by default, Unity Sound Asset will have preload enabled, and load in background disabled.

If you use asset bundle, especially those compressed (by default), you must use this preload. You can choose to use load in background to prevent this “Now Loading” screen (so black screen with turning now loading indicator? or maybe lag if you don’t have such now loading screen), but this could cause the bgm play “late”, as they need time to finish the load first.

Although, the best solution is changing the import mode to “Streaming”, especially for offline game. But—-this Streaming, can’t be used if you’re using Asset Bundle 😭😭😭

There are many occasions with CPU Usage 100%, AND SOME CAN BE VERY LONG

Switching Platforms

Unity can support multi platforms, and this feature is one of the reason why I use unity, but– guess what? When you choose to “Switch Platform” on the build settings, Unity will “reimport” all of your assets to match the new platform format? (you might say it’s same jpg files, for what!?… idk I want to know as well.) AND IT CAUSED 100% CPU USAGE FOR—-in my case 10-30 minutes…😨😨 I didn’t notice it first when I made my demo, but then when I finished re-coded the whole game, with the assets number is like 10k files++?Β  Gosh… it was super taking time.

…and there’s even paid script to make this “switch platform” faster, 25 USD. (There’s free one too, but I haven’t tested either of them)

What’s more frightening though, if you force shutdown at the middle of the switching platform progress, since it takes too long, it will start the reimport again the next time you reopen your project on Unity. πŸ™„πŸ™„πŸ™„

Making Asset Bundles

This though, could be because of the add-ons settings, but basically making asset bundles could take super very long, especially if your assets has too many small files like mine.

By default compression settings, my pc, which I thought is quite powerful already, well, it took like 1 hour or more to finish making asset bundles, and while it’s on process, the cpu usage is 100%…

Well, be positive. Just leave your pc and play ring fit adventure while waiting. You can keep fit, or get muscle ache like me 🀣🀣🀣

Asset Bundle Nightmares

What’s Asset Bundle anyway….

By default, Unity will compress all of your assets (scenario, images, sound files etc etc) into one big file when you build the game. This, can be a problem to patch (since you can’t copy paste 1 or 2 files you want to fix only), and on some platforms, a huge resource files will cause the game to not be able to launch as well.

Tbh, by changing the import setting itself, the resource file size I got is already around the same with asset bundle or maybe even smaller, so I don’t really need asset bundle to compress my game. Still, the patches feature might be essential in future. You can also see some platform like Google etc is recommending to use Asset Bundle for future needs.

But there are too many problems with AssetBundles…

Asset Bundles are specific for Each Platform…

So, you need to build it per platform…. yes… one for Windows, one for Mac one for blablablablabla 😭😭

You Need to Rename The Original Resources Folder when building the game with Asset Bundles

Or the original files will also be included inside the game and it caused your game size 2X than normal. Rename sounds very easy right? Not if because of the rename Unity will need to reimport all the assets inside the renamed folder and it will take a while if you use a lot of assets…………….

Especially For Offline (PC/Consoles Game) You need to move/delete unnecessary platform based asset bundles before building the game…

So, if you build an asset bundle, for example for Mac, you can’t use it to test on the Unity Windows editor, if you use Windows to develop the game. You will need to build a Windows asset bundle to test the asset bundle on windows, but you will later need the Mac asset bundle to run it on Mac. Basically, you will need to place this Asset Bundle within the Streaming Assets folder to make it work (could be different if your game is half-online).

When you build the game, Unity will build all inside Resources folder and the Streaming Assets folder. Which means… if you have Assets bundle for Windows and Mac inside your Streaming assets, you will need delete the Windows one first before building the Mac version, or delete the Mac first before building the Windows version.
If you don’t do this, both of the files will be included in your game and caused a huge file size!! HOW TROUBLESOME!

Using Assets Bundles Or Not will cause Difference in Actual Play.

…So, if you use assets bundles, which is a “compression” file, basically you need to preload the assets first before using it actually inside the game. This— can cause “Now Loading” screen or lags in various occassion, which might not occur if you don’t use the asset bundles….

… Seriously, isn’t it a lot easier to simply upload 300MB than taking care of this stuff?

That’s all for now what I can remember. There could be more, but I don’t remember it now, and there also might be any other solution to solve the matters above for greater programmer, as I’m really a noob to this πŸ™„ but tbh, I’ve been eager to punch my monitor for several times already…