In response to another thread, I explain my dilemma here. Warning, there will be some computer stuff discussed here, but I'll try to keep it intelligible for everybody. It's also a very long post.
Objective: Determine the next projects to work on.
Considering I have short attention span, I rather split projects in various smaller projects.
Considering that I have a lot of turbulence in my life right now, the amount of free time I have is variable and unpredictable.
Considering I also have board game ideas I could be working on to change my mind. I would want to make multi-platforms games that work as board game and video game.
Original Battle plan
Create a first person dungeon crawler for free and/or commercially inspired by Wizardry. To do so, I am working on 2 sub project, which are reusable libraries:
Mapper: A first person, step based maze crawler. There is a possibility to code this directly in OpenGl making it Game library independent. It could in theory makes it possible to mix and match with other game libraries. See later.
Glymmer: A menu system backed by a database that could allow to implement almost any strategy game that does not have 2D or 3D geography (movement, tile placement, etc). If it can fit in a spreadsheet, it can fit with Glymmer. I might add mouse support, but I don't think it will be a touch friendly user interface. (In case I want to go mobile)
The problem
The libraries and tools I am using are getting old. I have to replace them with something more modern. It would make development faster and more enjoyable. I found some tools that has the same philosophy as the old tools, I just need to learn and use them, which does add more delays, but the sooner I switch the less conversion I'll need to make later.
I want to move from C language to D language. More modern features, same philosophy, there might be better cross compilation capabilities. Should be slightly faster to code with less bugs.
I want to move from Allegro 4 to Raylib game library. Again, more modern features, same philosophy, supports 3D polygons, better image support, but there is little documentation(no books). It could be portable to android using the NDK (native development kit) but that remains to be tested.
I want to move from CMAKE to Meson as software builder. The objective is to make cross compilation easier, and have a lighter build system. Also compatible with D language.
I could want to move from Code::blocks to VSCode as an integrated development environment. I never thought I would value a Microsoft product more. One feature is that it gives me access to Gitlab's AI plugin(not sure if it will be used). Code::Blocks support D language already, so this change is not mandatory. There is another reason why I could be wanting this, see below.
Solution
In order to make learning more interesting, while testing the new skills, I was thinking of making a small game project called "Poker Dice Push" that is basically a poker dice game with a view game play variation. I could then test selling it on itch.io or other platform while testing my new tools.
One of the problem is that I diverge from my primary objective, but I could make some quick cash fast. Or at least have a game publishing experience with different platforms.
New player in the ecosystem
Now normally, I discarded mobile development from my vision for the following reason:
- The players are not gamer, it's a play and throw away culture.
- The games must be visually appealing.
- The games needs to be simple, main stream ... or Dumb.
- Android Studio, IntelliJ and Gradle are super heavy to use, making it hard to build android software. You need at least 32 gigs of ram to run smoothly.
- Toxic monetary model.
- The competition is ferocious.
- Variable screen size and and resolution.
- Volatile devices that gets updated all the time.
- Android is not programmer friendly.
But some variables changed now. VSCode can support Java and Kotlin for android and take a fraction of Android Studio's RAM. I have 3-5 main stream game idea that could work on a touch device, and that could be expandable (buy more stuff). My poker dice idea could pretty well for a mobile audience. If I want to make mobile game:
- It must be simple to play and learn.
- It must be free to play, and pay to additional content (best compromise so far). Ex: A golf game, You can try the game for free with only 1 course, but additional courses cost money. In board game terms, free base game with paid expansions.
- Not have any reusable components besides the Game Library. Making reusable libraries in Java is a pain, especially with Gradle. So each game must be coded from scratch which is the anti-thesis of my philosophy for Mapper and Glymmer.
- There needs to be little data to save. So no database if possible. Having a set of key/values ArrayMap serialized to disk as a same game is a solution.
- Needs to be real time game. Suitable for games with real time mechanism.
Testing
I need to install VSCode and the Android SDK and see if I can make a LibGDX demo game. See if creating a mobile game could actually be possible with those tool at a reasonable speed.
I need to test if making an Android game with Raylib and the NDK could work. That might be more complicated to achieve, but that could allow the mobile and non mobile path to overlap.
I need to test if OpenGL is compatible with other game libraries. I understand the portability advantages, it's just very awkward to program. The idea is to build the background maze in open GL, then use game libraries to draw over the Open GL output.
Dilemma
Some questions I have in my head right now.
Mobile or not Mobile: If I go mobile, get might have game ready more easily, could earn some income, should be faster to implement, but there is a lot of competition, and game should be rather simplistic. I need to make it abstract or modern for artistic simplicity. It will be hard to stand out from the market, but it's not impossible. The feedback loop is faster, I might get more motivation to do other games when one is out there.
Poker dice or not: Should I make this poker dice game to learn my new tools (mobile or not). There could be risk that my busy like prevents me from finishing this project even if smaller. Else I can use Mapper or Glymmer as a learning project for my new tools. If I get interrupted, it's not so bad. It focus more on the long term projects, but they might never pay off. Less motivating because the reward seems very far.
My short attention span strongly incite me to do small main stream game which could be mobile.
Also, both path are mutually exclusive. Working of mobile games with LibGDX, does not make it easier to build more solid game on the other path. If Raylib works on android, then yes, what I do for mobile, could be reused for more serious games.
So I might focus on testing features and tools for now to really know my options.
What are your suggestions? Keep them structured.
Enjoy!
I will never use Unity. I want lightweight engine where I am in control. Doing my own engine, is a bit more work, but I am in control. If there is a problem, I know how to fix it. I don't need to search the internet for hours trying to know why a function listener did not get fired when clicking a button. It happens all the time with LibGDX, this is why I am not sure of taking the mobile route. LibGDX is a frame work, it used the "Don't call use, we will call you" philosophy. But if you never get called, now you need to search the net to find why ... very annoying to do.
If I make mobile games, it will work on PC too, but never on console (still, I am not there yet). LibGDX is a multi platform framework. But I'll have to stick to light realtime simple games like explained in the original post. Again, if too complex, I could lose control, making development and debugging more complicated. Realtime is mandatory in libGDX, again, they call you.
I used VScode a bit for a class where we needed to code in javascript with WebGL. The code completion worked badly.
If I want more strategic games, once I have glymmer connected to a database, I could start working on some simple games, like a stock market game. So using that route could soon lead to a playable game, but it's PC exclusive and maybe one day on console since it will be made in C/D.
Should I make a poker dice game to learn new language and tools?
It could give me a good idea of what it's like to have a published game (same strategy I used for Fallen Kingdoms board game). Like Fixing issues and other stuff, but the only thing that remains in coding that game is the experience. The code will not be usable elsewhere.
Once Glymmer and Mapper are working, there will be another library that will support 2D square and hex maps. Opening the possibilities of game I could make. This is for the far future.