Anyway, one of the projects I had made at The Art Institute was a first person maze game in the Unity game engine. This was before I had access to Unreal Engine 4. The textures were very basic at the time but I had programmed the movement system to resemble the older first person dungeon crawlers like Eye of the Beholder and Dungeon Master. However, that was because of my lack of knowledge on programming scripts. I used Unityscript for the game, but I had to translate how to do it from a C# tutorial explaining Prim's Algorithm. I actually wanted smooth movement between steps and rotations, but I didn't know how to do it.
Now comes in Unreal Engine 4. After messing with it a bit, I wanted to see if I could translate my maze game into the engine using the new Blueprints system. I had seen many things about it and it seemed to be an easier alternative to coding C# or C++. So I finally delved into the Blueprints and... I discovered how wrong I really was.
I discovered that the Blueprints system in Unreal Engine 4 was still a programming language. Instead of being text-based, it was node based so you look at code in a visual environment instead of a text environment. This totally threw me off. I came in expecting a nice visual flow editor for familiar code and discovered that I had to learn an entirely new coding language! While the logic doesn't deviate from other programming languages, because it is a visual language, the syntax is radically different from any language I have used before and that's saying something because I have used HTML, Python, Javascript, Unityscript, and C#.
An example of my use of the new Blueprint language in Unreal Engine 4 |
I think one of the things that make Blueprints hard to understand at first is that the flow of information does not read right to left like it does in traditional text-based languages. Instead, functions receive predefined inputs and are read graphically from left to right. In addition, some features that you could use in say C# or C++ are missing or not supported like two dimensional arrays. To use a two dimensional array or at least simulate one requires creating a one dimensional array and giving a unique ID to each index. Each ID then holds data that corresponds to whatever data you are storing in that array and how it is organized. I have not figured out how to retrieve data from such a structure in Blueprints yet but when I do, that will help enormously for building the collision array that my original project used to help restrict the player's movement.
The other thing that makes Blueprints hard to learn at first is that specific functions that you would normally expect like main(), void(), or update() are handled very differently. You do not call these functions but instead have to create references to them like update(). There are specific function commands like timelines that allow use of the update function. There is even an Event Tick; however, I discovered that the Event Tick is not exactly the same as the update function. Instead it is more like calling deltaTime in a Blueprint.
Everything is so different in Blueprints that I had to throw out what I knew about coding (except for logic which if you understand coding logic than that will give you a head start) and learn from scratch all over again. It has been fun though and I find the Blueprints interesting to use. Is it easier or faster to use than a text-based language? It is hard to say and I don't know enough coding to really make that distinction. However, I do like looking at the Blueprints because it makes it easier to follow coding logic than in a text-based editor.
I am happy with Unreal Engine 4 and there is a lot to discover with it. I hope I can make a full fledged game with it soon. Unreal Engine 4 is an entirely different beast from Unity, but I am having a great time learning it. I can't wait to render a high resolution image of Aphrael in Unreal Engine 4. That is going to be quite interesting and fun!