tvl-depot/users/grfn/xanthous/pkg.nix
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

80 lines
4 KiB
Nix

{ mkDerivation, aeson, array, async, base, bifunctors, brick
, checkers, classy-prelude, comonad, comonad-extras, constraints
, containers, criterion, data-default, deepseq, directory, fgl
, fgl-arbitrary, file-embed, filepath, generic-arbitrary
, generic-lens, groups, hgeometry, hgeometry-combinatorial, hpack
, JuicyPixels, lens, lens-properties, lib, lifted-async, linear
, megaparsec, mmorph, monad-control, MonadRandom, mtl
, optparse-applicative, parallel, parser-combinators, pointed
, QuickCheck, quickcheck-instances, quickcheck-text, random
, random-extras, random-fu, random-source, Rasterific
, raw-strings-qq, reflection, semigroupoids, semigroups, splitmix
, stache, streams, tasty, tasty-hunit, tasty-quickcheck, text
, text-zipper, tomland, transformers, vector, vty, witherable, yaml
, zlib
}:
mkDerivation {
pname = "xanthous";
version = "0.1.0.0";
src = ./.;
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens groups hgeometry
hgeometry-combinatorial JuicyPixels lens lifted-async linear
megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
semigroups splitmix stache streams text text-zipper tomland
transformers vector vty witherable yaml zlib
];
libraryToolDepends = [ hpack ];
executableHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens groups hgeometry
hgeometry-combinatorial JuicyPixels lens lifted-async linear
megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
semigroups splitmix stache streams text text-zipper tomland
transformers vector vty witherable yaml zlib
];
testHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens groups hgeometry
hgeometry-combinatorial JuicyPixels lens lens-properties
lifted-async linear megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
semigroups splitmix stache streams tasty tasty-hunit
tasty-quickcheck text text-zipper tomland transformers vector vty
witherable yaml zlib
];
benchmarkHaskellDepends = [
aeson array async base bifunctors brick checkers classy-prelude
comonad comonad-extras constraints containers criterion
data-default deepseq directory fgl fgl-arbitrary file-embed
filepath generic-arbitrary generic-lens groups hgeometry
hgeometry-combinatorial JuicyPixels lens lifted-async linear
megaparsec mmorph monad-control MonadRandom mtl
optparse-applicative parallel parser-combinators pointed QuickCheck
quickcheck-instances quickcheck-text random random-extras random-fu
random-source Rasterific raw-strings-qq reflection semigroupoids
semigroups splitmix stache streams text text-zipper tomland
transformers vector vty witherable yaml zlib
];
prePatch = "hpack";
homepage = "https://github.com/glittershark/xanthous#readme";
description = "A WIP TUI RPG";
license = lib.licenses.gpl3Only;
}