Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Creating an Endgame Sticky

A topic by Adventuron created Feb 25, 2020 Views: 317 Replies: 4
Viewing posts 1 to 2
Host (2 edits)

A few people asked about this, and I'm allowing an OPTIONAL endgame in the jam. 

I have now clarified the previously ambiguous rules to state that it is optionally permitted with some constraints (see rules for more information).

You should only create an endgame if you are very confident with Adventuron, and if your game really needs an endgame beyond an ending message (if you want the game to end with a specific player action for example).

To create an endgame check out the bespoke treasure hunt section  in the tutorial.

The following code is for demonstrative purposes only and is a product of my lack of imagination. It's simply here to demonstrate the bespoke treasure hunt mode and how to decouple the win game condition from the last treasure being dropped in the treasure room (if you want such behaviour):

start_at      = beach
start_theme   = two
treasure_room = styx
redescribe    = auto_beta
game_settings {
   treasure_hunt_mode = bespoke
}
locations {
   beach         : location "Beach";
   tomb          : location "Tomb";
   styx          : location "River Styx" ;
}
connections {
   from, direction, to = [
      beach, east, tomb, 
      tomb, down, styx, 
   ]
}
objects {
   coin_1   : object "a <red coin<10>>" at = "tomb" treasure = "true";
   coin_2   : object "a <blue coin<13>>" at = "beach" treasure = "true";
   ferryman : scenery "the ferryman" msg = "TWO COINS" at = "styx";
}
vocabulary {
   : verb / aliases = [examine, talk]
}
booleans {
   has_found_all_treasures_before : boolean;
   has_found_all_treasures : dynamic_boolean {(
      treasure_deposited() == treasure_total()
   )}
}
on_command {
   : match "pay ferryman; pay man"  {
      : if (is_at "styx") {
         : if (has_found_all_treasures) {
            : print "YOU WIN THE GAME!" ;
            : win_game ;
         }
         : else {
            : print "NEED TWO COINS" ;
         }
      }
   }
}
on_describe {
   : if (is_at "styx") {
      : if (has_found_all_treasures) {
         : print "\"PAY FERRYMAN\"" ;
      }
      : else {
         : print "DROP TWO COINS HERE." ;   
      }
   }
}
on_tick {
   : if (is_at "styx" && has_found_all_treasures) {
      // We use the second boolean to only  show this message once
      // We use manual redescribe to force on_describe{} message to show
      : if (has_found_all_treasures_before == false) {
         : success ;
         : print "ALL COINS FOUND." ;
         : set_true "has_found_all_treasures_before" ;
         : press_any_key ;
         : redescribe;
      }
   }
}
Submitted

Oh, great. One question: should it be only one action? For example, I want player to drop all treasures in treasure room then he should go a couple of rooms away and do specified action. Is it okay?

Host

I was careful to use the word "puzzle". A puzzle may be multiple actions.

Host

Be very careful to test your endgame well. It  requires a good grasp of dynamic booleans  + state handling + adventuron in general.

Submitted

Oh, many thanks. Everything ok with the final puzzle, the room with ending action is simply locked until all treasures are in the treasure room, so no way to finish the game without this.