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
This commit is contained in:
parent
80d501d553
commit
c19e3dae5f
14 changed files with 284 additions and 87 deletions
|
@ -2,13 +2,13 @@
|
|||
, checkers, classy-prelude, comonad, comonad-extras, constraints
|
||||
, containers, criterion, data-default, deepseq, directory, fgl
|
||||
, fgl-arbitrary, file-embed, filepath, generic-arbitrary
|
||||
, generic-lens, generic-monoid, 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, splitmix
|
||||
, 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
|
||||
|
@ -23,54 +23,55 @@ 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 generic-monoid groups
|
||||
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
|
||||
linear megaparsec mmorph monad-control MonadRandom mtl
|
||||
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
|
||||
splitmix stache streams text text-zipper tomland transformers
|
||||
vector vty witherable yaml zlib
|
||||
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 generic-monoid groups
|
||||
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
|
||||
linear megaparsec mmorph monad-control MonadRandom mtl
|
||||
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
|
||||
splitmix stache streams text text-zipper tomland transformers
|
||||
vector vty witherable yaml zlib
|
||||
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 generic-monoid groups
|
||||
hgeometry hgeometry-combinatorial JuicyPixels lens lens-properties
|
||||
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
|
||||
splitmix stache streams tasty tasty-hunit tasty-quickcheck text
|
||||
text-zipper tomland transformers vector vty witherable yaml zlib
|
||||
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 generic-monoid groups
|
||||
hgeometry hgeometry-combinatorial JuicyPixels lens lifted-async
|
||||
linear megaparsec mmorph monad-control MonadRandom mtl
|
||||
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
|
||||
splitmix stache streams text text-zipper tomland transformers
|
||||
vector vty witherable yaml zlib
|
||||
semigroups splitmix stache streams text text-zipper tomland
|
||||
transformers vector vty witherable yaml zlib
|
||||
];
|
||||
prePatch = "hpack";
|
||||
homepage = "https://github.com/glittershark/xanthous#readme";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue