Release Opsu!


still my most played game I think. Since yesterday the game graces me with a notification that there's an update available. Do you feel like updating it ptitseb? :D
I'll take a look at updating it (hopefully, there is not much OpenGL 2+ only code added).
[doublepost=1487282933,1487264801][/doublepost]@Eight Bit : It seems the new version of opsu doesn't like the old database. It works fine if you wipe the appdata then. Do you think there is a conversion tool somewhere?
 
Been playing this quite a bit again lately, so I decided to redo my optimized skin. With pretty good results.
It's based on the 0.15.0 default skin which in itself has some improvements over the older default graphics.

I tried to achieve a good balance between looks and performance.
Some effects have been removed. Alpha transparency is gone, but with some editing in place to make still it look passable.
I've also removed the health bar, as it was riddled with fancy animations while not actually critical to the gameplay itself (you'll notice yourself when you're too bad for a map).
Only a few graphics have been resized to a smaller resolution this time.

Almost always 30 fps gameplay on a CC Pandora (sliders are heavy to render, so slider heavy maps still drop a bit), 30 fps song selection screen (I highly recommend scaling down the background images in your Songs folder btw).
It's been optimized around using the default playfield which is just black now, but it still looks fine with the beatmap backgrounds (beware of potential frame drops then, though).

Recommend settings:
Frame Limiter: 30 fps
Background Dim: 0%
Force Default Playfield: Yes
Ignore All Beatmap Skins: Yes
Snaking Sliders: No
Show Hit Lighting: No
Show Combo Bursts: No
Show Perfect Hits: Yes
Show Hit Error Bar: No
Disable Cursor: Yes (unless you hook up a mouse, of course, but less to render)

The folder "pandora_optimized" goes into "appdata/opsu/Skins".


@ptitSeb: Any news about an update? I know you're now busy with your fancy Pyra prototype, but still. :)
I didn't run into any issues running the current release in the folder with the database created by the jar in the PND, btw. But that was just on my PC.
 

Attachments

  • pandora_optimized.zip
    3.6 MB · Views: 342
Last edited:
Been playing this quite a bit again lately, so I decided to redo my optimized skin. With pretty good results.
It's based on the 0.15.0 default skin which in itself has some improvements over the older default graphics.

I tried to achieve a good balance between looks and performance.
Some effects have been removed. Alpha transparency is gone, but with some editing in place to make still it look passable.
I've also removed the health bar, as it was riddled with fancy animations while not actually critical to the gameplay itself (you'll notice yourself when you're too bad for a map).
Only a few graphics have been resized to a smaller resolution this time.

Almost always 30 fps gameplay on a CC Pandora (sliders are heavy to render, so slider heavy maps still drop a bit), 30 fps song selection screen (I highly recommend scaling down the background images in your Songs folder btw).
It's been optimized around using the default playfield which is just black now, but it still looks fine with the beatmap backgrounds (beware of potential frame drops then, though).

Recommend settings:
Frame Limiter: 30 fps
Background Dim: 0%
Force Default Playfield: Yes
Ignore All Beatmap Skins: Yes
Snaking Sliders: No
Show Hit Lighting: No
Show Combo Bursts: No
Show Perfect Hits: Yes
Show Hit Error Bar: No
Disable Cursor: Yes (unless you hook up a mouse, of course, but less to render)

The folder "pandora_optimized" goes into "appdata/opsu/Skins".


@ptitSeb: Any news about an update? I know you're now busy with your fancy Pyra prototype, but still. :)
I didn't run into any issues running the current release in the folder with the database created by the jar in the PND, btw. But that was just on my PC.

Oh, Nice! I will try this out
I play opsu quite a lot. Have you set a music delay? I have mine set at 95ms and it seems reasonably good.
Any favorite songs/beatmaps?
 
In the mean time, I have updated the PND on the repo. The build is quite old in fact (from february), but I waited for an answer for the database conversion, then I forgot about this one...

So here is a the new version, but you will probably have to wipe you song database if you are upgrading, as the format has changed.

build 07
-----------

  • Using 0.15.0 sources
  • Updated libs
  • Song database as changed, you will need to wipe it if upgrading
 
Thanks for an updated build! As actually feared, some of the fancied up stuff costs us some frames, but gameplay is largely unaffected, so it's okay.
My database was just updated automatically, with old scores intact, btw.

There are some issues with this build however:
It doesn't quit properly. Instead it just kinda freezes and has then to be killed.

The song end scores screen throws an exception:
Code:
Sat Jun 24 17:43:15 CEST 2017 ERROR:** Uncaught Exception! **
Sat Jun 24 17:43:15 CEST 2017 ERROR:Java heap space
java.lang.OutOfMemoryError: Java heap space
    at org.tukaani.xz.lz.BT4.<init>(Unknown Source)
    at org.tukaani.xz.lz.LZEncoder.getInstance(Unknown Source)
    at org.tukaani.xz.lzma.LZMAEncoderNormal.<init>(Unknown Source)
    at org.tukaani.xz.lzma.LZMAEncoder.getInstance(Unknown Source)
    at org.tukaani.xz.LZMAOutputStream.<init>(Unknown Source)
    at org.tukaani.xz.LZMAOutputStream.<init>(Unknown Source)
    at itdelatrisu.opsu.replay.Replay$1.run(Replay.java:345)
I'm running with a 1 GB swap file, so I'd be surprised if I really ran out of memory. Not sure about Java stuff, but is the heap limited to some not-ideal value?
I had a few instances where it didn't throw. The frame rate on that screen is pretty low despite nothing happening there after the graph was drawn (I can see the graph rendering being pretty heavy though).

The background texture rendering behaves differently. The 2x2 black one from my latest skin gets scaled bilinear-ly to some black to green color gradient. This can be avoided by making it 4x4 pixels instead, but I get the feeling that the scaling there might wasted frame time.

I play opsu quite a lot. Have you set a music delay? I have mine set at 95ms and it seems reasonably good.
Any favorite songs/beatmaps?
I've been playing with the default -75 ms, which was fine for the most part, but it still seemed to be a bit uneven. I put some actual thought into it now and put it at -66 ms, which feels pretty good on my desktop and Pandora when locked to 30 fps. Managed a few SS with that. I think a multiple of the actual frame delay (33 ms in case of 30 fps) is advisable.

When it comes to songs... I don't have any particular favorites (newest stuff pretty much gets played most at the time :V ), but rather have a pretty large collection (760 right now). With me being the exact target audience of the community's mapping efforts, I can enjoy most anime-related stuff.
 
Yeah, of course something doesn't work :(

New build on the repo.
I have updated the sources, so the jar is now from today and not from end of february. Hopefully this fixes the issues you had.
I have tried just a song, didn't had issue (but I sooo suck at this game).

build 08
-----------

  • Updated to latest sources
 
The issues remain in the latest build. Maybe it's because of the CC Pandora, weirdness in drivers or my configuration, iunno. I did try wiping appdata, but that didn't help.

I'd like to have a go at this myself and maybe also try to optimize it a bit more (I actually don't really know Java, so this will be interesting I guess). Could you share the modified source?


Edit:
Fixed ranking screen issue on CC Pandoras and added some optimizations already. This actually going pretty well.
 
Last edited:
Sure @elvissteinjr .

Here is the diff against latest source (well, yesterday sources) from the github.

Also, you need maeven to build. It can be downloaded from apache. Just add the bin folder to you path and invoque
Code:
mvn
to see the available targets.
use
Code:
mvn compile
to build, or
Code:
mvn deploy
to build the jar file (that will be in target).
Note that compiling or preparing the jar will try to launch the game, in some way (so you need to have DISPLAY=:0 if you are working on SSH) and will fail anyway because the natives libs will be a x86 version. The pnd runscript goes around that, so just put the "opsu-0.15.0.jar" in appdata/opsu for easy testing, using the shortcut in your menu.

Good luck with java!
 

Attachments

  • opsu_pandora.tar.gz
    2.1 KB · Views: 268
I'm back. And to be honest, I'm pretty happy with the results. So here's what's in this patch:
Code:
-Fixed freezing on exit
-Fixed restarting not working. Opsu! now writes a .opsu_restart file into appdata and the runscript starts the game again if it exists
-Fixed out of memory exception on results screen on CC Pandoras
-Fixed main menu buttons not responding to clicks
-Reduced resolution of the results screen performance graph to 0.1x
-Rewrote slider rendering to be a lot faster
-Added the following options to allow balancing looks and performance better:
 "Texture filter"
 "Show/Hide Game animations"
 "Show/Hide Healthbar"
 "Show/Hide HUD"
-Re-addded 60 fps frame-limit option
-Added port authors to the about author string
-Disabled listing of the follow options since they're unsupported:
 "Disable Updates"
 "Enable Videos"
 "Experimental Sliders"
-Removed alpha transparency on the options overlay

Also included in the archive is a new runscript.sh with the restart fix and filename set to 0.16.0 (which got released today) and an updated version of the previously updated skin.
The skin has small improvements and healthbar since it can be disabled as option now. I'd like this one to replace the older optimized skins that were distributed in the PND. The runscript has been modified for that already.

Regarding the out of memory fix, it turns out the Java VM sets its heap size based on the physical memory, ignoring any active swap. 160 MB max heap turned out to be sufficient in testing, so I set it to that. Regardless of that, the results screen runs out of physical memory if it's running without any swap on a CC Pandora.

Exit freezing fix is a hack technically, but placed after the cleanup code, so I think it's fine.

It's possible to reach 50 - 60 fps during gameplay on a CC Pandora if you're desperate and turn everything off (this is probably really decent on a 1 GHz one now), so I added 60 fps back as a frame limiter option.


The diff is against the current git master branch, so it includes the older port changes as well. It's actually my first time making one, but reapplying worked for me, so I hope it works for everyone else.
 

Attachments

  • opsu_pandora_elv.zip
    3.5 MB · Views: 300
The version is on the repo now.

build 09
-----------

  • Using 0.16.0 sources
  • lots of changes for Pandora from @elvissteinjr:
    • Fixed freezing on exit
    • Fixed restarting not working. Opsu! now writes a .opsu_restart file into appdata and the runscript starts the game again if it exists
    • Fixed out of memory exception on results screen on CC Pandoras
    • Fixed main menu buttons not responding to clicks
    • Reduced resolution of the results screen performance graph to 0.1x
    • Rewrote slider rendering to be a lot faster
    • Added the following options to allow balancing looks and performance better:
    • "Texture filter"
    • "Show/Hide Game animations"
    • "Show/Hide Healthbar"
    • "Show/Hide HUD"
    • Re-addded 60 fps frame-limit option
    • Added port authors to the about author string
    • Disabled listing of the follow options since they're unsupported:
    • "Disable Updates"
    • "Enable Videos"
    • "Experimental Sliders"
    • Removed alpha transparency on the options overlay
 
Great job on this, I do how ever get white boxes appearing behind snaking sliders. I tried another video driver version but it didn't help.
Also it looks like the scaling or anti alias changed, text seems less readable, or maybe I'm just getting old... ;)
Any chance for a little more opsu love?
 
Scaling shouldn't have changed. I'm not seeing it and I didn't touch anything there, I swear!
However, if the texture filter is set to nearest neighbor, the text can suffer quite a bit. Pretty much nothing is is rendered at 100% scale in this game at Pandora's resolution.

Regarding the white boxes, I'm getting those too. They don't appear when game animations are disabled, so that narrows the code responsible for it quite a bit. I only did limited testing on the Pandora, so that went past me, sorry. I don't get them on PC, though. I'm on it.


I'm actually suddenly getting out of memory exceptions again, uh... this may be related to some combination of options (I wiped my appdata for testing now). Anyways, for the next release, I'd suggest to not cut it close and just set the max heap to 192 MB instead, since that's what Rebirth/GHz models default to.

Would be too simple to actually release something without issues. I wanted to avoid bothering ptitSeb every second day or so. ;)

Edit:
Here's a new patch.
Code:
-Fixed slider blending glitches when game animations are enabled
-Removed some redundant OpenGL calls in the fast peppy slider rendering code

Diff is to the current git, as before. Runscript has the heap size increased once again. I didn't run into any issues, but knowing me there might still be some, who knows.

@ptitSeb Repackage when you feel like it. As I wrote before, I actually don't want to annoy with this so often :V
(Do mention notifications work on edits? I sure hope they do.)
Edit 2: Looks like they don't and that's fine! I saw a few things I want to fix before pushing an update and I'll probably upload a jar too for testing first, so don't update the PND yet actually.
 

Attachments

  • opsu_pandora_elv_2.zip
    12.1 KB · Views: 293
Last edited:
I'm actually suddenly getting out of memory exceptions again, uh... this may be related to some combination of options (I wiped my appdata for testing now). Anyways, for the next release, I'd suggest to not cut it close and just set the max heap to 192 MB instead, since that's what Rebirth/GHz models default to.
Are these the sudden freezes that lock up my Pandora completely and need a hard reset to recover?
Edit:
Here's a new patch.
Code:
-Fixed slider blending glitches when game animations are enabled
-Removed some redundant OpenGL calls in the fast peppy slider rendering code
Diff is to the current git, as before. Runscript has the heap size increased once again. I didn't run into any issues, but knowing me there might still be some, who knows.

@ptitSeb Repackage when you feel like it. As I wrote before, I actually don't want to annoy with this so often :V
(Do mention notifications work on edits? I sure hope they do.)

Oh, this is great, almost missed that edit there :D
I just scored a perfect A on Silent Siren - Cherry Bomb (Normal) Any chance for C4a Implementation? *Grin* :D
 
Are these the sudden freezes that lock up my Pandora completely and need a hard reset to recover?
I'd love to say no, but I wouldn't rule it out actually. Uncaught exceptions spawn an error dialog that is supposed to be in front of the game window. They take the focus though and for me it's possible to kinda have them fight with the 3D driver to bring their content to the screen. But I can imagine this wouldn't work if you were on a driver version that doesn't do windowed (opsu seems to force windowed, maybe I should look into that too). Regardless, holding the Pandora button to kill it /should/ always work.
In rare cases it's even possible to just continue playing after the exception.

Or maybe it's something entirely different. "appdata/opsu/.opsu.log" might be worth checking if it happens again.

I just scored a perfect A on Silent Siren - Cherry Bomb (Normal) Any chance for C4a Implementation?
Perfect A? The S is waiting for you. Get a few less 50s. ;)
I don't think c4a would be an issue to code, but rather prove itself a bit difficult in how it's set up currently. From what I see, every separate level score for a game is a new entry on the c4a page. Now imagine that for all ranked osu maps... (general listing stops after 4961, but that's only the last 3 years of maps).
There also doesn't seem to be a lot of players to compete against if I'm honest.

Still hoping to get the official open source osu! client an official port on the Pyra so it can have access to the online ranking there. But that's still far off. The client itself I mean, not the Pyra.
 
I'm just an amateur and not 15 anymore :)
You're probably right in regards to the c4a, I proposed it tongue in cheek though. ;) It would be fun, a Pandora only league. But yes, then probably more people would have to play this. Maybe I'll make a Pandora touch screen opsu promotion video :D

I appreciate all your and ptitseb's efforts. <3
 
Back
Top