From an implementation perspective, Epitaph is interesting mainly because it's a browser game written in ClojureScript that makes extensive use of procedurally generated text to tell an interactive story. It also uses Om (a ClojureScript wrapper around React) for rendering.
docs/: The HTML page (
externs/: Closure Compiler externs for each of the plain JS dependencies in
deps/. Only covers the parts of each library that the game actually uses.
src/epitaph/: The main ClojureScript codebase for the game.
app.cljs: The main entry point that ties everything together. Handles rendering and manages the game state.
civs.cljs: Functions for procedurally generating alien civilizations, and for updating them on every tick.
events.cljs: A table of all the random events that can happen in the game.
language.cljs: Functions for procedurally generating alien languages. Heavily inspired by Martin O'Leary's blog post on generating naming languages, albeit with some substantial tweaks and deviations.
rand.cljs: Generic utilities for working with randomness and generator functions.
techs.cljs: A table of all the technologies that can be discovered in the game.
project.clj: The Leiningen project file used to build the game.