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:
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!!!