Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Trystan Goetze

25
Posts
2
Topics
141
Followers
111
Following
A member registered May 11, 2020 · View creator page →

Creator of

Recent community posts

Haha, thanks for checking out my little prototype! Your tileset was a big help :)

Glad you enjoyed it! Writing the dialogue was one of the most fun parts of making the game, if a bit frustrating to code in GB Studio. I thought it was important to capture the fact that the Basic Rulebook is pretty clear that killing everything you meet in the dungeon doesn't have to be your first or only option :)

Very cute. Love the artwork :)

The prototype is finished and available here: https://errantcanadian.itch.io/gbx

I didn't quite get to implement the Cleric and Wizard classes, but figuring out how spells would work in this sort of game is a bit difficult. Other things didn't quite make it, either, like items from the merchant, levelling up, and music/SFX.

I'm not sure how satisfied I am with the menu-based system for interacting with NPCs. But it would be so much more difficult to do it any other way. Maybe I'll look at Advance Wars or Fire Emblem or something for inspiration for another iteration, so it feels more like a turn-based tabletop game.

This was fun! I'll probably keep noodling with what I've put together so far.





Update

I've implemented the first monster interaction, which occurs when you try to move past a sleeping goblin. Here's a quick demo, which also shows off a couple more rooms of the dungeon:

Next Steps

I have some more monster interactions to script, some treasure chests to fill, and a couple more rooms to lay out. After that I think I will call this done.

Planning the monster interactions in the text editor, then implementing them in the engine helped a lot, so I'm going to keep doing that.

GB Studio forces you to work with the limitations of the Game Boy Color (8x8 pixel tiles in a 20x18 tile grid, four-colour backgrounds and three-colour sprites, hard limits on the number of unique tiles on screen, etc.), which I find both a fun challenge and a way to force me not to overscope 😁 It also makes it possible for someone with no artistic training to do a little customization of the assets.

I like the concept! The little skeleton guy is just doing their best! I could see this leading to some really interesting puzzles as it goes on.

Have you thought about the narrative framing of the game? It might be neat if the concept and objective were explained by way of saying something like, you've noticed that too many things are dying in the forest, so you're going to see if something has happened to the forest's dryads and caretaker druid.

Update

I'm starting to reach the point where the visual programming interface of GB Studio is becoming a hindrance. Scripting interactions with monsters involves some complex conditionals, which I find hard to read when they aren't in text.

A screenshot from GB Studio. The portion of the screen shown is in the scripting sidebar, which shows a snippet of a script that is five layers deep into a nested conditional. Statements that are visible include calling a script called "RollUnder", which rolls a d20 and checks to see if the result is less than a target number, a statement decrementing the character's hit points, and a dialog box displaying speech from a goblin.

So I decided to step back and write out the first of these in pseudocode, which helped a lot with planning the control flow:

ON Trigger.ENTER {
If GOBLIN_COMPLETE is False {
    If GoblinActive is False {
        Display "The goblin is asleep… Try to sneak past? {Stealth}"
        Display.Choice Set Temp0 {
            True : "Yes"
            False : "No"
        }
        If Temp0 is True {
            Call RollUnder(Temp0, PC_Stealth, Temp1)
            If Temp1 is True {
                Display "{Stealth: $Temp0} Success!"
                Scene.change(D1_R2, 16, 9)
                Stop
            }
            Else {
                Display "{Stealth: $Temp0} Failure!"
                Goblin.StopOnUpdate
                Goblin.Emote(Shock)
                Display(avatar=Goblin) "Zzz--wha? Whozzat?"
                Goblin.Move(5,9)
                Display "The goblin approaches!"
                GoblinActive = True
            }
    }
    Loop {
        If Goblin_HP <= 0 {
            Stop
        }
        Else If GoblinComplete is True {
            Stop
        }
        Else If PC_HP <= 0 {
            Display "You collapse from exhaustion and injury!"
            Call PCdead
            Stop
        }
        Else {
            Display "What do you do?"
            Display.Menu Set GoblinWhatDo {
                Attack:1,
                Scare:2,
                Friend:3, 
                Trick:4,                 Escape:0             }         }         If GoblinWhatDo == 1 { \\Attack             Call RollUnder(Temp0, PC_Attack, Temp1)             If Temp1 is True {                 Display "{Attack: $Temp0} Success!"                 Goblin_HP = Goblin_HP - PC_Damage - Equip_Damage                 Display "You strike at the goblin with your weapon!"                 Display(avatar=Goblin) "Arrgh!"             }             Else {                 Display "Attack $Temp1 Failure!"                 Call RollUnder(Temp0, PC_Armour, Temp1)                 Display "The goblin counterattacks!"                 If Temp1 is True {                     Display "You evade damage!"                 }                 Else {                     PC_hp -= 1                     Display "The goblin hits! (1 Damage)"                 }             }         }         Else If GoblinWhatdo == 2 { \\Scare             If GoblinScared == 2 {                 Display "The goblin isn't afraid of you."             }             Else {                 Call RollUnder(Temp0, PC_Scare, Temp1)                 If Temp1 is True {                     Display "{Scare: $Temp0} Success!"                     Display "You frighten the goblin, suggesting that
                         they might be cut to shreds or blasted into                          goo if they attack."                     Display(avatar=Goblin) "Okay, okay! I don't want                                 no trouble!"                     Goblin.move(15, 6)                     GoblinComplete = True                     GoblinScared = 1                     Stop                 }                 Else {                     Display "{Scare: $Temp1} Failure"                     Display "You try to scare the goblin with threats and                          promises, but they aren't impressed."                     Display(avatar=Goblin) "Heh, you think that's scary?                                 Say hello to my little, uh, my
                                knife!"                     Display "The goblin brings the knife a little too                              close to you and grins menacingly. But they                          don't attack yet."                     GoblinScared = 2                                  }         }
        Else If GoblinWhatDo == 3 { \\Friend [...]
Now that I have that mapped out, I can actually implement it in the engine.

Here's the goblin in question, for fun. It's an edit of a sprite from the roguelike repository linked earlier.

An animated GIF of a goblin pixel art sprite doing an idle animation. The goblin is dark green skinned, wearing gold-toned armour, and carrying a gold knife. The idle animation has the goblin tap their foot and wiggle their arms.

I definitely could! It would probably only add a line to each post-interaction dialog box. Something like this:

> A goblin jumps out of the vase and sneers at you!
> What do you do?
   Attack {Strength}
   Frighten {Charisma}
   Befriend {Charisma}
   Trick {Charisma}
   Escape {Dexterity}
> Befriend
> You offer the goblin a small snack from your satchel. They cautiously accept and begin nibbling.
> {Roll: 12 vs. 16 -- Success!}
> The goblin yips with joy and tugs your arm towards the vase.
   Inside, you see a cache of gemstones worth 50 G.
   When you turn to thank the goblin, they are gone.

The results would be a little odd-looking to people familiar with 3e and later editions, though, since I'm using the roll-under-ability-score mechanic from Basic/Expert D&D, instead of the roll-over-difficulty-class mechanic from modern D&D.

(1 edit)

Update

Being on vacation is good for making progress. I've mapped out a very simple dungeon, with these tilesets:

Here are some GIFs of the character options, made with MacOS's Screenshot app and gifify:

Fighter

Thief


Cleric


Wizard


These are all edits of these sprites, which are themselves derived from these. (And I'm just noticing that the he/him wizard's hairline changes length in one frame—something to fix when I'm done here.)

It's a bit tricky to implement a character choice like this in GB Studio, because there isn't a way to change the default player sprite after the game is compiled. (Unless there's a function in the engine code, but I'm not touching that, for now.) So every scene has a script that runs on initialization to pick the right sprite sheet. Works fine so long as I remember to copy-paste the script into every scene.

Next Steps

I have some ideas for monsters to include. I'm converting these neat public domain sprites from an old roguelike project. I likely won't be able to add too many for the jam project, since it's a lot of scripting: I want the player to be able to choose between fighting, sneaking, and using social skills (frighten, befriend, and trick) to successfully complete encounters with monsters. It's so much easier, technically speaking, to make a violence simulator—which makes me think about how the affordances of the computing systems we use are value-laden, but that's a story for another time.

Update: Today I produced a title screen and finalized how the ability score generation will work. Character classes and genders can be chosen. Most of the player character sprites I got from here, but I had to make some edits to include a nonbinary sprite for each class. I've also got a first pass at the core mechanic: When the player is prompted to choose an action, the game generates a number between 1 and 20 and compares it to the ability score or skill score used. If the result is lower than the score, they succeed; either way, the game will tell them what happens to their character. These prompts only occur at a few pre-scripted events (interacting with a monster, being offered the option to jump across a chasm, etc.).

Next steps: Creating a menu system in GB Studio is a headache, as I've learned from building the character creation screens. I have to make a few more of these for the pause menus, where the player can view their skills, equipment, and treasure collected. You can see an early version of the skills menu in the video; still some bugs to fix. After that, I have a small dungeon to map out and stock with monsters and traps. I'm also thinking about how I might contrive the "heal" theme into the game, beyond the cleric class (which likely won't even be fully implemented by the end of the jam).

(1 edit)

What I'm trying to do: My main goal is a proof-of-concept or minimum viable product. I'm trying to make a dungeon crawling game with mechanics loosely based on the Basic/Expert edition of D&D from 1981. There won't be any AI scripting; all monsters and non-player characters will react solely based on how the player chooses to interact with them and randomizers tied to the player character's attributes. I'm gonna try to implement four character classes for this jam (fighter, thief, cleric, and wizard), with a way to roll ability scores and to choose your character's gender, but I'll be satisfied with just one character class. There won't be an experience/levelling system in this iteration but I'll aim to implement that in the future. The dungeon for this proof-of-concept is going to be pretty linear and short, just to get the main features set up: monsters/NPCs, ability checks, traps, and treasure. Everything is going to be made in GB Studio, a game engine designed for creating games that are compatible with the original Game Boy and Game Boy Color, but the jam version will be published as an in-browser game. [Edit to add: I'm also using Tiled to lay out the screens, and Affinity Photo to edit sprites.]

Where I'm starting: I'm starting this jam with some ideas on how to implement the mechanics and a collection of pixel art assets that are either set up for the Game Boy Color's constraints (three colours + transparent colour for sprites, four colours for backgrounds). Most of these I've found here on Itch; I just found this lovely trove of public domain sprites from an old roguelike project—they have to be edited to fit the colour limitations, but they're all really cool. I have some knowledge of how GB Studio works from noodling around on some unfinished projects and Robert Doman's tutorials.

Here's the first room of the dungeon, featuring the she/her fighter, a quirky merchant, and some ominous foreshadowing.

GBX Room 1

A screenshot from a game in development in GB Studio. The window title is "GBX". Four-colour pixel graphics depict a square dungeon room with checkered tiles for a floor and stone brick walls. At the bottom of the image, a female fighter with a horned helmet stands near the entrance to the room, which is a gap between two pillars; light shines in from outside. Flanking the entrance are four statues of warriors in armour with swords and shields. In the top right is a cordoned-off area with a bed, a treasure chest, and a sword and shield hanging on the wall. In front of this area is a woman. In the top left there are six gravestones rising from broken tiles; a shovel is in the ground nearby. At the top, directly opposite the entrance to the room, is a door; banners with skulls on them are hanging on the wall to either side of the door.

1. Hi there! What's your name? Want to introduce yourself?

Hey all! I'm Trystan. In my day job I write about and teach philosophy, with a focus on the ethics of computing technologies.

2. Did you participate in the last jam we held? If so, what do you plan on doing better this time? If not, what's your reason for joining?

Nope! I'm new to video game development. I'm keen to learn more, especially as I'm thinking about new teaching methods—I would love to teach an intro-level course that explores basic computer programming and the social contexts of computing through game development.

3. What games are your favorites? Did any of them inspire you, or made you want to make your own? 

I mostly play tabletop RPGs—I started with D&D in 2000 but my current favourites are Fate Condensed and Fellowship. As far as video games go, I love the Legend of Zelda series and Stardew Valley. The fantasy adventure genre inspires me to create  ✨🧙‍♀️ 

4. Do you have experience with game development? What did you do/with what engine? 

I've made a few small tabletop RPGs, but this will be my first video game design.

5. Tell us about something you're passionate about! 

I love game design, writing, and teaching!

6. What are your goals for this game jam?

My goal is to finish a minimum viable product of a dungeon crawl game, loosely modelled after the "Basic/Expert" edition of D&D from 1981. I'm using GB Studio as my engine because I like the constraints of the Game Boy and the programming required is pretty minimal.

If you need a prompt for a hack of Honey HeistLasers & Feelings, or some other "you have two stats" game, James Chip just created a generator: twostats.neocities.org

(1 edit)

Howitt has released it on Patreon (you don't have to be a patron to download it for free, but you do need to log in): https://www.patreon.com/posts/administrative-48956999?utm_medium=clipboard_copy&...

Everything that has a page in his Itch store is available for free on Patreon. Sometimes he forgets to upload the files here.

Looks neat! I'll check it out :)

Thanks – glad you liked it! I'll be sure to check out your submission :)

(1 edit)

OK, but seriously: the fact that this jam is over and no one made "What's So Cool About Space Jam?" is a collective failure. That or a healthy fear of Warner Bros.'s legal department.

Maybe someone can pick it up and make something about blasketball for the blaseball jam. (That someone is not me.)


Everyone knows that the higher the die size, the more realistic it is ;)

Joking aside, it was actually necessary to get some of the probabilities that aren't made up even close to accurate.

Oops, missed this somehow! Probably you’ve seen already but I went with a race rather than a class option. I wanted a way for any character to have some witchy vibes, thinking of how diverse witchcraft is in titles like Little Witch Academia. To that end, the unique trait I designed allows for the Wisdom increase they get to be used to help any other ability check, save, or attack.

The approach I took to making a 5e witch was to make it an ancestry (= "race"), taking inspiration from mythology and works like A Discovery of Witches or The Golden Compass, where witches are a distinct, not-quite-human lineage. Like the background approach, it lets a character of any class have a bit of witchery.

Just thought I'd share this nice bit of music for hexing fools writing games! Any other witch jams you'd recommend?

:3