c19e3dae5f
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
21 lines
467 B
Nix
21 lines
467 B
Nix
let
|
|
depot = import ../../../. {};
|
|
inherit (depot) third_party;
|
|
pkgs = third_party.nixpkgs;
|
|
in
|
|
|
|
(pkgs.haskellPackages.extend (pkgs.haskell.lib.packageSourceOverrides {
|
|
xanthous = third_party.gitignoreSource ./.;
|
|
})).shellFor {
|
|
packages = p: [p.xanthous];
|
|
withHoogle = true;
|
|
doBenchmark = true;
|
|
buildInputs = with pkgs.haskellPackages; [
|
|
cabal-install
|
|
ghc-prof-flamegraph
|
|
hp2pretty
|
|
hlint
|
|
haskell-language-server
|
|
cabal2nix
|
|
];
|
|
}
|