itdelatrisu / opsu

opsu! ~ an open-source osu! client
https://itdelatrisu.github.io/opsu/
GNU General Public License v3.0
762 stars 123 forks source link

Proposed Updates #293

Closed Lyonlancer5 closed 6 years ago

Lyonlancer5 commented 7 years ago

Overview

This issue is a list of update proposals for opsu! as of 0.15.0. Since the new osu! client is now open-source and in active development, we might as well push some changes here.

This list is non-exhaustive and will be changed per-release or when you like (owners can edit others' comments AFAIK). We could also reference feature requests to this issue.

Golden words of encouragement:

IMO the biggest advantage of opsu! is NOT being osu!

Proposals

Gameplay

UI/Design

Framework

Distribution

Development

Additional notes

I'm working on setting up an Ubuntu system (not a VM) specifically for the purpose of compiling and testing Linux builds.

Eh no, its not going to be a rewrite anymore, maybe

Updates

tpenguinltg commented 7 years ago

If this is going to be almost a rewrite, I would also suggest adding unit tests.

Lemmmy commented 7 years ago

Slick2D + LWJGL 3 (requires re-writing parts of the current framework and significant amounts of caffeine)

why don't we just merge fluddokt's libgdx port in here? libgdx is designed to be multi-platform, so then we don't have to maintain two separate desktop and android versions. you'd move the main game into a main module, then you would simply make a desktop and android module, which contain basically just a launcher class, and other small tweaks per-platform. compile builds with main + desktop, and main + android.

itdelatrisu commented 7 years ago

Looks interesting. Not sure what kind of input you want from me (if this is going to be a fork, which it sounds like, you can do whatever you want) -- but here are some comments after reading this:

You haven't explained why you want to make any of the larger changes. A lot of them seem like tons of work for little reward, e.g.:

Things you haven't mentioned, if you need ideas (off the top of my head):

Lyonlancer5 commented 7 years ago

Well, added to the list and a few explanations/questions.

automated tests ... integration tests ... unit tests

Would something like a CI service be of help?

LWJGL 3...

I forgot about that libGDX fork (this one?) so marking the LWJGL 3 thing off the list for now.

Was going to try an experiment regarding different resolutions rather than sticking with the pre-defined set of resolutions and also working with multi-monitor setups. The idea is far-fetched because I'm still learning to do a way to change the main UI to be "resizable" and along with it, a way to handle scaling of drawn objects.

IRC: Would be nice, though I have no idea if anyone would use this

I do see the point you made. With advanced communication systems (e.g. Discord/TeamSpeak) that fulfill the needs of users and provide more features, the IRC system would end up being unused (unless the end user specifically wants something "less")

Packing JRE

Oops. And it would take much longer to setup all those stuff too even.

Scoring

About that, which of the algorithms do you prefer, the current algorithm or something like in mania (1 million score cap) ?

an i18n framework

Whoops, the world isn't English-only, riiiiiiight (added) Do you want the language files to be housed in the JAR or to be downloaded/extracted seperately?

Storyboards

Since C# code is slightly similar to that of Java, I'll try decoding the *.osb files first (and the cases where the beatmap difficulties have their own storyboard code)

Skins Shaders

Ooh, the eye-candy... (I need a more powerful graphics card and a way for opsu! to be friendly with lower-spec PCs)


I already forked this repo (here) and added a few changes already (in the branch experiments1)

Lemmmy commented 7 years ago

Do you want the language files to be housed in the JAR or to be downloaded/extracted seperately?

language files are tiny, less than 100kb each even for large projects. simply bundling them is fine

Lyonlancer5 commented 7 years ago
lag is real with 2GB

I got to work on the localisation framework first and these are early progress: Used a variant of SampleNotReal.lang

screenshot_20170515_002334 screenshot_20170515_013459 screenshot_20170515_013637 screenshot_20170515_013649

The framework itself relies on a simple system of String key-value pairs that can be reloaded upon changing the language setting. Its something like this: my.translation.key=Translated Value or my.translation.formatted=%s supports formatting

The language files themselves are packaged in the JAR and can be found by following in the package itdelatrisu.opsu.translations where LanguageManager can also be found.

I haven't actually integrated this into the Options panel yet, although there are edits already to prepare for it. I'll be making a gist to provide a list of localisable strings that can be used as a template (other than the default English US file)

//The framework for translating stuff is quite easy to do, its the translations themselves that are slightly hard to source. I know, this ain't final.

yugecin commented 7 years ago

Smoke and key overlay might also be nice things to add :)

IRC: would be nice imo, but probably not used very much. It would also be a nice basic snooper as you can see when people join/leave channels (if it's non-bancho) and maybe even report crashes to it :) The basics of an IRC client is not that hard (I've made some java IRC bots in the past), so you can avoid using someone else's library and be sure that it's optimized for what opsu! needs.

For your final note: I have win7/8/10/linux/macbook systems so I can help in testing, but opsu! runs fine on all my machines (haven't tested the latest build with video support yet) and I don't really see why compiling would not work in different environments as long as there's a JDK and dependencies are resolved.

Lyonlancer5 commented 6 years ago

soon again