Advertisement

My brief tour through 3d engines

Started by October 02, 2018 06:02 PM
15 comments, last by supermikhail 6 years, 1 month ago

Sometime at the dawn of the year, I uninstalled Unity, because of one bug too many. I looked around for alternatives. I wanted it to be 3D and have a WYSIWYG scene editor. I tried Unreal and couldn't get it to work due something going wrong with Visual studio, although I wasn't burning with desire to get into C++ either (I should say that I'm not a professional programmer, nor very experienced one). Then I picked up Godot.


It turned out that I just wasn't able to produce a feature that I wanted, but I decided to persevere, modifying my idea... until essentially nothing remained of it. And with a few bugs on top, I departed again.


So over the past few days I've gone through, for some definition of "gone through", basically all the engines I could get my hands on for free.


There was CRYENGINE whose documentation is a bit of a disgrace. Maybe once it catches up with what seems like a decade of engine development...


There was Torque 3D, which seems more of a toy than a real engine.


There was Urho 3D which, apart from a terrible interface, only seems to work with the .mdl format... Although, maybe if I can find a Blender plugin for it, I could give it another try. I'm not sure I was fair with it, because at the time I was still optimistic about the other contestants.


jMonkeyEngine has been unusably buggy every time I've tried it throughout the years.


Wave Engine, after I managed to make it work with Visual Studio on one issue, broke down in building a project. Also, lack of documentation and general internet presence. Although for a while I was very enthusiastic, probably because of its extreme similarity to Unity.


...And is that it? :headscratch: Yeah, everything else I think I only read about. Like, mostly abandoned projects or niche things that I don't fit in (like OpenRTS).


Oh, Xenko - buggy and with barely any documentation, as far as I can remember. Oh, actually I don't think I managed to get it to create a project, maybe I should give it another try too.


But I'm going to wait for people's opinions first. I'd like to add  that the purpose of this post is not to simply bash stuff, but to document my experience in a few words, especially because it seems like Google prefers showing only the best side of these engines.


Or maybe I missed something. Maybe with some guidance and perseverance I could get where I want to with one of them. But at this point it seems like I'm "doomed" to go back to Unity. In retrospect, it's actually extremely well-documented and stable by comparison, isn't it?

In my opinion Unity and Unreal are rapidly becoming the go-to engine for indie developers in the 3d space... they're backed by professionals, with a business model that supports the professional, while being accessible enough for the 'joe average' hobbyist to try their hand at making something. The proliferation of these libraries in educational institutions these days is just going to enforce the greater adoption of these engines, but also encourages them to ensure that documentation is up to scratch, and that issues are resolved in reasonable order - not that there will be no issues at all.

In regards to your experience with Unity, I had similar experiences a little while ago when they still had the "Pro" vs "Free" function sets - where there was an absence of AI pathfinding inbuilt into the engine, amongst other things. I'll say this now - there are things in the engine that are not well implemented - the inbuilt pathfinding is sufficient for a prototype or small game, there are API black holes in their documentation, and a skilled coder would be able to work around them. Some of their bugs are truely soul crushing though my experience with the engine is often a result of not thinking 'unity' enough, but it has come some way from where it was in the earlier days and this is a result of the significant industry backing they have.

Engines with less backing - such as some of the more obscure ones you've mentioned, suffer from the lack of funding and business direction to achieve real and lasting outcomes. Open source projects from my experience suffer from a real lack of focus on ensuring documentation is done - API and SDK docs are often really lacking in quality (I'm reviewing one from a partner at the moment, and there are ~200 functions in this small platform - 4 pages of documentation...).

To better inform people, aside from the WYSIWYG editor approach, what features are you looking for?

More importantly, what does your game that you have in mind need? Do you need an engine with built in networking? AI? Resource management? You've indicated that you're not a experienced programmer, what languages do you know? Does the engine need to be 3D - could you make your game with gamemaker? What type of game are you making?

Threads are often focused on engine selection, and its all good to get recommendations from people however - and this is where my day job comes in - understanding your requirements for the technology is more important than the tech itself. For example, if you're making a web game the engine selection would be somewhat different compared to say, a Nintendo DS game.

Advertisement

I have actually kind of tried not to focus on much aside from stability and usability. I'm much more experienced making 3d art than 2d, so there's that. But aside from that the goal has been something that I'm happy with. I'm not happy with Unity anymore. In fact, I'd prefer to avoid anything relying on Visual Studio entirely, although that's a very tall order, it seems. And I've decided that I'd learn a new language if I have to.

My needs are actually pretty basic, apart from that. I've recently decided that my ideas are too clever for my own good, so at this time I only need the engine to arrange assets into a level and add a script to make them make a noise when clicked.

And yet, I have to wonder if there's anything out there that is able to handle this trivial task without jumping through hoops, apart from the aforementioned usual suspects (Unity and Unreal... I'm not even sure if I'd put Godot here at this point, since last time its interface was really cumbersome).

Oh, and of course I make models in Blender, which puts another limit, although mostly on engines that I wouldn't be able to afford anyway.

There is a Blender exporter for Urho3D at https://github.com/reattiva/Urho3D-Blender if you want to give that engine a second look. I pretty much use Urho3D exclusively these days, and find there is not much I can't do with it.

Yeah, that works, thanks... Although now I remember that there were maybe bigger problems, for me. Like... how do you even use it? I'm afraid the coding magic is beyond my level. The peak of my engine complexity (in terms of getting it to work) is libGDX, which comes with an easy setup file. I don't know if I'm supposed to build that folder, why CMake didn't like it, and even if it did, how I'd get from there to a project. I feel like I'm missing an entire different tutorial set before I use an engine like that... Is that called "just basic C++" by any chance?

What would be helpful would be to know what exactly were the stumbling blocks you met on the various engines you tried? (I am not by the way, defending any particular engine as I do agree there have been various issues with ones I have tried. Lack of documentation can be frustrating.)

Advertisement

I've heard that CryEngine has significantly improved on the documentation front in the latest version. Haven't checked though.

http://9tawan.net/en/

This are my personal two cents but at end of day it will be more effective to assemble what you need from scratch (or if it is urgent, taking some libraries would be ok too) and work out the rest by yourself. This is time consuming and 99% of those people reading this want to make their games ASAP so this isn't for everyone but the remaining 1% might think at the end of decade of learning and coding, that it was worth the work and even going multiplatform isn't that hard these days as it was 20 years in the past.

The most difficult part is coding your pipeline as you already mentioned, there are a lot of different things out there and CMake also differs from versions to build correctly. That is the reason I spend some time know to get my pipeline for building but also setting up projects right at the moment as I got over this article for about two weeks ago when starting to think about a good design.

The heart of my pipeline is a C# application that auto analyses the code of a project to create a dependency graph for determining inter-/external dependencies

 

3 hours ago, mr_tawan said:

I've heard that CryEngine has significantly improved on the documentation front in the latest version. Haven't checked though.

I've just remembered. At least I think that was Cryengine. One link supposed to continue a series of tutorials instead took me to a completely unrelated section, and another one just turned out to be a simple image. And it's not like the documentation is vast or I went in some obscure direction. 

Oh, Godot - in 3d, mind you. I mean, they're reworking the interface for the new version, and it's pretty hard to describe. But its prefab - or scene - system. It's touted as perfectly nestable or whatever. Yes, but you also end up with a nested series of black boxes. For example, in Unity it's useful to get inside a prefab and add a custom model - such as a weapon. In Godot, you can't do that without modifying the whole prefab or cloning it for every modification.

Probably one of the most insidious bugs I had was a texture getting shared between objects where it shouldn't be. I wanted to make a few color swaps, but couldn't. And there was no workaround because of the way scripting works.

This topic is closed to new replies.

Advertisement