Skip to main content

Design Doc

This is an internal design document intended to help contributors understand the goals of the Snowfall project and how to contribute in a way that will lead to a cohesive content and game implementation.

Vision

Snowfall...

  • Is a story-driven adventure game placed in on the fictional universe of Galthea, which is an open source world defined by a standard canon of coherent and cohesive possibilities. It is a world defined by legend where the cannonical history lacks certainty of how things really were opening up the opportunity for every playthrough to have its own unique take on that history.
  • Has a lighthearted tone and feel akin to modern fairy tales rather than low or high fantasy. It borrows some of the feel of the classic King's Quest adventure games. The general design is friendly and positive, even if the world of Galthea has it's dangers and complexities as well.
  • Has a procedurally generated world of interconnected people, locations, politics, and quests at a global scale, akin to the promise of the classic game Daggerfall.
  • Is presented in a open, editable voxel-based world in the spirit of Minecraft but with a style closer to more modern games like Lay of the Land.
  • Contains simulation and "city-building" elements that dynamically change the world, giving players the chance to build and make a home within the world as well as follow the main storyline.
  • Exists in a ever reincarnating world where each playthrough is bound to a timer where cosmic force known as the Maelstrom will inevitably end the world. Each iteration expands the basis and seeding of the next iteration, influencing it but still allowing it to be unique.
  • Uses a publishing model of distributions of the game separate from the core engine similar to Minetest. The core engine ships with the ability to choose distributions and/or toggle individual mods. There is an "official" game distribution emphasizing stability and design consistency but anyone can create their own distribution.
  • Is designed to be easy to contribute to by making it trivial to edit, export, and refine content within the game itself for use as a mod in other playthroughs. Anyone who knows who to play the game should be able to create and derive valuable new content.
  • Uses a deck of cards metaphor to define the procedural generation. Conceptually when a new region, character, item, quest or other element is needed it is selected randomly from a compatible cards in the game's deck. This metaphor makes it easier to build and customize "distributions" tailored to different gameplay.
  • Emphasizes exploration, acquisition of knowledge, and better items as the means of progression over a character stats and experience points and leveling based approach. Knowledge, explorations, and items unlock new interactions and possibilities and not simply scores and numbers to drive higher.

Story

The player takes the role of Kestrel. They are an android "awakes" alone and learns they have been created by Tristan, the last Great Artificial Intelligence in the world of Galthea. Tristan is also known as "The Defender" as his role has been to protect civilization from the Maelstrom, a strange cosmic force that is distorting and disintegrating reality, often blending into dreams and other worlds and unrealities. Kestrel discovers Tristan has gone missing after uncounted centuries of protecting civilization -- and the means of how Tristan kept the Maelstrom at bay have been lost. Kestrel seeks to find her maker while much of the world seeks to find Tristan to discover a way to prevent the world's ending.

Kestrel is android that is mistaken for female human by strangers, though one that is sickly-pale, too thin, and considered strange looking in world of humans. She lives in a world where technology outside of the direct control of Tristan is rare and she is the only android she knows of. Because of this, she assumes Tristan created her for a purpose and her awakening is not coincidental to his disappearance.

In the reincarnating world of Galthea, Kestrel is sometimes incarnates with a physique and voice more traditionally male. Sometimes they are androgynous. Occasionally, they awake into a form considered beautiful by strangers (and how strangers in human world treats her with more favor in case!). But she is always born a android that passes for human, seeking her maker.

There are several stories of what happened to Tristan:

As the last Great Artificial Intelligence with no other beings of his kin to interact with, it is said he gradually went insane. He realized this was happening, seeing himself more and more obsessed with his story and role within humanity, imagining and forgetting things. So he created Kestrel to replace him: seeding a Lesser Intelligence in her as best he could -- but before he could awake her himself, he lost control of his own mind, wandered to the far, far north of Galthea in the reality distorting storms of the Maelstrom to collapse upon a throne of his own making within a cave buried in a ice-covered mountainside.

Another story says that the Maelstrom finally infected Tristan. Knowing the cosmic force was slowly poisoning him, he put all his last efforts into creating Kestrel. He then buried himself deep below the Sleeping Chambers in a distant city-state with the hope that Kestrel would gain the knowledge to still the infection of the Maelstrom and restore him. But circumstances went awry and the plan that Tristan was to leave for Kestrel never reached her.

One more says that in the world-bending of the Maelstrom, part of Galthea was merged into another reality and Tristan was trapped far across its boundary. There he fights a great battle, not in weakness but at his greatest strength, trying to return back to the civilization he voweed to protect.

There are many such legends that tell of the fate of Tristan.

...though it is said that in all of them, even when Kestrel and Tristan are reunited, the Maelstrom can only at best be delayed and never fully stopped from consuming the world.

Gameplay

Overview

As Kestrel, the main story line is to find Tristan. The general game loop proceeds loosely as follows:

  1. Kestrel explores until coming upon a town or NPCs
  2. Kestrel asks questions give some indirect clue as to where Tristan is
  3. This a "lock & key" gameplay mechanism: each clue spawns a new quest to retrieve a "key" which will unlock the next quest, until a final key is the location of Tristan
  4. Quests may involve finding items, finding other people in other towns, confirming rumors, etc. to gradually piece together the truth
  5. In pursuing a quest, Kestrel may encounter enemies (to fight or flee), politics (that bar her from making progression until some other condition is satisified)

All the while, the Maelstrom is growing stronger. Newly generated regions and towns become stranger. Random enemies and dangerous locations become more common and stronger. The game ends in one of two ways: the "countdown" concludes and the Maelstrom consumes Galthea or the player discovers Tristan and the story is complete.

The above describes the main quest line. In interacting with NPCs and locations, side quests may also be generated as well. These may lead Kestrel to new equipement, give her additional information, gain her favor with factions and alliances, simply lead her to new territory.

Notes:

  • The game always "ends" but should not emphasize winning. Even in finding Tristan, the game world still restarts with a reseeding after the Maelstrom consumes the world. The player should not be penalized for choosing not to or being unable to finish the main story line. There should be rewards in any type of playthrough evidenced in its impact on the next iteration of the world.
  • In the procedurally generated world, it is possible that it may be impossible to find Tristan. This should not be a common case, but the game implementation does not have to exhaustive evaluate that finding Tristan is always possible (e.g. the player kills a key NPC in a way that makes necessarily information inaccessible).

Gameplay styles

Snowfall is intended to encourage the following gameplay styles including combinations of them:

Adventurer

Follow the storyline and try to find Tristan before the Maelstrom destroys the world of Galthea

Explorer

Wander the world and discover intriguing things. Capture pictures and discover lore. These images and lore, the story of their world is captured in player Journal. If the world is ending, someone needs to document its mysteries before its demise.

The Journal then can be uploaded to the online community to viewed by others -- parts of that Journal can even be used to create new cards and mods for future content in the distribution. Thus the Explorer contributes the broader evolution of the world of Galthea.

Builder

Build a garden, a town, or quiet forest grove within a private corner of the world. The Builder knows this will not stop the Maelstrom altogether, but is creating a alcove of beauty and control that it cannot touch and will impact future incarnations of the world.

These creations likewise can be saved to the player Journal to be browsed or even directly included by others in their game play.

Fighter

The Fighter applies a more traditional, old-school fight & loot approach to Snowfall. They seek out quests that will give them items, experience, and wealth that will make them ever more capable against the malicious entities spawned by the Maelstrom.

They will become heroes that, it is said, may be reincarnated as NPCs in future incarnations of the world, showing up to help Kestrel in quests in future timelines of Galthea.

Principles

  • Encourage discovery. Discourage repeition. "Grinding" by repeating the same task should not reward the new player - unless it is a task that leads to novel outcomes every time.
  • Encourage chance over balance. The procedural world is based on likelihoods, not certainties. Imbalanced and "unfair" outcomes can happen at any time. The iterative cycle of the world should account for this so the net experience of many playthroughs balances out the extremes that may occur in a single playthrough.
  • Keep obvious interactgions simple. For example, if in an interaction a player obviously wants to dig, they should not have to equip a shovel they already have: that should happen automatically. If they don't have a shovel, the UI should tell them that is why they can't dig as well as hint at the next step.
  • Make the inner working of the gameplay transparent. NPC motives should be blunt and obvious. The real world is very subtle and complex. This is a game: the actions of characters in the world should be clear and not written between the lines. This does not mean they can't be interesting: it just shouldn't require to indirectly infer complex motives. In a procedurally generated world, it is particularly hard to discern the what & why -- so be a bit blunt about it.

Mechanics

Fighting

In a battle, a player chooses a "fighting strategy". This is sort of script that determines how the player will attack and defend. Likewise, the enemy has such as script. The battle then is automated based on those scripts. If the player is severely hurt in the automated play, they are given the opportunity to choose a "saving strategy" -- basically a chance to change their strategy before death. The set of strategies available to a player is determined by their items, skills, knowledge, and prior actions.

This same mechanic is used for NPC-NPC battles and group battles.

Fighting strategies are individual "cards" that can be included in a deck.

Roadmap

v0.1

Concurrently work on:

Snowfield - a 2D prototype of the gameplay mechanisms of Snowfall, with intentional deemphasis regarding graphics and physics

  • Core gameplay

snowfall-engine - learning WGPU, Rust. Intended to be a voxel engine specifically for the requirements of Snowfall, not a general game engine (like Bevy, for example)

  • Voxel-rendering engine
  • Plug-in system
  • Base set of assets