Post news Report RSS Developer Diary #5 - Dancing with Engines

The fifth devlog summarizing the situation regarding our game, Unity, and the game industry. Read the story about finding a new path across engines.

Posted by on

As this year comes to a close, I've decided to settle a debt and complete an important development blog that was originally planned for much earlier, focusing on the topic of multidimensional temples in the game. However, like many other developers, our game underwent significant changes due to the unfortunate situation with Unity that shook the gaming industry.

Unity, Godot, or Unreal?

This blog has proven to be one of the most challenging for me so far, as it delves not only into new content and positive development narratives, but also explores personal experiences with the situation. Therefore, this blog might be a bit longer :)

Warped Times is our third game developed in the Unity engine, following 3x64 and the initial attempt — a Christmas mini-game from the old Warped Times series released back in 2014. Despite some shortcomings, I was satisfied with the engine, and the game development had been progressing smoothly. However, I, along with others, was shocked by Unity's decision regarding absurd fees and utterly opaque communication. In the first few days, I, like many other developers, could only observe the situation and contemplate our next steps.

Eventually, I concluded that I didn't want to release a game, which I wanted to continue supporting and expanding long after its release, in an engine from such a questionable company. Therefore, I decided to at least try transferring the game to one of the alternative engines.

Our statement on the situation on Twitter
(our statement on the situation on Twitter)


Although I tried both of the major alternative engines (Godot and Unreal), the decision was easy. Given my familiarity with writing games using programming languages, Unreal with blueprints was not appealing to me, and Unreal’s main programming language (C++) was too complicated.

First Steps with Godot

Getting acquainted with Godot didn't take long. Converting graphics wasn't a major issue, but there were some significant changes. Due to the division between 2D and 3D, I decided to transform existing scenes, primarily composed of sprites, into full-fledged 3D scenes. In this regard, the result was much more impressive than the existing game in Unity. I must praise Godot for its excellent work with lighting and the impressive volumetric fog, which added depth to both the dystopian rainy city and the colorful forest scenes.

Converted scene from Unity to Godot

Critical part of deciding whether I was going to continue with Godot was successfully implementing the dimension transition effect. Unfortunately, Godot, due to its smaller user base, didn't offer any existing shaders I could use. Still, because of the simplicity of writing custom shaders in Godot, I decided to give it a try. Godot proved incredibly helpful in this regard, thanks to its straightforward language.

This marked a significant breakthrough that profoundly affected the game's visuals. Until then, I had relied on available effects from stores/the internet, but with this breakthrough, I could create any effect tailored to the game. However, this meant discarding many original designs and effects, adding a considerable amount of extra work. The first experimental scenes looked good in Godot — much better and more natural than anything I had achieved in Unity so far — and everything was on the right track. However, as you can sense, a turning point in the story was just around the corner.

Godot - my first created shader(Godot - my first created shader)

Editor and Engine Limits

Graphically, the shift was enormous, and working with materials was very convenient. The first complications arose when dealing with the editor and asset browser, which I found less intuitive. While nodes in Godot are a matter of habit, working in the very basic Godot editor was challenging for me, considering that in Unity I had gradually customized my editor for the game's needs over the development period. GDScript was simpler, something I had to get used to after years of C# (in Godot, I hadn't tried C# due to more accessible learning materials for GDScript). On the other hand, Godot itself has many things out of the box that Unity does not, which I highly appreciate — visually, it is evident that it is better designed for game development.

Warped Times in Unity vs Godot(Warped Times in Unity vs Godot)


Many things are very similar to Unity, or, in their simplicity, Game Maker. Thus, I didn't encounter too many problems, and in this regard, I can only recommend Godot. Learning is more straightforward if you have some knowledge of both mentioned engines. Even though I couldn't (or rather didn't want to) see the extent of the work involved in transferring the entire existing game, I continued trying because the motivation to leave Unity was strong.

However, over time, accumulating factors made the work less enjoyable for me. These included an overly simple and personally unintuitive editor without custom extensions for my game (just a personal experience; many others find it the opposite compared to Unity), cumbersome work with the asset browser, and unfortunately, encountering bugs that even break the editor — a significant issue when reworking a game with a two-year development history, which is already time consuming.

Moreover, I knew that ahead of me lied tasks that would be incredibly complicated to transfer — this includes character movement, but also smaller elements like the camera, dialogue system, or shooting with all accompanying effects, for which I already had finely tuned scripts in Unity.

The Journey Home

Then came another challenge — likely a limitation in the code, where I couldn't effectively duplicate the second dimension of the level and let it exist concurrently. This problem could probably be solved either in a different creative way, or by modifying the engine itself. However, given the lack of material on the internet and all the previous problems, I had to come to an inevitable decision. Despite my sincere efforts, I probably wouldn't be able to transfer the game with everything I wished for, and certainly not in a reasonable time.

I'm ashamed to write this sentence, but the first return home to the familiar Unity editor tailored to my game was a tremendous relief for me :) In any case, this decision applies only to Warped Times. I dare say that transferring this game is impossible, especially when I'm the sole programmer. However, for future games, I will strongly lean towards Godot, as the experience wasn't bad at all, and I believe that it will become an even better engine in the meantime.

Results of the Experiment

The return to Unity did not go smoothly. After seeing the visual improvements with Godot, I couldn't revert to the previous version of the game. The existing version was mostly composed of 2D graphics, but after seeing the significant spatial enhancements, I decided to rework the existing scenes. Fortunately, I didn't need to change the graphics too much, rather I added additional details and used more realistic models, which aligns with the direction the game had already been taking. For example, the village or temples were already entirely in 3D.

older 2D scene vs new 3D scene(Older 2D scene vs new 3D scene)


This, again, meant a lot of additional work, but luckily, there were very few completely finished scenes, and from live game events, I know from players’ feedback that some parts that deserve a bit of rework.

Farewell to Old Shaders

As I mentioned, due to Godot and the unavailability of existing shaders, I had no choice but to learn shaders. Now, with the basics grasped, I can understand and modify much more complicated shaders I used in Unity, even without extensive knowledge. They are still somewhat beyond my skills, but through experimentation, I can achieve the desired effect.

improved transition with custom shader(improved transition with custom shader)


Most importantly, this results in an entirely new dimension transition that is now entirely smooth (for which I received praise from a friend without even pointing it out :) ), and technically much simpler, with the ability to tweak it as needed. But it's not just a transition — this opens the door to new effects that I can precisely tailor to the game, and I am extremely happy about that.

Summary

What happened is terrible, and I must say that I admire those who managed to switch to another engine to the extent that they can continue developing their game elsewhere. Although I saw a return to Unity as unthinkable, unfortunately, Warped Times relies on it a lot. I want to complete the game without compromising on quality or content, and currently, it's simply not possible to rework the game unless I want to deviate from a reasonable release date (if it’s even possible at all).

However, as it turned out, our game has been strengthened by this whole unfortunate situation. Even though we lost a lot of time by reworking the currently completed content, the new, more immersive-looking scenes already bring me joy. I hope that the next blog will be about the joyful successes of development. Thank you to all the fans for their support and patience during this difficult time. I hope the game will see the light of day within the next two years :) As always, you can follow small updates from development on our social media, and if you'd like to see more personal insights from development, you can now follow me on Mastodon :)

Post comment Comments
Ofihombre
Ofihombre - - 392 comments

The Unity controversy also affected me with Randy & Manilla.
With 4 years already developed and optimized for 2019.2 version, I left with the doubt of whether to cancel it and then return to it in the future, or continue as the last game made with Unity.

I also test Godot, Flax & Godot to see if you can make the project as close to Unity as possible. Although it has an interesting additions, they were still not as prepared for projects as complex as those that have Unity or even Unreal can handle.

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: