forum

opsu! - an open-source osu! client (UNOFFICIAL)

posted
Total Posts
343
show more
AstralPhnx
You might be able to swipe up from the bottom or left to right from the right to get access to the software buttons.
Yea I don't know maybe.
I can but it's still not the most ideal solution for those of us with software buttons. Games like cytus hide the software buttons but they still have a pause button for those of us who have software buttons. It's a small thing but it makes our lives a hell of a lot easier
Topic Starter
euphyy_old

euphyy wrote:

hanawanta wrote:

It seems that jarsplice doesn't include 'META-INF\services' from mp3spi.
So a quick fix would be to copy that into the opsu jar.
I can't really think of a more permanent solution.
I'll see what I can do.
Fixed: JarSplicePlus and opsu commits.
(unrelated: looking at JarSplice's code makes me cringe, re: line 70)
chong601
previous message

xasuma wrote:

- Disable mouse/pen clicks. (So people who drag the pen can properly play).
Probably this will do the disable mouse keys.... (didn't have the time to test this because i can't get access to IDEs till after April :( )
public void mouseMoved(int oldx, int oldy, int newx, int newy)
public void mousePressed(int button, int x, int y)
public void mouseReleased(int button, int x, int y)
public void mouseWheelMoved(int change)

Probably can do something like this
if (!disableMouseKeys) {
public void mousePressed(int button, int x,int y)
}
Found this on Slick2D website (http://slick.ninjacave.com/wiki/index.php?title=Input#Mouse_2)

Places where mouse keys should be disabled: during gameplay (but rellow mouse keys when game paused)
Edit:
Damn, already added LOL

About the gameplay smoothness, I think probably its due to the way this game renders the graphic... I don't think switching to higher precision timer will easily fix that issue maybe because probably due to the update FPS is lower than the render FPS causing these jitter (and I found that this game have many different update() and render() calls on different GameContainer which makes it hard to find which one to modify :? ). I will look again on the code again and see whether I can get the right place to do it or not....

In short, the update FPS can be set to absolute maximum (or set it high enough but will not bring the computer to a drag, 240fps might be good enough i guess) and then set the render FPS to the FPS setting defined in the Options (60 vsync, 120 or 240)

My proposed solution is this (non-gameplay probably doesn't need this, only gameplay since they are really sensitive to timing at milisecond accuracy since it is quite easy to not get 300 at AR>9 maps):
private long nextFrameTime;

public void init (GameContainer gc) throws SlickException{
//do all init logic here

//keep this line below
nextFrameTime=Sys.getTime();
}

//update the backend logic at 240fps
//render part not shown... i have no idea on how to do that for now xD
public void update(GameContainer gc, int delta) throws SlickException {

int count = 0;
while(nextFrameTime < Sys.getTime()) {
update(gc);
nextFrameTime += Sys.getTimerResolution() / 240;
if (++count == 8) {
nextFrameTime = Sys.getTime();
break;
}
}
}

private void update(GameContainer gc) throws SlickException {
// put all game logic here
}
Topic Starter
euphyy_old
Release: v0.7.0
A lot of general enhancements and fixes with this release -- please refer to the release notes for details. A few quick points:
  1. Beatmap cache: Beatmaps are now cached in a database after the application starts. Coupled with some other tweaks, loading times are now drastically lower (ex. loading is about 6x faster on my computer).
  2. Automatic updater: All future releases can be automatically downloaded from within the application.
  3. Bug fixes: Major spinner improvements (fade in effect, support counterclockwise rotation, show RPM for "auto"/"spun-out" mods, remove dependence on FPS); slider calculation fixes; multiple sound effects can now play simultaneously; and many others.
Thanks again for all the support!
xasuma
SPOILER
** Uncaught Exception! **
java.lang.NullPointerException
at itdelatrisu.opsu.db.OsuDB.setStatementFields(OsuDB.java:309)
at itdelatrisu.opsu.db.OsuDB.insert(OsuDB.java:250)
at itdelatrisu.opsu.OsuParser.parseDirectories(OsuParser.java:184)
at itdelatrisu.opsu.OsuParser.parseAllFiles(OsuParser.java:78)
at itdelatrisu.opsu.states.Splash$1.run(Splash.java:106)


Fixed ^

Now it works ;) , and the loading time for songs was much faster.
AstralPhnx
Thank you SO MUCH for a pause button option in the android version this update! Keep it up!
LaughingKing37
I started playing Osu for the past month so I'm fairly new to the Osu community. So why is there a need to make an Osu clone except have it open source? Isn't the main game polished enough that there wouldn't be a need to recreate it?
chong601

LaughingKing37 wrote:

I started playing Osu for the past month so I'm fairly new to the Osu community. So why is there a need to make an Osu clone except have it open source? Isn't the main game polished enough that there wouldn't be a need to recreate it?
As of now, peppy still haven't make osu! source code open for public viewing. IIRC, he did say that it will be released by end of this year.
opsu! is actually a reimplementation of the original osu! game (no osu!devs are involved in this project afaik) and it is mainly contributed by euphyy (itdelatrisu) and hanawanta (fluddokt) and some players submitting bug reports.

Another reason of making clones is because osu! isn't really available other than Windows (although it is supported in Mac and Linux via Wine but heh, not everyone have good experience with those like I can't even make it work without recompiling my kernel :o)

Another reason is because they are just have nothing to do and decided on trying to make their own :)

Examples of the osu! clone available are:
  1. osu!iPhone (currently dead since the dev (nuddles) stopped developing it)
  2. osu!droid (presumably dead since the devs (Pesets and neico) not actuvely maintaining the code and tbh, the game suffers from multiple issues ranging from lack of support for newer versions of .osu format, memory corruption and image corruption)
  3. osu!WP (not sure about the status but probably still active)
  4. osuweb (browser version, not tested yet)
  5. osu!uebu (not released yet, browser version, HTML5 based with WebGL probably still in active development, the dev (Frowned) is working on it, but no ETA on the release date)
  6. Wojtkosu (XNA based, not active i think? the thread is 2 years old since the dev last posted in the forums :? )
Nitrousdragon
euphyy, how do you use a custom skin? I really don't like the preset skin and there is a Skins folder. I'm sure there is a purpose for it. (Is there?)

I put Black 2014 in the folder, but there's no skin option or anything.

EDIT: I fixed it, nvm.
Topic Starter
euphyy_old
Release: v0.8.0
This version includes mostly gameplay-related updates, summarized below:
  1. Replays: There is now support for recording, parsing, and exporting game replays. fluddokt helped fix many of the major problems, but please report any bugs you find. Note that this can play osu! replays (you'll have to do it manually, since there's no UI for it), but osu! cannot play opsu! replays (even though the output format is nearly identical).
  2. Game mods: This update adds the "flashlight" and "autopilot" mods, and fixes "auto" (cursor is now shown) and "hard rock" (hit object coordinates are now flipped).
  3. Other: Implemented follow points; added track previews in the downloads menu; support loading @2x images; and a handful of other bug fixes and tweaks.
As always, thanks for all your feedback!

Note 1: This update includes changes to the score database format, but if all goes well, the database should be altered automatically when opening the new version. Make a backup of your old database if you want.

Note 2 (to peppy): I'm currently using the osu! servers for the track previews -- as I've seen some other sites do -- but let me know if you want me to remove this.


Nitrousdragon wrote:

Sorry, there's still no support for skin switching or skin.ini. x.x

LaughingKing37 wrote:

It's really just for fun, but as chong601 mentioned, opsu! runs on more platforms than osu! and will also work on lower-end computers. There are plenty of other things you can do, too, but you'll have to be creative. (Here's an example.)
xasuma
Wonderful update! I am very happy with the way this is going :)

Two thing I would like to point out:

1. Flashlight does not get any smaller as the combo increases (I think) . I don't know if you intend it that way.
2. The music offset is different for different songs. (I use -100ms or -150ms ) one of those two worked for the songs I played, but I had to change them depeding on the song. Any fix for the offset to just make it automatic would be wonderful. :p

Suggestion:

- In-game custom frame cap (I know its on the .cfg file) :p
- opsu! logo , instead of the default java logo shortcut.
- How to change skin? Make it more obvious :p


Issues:

After update, and restart the game: https://github.com/itdelatrisu/opsu/issues/55
Then this happened https://github.com/itdelatrisu/opsu/issues/56
Then the update got reverted? And it asks me to update many time, feels like its in a loop.
and this https://github.com/itdelatrisu/opsu/issues/57

cheers :D
Topic Starter
euphyy_old

xasuma wrote:

Thanks for the quick feedback! ^.^
  1. Flashlight does get smaller at 100 and 200 combo, as stated on the wiki. I didn't verify if that's correct, but that's what's currently implemented.
  2. The music offset option is really just a bad fix for whatever mysterious problem is causing the inconsistent beatmap offsets. I could never figure out what was wrong...
  3. What do you mean by "custom frame cap"? Like, let the user select any FPS? (That sounds reasonable, as long as I cap it. XD But it wouldn't be as convenient if you wanted to quickly switch between the current preset values.)
  4. Custom app icons aren't possible as long as I'm distributing JARs (and not native executables). I don't plan on changing this at the moment, sorry.
  5. Skin-related updates have been on my to-do list for a long time, but I honestly can't say if/when I'll get to it. I can't bring myself to take the time to figure out what everything in skin.ini does... :P
As for your issues: the updater downloads the new JAR and saves it as a new file -- it doesn't overwrite the old one. I think all of your problems are being caused by you running 0.7.0 instead of 0.8.0 after your database gets updated -- let me know if that resolves everything.
xasuma
custom frame cap: http://puu.sh/gHOds/de9132fd33.png (but in game, so I could type the fps limit)
So, switch between 60fps, 120fps, 240fps, customfps.


And yes, that was the issue!
It's a little un-intuitive that it doesn't overwrite the older version. But anyways, that was it. :)
Bigpet
I like to idle in open-source project chatrooms :D

So is there any official chatroom (preferably IRC) for opsu? If not, I'll be idling in #opsu on freenode by myself in the meantime
rafradek_old
Could you make android version of the game more suitable for mobile? Hit objects are too small on smaller devices, sliding is too sensitive, there are no options, and config files are saved in external storage rather than internal.
ShishanoSakura
I just found this awesome apk for Android so I'm still testing it out but till now it's awesome, haven't seen any bugs really.

Suggestions:
- Sign In option for the game so that your process could be like saved? (I don't know if it's possible already haven't seen it) Because I find that my phone works like a mouse tab on the insane beatmaps.
- Android gameplay bigger, I have a large screen (6.5inch) and it tends to get annoying with the small icons.

I'll report if I find bugs anywhere! :D
Manivela
This is amazing i hope you keep going. Android compatibility is awesome
Newb1et
Awesome Android port! Although is it just me or is the accuracy grading a bit too agressive, having a hard time to get good accuracy from that I've got good accuracy. Also, the new cursor seems to be a bit delayed(probably the reason why accuracy is low). And last note, why aren't you able to use the original osu! skin? Osu!Droid was able to use the old skin. ;)
chong601

Newb1et wrote:

Awesome Android port! Although is it just me or is the accuracy grading a bit too agressive, having a hard time to get good accuracy from that I've got good accuracy. Also, the new cursor seems to be a bit delayed(probably the reason why accuracy is low). And last note, why aren't you able to use the original osu! skin? Osu!Droid was able to use the old skin. ;)
Delayed cursor may be the touchscreen issue, not game issue (since most android phones have input delay on touchscreen)
The reason opsu! can't use osu! skin is because due to peppy copyright on skin elements (only allowed in osu!, requires explicit permission if wanted to use outside or osu!)
Quote from the original thread (under LICENCE box):
All osu! graphic and other game assets are copyright ppy Pty Ltd.

You are granted permission to use the elements contained within this archive as a template for creating your own skins. You can modify these in any way you see fit. Please do not include the resources if you haven't modified them; the defaults will automatically be used in this case.

You are NOT permitted to use these graphics outside of skins and/or beatmaps. This includes using them on other websites, games, products etc.

If you would like to use the resources outside of the scope provided above, please contact me at pe@ppy.sh

One extra thing to add:
opsu-android requires 200 MB of RAM to run (may require up to 300 MB on certain occasions), so phones with less than 1 GB of RAM on device may not work properly (or wouldn't start at all)
jurassicplayer
I found something that feels like a bug with the sliders, but I've only seen it happen on a single map so far (didn't test very many maps). It's like the slider gets "caught" on the end with like an extra beat and so you have to hold it at the end of the slider while the ball seems to spin in place for that beat.

Map in question (Normal):
https://osu.ppy.sh/s/2585

It's fairly close to the beginning (the slider is shaped like an upside down question mark) and should be noticeable by having one of the slider beat stars on the actual end.
chong601

jurassicplayer wrote:

I found something that feels like a bug with the sliders, but I've only seen it happen on a single map so far (didn't test very many maps). It's like the slider gets "caught" on the end with like an extra beat and so you have to hold it at the end of the slider while the ball seems to spin in place for that beat.

Map in question (Normal):
https://osu.ppy.sh/s/2585

It's fairly close to the beginning (the slider is shaped like an upside down question mark) and should be noticeable by having one of the slider beat stars on the actual end.
You mean this slider?
The said slider in osu!:


The same slider in opsu!:


The code of the slider in the .osu file:
248,251,57161,2,2,L|312:251|312:200|248:200|249:91,1,280,2|0
Yeah confirming that some sliders are really funky on opsu! due to incomplete implementation of the sliders (current available sliders are Bezier and CircumscribedCircle, other types of sliders such as catmull and linear sliders aren't available yet)
The slider is actually a Linear slider, which is iirc isn't available and is then fall back to Bezier which destroys it xD

EDIT: You can report this on Github since he mostly active there (or I can help you forward this bug to the issues tracker)
Energy0124
Oh my science! I can't believe that I didn't discover this project until now. I always want to find a open source osu implementation to learn from and I finally find it today! Thank you euphyy for creating such a amazing project! I will definitely try to help if I get some free time! :)
chong601
you know, euphyy's code is so advanced that my lecturer, company supervisor and friends have obtained the latest copy of the source code to investigate the code structure

even if i know programming, his programming skills exceeded my range of understanding xD
Rori Vidi Veni
dfsafsdfsdafsfsdafdafs
chong601
The current commit on GitHub have support for DoubleTime and HalfTime (although incomplete) since using those wiill cause pitch shift
(you need to manually compile those since there's no pre-release versions)
jnmiah
On my android phone, Galaxy s2, Running 4.1.2, it is stuck on "Loading Sounds". It doesn't move at all. Not sure if it is slow, or not responding at all. Using release 0.8.0a.
ccxex29
First.. im using ASUS ZenFone 5...
No issue in performance... stable at 61fps

The issues for me are:
-the menu scroll is so fast when swiping...
-my preferences are not saved
-its too small for phones... if you could make an option for dpi or gui resize.. it would be useful
-the downloads are slow... in Indonesia...

Thanks in advance..
chong601

jnmiah wrote:

On my android phone, Galaxy s2, Running 4.1.2, it is stuck on "Loading Sounds". It doesn't move at all. Not sure if it is slow, or not responding at all. Using release 0.8.0a.
Did you use custom hitsounds?

ccxex29 wrote:

First.. im using ASUS ZenFone 5...
No issue in performance... stable at 61fps

The issues for me are:
-the menu scroll is so fast when swiping...
-my preferences are not saved
-its too small for phones... if you could make an option for dpi or gui resize.. it would be useful
-the downloads are slow... in Indonesia...

Thanks in advance..
currently using Zenfone 4 A4500CG
1. deal with it (the UI isn't polished yet)
2. not quite sure on this (since it works here)
3. set your CS to 0.1 if you can't read small circles in options
4. deal with it (or just copy osu! PC maps to opsu=>Songs folder)
jnmiah
Chong601, I did not use custom hitsounds. I cant boot it at all.
sugarmikuchan
I tried to open opsu! and it came out with this error .__.

Thu May 07 22:28:48 SGT 2015 ERROR:** Uncaught Exception! **
Thu May 07 22:28:48 SGT 2015 ERROR:org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
at org.sqlite.core.NativeDB._open(Native Method)
at org.sqlite.core.DB.open(DB.java:161)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:145)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45)
at org.sqlite.JDBC.createConnection(JDBC.java:114)
at org.sqlite.JDBC.connect(JDBC.java:88)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at itdelatrisu.opsu.db.DBController.createConnection(DBController.java:65)
at itdelatrisu.opsu.db.OsuDB.init(OsuDB.java:74)
at itdelatrisu.opsu.db.DBController.init(DBController.java:46)
at itdelatrisu.opsu.Opsu.main(Opsu.java:138)
chong601

sugarmikuchan wrote:

I tried to open opsu! and it came out with this error .__.

Thu May 07 22:28:48 SGT 2015 ERROR:** Uncaught Exception! **
Thu May 07 22:28:48 SGT 2015 ERROR:org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
at org.sqlite.core.NativeDB._open(Native Method)
at org.sqlite.core.DB.open(DB.java:161)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:145)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45)
at org.sqlite.JDBC.createConnection(JDBC.java:114)
at org.sqlite.JDBC.connect(JDBC.java:88)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at itdelatrisu.opsu.db.DBController.createConnection(DBController.java:65)
at itdelatrisu.opsu.db.OsuDB.init(OsuDB.java:74)
at itdelatrisu.opsu.db.DBController.init(DBController.java:46)
at itdelatrisu.opsu.Opsu.main(Opsu.java:138)
Did you happen to run this game on folders with "!"? (for example like D:\opsu! or C:\osu!)
opsu! doesn't work in directories with an exclaimation mark.
Topic Starter
euphyy_old

chong601 wrote:

Did you happen to run this game on folders with "!"? (for example like D:\opsu! or C:\osu!)
opsu! doesn't work in directories with an exclaimation mark.
...so I realized I was handling that error completely wrong. It actually gets caught as of 50d55d8 (hopefully).

Sorry for being gone for so long -- I haven't had the time to keep up with this project lately. I'll get back to it when I have the chance.
chong601

euphyy wrote:

...so I realized I was handling that error completely wrong. It actually gets caught as of 50d55d8 (hopefully).

Sorry for being gone for so long -- I haven't had the time to keep up with this project lately. I'll get back to it when I have the chance.
at least we know that you are still maintaining it lel
deadrestos
I don´t know how to transfer from osu beatmaps to opsu ... can someone help me ? :o
chong601
just copy the beatmaps to:
Windows: <drive letter>:\path\to\opsu\folder\Songs
Linux: /path/to/opsu/folder/Songs
Android: Internal storage/Songs folder or Internal Storage/opsu/Songs (depend on which opsu-android you use, but either one)
Topic Starter
euphyy_old
Release: v0.9.0
Summary of important changes:
  1. Speed changing: This update implements the "Half Time" and "Double Time" mods, as well as playback speed selection during replays. Note that pitch is shifted with the current implementation; a new music player is in the works.
  2. Back-end updates: There were some major back-end additions, notably hit object stacking and Catmull curves.
  3. Visual improvements: Changed to a cleaner font (Droid Sans Fallback), improved hit animations, and fixed a handful of other issues.
  4. Download servers: Added support for downloading from the osu!Mirror and Hexide servers.
Thanks again for all your support!
Newb1et

euphyy wrote:

Release: v0.9.0
Summary of important changes:
  1. Speed changing: This update implements the "Half Time" and "Double Time" mods, as well as playback speed selection during replays. Note that pitch is shifted with the current implementation; a new music player is in the works.
  2. Back-end updates: There were some major back-end additions, notably hit object stacking and Catmull curves.
  3. Visual improvements: Changed to a cleaner font (Droid Sans Fallback), improved hit animations, and fixed a handful of other issues.
  4. Download servers: Added support for downloading from the osu!Mirror and Hexide servers.
Thanks again for all your support!
Awesome! You back on the project? Love to see this progress more! :D 🙌

Oh, seems like the 0.9.0 update is currently for PC as of right now. Guess I'll wait... 😓
Bigpet
I'm currently exploring to maybe making a platform shim, so that opsu! can be more easily ported to other platforms (because, lets be honest, there's no one single framework that can truly handle all platforms with reasonable trade-offs).

Anyway during that exploration I saw that a bunch of the Slick2D files seem to be patched, is there a brief explanation as to what was changed?
(I know that I can always just do a diff, but asking doesn't hurt and I can do other things in the meantime :P )

Also it seems to me that using Gradle as a build system is lot easier for the purposes of creating multiple versions and swapping out parts of the source on different platforms. But I'll worry about that a lot later when it becomes relevant, I just want to test the waters on how attached you are to Maven as the build system ;) .
chong601

Bigpet wrote:

I'm currently exploring to maybe making a platform shim, so that opsu! can be more easily ported to other platforms (because, lets be honest, there's no one single framework that can truly handle all platforms with reasonable trade-offs).
kinda agree on that, but i don't think we can deal with multiple different platforms with one codebase (monkeypatching those will be ugly, like REALLY ugly in my sense). cmiiw though since i don't really involved with multiplatform software development before....

Bigpet wrote:

Anyway during that exploration I saw that a bunch of the Slick2D files seem to be patched, is there a brief explanation as to what was changed?
(I know that I can always just do a diff, but asking doesn't hurt and I can do other things in the meantime :P )
Slick patches probably because of recent skin select implementation (vs single selection on previous) and changes on hit lighting and scores (300,100,50,miss)

Bigpet wrote:

Also it seems to me that using Gradle as a build system is lot easier for the purposes of creating multiple versions and swapping out parts of the source on different platforms. But I'll worry about that a lot later when it becomes relevant, I just want to test the waters on how attached you are to Maven as the build system ;) .
Gradle build... well not a big issue for me but i actually quite love Maven because i can do shading (put all .jars in one .jar file).
not quite sure if Gradle can do the same or not :|

but if GStreamer build is coming, that will be a bad news for opsu-android since i don't think there's a Android build for that...
Topic Starter
euphyy_old

Bigpet wrote:

Sure, that'd be fantastic! (Though it'd be even better if you finished the sliders first... XD) Fill me in with more details if you decide to follow through with this!

A quick summary of the Slick2D changes:
  1. GameContainer: very minor changes in error logging.
  2. Image: added 'getAlphaAt()' method, added 'drawCentered()' method, changed some coordinate operations from integer to float.
  3. TextField: edited 'keyPressed()' method to make text input more like osu! (e.g. no ctrl+z undo, no cursor shifting with arrow keys, added ctrl+backspace for word-backspace).
  4. Everything audio-related: added MP3 streaming support.
I haven't used Gradle except for building APKs, and those weren't very pleasant experiences (very slow builds, builds always taking up all 4 cores...). I think Maven's much nicer, but feel free to convince me otherwise. xP
show more
Please sign in to reply.

New reply