'20-Second Riddler' Postmortem


The Concept

I thought the 20-Second Game Jam looked like the perfect jam  in terms of giving participants a long time frame to make a game while simultaneously forcing them to make a short game. It sounded great for perfectionists.

The concept for 20-Second Riddler was inspired by the movie cliché where characters trigger a trap and then need to disarm it in seconds by solving a riddle or puzzle. At the same time, I wanted it not to need all that context, be more calming to the players, and fit my aesthetic.

▰▱▰▱▰▱▰▱▰▱▰▱▰▱

The Assets 

Firstly, I managed to convince myself not to try and create all the visual assets. As an artist, that always makes me feel guilty, but this time it helped that there were no characters involved (I am primarily a character artist) and that I could cut down the visual assets to the bare minimum. I ended up using a nice pixel background asset and created a textbox and buttons to match it.

The background music was chosen from an asset pack I bought as part of a bundle and is specifically composed for puzzle games, to help players focus. As I am not an expert on riddles, I looked up and went through a lot of them, and selected 20 that looked interesting while also having one-word answers.

Lastly, the game was put together using TyranoBuilder. Not being a programmer, I do not use software that requires coding from scratch. I chose it over RPG Maker, Twine, and Ren'py because it felt like the better choice for a simple browser game with input and visuals.

▰▱▰▱▰▱▰▱▰▱▰▱▰▱

The Development

Due to TyranoBuilder not being meant for riddle games, it took me some research and several attempts to figure out how to properly get the game working. I would also like to thank the Steam community for helping with troubleshooting, and the 20-Second Game Jam Discord group for reporting bugs and suggesting improvements to the first build of the game.

Useful information I learned about using TyranoBuilder in making this game: how to make the game go to a random scene (could be very useful in visual novels or an assortment of other games); how to create a question that requires input from the player and checks if the answer is right or wrong, each option leading to a different outcome (the bread and butter of 20-Second Riddler), and how to get rid of some common issues with the software.

For future reference and in case it helps someone else, I will leave the detailed guides below.

  • Jump To Random Scene
    • Create an iScript element with the following code:

      tf.randomNum = Math.floor(Math.random()*TOTAL)+1;
      tf.sceneName = "SCENENAME" + tf.randomNum +".ks

    • Replace "TOTAL" with the total number of possible scenes. Replace "SCENENAME" with whatever name you will be giving your scenes, for example, replace it with the name "Event" and then name the possible scenes as "Event1", "Event2", etc. (Original code from here.)

      (¯`·.¸¸.·´¯`·.¸¸.->(¯`·.¸¸.·´¯`·.¸¸.->(¯`·.¸¸.·´¯`·.¸¸.->


  • Create a Question and Check Input for Correct Answer
    • Create a Variable. Write 'blank' as its initial value.
      E.g.: Variable named "Question." Initial value: "blank".
    • Add whatever text you want to ask the question.
      E.g.: "1+1=?"
    • Add an Input Box assigned to that variable.
    • Add an ImageButton targetting to another label (where answers will be checked).
      E.g.: Image Button - Target: "CheckAnswers" 
    • (OPTIONAL) If you want the question to be timed, add a Wait element followed by a Jump element in which the target is the outcome if the player did not answer in time.
    • Create a new label where answers will be checked. 
      E.g.: Label Name: "CheckAnswers".
    • Add a Commit Input element.
    • Create a Page Break element.
    • Create a Jump element. Target is the outcome if the answer is correct. Select "Jump if condition is TRUE". A is the name of the variable. For B, select "value" and then type the correct answer for the question. Select "A=B" for Condition. (You can have multiple jump elements in case there are several correct answers or to account for the fact the answer is case-sensitive.)
      E.g.: Jump - Target: "CorrectAnswer" // x Jump if condition is TRUE // A: "Question" // B: (value) "2" // Condition: "A=B" 
    • Create a Jump element. Target is the outcome if the answer is wrong. Select "Jump if condition is TRUE". A is the name of the variable. For B, select "value" and then leave the space blank. Select "A<>B" for Condition.

      (¯`·.¸¸.·´¯`·.¸¸.->(¯`·.¸¸.·´¯`·.¸¸.->(¯`·.¸¸.·´¯`·.¸¸.->

  • "Wait" Bug
    • As was kindly explained to me by the community on Steam, the "Wait" element in TyranoBuilder can become buggy and cause the game to glitch when repeatedly entering scenes. To fix this, create a TyranoScript element with the code "[wait_cancel]".

Leave a comment

Log in with itch.io to leave a comment.