Jump to content

Choosing game engine/framework


Recommended Posts

Hi guys!


I think I need an advice from more experienced colleagues.


I am experienced enterprise developer. Last 6 years I worked as senior/lead web developer and mostly wrote on C#/Java/JavaScript.

Game development is my hobby and true love so I decided to try out make the game not for me but for others.


Concept was done and now I should select a game engine.

Something like Banished with different and complex AI model and some features with non-direct control. I want the game to be AI-centric.


I planned to make a browser game so the first option was WebGL (ThreeJS, BabylonJS) which I extremely love.


But  I'm here a bit confused. The market is indie game engine has a few products and one big monster called Unity.

Even some AAA-games have Unity under the hood (Cities: Skylines).

Wherever I read all these kids writing that Unity is soooooo great and almost any developer must use it for any game. 


The main reason is something like "If you want to finish the game don't write your own engine".

I know this is true because I tried to make my own engine some times and it was horrible and took a lot of time, but is it still true for using a small enginees like BabylonJS?

And which cons unity has compared to BabylonJS except well-known poor VCS integration and collaboration problems?


Unity is great ready-to-use solution with many out-of-the-box features and out-of-the-box limitations. I don't like limitations.

And all those tools of unity (visual designers and so on) is not so applicable to my concept [iMHO].


So, I need your advices, guys. I don't want nor to make a simple game for 5 years not to fight with limitations of game engine to make anything non standard.


Thanks and sorry for a long post :)

Link to comment
Share on other sites



Welcome to the forum.  The way you wrote the post is different from what I would expect from a first time game developer (as a product dev and not a hobby.)


I wish I could provide you with an answer to your question, am I'm sure some members will respond with their own preferences.  However, without knowing specifics on the type of game, release platform(s), user info, specs on characters, elements, animation and move trees if required, budget, etc., it would be tossing a coin to simply provide info on the many applications and platforms within reach these days.  But I'll tell you what I know.


I've worked in many roles on games ranging from animator, developer, supervisor, etc. and for games for consoles to PC to MAC to Handhelds and everything in between.  I'm not a huge fan of Unity, however it will allow a newbie game developer to easily build their first game - but you'll learn nothing in the process.  I was on the alpha and beta cycles for UE4 (Unreal Engine 4) and love it - however it's a completly different process to design and build in UE4 from Unity.  And to build your own game engine would be foolish these days - in my personal opinion.  


The only recomendation I might make would be to avoid ThreeJS due to it's limited user control and lengthy process to impliment what most people would consider a "game."


If you want info on pipeline and dev tools, then please outline detailed specs on your game.  And then it's still a guess as the developer themselves is a serious consideration in determining tools.  You don't need to give anything creative away, simply technical specs.  For your first time out, I would use BabylonJS for too many reasons to list.  But that's just good advice.  Best of luck to you.



Link to comment
Share on other sites

I will chime in as well. Firstly I guess your question is a little like going into a Volkswagen driver forum and asking "Hey, what kind of car should I drive?" :) But speaking as someone currently breaking the rule not to write your own engine, this is my $.02.


To me it comes down to where you want to spend your time. If you built from scratch you would, at least at first, spend a lot of time writing shaders, multiplying vertices by matrices and so on. If you use Babylon (or Three or similar) you will likely spend a lot of time manipulating meshes and textures, animating them, moving the camera around, etc. I've never used Unity but from what I gather you can (find or buy cheaply) many standard game elements, like a character with a running animation or a follow camera. So if you wish that kind of stuff was just available, so you could focus purely on AI, then something like Unity (or Source, or others) might make sense.


I mean part of it is simply, "Do I want to build the controls, or drag in a box labeled "Standard FPS Controls" and be done with it?" From what I gather Unity can give you that, if you're okay with having the same controls as lots of other games.


With that said, I think the main reason I'm trying BJS is because I wanted to do gamedev in a primarily open source world. I'd rather grab a library one day, then write one and put it on npm the next, than go with Unity and mess with buying assets or selling the ones I make. Also, as a long-time Flash developer I'm inherently leery of proprietary authoring tools and runtimes. So there's that. ;)

Link to comment
Share on other sites

Thanks for your answers!

I really need your opinions.


I think I should explain what I want to achieve.


Genre: RTS;

Multiplayer: Yes;

Platform: Web Browser + back-end server;

Budget: $10. And my own time.  :D


First of all I am making a browser game. I don't need great detailed graphics and awesome shaders (however I will probably write some).

Since I told the game will be AI-centric, I want to spend most of time for writing specific decision-making algorithms and rich character model.


I don't want to manipulate triangles, vertex- and index-buffers in low level, so I want the engine to have build-in scene graph system.

However, I want to have an ability (not obligation) to change low-level details if I want. So, flexibility.


I want to collaborate with my friends via VCS (git/mercurial/etc...) and have an ability to run the code easily without magic. So, portability.

[This means I don't want to spend a lot of time to run my game server on different machine]


I want to increase my experience during development. Not in heavy mathematics of pixels, but in the overall process.


And last but not least: I want to achieve fun on process as I always did.

I have my evening time, a lot of coffee and enthusiasm and I don't want to lose it.


So the question was mostly about "How much time will I waste if I choose mostly-rendering engine like BabylonJS instead of out-of-the-box-engine like Unity and is it worth it?"

Link to comment
Share on other sites

Maybe could you just make an attempt ?


I discovered threejs thru web tutos and demos. And I quickly coded a prototype of what I wanted.


Then I switched to BJS... because I liked a lot this forum reactivity and the playground : those are huge tools to learn very very fast, to test what you want and to share knowledge (and errors) with everyone.

I discovered at this moment BJS was better for my needs than threejs (lighter, more direct, more fitting to animations, more flexible despite less features... that I didn't need). 

So I changed essentially because of the support/community and I adopted it for its working.

Porting my prototype from threejs to BJS was quite easy and fast, a couple of hours only. I never regret this choice.


There were still some missing (to me) features in BJS so I decided to code them byself (tube mesh, double side, etc) although I had no specific webgl neither typescript knowledge. I am not even a good javascript coder.

As these features could help other people too, they were quickly integrated in the framework by core developers after advices, cleanup and chats with the community.

I like the fact that this framework focuses on WebGL rendering only, simplicity, animation and performance and the rest keeps open to what the user wants to do. I would say : provided features are simple to use, to learn and are optimized for performance (computation and rendering) with assumed opinions/choices. They aren't as numerous as in threejs because threejs intends to cover every needs.

The rest (unprovided or to be extended) is for you  :) . And it is quite accessible (I am the proof)



So, imho, you just should make an attempt with an ultra-basic prototype to "feel" if it fits to your needs.

Link to comment
Share on other sites

Maybe it will be able to be helpful. I create a game editor with cool scripting system, terrain editor, particles, import media ... to Babylon (in Beta yet)

and I also create a server cluster with NodeJS that allows MultiTread on the number of heart of the machine which is also available in the link below



And to give my opinion on the choice of engine: BabylonJs is a very good modern engine fit the games. TheeJs is old, of bugssss, unpleasant. Unity3D is pretty cool, but some restriction is unfortunate indeed. There is a big buisness behind unity with all that is Asset Store is almost necessary. With Babylon you do not have restrictions and the results are really cool and with my editor (using Babylon) can save you time, but is still in Alpha/Beta.


Link to comment
Share on other sites

First of all I am making a browser game.

That's your answer: Use BabylonJS or ThreeJS :)


Unity cannot, at present, be used to make games for the web.

It has a  WebGL exporter, but it's just a proof of concept and nowhere near ready for publishing games to the web.

Also, Chrome recently killed the Unity browser plugin, so that's not an option anymore.

If want to release a browser game within the next year, BabylonJS and ThreeJS are currently your best choices.

Link to comment
Share on other sites



So, there's your answer.  Based on the specs and general info you provided, there appears enough info to certainly point out what would not be a good fit for your dev pipeline.  And I hope you have a budget a little larger than $10; as a slightly larger budget will allow you to purchase a few additional tools to create a fun and quality game.


Thus, it appears that Unity and UE4 are out - although the game Banished was built using UE3 which is why they were able to provide a decent AI strategic engine, since Unreal poses no limitations on what can be built in the logic underlying a game.  However, licensing is a consideration, and you were also specific in the desire to create a browser based game which leaves you (practically speaking) with ThreeJS and BabylonJS as your best choices.  As Jerome mentioned, he ported what he was building in ThreeJS to BabylonJS and never regretted doing so.  I'm much less a fan of ThreeJS, however, I've yet to meet a game developer who regretted choosing BabylonJS over ThreeJS - but have known several who regretted choosing ThreeJS and not BabylonJS.  So there it is.


As for additional budget items - Since you'll need to create allot of move trees, I would take advantage of the new tools for bipedal mocap, and purchase the Kinect V2.  As much as I enjoy keyframe animation, I would choose to spend my time on the artistic design, level design, gameplay, game quality, AI, multi-user experience, etc., and let the Kinect provide you with unlimited amounts of quality character animation in little time for little money.  I would prioritize my whole game and begin listing what elements are most important for you to allocate time towards, and what elements can be provided with as little time costs as possible without sacrificing quality.  The new Kinect also offers many more functions such as quick 3D scanning, and the SDK is easy to work with if you need anything "out of the box."


You might also want to consider other software such as Maya, Motionbuilder (a must have for me), and other software applications which can increase game quality and reduce production time which allows you to spend that time on improving other aspects of your game.  Of cource, you need Photoshop, but I assume you mention a budget of $10 since you most likely already have and use some of these essential tools.  Blender is always a good choice for creating and animating 3D elements, and is supported well by DK for exporting scenes into Babylon; and it's free - however, using Motionbuilder in addition will provide you with tools to compliment Max, Maya, Blender, etc. - again, freeing up time which you can use to make a better game.  Even though I have the full Autodesk Suite, I often use Blender as it's a good tool and can be much easier to work with in the Babylon community since the user base here is substantial - comparatively.


And take a look at the game editor dad72 is building.  Editiors such as his allow quick testing of game elements together, and to make quick changes - which again, translates into time.  But what I really wanted to point out from his post is that you should also be looking at NodeJS if you are building a multi-player game. Node will provide you with vastly more flexibility in creating a multi-player experience, as well as allow you to task the server with operations that don't need to be calculated on the user's hardware, which in turn provides you with many more options and versatility, as well as to improve the multi-player performance and experience overall.


Congratulations!  You were able to aquire some of the best advice from professionals on this site - in asking the most important question as a game developer; and hopefully you received your answer all within 24 hours.  What a great community of developers!  If you are truly moving forward with this, I hope you take the advice from jerome and use BabylonJS to build the first prototype of your game.  If you set you sights on this goal first, then when you complete your game design for the full RTS game, you can begin fresh knowing exactly what you are up against, and how to move forward.  And of course, you'll have some code already written in which to use, improve, and build upon.  This will accellerate your entire process, and in sharing your simple game prototype with the BabylonJS community will allow you to learn the framework quickly, as we're all learning and building together.


I guess we'll be seeing you around.  Look forward to playing your first game demo.





Link to comment
Share on other sites

Hey DK,


Please re-read what I wrote.  I think you read it as if I know developers who have regretted choosing BabylonJS.  On the contrary, I have never met any developer who regretted choosing BabylonJS over ThreeJS, but several who wished they had chosen BabylonJS instead of ThreeJS to build their content.


Here's what I wrote :

As Jerome mentioned, he ported what he was building in ThreeJS to BabylonJS and never regretted doing so.  I'm much less a fan of ThreeJS, however, I've yet to meet a game developer who regretted choosing BabylonJS over ThreeJS - but have known several who regretted choosing ThreeJS and not BabylonJS.  So there it is.



I think I understand what you're asking, and hope this clears up any confusion as to my point.  I also personally began testing using ThreeJS as it was recommended to me by a friend and developer.  However, as there appeared to be only two primary frameworks for developing 3D content in HTML5, I wanted to understand developing using BabylonJS in comparison.  And once I began using BabylonJS, I never went back to ThreeJS and my company now only uses BabylonJS for developing content delivery on the web.  As of now, we're primarily developing for the support of HTML5 using our existing adaptive multi-user streaming server, and will soon begin to update our graphic authoring tools in support of our server technology; so as soon as we have the resources available, we will be supporting the BabylonJS framework in our authoring tools as well.  We haven't had the bandwidth internally to develop and publish anything worth viewing within BabylonJS to the web yet, but you'll soon see some of the work we're doing; and we look forward to helping advance the BabylonJS framework.  I also look forward to sharing the work we've designed in BabylonJS to the dev community, as server development is not what I personally find most interesting - but certainly necessary.


Please let me know if I answered your question.  Otherwise, please re-phrase if I mis-understood.  Again, perhaps I didn't write clearly enough to make my point, and if this is the case, I'll want to edit the post to make certain that it is clearly understood what I meant.





Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...