Giter Site home page Giter Site logo

kotrikd / tosu Goto Github PK

View Code? Open in Web Editor NEW
118.0 4.0 10.0 2.18 MB

Eponymous software for reading osu! memory (allows you to make stream/tournament/in-game overlays), accounting for most of gosumemory's issues (not exactly).

Home Page: https://tosu.app

License: GNU Lesser General Public License v3.0

TypeScript 83.16% Shell 0.02% Python 0.22% C++ 7.29% HTML 0.87% JavaScript 8.45%
gosumemory memory osu process reader-writer

tosu's Introduction

Version License: GPL--3.0 Twitter: kotrik0

Welcome to tosu 👋


Eponymous software for reading osu! memory, accounting for most of gosumemory's issues

Instruction

  1. Download tosu
  2. Extract tosu.exe to a Folder
  3. Run tosu.exe
  4. Go to http://127.0.0.1:24050
  5. Now you in overlays dashboard, in here you can download counters, or tweek settings of tosu
  6. Here you can watch showcase of dashboard: link
  7. Have fun!


Features

  • All Gamemodes are supported
  • Gosumemory compatible api
  • Brand new api for websocket
  • In-game overlay (based on gosumemory closed overlay injection)
  • Available websocket data:
    • Settings
    • Gameplay data
    • User ingame data
    • Beatmap data
    • Session (Work in progress)
    • Multiple graphs for different skill sets (aim, speed, etc)
      • Extended starrating stats (per mode)
    • Leaderboards list (array)
    • Folders paths and Files names
    • Direct paths to files
    • Result screen
    • Tourney data (not tested, yet)
  • LOW CPU USAGE (I actually checked, this thing has a much lower memory recoil than the gosu)


In-game overlay

  • To enable it, you need to edit tosu.env, and turn on ENABLE_GOSU_OVERLAY=true (make it equal true)
  • Tutorial: link


Routes

gosu compatible api

  • / - List of all counters you have
  • /json - Example of /ws response
  • /ws - response example
  • /Songs/{path} - Show content of the file, or show list of files for a folder

v2 (tosu own api)

  • /json/v2 - Example of /websocket/v2 response
  • /websocket/v2 - response example
  • /websocket/v2/precise - response example
  • /files/beatmap/{path} - same as /Songs/{path}
  • /files/skin/{path} - similar as /files/beatmap/{path}, but for a skin

api

  • /api/calculate/pp - Calculate pp for beatmap with custom data
    • Response example
    • BY DEFAULT IT USES CURRENT BEATMAP (:))
    • All parameters are optional
    • path - Path to .osu file. Example: C:/osu/Songs/beatmap/file.osu
    • mode - Osu = 0, Taiko = 1, Catch = 2, Mania = 3
    • mods - Mods id. Example: 64 - DT
    • acc - Accuracy % from 0 to 100
    • nGeki - Amount of Geki (300g / MAX)
    • nKatu - Amount of Katu (100k / 200)
    • n300 - Amount of 300
    • n100 - Amount of 100
    • n50 - Amount of 50
    • nMisses - Amount of Misses
    • combo - combo
    • passedObjects - Sum of nGeki, nKatu, n300, n100, n50, nMisses
    • clockRate - Map rate number. Example: 1.5 = DT


Support

  • Give a ⭐️ if this project helped you!
  • If you need help setting up this program or have any suggestions/comissions, feel free to go to the discord channel above in the 🔵 tosu section


Author

👤 Mikhail Babynichev

Special thanks to @xxCherry, for providing memory reading library


🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page. You can also take a look at the contributing guide.


📝 License

Copyright © 2023-2024 Mikhail Babynichev.
This project is LGPL-3.0 licensed.

tosu's People

Contributors

cyperdark avatar gabuthedev avatar ilw8 avatar kionell avatar kotrikd avatar minisbett avatar shdewz avatar thenerdie avatar xxcherry 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

tosu's Issues

randomly pause/stuck

Smth program will stuck in one state and will do nothing

also why it's over 1gb of memory
image

some names show up as blank in `tourney.manager.chat`

A specific instance was -_Izayoi_-, here is an excerpt of /json

{"team":"left","time":"17:40","name":"","messageBody":"thanks for ref and stream"},{"team":"unknown","time":"17:40","name":"jaaysfa","messageBody":"ty for ref"},{"team":"unknown","time":"17:40","name":"Kurumi--","messageBody":"ggs ty for rerf"},{"team":"left","time":"17:40","name":"","messageBody":"gl next week"},

Restarting tosu did not help.

feat: change automatic updates behaviour.

The client shouldn't automatically restart after the new update is ready. In most software, the user is asked to restart the client (either manually or by a button that says "restart now"). It is user-intuitive to let them know the update is ready and only one step is left.

If any of the devs are not okay with this change, this could come as a toggle (could be called "Show prompt before automatic client restarts" or something).

This should also be a thing for manual updates, as discussed in #111

feat: add ability to disable automatic updates.

A new toggle in the dashboard's settings page called automatic updates ( enabled by default ).
The user should be able to disable this feature resulting into the client not updating itself anymore.

This should also come with the ability of installing updates on your own, without the need of visiting github, a great idea would be to add a notification at the top of the dashboard with a button saying "install latest" ( and also a notification in the console that tells you to "visit the dashboard or to enable automatic updates in order to install the new version" ).
Extending the idea from above, the user should be able to choose and install any versions that are available on github via the dashboard (probably with some warnings like "by reverting to this update, the dashboard will no longer be available" or something similar).

Upgrade 'lint' task

  • Add Oxlint ?
  • Use https://github.com/marketplace/actions/cache ? (can be bad for local modules)

pausing to reconnect websocket issue

from discord

i tried to use the latest version 1.8.0 it just keep spamming pausing to reconnect websocket and i have to downgrade to 1.7.0 to work as normal
discord pic

I cannot install it in arch linux

Hi~~~
I'm attempting to install it using yarn install, but I'm encountering this error

../lib/process.h:3:10: error fatal: Windows.h: No existe el fichero o el directorio
    3 | #include <Windows.h>
      |          ^~~~~~~~~~~
compilación terminada.
make: *** [tsprocess.target.mk:118: Release/obj.target/tsprocess/lib/functions.o] Error 1
make: se sale del directorio '/home/aki/Descargas/osumemory-ts/osumemory-ts-1.0.1-alpha/node_modules/tsprocess/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/aki/Descargas/osumemory-ts/osumemory-ts-1.0.1-alpha/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack     at ChildProcess.emit (node:events:511:28)
gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:293:12)
gyp ERR! System Linux 6.3.2-arch1-1
gyp ERR! command "/usr/bin/node" "/home/aki/Descargas/osumemory-ts/osumemory-ts-1.0.1-alpha/node_modules/tsprocess/node_modules/.bin/node-gyp" "rebuild"
gyp ERR! cwd /home/aki/Descargas/osumemory-ts/osumemory-ts-1.0.1-alpha/node_modules/tsprocess
gyp ERR! node -v v20.2.0
gyp ERR! node-gyp -v v9.3.0
gyp ERR! not ok

I'm interested to know if there are plans for a Linux-compatible version, as the current version is not functioning with WINE.

KeyOverlay breaks sometimes

After x.x.x update keyOverlay could break at the start or in middle of play. keyOverlayPtr goes below 0 or rulesetAddr

Fix userProfile

  • add isLoggined
  • rename isBanchoConntected to rawBanchoStatus
  • always update it, rn it doesnt update sometimes

Change preview media in the installed section to a fixed width to fit the viewport.

Preview media is shown fully in the Available section but after installing and switching to Installing, the preview does not fit the card anymore, it uses the original picture size.

Another mention: preview media in the Installed section uses a different path compared to the ones presented in the Available section, which can be confusing for some people.

2024-03-03.00-43-20.mp4

Research big memory leak

Probably issue on some of arrays, that tosu parses (maybe not), maybe issue on tsprocess reading buffers idk

from discord:

ignore the edge but what 💀
image

resultScreen score is always 0 when using ScoreV2

Score doesn't get updated while using ScoreV2, tested only with mania

  "resultsScreen": {
    "mode": {
      "number": 0,
      "name": "Osu"
    },
    "score": 0,
    "name": "Bestfast",
    "hits": {
      "0": 3,
      "50": 0,
      "100": 8,
      "300": 320,
      "geki": 597,
      "katu": 37
    },
    "mods": {
      "number": 536870912,
      "name": "V2"
    },
    "maxCombo": 960,
    "rank": "S",
    "createdAt": "2024-05-07T13:12:22.066Z"
  },

Add ingame settings

We can do that via: watching config file itself or read from memory


  • Release stream: settings.client.branch
  • Resolution: settings.resolution
  • Background video: settings.background.videoEnabled or settings.background.isVideoEnabled
  • Storyboards: settings.storyboardsEnabled or settings.isStoryboardsEnabled
  • Background dim: settings.background.dim
  • Socre meter type: settings.scoreMeter.type (not sure)
  • Score meter size: settings.scoreMeter.size (not sure)
  • Volume:
    • Master: settings.volume.master or settings.volume.overall
    • Music: settings.volume.music
    • Effects: settings.volume.sounds
  • Universal offset: settings.offset.universal
  • Cursor size: settings.cursor.size
  • Sensitivity: settings.mouse.sensitivity

Wrong Information in Tournament Client mode

Current setup:

  • 2v2 tournament client (cutting edge)

Chat is very inconsistent with the memory issues. Sometimes, teams are on the opposite side of what they are supposed to be. Other times (after restarting tosu), everyone is assigned the left team.
In the socket message

  • gameplay was set to the very last user (slot 4/4), where all of the details were shown for that player's screen).
  • results screen is the same as above
  • this does not resolve if i move to a new lobby (with nobody in it)

in:
tourney.ipcClients
Tested with 2 players in the lobby - player_a was in slot 2, player_b was in slot 4.

  • ipcClients[0] had everything for player_b (in slot 4)
  • ipcClients[1].spectating showed the details of player_a (there was no scores)
  • ipcClients[2].spectating showed the details of player_a (there was no scores)
  • ipcClients[3] had everything for player_a (in slot 2)

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.