ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
14.7k stars 2.17k forks source link

Ability to save replays as video #2967

Closed kerrytazi closed 3 years ago

kerrytazi commented 6 years ago

Sometimes it is not suitable or even possible to share replays of game with "osu replay files". So it may be cool feature to save reaplays as video like avi/mp4 formats with choosable framerate and resolution. This way much easier for end-user to just click "save as video" instead of installing screencapture programs. And sometimes on low-end PC it is not even possible to record replay.

peppy commented 6 years ago

On a low end PC where it is not possible to save as video, it will be just as impossible for osu! to do so. There’s no magic zero-overhead method to save video. It would need a full background render workflow which would likely take minutes to hours.

I disagree with implementing this at an osu! level when operating systems have this functionality built in already at negligible performance overheads (both windows and macOS).

iptq commented 6 years ago

i've been working on a program to do this for some time, although it's still undergoing massive rewrite (read: progress has stopped) to integrate with libosu. The idea would to have it be calculating the offset in non-realtime so you can still achieve nice fps with a low-end computer.

(example of emitted video: https://streamable.com/2g9o2)

peppy commented 6 years ago

The way lazer is written, it would not be hard to do something like this. I just think it's an unnecessary feature for a game to implement itself when external solutions already exist.

Rekkonnect commented 6 years ago

It's never bad to have an extra feature despite the alternative options. It's just not of high priority, I would prefer to see this being implemented once the rest is done.

peppy commented 6 years ago

Disagree. Feature creep is definitely a real thing.

iptq commented 6 years ago

third-party plugin api when??

ayrod commented 5 years ago

This feature is the #1 thing you should be working on. With replays, you can only share with people who already play the game. With "export as some_video_format", you can have your players post their clips on their Discord. Then sit back and watch your playerbase grow.

Using screen recording software is not a solution. It makes videos of terrible quality because it has to work in real time. And even if it worked fine, it still wouldn't be a real solution. When you say "use a third party", you lose 95% of people. The feature has to be directly available in osu!.

peppy commented 5 years ago

We have plenty of priorities. Finishing the game and restoring all existing features is higher priority than a new (not-so-easy-to-implement) feature for us.

We'll keep this on the back-burner though. You're welcome to start on this one if you feel skilled enough!

Gabixel commented 5 years ago

Of course, this is a good idea and can help saving time, but remember what peppy said...

On a low-end PC where it is not possible to save as video, it will be just as impossible for osu! to do so.

osu! isn't the only game that doesn't export an entire replay as a video. For example, League of Legends saves replays with its own .rofl file format, but nobody is complaining about this replay feature. One difference is that League also has a "highlights" feature that saves the part of the replay that you're watching at that moment into a .webm format (and you can watch it on normal video-player apps, but I don't know exactly its process between recording and converting it to video).

So maybe a good solution could be something like a "Record this play" toggle option before playing a song (but this is not for low-end PCs I guess), or even a similar "highlights" feature when watching a replay, and then save the recorded part into a .webm video (for example), instead of converting an entire .osr file in video.

Of course, this is just an idea, what I tried to say was that if this is not possible, it doesn't mean that osu! is incomplete or osu! is losing people: new features are always welcome, but only if they are good, funny/enjoyable, useful, easy-to-understand or easy-to-use. [sorry if there's bad english]

UboidStrata commented 3 years ago

Well, I am not that knowledgeable about video rendering but isn't the necessary process just creating output frames and combining them together at the desired fps with the desired resolution? As in something say... an FFmpeg would do or something, since when I work on animations and render scenes using manim—math animation library from the 3b1b GitHub repository—I can wait all I want, but in the end, I get that nice 60fps 1080p or 1440p.

So I don't know if this helps or not; nevertheless, the way I see it is to output rendered frame (mix of background video/picture and circle patterns at that instant) and store to collect and further combine with other rendered frames. Again if this works similar to how my rendering goes, then all what low-end PC users have to do is wait more for their rendered replays.

Then again no pressure on this feature since some of us are capable of using external software or "third parties" to record these replays yet at the cost of reduced quality. Personally, if I knew more about how video rendering works and how to make such apps and whatnot I would've started assisting, but I unfortunately don't so yea.

bdach commented 3 years ago

Given that we've closed many issues on the basis that osu! is not a music player, I'd also argue that osu! is not a video recorder, either. External tools are the way to go.

UboidStrata commented 3 years ago

Actually, yes nevermind, that was slightly off the general purpose of the game, so implementing it to be part of osu! is a bit of an overkill.

Welp, recording with OBS is not that bad after all. I'll look into it though since this piqued my interest in replay-to-video rendering.

Nonetheless, thanks for the quick reply.