Category Archives: Coding

Programming, HTML, CSS and all similar

The Kudos-based economy for the KoboldAI Horde

Work continues on the KoboldAI Horde apace, and in the past week I’ve added oauth auhentication but kept the anonymous access live as well. Let me tell you, figuring out how to use the flask.dance module for discord was a complete PITA.

But I got it done, and even added github authentication (and hopefully google soon, if they stop asking for silly things)

The authentication was added to allow me to build the next step, which is to be able to balance usage from the community.

The thing I expect to happen is that as the service becomes more popular, we might have way more clients trying to use the horde than we have actual contributing servers, and therefore we would run into performance bottlenecks. This could become unworkable especially if things like bots start using this service anonymously etc.

To provide some automatic balance, I have now introduced the concept of Kudos into the mix. A Kudos is a reward gained when someone contributes to the well-being horde in some way. There are two built-in methods to gain Kudos at the moment:

  1. Any time your KoboldAI server generates text for someone, you receive tokens based on the amount of text generated and the power of your model.
  2. KoboldAI servers get “uptime” rewards every 10 minutes they stay online and check-in looking for more requests. This incentivizes people leaving their instance running even in non-busy times.

On the flip-side, people using the Horde as clients are likewise consuming Kudos to do so. Every prompt you send, will reduce your balance by the same amount of Kudos rewarded to the server which fulfilled your request. Effectively you’re “thanking” the people running the instance which helped you.

But unlike typical currencies, you can still use this service even if you don’t have any Kudos. You simply go negative, which represents your “debt” to the community. This allows people to use the Horde anonymously as well (through the common Anonymous account) which simply keeps going more and more in negative Kudos.

But to avoid abusing this service by people who want to take and give nothing back, I needed to find a way to disincentivize negative kudos balances. And I just implemented the solution to do that which is a fairly simple one.

You kudos balance corresponds to your priority in the queue of requests

This means that if there’s plenty of servers around and not a lot of requests, nothing much changes, even for anonymous clients and they get to enjoy the full speed of the horde.

However on times of congestion, the requests sorted by kudos-order. The people with the most kudos get to have their requests fulfilled first, while those with the least, such as the Anonymous account, will get their generated last.

With some other tools provided such as bridge-based priorities, and server-owner-preference, this should allow owners of servers to make sure that not only “good” actors are the first to use their resources, but also to find their own ways to provide a service to selected members of the community. For example someone might set their family members to have priority on their server gens, even if those members are deep in negative kudos.

Along with that, I’ve deployed a kudos transfer service where peers can send kudos directly to others. So someone who has accumulated a large amount, might use that to reward good behavior in the community, such as writing documentation, or helping others. The kudos transfer can also happen via REST API, which can allow even automated tools to participate, such as discord bots which might trigger on special smileys assigned to posts and give a small kudos reward to the recipient.

There are of course many other things to consider, such as actions by malicious actors who might try to game the system. I really hope I won’t have to deploy countermeasures for people abusing community goodwill.

But until then, I really enjoy seeing the excitement from the KAI community, especially as heavy models like the fresh Erebus 13B are deployed into the horde. With the kudos infrastructure in place, there is now potential for new dynamics and reward systems to emerge organically from the community which will serve as an excellent guide on how to best proceed with this project.

The KoboldAI Horde: AI writing for everyone through mutual aid

Those who’ve followed my progress in developing Hypnagonia would know by now that I’ve been working on the integration of KoboldAI with Godot for the automatic generation of stories. This solution while working never quite satisfied me, as it required quite a lot of investment on behalf of a player who wanted to generate stories.

Kobold AIs hard at work

That approach left me unsatisfied. As it happened I had an idea to use the new KoboldAI API to create a distributed cluster based on consumer GPUs in people’s PCs. The concept being that one would connect their PC in some fashion to a server software and whenever someone sent a request for generation, an available PC would pick it up, generate it, and send it back to the requester.

The requester themselves would therefore not need a powerful GPU (or skill to use Google Colab) to use KoboldAI, while people who’s PC is otherwise sitting idle, would be supporting the other members of the community.

So after some discussions with members of the community, I decided this idea had legs and I wanted to build it before I continued with Hypnagonia. I’ve been working non-stop on this for the past week and I now feel it’s at a pretty good state.

Introducing the KoboldAI Horde!

This is a python server which you run on a server somewhere and it provides an interface with which people can request GPT writing generations. The second part is the bridge, which is what people who have their own KAI instances run, in order to connect the KAI server to the server. The last piece of software of course is the KoboldAI client which runs the models generating the text.

Until now, the only option for people without such powerful hardware would typically to use a service like NoveAI or AI Dungeon, where one has to pay for the service. They also provided a fancy interface and tools to help people write their individual stories. Aside from the cost however, there were also limitations. Dungeon AI recently imploded due to their own actions, and a lot of people were left without a home.

And of course, for a free software video game, such services are prohibitive, as I can’t pay out of pocket for the text generations of dozens of players (or imagine if my game ever became actually popular).

After a bit of hacking of the KoboldAI client itself, I also added functionality to allow someone to use their own KoboldAI client to talk to the Horde directly. Which means someone with a potato PC, can still use KoboldAI directly.

Now there are some obvious limitations as you might expect. First of all, the availability of the models in the horde is dependent on who is supporting it at the moment. If only people with weak GPU are in, the best you’ll find is a Nerys 2.7B. If however some of the big chonkers are in, you might be able to use KoboldAI as if you have a 20B model behind it.

The other problem is of course questions of privacy. Even though the text is encrypted during transfer, and even though the horde does not store any prompts or generations, at the end destination, the owner of the server can see all your prompts if they so wish, even if they don’t know who you are. So for those wanting the really steamy stuff, or perhaps those who write stories using real people and locations, this might be a deal breaker.

However for more normal stories, or for more generic generations such as for utilities and apps, this is hardly a concern.

Finally we’re still new, so currently everyone is playing nice. But there’s always the potential of bad actors, who might food the horde with garbage generations just to shut it down. There’s nothing I can do about someone dedicated to do that except go into a whitelist mode, and have the horde become an invite-only service, much like a private bittorrent tracker. In fact, anyone could set up their own private instance for their own community, for those situations where they want only trusted people to use it.

Eventually my plan is to follow the bittorrent approach for usage and contributions as well, where people will only be able to use the horde if they contribute somehow to the KAI community. Whether by adding their own GPU to the horde, or by writing documentation, etc.

But ultimately I want this to be a mutual aid based service. Where those who have the capacity help those who do not, and the latter find some other ways to make it up, for the uplifting of everyone in the KoboldAI community.

And before anyone suggests to tie this to some web3 token: Fuck that shit! I will work integrate with any cryptocurrencies! That is poison for our communities AND for our ecosystem.

The owner of the KAI client repo was also kind enough to redirect their domain to my KAI Horde instance, so now we have a very fancy url as well.

Official KoboldAI Horde

Already this is working amazingly well and I’m working on improvements daily. I’m excited to see what kind of doors this will open.

My first steam game

Hypnagonia now has an official steam page!

It’s not much but it’s mine 😀 It took me a while to gather everything needed to create the steam page as Steam is way way more thorough than Itch.io. The benefits over itch of course are the automatic updates you’ll be able to receive. And for me, hopefully being on steam might attract a few more eyeball than might become collaborators 🙂

Why my ADHD means I end up making an ugly video game.

Hypnagonia has copied a lot of design paradigms from Slay the Spire, primarily because I needed a baseline to start working on content, instead of getting stuck in trying to figure out all the details of the design for every aspect. But you may be wondering why almost a year since I started it, it still looks like something to manage servers. To explain that, I need to give some background.

How “battles” look in the latest version

As someone with ADHD, it’s very easy for me to be overwhelmed by the frontloaded effort needed to be able to start something as large as developing a new game, and give up. Copying the design of something else is way more conductive to jump straight into doing something I already know how to do well (in this case, coding and card game design).

I am very lucky that my “autistic comfort zone” so-to-speak is programming (and general PC use), so that counteracts my executive dysfunction to a degree that allows me to start working on something, just for the joy of having a goal to program something. I kinda think of this “autistic drive” as a car battery ignition. It allows me to kickstart myself to do something which is one of the massive blocking points of ADHD.

However it’s not a trick that can always work, and it needs the right circumstances.

I got first interested in programming when I was 10 years old. I even pestered my mother enough to voluntarily go to 2 years of programming school back then – and sit through some of the worst lessons in programming one can have. Who the hell tries to teach 10-year olds Fortran by reading from the manual? Later on, I didn’t manage to get into university – due to just wanting to play computer games instead of studying for the exams. Instead, I went to a vocational school for programming for 2 more years.

When did I finally start programming for myself? When I was in my 30s. I literally learned programming and then didn’t do anything with it until I had the right circumstances. I tried multiple times to motivate myself to actually do something I knew I liked doing, but I couldn’t because I didn’t know what to do with it that was achievable for my skills. Things like making video games were out of the question as I had nowhere the skill needed to even begin. Yes, I know everyone starts like that, but try telling that to my stupid ADHD brain who does not get the concept of not getting the happiness chemical immediately.

What I truly needed was something I could start with very little programming needed and then built up my skills little by little, but having a clear but achievable improvement I could do.

In my case, my circumstances ended up being my interest in coding old card games in OCTGN, which requires very little code to start, but allows you to go bonkers with python if you want to (even if it doesn’t make it easy). The way it worked for me, is that I kept wanting to add more features, but each feature was just simple enough that I could see myself achieving it within a day or so. It kept me motivated enough to keep going.

All that worked pretty well until my eventual burnout after 7 years or so due to juggling too many projects at once.

The good news was that I had already picked up enough gamedev knowledge to give me some confidence. Once some of my burnout started to wear off 3 years later, I wanted to get back into card game design, but I didn’t want to touch OCTGN anymore. And then I discovered the Godot Engine (the way how is a post for another day) and after a few false starts, I got the idea to start on the Card Game Framework.

The reason why work on CGF is what worked, is because I had just enough knowledge of the things I needed to build (due to my experience with OCTGN), so that my autistic kickstart gave me enough momentum to overcome my ADHD executive dysfunction and head straight to Hyperfocus.

So, back to Hypnagonia, when I initially got the first concept for it, I knew it was way bigger than what I had done until now. Especially since I have no support network (I am not in a modding scene, and none of my contacts from my OCTGN, Android: Netrunner or Doomtown days seemed interested). So I knew I had to settle in the solodev role.

I also knew that if I tried to “reinvent the wheel” too much with my game, I will never get going as I will be stuck trying to think of how everything should work together until I give up due to complexity.

So early on, I decided to mostly copy Slay the Spire, as the granddaddy of the genre, while adding the few spins I wanted to use, which I knew were manageable for me. This means I settled to clone the UI look and core gameplay loop at least. The reason is, by now, I know how to program a GUI I can see in my head, and I know how to design card games, but I have no idea how to design good looking graphical interfaces, fancy animations, shader and effects or even any sort of art.

By using the StS layout, I could bypass my annoying brain trying to trick me out of doing something cool, by not having it get existential dread about trying to do something it doesn’t yet know how to do!

The main reason then why Hypnagonia still looks like so bad, is because I have no idea how to fix it, and any time I consider that I should do it, my brain goes: “Nope, you don’t know how to do it! Procrastinate a little instead. Reddit is just a button away!”

If I were to nevertheless stubbornly pressure myself to not do anything else except trying to improve the look of the game, I would procrastinate so much, I risk loosing my motivation for developing Hypnagonia completely. I had more than one close call with this.

For example, early on, I decided not to copy StS overworld mechanic (a map with encounters) because I wanted a more storyline-based experience. However I had no idea whatsoever what to replace it with. I got so demotivated that I couldn’t think what to do about it, I started distracting myself with other things. I was stuck and losing interest worryingly fast.

Fortunately, an experienced board game designer friend of mine agreed to brainstorm a little with me, and managed to throw an idea out that broke my “designer’s block” which eventually became the dream journal I have now.

So experience has taught me to know my limits. And at the current point, my limits are game UI/UX. Staying within the StS guidelines allows me to have a usable game. My plan is to make something playable end-to-end, even if not it’s not good looking and is full of placeholders. To salvage the rest, I just hope that I can attract specialist in the areas I cannot handle.

Every day I think about working on Hypnagonia, I need to kickstart my motivation and push through my urge to procrastinate “a bit” first. The way to do this, is to stay within my comfort zone, which is programming and game design.

So in the end, my autism helps me overcome my ADHD, but it has its limits. Therefore, the game look suffers.

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.

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.

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.