Looking for the right framework/sdk/game engine

Started by
6 comments, last by RealyUniqueName 10 years, 9 months ago

Let me start off by saying that I have been writing detailed game concept for over a month now. During this period I have also spent an enormous time looking at what tool I will be using to create said game. Also sorry for the wall of text that I'm about to write, I figured I'd try my best to be as detailed as possible.

The game I am creating will be a tower defense with a few RTS elements such as:

  • Pathfinding of course, I've found A* (A star) and JPS (Jump Point Search) to be most likely one of the two that I will use, the latter being my choice atm
  • Unfortunately I haven't been able to look to much into RTS style pathfinding, but I want to allow users to be able to create a wall and be blocked in an area if they so choose over a maze, thus I need proper collision and attack AI. Which unfrotunately I havent had much time to look into, just felt like that will be a bigger performance hit than other things.

I will write a list of tools I have found at the bottom after explaining my interests and concerns.

There are two main categories that I'd like them to be in, if possible:

  • Be able to deploy to Desktop (at least Windows and Mac) and Mobile (at least iOS + Android stores)
  • I'd like it to try and have as high performance as possible. I realise I'm asking for the holy grail for such a cross-platform tool to run at crazy speeds. But I'm not asking for native speeds! Just interested to see performance stats, I know some engines are more focused on certain areas, so i'd like to ask the experts what they'd think a TD would best fall under. Something with the best OpenGL rendering capabilities? I really suck at what happens on the lower levels, thus the reason why I'm asking this. For example, if X and Y engine both can build for desktop and mobile but X engine is reported to have 20% increased performance, of course I'd rather try my best to learn and go for X engine over Y.

I come from Corona SDK, which as some of you might know is crazy easy to get into. When I found out about Love2d which also uses Lua and can build for Desktop, I was surprised to learn about update() and draw() and that's how low level languages really work. It really puts you on a whole new level, thinking how a huge function gets updated every FRAME and same with the draw, it's mind boggling how crazy fast that is. I've seen benchmarks where they reach 40k+ sprites at 60fps, and I'm sure there are even higher ones but just thinking 40k sprites being drawn 60 times a second is...mind boggling. Which is when I realised how bad my programming background is. I started reading Code Complete after researching into some things..anyway getting off topic here. My point is, I only know Lua and html5/javascript, so I'd really prefer a tool that uses a language similar at least, but of course if the option has too many benefits and is most ideal for what I'm trying to do, then I will of course go all out to learn it (even if it's AS3 which looks really confusing compared to Lua with classes and such). I am pretty confident in my coding, but of course no where near a true expert, but confident enough to make a tower defense at least.

I forgot to mention that it's only me as the coder and someone else as the artist, so 2 man team to create this project.

Here's a list of tools I have found that can build to pretty much everything:

  • Unity --- I'm putting this one first since it's the only 3D one I mention. I'd prefer to stay away from 3D engines since there seem to be enough 2D engines that make it not worth getting into the complexity a 3D engine bring, increasing the develop time considerably. But the reason why I keep Unity as an option is because it's so popular and the community is so great that I'm sure that will help when looking for solutions to any problems.
  • Marmalade --- This has options to build to all desktops platforms and most mobile platforms (iOS, Android, Windows Phone 8). But uses C++, which I fear might take much longer to learn and be more complex than other options. Although I heard you can Integrate a Lua binding into the Marmalade SDK. I'm not sure how that works though, if any of you have more info it would be greatly appreciated. Marmalade Quick uses Lua but can only deploy to mobile devices through cocos.
  • Qt-Project --- This one seems like it'd be close to perfect. Uses QML + Javascript, and looks really easy to understand and code. My only concern here is performance. It seems to have this super convenient thing to auto-update things like text and other things. I can't help but feel like it might take a performance hit in a TD where all the monsters and walls will have an HP bar amongst other things. If any one can ease my mind and has any info on Qt I would greatly appreciated it. I forgot to mention but Qt can deploy to all desktop and mobile platforms as well as web too I believe.
  • libgdx --- I've only seen good things about this. Here is a benchmark test for libgdx and is where I saw it reaching 40k sprites at 60fps. http://www.sparkrift.com/2012/1/love2d-vs-allegro-vs-clanlib-vs-libgdx-vs-cocos2d-x-vs-monogame-vs-xna-vs-sfml . It seems libgdx barely goes over 30k actually. But still seems amazing. This is on the same level as Qt for me, almost perfect, except I'm not really worried about performance on it. What I'm worried about is, since it requires Java, how problematic is that? Are there users who stay away from java no matter what? What about for mobile devices? Are there any downsides to needing java to run the game? My second concern is the language, which seems almost like actionscript3, which I disliked the way it looked. But it still seems easier than C++ and the community is so huge I am sure I'll be able to get help when needed and find enough examples to get me started. So the language concern isn't really that big, my only main concern is the first one. libgdx can build for everything pretty much.
  • Html5 --- There seem to be a lot of emphasise on html5 mobile apps, here are just a few tools I found that can help port your html5 project to a platform:
  1. Chromium embedded
  2. Sencha
  3. Phonegap
  4. Appcelerator/Titanium

Since I've done html5 projects before this would be give me a really friendly work environment, making things easier for me. My main concern here is performance. Does the canvas help there? Do I have to worry about lower end computers not being able to run at 30 fps? What about mobile devices? I've heard JS v8 brings great performance but that it's only in chrome? I don't really care about web browsers as long as it works in the standalone executables and the mobile devices. Any experience you guys have with heavier games in html5 would be much appreciated.

  • Haxe + Nme --- This looked interesting at first but after testing it for a bit, some things wouldn't work on different platforms and I saw other people complaining about that as well. Performance is also a question. Any one with experience on this one is welcome.
  • XNA + MonoGame --- MonoGame's performance seems only slightly lower than libgdx, can build to most platforms. However I don't know much about XNA and I heard it won't be receiving future updates? More information is welcome.
  • Adobe --- Can't forget to add adobe here since it can build to everything that supports flash. Like I said earlier I do dislike AS3 but that's not the most important thing. I have two main concerns here, first is for years I hear people complaining about flash and adobe air, crashes, bugs etc, should I be worried about this and stay away? What about performance? I feel like Java would be a better option than Adobe but I'd rather hear experienced answers rather than my noob knowledge in this.
  • Love2d + Corona --- I feel like one option I always have is using Love for desktop deployment and then porting it to Corona or Marmalade Quick since I have used Lua for the longest time and have the most experience, making it the easiest for me to work in. The problem is it wouldn't be a single code base since Love and Corona work a little differently, thus to port it to mobile would take considerable extra time but still much easier to port over than using a different language for a native platform. The love2d performance was a little scary in the above benchmark test with libgdx, which scares me for users with less performant computers. Thoughts?
  • Moai --- Probably my dream SDK. Uses Lua and can build for desktop and mobile platforms. There are only a few concerns I have. First, performance of course, but I'm confident I can create my own benchmark test here. But the biggest concern is you need to build your own hosts/compiler for each targetted platform. There are currently hosts for iOS and Android I believe which took quite a while for the first public hosts to be made available. It takes quite some knowledge in the native language to create a host, thus making this a real set back unless the rest of the other hosts are made public for other platforms. And even then, how reliable can they be? Is it possible to cause random crashes/bugs to your game? If you have any experience with Moai please share, I really like the idea of using Moai.
  • SDL --- Don't have any information about it
  • SFML --- Don't have any information about it

I think I've spammed you guys enough, I might have left some things out because I've been writing this for quite a while now so please feel free to ask anything or share your thoughts. Sorry for the wall of text and thanks for reading, any information is greatly appreciated since I feel a little lost here with all these options.

Thank you!!!

Advertisement

You might be interested to know that Blender (Free, open source 3D modeling/animation suite) ships with a game engine. I did a bunch of video tutorials for it, including a series where I develop two simple games (Turret Defense and Tunnel Runner) from scratch. You can find those in my playlists: http://www.youtube.com/user/goranmilovano/videos?flow=grid&view=1

Anyway, I think you're a little too focused on performance, and extending out into "mobile". For an independent developer like yourself, that stuff doesn't really matter at this point; The games that you're currently capable of producing (from start to finish) will be fairly simple, and are therefore unlikely to require high performance. If you find yourself in a situation where things are slowing down, 9 times out of 10, it's because you're using some incredibly naive algorithm, and that same problem would haunt you even in some "high performance" framework.

For now, you simply need to focus on learning as much as you can, and making a game that *plays well*. Make a good game, using whatever tools you know, and the rest will follow: If you have something good, you can get other people to help you build a more advanced, fully cross-platform version.

And remember: There is no one true tool.

+---------------------------------------------------------------------+

| Game Dev video tutorials -> http://www.youtube.com/goranmilovano | +---------------------------------------------------------------------+

Thank you for answering, Goran. You are definitely right, I am worrying too much about performance. It's probably the mobile part where I'm worried about performance since I wanted to make maps bigger than just your screen. I might just pick a cross-platform framework and focus on desktop, then see where it takes me. But that's exactly the thing, if performance wouldn't be too big of an issue, why wouldn't one choose an option that let's you build to multiple platforms with the same code base, unless of course you are writing an app for a company that only needs it on mobile or something. While Corona is easy to use, it only lets you deploy to iOS and Android, which imho just feels too little compared to other options that allows so much more. Thus the main reason I made this post I guess, since I didn't want another Corona, but I've found enough frameworks that shouldnt be like that. Anyway I agree, I can get the highest performance framework out there, but if I fail out coding, then it won't matter much. I'll try to stick with something familiar so I can continue advancing. Thanks for your input.

Also, hanks for letting me know about Blender, I'll definitely give it a look along with your tutorials. +9999 points for making a TD Tutorial biggrin.png

Unity makes a great 2D engine as well and is widely used in that area.

I have done a lot of developing with Qt and it is rock solid framework in general - I have built a couple complete applications using it. I will say this though - It does things the way it wants to do them and when you use it you will find yourself tailoring your code to their pipeline often. I don't know if this is good or bad - It's just the way it is.

I've found Unity to be a great tool that lets me bypass having to code my own engine from scratch.

For more on my wargaming title check out my dev blog at http://baelsoubliette.wordpress.com/

MonoGame is actually continuing on, whether XNA continues on or not. Several new features that are in MonoGame include RenderTarget3D, multiple window support, and some others. MonoGame can basically build to all the platforms you want with high code re-usability. I am using a varient of MonoGame called MonoGameSDL and it is working very well so far. MonoGameSDL uses SDL2 as a backend but still follows the XNA layout.

Not sure about MonoGameSDL's performance compared to say a native openGL/directX program though, but then you have to ask what would be better, productivity or performance?

I have been able to draw thousands of sprites per frame using MonoGame.

Edit: talking about desktop here, MonoGame does support iOS, Android and WindowsPhone8.

I agree with Goran. Focus on the game with what you are most comfortable with at this point.

But I also might suggest you think about the monetary side of all this, as I am assuming that a primary interest in hitting multiple platforms is to maximize your income.

My point is that making a version for every platform might not result in more profit.

For example... It's been said that although Android has a healthy ecosystem, iOS apps in general generate more money. So although I do understand the allure of cross-platform, it's also more work, no matter how you slice it.

Electronic Arts announced that it's made more money off of the App Store than any other retail distributor.

So... with that wrinkle. Why not focus on iOS only ? If you make money, and it's arguably more likely on that platform, then you have money to fund expanding if you choose to do so. It's possible that spending that time on a second game for iOS might be more worthwhile than expanding to other platforms.

Lets face it, when starting out the quicker you make a profit, the more flexibility you have in expanding to other platforms if that makes sense.

That being said, so long as what you want to do is doable with Corona, that's likely your fastest track to a product that can generate income.

If performance or limitations are an issue then look for the next best option to achieve what you need.

All said above is true. The best tool in most cases is the tool you are most comfortable with.

I'm working with Haxe+OpenFL (formerly NME) and here is my experience:

  1. Haxe + OpenFL gives you native performance in most cases (Haxe is translated to c++ on compilation). How about 90`000 constantly moving,rotating and scaling sprites @60FPS? If this is still not enough, you can get 210`000 of those sprites @30FPS :) Here are my experiments with rendering: https://github.com/RealyUniqueName/StablexDL#test-machine-core-i7-34ghz-geforce-640-unbuntu-1204 The code is a bit outdated, so it might require some tweaking to get it compiled with latest OpenFL. This is sintetic test, but beliave me, you will have enough performance in real deal.
  2. More important than given performance is Haxe language itself. It is extremely powerfull and rapidly evolving language! I've tried C/C++, C#, Pascal/Delphi, Basic, PHP (this one is my fulltime job actually), Javascript, Actionscript. But Haxe is my best friend here loaded with advanced features such as generics and macro system (and many other) on top of great and easy to read syntax (which is somewhat similar to Actionscript, Javascript and C#)
  3. I'm currently working on this game http://indiestatik.com/2013/07/23/maze/ and so far it feels like i'm doing magic with Haxe. It's currently tested for windows, linux and flash targets (i'm sure, it will work on mobile devices, just didn't test it yet)
  4. In the past i've developed some prototypes like this, this or this (and several others). All of them tested and work fine on Windows, Linux, Flash and Android (the latter two work even in HTML5 target). I don't have Blackberry, Mac or iOS devices, but i know, deploying to Blackberry and OSX is easy, while iOS has some issues in some cases (however there are a lot of games in appstore for iOS made with Haxe+NME).

Yes, i'm a passionate Haxe developer :)

I know the issues i will face with Haxe+OpenFL. The biggest one for me is inconsistent sound support on iOS and Android targets. But it has high priority in OpenFL todo list and also "workaroundable," so i'm ok with it.

And one more time: choose the tool which allows you to work comfortably.

PS: my english is bad, so feel free to ask for explanation if something confused you in my message :)

This topic is closed to new replies.

Advertisement