Asteroid Wars by leondryaso

[raw]
made by leondryaso for LD36 (JAM)
This game is a kind of revival of good ol' Asteroids. It may not be the most original one, but we really like our shader job here.

The rounds are getting a bit longer each level, on the end you will be shown an upgrade screen where you can upgrade your weapons and shields.
Use arrow keys or WSAD for ship movement, Space to shoot, Left Ctrl to shoot special.

Download, unzip and double click or "java -jar ld36.jar"

Requires Java 8 and a graphics card supporting OpenGL 3.1+. The build has been tested on Windows and Linux, it won't probably work on Mac, but we will be very grateful if you try it anyway and post a log.

Uses LWJGL, JOAL + Paul's Soundsystem (terrible combo, but still easier than other options). Based on GabeNgine (https://bitbucket.org/datt/gabengine)

Feedback

Shatter Point Studios
30. Aug 2016 · 13:10 UTC
This is awesome!! I didn't get very far because I suck at Asteroids, but still. The way that you emulated the look of classic games... just WOW. Really great entry, keep up the good work.
DUDSS
30. Aug 2016 · 14:28 UTC
Love the look of it :)
Vaiaphraim
30. Aug 2016 · 14:42 UTC
The graphics are really amazing; I like the feel of the game, too. It's definitely not easy, but I feel that I get better with each try :)

The music you selected fits very well, too (the upgrade screen is where I spent most of the time for that reason, I think :P)

Well done, great entry!
paruthidotexe
30. Aug 2016 · 15:04 UTC
Simple game with cool graphics and music makes it awesome. Yep the shader effect is just awesome, actually i wanted to add shaders for my game too, but not had enough time for ld36.
Both the mainmenu and upgrade menu bg music is super cool..
I wish it would be better if continue game option available. since every time starts from beginning.
AWOL
30. Aug 2016 · 15:14 UTC
Wow. This is easily one of the best games in the Jam. I'm keeping a copy of this on my desktop. Love the reboot. You Nailed It!
Wicked7000
30. Aug 2016 · 15:23 UTC
I actually really liked the graphics and the game is highly addictive great job! (I can't even really think of a flaw)
CMangas
30. Aug 2016 · 16:17 UTC
Awesome game, original graphics and great gameplay :D
Casevse
30. Aug 2016 · 16:39 UTC
Great tribute! I love the screen filter and it's challenging. Good work!
BlueLlama
30. Aug 2016 · 16:57 UTC
Really fun little game. The handling is very difficult, but that is all part of the challenge. Good job!
RubiksJr
30. Aug 2016 · 17:58 UTC
Ohhhhhh there's so much I have to say about this game!

First of all it's definately my favorite so far out of all the games I've played, including mine. And it's the first game I've played after I've gotten the full experience out of it. I made it to level 13 before I had to stop myself from continuing, or I'd be playing it all day.

The CRT effect is fantastic, it really fits the game and just looks flat out amazing. The screen shaking is really good too. The music and sounds were great and substantially added to the game and made it a better experience. The shop was good too, although I think it could have had some more options or had more stages on the current ones. It didn't take long for me to max out my ship.

One of the only things I disliked about this game was how easy it was. I was able to survive extremely easily after the second level when I got the triple laser. I feel that if you had either added some more options in the shop and/or made things more expensive it would have lengthened the game a bit.

Also, this is a bit of a nitpick, but it bothered me a little that the screen didn't wrap. In the original Asteroids, when you went past an edge of the screen, you showed up on the other side. I do understand, however, that this would've been somewhat hard to achieve successfully because of the asteroids randomly spawning past the borders to keep the game going.

In the end I thought this game was fantastic in all aspects and I really enjoyed playing it. It's also nice to see a fellow Java developer doing Ludum Dare. :)
belva1234
30. Aug 2016 · 17:59 UTC
Wow this game is really good, best theme application ever
nitroix
30. Aug 2016 · 20:37 UTC
Looks insane, but it doesnt work for me, i ran it in terminal and got this message Exception in thread "main" java.io.FileNotFoundException: Path is not directory
at cz.dat.gaben.api.ContentManager.<init>(ContentManager.java:35)
at cz.trigon.ld36.Main.main(Main.java:13)

plz try to fix, i rly want to play it
jeremyfa
30. Aug 2016 · 20:39 UTC
I could not make the game work on my mac :'( Looks good though
🎤 leondryaso
30. Aug 2016 · 20:45 UTC
Wow, thank you all very much :)

@paruthidotexe Well, it's supposed to be the hit - die - repeat type of game, maybe it would make sense if there was a much wider scale of upgrades and stuff.

@RubiksJr Yea, there's definitely space for more upgrades and it's levels. But actually it really depends on luck (Random.nextFloat() :D) if you manage to get through the levels easily. When making these strange formulas for upgrades count, I was thinking that it's only a LD game, less people would see how the gameplay with fully upgraded ship goes if it was too long to get there. About the element wrapping - we were thinking about it, but ultimately we decided to not implement it, because it would be too hard and we rather added another ideas we had. Thank you very much for your comment ^^
🎤 leondryaso
30. Aug 2016 · 20:46 UTC
@nitroix The res folder has to be in your working directory, so unzip it and run the command from inside of the folder containing both the jar and the res folder :)
little-burrito
30. Aug 2016 · 20:47 UTC
Excellent game! Eeeexcellent game! Ok, let's break it down.

Graphics - amazing. It's an awesome twist with the old TV style, which is very well implemented. I had to stay to just go between the main menu and the about second a couple of times because of how great the transition looked. Everything is super simple, yet very clear! The camera shakes add a lot to the experiences and it's just very well executed.
Sound - Good music, and great sound effects! I'm playing this on my laptop in a big cruise ship, and sometimes a shot managed to get synced with the engines rumbling and I felt like I was in a movie theatre :)
Controls - The "in-game" controls are all they need to be, but it's a little confusing how they translate to the menu screen. Something like selecting what you want to upgrade and moving it to the right as many times as you like, and then buying it with the shoot button would have been clearer for me, since the enter and escape buttons weren't used before.

Other stuff (I don't have the energy to be specific anymore... :) )
Asteroids is a very difficult game, and I like how you made it into a rogue-like. I only made it to level 4 with many tries, so to see if there was more, I went into the ram and upped my money from 136 to 200000 and bought all the upgrades. Got to level 7 and felt bad (in a good way). Then I realized that if I went out to the menu and back in again, I advanced one level. I double-cheated (money and level skipping) my way up to level 42. Beat it. Died on the next one. Anyway, regarding the theme, I was expecting to see some old school computer game references, and this one totally did Asteroids justice. So yeah, playing this game took about an hour of my life, and I'm happy it did! Very well done!

I probably forgot to say a bunch of things, and I hope this whole feedback makes sense. Feel free to ask questions :) Now I'm heading to bed! Good night! :)
🎤 leondryaso
30. Aug 2016 · 20:49 UTC
@jeremyfa We are really sorry, but without an actual Mac machine, it's hard to find out where the problem is :/ One day I might try to set up a Hackintosh and get the engine working on Mac as well ^_^
little-burrito
30. Aug 2016 · 20:53 UTC
Oh, and one more thing! I felt like the upgrades could have been more visual. In the shop you could really see them, but then the weapons only visibly got to 3 lasers. If it would have gotten to 5 and 7 respectively it would have just FELT so much more powerful. And the shields could have been a new circle outside the existing one, so with 4 shields, you really see that you have 4 times as many as when you started. The special was a great effect though and really felt like I got what I paid for :)

And I pressed R, and it was awesome. Even though it took me like 45 minutes to figure out what it did :)
🎤 leondryaso
30. Aug 2016 · 20:57 UTC
@little-burrito Thank you very much :) I haven't really thought about it being a kind of rogue-like before :D It's true that the Esc button usage on the upgrade screen is not ideal, but I came up with this combination because at first there wasn't the delay between round end and the upgrade screen and there was a high risk of smashing the Space bar a few times, thus buying something accidentally. Sorry for your loss of an hour of your life ^^ :D
Piuzera
31. Aug 2016 · 01:14 UTC
The screen filter and the challenge make it for me. Good work, man!
ErikU
01. Sep 2016 · 04:18 UTC
Level 15! The best strategy seems to be to sit in the middle and turn towards whatever approaches fastest. And the highest level special attack is just ruination.

Agreed with the above that the shader is a crowning achievement. Well done!
Lênon Kramer
01. Sep 2016 · 14:01 UTC
I only made to level 3... but geez, that's addicting!!! :D

Excellent game, even if it's a remake!

About your comment in my game (Lost Earth), I fixed the bug you noticed about the game freezing when character dies.
blubberquark
05. Sep 2016 · 11:05 UTC
Lots of Juice there! Great Graphics!
Jacqueslelezard
11. Sep 2016 · 17:57 UTC
Not very original BUT the graphics (screenshake, particles, tv-effect, etc) are awesome! Quite an addictive game! :)
invader
15. Sep 2016 · 10:43 UTC
somehow lwjgl refused to start both on MacOS X and 32bit Linux (with the same exception) - it might be necessary property is missing in the jar manifest:

java.lang.NullPointerException
at org.lwjgl.system.APIUtil.apiGetManifestValue(APIUtil.java:97)
at org.lwjgl.system.Library.checkHash(Library.java:260)
at org.lwjgl.system.Library.<clinit>(Library.java:44)
at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:17)
at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
at cz.dat.gaben.api.impl.lwjgl.LwjglBuilder.canBeBuilt(LwjglBuilder.java:64)
at cz.dat.gaben.api.game.GameWindowFactory.createGame(GameWindowFactory.java:46)
at cz.dat.gaben.api.game.GameWindowFactory.createPreferredGame(GameWindowFactory.java:59)
at cz.trigon.ld36.Main.main(Main.java:17)
Exception in thread "main" java.lang.NullPointerException
at cz.trigon.ld36.Main.main(Main.java:18)
🎤 leondryaso
17. Sep 2016 · 19:40 UTC
@invader Actually, this error happens everywhere and it's not critical. The problem must be elsewhere. On Mac, we know about the problems, but without an actual Mac computer, we don't know how to fix them, but on Linux, it should work. If you want to help us find the issue, you can try running it with -Dorg.lwjgl.util.Debug=true parameter and posting the full log here
invader
18. Sep 2016 · 10:39 UTC
@leondryaso:
Running with debug option on MacOS X shows following output:

Testing window creation
java.lang.NullPointerException
at org.lwjgl.system.APIUtil.apiGetManifestValue(APIUtil.java:97)
at org.lwjgl.system.Library.checkHash(Library.java:260)
at org.lwjgl.system.Library.<clinit>(Library.java:44)
at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:17)
at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
at cz.dat.gaben.api.impl.lwjgl.LwjglBuilder.canBeBuilt(LwjglBuilder.java:64)
at cz.dat.gaben.api.game.GameWindowFactory.createGame(GameWindowFactory.java:46)
at cz.dat.gaben.api.game.GameWindowFactory.createPreferredGame(GameWindowFactory.java:59)
at cz.trigon.ld36.Main.main(Main.java:17)
Exception in thread "main" java.lang.NullPointerException
at cz.trigon.ld36.Main.main(Main.java:18)
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.

It probably tries to create a window, but instantly closes it and exists.
invader
18. Sep 2016 · 10:44 UTC
@leondryaso:

UPDATE to previous log - seems like i've put the option in the wrong place. Here is the actual output on MacOS with debug applied:


Testing window creation
java.lang.NullPointerException
at org.lwjgl.system.APIUtil.apiGetManifestValue(APIUtil.java:97)
at org.lwjgl.Version.getVersion(Version.java:33)
at org.lwjgl.system.Library.<clinit>(Library.java:35)
at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:17)
at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
at cz.dat.gaben.api.impl.lwjgl.LwjglBuilder.canBeBuilt(LwjglBuilder.java:64)
at cz.dat.gaben.api.game.GameWindowFactory.createGame(GameWindowFactory.java:46)
at cz.dat.gaben.api.game.GameWindowFactory.createPreferredGame(GameWindowFactory.java:59)
at cz.trigon.ld36.Main.main(Main.java:17)
[LWJGL] Version: 3.0.0 SNAPSHOT
[LWJGL] OS: Mac OS X v10.11.6
[LWJGL] JRE: 1.8.0_45 x86_64
[LWJGL] JVM: Java HotSpot(TM) 64-Bit Server VM v25.45-b02 by Oracle Corporation
[LWJGL] Loading library (system): lwjgl
[LWJGL] liblwjgl.dylib not found in java.library.path=/Users/igor/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
[LWJGL] Using SharedLibraryLoader...
[LWJGL] Extracting: file:/Users/igor/Downloads/ld36_asteroids/ld36.jar!/liblwjgl.dylib
[LWJGL] Loaded from org.lwjgl.librarypath: /var/folders/tl/4v15z3y51r3c4nlwt2njp7z00000gn/T/lwjgligor/2af4be70/liblwjgl.dylib
java.lang.NullPointerException
at org.lwjgl.system.APIUtil.apiGetManifestValue(APIUtil.java:97)
at org.lwjgl.system.Library.checkHash(Library.java:260)
at org.lwjgl.system.Library.<clinit>(Library.java:44)
at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:17)
at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
at cz.dat.gaben.api.impl.lwjgl.LwjglBuilder.canBeBuilt(LwjglBuilder.java:64)
at cz.dat.gaben.api.game.GameWindowFactory.createGame(GameWindowFactory.java:46)
at cz.dat.gaben.api.game.GameWindowFactory.createPreferredGame(GameWindowFactory.java:59)
at cz.trigon.ld36.Main.main(Main.java:17)
[LWJGL] Loading library: glfw
[LWJGL] ThreadLocalUtil state: UnsafeState
[LWJGL] MemoryUtil accessor: MemoryAccessorUnsafe
[LWJGL] Loaded from org.lwjgl.librarypath: /var/folders/tl/4v15z3y51r3c4nlwt2njp7z00000gn/T/lwjgligor/2af4be70/libglfw.dylib
[LWJGL] Loading library: objc
[LWJGL] libobjc.dylib not found in org.lwjgl.librarypath=/var/folders/tl/4v15z3y51r3c4nlwt2njp7z00000gn/T/lwjgligor/2af4be70
[LWJGL] libobjc.dylib not found in java.library.path=/Users/igor/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
[LWJGL] Loaded from system paths
[LWJGL] Loading library: /System/Library/Frameworks/AppKit.framework
[LWJGL] Success
[LWJGL] GLFW can only be used for offscreen rendering.
Exception in thread "main" java.lang.NullPointerException
at cz.trigon.ld36.Main.main(Main.java:18)
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.