Skip to main content

Vertical Scrolling Rhythm Game Package

Project description

Reamber (Py)

pip install reamber

This is a simple package to handle VSRG file, useful if you'd want to manipulate data such as offset, column, bpm, etc.

This doesn't provide complex algorithms, only the base dataclasses and helpful basic algorithms

Wiki

Visit the wiki for more info

Info

Motivation

A growing amount of osu!mania players are becoming interested in programming. The best way to learn is to relate it to something that you're familiar with. That's why I'm making a library for most common VSRG (Vertical Scrolling Rhythm Game) types.

WIIFY (What's in it for you)

Picking it up

Everything is in Python, a very easy to pick up language. Installing it is as easy as:

  1. Installing pip
  2. Run pip install reamber

Easy Typing

The library heavily focuses on Typing for explicit returns and arguments. This is at an expense of slower processing speed.

I recommend using PyCharm or any other python editor that supports hinting. Hinting is where the editor hints you available functions, variables, etc.

Piping

Inspired by R Lang %>% operator.

Piping is the act of chaining multiple functions together.

# Grabbing the notes in between 1s and 2s in columns 1 and 3

# Without Piping
Notes(Notes(notes.after(1000)).before(2000)).inColumns([1, 3])

# With Piping
notes.after(1000).before(2000).inColumns([1, 3]).data()

This library supports it, to retrieve the list, just call .data()

List, Pandas Support

This library also supports exporting multiple classes as a list or pandas.DataFrame via .data() and .df() respectively.

So you don't need to feel limited to just the current interfaces.

Examples

Load in a osu! map

Grab the sorted holds in columns 1 & 2 in between 1s and 2s as a list

from reamber.osu.OsuMapObj import OsuMapObj

m = OsuMapObj()
m.readFile("map.osu")
print(m.notes.holds.sorted().inColumns([1, 2]).between(1000, 2000, includeEnds=False).data())

Load in a Quaver map

Grab the SV multiplier values as a list

from reamber.quaver.QuaMapObj import QuaMapObj

m = QuaMapObj()
m.readFile("map.qua")
print(m.svs.multipliers())

Dev Info

How it works

The base hierarchy goes like

MapsetObj
    list of MapObj
        prop BpmList
            extends TimedList
            list of BpmObj
                extends TimedObj
        prop NotePkg
            prop HitList 
                extends NoteList
                list of HitObj
                    extends TimedObj
            prop HoldList
                extends NoteList
                lsit of HoldObj
                    extends TimedObj

A derived file format like osu goes

OsuMap
    extends Map Obj
    prop OsuNotePkg
        extends NotePkg
        prop OsuHitList
            extends OsuNoteList
                extends NoteList
            list of OsuHitObj
                extends HitObj
                    extends NoteObj
                        extends Timedobj
        prop OsuHoldList
            extends OsuNoteList
                extends NoteList
            list of OsuHoldObj
                extends HoldObj
                    extends NoteObj
                        extends TimedObj
    prop OsuBpmList
        extends BpmList
        list of OsuBpmObj
            extends OsuTimingPointMeta
            extends BpmObj
    prop OsuSvList
        extends TimedList
        list of OsuSvObj
            extends TimedObj

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reamber-0.0.10.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reamber-0.0.10-py3-none-any.whl (122.9 kB view details)

Uploaded Python 3

File details

Details for the file reamber-0.0.10.tar.gz.

File metadata

  • Download URL: reamber-0.0.10.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for reamber-0.0.10.tar.gz
Algorithm Hash digest
SHA256 90e32e01b0a3923f44508119e5942493b48c30f47f46ce1231518dc6c8f0f936
MD5 849b8e603853854142cb95852928355e
BLAKE2b-256 62313e1af008c44969d2cef2b8ae3b96c82cf0c7f768c09ba039248db07cefc8

See more details on using hashes here.

File details

Details for the file reamber-0.0.10-py3-none-any.whl.

File metadata

  • Download URL: reamber-0.0.10-py3-none-any.whl
  • Upload date:
  • Size: 122.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for reamber-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 b40b90c86c06d79fba08b70d269183f3762c15b5e0ed153168056a14b3eaeea8
MD5 6f87e9caaeb138bb009933be9b852ffa
BLAKE2b-256 e3ac2a8e1fb167c16e60a42ddda6643be451bcd1c25c137f5bebe5937ab7f66a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page