Git Product home page Git Product logo

opsu's People

Contributors

azhao12345 avatar bhampl avatar bigpet avatar darktigrus avatar haringat avatar iceblade112 avatar itdelatrisu avatar lucki avatar lyonlancer5 avatar mad-s avatar pizzalovers007 avatar scoreunder avatar szunti avatar tillerino avatar tpenguinltg avatar yugecin 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  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

opsu's Issues

Game.update() failure.

Version: 0.7.0
Build date: 2015-03-19 08:44
Stack trace:

org.newdawn.slick.SlickException: Game.update() failure.
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:708)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:165)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
    at itdelatrisu.opsu.objects.curves.LinearBezier.<init>(LinearBezier.java:141)
    at itdelatrisu.opsu.objects.Slider.<init>(Slider.java:141)
    at itdelatrisu.opsu.states.Game.enter(Game.java:756)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    ... 3 more

** Uncaught Exception! **

Version: 0.7.0
Build date: 2015-03-08 21:49
Error: ** Uncaught Exception! **
Stack trace:

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)

Failed to load file '/preview/163126.mp3'.

Version: 0.8.0
Build date: 2015-03-20 04:45
OS: Linux (amd64)
JRE: 1.7.0_75
Error: Failed to load file '/preview/163126.mp3'.
Stack trace:

java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at itdelatrisu.opsu.audio.MultiClip.getClip(MultiClip.java:164)
    at itdelatrisu.opsu.audio.MultiClip.<init>(MultiClip.java:94)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:118)
    at itdelatrisu.opsu.audio.SoundController.playTrack(SoundController.java:336)
    at itdelatrisu.opsu.states.DownloadsMenu$2.run(DownloadsMenu.java:488)

Save beatmaps/config etc. XDG-conform

Currently all is stored in the working directory.

"$XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used. "

"$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used."

Pls read this carefully:
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

[enhancement] Reverse the sliderball values rather than turning the ball direction

On sliders with reverse, the sliderball is set to turn 180 degrees when they return.
On the opsu! implementation:
Before reverse:
b0=>b1=>b2...=>bX where X is the largest value of the sliderb* number.
After reverse
But when it reverses, it uses the bX<=...b2<=b1<=b0 and the ball is turned back to the direction of the starting position.

The original osu! implementation uses this direction:
Before reverse:
b0=>b1=>b2...=>bX
After reverse:
b0<=b1<=b2...<=bX

Error while creating game container.

Version: 0.7.0
Build date: 2015-03-09 00:40
Error: Error while creating game container.
Stack trace:

org.newdawn.slick.SlickException: Failed to initialise the LWJGL display
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:378)
    at itdelatrisu.opsu.Container.start(Container.java:64)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:165)

Failed to load file '/preview/278395.mp3'.

Version: 0.8.0
Build date: 2015-03-20 04:45
OS: Linux (amd64)
JRE: 1.7.0_75
Error: Failed to load file '/preview/278395.mp3'.
Stack trace:

java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at itdelatrisu.opsu.audio.MultiClip.getClip(MultiClip.java:164)
    at itdelatrisu.opsu.audio.MultiClip.<init>(MultiClip.java:94)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:118)
    at itdelatrisu.opsu.audio.SoundController.playTrack(SoundController.java:336)
    at itdelatrisu.opsu.states.DownloadsMenu$2.run(DownloadsMenu.java:488)

** Uncaught Exception! **

Version: 0.7.0
Build date: 2015-03-09 00:40
Error: ** Uncaught Exception! **
Stack trace:

java.lang.NullPointerException
    at itdelatrisu.opsu.db.ScoreDB.closeConnection(ScoreDB.java:286)
    at itdelatrisu.opsu.db.DBController.closeConnections(DBController.java:55)
    at itdelatrisu.opsu.Opsu.close(Opsu.java:227)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)

Visible Cursor

When a beatmap is loading after you click on it in the song menu, the mouse arrow becomes visible and stays visible until it is moved out of the window and back in.
Version: 0.7.0
Affects: OSX 10.10 + jdk1.8.0_31/jdk1.7.0_75

Unable to run 0.6.0

Sun Feb 22 18:10:07 AEDT 2015 ERROR:Could not connect to score database.
Sun Feb 22 18:10:07 AEDT 2015 ERROR:Error opening connection
java.sql.SQLException: Error opening connection
at org.sqlite.core.CoreConnection.open(CoreConnection.java:140)
at org.sqlite.core.CoreConnection.(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.(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.ScoreDB.init(ScoreDB.java:66)
at itdelatrisu.opsu.Opsu.main(Opsu.java:136)
Caused by: java.lang.NullPointerException
at org.sqlite.SQLiteJDBCLoader.extractAndLoadLibraryFile(SQLiteJDBCLoader.java:165)
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:249)
at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65)
at org.sqlite.core.NativeDB.load(NativeDB.java:53)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:136)
... 10 more
Sun Feb 22 18:10:15 AEDT 2015 ERROR:** Uncaught Exception! **
Sun Feb 22 18:10:15 AEDT 2015 ERROR:null
java.lang.NullPointerException
at itdelatrisu.opsu.ScoreDB.createDatabase(ScoreDB.java:107)
at itdelatrisu.opsu.ScoreDB.init(ScoreDB.java:73)
at itdelatrisu.opsu.Opsu.main(Opsu.java:136)

General improvements to opsu! to match upstream game (osu!)

I have assigned myself to this issue (no ETA on when it can be done for now)
Checklist:

  • Split updateAndRender to use org.lwjgl.Display.update() and org.lwjgl.Display.sync(FPS) to ensure use of offscreen buffer to remove dependency of high fps (superseded from #40) (UPDATE: game choppy has been fixed, marking this as completed for now, but the development is still underway)
  • Attempt to match the gameplay logic with osu! as closely as possible
  • Fix scoring issue with opsu! displaying more score than osu! (screenshots will be added later for comparison)
  • Remove dependency to FPS completely for all animations in opsu! (related to checklist 1)
  • Allow usage of skin.ini to allow more skin customizations (focuses more on skin versions, currently in progress)

Unrelated to osu! features
Package Java Runtime Environment with opsu! to allow running on machines without JRE (scrapped because of non-portability issues, requiring three separate builds)

Any other osu! related things (that I can't think of for now) that is missing in opsu! , please post here! (I will try to make it as long I have the time and ability to do it, currently getting used to Maven goals and LWJGL APIs)

Things that I will not do (due to certain reasons)

  • Online capability

Things that I will not do (because of ability issues)

  • Implement DirectX (sounds like a herculean task for a non-Windows runtime)

@itdelatrisu: can you put me to the assignee and (optional) set milestone to 1.0 maybe?

** Uncaught Exception! ** when running "mvn package" on OSX

Version: 0.9.0
Build date: 2015-06-03 19:54
OS: Mac OS X (x86_64)
JRE: 1.8.0_31
Error: ** Uncaught Exception! **
Stack trace:

java.lang.UnsatisfiedLinkError: Can't load library: /Users/jyip/dev/opsu/./target/natives/liblwjgl.dylib
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1083)
    at org.lwjgl.Sys$1.run(Sys.java:70)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
    at org.lwjgl.Sys.loadLibrary(Sys.java:95)
    at org.lwjgl.Sys.<clinit>(Sys.java:112)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
    at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:161)

Game.render() failure.

(Was updating the map database after downloading about 6 maps in a row)

Version: 0.8.0
Build date: 2015-03-20 04:45
OS: Windows 8.1 (amd64)
JRE: 1.8.0_31
Stack trace:

org.newdawn.slick.SlickException: Game.render() failure.
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:730)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)
Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at itdelatrisu.opsu.downloads.DownloadList.getNode(DownloadList.java:61)
    at itdelatrisu.opsu.states.DownloadsMenu.render(DownloadsMenu.java:303)
    at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:199)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:727)
    ... 3 more

[Suggestion] Fade game objects in and out

Figuring out where everything goes is a pain when they appear just a second (or so) before you have to click the objects.
You (or someone else) should try to make objects fade in and out.

[question] Some questions about skinning

I'm going to make a tutorial for converting skins from osu to opsu and making opsu-specific elements, and I have some questions:

  1. I noticed that the logo is skinnable. Do you mind if skin makers change it?
  2. Is deleting the META-INF necessary? I know it varies between applications.
  3. Is there going to be a major skin breakage in the recent future? I plan to keep the tutorial updated, but there's no point in making it now if it won't be valid in a week.
  4. Does opsu load SD images when it can't find an HD image and you set "Load HD images" to Yes?
  5. Any requests to skinners/users using custom skins?

Could not play track

I've a problem with this Beatmap, all others seems fine so far, or I haven't found one with similar error.
When clicking on it, a error-window pops in front containing this:

Could not play track 'Nightcore - Where Is The Love.mp3'.
java.lang.RuntimeException: Resource not found: /home/lucki/.local/share/opsu/Songs/19882 Baracuda - Where Is The Love (Nightcore Mix)/Nightcore - Where Is The Love.mp3
    at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
    at org.newdawn.slick.openal.OpenALStreamPlayer.initStreams(OpenALStreamPlayer.java:149)
    at org.newdawn.slick.openal.OpenALStreamPlayer.play(OpenALStreamPlayer.java:196)
    at org.newdawn.slick.openal.StreamSound.playAsMusic(StreamSound.java:46)
    at org.newdawn.slick.Music.startMusic(Music.java:314)
    at org.newdawn.slick.Music.loop(Music.java:291)
    at org.newdawn.slick.Music.loop(Music.java:264)
    at itdelatrisu.opsu.audio.MusicController.playAt(MusicController.java:136)
    at itdelatrisu.opsu.audio.MusicController.loadTrack(MusicController.java:119)
    at itdelatrisu.opsu.audio.MusicController.access$000(MusicController.java:42)
    at itdelatrisu.opsu.audio.MusicController$1.run(MusicController.java:86)
Sat Mar 07 13:37:32 CET 2015 WARN:OpenALStreamPlayer: setPosition: failed to skip.

Edit: Holding F2 gives me a second and third Song with error:

Could not play track 'Electric Six - Gay Bar.mp3'.
java.lang.RuntimeException: Resource not found: /home/lucki/.local/share/opsu/Songs/9550 Electric Six - Gay Bar/Electric Six - Gay Bar.mp3
    at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
    at org.newdawn.slick.openal.OpenALStreamPlayer.initStreams(OpenALStreamPlayer.java:149)
    at org.newdawn.slick.openal.OpenALStreamPlayer.play(OpenALStreamPlayer.java:196)
    at org.newdawn.slick.openal.StreamSound.playAsMusic(StreamSound.java:46)
    at org.newdawn.slick.Music.startMusic(Music.java:314)
    at org.newdawn.slick.Music.loop(Music.java:291)
    at org.newdawn.slick.Music.loop(Music.java:264)
    at itdelatrisu.opsu.audio.MusicController.playAt(MusicController.java:136)
    at itdelatrisu.opsu.audio.MusicController.loadTrack(MusicController.java:119)
    at itdelatrisu.opsu.audio.MusicController.access$000(MusicController.java:42)
    at itdelatrisu.opsu.audio.MusicController$1.run(MusicController.java:86)

Sat Mar 07 13:39:23 CET 2015 ERROR:Input does not appear to be an Ogg bitstream.
Sat Mar 07 13:39:23 CET 2015 ERROR:Could not play track 'track10.ogg'.
Sat Mar 07 13:39:23 CET 2015 ERROR:null
Could not play track 'track10.ogg'.
java.lang.NullPointerException
    at java.lang.System.arraycopy(Native Method)
    at com.jcraft.jogg.SyncState.buffer(SyncState.java:66)
    at org.newdawn.slick.openal.OggInputStream.getPageAndPacket(OggInputStream.java:145)
    at org.newdawn.slick.openal.OggInputStream.readPCM(OggInputStream.java:294)
    at org.newdawn.slick.openal.OggInputStream.read(OggInputStream.java:446)
    at org.newdawn.slick.openal.OggInputStream.read(OggInputStream.java:475)
    at org.newdawn.slick.openal.OggInputStream.read(OggInputStream.java:498)
    at org.newdawn.slick.openal.OpenALStreamPlayer.stream(OpenALStreamPlayer.java:276)
    at org.newdawn.slick.openal.OpenALStreamPlayer.startPlayback(OpenALStreamPlayer.java:364)
    at org.newdawn.slick.openal.OpenALStreamPlayer.play(OpenALStreamPlayer.java:202)
    at org.newdawn.slick.openal.StreamSound.playAsMusic(StreamSound.java:46)
    at org.newdawn.slick.Music.startMusic(Music.java:314)
    at org.newdawn.slick.Music.loop(Music.java:291)
    at org.newdawn.slick.Music.loop(Music.java:264)
    at itdelatrisu.opsu.audio.MusicController.playAt(MusicController.java:136)
    at itdelatrisu.opsu.audio.MusicController.loadTrack(MusicController.java:119)
    at itdelatrisu.opsu.audio.MusicController.access$000(MusicController.java:42)
    at itdelatrisu.opsu.audio.MusicController$1.run(MusicController.java:86)

Database Error

Whenever i try to start opsu! i get an uncaught sql-exception of this or a similar kind:
Sun Apr 12 21:22:27 CEST 2015 ERROR:** Uncaught Exception! **
Sun Apr 12 21:22:27 CEST 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.(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.(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)

I reinstalled java allready and got no other sql-application running whatsoever. I didn't look at the sourcecode, but from the looks the library for sqlite is broken or plainly not compatible on my end...

Can't place jar inside a folder with ! character at the end

Example: e:\games\opsu!\

If you do that you get this in log when trying to start opsu!:
Sat Jul 19 18:59:38 GMT+07:00 2014 ERROR:Unable to determine Slick build number
Sat Jul 19 18:59:38 GMT+07:00 2014 ERROR:Resource not found: icon16.png
java.lang.RuntimeException: Resource not found: icon16.png
at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
at org.newdawn.slick.AppGameContainer.setIcons(AppGameContainer.java:527)
at itdelatrisu.opsu.Opsu.main(Opsu.java:147)
Sat Jul 19 18:59:38 GMT+07:00 2014 ERROR:Error while creating game container.
Sat Jul 19 18:59:38 GMT+07:00 2014 ERROR:Failed to set the icon
org.newdawn.slick.SlickException: Failed to set the icon
at org.newdawn.slick.AppGameContainer.setIcons(AppGameContainer.java:530)
at itdelatrisu.opsu.Opsu.main(Opsu.java:147)

Intermittant visual jitter during gameplay

During a play, the graphics jitters for a short while (about 5-10 seconds) and then it smooths out.
The FPS value did not drop during the jitter.
It seems to be happening before a slider or a very dense streams (>150 bpm)

File not found: 'virtual'

The latest commit (4eaf0b6) have the following errors in opsu!.log:

    Fri Apr 10 09:20:22 SGT 2015 ERROR:File not found: 'virtual'
    Fri Apr 10 09:20:22 SGT 2015 ERROR:File not found: 'virtual'
    Fri Apr 10 09:20:22 SGT 2015 ERROR:File not found: 'virtual'
    Fri Apr 10 09:21:15 SGT 2015 ERROR:File not found: 'virtual'
    Fri Apr 10 09:21:15 SGT 2015 ERROR:File not found: 'virtual'

This happens when loading maps from my osu! folder (contains ~30k of maps)

** Uncaught Exception! **

Version: 0.8.0
Build date: 2015-03-20 04:45
OS: Windows 7 (amd64)
JRE: 1.8.0_45
Error: ** Uncaught Exception! **
Stack trace:

java.lang.ArrayIndexOutOfBoundsException: 10
    at org.newdawn.slick.Input.poll(Input.java:1314)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:680)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)

Game.update() failure.

Version: 0.7.0
Build date: 2015-03-09 00:40
Stack trace:

org.newdawn.slick.SlickException: Game.update() failure.
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:708)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:165)
Caused by: java.lang.NullPointerException
    at itdelatrisu.opsu.db.ScoreDB.getMapSetScores(ScoreDB.java:241)
    at itdelatrisu.opsu.states.SongMenu.setFocus(SongMenu.java:1177)
    at itdelatrisu.opsu.states.SongMenu.enter(SongMenu.java:923)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    ... 3 more

Adding ikvm compatibility

I think it would be nice to add IKVM compatibility, this would allow opsu to run on more systems (like Windows RT). Although this may fail as opsu requires OpenGL, right?

Launching on mac, path errors

localhost:~ User$ java /Users/User/opsu-0.3.2.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: /Users/User/opsu-0/3/2/jar
Caused by: java.lang.ClassNotFoundException: .Users.User.opsu-0.3.2.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

I think this may be an error because of the / that are used instead of \ on *NIX systems.

UnsatisfiedLinkError with SQLite on ArchLinux

Here is what I get on ArchLinux with sqlite 3.8.8 (tried 3.8.7 as well, same error):

** Uncaught Exception! **
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(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at itdelatrisu.opsu.ScoreDB.init(ScoreDB.java:63)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:145)

I tried installing some "javasqlite" package, as well as switching to java 8 - with no effect.

Stuttering while switching from 2x to .5x Playback rate

I just downloaded the 0.9.0 build to see how the playback rate changes are looking and I've come across some stuttering when changing from 2x to .5 rate.
I tried it out with every frame limiter, with Auto mod and own replays, suttering in every case.
Cannot surely tell if it's just a problem on my end but I just wanted to let you know. It's nothing too bad I assume, it's just something I noticed.

Also, a short Video to demonstrate the issue : https://youtu.be/nQbPZMsfcv4

Song keeps repeating itself on main menu

As the title explains, if the song ended, instead of playing the next random song, it just repeats the same song over and over again.

Just found this from fluddokt's opsu-android but i think it also happens at opsu! as well (since it have almost the same code).

Will update after i have access to my laptop to double confirm this.

Ability to disable self-update

I don't know, how other projects handle this, but as I have this packaged (opsu and opsu-git), the game loads itself in the working-directory, which isn't useful at all. (restart spams the working dir, often your home. The next manual start loads the old version from the system.)

First a switch like the XDG-switch came into my mind, but maybe there's another better way I'm not aware of.

opsu directly fails the fifth simultanous beatmap download.

Like the title said the fifth simultanous beatmap download I'm trying to create fails instantly. No waiting list, no timeout error, nothing, just fails instantly.

opsu 7.0, java 1.7.0_76 (Oracle JRE, not openjdk), Lubuntu 14.04

Screenshot here.
screenshot_20150312_224043

After one of the downloads complete (that means it drops to 3 simultanous downloads), I can create another download that works again.

Anything that causes this?

[feature request] Some gameplay-related tweaks

For now on all opsu! variants, whenever a song reach the breaks, the healthbar, combo and the scores (300, 100, 50, miss, geki, katu) are hidden immediately.

My proposed idea is only hide the combo numbers and healthbar but keep other remaining ones as is (let them fade itself)

Also, if possible, put the notes in front of the spinner (since new osu! skins with versions 2.0+ have notes in front of the spinner even if the spinner is yet to complete)

And i also notice something: All 300, 100, 50, miss, geki and katu seems to have a color tint from the slider colors because those are behind the hit lighting (osu! have those scores in front of hit lighting)...

Game sounds fail to load, causing a crash

c at suzu in ~/Downloads/opsu
% cat .opsu.log
Tue Jul 08 11:35:06 NZST 2014 ERROR:Failed to load file 'combobreak.wav'.
Tue Jul 08 11:35:06 NZST 2014 ERROR:line with format PCM_UNSIGNED 11025.0 Hz, 8 bit, mono, 1 bytes/frame,  not supported.
javax.sound.sampled.LineUnavailableException: line with format PCM_UNSIGNED 11025.0 Hz, 8 bit, mono, 1 bytes/frame,  not supported.
    at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(DirectAudioDevice.java:513)
    at com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(DirectAudioDevice.java:1304)
    at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121)
    at com.sun.media.sound.DirectAudioDevice$DirectClip.open(DirectAudioDevice.java:1085)
    at com.sun.media.sound.DirectAudioDevice$DirectClip.open(DirectAudioDevice.java:1175)
    at itdelatrisu.opsu.SoundController.loadClip(SoundController.java:158)
    at itdelatrisu.opsu.SoundController.init(SoundController.java:174)
    at itdelatrisu.opsu.states.Splash$1.run(Splash.java:137)
[several repeats of the above error for each sound file]

Tue Jul 08 11:36:52 NZST 2014 ERROR:** Uncaught Exception! **
Tue Jul 08 11:36:52 NZST 2014 ERROR:null
java.lang.NullPointerException
    at itdelatrisu.opsu.SoundController.playClip(SoundController.java:223)
    at itdelatrisu.opsu.SoundController.playSound(SoundController.java:247)
    at itdelatrisu.opsu.states.MainMenu.mousePressed(MainMenu.java:317)
    at org.newdawn.slick.state.StateBasedGame.mousePressed(StateBasedGame.java:499)
    at org.newdawn.slick.Input.poll(Input.java:1217)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:641)
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:149)
c at suzu in ~/Downloads/opsu
% java -version 
java version "1.7.0_60"
OpenJDK Runtime Environment (IcedTea 2.5.0) (Arch Linux build 7.u60_2.5.0-2-x86_64)
OpenJDK 64-Bit Server VM (build 24.60-b09, mixed mode)

The NullPointerException occurs when clicking on the opsu! star on the main menu, causing the game to crash (probably because it's trying to play a sound even though it failed to load?)

Long startup

With lots of beatmaps, opsu takes really long time to start.
Right now with 2200 different songs (6200 Beatmaps) in /Songs/, opsu needs about 30 seconds to start, according to it's own ingame-timer.

Exporting replay call seems to be quite expensive

(tried this on opsu-android though, close this if you think this is more on opsu-android issue rather than opsu!, just wondering though :P)

On opsu!, exporting replays is rather speedy (no hiccups whatsoever)
But on opsu-android (especially really underpowered processors such as Intel Atom Z2520, common on Asus phones), exporting replays to disk uses quite a lot of CPU processing.

It is not very noticeable on PC (there's some huge CPU spikes for about a second) but due to their running nature of Android, this seems to cause some issues with performance since the replay will be exported immediately after the ranking screen is dismissed.

My rough guess is from the lag I got during gameplay, the thread priority of the export replay is as high as the song playing (song stutters for the duration of the export, usually about 5-10 seconds)

Minimized opsu! "stops" the music

(invalid this if this is intended)
As the title says, minimizing opsu! will stop the background music (including when moving the window as well if not fullscreen)
Affects builds 0.6.0 till latest commit
Last version without this issue: 0.5.0

Spinners gets harder to clear if the fps is higher

On 60 fps, the spinner is almost osu! like clear.
But on 240 fps, the spinner is really hard to clear (especially on short spinners)

I also have added the replays since it appears to be affecting replays too
The map played is Primastella - Koigokoro [iyasine's Hard]
First play with 120 fps
Second play with 240 fps

On 1st play, I manage to get a Clear with 2000 score (idk how to call it)
But on 2nd play, I only manage to get a 100 (not even a clear)

However, showing the replays on different fps (120 fps replay on 240 fps or 240 fps replay at 120 fps) doesn't affect the spinner in any way.

Can't move the .jar ?

Hi there !
So i got a problem with your jar (just testing for now, because i don't really understand how to compile & edit the code for now, since i've never worked before in this type of java)
So i launched your .jar in download folder first to test it, then it creates everything needed to run it properly, and actually it run properly.
But when i try to launch the .jar from anywhere else (a folder on my desktop for example) i got this issue :
"** Uncaught Exception! **
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.(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.(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)
"

I've also try to download the release, again, but same problem appear.
Also, if someway you can tell me how can i edit & compile to help you, it would be awesome.
I'm working mainly in C#, or web langages, but i think i'll handle java ^^ Just need to know how to run that x)

Failed to load file 'combobreak.wav'.

Version: 0.9.0
Build date: 2015-05-17 19:41
OS: Linux (i386)
JRE: 1.7.0_79
Error: Failed to load file 'combobreak.wav'.
Stack trace:

java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at itdelatrisu.opsu.audio.MultiClip.getClip(MultiClip.java:164)
    at itdelatrisu.opsu.audio.MultiClip.<init>(MultiClip.java:94)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:117)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:90)
    at itdelatrisu.opsu.audio.SoundController.init(SoundController.java:207)
    at itdelatrisu.opsu.states.Splash$1.run(Splash.java:109)

Infinite Song Reload Dialog

After completed download of a beatmap using the in-game downloader, if f5 is pressed and the refresh dialog pops up, clicking either cancel or refresh button results in another popup after the refresh/current dialog closes. Using keyboard 1/2/esc will not result in a repeat dialog.
Ubuntu 14.04 + OpenJDK 1.7.0_75

Failed to prepare score statements.

Version: 0.7.0
Build date: 2015-03-09 00:40
Error: Failed to prepare score statements.
Stack trace:

java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (table scores has 18 columns but 17 values were supplied)
    at org.sqlite.core.DB.newSQLException(DB.java:890)
    at org.sqlite.core.DB.newSQLException(DB.java:901)
    at org.sqlite.core.DB.throwex(DB.java:868)
    at org.sqlite.core.NativeDB.prepare(Native Method)
    at org.sqlite.core.DB.prepare(DB.java:211)
    at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:40)
    at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:29)
    at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:18)
    at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:47)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:251)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:223)
    at itdelatrisu.opsu.db.ScoreDB.init(ScoreDB.java:71)
    at itdelatrisu.opsu.db.DBController.init(DBController.java:47)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:138)

Failed to load file 'count2s.wav'.

Version: 0.9.0
Build date: 2015-05-17 19:41
OS: Linux (i386)
JRE: 1.7.0_79
Error: Failed to load file 'count2s.wav'.
Stack trace:

java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at itdelatrisu.opsu.audio.MultiClip.getClip(MultiClip.java:164)
    at itdelatrisu.opsu.audio.MultiClip.<init>(MultiClip.java:94)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:117)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:90)
    at itdelatrisu.opsu.audio.SoundController.init(SoundController.java:207)
    at itdelatrisu.opsu.states.Splash$1.run(Splash.java:109)

Failed to load file '/preview/217134.mp3'.

Version: 0.8.0
Build date: 2015-03-20 04:45
OS: Linux (amd64)
JRE: 1.8.0_45-internal
Error: Failed to load file '/preview/217134.mp3'.
Stack trace:

java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at itdelatrisu.opsu.audio.MultiClip.getClip(MultiClip.java:164)
    at itdelatrisu.opsu.audio.MultiClip.<init>(MultiClip.java:94)
    at itdelatrisu.opsu.audio.SoundController.loadClip(SoundController.java:118)
    at itdelatrisu.opsu.audio.SoundController.playTrack(SoundController.java:336)
    at itdelatrisu.opsu.states.DownloadsMenu$2.run(DownloadsMenu.java:488)

ArrayIndexOutOfBoundsException on funky sliders

(Extra note: this beatmap is designed to be weird anyway, but it may be reproducible on normal maps...)
Affected beatmap: LeaF - Evanescent [Aspire]

The error message:

Sat Apr 11 22:55:35 SGT 2015 ERROR:Failed to create slider at index 161:
362,224,29985,2,0,B|362:298|362:298|362:294|362:294|362:301|362:301|362:298|362:298|362:305|362:305|362:301|362:301|362:308|362:308|362:305|362:305|362:312|362:312|362:308|362:308|362:316|362:316|362:312|362:312|362:319|362:319|362:316|362:316|362:323|362:323|362:319|362:319|362:327|362:327|362:323|362:323|362:330|362:330|362:327|362:327|362:334|362:334|362:330|362:330|362:337|362:337|362:334|362:334|362:341|362:341|362:337|362:337|362:345|362:345|362:341|362:341|362:348|362:348|362:345|362:345|362:352|362:352|362:348|362:348|362:356|362:356|362:352|362:352|362:356,1,225.00002
Sat Apr 11 22:55:35 SGT 2015 ERROR:0
java.lang.ArrayIndexOutOfBoundsException: 0
    at itdelatrisu.opsu.objects.curves.LinearBezier.<init>(LinearBezier.java:105)
    at itdelatrisu.opsu.objects.Slider.updatePosition(Slider.java:463)
    at itdelatrisu.opsu.objects.Slider.<init>(Slider.java:146)
    at itdelatrisu.opsu.states.Game.enter(Game.java:1074)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)
Sat Apr 11 22:55:44 SGT 2015 ERROR:Failed to create slider at index 195:
154,165,37406,86,0,B|151:162|151:162|156:167|156:167|156:162|156:162|151:167|151:167|154:162|154:162|156:165|156:165|154:167|154:167|151:165|151:165,10,37.5,2|2|2|2|2|2|2|2|2|2|2,0:3|0:3|0:3|0:3|0:3|0:3|0:3|0:3|0:3|0:3|0:3,0:3:0:0:
Sat Apr 11 22:55:44 SGT 2015 ERROR:0
java.lang.ArrayIndexOutOfBoundsException: 0
    at itdelatrisu.opsu.objects.curves.LinearBezier.<init>(LinearBezier.java:105)
    at itdelatrisu.opsu.objects.Slider.updatePosition(Slider.java:463)
    at itdelatrisu.opsu.objects.Slider.<init>(Slider.java:146)
    at itdelatrisu.opsu.states.Game.enter(Game.java:1074)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)
Sat Apr 11 22:55:44 SGT 2015 ERROR:Failed to create slider at index 424:
256,304,75459,6,0,B|256:241|256:241|256:246|256:246|256:234|256:234|256:237|256:237|256:224|256:224|256:229|256:229|256:214|256:214|256:224|256:224|256:210|256:210|256:215|256:215|256:188,1,168.75,2|0,0:0|0:0,0:0:0:0:
Sat Apr 11 22:55:44 SGT 2015 ERROR:0
java.lang.ArrayIndexOutOfBoundsException: 0
    at itdelatrisu.opsu.objects.curves.LinearBezier.<init>(LinearBezier.java:121)
    at itdelatrisu.opsu.objects.Slider.updatePosition(Slider.java:463)
    at itdelatrisu.opsu.objects.Slider.<init>(Slider.java:146)
    at itdelatrisu.opsu.states.Game.enter(Game.java:1074)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)
Sat Apr 11 22:55:45 SGT 2015 ERROR:Failed to create slider at index 745:
256,192,124880,54,0,B|255:192|255:192|257:192|257:192|254:192,2,5.625,0|0|2,0:0|0:0|0:0,0:0:0:0:
Sat Apr 11 22:55:45 SGT 2015 ERROR:0
java.lang.ArrayIndexOutOfBoundsException: 0
    at itdelatrisu.opsu.objects.curves.LinearBezier.<init>(LinearBezier.java:94)
    at itdelatrisu.opsu.objects.Slider.updatePosition(Slider.java:463)
    at itdelatrisu.opsu.objects.Slider.<init>(Slider.java:146)
    at itdelatrisu.opsu.states.Game.enter(Game.java:1074)
    at org.newdawn.slick.state.StateBasedGame.update(StateBasedGame.java:248)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:702)
    at itdelatrisu.opsu.Container.gameLoop(Container.java:93)
    at itdelatrisu.opsu.Container.start(Container.java:67)
    at itdelatrisu.opsu.Opsu.main(Opsu.java:169)

Inaccurate track position in OpenALStreamPlayer

OpenALStreamPlayer.getPosition() returns track positions that are up to 20ms off (on my machine). This is pretty obvious if you call MusicController.getPosition() in a while loop and take the difference of the return values: an interval is skipped on a fairly regular basis. This is probably causing some of the unpredictable gameplay inaccuracies.

Here's the relevant code:

    public float getPosition() {
        float playedTime = ((float) playedPos / (float) sampleSize) / sampleRate;
        float timePosition = playedTime + (getTime() - lastUpdateTime) / 1000f;
        return timePosition;
    }

I don't really know how to approach this, so any help would be greatly appreciated.

Spinner skins long loading time

Some skins for the spinner takes long time to load, so that the spinning-time is almost over when the spinner appears on screen.

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.