You crack open a dusty book, and a voice from across time itself speaks to you, putting knowledge directly into your brain. As said by one of my favorite authors:
“Books are a uniquely portable magic.”
Lore in Skelattack is a very old concept, and its age meant that it required many revisions and additions to present it in the best fashion. The system itself, and all the stories contained within, are completely optional to the player. But the allure of Skelattack is that it often delights in things that take you off the beaten path.
A lot of shorter games are fine with just having the endgame clearly in view the entire time. With Skelattack I wanted to offer a glimpse into the history of the inhabitants of this dungeon, since the possible destruction of their way of life is what the entire story hinges on. I was going to have NPCs, but I needed more. I needed a quick way to give tidbits of interesting history to the player without stopping them in their tracks for too long. With these thoughts in mind, I was ready to add Bookshelves to random locations in the game.
The first version of my Bookshelf object was different from what you see today. It contained every piece of Lore in the entire game, and would call it at random when you interacted with it. This was fine for a long time, and you never knew what stories you’d find. It essentially ran on the same code as Bat Chat, during which Imber will call up a random piece of dialogue to keep things interesting. However, what worked for Imber would not work for Lore.
If you’ve read my other devlogs, I’m a huge proponent of using random numbers. This was one case where it made things worse, though. I was hiding these books all around the game, but their random nature meant that you could eventually read 100% of the Lore at the first Bookshelf you found, if you stood there long enough. Upon realizing this, I rewrote the Lore code and broke all the stories apart to be held in their own unique bookshelf object.
Now I was able to treat Lore as a one-time thing; you either read this specific book right here, right now, or you don’t see it again for the rest of the game. Each piece of Lore also gets a specific variable attached, so the game can know what Lore you’ve read, and will keep a saved record of that when you continue the game. This leads to a well-known game design concept where I get to reward the player for taking the time to explore. Not always with money, or health/magic refills, but with knowledge and hopefully immersion.
This is my FAVORITE part of this entire Lore business. Ok, so we’ve got all the books scattered, variables set up…but for what? We need a place to save the collected Lore, so the player can return and see all the stories they’ve collected. I had to design the Library.
It’s a cozy, quiet place where you can ‘check out’ books that you’ve collected. The great thing is that this room is entirely dedicated to the browsing of Lore, which means if you’re in here, you are down for some heavier reading. See, the Lore you’ve been collecting out in the levels only offered excerpts. Skully ain’t got time to be reading books when there’s work to be done! When you read in the Library though, you have access to pages and pages of stories, diaries, tips, etiquette, laws, etc. (provided you’ve discovered the book out in the main levels).
I intentionally added a completely optional feature to my game which required a lot of trial-and-error programming, multiple iterations, illustrations and animations (all by myself). Am I crazy? Yep. Crazy about my game and about having the opportunity to create an experience that will never be done in exactly the same way as I’m doing it right now. Love your games, and they’ll give you love back.
See you in the dungeon.