Coder Social home page Coder Social logo

gosumemory's Introduction

Yet another memory reader for osu! Supports both Linux and Windows. (requires sudo on Linux though since only root can read /proc)

Build custom pp counters with ease!
You can contact us here: https://discord.gg/8enr4qD

Real-World examples:

cpol FlyingTuna Alumetri Sotarks Mrekk Mathi RyuK

Usage

  1. Download the latest Release

    • Unzip files anywhere

    In the root folder of the program, you can find the static directory. It contains all of the available counters. Those are getting streamed via HTTP-File server

  2. Run gosumemory & osu!

    • Visit this link in your browser: http://localhost:24050 and choose the counter that you like.
    • Add a browser source in OBS (Width and Height could be found in the Included counters spoiler)
  3. If using built-in counters covers all of your needs, then you are done here.

Please note that auto-updates only cover the executable itself, however, if a new counter gets released, we will mention it in the Release Notes.
If you want to make your own, just create a new directory in the static folder.

Does this work in-game?

Yes! see this

Included counters:

Click ME

InGame1

Size: 240x133

By: Dartandr

InGame2

Size: 370x120

By: Dartandr

InGame3

Size: 150x70

By: Dartandr

reComfortaa

Size: 1152x245
Song Selection

Gameplay

By: Xynogen

MonokaiPane

Size: 512x150
Song Selection

Gameplay 1

Gameplay 2

By: Xynogen

WaveTournament

Size: 1920x1080
Chat + Warmup (Team score disabled) view

Chat + Warmup (Team score disabled) view

Gameplay

By: VictimCrasher

Classic

Size: 550x300

By: Dartandr

OldClassic

Size: 550x300

By: Dartandr

Simplistic

Size: 750x150
Song Selection

Gameplay 1

By: jassper0

DarkAndWhite

Size: 840x140

By: cyperdark

Kerli1 & Kerli2

Size (1)(2): 794x124 | 353x190

By: Dartandr

Luscent

Size: 1920x1080
Open-Source Implementation of Siae's Luscent overlay. No elements were stolen. This is a remake. Please consider buying her version!

Remake by: Dartandr

VictimCrasherCompact

Size: 560x150
Song Selection
\

Gameplay

By: VictimCrasher

VictimCrasherOverlay

Size: 1920x1080

By: VictimCrasher

UnstableRate

Size: 300x100
Just a plain number that shows current UnstableRate, could be useful if you want to put it above your UR Bar.
By: Dartandr

MaximalLime

Size: 800x306

By: cyperdark

MinimalLime

Size: 640x130

By: cyperdark

TrafficLight

Size: 458x380

By: cyperdark

How does it work?

gosumemory streams WebSocket data to ws://localhost:24050/ws that you can use in any programming language to develop a frontend. We recommend JavaScript though, as it's much easier to make something pretty with the Web framework. All of the included counters are good starting points. There is also http://localhost:24050/json that you can open in a web browser to see the available data. We strongly recommend against sending GET requests to that address in production, please use WebSocket instead.

Example JSON and a little wiki of it's values

What if I don't know any programming languages but still want to output data to OBS?

https://www.youtube.com/watch?v=8ApXBEO5bes

How do I submit a pp counter?

Head over to static and create a pull request there. If it's good quality, then it will get approved and included in the next release.

Tournament Client

When operating in tourney mode, real-time pp counters for each client, leaderboard and grades don't work. Each gameplay object is sorted by tournament client "id", "menu" object is a tournament manager (state 22). Tournament mode works only with Cutting Edge tourney client and is not supported on Linux.

Linux

You have two options. Either run native, but with sudo privileges, or through WINE. Please note that Linux builds are not well tested and could contain crashes. Report them if you encounter any.

Consider supporting

Buy Me A Coffee

This project depends on:

Special Thanks to:

gosumemory's People

Contributors

adrriii avatar c0d3-m4513r avatar cyperdark avatar dartandr avatar kotrikd avatar l3lackshark avatar tadeokondrak avatar thesaltynewfie avatar varkaria avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gosumemory's Issues

Json sent as text/plain

The json page is currently sent with the 'Content-Type: text/plain' header when it should be sent as 'Content-Type: application/json'

gameplay.pp.maxThisPlay sometimes broken

My impression of this attribute was that if, from any given point in a play, you SS everything, that will be the pp you get at the end. However, sometimes after breaking combo this value slowly decreases even while playing perfectly. That isn't really the maximum then, or am I misinterpreting this attribute?

Video of this happening (see the pp-bar at the right side at around 0:22): https://www.youtube.com/watch?v=v9cMb2aP_Rw

How?

How to set this up?

Invisible GameOverlay on Recent NVIDIA GPU's

Was spotted on 1650super, 2060M, 2060Super. Needs investigation/help from someone that can reproduce this issue, and test another video card in the same system to make sure that this is an nvidia driver issue.

Problems with changing beatmaps.

When I change beatmap in song select once response beatmap metadata return nothing (any gamemode).
image
image
On songs endpoint I have only ±6500/100k+ maps
image

UserInfo signature is unstable

Looks like this piece of code is only present if the user is logged in. A fix would be to resolve it only in tournament mode (since it's impossible to be in a tournament manager while logged out)

0pp in gameplay

Have seen this several times, but cannot reproduce. Please report if you encounter this.

Sliderbreaks are broken

Due to recent changes in osu, watching replays doesn't count as 'plays' in memory anymore.

Scrollbar shown when using negative absolute positions

For the past few days, I was experimenting a little bit with gosumemory (tried to make my own overlay), and I noticed that whenever my overlay was transitioning (start of a game/replay or end of game/replay), it would show a scrollbar at the bottom.

To be honest, it's not a big deal, it's not breaking things, it's just visual (and maybe I've done something wrong on my overlay lol).
But I'm submitting this issue anyways in case it would be useful idk.

Video example: https://www.youtube.com/watch?v=tRowPLGuFco
Pay attention to the bottom of the screen when I'm starting the replay and when the replay is finished. (I was lazy to cut the gameplay)

Complete rewrite

Original architectural structure decisions were made back in the day when I was just starting coding and so it really is a mess. Was honestly surprised how stable it became after so many crutches and polishing attempts.

Current flaws:

  • Blocking loops on each goroutine instead of a sequential operations/channels
  • Asynchronous websocket stream as a result of ^
  • Cgo calls mix within go calls/multiple instances of pp calculators
  • Bad error handling (non-existent in some cases)
  • .ini config was a mistake after all, we probably should move to something like json/yaml
  • Mix of {log/pp/fmt}.Println calls for no reason
  • Global variables mess across packages
  • Non-Existent debug logging (besides mem package)

To combat that until it's too late I made a decision to rewrite most of the project.

The progress will be updated below:

  • replace a mess that's also known as a pp package with https://github.com/l3lackShark/cgoppai
  • rewrite memory package to the point that it's consistent with the way we read memory and send payload to web
  • GUI?

Memory leakage

'rewrite' branch contains a memory leak up to 1GB at osu start.
image
Present on both Windows and Linux.

Inconsistency with JSON pp values

I was playing around with the pp values inside the menu object and every time I enter a map to play it randomly changes its values, sometimes it changes them, sometimes it doesn't. It also sometimes fixes itself by going back to the map selection menu but other times it displays the wrong values.

...
"pp": {
  95: 180
  96: 186
  97: 195
  98: 207
  99: 224
  100: 249
...
...
"pp": {
  95: 13
  96: 19
  97: 28
  98: 41
  99: 59
  100: 85
...

I'm guessing this is the max pp the map can give with or without mods right? I was trying to use it that way but I kept getting these inconsistencies when playing a map.

chrome_2020-10-04_22-17-38

It seems like we lost the process, retrying!

This is more of asking support unfortunatelly i didnt find any place to ask other than here (perhaps im blind? ahah) anyways, yesterday the first time i executed gosumemory it worked perfectly fine, i probably did something and now i seem to be spammed with this message
image
I already reinstalled to assure it was not something i have done but that didnt fix the issue, im still able to access the built-in overlays but not the /json endpoint :( any idea of a fix for this? or is it a known bug?

Currents mods and difficulty statistics resetted to NM after song ends.

Referring to issue number #44 , similar but right now the Difficulty of the beatmaps and also the Mods that used in game resetted when in result screen.

OSR Plays : https://drive.google.com/file/d/1zBQGgSfgg1h4g5dc3WBR_2B_ro3SxtIt/view?usp=sharing
Also here is the beatmap links for related osr : https://osu.ppy.sh/beatmapsets/914242#osu/1919496

I already attached you also the .sql that maybe help you to solve this issue.
reportbug.zip

Version : Artifacts 1.3.1 (https://github.com/l3lackShark/gosumemory/actions/runs/465304131)

Tournament Client support

This would require a JSON output for each of the tournament "clients" as well as the tourney manager (BO, Stars, etc..)

OBS not detecting Web-based counter, errors in bash etc...

Unable to connect to localhost:24050 (connection refused)

gosumemory is running, localhost:24050 isn't working

OBS not detecting web counter

localhost:24050/Simplistic doesn't show anything when opened in OBS

Errors in bash

keeps spitting out this error: 2021/04/02 15:52:11 Failure mid getting offsets, retrying! ERROR: no memory matched the pattern: 83 E0 20 85 C0 7E 2F

System info

Ubuntu 20.04.2 LTS, 64-bit, Linux 5.8.0-48-generic (default) kernel

config.ini
[Main]
update = 100
path = /home/bittheprotogen/Games/osu/Songs
cgodisable = false
memdebug = false
memcycletest = false
wine = true
		
[Web]
serverip = 127.0.0.1:24050
cors = false
		
[GameOverlay] ; https://github.com/l3lackShark/gosumemory/wiki/GameOverlay
enabled = true
gameWidth = 1920
gameHeight = 1080
overlayURL = http://localhost:24050/Simplistic
overlayWidth = 355
overlayHeight = 97
overlayOffsetX = 0
overlayOffsetY = 0
overlayScale = 10

osu folder & fix backslashes

  • add path to osu in settings.folders.osu
  • settings.folders.songs & settings.folders.osu change backshashes to slash

[Feature] Multiple In-Game overlays

Idea

Add support to add multiple In-Game overlays.
This could be beneficial, to have a regular pp counter, like you normally would, and have a few, select statistics displayed, via simple Name: Value formatting.
eg. UR on the top right of osu! and Simplistic on the topp left.

Config

In the config, you could allow to have multiple sections of [GameOverlay] in the (regex) format of [GameOverlay[[:digit:]]*?]. Then only the part, that actually reads the config needs to change, as now there are just 2 Counter Objects instead of one (if that is, how the programm is structured).

JSON mod name inconsistency on NoMod

JSON snippet on gameplay/replay

...
"mods": {
  "num": 0,
  "str": ""
}
...

JSON snippet on song selection/score results

...
"mods": {
  "num": 0,
  "str": "NM"
}
...

Should've been an easy fix, I reckon. But I can't code much.

Current plays displaying as NM instead with mods after the song ends.

Problem that I encountered :
Every gameplay on current PP use the NM Current instead with mods as you can see in this JSON. On previous version this data is fine until this happened.
image

For the replay data, here I will attach you my osr for investigation.
OSR Plays : https://drive.google.com/file/d/1zBQGgSfgg1h4g5dc3WBR_2B_ro3SxtIt/view?usp=sharing
Also here is the beatmap links for related osr : https://osu.ppy.sh/beatmapsets/914242#osu/1919496

Version : 1.3.1

Failure mid getting offsets, retrying! ERROR: no memory matched the pattern

Hello, like 1Month ago i used gosumemory normaly on Linux it worked with sudo and trough wine.
Now i got back to gosumemory and updated it but i get this messege and cant bring it to run.

Specs:
OS: Manjaro Linux x64
Kernel: 5.10.0-101-tkg-pds

osu! running trough wine 6.0 x64
Latest osu cuttinedge b20201210

The Error message:
image

[Feature] Move Module Width/Height

So I noticed, that for every Module, there is a Width and Hight.
Those combos are Static. One Module cannot have multiple Width's and Height's (afaik).
So how about removing the following properties:

overlayURL = http://localhost:24050/Simplistic
overlayWidth = 650
overlayHeight = 150

and replacing them with the following:

overlayName = Simplistic

Everything before and after would still stay the same of course.
One could still reconstruct the needed URL, because we have serverip as a property. The reconstruction should just look similar to this: "http://" + serverip + "/" + overlayName (Please use format Strings in actual code!).

One could then add a config.ini file to each module, where it's height and width are stored. Something along the lines of this:

Width = 650
Height = 150

Very frequent mp3 errors

Every few maps I get the error that It could not find the specific mp3 file, resulting in values not displaying correctly.

My directory is C:\Games\osu!\Songs{Song Folder}

I doubt that is the issue. I can replicate this issue as much as I want for instance with this beatmap.

Let me know if I need to send in any details, e.g. logs if there are any.

[Enhancement] PPIfRestSS

I didn't find it in the JSON so I thought I'd request it.

Currently PP is only showed for FCs, e.g. I miss, it still shows max PP for current accuracy.
Say I have 90% Accuracy on Cry Thunder, it'd say ~500pp even though I just got a 100 on the first few notes. In reality the play can still be a 700pp play. I could also get e.g. 5 misses and then FC rest and It'd show 650pp for a 99% 5 miss run.

Therefore I wanted to ask whether you could implement a PP calculation if the rest was SS'd on the map.
For example (Arbitrary values):
Max PP: 700
1x100: 695
1xmiss: 559

Hopefully I could explain it somehow.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.