I made an itch.io page

I always knew I had to do CI/CD for my development, but I just hadn’t given any priority yet. As such, until now I was still manually exporting Hypnagonia when I had a stable release, then manually uploading the html to my own site through scp, ssh to the site, and copy the files to the web directory. All so that I can link people to a bland page so that they can play the game online.

And for more feature-packed releases, I would also export the versions for Linux, Windows and mac, create a new github release and upload them there.

It was an unnecessary manual procedure and it always bothered me. But I had other priorities on my end and I kept pushing back the improvement on that end.

That is, until yesterday, where I run into this video introducing DevOps practices to game development:

And that kinda shamed me into going through with it.

Unfortunately interacting with my own webhost was always hacky and felt amateurish. So I decided to onboard Hypnagonia to itch.io. This provides me some benefits. As part of the community there, I can start getting more organic discovery. It provides some interesting metrics and very imprtantly, it’s an estabilished platform which means there’s plenty of guides and products to integrate it easily into my Continuous Delivery pipeline.

Unfortunately, I realized that embedding the game into itch.io doesn’t play well with my current viewport size and the “static” way I had designed it. And that was a rabbit hole…

First I adjusted my main menu screens to adjust automatically according to the viewport size. That worked OK-ish for not ridiculously-small resolutions. It’s fine, we can look at that later

But then I discovered that even small reductions in the viewport, make the cards look massive, as they are never scaled. So I needed to shrink cards according to the viewport size somehow…

Long-story short: I spent around 6 hours yesterday just giving the Godot Card Game Framework functionality to handle smaller resolutions somewhat gracefully. It’s not perferct, but it’s good enough to allow itch.io embed.

And since I was at it, I made some quality of life improvements. And wrote about them into an itch.io devlog.

I’m going to be writing some devlogs there now and then. Not sure how I will handle the integration with this blog. Maybe just post a link to them here when I write them? What do you think?

Seeking video game writers

If you’ve been reading this blog, I’ve been posting about my efforts to create my own game, Hypnagonia. While technical and game design has seen good progress, I am still thoroughly struggling to come up with a storyline and other similar concepts such as short stories for non-combat encounters and so on.

While I’ve pinged a number of people in the past and some have expressed an initial interest, I haven’t seen anyone yet show any initiative, and I’m not the kind of person who pesters people to help me for free. I don’t even know if that would help or not, but I just can’t do it. If someone to whom I’ve talked, doesn’t show any initiative afterwards, I just drop it.

To that end, I am making yet another attempt to find writers who want to collaborate in making a free software game with a surreal theme and psychological concepts. I already have a barebones idea of how the overarching story should go, but I am incapable to fleshing that out myself.

Due to the scope of the game, I have space for both writers who want to put a lot of effort, as well as those who only want to provide something occasionally.

  • I need a lead writer who will take over the overarching campaign concept, and build upon in their own style. You will have almost full creative control of the main storyline.
  • I need writers who will contribute short stories which to be injected into the game at various points. These include
    • Non-combat encounters inside the dream, which provide multiple-choice options for the player .
    • Storylines around each Injustice objective (example: Write the storyline events through which the player character will breakthrough out of their abusive relationship).
    • Ideas for new Torments and Character Archetypes.
    • Naming for cards with existing effects.
    • Thematic ideas for cards which I (or we together) will translate into game mechanics.

The important disclaimer is that this is a voluntary position, with full ownership of the end-product. You will be contributing your work into the Commons as the game is Free/Libre Software. This means not only will you retain ownership of your stories and ideas, but you will also have ownership of the final game product to showcase your talents elsewhere.

If this sounds interesting to you, please join my discord server and let me know in the #story-design channel. I repeat, I am not one to chase people around and I have a no-pressure approach to collaborators. If you want to help, I’d love to have you, but you need to provide your own drive to create! 🙂

I really want to create a video game that will truly enrich the commons. If you want to be part of this, join me!

Finally, a name

I’ve been working on my Godot-based deckbuilder for a few months now and I still hadn’t managed to find something to call it. I’ve been calling it “Project Dreams” to signify that it’s a provisional name, but it’s been really bothering me that I couldn’t find something appropriate.

So in the past few days, I took the time to start brainstorming for names in the discord server, along with the other contributors. My requirements for a name was

  • It has to be catchy (in a poetic or mysterious sense)
  • It has to somehow refer to one of the main themes of the game (dreams, torments, psychology, surrealism, therapy), preferably more than one at the same time.
  • Bonus points if it includes alliteration or portmanteau.

After tons of back and forth, I was almost done with choosing one of the options, but one of the last things I did, was throw the word “surreal” through a thesaurus, just to see what I find, and it showed me a word I’ve never seen before: Hypnagogia.

Hypnagogia is the experience of the transitional state from wakefulness to sleep: the hypnagogic state of consciousness, during the onset of sleep. (The opposite transitional state from sleep into wakefulness is described as hypnopompic.) Mental phenomena that may occur during this “threshold consciousness” phase include hypnagogic hallucinations, lucid thought, lucid dreaming, and sleep paralysis. The latter two phenomena are themselves separate sleep conditions that are sometimes experienced during the hypnagogic state

https://en.wikipedia.org/wiki/Hypnagogia

I don’t know why it was shown as a relevant word to “surreal”, but it immediately clicked for me, because with only a single letter change, I could create an interesting portmanteau.

Hypnagonia

In case you don’t get it, this is a mix of the aforementioned Hypnagogia + Agony (or “Αγωνιά in greek) and It hits so many of my requirements at the same time:

  • It refers to sleep
  • It references agony (being tormented by your own psyche is a core theme of the game)
  • The original word is close enough to the concept of surreality that the thesaurus brings it up as a suggestion.
  • It’s a portmanteau
  • It sounds exotic. Kinda like a fantasy setting
  • It is unique. I don’t conflict with anything else out there (from what I can see)

I did try a few other variations of this, but I believe this one is the catchiest. And I’m also fed up looking for names, so I just went ahead and finally renamed everything!

In case you’re interested, here’s some other names I was considering:

  • Retrospections
  • Remedy of Reverie
  • Theraltes (Therapy + Ephialtes)
  • Lucidium (Lucid + Somnium)

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.

Fuck Cryptocurrency

After GPUs, it seems free CI services are another victim to the cryptocurrency rush from “would-be millionaires” and the legion of scam-artists exploiting their greed.

Cryptocurrency is one of the worst inventions of the 21st century. I am ashamed to share an industry with this exploitative grift. It has failed to be a useful currency, invented a new class of internet abuse, further enriched the rich, wasted staggering amounts of electricity, hastened climate change, ruined hundreds of otherwise promising projects, provided a climate for hundreds of scams to flourish, created shortages and price hikes for consumer hardware, and injected perverse incentives into technology everywhere. Fuck cryptocurrency.

Drew Devault

Man after my own heart!

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.

The risk of workers

Remember in the past when I wrote how the idea that capitalists deserve profits because they’re taking on the “Risk”, is nonsense? Well,in another installment of ‘Why “Anarcho”-Capitalist apologia is always bullshit”, here’s the Google developers for the Stadia game studio being laid off, a year into their contract.

This is one of the biggest and most well known IT companies in the world, hiring people for something that typically takes 3-5 years. Imagine for a bit how “safe” the bet they were making was when deciding whether to take this job. Some people had to relocate state, if not countries to take this job. Which means massive expenses and huge opening for disaster if they are left without job.

But this risk the workers take, is not actually compensated like the capitalist’s is. It’s reversed!

The developers who put their neck on the line for this job, are not going to see the full profit of their work or have any decision-making rights. Instead, if it were successful, Google owners were going to skim a very good portion of the income as profit and the workers were going to get a portion of what their work achieved. Now that it’s unsuccessful, Google owners lost a bit of money (effective chump change for rich people) while the workers face a very real prospect of economic devastation during a global pandemic and a massive downturn in the economy.

You tell me who is taking the higher risk here. The owners, or the workers?

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.