Tag Archives: Godot

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.

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.

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!