"There's a big difference between mostly dead and all dead."
It has been way too long since the last update, and I apologize for that! My hope is this is the start of regular SpyParty updates again. This update is actually probably going to be a little disappointing content-wise, because while there are a bunch of smaller player-facing things in here, most of the real work was backend work in support of the upcoming No Wait Matchmaking, which should be coming relatively soon after this (insert joke about hopefully not 4 more years here).
To support the style and quality of matchmaking I want in SpyParty, I needed to really make the replay/spectation sniper feature into a first class mode, and that means allowing players to spectate spectation snipers. What does that even mean? Well, as you may know, there are detailed replays saved for all games, both locally and to the server, so you can review your gameplay (and your opponent's), spectate live matches in the lobby, the community can do casts of competitive matches on twitch, and all that good stuff. Then, a cool feature on top of that replay and spectation sniping. So you can watch a replay from all the different camera angles you'd expect, the Spy's camera, the Sniper's, and various other camera modes, but you can also play Sniper against the original replay Spy. They obviously don't know you're playing them because they're just a recording, so they can't respond to your laser scope positioning, but it works incredibly well, way better than I thought it would when I came up with the idea. Then on top of that you can snipe live games, and there is a Daily Challenge that queries the more than FIVE MILLION replays on the server (so far) and feeds 8 of them to you and everybody else every day. Building on top of that the No Wait Matchmaking is going to be No Wait because if it can't find you a live opponent within an amount of time you set, which can be zero seconds, it will feed you a replay at your skill level to snipe, so you can basically be instantly playing the game in matchmaking. So that code builds on all the other stuff, but then on top of that I want people to be able to spectate players while they're in matchmaking, which is different than spectating a live match between two players that lasts for a few games. With matchmaking spectation, you spectate a given player and follow them through all the games they play in the matchmaking queue. But some of those games might be replay sniper games, so I wanted players to see the player they were spectating doing the sniping of the replay. And then of course you can snipe too, and then take a shot and then switch to spectation and see how the original player is doing. Or the real original Sniper in the replay. And while I was there, you can just see all the other players sniping too. And then you can turn on all the Snipers at the same time and see all the lasers. And of course you can load a replay and all its sniper files from your local saves, or a zip file somebody sends you. Which means the game saves .sniper files in addition to .replay files now. And and and. Anyway, you get the idea, that was a lot of work, but it's mostly working now and should be super sweet for No Wait Matchmaking.
Right now, this code is all working for matches and curated replay sets and dailies and stuff, and I have enabled a button to test just this replay sniper matchmaking feed in the settings so it gets some testing coverage while I work on the rest of the No Wait Matchmaking code. So if you are wondering how somebody gets the lobby state Testing, check your Matchmaking settings section to enable the button.

The big stuff, details are below:
- matchmaking backend work and testing for sniper replays
- can spectate other spectation snipers now in addition to live sniper
- matchmaking results screen with win/loss portraits (these need to link to replays)
- save .sniper files locally now for replay sniping
- for replay/spectation sniping, now use an asterisk* for the not-live spy everywhere
- can load multiple sniper files at the same time, ctrl-tab between them, or show all the lasers simultaneously
- multi-shot .sniper files do cool rewind stuff on playthrough and seeks, and display each result (asterisk* means just recent not actual result)
- full support for .sniper files in replays directory browser, highlights related .sniper and .replay files
- ctrl-shift-click to toggle mark on all related .sniper and .replay files
- new Major.minor.revno.changelist versioning
- fast and small incremental patch updates on website version, steam still needs to exit, need to figure out if can fix this
- server quickplays for ease of tournament management
Enjoy, and let me know if there are bugs!
Chris
Details and misc fixes for v0.2.8264.5467, v0.2.8261.5467:
This was 1206 lines of checkin comments and almost 1000 revisions, this is a very shortened list...
- more accurate replay end times
- more robust playing/rewind play/pause behavior and lots of bugs fixed
- preserve replays menu view across dialogs and replay loads
- Y on controller swaps replay sniper (assuming Y camera invert is off in settings)
- draw timeslider thumb on top of the events
- work on bug database, not public yet
- make ctrl-rshift-alt-U actually toggle venue geometry
- add 007 emote to perfect scores at your daily level and higher
- add --nomemhook for memory allocation failure crash debugging
- don't allow randomizer on venue select to pick Custom quickplays to avoid weird surprises
- version on splash screen and more hz
- don't put 1 on first matchmaking room
- remove all the dumb button lines from the lobby and just use the subtitle
- fix bug where was reusing instanceid if multiple snipers for live game...ugh
- was sending wayyyy too many sniper laser packets
- update streams notifier to helix twitch api, support babble, etc, various tools
- draw all replay sniper laser names on a setting
- only allow one replay sniper game on each spectation game per username, kick to spectating
- fix splash screen to not stretch on steamdeck
- fix if mouse focus is on main menu and hit tab with scrollbox for motd, asserts and focus gets lost
- twitch->youtube stuff
- handle dog with multi sniper mode
- so dumb but awesome
- portability work that hasn't been finished yet for win64, macos, and more
- tune alpha behind dossier on unlocks
- bit better buffering behavior
- sort replays oldest->newest since view last replay is there and this is better for playing a set as a caster
- daily challenge MegaBonus, 8/8 all levels and your Bonus, get a MegaBonus additional 8
- update discord streams bot to work around discord markup parsing bug
- tls 1.2 stuff
- turn off mission win pending when purloin expires in spectation and replays
- new telemetry system and backend
- make uniform behavior on spectation auto next on end
- lol 13 yr old bug
- fix crash bug from wide aspect ratios in a totally stupid way
- better fix for the missions setup panel aspect ratio thing, not great but way better, uses w and h
- starting to log on update in helper
- make pending events medium priority instead of minor in event list
- write spyparty.prop property fail on readonly
- don't pop unlocks on replay game accept screen ever
- beginner game mode in dossier
- missed a couple dossier game mode indicies
- display and sort locked levels in recommended instead of hiding them, for teasers
- don't randomize to locked venues
- fix players vs headline everywhere (?)
- put replay camera stuff on replay ui toggle
- fix bug with hurry up being depressed masking mouse with activeid
- twitch youtube matching and export nightmare because of twitch vod deletion
- can't /makeroom if silenced
- add /announce mod command for modal lobby message
- portability work
- /random chat command, lobby, local, match, etc.
- ctrl-up/dn for chat command history, wip
- switch mm spectation to correct side camera default always for spectatee
- make casting mode result show up when the real result is known
- fix shift draw absolute time to only care if you're typing not if the chat is up
- ctrl-F5 for screenshot
- make lobby message have an optional timeout
- if replay fails to load, stay on results screen
- enum dsound devices to log
- fixing manifest to give real windows version number in log
- ignore keys in replays menu if chat is up
- remove .dmp suffix from local 7z crashdump archive
- set the audio current position in the play before playing to avoid an echo that only ethan could hear
- stop screams when watch replay hit in live game results
- work around weird steph crash with wglew passing test but no funcptr
Before:

After:

Changed files in this update