Where deckbuilders and surreality meet

After Fragment Forge reached its first milestone, I decided to take a break from game development for a bit to clear my head. I started playing a lot of the new interesting deckbuilders, such as Griftland and Accross the Obelisk, I started getting ideas on how to make an infinitely expandable single-player deckbuilder, that does not dilute its card base by constantly adding new cards. Those game’s power-creeping on behalf of the player also inspired me to think of a way to make a deckbuilder which had legacy elements which were not straight up making the game easier.

I just had to think of a theme to marry these concepts into the spire-like deckbuilder formula. The only requirement was that the theme was not vanilla-fucking-fantasy πŸ™‚

Enter Hypnagonia. My first attempt at making a deckbulder using the card game framework work on a deckbuilder formula. Not wanting to reinvent the wheel from the start, I stuck close to the Slay the Spire formula, but added a few twists of my own.

The first one is that you don’t get a preconstructed starting deck. You also don’t do a pseudo-deck construction. Rather like Monster Train, you combine many decks together to select the archetypes of your run. In typical vanilla-fantasy terms, think of it like selecting a class, race, weapon and quest. Each of these comes with their own starting cards, and each archetype selected also can modify your character in many ways, such as modifying their starting health.

Then, on top of that, each archetype selected has its own pool of cards to choose from when drafting. The pool for each archetype is large enough that when you combine them all together, you end up with approximately the card-pool for a single character in other games of this type.

This allows me to add new archetypes, (for example, new “weapons”), without diluting the consistency of card types in any single run. Therefore making for an infinitely expandable game with no downsides. In fact, each new archetype added, increases the possibilities in a run exponentially.

As I said before, I absolutely wanted to stay away from classical fantasy tropes. I also wanted to make a game which is not all about the pure-violence if possible. Not because I have something against Violent games, but because it’s just such a common trope. Griftlands made a cool approach with that, allowing you to play the game almost completely peacefully if you so wish.

But in my case, I decided to move onto the surreal. Not only because it’s not a typical theme, but also because it allows for a lot more possibilities, as well as a lot of humor. Therefore this game will be played in dreams.

Making a game about dreams, allows me to make cards that are anything from typical fantasy, to sci-fi, to absolutely ridiculous. After all, our dreams don’t follow any particular logic and it would totally make dream-like sense for a magic sword, a plasma rifle and a rubber chicken to not only exist at the same time, but be just as effective as each other! In fact, this is why the Rubber Chicken is my very first item (i.e. archetype card pool) which I designed. I want to set the theme just right, you know?

This also gives me an opportunity to move away from the typical terms of violence and death that are typical in these games. I put a lot of effort into making the terminology of the game fit well into its theme. Therefore, you don’t “damage” your enemies, you “interpret” them. In turn, they do not “damage” you, the “stress” you out, and if you get stressed enough, you don’t die, you wake-up!

And this meant that I was making a game with a Thesaurus as my buddy :D. I think it gives the game archetype a nice coat of paint, and I am pretty proud with some of the terms I’ve come up with to signify typical aspects. It also means that I need to come up with different terms on behalf of the player and the enemies, for the same things, but hopefully it’s not too much to pick up. It also allows me to use creative terms which you don’t typically get to see a lot. For example, some Torments clutter your deck with useless cards. I call these, “Perturbations”.

Finally, the dream theme, allows me to create a legacy-aspect which makes thematic sense. But I’ll talk about this another day.

Until then, you can already try out the very first pre-alpha release.

Oh and btw, I am in great need of collaborators for this project. While I can handle the coding, the design, art, sound aspects elude me and I could also use support in coming up with ideas for archetypes, cards and campaign concepts.

If you are interested in jumping in, let me know! As always, this game is Free Software under the AGPL3, so any work you contribute belong to you and the whole human commons.

A call for playtesting and design feedback on Fragment Forge

With the milestone of 100 fully-scripted cards in Fragment Forge, I believe it’s time to switch the focus from prototyping, to playtesting. To this end, I’ve released v0.15 which contains all the latest cards, + 6 personas, over 3 different affiliations.

If you want to help, please download a client, or try it direct from the browser (executable application is way faster though). The application will also open a debug window when it runs. This is normal and you will be useful for any bug-reports.

You can use the single (for now) starting deck, or make your own.

At this point I’m particularly interested in the following:

  • Design Feedback: is the game fun? Is the deck-building interesting? What could be improved?
  • Balance: overpowered cards, broken combos etc
  • Fluff suggestions: Think a card’s name doesn’t fit? Lemme know! I am still looking for better names for the “Zippers” and “Champions” affiliations. Hit me with your best ideas.
  • And last but not least: Bug Reports

Feel free to post your feedback here at the issue tracker, or leave a comment on this post.

A tutorial will be forthcoming soon. Until then, please read the single player rules.

The game GUI is obviously rough around the edges, and the card layout leaves a lot to be desired, but I wanted something playable more than I wanted something pretty. Especially since the design might change in case the rules are adjusted.

It’s been a long road to this point, starting from scratch. Game design + Programming + Playtesting + Story design/Worldbuilding by myself is hard!

At this point I think there’s an interesting core in the game, but I’m not convinced it’s interesting enough to play solo repeatedly. I would be really happy to get some ideas on how to make the solo play more engaging.

A game about the demoscene

Working on a card game framework (CGF) can be tricky. There are tons of edge-cases in card interactions to handle, and a lot of the time one does not even think what functionality the framework they will need until some game requires it.

This is why working with OCTGN was so frustrating a lot of the time. A ton of things that would be quite useful to have for a card game were not supported and that led to endless discussions, arguments and borderline begging at the main developer (who was not a game designer) who very rarely saw the need for those features.

In order to avoid this situation, I decided once the card game framework was stable enough, that I would be working on my own game in parallel. Therefore the development needs of that game would feed the development of the framework itself.

To this end, I created Fragment Forge. It has already helped improve the CGF considerably, leading to massive additions such as the deckbuilder and a ton of additions to the ScriptingEngine.

I would describe the game itself kinda like a solitaire Android:Netrunner, but way simpler, since there’s no human opponent and “mind-games” involved. Rather it’s a pure race against the clock and the interesting aspects come from the deckbuilding and seeing how high in difficulty levels your deck can reach. Take a look at the gameplay video linked in the project page.

While it started as a way to improve the CGF, I’m honestly quite pleased with how it’s shaping up. It’s not the most amazing thing, but it’s tricky enough to tickle your brain a bit and the fragment shader card art looks dope AF. As development progresses, I’m hoping that I’m going to get more ideas to trick up the game and make the gameplay choices more interesting.

I’m also totally open to ideas, so let me know if you come up with any cool new additions, or otherwise let me know what you think in general.

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 2016 ((I dropped out mostly due to burnout and dissatisfaction with the limitations of OCTGN if you want to know)) 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 progress ((Example post)) 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! πŸ˜„ ((Just make sure you read the contribution guide))

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

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 hero ((This is the practice of only choosing that hero, regardless of map or opposing heroes)) 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” characters ((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)) 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?

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) ((Speaking from recent experience. This is too true))