Mode for lonely people to record and replay their actions. Feature list:
- importing and exporting
- tick perfect recordings*
- multiple bots
- recording editing
- 1,000,000 tick max length recordings (~ 4 hrs 30 min)**
- timelines and data viewers
- adjustable replay and record settings
- free pizza
* **check the notes section
0.a) Requirements for saves
If you don't want to/can't save but want to have a replay to film or something, after loading the code, enable the mode in custom game settings that has the map you want to record on. Then start the gamemode. After recording, turn off
show data before replaying to hide the bot facing and throttle indicators. Then use your common sense; if you do not play the recording in the game, you will not get it in the replay, if you are in the middle of the recording, you will be photobombing the shot, if you do not complete the gamemode (ex. if you just leave midway) then you will not get a replay, etc.
If you want to save, make sure you are on PC, you have Python 3 and that inspector logs to file is on in your Overwatch settings. Make sure you can find the folder where workshop logs to files (somewhere around
C:/users/<user>/documents/overwatch/Workshop/ by default) and that inspector logs are being logged. You can do this by loading into the mode, then checking if there is a file there that was created around the same time you started the gamemode that says something like
\[00:00:00\] m MAP_NAME. Also make sure the lobby is invite only. People not in the first slot may override bots and delete their data.
0.b) General tips
- If you need to hold to activate a menu item, it probably overwrites or deletes some data. The hold is there so you don't make a mistake.
- Hold up/down/left/right to change values/menu items faster
- Check the tooltip on the left in orange if you want info on the current item
- There is input delay to recordings, make sure to take that into account
- Set the record and replay speeds as you wish; you don't have to always record at 10% speed
- You can perform undos by removing entries in the log savefile, make sure you know what you are doing if you want to do this.
- Make sure to watch replays after recording, they may not match up exactly (not my fault, probably)
- Make sure every bot uses deterministic abilities in records, or nondeterministic abilities that dont matter (see notes for more info)
- Have fun. Playing Overwatch. Somehow. or not
1. Add Bots
Open the menu by holding interact (usually
f on PC). Add some bots with the menu with the
add bot menu options. Swap through the bots by moving to the
bot menu value and going left or right. Change the selected bot's hero with
change bot hero.
tp bot here option to place a bot where you are standing. Use
record from current position to start a fresh recording. This option will overwrite the bot's previous recording, so beware. Perform some actions. Hold
reload to stop the recording. If you don't want slomo, change the record speed at the bottom of the menu. Use the replay option to replay the recording.
Watch the recording to the frame you want to edit from. You can see the frame in the texts on the right side (make sure
show data is on). If you want slomo in replay, change the replay speed at the bottom of the menu. You can get the replay to slomo after some number of frames by changing the selected frame and selecting
replay at frame. You can use the timeline and show button data to get a better idea of what is happening when.
Move the selected frame to that frame by going down to it in the menu and pressing/holding left or right to go to the frame you want to edit from. Activate the
record from frame option. The recording will then replay to that given frame and slow it down just before. You can hold any button from before the point where the recording starts to get the bot to immediately press the button or to continue holding it.
4. Save/Load/Import/Export (optional)
Make sure you have Python 3 installed. If you don't have it, go look up how to get it. Go to the listed github page. Clone the repo (download it). Run chunkTASData.py with Python 3. Paste in the latest log file in your logs folder (rummage around, default is like
C:/users/user/Overwatch/Workshop/). Copy the output. Probably want to use piping to make it easier (look it up idk).
To load, load this mode to a lobby. Paste the output at the end. Change the map to the map the recording was made on (if you don't know, just start the match and it'll tell you if tis wrong). Start the match. Your recording should be there.
Remember to enable inspector logs to file in your settings for savefile before starting the gamemode. Use that github, convert and paste back.
just nerd shit here, go away if you dont care
notes on features
*for some reason beyond me, records will sometimes just not be the same as the replay by miniscule amounts which can throw the whole replay off from the recording. replays are consistent from replay to replay though
**super long (idk how long tbh) recordings with alot of activity can cause heavy load, which may cause the lobby to crash. loading the save back may not be possible at this point, depends on how much you were moving around and shaking your camera during recordings. watch the server load in the hud and watch your network connection when running actions to see if gamemode is about to explode. If server load is just sitting at 255 and you are losing a ton of packets you might want to consider wrapping up.
notes on determinism
An ability is deterministic if it does the same thing every time you use it. For example, Doomfist's slam (however bug ridden it may be) will do the same thing over and over again if the same actions are repeated exactly. Some abilities are not deterministic, such as Tracer pistols, shotguns, wrecking ball mines. Here are some possible sources of indeterminism in Overwatch. I don't know if all of them are randomized or if this is a comprehensive list. I won't keep this up to date.
- mei wall
- ashe hipfire
- bastion assault form?
- cass fan the hammer
- orisa gun?
- pharah barrage (i think this might be set actually)?
- reaper ult? (who knows)
- sojourn m1
- sombra m1
- tracer m1
- widow m1
- ball m1
- ball mines
- map objects, ex railings, boxes, volskaya platforms, busan walls
- mei m1 ?? (do the particles go in spread? idk)
- zarya grav forces
- wifeleaver thorn volley (wep2/m2?)
You may not think Mei wall is randomized, but it is. Mei wall consists of several pillars. Every pillar is rotated a random amount when wall is used (presumably to not make the wall look the same each time). This would be ok if their colliders were perfect cyllinders, but they are actually prisms, meaning they will have ever so slightly random variations, meaning the wall has an ever so slightly different shape every time mei uses it, enough to slightly throw off any other recording if the bot interacts with it. This really does matter (from my painful exerience) if your recording goes on after someone touched the wall.
notes on disparities between bots and players
Bots are controlled with Workshop. This means they can do impossible things sometimes, like flipping 180 while in the wind-up for Reinhardt charges or doing Doomfist turn punches at angles past 90 degrees.
However, bots are controlled with Workshop, meaning they are controlled on a server tick by server tick basis. This means they cannot do some things players can do, such as subtick movement. This includes Genji triple jumps (before they were patched) and (i think??) ghost dashes. Since players have sub-server tick movement, bots record in this gamemode by shadowing your inputs tick by tick with you attached to them like a full scale puppeteer.
This is why there is such a long input lag while recording; that is due to the time it takes for your client to send inputs to the server for workshop to pick up. This delay should be like half your ping i think. If the mode didn't do this, recordings would be completely different from replays.
notes on ow workshop being a %@$!#%@
For some reason, spawning a bot in their team's spawn room will make them just not pick a hero. You can't teleport them in this state nor change their hero. You have to force their hero to get them to exist, credit to PharingWell for letting me know.
For some reason, D.Va loses gravity and goes invisible when she uses her ult after I swap her hero back and forth in some time interval or something I can't be bothered to figure out. So all bots swap their hero to another one and back at the beginning of the replay to reset all the deployables, structures, statuses, ability charges, whatever, everything, except D.Va because I can't be bothered to be Blizzard's free QA slave .