- Attached LinesOfSight to NPCs.
- Added sound effects & looping music.
git lfsset up. Switched to git submodules (from copybara) for splitting public/private repositories.
- Started parsing sprite & animation metadata from Aseprite's JSON format.
- Started using a real level editor (Ogma) & wrote code to parse Ogma's JSON.
- Made an FSM class and started using it for NPC behavior.
- Built a properly-packaged demo for inclusion on Microsoft Store for PC & Xbox One.
- Switched to C# 8 and MonoGame 184.108.40.2064.
- Made a style guide.
- Added a pause screen & real font for it.
- Added player health & on-screen heart display.
- Added first NPC.
- Used new art for scrolling parallax backgrounds.
- Added support for decorative objects in stage backgrounds.
- Started work on first real stage.
- Tweaked Player physics.
- Fixed memory leaks of graphical resources.
- Lots of messing around with Google, which poorly indexed my site due to new IP address.
- Set up Tailscale for networking & changed Digital Ocean configs appropriately.
- Bixdev: got QuickBooks set up.
- Refactored line-of-sight code to be in a separate file & to use
- Added ability to restart a level.
- Cleanups: Player.GetFacing/GetPose, unit tests for Geometry.Rotate(Vector2), draw debug geometry with gfx primitives.
- Added bcs.sh (Bad Code Search).
- Set up Gitea to serve https://git.semicolin.games.
- Ported issues / wiki / etc from GitHub & updated README.md to reflect the new canonical location.
- Formed SemiColin Games LLC!
- Set up DigitalOcean account, configured cloud machines, & made a placeholder website at https://semicolin.games.
- Explored some devblog options... didn't really settle on a choice yet though.
- Added histogram-based performance counters.
- Partial work on vision / line-of-sight algorithm.
- Wrote some new collision-detection code and started using it (along with Bresenham's algorithm) in Player.Update().
- Started to implement a field-of-view algorithm.
- Updated player sprite to a "ninja" asset. Added tool for importing more sprites from the same pack.
- Debug now keeps debug rects & lines when the game is paused.
- Bound player & camera positions by edges of the world.
- Tried (but failed) to upgrade to built-from-head MonoGame.
- Implemented Bresenham's line-rasterization algorithm, along with unit tests for it.
- Added ability to draw said lines to screen via Debug.AddLine().
- Converted Debug.Toast -> Debug.AddToast() (allowing for multiple toasts per frame).
- Implemented "pause" functionality.
- Added a Clock class and separated model time from wall-clock time in World.Update() and friends.
- Converted World from a dense Tile representation of static obstacles to a sparser List.
- Installed MonoGame SDK 220.127.116.110 from their development branch. Upgraded OpenGL project to .NET framework 4.7.2.
- Added unit tests to History (#17).
- Added Input struct to abstract away gamepad & keyboard inputs (#5) and make mutually-incompatible directional inputs cancel each other out (#7).
- World can now load non-rectangular input strings without erroring out.
- Refactored Player.HandleInput to be a bit cleaner.
2020-01-06: Infrastructure Week
- Thought of a potential company name. Bought the domain & did a first pass of logo design.
- Investigated GitHub / GitLab / Phabricator; chose to stick with GitHub (free) for now.
- Set up G Suite & some skeletal Google Cloud infrastructure (including placeholder webpage).
- Renamed project codename from "Jumpy" to "sneak".
- Set up copybara pipeline to make a public mirror of parts of the repo.
- Converted TODOs in the codebase into proper GitHub issues.