forum

RTPP Displayer - display real-time pp for ALL MODES! (2022/4/11)

posted
Total Posts
1,590
Topic Starter
DarkProjector
RealtimePPDisplayer is a Sync plugin which able to calculate and show pp while you are playing osu!std/taiko/ctb/mania. It depends on another plugin named Osu!RTDP and you can show them where you want.

Projects Comment (Chinese)
大家好我是DarkProjector,Sync以及相关插件项目主要开发者之一。现在趁着摸鱼时就随手写一下对于本项目的感言和吐槽吧。因为本人不怎么会英语,所以我将全程使用中文,用着翻译机的外国友人们抱歉咯,希望有个好基友能翻译一下呗~。

可能有一些人不知道的是,Sync项目其实最初的功能,仅仅是为了转发B站的弹幕到osu的irc频道上。那会我刚搞起直播,主要想做的是osu的游戏直播。因此我就想找一些osu相关的直播工具,刚好我就在百度搜索到的贴吧上找到这个工具

此时这个工具还不叫Sync,而是osu!IRC。我一开始用这工具还行,但后面有新的功能需求,那会我也刚学会一点编程,用的是Java,于是我找到原作者,也就是现在项目的作者:地雷( Remilia ),跟他谈了一下,他也觉得osu!IRC功能还能改进,于是就计划和我一起开搞,推倒osu!IRC,重构一个新的更好的软件出来。这就是osuSync项目的前身,这个项目就是开源的,最初没在github公开开源,而是gitee


等到osu!IRC的功能全都移植过去后我们又钦定了osuSync需要提供插件功能的支持。

After Days.......

等osuSync的插件功能完全后,于是我们便开始开发各种插件...比如我实现了从osu的频道发消息然后通过osuSync的插件传回到直播间弹幕上;实现了发送弹幕的黑白名单(虽然从没实际用过)插件;实现弹幕观众的谱面推荐插件.... 而地雷那边就一直优化本体程序和实现np命令的插件。那会我就是一边写插件代码,一边测试插件和osuSync应用,去直播osu。

等到过一阵子我们手头上的插件项目都弄得差不多了,然后我看到隔壁其实也有一个用于装饰osu界面的项目:StreamCompanion
很惭愧,那会我完全不会用这个应用,因此我就有了一种需要做一个类似StreamCompanion功能需求的osuSync插件,这就是我个人主要开发的Sync插件项目,NowPlayingOsuLiveStatusPanel的由来。

当然那会参考了StreamCompanion的做法,借助osu的MSN接口实现外部程序(指osuSync和它的插件们)对osu当前游玩谱面信息的获取和更新。
当然这个接口有一个很致命的问题:它只提供了"Artist","Title"和"DiffName"这三个参数,而没有提供能让我们更加精确定位谱面文件位置的其他参数(比如"FilePath","BeatmapId","BeatmapSetid"),因此经常出现找错谱面文件,然后插件显示出错误的谱面参数等问题。
为了解决这个办法,我们就决定:自力更生,读取osu游戏内存拿到我们需要的数据

当然就我这种编程/C#菜逼,并没有这个能力去对osu开洞读数据。因此我找到了我的好基友,狗毛(KedamaOvO),刚好他也在玩osu,也会编程。于是我就哄骗他,加入了我们伟大的项目组,the great of Sync Software Developer Team! 然后他就一边学如何使用CE一边搞MemoryReader插件。

(我还清楚记得狗毛这个b没开搞前说自己不会草内存和用CE,结果没到一个月就把osu捅个穿然后做好MemoryReader插件原型了)

有了MemoryReader插件,那么我的OsuLiveStatusPanel插件就可以更加精确获取正确的谱面和相关数据了。然后在实现OsuLiveStatusPanel的谱面pp计算后一段时间,我突然有个很大的脑洞: 能不能做一个显示实时pp在直播界面上?

当然这个脑洞虽然听起来很离谱,但理论上是可行的: 我们有MemoryReader插件可以获取osu!的实时数据,计算pp也可以通过oppai这个项目来实现,输出也可以写一个插件去一直写入文本到,然后OBS读取文本文件就行了。当然仔细想想的话还是有一定的坑,比如:
  1. MemoryReader需要获取游戏时间,而且osu!还有jit过程,找位置难度相对较难(对于刚学的狗毛来说)
  2. oppai不支持一部分谱面文件的计算
  3. 写入文件到被obs读取并更新的所需要的时间太长了
因此这个项目就基本上就是进展缓慢,但兜兜转转,在一两个月后,我们还是成功的实现了实时pp的显示功能!!!!!

此时我们也正在计划将osuSync项目和插件迁移到github,并成立osuSync组织。我们花了一个月将那些代码和MemoryReader插件进行了一波优化和重构,以及测试。

到了这时,我们经过讨论,决定将此插件公开,已经对osuSync的正式公布。但这是有一个前置条件:peppy的同意,因为MemoryReader是读osu的内存并使用(即使我们没有做任何的写内存,执行代码等操作),为了避免不必要的纠纷,我们决定先要到peppy的公开同意(为啥是"公开同意"呢,如果ppy不肯,那我们也就两三个人自己继续闭源然后自己用来做直播),于是我写了一份邮件给ppy询问相关事情:

发了邮件之后,我们便愉快的参加了广州的漫展YACA Event 2017, 这某种情况算上是"1st osuSync Senior Developer Commitee Meeting"(毕竟那会我,狗毛,地雷,和将来也加入开发团队的的yf大师即yf_bmp也一起面积了)

过完YACA漫展之后,我们几个人就各回各家,我依旧是白天上课,晚上直播osu然后写osuSync插件,跟狗毛他们吹逼互发色图(到现在还在斗色图),狗毛这会也是将MemoryReader重构,然后改个马甲,成OsuRTDataProvider

直到年底,ppy还是没有任何回复,于是我就抱着最后一次希望,再次写了一封信给ppy:


到了2018一月份,我那会有编译原理的期末考试。于是计划花一周时间全力预习(你没看错)那380+多页的编译远离课本。

毕竟那门课据说有60%挂科率,着实要我狗命。

第一天中午,我刚吃完反,正准备开始预习编译原理,电脑就提醒我收到了来自peppy的邮件:


当时就很兴奋,预习课本?狗都不看!我就连忙通知了狗毛和地雷,然后就开始着手于编写论坛帖子,我写osu论坛帖子(就是本贴),然后得自己编译osuSync和其他插件的Release版本 , 狗毛就负责编译他的ortdp插件并混淆就交给我。最后我写好帖子基本内容,以及总体测试了软件和插件是否有没有问题。

(最初的版本)

毫不意外,这贴一发,基本引起许多人的热度,同时也多亏野生的小白鼠玩家们,我们也收到了更多的bug,于是我那段时间,基本就是一边预习编译原理课本,一边debug以及回复论坛的帖子。(所幸最后我没挂科)

在此期间有很多用户反应他们全屏osu游戏之后,显示实时pp的窗口就没法更新画面到obs,这是win10的渲染机制导致的。为此我们也额外提供了许多办法绕过此问题,比如使用mmf文件,然后给obs写个插件支持读取mmf文件内容然后更新,写个http api然后写个网页去读取这个api拿到pp数据然后网页渲染,最后obs加载这个网页去显示(因此还产生了另一个osuSync插件OsuDataDistributeRestful),其中最值得说的是地雷提出的脑洞:将pp数据渲染进游戏里面,再由obs捕获osu游戏就行。这就是插件IngameOverlay的由来。

(血条下面的pp信息就是通过IngameOverlay插件实现的)

(最初的实现成品)

(后面通过OsuLiveStatusPanel插件以及mmf文件支持,实现了选取界面的pp显示,再也不用去打扰Tillerino了~)

过了一两个月帖子稳定下来了,我便着手开发新的插件,比如可以实时显示歌词的插件LyricDisplayerPlugin,以及可以像mcOsu那样动态修改谱面各项难度参数的插件OsuDifficultParamModifyPlugin

另外其他人也公开了能读取osu内存的库项目,思考再三,我们便决定也跟进时代,开源了ortdp项目,后面在本帖子发布的ortdp插件也不再是混淆dll了

然后我还向ppy申请了bot账号,用于转发公用的bot消息转发的机器人,于是用户可以通过bot私聊的irc频道能直接接受自己sync应用的消息以及发送消息。

(ppy对于某些奇怪的东西有以外的敏锐感?当然最后改名成了CuteSync)

(bot中转..)

(它应该是最早一批bot账号吧^ ^)

于是我就愉快的直播下去...

直到某一天,我肩膀酸痛了,我怕是RSI,再加上一些其他因素的影响和考虑。我就决定afk...至今

到了现在,我和狗毛已经大学毕业,成为了社畜。已经没精力和那样的热情去重返osu...加上这几年StreamCompanion以及其他优秀的osu直播装饰/pp显示软件的强力崛起,思考再三我们便决定停止对osuSync项目的开发,维护也仅限于对其他人pr的回应和处理。

the End....?

再发一些回忆的图吧



AvaliableStatus:Workable
osu! version:b20220409
ORTDP version:1.7.0
if you notice your displayer doesn't work,please check their version and update.(just type "plugins update" in Sync console.)

Feature & ChangeLog
  • 1.0.0.0:
  1. Automatic to show/hide with the change of game status.
  2. Support Tourney Mode.
  3. Provide GUI-Window and Text file, you can choose how to show them.
  4. Show realtime datas ,such as PP/100_count/300_count/200_count/miss_count and more.
    1.0.1.0:
  5. Support window topmost.
  6. Support I18n.
    1.0.2.0:
  7. Support transparency(but it can catched by OBS until it's no transparency).
  8. Add shadow effect switch.
    (1.0.1.2):
  9. Automatic to get song folder.
    1.0.2.1(1.0.1.4):
  10. Support log file
    (1.0.1.6)
  11. Add beatmap path searching pattern "*{title}*"
    1.1.1.0(1.1.1.0)
  12. Add debug mode.If you meet trouble please set DebugMode=True and got details info.
  13. NOW IS SUPPORT OBS-PLUGIN!!! live streamers can able to show PP displayer when they are playing with fullscreen.Details.
  14. Support more method output at same time. Details
  15. Support Install/Update in Sync program.Detail
    1.2.1(1.1.2)
  16. Support customize output content.Details
  17. Improve beatmap searching.Now it is able to display beatmaps which custom path.
  18. Support customize RoundDigits in config.ini
  19. Dispalyer Interface is public ,now you can make a displayer by yourself.
  20. Support output "speed_pp"/"aim_pp"/"acc_pp"/'if_fc_pp"/"max_pp"/"combo" and more.
    1.2.2 | 2018/1/22
  21. Support change font in WPF,please modify FontName in config.ini.(Default:Segoe UI,Recommend:Consolas);
  22. Implement reload setting
  23. fixed some bugs,and add more bugs. XD
    1.2.4(1.2.2) | 2018/1/31
  24. Support Taiko mode.
  25. Add ForceOsuSongsDirectory option in config.ini.(ForceOsuSongsDirectory forces ORTDP to use this path.)
  26. Add GetCurrentData method(Developers can get all data without event invoking)
    1.3.0(1.3.1)
  27. Support Mania Mode.(BETA)
  28. Support output with expression.for example "total obj:$(n300+n100+n50+nmiss}"
  29. Add more bugs :D
  30. PPY,Please update .NET target version :P
    - - (Sync2.17)
  31. Support auto update.
    (1.3.4)
  32. Add more log info for debugging&check
    (1.3.5)
  33. Add GameMode option(Available options: Auto,Osu,CatchTheBeat,Mania,Taiko)
    (1.3.5 2018/5/15)
  34. Update oppai.dll for HD adjustment.
    1.4.0(1.4.0 2018/6/27)
  35. Add "DisableProcessNotFoundInformation","EnableModsChangedAtListening","IgnoreTouchScreenDecrease " option in config.ini.
  36. Add "Send pp to chat on Ranking" via IRC chat(recommand PublicBotTransferPlugin) Preview Tutorial
  37. Support config GUI.you can type "config" and modify config conveniently.
  38. Add mmf-split and text-split out method
  39. Mania pp update
  40. sorry ,because of bugs , restart command is unusable ,you can close and then open Sync if it needs restart.
    1.5.0(1.4.3 2018/8/19)
  41. Support expression and provide lots of functions for formatting,Details
  42. Support CTB
    1.6.0(1.4.4 2018/11/1)
  43. Output hardware information in debug mode.
  44. Support logical expression and new functions. like "if(condition, true_expression, false_expression)"
    1.6.3(2018/12/3)(Sync2.18.2)
    1.6.8(1.4.4 oppai3.1.1)
  45. update oppai.dll to 3.1.1 and support latest offical pp algorithm.
  46. add update checker and it will be easy to tell you if your Sync/RTPP need to update.
    1.6.10
  47. fix bug which cant calculate mania realtime pp.
    1.7.1(1.4.5)
  48. Add new output method:multi-output
  49. Support new output formatter for multi-output : Javascript
    1.7.3(1.4.8)
  50. Add new rtpp output params: ${rtstars} and ${stars}.
  51. Adapt osu!version v20190816
    1.7.3(1.4.11)
  52. Add OnUnstableRateChanged for devs.
  53. Add version check notify.
  54. Adapt osu!version v20190906
    1.8.0~1.8.5(1.5.1)
  55. Add formatter variable ${ur} to show realtime UnstableRate.
  56. Add formatter function smooth(variable_name).
  57. Add rtppfmt-bp formatter. it's added the following variables: ${rtbp} , ${fcbp} , ${rtpp_with_weigth} , ${fcpp_with_weigth} , ${rtpp_weight} , ${fcpp_weight}.Usage wiki Test ExampleScreenshot
    1.8.6(1.5.9)
  58. Add formatter variables: ${acc} and ${score}
    (1.6.1)
  59. Support getting replay/hit data Details
    (1.6.2)
  60. support Japanese language, thx Fairy-Phy
    (1.6.3)
  61. support Sync 2.18.4
  62. OLSP support Japanese language, thx Fairy-Phy
    (1.6.4)
  63. support Sync 2.18.5
    (1.6.9)
  64. Adapt osu!version v20220409 , thanks wanjiaXG
    (1.7.0)
  65. Added a class for changing offsets more convenient , thanks Someone999
Notice:
  1. If it not work,try to run Sync.exe as Administrator.
  2. If you notice ortdp catch wrong(or not exist) Song path.Please modify ForceOsuSongsDirectory to your real Songs path and retry.
  3. Please read FAQ and Usage carefully.I won't reply any thing what I wrote. 8-)
  4. If you feel lag when you are using.You can modify config.ini and set "ListenInterval" value(ms) as you want.(suggest 132,best 33).We will optimize it.
  5. If you got these messages when you are play ctb beatmap:

    Please close Sync and modify "GameMode=CatchTheBeat" or use config command:
  6. Realtime PP Displayer is automatic to start when you open Sync.exe so you needn't input anything command else.(You may have to play once for taking effect)

Usage and Download
FULL TUTORIAL VIDEOS
中文视频教程
TUTORIAL VIDEOS(English)

* Manual Operation(Video Tutorial)([b]Bilibili):
  1. Download Sync and unzip to a folder which you like.
  2. Open Sync,type "plugins install displayer" and press enter key.
  3. Restart and enjoy :D
Of course, you can download these for skiping above steps(Suggest):

* Download Sync&other plugins for integration:

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Normal:
Sync with RealtimePP + PublicBotTransferPlugin(Download)(virus check)
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Advanced:
Download Sync with RealtimePPPlugin + PublicBotTransferPlugin + OsuLiveStatusPanelPlugin + IngameDisplayerPlugin(Download)(virus check)

If you want display pp in game, just type "o i" in Sync before you start osu! program.And then play/replay once to make sure all plugin are working.

Ingame Plugin Page



Screenshots:


↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑



Other Output Methods Tutorial
Now you can use ODDR plugin and show your realtime pp at any where!
ODDR Video Tutorial
Show realtime pp on your phone in LAN

Now you can show your realtime pp on Streamlabs OBS


Now you can use IngameOverlayPlugin and show your realtime pp in your game!
Ingame Video Simple Tutorial

FAQ
  1. Will I be banned if i use this plugin? - No,because it's approved by peppy,of course you have to obey the rules and dont use them for bad behaviors.
  2. Why it not show anything when I playing? - Maybe osu!RTDP not support your osu! version,please check update.
  3. Why it arise 0x8007007E crazily? - have you installed Visual C++ Redistributable for Visual Studio 2015 or later
  4. Why obs can't update realtime PP GUI-Window when I was playing osu! with fullscreen? - I think it about OS rendering mechanism. You can modify config.ini and set "UseText=True" , so plugin will output to text file (Default output to {SyncFolderPath}\Plugins\rtpp.txt)
  5. Why I can't count PP all/some beatmaps? - Please read this and check yourself
  6. Why it always arise 0x80131515 for each plugin loading? - Please view this or this2.
  7. How to change program language to English/Others? - Please view this
  8. Anti-virus(Defender) software stop me from using program and warn me there are virus/trojran? - Well,in fact there is no any problem because these are open source and build from them.Please ask google how to let to trust(add white-list), or you can get source code and build by yourself.
  9. Could I show them with osu! fullsceen/ingame? - forum/t/773429[/color]
  10. Why did it always arise "Init ModeFinder Failed! ...."? - Please update OsuRTDataProvider plugin and set "GameMode" value to Auto/Osu/CatchTheBeat/Mania/Taiko ,take a try!
  11. How to customize my pp displayer window? - See this and this2




Yugu
牛逼
[Mahua]
您?????????
kj415j45
Approved! :+1:
Calslock
Nice, and highly customizable, but there are some remains of your data in config.ini file in rar you've provided, I don't know it should be like that, I only want to make you aware of that. But still nice work ^^
Topic Starter
DarkProjector

Calslock wrote:

Nice, and highly customizable, but there are some remains of your data in config.ini file in rar you've provided, I don't know it should be like that, I only want to make you aware of that. But still nice work ^^
Thank your for replying :D,Now I have fixed rar file and modified url. I didn't notice those because there no wrong when I was testing.

Sync is a program which you can take a communication with spectators between osu!irc and live streaming room. it also support some plugins for customizing features what you want. the setting of plugins will save to file "config.ini". that's the reason why you can see the many dll files in Plugins and config sections in config.ini.
Billieilish
I don't understand. What is this good for?
Topic Starter
DarkProjector

squaggly wrote:

I don't understand. What is this good for?

You can show them by OBS for decorating your streaming scene.or collect them for beatmap analysis.all in all.my friends and I just provide tools for our interests.:D
840
全屏好像沒反應呢
Topic Starter
DarkProjector

NotPeOpLe wrote:

全屏好像沒反應呢

全屏没反应的话可能是纸张的win10渲染机制所致,我倒是没出现这个问题。你可以在config.ini中,找到UseText值改为True并保存,插件就默认会在{SyncFloderPath}\Plugins\rtpp.txt输出,然后可以用obs的文本物件咯:)
CeilingWaffle
This is pretty neat 8-)
Adri
Hi, nice work !

GitHub ?
Pennek
Sweet!
Celery
doesn't work for me, it can't find the .osu file because i have my beatmap directory set to my E: drive, is there a config option to change the directory?
KedamaOvO

[ Aether ] wrote:

doesn't work for me, it can't find the .osu file because i have my beatmap directory set to my E: drive, is there a config option to change the directory?
Please try the new version.
ChristianOsu
I keep getting, "Sync has stopped working." All I've done after downloading the rar is extract it into a separate folder.
NiceFlesh
Golden <3
Kyoma

Iota wrote:

I keep getting, "Sync has stopped working." All I've done after downloading the rar is extract it into a separate folder.
same here, help pl0x
Enkrypton
一看我的心跳会达到big black的速度lol

Github链接有没有? Edit: am blind :?
Topic Starter
DarkProjector

Iota wrote:

I keep getting, "Sync has stopped working." All I've done after downloading the rar is extract it into a separate folder.



EinfachKyoma wrote:

Iota wrote:

I keep getting, "Sync has stopped working." All I've done after downloading the rar is extract it into a separate folder.

same here, help pl0x


Did you have any screenshot pic about program crash?Please send it to my email:MikiraSora0409@126.com and we will check them.
show more
Please sign in to reply.

New reply