Calculator for helping analyze shooting and fighting attacks in Kill Team (2024 edition and formerly 2021 edition). Heavily inspired by kt2.doit-cms.ru (now offline).
Live at jmegner.github.io/KT21Calculator.
For reference, here's ktcalc's announcement reddit thread and follow-up thread for fight support. Check out Kill Team Resources repo for other calculators/simulators and more.
See issues, but to comment on the big ones ...
- I would love to do a mass analysis tab, but it will take a lot of work.
- FNP for melee is painful and I don't have any short term or medium term plans to do it.
- Option for user to select a relevant operative profile (ex: Necron Immortal with Gauss Blaster) instead of individually selecting parameters. Low priority because it is high effort and moderate benefit.
Basically, this is a React SPA web app mostly written in TypeScript. There is some Rust compiled down to wasm for some stuff where I needed more performance. I use GitHub Actions to test, build, and deploy the web app upon every git-push to main branch. I do my development in vscode.
List of notable technologies/libs/whatever used...
- TypeScript as the primary programming language.
- NodeJS and npm for toolchain and package management.
- React for UI framework.
- React-Bootstrap for UI components.
- Create-React-App (but heavily considering using Vite or Remix in future).
- Jest for general JS/TS testing.
- Testing Library for react-oriented testing.
- GitHub Actions for CI/CD.
- Visual Studio Code (vscode) for the IDE.
- For the Deadzone calculator, which is Monte Carlo, I got 10x speed from using wasm.
- Rust.
- wasm-pack to build Rust into wasm.
- wasm-bindgen
Dev setup...
- You'll need to install NodeJS+npm for building and running.
- Install rust and wasm-pack to build rust into wasm.
- Might have to do
rustup target add wasm32-unknown-unknown
as well.
- Might have to do
- For debugging and otherwise having a nice experience, this project is set up for vscode as the IDE.
- Initially, you'll have to do a
npm ci
to install npm packages with exact versions of previous development. - Do a
npm run build
to build the wasm and React stuff. - Do a
npm start
to build the TypeScript stuff and run. - For debugging non-tests with vscode, be sure to do
npm start
before launching the debugger. For debugging tests, you can just launch one of vscode's test-oriented debug profiles. - To run tests, do
npm test
for normal watch-mode testing that sticks around. Donpm run testq
that does a single run of tests (like doingtest
and then hittingq
to quit).
My thanks to Daniel Espinoza-Hernandez for UI improvements, like Accordions and SwipableViews.
My thanks to Dave/veddermatic for the nav bar and icons at top.
My thanks to Kevin/Sigma for some initial KT2024 support.
My thanks to Redux maintainer Mark Erikson for his advice and help. I decided not to use Redux just yet, but look forward to using it.