Imagine being a server player or auto cheat detector with the ability to report a cheater simply by reporting an IGN, server, and a time. The staff can then just visit a replay, enter in the time code, and see everything from an untampered, unbiased view. There would be no way for anyone to get away with pretty much anything. ReplayMod would be the ultimate anti-cheat.
ReplayMod as is would obviously is not suitable for this, what I'm proposing is a server-side plugin that uses whatever magic ReplayMod does to create a replayable file of everything that happens in each server. This is only accessible to staff, so there won't be any issues with players being able to get where they shouldn't in /spec.
The limitations I see are:
Replay Files are pretty small, but I'd still assume that servers would only really be able to keep a full backup of maybe, a week.
Based on what I've seen from ReplayMod, to view any point in MC, the mod must playback everything from start till that point, meaning replay files will need to be broken up by, say, hour. The question is, would a server restart need to take place for that? For minigames, that's fine, but games like factions would only be able to handle at most a couple scheduled restarts.
Current ReplayMod records what a player sees, I'm unsure if it would work the same way when recording EVERYTHING that is going on in a server. If this just blows resource consumption up way too much, perhaps have the option to only record player movement data (Client side recorder?).
I know there are a lot of limitations that MC just won't let you get around, so the question is, do these limitations make my suggestion not feasable?
The ability to still make cinematics from these recordings would be a great boost to server media staff toolbox too, so no need to ditch that if possible.
As you noted, the RM records what a single player sees and that is no coincident. It's actually rather integral as to how the mod works and cannot really be changed.
The RM works (roughly anyway) by recording every packet the server sends to your client and during replay it pretends to be a server and just replay those packets.
The main reason the RM works this way is because it generalizes pretty damn well as opposed to the other option which would be to manually record every action in the game. That is every entity move, block change, entity action, scoreboard change, time change, etc., etc.. There are lots of things which one would have to write specifc code for and once you add mods, you can basically forget about doing it that way. The way it works right now, we had to special-case one or two forge things and thousands of mods just workedâ„¢.
So, to record everything the way the RM does it, requires recording every player's connection. Now to address your individual questions:
"Replay Files are pretty small [...]"
Resource consumption without doing any additional optimizations will be huge since you're duplicating lots of data when separately recording every player's connection.
"Based on what I've seen from ReplayMod [...]"
You are correct in your observation. However, the server would not have to restart every hour. If you want replays no longer than an hour, you'll have to disconnect every player at most an hour after they connected though. Not too great.
"Current ReplayMod records what a player sees [...]"
As explained above, the way the RM works this cannot happen.
"I know there are a lot of limitations [...]"
Yes, kind of, unfortunately. At least it won't be as nice as one would hope (i.e. just recording the usual, limited recordings on the server side) or require tons of work (i.e. going the manually recording everything route).
Having said that, iirc there are/were two larger German servers which did go there.
One allowed you to download replays of your games. IIRC the game map was small enough as to where it was sufficient to record it from the perspective of a fake player placed centrally on the map.
The other had a system completely independent from the RM, no idea how it worked on their backend.
I don't remember either of their names but given they were big, for-profit servers, I doubt they'd share.
There's also this which does the one-replay-per-player-recorded-on-the-server thing but never actually ended up being usable.
Huh, so what it looks like is that ReplayMod works is really the only way to do what ReplayMod does? There isn't really any getting around those inconveniences?
Just gonna throw out another suggestion: What if it was part of a client-side anticheat, where all players basically run RM the same way it already works, but the replays are either streamed to a central cloud, or simply stored locally and uploaded when server staff request it. Optionally, the file format would be only viewable to MC accounts registered as staff to ___ server, this could be where you charge, and would fix the issue of replays not being allowed in games where it's "xray" is an issue. Users deleting their replays before a set time period, say, a week, can be considered a bannable offense. Replays would be automatically deleted upon the expiration date of, say a week, unless the player is flagged.
On the efficiency side of things, you could make these replays only store certain data pertaining to the one player, to avoid redundancy, but yea that would make some things more complicated.
If the case for this just is that this would be hard, provided that it is close enough to the described function I described, remember that you could sell this for lots of money. If it meant eliminating cheaters, you crush the competition in this business . I don't know if that would make the effort required worth it.
Side note, if I understand ReplayMod, in theory, couldn't you allow separate replay files whenever are reloading a world from scratch? This would be whenever you move to a new server (ie between lobbies), or when you enter a new dimension. I noticed that a replay with lots of these reloads will take a lot longer to edit, because it has to go through each reload that occurs before the cursor. This could be an optional setting, but it would allow much faster access times, as working with hour-long replays is a PAIN when I have to wait 30 seconds every time I move the cursor back.