tvl-depot/users/grfn/xanthous
Griffin Smith c19e3dae5f feat(xanthous): Memoize characterVisiblePositions
Memoize the return value of characterVisiblePositions to a new,
semi-abstracted "memo" field on the GameState, recalcuclated if the
character position ever changes. I'm 90% sure that the perf issues we
were encountering were actually caused by characterVisiblePositions
getting called once for *every tile* on draw, but this slightly larger
change also makes the game perform relatively-usably again.

Since this is only recalculated if the character position changes, if we
ever get non-transparent entities moving around without the characters
influence (maybe something building or knocking down walls?) we'll have
an issue there where the vision won't be updated as a result of those
changes if they happen while the character is taking a non-moving action
- but we can cross that bridge when we come to it.

Change-Id: I3fc745ddf0014d6f164f735ad7e5080da779b92a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3185
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
2021-06-12 18:57:52 +00:00
..
.github refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
bench refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
build refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
src feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00
test feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00
.envrc refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
.gitignore refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
default.nix refactor(users/grfn): build all haskell packages without ifd 2021-04-13 10:34:24 +00:00
hie.yaml refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
LICENSE refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
nixpkgs.nix refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
package.yaml feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00
pkg.nix feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00
README.org refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
Setup.hs refactor(users/glittershark): Rename to grfn 2021-04-12 14:45:51 +00:00
shell.nix feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00
xanthous.cabal feat(xanthous): Memoize characterVisiblePositions 2021-06-12 18:57:52 +00:00

Xanthous

Building

$ nix build

Running

$ ./result/bin/xanthous [--help]

Keyboard commands

Keyboard commands are currently undocumented, but can be found in [this file. Movement uses the nethack-esque hjklybnu.

Development

Use lorri, or run everything in a nix-shell

# Build (for dev)
$ cabal new-build

# Run the game
$ cabal new-run xanthous

# Run tests
$ cabal new-run test

# Run a repl
$ cabal new-repl