Category Archives: The Undefined Remainder

Geeky stuff. Internet, Games, Free Software, Sci-fi etc.

I guess I should announce the Godot Card Game Framework here too, huh?

I don’t know why ,but I haven’t gotten around to posting about this on my blog. Anyway, in case you haven’t noticed, in the past 2 months I’ve been heavily working on a little something called the Godot Card Game Framework.

Read the link to see what it is, but if you are interested to know how that happened, here’s a recap:

After dropping out of OCTGN game development after Doomtown:Reloaded got cancelled by AEG in 20161 I was itching to start something to call my own. Especially since I felt all the knowledge I amassed with 5 years of coding card games in python was going to waste. Unfortunately the only programming language with which I really feel comfortable is Python, and PyGame…well let’s just say it leaves a lot to be desired.

Around early 2019, I was almost ready to try learning C# to start learning Unity, but by choice of luck, I happened to search for “Unity using Python” and one of the first results was Godot! And it was perfect! Features to compete with Unity, Lightweight, Free Software and best of all, Python-like syntax! It was as it was made with me in-mind!

After going through the documentation and tutorials I jumped in and started developing a hex-card game hybrid, but I was putting too much effort trying to make things work perfectly and not enough work making an actual game. Also my code was shite since I just did not have enough experience with Godot.

I took a break from that and decided to try and contribute to the Wesnoth Godot port which was fairly new at that point as well. I felt working with more experienced developers would give me some guidance and better coding practices. I did provide some pull requests mostly around documentation (since the whole codebase was utterly undocumented) and some refactoring to remove some “spaghetti”, and then went on a hiatus from development due to life stuff. And when I came back roughly 1 year later, I found out all my comments and contributions had been wiped clean as they refactored the whole thing from scratch and didn’t even bother to keep comments around.

Needless to say, I felt disheartened from that and was in no particular mood to contribute further.

At the same time, I had since started more actively lurking in the Godot subreddit and noticed that quite often, people would post about their progress2 with a card-based game they were designing and a ton of people would ask for some source code or other guidance, usually to little to no response.

I even was sometimes one of those people asking for advice, and I know how overwhelming it can be to want to create a game but having no idea where to start.

So I just decided that people need to stop reinventing the wheel, and to that end, I would make something to fill that need information on making a card game with Godot. I had the experience on what a fully automated card game needs, so I might as well use it, gawddamnit!

And If I’m going to do it, I’m also going to do it my way: Extremely perfectionistic! So this means tons of documentation and unit tests. Hell, I even sent PRs to make gdscript docs maker work for my purposes, something which has saved move countless hours of wiki editing.

Progress has been fairly fast since. I didn’t expect I would progress from this to this in less than 2 months! I even have some people sending pull requests which is awesome to see!

And that’s where we are now. I’ve just released v1.4 of the Framework and surprisingly even to myself, I show no indication of slowing down. I have instead started making my first actual game using my own framework, which most of the time just sends me back to add improvements to the framework itself to make it capable of doing what I need.

If you like what I’m doing, I will appreciate all words of support, new issues or feature requests and best of all, pull requests! 😄3

And if you want to chat further, feel free to hit me on Discord.

  1. I dropped out mostly due to burnout and dissatisfaction with the limitations of OCTGN if you want to know []
  2. Example post []
  3. Just make sure you read the contribution guide []

My theme kinda died

And I’m not in the mood to fix it anymore. I used a heavily customized HemingwayEx ever since I started this blog, but it’s been unmaintained for the past 7 years and I noticed recently that my homepage is now all wonky. Plus sporadically people had been complaining about readability.

Since I don’t post that much anymore, I think it’s time to go to something more standard, so I just selected one of the wordpress defaults for now. Feeling cute, might change later 😀

On Game Design motivation

There’s been quite a bit of progress on my game engine since the last time I posted about it. I now have playable cards, building placement, effect automation, ability to manipulate elements on a hex map and a research pile. All in all, it has taken me approximately 35 hours to reach this stage which feels pretty decent for someone who’s never used Godot or built a video-game from scratch before, but I think a lot has to do with my time building card game plugins in OCTGN.

I even created a Godot demo on how to merge hexagons into tilemaps, which is the question I was asking last time 🙂

Unfortunately, while my coding has already caught up to the rudimentary design I had drafted, I feel like I’ve been procrastinating from furthering the existing design by losing myself into the code. I even started making Unit Tests rather than progress the game’s design.

Funnily enough, I initially thought that the game design would be the easy part, and actually making the engine to run it, was going to be overwhelming. However now that my basic code has provided me a platform to create fast iterations on design (which is why I wanted to start with the engine before I has a working prototype), I find that when I’m going back to complete the design game, I find that overwhelming.

I have to make it interesting? And exciting? And variable?” Uuuuugh! Can’t I just code existing mechanics instead? At least then I have a tangible goal and I’ll know when I’ve achieved it.

My stupid internal monologue

I’ve always been much better at expanding what was already there than making something from scratch, and it is a “muscle” I’ve never trained before. It will take me a while before I’m not instinctively afraid of the amount of work I have to do. That’s my main procrastination trigger.

I have to keep reminding myself: I do have experience in game design, did tons playtest organizing, got ~25 years of boardgame experience, and now I know enough of a video game engine to perform game design iterations at a speed others can’t match. This is doable for me, damnit!

And yet, every time I open my design document, my brain tries to run out of my head.

Anyway, here’s a random screenshot.

So I started making a game

Oof, update frequency here has decreased dramatically hasn’t it? Oh well, I blame the new social media taking over how we consume updates. Also, I haven’t felt the urge to keep waxing politically lately as most I can think off in that regard are rants and nihilism.

Nevertheless, I do have something new I’m doing, which is that I started using The Godot Engine to finally create The Game I Always Wanted To Play But Nobody Would Make (TM).

Initially I was looking at using pygame since Python is the only language I feel comfortable enough to use for something as complex as that, but my first foray into documentation and examples was a complete disaster. Most the code samples in the pygame repository I tried, led to dead links and the documentation was difficult to get into.

I then left things simmer for a while until I run into Solar Settlers which is surprisingly similar to the concept I have in my head and that kickstarted my drive to continue development as it showed I could do a very minimalist game and still achieve the gameplay I wanted. I checked with the author who pointed me to Unity, which unfortunately does not support python. Howevever I was lucky enough that one of my searches on using python with Unity brought me to Godot and it was “love at first sight”.

You see, Godot is like Unity, but, very importantly, using an Open Source licence (MIT) and its scripting engine, while not python, uses exactly the same syntax and has lot of the same methods. This should theoretically allow me to get a much better running start than having to also learn C# to work with Unity.

So I’ve started doing this on my free time lately, following the great step-by-step tutorials to get me into how Godot handles things, and past few days I’ve started creating a basic setup for me to test and iterate the game rules, without having to use Pen&Paper.

And the speed by which I’m able to do things now has been amazing! I got me a hex map, and a card-drawing mechanism already! It may look like absolute shite, but it’s there 🙂

Things really do feel overwhelming when starting something like this from scratch. I have almost no idea what the hell I’m doing most of the time and I just keep hacking at it until things eventually work. It would be even worse if I at least didn’t have python knowledge already. Hopefully my motivation will last longer than my patience 😀

Also, if anyone wants to help me implement this hex guide into Godot (because I have no idea how to connect the two), lemme know. I could use all the help I can get!

Stellaris now allows Megacorporations, so I brought in some familiar faces

In case you don’t know, Stellaris is a 4X / Grand Strategy videogame. Yesterday the latest expansion came out, which introduced, among a complete redesign of the game, Megacorporations.

So I couldn’t resist to create the leaders of industry from the Android Universe, as I faced or represented them often enough in Android:Netrunner.

What do you think?

NBN – Led by our lord and saviour

Haas-Bioroid Unfortunately I cannot create a Machine Megacorp Empire 🙁

Jinteki – The Clones have finally taken over.

Weyland Consortium – You’ll trade whether you want to, or not!

Can Overwatch one-trick drama be a good simulation of microaggressions for privileged people?

Yet another Overwatch flamewar is ongoing about the classic question of whether someone “one tricking” a hero1 in competitive should be a bannable offense or not. As always the “ban them” camp has the loudest or more numerous voices, even though the Overwatch design team has publicly stated that they disagree with this approach. This latest drama round was only started because an ex-Blizzard/Overwatch employee has publicly stated the opposite. Check the thread sorted by “controversial comments” to witness some nerdrage if that’s your thing today.

However as someone who habitually plays primarily “off-meta” characters2 who’s spent significant time improving my skills with them, I’ve been often lumped into the “one-trick” corner by raging team-mates. In fact, playing off-meta characters is a more likely indicator that your team-mates will turn against you, rather than one-tricking as a practice, since if you’re tricking an in-meta characters, nobody bats an eyelid; but I digress.

What I want to suggest is that the experience of someone who plays off-meta/one-tricks in OW is going to be like a very very mild experience of microaggressions that marginalized people experience regularly. What tends to happen to people who make such choices in competitive play, is that there is a constant level of hostility and bothering that other players just don’t experience. From the mild, such as someone asking you very politely to switch your choice at the start of the game, to the overly hostile, such as someone flaming at you, or deliberately throwing the game to spite you.

On their own, each of these might not be an issue at all, or just a hilarious occurrence, respectively. Howevever where these situations start to approach the microaggression territory is when one experiences some form of them in almost every game they try to play. If in almost every game you play someone politely or aggressively tries to make you switch characters at some point in the match, then at some point even the most polite phrasing is not going to help the effect they have on your psychology.

While there are other games with hero choices, Overwatch is uniquely positioned to act as a “microaggression simulator” due to its mechanics which support a constant change of each team’s roster. Other games might have “off-meta” characters, but often due to the locked-in nature of each once the game starts, people tend to not rage on this issue that much. However in OW, people will keep annoying the off-meta choices for this exact purpose, with the comments often escalating in vitriol when the game is going bad and the off-meta player refuses to switch.

Now, reminder that I don’t think they are anywhere on the level of microaggressions a marginalized person receives, but they are a really good way for someone who otherwise would have too much privilege to even understand what a microaggression even is, to get a mild sampling themselves. Perhaps is might be something on which an understanding and respect for actual microaggressions might be built?

  1. This is the practice of only choosing that hero, regardless of map or opposing heroes []
  2. This means characters which the “competitive scene” is not using, and as a result the  majority of OW players take to mean they are weak choices []

You might be a Torbjörn main if…

Inspired by this reddit post, I decided to compile my own list 🙂

  • You know that in a pinch, an ult without a turret can help you level it out faster.
  • You know that when doing the above, you stand in front of the turret.
  • You know that the turret needs to be as far away from combat as possible. It has long range and never misses.
  • You know all the good spots on maps for a turret to shoot far without allowing enemy snipers to hit it.
  • You always save 50 scrap for yourself, to help for a getaway from a flanker.
  • You know that against pharahs, using the shotgun at long range is more useful when you have the turret helping.
  • You find it cute when D.Vas or Winstons think they can just jump in and destroy your turret just like that.
  • You know to pull our yer hammer when an enemy Reinhart hides behind his shield during an ult.
  • You know that actually attack on payload maps is really good for Torbjorn. Especially if you’re facing a defensive Lucio.
  • You hate attacking on 2 CP or hybrid maps.
  • You’re ALWAYS the scapegoat.
  • You always get a card. You never get a vote.
  • Gold in Hero Damage. Gold in Objective Kills. Gold in Eliminations. Asked to switch first.
  • You’ve had people apologise to you multiple times.
  • You love pairing with Symmetra on CP defence.
  • You know that heroes with shield get the armor pack first.
  • You cry a little inside when your tanks pick up the armor before your supports.
  • You’ve found yourself shouting at the mic “Pick up the damn armour!”
  • You hate attacking bastions on payload maps.
  • You use baby turrets as extra 150 HP per 6 seconds when necessary.
  • You regularly ask people not to babysit your turret.
  • You know you’re doing a good job when the enemy team switches to full anti-torb heroes.
  • You know that turret placement when you have ult and when you don’t have ult, is different.
  • You always keep riveting a corner a DPS or support fled into, for about 3 seconds.
  • You know you need to reposition your turret after every 2nd push. Even if it wasn’t destroyed. Especially when facing D.Va.
  • You never try to level up a turret during a team fight.
  • You got a golden weapon and you know which is the the only victory pose which displays it.

And here’s some that I liked but didn’t write since they were already posted in the above thread 🙂

  • You know the exact number of swings it takes to setup a level 2 turret.
  • You wonder why you aren’t classified as a sniper.
  • You wonder why you aren’t classified as a healer.
  • You know that “Defense Character” is more of guideline than a rule.
  • You can hit a friendly Genji with an armor pack from 40 meters off.
  • Leveling off your sights means a 45 degree angle, not because your shots fall, but because that’s where the heads are.
  • The enemy team is reduced to ulting your turret because they cant get in otherwise.
  • You get accused of being AFK after out-sniping the enemy widow 3 times.
  • You can make a chicken out of a feather.
  • You have to leave voice chat in competitive because your team mates are screaming at you.
  • Your ping is over 300ms (And you still team kill)1
  1. Speaking from recent experience. This is too true []

Out of ammo

As you may have heard by now, Doomtown:Reloaded is being discontinued. As part of the design team for the past 3 years, it’s been a rough but wonderful ride and I’m really proud of what we’ve achieved in terms of balance and gameplay.

Unfortunately the writing was on the wall at this point as event attendance had slumped, and online activity was barely existent. Even with some of the best tools available for a card game, in the form of DoomtownDB and OCTGN for online gameplay – things that are not given for most card games – it seemed like we were struggling to retain people’s interest. Of course I’m speaking only as an observer since I don’t really have an insight into sales records of any sort, but it felt to me that the past 6 months were more anemic than is healthy.

So while sad, I can’t say I’m horribly surprised by this turn of events. Nevertheless, the upcoming expansions are some of the best we’ve put out until now, and the final Pine Box’s new homes will open a lot more avenues for gameplay as well.

I plan to write a “post-mortem” from my perspective on Doomtown:Reloaded, so keep an eye out if you’re interested.

Windows finally given for free?

What’s this then? My 9 years-old prediction is finally coming to be? Huzzah!

To be fair, this isn’t exactly direct free giveaway, but it’s pretty much the next best thing. Microsoft is finally starting to feel the heat about their market share coming from mobile devices and the upcoming Steam OS, and I’m suspecting they are trying to get ahead of the game. Legitimizing pirates makes sense, if it will retain their OS market share.

Unfortunately, I’m not sure how much good it will do them. Sure the pirates will be legal in Windows 10, but they’re still not going to be buying the OS. I suspect this is more an attempt show developers that the important development platform for games and apps is going to be Windows 10, rather than someone else like Steam OS. Of course, profits from those apps/games do not go to Microsoft, but if by the time Windows 11 comes around, PC users are again solidly within their technologies, Microsoft does not have to offer the same thing once more.

So this is more like a honeypot offer to avoid attrition before requesting money again. It’s classic Microsoft. It will be interesting to see how many will take them up on their offer and where it will lead.