So now I come to what will probably be the hardest decision of this whole project: deciding what framework to use to implement everything!
Right now I am still undecided, and I am hoping in researching and writing this it will help me think through some of the pluses and minuses to narrow down the search a bit more.
Initial Criteria
- I don't want to learn a new language, but a new library or new piece of software is fine
- Of the languages I already know, I want to work with either JavaScript or Python
- I don't want to spend time reinventing the wheel, so I'll need a library/framework/engine that will abstract away some of the work
- The game has to run cross-platform for at least Windows, Mac & Linux, but mobile I am still unsure since the initial concept is not yet set in stone
- The license must permit me to release the final product commercially (in case I make something worth selling)
- I do not want to pay a recurring subscription
- I will accept a one-time cost, but don't want anything too expensive
- I want to use something that is well supported, and not a dead or dying project
- Not necessary but nice to have: I would like to use maps created in Tiled, just because I'm interested to try it out
- Also not necessary: I would love to use and support an open source solution, but this is probably the lowest of my requirements
A lot of the big names were instantly wiped out by these criteria - no Unity since it is C#, no Unreal since it is C++, no GameMaker since it costs minimum $99 and more if I want to build for mobile, no CryEngine since it can't build for Mac, plus a few others.
So, I've got my research hat on, and time to dig into it!
The Short List
Three.js
Possibly overkill for what I am doing since I am not planning to make a full 3D game - 2D is fine for this project. But it isn't a game engine as such, essentially it is just a way to simplify drawing assets to the screen. This makes some things easier, and some things harder - I have the freedom to step outside the bounds of most other game engines, but also the need to put in more coding to achieve what I want.
The flipside is that I am already very familiar with Three.js since I have been working with it on and off for 6 years. I also know how to build cross-platform software from Three.js with little trouble, including for mobile. It is also open source.
PixiJS
Has been used in web-based games for big names including Disney, BBC, Cartoon Network, McDonald's, and Google. Supports mobile platforms, and is open source.
Phaser
Based on PixiJS, and has also been used for web-based games for some big names including Disney, and looks pretty nice.
Also supports mobile, and can make use of Tiled maps. It is open source too, although it has some paid addons.
melonJS
Another JavaScript based game library. No games I recognize (well, ports of games I know but no originals), but some of them do look pretty nice.
No direct output for mobile, but it is achievable the same way I would do it for Three.js. Supports Tiled maps, and is open source.
Pygame
I am absolutely in love with Python right now, so I can't not consider it, however I can't see any familiar names built specifically with Pygame.
One downside to Pygame/Python is the lack of mobile support. But it does support Tiled maps with a third-party loader, and is open source.
The only other annoyance I have is that it borrows naming standards from SDL, some of which really aren't meaningful (flip doesn't actually flip anything - it forces a refresh of the screen!), but honestly that is easily remedied by aliasing them myself.
Clickteam Fusion 2.5
Not a library, but a full-fledged game development platform that abstracts away the need for direct programming.
Yes, it is expensive, but I have had it since 2016 when Humble Bundle had it up for only $15 including the Android, iOS, and HTML5 exporters.
It is not open source.
GDevelop
Similar to Clickteam Fusion, it isn't a language or framework but a game creator. However it seems you can choose to bypass their event hooks and directly use JavaScript to build functionality.
I don't see any familiar names in their showcase, but it does allow building for multiple platforms, and is open source.
Godot
This almost didn't make the list. I'd heard the name but not looked at it. As much as it adds more indecision, I'm kind of glad I did look at it finally, although it is only tenuously holding on right now.
It seems pretty powerful, however I can't find a list of games developed with it (they had a page but it now 404's) except for a single screenshot of that page, and the only name I recognize in that screenshot is Deponia.
It does not support JavaScript, and their Python bindings seem to not yet be fully supported - but it uses their own custom script called GDScript which, from a cursory glance, looks like a cross between Python & JS.
It can build for mobile, and is open source.
So there we go. I've managed to get the number of potential candidates down from I don't know how many, to just eight. Not bad!
All but one are open source. All but one can output content that will run on mobile devices (although some require a few extra steps). All but one are targeted specifically at building games. And all but one are free (however I already own the paid one!). Every open source project has also had commits in the last two weeks, and not just some minor thing like updating docs, but real changes.
So now I will leave that in the back of my brain for a while and focus on some other tasks.
One task will be to look for some more free or cheap, but hopefully good quality, game assets. Another will be to decide on a concept, which might just be guided by what assets I can find.
Then after a few days I will revisit the tech stack talk from here, and I should be able to knock at least 4-5 off the list!