It turns out that the secret to never second-guessing yourself is to wait to do the second-guessing until after the sunk-cost fallacy kicks in!
For instance, it’s natural to wonder whether making a game with a significant story branching point on a strict time limit was a good idea, but I’m 100% confident in my design. (The following puzzle only appears in one branch.)
If there’s one feature that I wish Adventuron had, it’s real functions with arguments and return values, but subroutines and globals will do in a pinch. Here’s an example plucked at random out of my source code:
describe_suggested_topics: subroutine {
: gosub "subtract_covered_topics";
: set_integer var="suggested_topics_c" (0);
: set_integer var="num_suggested_topics" ((count "suggested_topics"));
: if (num_suggested_topics > 0) {
: append {("(You might ask " + d(conversation_partner) + " about ")};
: iterate "suggested_topics" {
: append {(collection_get{collection->("topic_descriptions") index->(int(item()))})};
: if (suggested_topics_c == num_suggested_topics - 1) {
: append ".)";
}
: else_if (suggested_topics_c == num_suggested_topics - 2) {
: if (num_suggested_topics == 2) {
: append " or ";
}
: else {
: append ", or ";
}
}
: else {
: append ", ";
}
: increment "suggested_topics_c";
}
: clear "relevant_topics";
: clear "suggested_topics";
}
}
