The Metaverse is without a doubt one of the biggest buzzwords at the moment with even Time magazine making a big deal about it. I'm not entirely sure where all the buzz will end up but I do know that, as a web developer, this will likely result in me requiring a few new skills. My best guess is that 3D designing and modeling are going to become quite important and of course, programming those models and designs to do things and interact with users. I'm by no means a game developer nor do I have any experience other than one subject in university for one semester but I wanted to get a jump on it and see what tools are available nowadays and how difficult it really is to get anything going in 3D and particular in a browser.
My main requirements for a 3D engine was:
- I must be able to build a large world where players can move around and interact with objects and each other
- An open source solutions is ideal but alternatively very low fees
- I must be able to run it in modern browsers without installing additional software
- Ideally, I must be able to export to other platforms as well
And after fiddling with a few engines, I added one more requirement because coding every little detail without visual guidance is not fun
- Must have an easy to use GUI for designing worlds
I looked at the following options:
I decided to go with Godot. Here are a few brief reasons why I went the way I did (and feel free to disagree with my reasons):
- Unity's licensing is fair but free is better and it gives you peace of mind when releasing anything. Unity also seems to have a steeper learning curve. However, if I regret going with Godot, Unity would likely be my next attempt.
- Three.js is great for basic web pages and while you can build a large world, I get the impression Godot is going to give me more overall speed/performance, especially on larger projects. Also, with Three.JS you will rely on a 3rd party app for design (RogueEngine) and you have to use Cannon-es or some other physics engine if you want physics. A lot of setting up has to happen, depending on what you want to do.
- Babylon.js is very similar to Three.js but it basically has a physics engine built-in and it has its own GUI. This would probably be my choice if I was going web-based only. It comes across as having all the benefits of Three.JS but without the need of additional installations of programs and physics engines.
There are many other reasons why I choose Godot and I'll work mention them as I actually start building 3D apps. One benefit that became quite apparent when I did my first 2D game and exported it, was that it ended up just being a Windows Executable. Combine that with the fact that you can also write C# code, made me realize I can use Godot to create any app, not just games and I will be able to easily ship it or make it downloadable from my site. My first "3D" app might actually not be 3D at all, I might just write a simple download manager or BPM counter of some sorts to show how easily this can be done.
If you want to hear even more reasons why Godot is incredibly cool, check out this post. It was one of the articles that made me finally decide to proceed with Godot over all of the other options.
If you are looking for a crash course in Godot, this is the one I did. It cost me R200 (about 12 USD) and it was well worth it. A very thorough introduction and gets you on your feet quickly. I completed it and was able to get a character running on my screen, have the player interact with objects and a bunch of other things. I am also contemplating doing the follow up course.
What engine are you using? Do you think I made a good choice? Leave a comment below and let me know.