Sunday Afternoon in the Garden Postmortem


I wanted to make a maze game in Bitsy to learn more about the engine.

I started with creating a starting point, setting up the maze, and making the end point. And then I realized that mazes are feel kind of boring if they’re just mazes.

So, this quickly turned into an experiment in learning more about branching statements.

A maze game turned into a collection game and collecting things seemed unfulfilling, so I added another collection aspect and a secret. Then it all felt like enough.

BRANCHING STATEMENTS

In my short experience writing games, something that has become a priority to me is continuity in storytelling and making the world feel interactive and alive. I like to employ this in ways that feel a little overboard sometimes.

Knowing about things

For example, in this game, I wanted different dialogue to show if you learned there’s a key on the map somewhere compared to if you didn’t learn that information. Overboard and could’ve been solved with reconsidering the narration voice. Maybe instead of having a personality, the narration could’ve just said “KEY OBTAINED” or something like that. But sometimes you just want to be cheeky.

{
  - knowkey == true ?
    Hey, this must be {clr3}{printItem "1"}key{clr3}!
  - else ?
    What's a {clr3}{printItem "1"}key{clr3} doing in this suspiciously empty area?
    Better hold onto it. 
}

Essentially, this led to creating the variable knowkey that could be unlocked by discovering the locked gate or speaking to the beetle outside the gate that knew the gate was locked.

Collecting Items and Sharing Secrets

Some of the biggest things I want to keep in mind after working on this are the formatting for branching statements. I had to use the built-in tools on Bitsy combined with copy and pasting the code in the ‘show code’ menu. This is especially true for parenting sweeping variables.

In the instance I’m using as an example, I made the player collect mugs and dewflowers. When you collect all the dewflowers and talk to the quest-giver, the variable specialmug will be flagged as true. Go to the mug quest-giver after this and the variable mugcon will be increased. Another point will be added to that when the player finds all the mugs and speaks to the mug quest-giver. Hurray, now conversations change! Then the beetle

But that’s a really complicated interaction!!!!!! And in order to get it to work, I had to copy and paste the mugcon variable to parent the others.

{
  - mugcon == 2 ?
    Hey, I'll do you a favor since you procured those {clr3}{printItem "2"}mugs{clr3} for me. 
    There's a secret pathway near that vase by the gate. 
  - else ?
    I was wandering through the maze with my beloved {clr3}{printItem "2"}mug collection{clr3} and I haven't gotten around to looking for them yet.{
      - {item "mug"} == 1 ?
         Oh would you look at that, you found 1 of my prized {clr3}{printItem "2"}mugs{clr3}! Thank you!
      - {item "mug"} == 2 ?
         Oh my word, you've found 2 of my precious {clr3}{printItem "2"}mugs{clr3}! Thank you!
      - {item "mug"} == 3 ?
         Incredible! You've found all three of my previously-lost, priceless {clr3}{printItem "2"}mugs{clr3}. Thank you! 
        {mugcon = mugcon + 1}
        {
          - specialmug == true ?
                       Is that... a {clr3}{printItem "2"}handmade mug{clr3}? 
                      What a perfect masterpiece of a specimen...          
          - specialmug == false ?
                      ...
                      Pardon me, but did I only misplace {clr3}{printItem "2"}3 mugs{clr3}? 
                      
                      Well, I think {clr3}{printItem "2"}4 mugs{clr3} would make a much more proper set. If you find another, would you please pass it my way?
                  
        }
    }
}

Ending the Game

So, I mentioned the mugcon variable in the previous section. I mentioned how I needed to copy and paste parents in the code to get more complicated branching statements.

Ending the game was another complicated task because I wanted the ending beetle to be able to give the player a status report before you had all the win conditions met. I also wanted to not immediately force the player to quit the game on accident.

Now, I couldn’t figure out the way to print the variables in speech. A few sources I found said that there was a {say dewflowers} script or {print dewflowers} script but I couldn’t get either of them to print the number stored in the variable. I just wanted to make it so that if you had 5 dewflowers in your inventory, you could have a character say “hey, you have 5 dewflowers”.

I also had to explicitly create a sequence, create the end command, and nest the end into the sequence. I was just happy to know I could do that, tbh.

{
  - mugcon == 2 ?
    {sequence
      - {rbw}Oh!{rbw} It looks like you've done everything there is to do here for now.
        
        Talk to me again if you'd like to ascend.
      - {end}
    }
  - else ?
    {rbw}Hello!{rbw} You still have a few more things left to find in the garden. 
    Why don't you see if you picked all the {clr3}{printItem "4"}dewflowers{clr3} and {clr3}{printItem "2"}mugs{clr3}? {
      - specialmug == true ?
        You obtained the secret item: the {clr3}{printItem "2"}handmade mug{clr3}.
      - else ?
         You still haven't found the secret item either.
    }{
      - {item "dewflowers"} >= 18 ?
         Wait-- I'm sorry, it looks like you DO have all {clr3}{printItem "3"}dewflowers{clr3}!
      - else ?

    }
}

Essentially, what I learned is:

  • the most-complicated variable should almost always be the parent condition
  • if what’s important is the fact that the player does have something, a true/false variable is better to use them the item inventory
  • I don’t know how to print variables in dialogue
  • items are best for things that the player collects on the map
  • Oh my god, also remember the difference between = and ==. = is for setting, == is for checking to see if a condition is met.

THOUGHTS ON ACCESSIBILITY

Slowly, but surely, I am working on learning accessibility standards and trying to accommodate them from the beginning of a project. What that meant for this project was thinking about colorblindness and Web Content Accessibility Guidelines (WCAG) as they relate to color contrast.

I used this site called Color Safe to pick colors that followed WCAG standards. I picked what color I wanted to use for the background (#008b8b) and then picked colors that best matched what I was going for. I stuck those colors in Photoshop and tested out how they would look to someone who’s colorblind. I usually proof for the Deutranopia-Type because it seems to have the most restrictions.

Colorblind Party

Photoshop Colorblind Proofing

There are a ton of things I have to learn in regards to accessibility. Visuals like this kind of feel like the barest of minimums. I know having text that is typed out is helpful to some extent for screen-readers. But at this point I’m unsure of how screen-readers process html scripts – or Bitsy games specifically. I know that simple controls are also something to think about in terms of accessibility, but Bitsy’s controls are, by default, fairly simple.

I think I’d like to look into the accessibility features of Bitsy and adding audio to a game with Bitsymuse next.

Files

sunday_afternoon_in_the_garden (4).html Play in browser
Oct 27, 2020

Leave a comment

Log in with itch.io to leave a comment.