GameboyJam 14 #4 - Finishing the game, and post rating thoughts

It has been a while, right? The jam ended and got both busy with work and busy with my thoughts about the results, so this entry will close up all the remaining things around the game implementation and my feelings with the achieved results.

You can play Go Go Kobold on my itch page, free of charge right from your browser! https://achie.itch.io/go-go-kobold

Implementation finished

I’ll link the whole repo down at the bottom if you want to check the full codebase out, but after the last article, not a lot of happened feature wise. We managed to create a working slice of the game so all that was left is little fixed, modifications and small things here and there.

We got a name though, which is Go Go Kobold!. Was a very late decision but super happy with it. Now to actual coding!

One of the big things was the dragon. I wanted to add a little more life to it, and also add a bit of gameplay around it. Back then the only thing it did was the happy/angry face when the player did the wrong decision around an item. I wanted to spruce and speed a gameplay a touch, so I implemented a “patience” system as well. Basically if you were too slow, the dragon would get angry, and after a certain amount of unsorted items, it would just fire at the player and start a cooldown.

kofi-png

This needed modification around the previously mentioned system, so I needed new helper functions:

function Set_happy_dragon()
    DRAGON_MOOD = DRAGON_MOODS.HAPPY
    DRAGON_TEXT_TIMER = 60
    local texts = {"good","shiny","nice","pricey","allowed"}
    DRAGON_TEXT = texts[math.random(#texts)]
end

function Set_angry_dragon()
    DRAGON_MOOD = DRAGON_MOODS.ANGRY
    DRAGON_TEXT_TIMER = 60
    local texts = { "bad", "eeww", "forbidden", "stinky", "junk" }
    DRAGON_TEXT = texts[math.random(#texts)]
end

function Set_notouch_dragon()
    DRAGON_MOOD = DRAGON_MOODS.NO_TOUCH
    DRAGON_TEXT_TIMER = 60
end

And for the mood to go away, or fire again at the player, we needed:

if DRAGON_TEXT_TIMER > 0 and DRAGON_MOOD == DRAGON_MOODS.ANGRY then
    Fire_at_player()
end
if DRAGON_TEXT_TIMER == 0 then
    DRAGON_MOOD = DRAGON_MOODS.NEUTRAL
    DRAGON_TEXT = ""
end
if DRAGON_SORTED_FIRE_COOLDOWN == 360 then 
    Fire_at_player() 
end

The helpers of the set_mood were really important as the code was starting to get janky already. Sadly I did not create clean code after this either, and while I do realize this could have been heavily simplified now every time the player made a sorting mistake, or had to much items I could just call these to set everything. For example with placing into the “this item good zone”:

if treasureHandler.is_treasure_allowed(treasure) and treasure.y < 56 then
    -- good item brought to dragon
    Set_happy_dragon()
    self.correctSorted += 1
    sfx.play("good")
    treasure.alreadySorted = true
elseif not treasureHandler.is_treasure_allowed(treasure) and treasure.y < 56 then
    -- bad item brought to dragon
    self.health -= 1
    Set_angry_dragon()
    sfx.play("fire") 
    sfx.play("wrong")
    treasure.alreadySorted = true
end

Now all that is left is the “is the pile too big” check, which needed the above mentioned treasure.alreadySorted so I could count which items the player already placed for the dragon, or threw into the whole. This was all handled by the treauseHandler:

local notSortedInPlay = 0
    for k,v in pairs(self.treasures) do
        -- call update for the treasure, and other small codes before
        -- now we count the items
        if not v.alreadySorted and v.alreadyInPlay then
            notSortedInPlay += 1 
        end
    end
    -- if too many items on the ground, we set the dragon into
    -- angry mode. No_touch is a generic mode for "you already placed this"
    -- and "you have too many items". It does not trigger a fire, just makes the dragon
    -- angry
    if notSortedInPlay >= 6 and notSortedInPlay < 9 then
        DRAGON_MOOD = DRAGON_MOODS.NO_TOUCH
        DRAGON_TEXT = "QUICK"
        DRAGON_TEXT_TIMER = 60
    end
    
    -- and here if ther eare too many itmes there, just fire away at the player
    if notSortedInPlay >= 9 and DRAGON_SORTED_FIRE_COOLDOWN == 0 then
        Set_angry_dragon()
        PLAYER.health -= 1
        DRAGON_TEXT = "FASTER"
        DRAGON_SORTED_FIRE_COOLDOWN = 360
        sfx.play("fire") 
    end

All that is left is to setup a win condition for the player. This happens after they sorted 10 items with 6 rules in play. The game starts with 2 rules, and after every 10th item sorted correctly, the game adds a new rule and resets the correctly sorted counter. This way after 40 correctly sorted items the game ends! Or if you run out of lives during the game with mistakes.

After this in place, not much was missing. Simple scene system, add a little tutorial with text and we published the game 15 hours, 8 minutes before the deadline!

Reception and Streaming

Going into the ratings I knew one thing already. I left the controls a bit loose/janky on purpose. My idea was two fold here. One, no old game had perfect controls and wanted a callback to those times. Two, I think it added small funny moments where I did not pick up the item I wanted/placed it not far enough into the hole to drop. I though this would create moments you remember and laugh off… well the players thought otherwise. This idea being frustrating was one of the biggest criticism I received from the jam, so it is a lesson very hard learned.

Oh, I also forgot to mention. Go Go Kobold was the most rated game on the jam, recieving over a 100 ratings! This totally blew me away, the community really went and just fired ratings and feedback onto me, which I’m really thankful for and terrified me for a long time.

go go kobold became the most rated game

If you don’t know, I try to stream every jam game that left feedback for me on jams I enter. I feel like this is common courtesy, good manners and just helps you to learn cool games, meet new people, you know, the whole reason for gamejamming :D That said the absolute numbers of feedback I received put some weight on my shoulders. How I usually handle jam playthroughs is that I play games from people who are actively in the chat, then jump to those who rated my game and then into threads, random games, discords etc… And with over 600 entries the first week basically was busy with just playing through games. You can find all these over at my Youtube playlist for the event!

This might sound like complaining, and partially it is, but it is the good kind of complaint. I had a lot of fun playing all the other games, meeting new people, devs and artists just alike. In the end I managed to snag a really good “Games rated” numbers as well, with the funny 123!

rated 123 games from the jam, wohoo

I also created a small Itch.io collection, that holds all the lovely games I encountered and thought would be worth sharing and praising to others, you can find it over on my profile, so if you want a small condensed experience, check them out!

Rating and yaps about feeling and processing

This section is gonna be a bit rambly, emotionally loaded and maybe a bit toxic to myself, but I want to put my thoughts out. Tl;dr: The game was a success with every metric that can be perceived. Thanks for everyone who rated and left feedback, I really value every single one of them.

Now for the actual somewhat ranty part, which is here so maybe someone reads it and can find them self feeling the same, realizing they are not alone.

I wanted to go into the jam with a very low expectation of wanting to finish in the top 50% of submissions. This would mean 300 or lower in our case. Sadly with all the lovely feedback (even with negatives), I brought my optimistic hopes up to top 50. So I was eagerly waiting for the results to come and then the results actually got published.

results

Overall, 159. I did it. I’m top 50%. Yet my brain was disappointed and angry at myself for all the stupid mistakes. Quirkiness, Theme interpretation and Graphics were all okay in top 150, but I still felt off with them. I though the idea was unique enough among all the digging and pirate games, yet here I am, not even in the top 100. And then I looked and Gameplay and Gameboy soul. Barely in the top 50%. This is what really devastated me, combined with the 2 and the 1 star ratings, I just got sent into a thought spiral: “why is my game so badly rated, why is it this low, why am I getting 1 and 2 start ratings even. People said nice things in the comments. Friends enjoyed the game.”

This was all very hard to process and reminded me of my submission for the last years lowrezjam where LightCrawl achieved terrible ratings. I knew that game was bad, but even then it hit me hard, and made me basically avoid game development for almost a year.

I know these results are not bad. I see the numbers. Top 50% in everything. People left good feedback. Players said they enjoyed the game. Still my mind could not avoid focusing on the negative things, and I’m very mad at myself for this. Wanting to compare myself to other games is a very toxic trait I want to leave behind, and I want to learn how to control my emotions better in this regard. The game was a success. I met many cool devs I follow to this day. The streams were amazing, Twitch grew. The videos were success, my Youtube audience grew. Friends said they enjoyed the game. I enjoyed the game. Yet this faint sour feeling is still pairing with it.

I wanted to follow up with a few things during the rating period. I wanted to fix the janky controls everyone was talking about, but I just cannot get myself to work on the game. And this makes me even more mad. Gamedev makes me feel weird sometimes, but hopefully this one is just a small hump. I do not feel the same disappointment as last time, but I’ll not touch this game for a bit.

What is next then?

First, I forgot to link the repo, you can access it here

Good question. While I do not plan on joining jams for a bit, I do have two small projects hanging in the air. The Playdate remake of Druid Dash and the original project we started usagi with, remaking Lina: Fishy Quest. For gamedev streams we are probably gonna pick these up as both are low hanging, low stakes projects. Druid Dash would help me make my first Playdate game, and Fishy Quest would be a nice wrap for my inital works with the Usagi engine.

So expect these for devlogs and on stream we return to PICO-8, Game demos and maybe more Factorio. I’m also exploring [Altstream], a more human friendly streaming platform that focuses on the creators and supporting them, instead of leeching off and pushing as much bullshit as possible (I see you Twitch and your unwanted auto opt-in decisions!). With exploring these, PICO-8 advent calendar and PICO-32 Lost Pages coming up, our hands will be full with stuff to do!

Aaand this is gonna be my long rant about feeling both validated and disappointed with my results, and what is coming up, sooo till the next one, check out other posts here or on my Ko-fi (where my old stuff lives) or here where everything new resides and I’ll see you next time!

HUGE thank you for my current supporters, Csöndi, Nerdy Teachers and Fletch! Thank you from the bottom of my heart!

kofi-png

If you want to support my work you can do so with a price of a coffee! It really helps me find more time to do all this, and keep my hobby afloat.

Until the next article, take care, have a nice day!

 

About

Hi, I’m Achie o/ (ø:t͡ʃ:i) Indie game developer, Twitch & YouTube indie fren. Creator of Pico-Shorts, writer for Pico-View magazine.


2026-10-23