Paddle Storm is a ball-and-paddle video game, with some special features:
– 25-level campaign.
– Spellcasting ability, replacing the traditional powerup system.
– Support for arbitrary angles for bricks and the paddle, providing an unsual experience.
– Support for custom made levels.
– 10 unlockable achievements.
The game is available on SourceForge. Currently only available for PC, a future Android OS version is planned (but not promised). The game is free software, released under the simplified BSD license. Full source code (in the Java programming language) is available with the game.
Hopefully, some extra levels will be available for download in the future. If you made an interesting level yourself, let me know!
A note about performance:
There have been suspicions about possible performance issues with the game. If you try the game and it does not run smoothly, please contact me with details about your system, and descriptions of how the game runs.
Great review on Softpedia – addictive gameplay π
http://games.softpedia.com/get/Freeware-Games/Paddle-Storm.shtml
Pingback: The Beauty of Noise « computationalwhatever
Nothing happens when pressing start game (at 800×600, asus eeepc 1000h)
$ java -jar paddleStorm.jar
Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: Width (0) and height (0) cannot be <= 0
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
at java.awt.image.BufferedImage.(BufferedImage.java:338)
at shai.paddle.ui.AchievementsPanel.createButtonImages(AchievementsPanel.java:193)
at shai.paddle.ui.AchievementsPanel.updateSize(AchievementsPanel.java:46)
at shai.paddle.ui.GameFrame.updateSize(GameFrame.java:222)
at shai.paddle.Main.createAndShowGUI(Main.java:95)
at shai.paddle.Main.access$0(Main.java:93)
at shai.paddle.Main$1.run(Main.java:27)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:617)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
^[[AmouseClicked
campaign\Level1.lvl (No such file or directory)
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at shai.paddle.Engine.initialize(Engine.java:42)
at shai.paddle.Engine.startNextLevel(Engine.java:93)
at shai.paddle.Engine.startFirstLevel(Engine.java:78)
at shai.paddle.ui.GameFrame.startGame(GameFrame.java:125)
at shai.paddle.ui.GameFrame.optionChosen(GameFrame.java:97)
at shai.paddle.ui.MainMenuPanel.chooseOption(MainMenuPanel.java:187)
at shai.paddle.ui.MainMenuPanel.mousePressed(MainMenuPanel.java:175)
at java.awt.Component.processMouseEvent(Component.java:6265)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6033)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4629)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4294)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2517)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$2.run(EventQueue.java:622)
at java.awt.EventQueue$2.run(EventQueue.java:620)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Interesting… It’s not finding campaign\Level1.lvl. Do you see it in the filesystem?
Also, is it a Linux machine? Maybe it’s a slash / backslash thing. Unfortunately, I have no Linux machine to test on.
I see it in the fs. Yes, linux – forgot to say that π
It seems strange to me that Java might differ between / and \ inside code. But I took a look at Campaign.java and it apparently can.
I thought it could be a cAse problem (Linux can have file and File and FiLe in the same directory). But this seems to match.
Can you tell me how you generated the .jar file? I could then test whether it works after replacing \\ with /. π
I uploaded a new version to SourceForge, I hope it will fix it. Please let me know if you try.
I compiled it in Eclipse (just a simple compilation, no fancy flags or anything), but regenerating the JAR is a little overkill. If you want to test it, you can compile the java file with any Java compiler and manually insert it in the JAR (the JAR is an ordinary ZIP file, any archiving program can edit it).
Otherwise, I’ll try to post an update tomorrow. Either way, thank you π
After pressing any button in 1.01, I get
$ java -jar paddleStorm.jar
Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: Width (0) and height (0) cannot be <= 0
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
at java.awt.image.BufferedImage.(BufferedImage.java:338)
at shai.paddle.ui.AchievementsPanel.createButtonImages(AchievementsPanel.java:193)
at shai.paddle.ui.AchievementsPanel.updateSize(AchievementsPanel.java:46)
at shai.paddle.ui.GameFrame.updateSize(GameFrame.java:222)
at shai.paddle.Main.createAndShowGUI(Main.java:95)
at shai.paddle.Main.access$0(Main.java:93)
at shai.paddle.Main$1.run(Main.java:27)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:617)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
I run openjdk with the following fix as I use the tiled window manager ‘awesome’:
# enable this for non-reparenting window managers
set _JAVA_AWT_WM_NONREPARENTING=1
I can use quit, help and about. anything else leads to a white screen that does not react.
arch linux 32bit.
Im confused π
The good news: I finally set up my Linux testing environment, and I get the same thing. So I’ll work on it until I’ll finally be able to say it works on Linux.
The bad news: I currently have no idea what’s causing the problem… I hope I’ll find something.
Pingback: Paddle Storm now supports Linux « Shai Shapira