Over the last month I investigated alternatives to the Unity3d game engine. In particular, the Javascript based Babylon engine (I took a look at Tyrian too, but it is 2d only so I moved on). Now there is HexTacToe, an incredibly simple hex based tic-tac-toe game created as a Scala.js and Babylon.js proof-of-concept. Play it here and the code is on Github here. I still need to clean it up a bit, but the functionality is all done. The point has been proved, all these technologies play nicely together. There was the occasional frustration, but overall it went quite well. I am impressed. There is not the community or game tooling available for Babylon as for Unity. However, there are other benefits. Definitely something for me to think about. I will need to write that post on pros/cons of different engines from my point-of-view.
April was the month highest gamedev hours since starting this fulltime, largely because I would not give up on the problems integrating the technologies in HexTacToe (it always felt like I was so close to getting it working, and I generally was). A nice target for me to aim for again in future, but not this coming month. There is a long list of non-gamedev tasks to get done that I have been ignoring since before going to Adelaide in March. So I’m lowering expectations for May. Gamedev-wise it will be mainly reading and experimentation.
Done last month:
Tasks for this month:
Last month split into 4 parts. First the 1.1 version of Space Hex Duel was completed and released. Next I worked on testing out new tools and setting up the Ci2D dev environment. Then I gave up on that in annoyance and just did some fun coding before finishing with a holiday to Adelaide.
What annoyed me? Unity. In particular Unity 5.6, and the lack of support in modern libraries and technologies. Admittedly that version is about 6 years old, but it is the version I own (forever) and the prices have risen significantly for the current version. Do I really want to spend the money for an update? I don’t need any of the big new features, but there will come a time that I just won’t be able to build and run with the old version anymore. Already VS Code (my IDE) no longer supports the version of .Net required by 5.6 (I had to trick it to work productively). I don’t want to end up trapped. So it is time to investigate my options:
They all have their pros & cons (maybe I’ll write a post about them). For now I am going to check out some Javascript options, largely because those are the ones I know least about.
Also I learnt that I should restrict the ordering of actions in turn-based games to reduce the space of possible actions. This will make the search space for AI much smaller. For example, in SHD it is possible to shoot or place your piece in any order. Just changing this (eg forcing the player to place before shooting) would reduce the possible moves in a turn by orders of magnitude in the worst case (when there are lots of bases). I must remember this in future.
Done last month:
Tasks for this month:
The 1.1 patch of Space Hex Duel is now released and out on Itch.io (and still PWYW - effectively free!). It is actually quite small release, there were no game breaking bugs, so this is mainly “quality of life” improvements. Normally this would be version 1.0.1, but there are a couple of extra screens to support an online connection (feedback page, news display on the main page), so I bumped it to 1.1. Other notable changes include: a timeout on the good AI so It doesn’t sit for minutes in hard situations looking for the best possible move; and a reworded tutorial with a YouTube video (embedded at the bottom of this post) for those who just want to jump straight in. The full changelist is below.
Next up I should start some prototyping work for my next game. Although I’m considering releasing Space Hex Duel to Steam at some point, which will require a few extra tasks. So maybe a 1.2 release in a few months to add those?
Space Hex Duel 1.1.0 (13th March 2023)
Give different enemy types different names
February was a solid month. Nothing flashy or fancy, but just clearing the task list. Not bad considering I lost probably 4-5 complete days to tasks around the house. A couple of interesting issues arose. It turns out that the version of .Net Unity 5.6 uses does not support TLS1.2+ so doesn’t work on recent web services - like the host I deployed the generic server. That took a little fiddling to get working. Before working out a solution, for a couple of days, I thought the whole thing would need to be scrapped - I was not a happy boy! Also realised I needed to change the server to build-in internationalisation of strings - that was was fiddly, but not hard.
The SHD patch release is not done, but very close. Now I just need to: finish up the tutorial changes; record a video of me doing the tutorial; and then final testing. There is a good chance this will be complete in early March. Then hopefully my Internet will hold up long enough to do a little marketing. I’ll be losing a week due to holidays, so just those few tasks are the goals for the month. If there is time after that there always things to do: start Ci2d; improve the generic server; write libraries. I’ll work it out when the time comes.
Done last month:
Tasks for this month:
There was a surprise with the JarrahTech end of month summary. I was expecting to require a whole load of excuses why I did so few hours of work. I still have those excuses (I have been spending many hours doing maintenance on the house), but it turns out they are not needed. Without realising it, I have spend a respectable amount of time completing a basic generic game server. It was a mostly enjoyable process where I tried out a load of new libraries and technologies, so maybe that is why the time just disappeared?
Anyway, the generic server is largely done. The functionality needed at this stage is all there, but a couple of unexpected Docker related issues came up in a test deploy (database replication and external logging). When they are done I’ll write the integration into SHD and then the patch release. Still looking good for this month. I’m not sure I chose the best technology for the server, but I’m not redoing it now - maybe later.
I also had a chat with people about what game I should develop next. In a complete non-surprise it will be Concealed Intent 2D (a working title, not the final name). It will combine the stealth focused synchronous turn-based spaceship combat of Concealed Intent with a procgen rogue-like and on a flat 2D map (rather than full 3D). Two other ideas also caught people’s attention. As a result there may be some background work on the IPO card game, and maybe a little experimentation towards something else.
Done last month:
Tasks for this month:
The big news from last month is Space Hex Duel is released!
The plan was to take the rest of December dealing with a little marketing, the holidays and do some coding for fun before choosing the next project. Well I managed two of those. My internet connection died the day after release and only got repaired nearly a fortnight later, so not much marketing. There have been seven downloads of the game and two people got back to me - one liked it (and paid for it despite being PWYW - thanks!), the other had difficulty with the tutorial. Thanks to the feedback and some of my own thoughts, I now have a couple of things to change. Time for a patch release. It probably won’t be for this month, but hopefully early Feb it will be done. Then I’ll do some more marketing and revisit a possible Steam release.
I’m also back working on a generic online game server. Not for playing SHD online, but to handle all the other stuff like feedback, game stats, etc. As part of the patch release I will build this into SHD. It will be in keeping with the original idea of SHD as a testbed for new libraries. As for the next project, last month I had 5 ideas worth pursuing, which I have now whittled down to 6 (I had a good idea for a simple card-battler). Hmmmm.
Done last month:
Tasks for this month:
It is done! Space Hex Duel is now available on Itch.io as a Pay-What-You-Want (PWYW) download (suggested donation: US$2). I recommend interested people download it for free, and if they enjoy it and would like to say thankyou, then go back and donate. I chose PWYW as a test - to get as many people as possible playing and see if it has any potential. Also, because it has not been playtested by anyone other than myself - hopefully there will not be many issues.
For the basic marketing material see above and:
So what next?
The first task will be to let people know the game is released. Time to dust off my mailing list and Twitter/Mastodon accounts. Probably a few other places too. If nothing else it is good practice. Next, fix any bugs that come up. Since I should have tons of time apart from bugfixing (fingers crossed), I need to decide what to do next. I have 5 possibilities, from the obvious (Concealed Intent 2D) to the unusual (not telling yet!). I also need to decide if I should release this game to Steam. I’m tempted, just because Steam is so big compared to everyone else in PC games that if it is not there then the game will be obscure. However, releasing to Steam will require some extra work, and I don’t want to start that yet. Instead I will mostly spend the few weeks mostly on just-for-fun programming and household tasks. The plan being to start the new year on the next game (and if decide to do it, Steam).
Happy Holidays.
Ahhh, I am agonisingly close to release! This progress report is delayed a few days because I thought I could get it out yesterday. The game is complete (enough :). However, I forgot how long it takes to make a trailer video and other marketing materials. Now the plan is to release by Friday (9th). The trailer should be done on Monday, but then there is copy/images for various forums (Itch, website, IndieDB, mailing list, …) and I have decided to have another go at improving the AI time estimation function (presently it can be badly wrong).
My TODO list for the month:
The tasks completed last month were:
A little change to format in this progress report. Rather than say what I hope to achieve, instead the below list is SHD’s remaining tasks (in order). It is also my current plan. The goal is the release of SHD to Itch.io by the end of the month. That is it. This section comes first, because I’m focussed on the finish. Tasks 1 & 4 may take some time; the rest should be fairly straightforward (fingers crossed).
Last month I ruthlessly culled the list of remaining tasks. This game need to be finished ASAP. The AI component is good enough. I could work on it for many months if I wanted, but won’t. The online component is dropped, the feedback screen is gone. The project’s README file now has over a dozen other possible small improvements, plus a few of bigger ones (but was online play ever a real possibility?). I don’t expect to revisit them.
The tasks completed last month were:
Anyway, time to get back to it!
If you looked at SHD a month ago and again today, you would probably notice no difference at all. However, behind the scenes a great deal has changed. Over the last month my main task has been improving the AI. It soon became clear a major issue was speed. Examining a set of moves took several milliseconds (ms), and there were often thousands of possible moves, sometimes tens of thousands - it was taking too long. In speeding up the analysis, errors began creeping into the system caused by timing and threading issues. Hmmm. I decided to change the way the engine worked so that these errors could not occur and managed to get this largely complete in a week. The result was that average analysis time for a single set of moves went from 5ms to 0.19ms, error free. Proud of that work. It should be fast enough to let the AI to look more than one move ahead - which is the next task.
I also got a little distracted by possible future projects. Now have another good idea for the next project. Hard decisions will need to be made soon around what to do next.
SHD tasks for November are the same as before, just the AI is now very close to complete.
Last month’s completed tasks:
Over the next month: