Ludum Dare 36 — August 26th-29th, 2016 — Theme: Ancient Technology

Back to Browse Entries

Asteroid Wars

by leondryaso - Jam Entry

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)

Downloads and Links


Comments

Aug 30, 2016 @ 1:15pm

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 says ...
Aug 30, 2016 @ 2:33pm

Love the look of it :)

Vaiaphraim says ...
Aug 30, 2016 @ 2:47pm

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 says ...
Aug 30, 2016 @ 3:09pm

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 says ...
Aug 30, 2016 @ 3:19pm

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 says ...
Aug 30, 2016 @ 3:28pm

I actually really liked the graphics and the game is highly addictive great job! (I can't even really think of a flaw)

CMangas says ...
Aug 30, 2016 @ 4:22pm

Awesome game, original graphics and great gameplay :D

Casevse says ...
Aug 30, 2016 @ 4:44pm

Great tribute! I love the screen filter and it's challenging. Good work!

BlueLlama says ...
Aug 30, 2016 @ 5:02pm

Really fun little game. The handling is very difficult, but that is all part of the challenge. Good job!

RubiksJr says ...
Aug 30, 2016 @ 6:03pm

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 says ...
Aug 30, 2016 @ 6:04pm

Wow this game is really good, best theme application ever

nitroix says ...
Aug 30, 2016 @ 8:42pm

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 says ...
Aug 30, 2016 @ 8:44pm

I could not make the game work on my mac :'( Looks good though

leondryaso says ...
Aug 30, 2016 @ 8:50pm

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 says ...
Aug 30, 2016 @ 8:51pm

@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 :)

Aug 30, 2016 @ 8:52pm

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 says ...
Aug 30, 2016 @ 8:54pm

@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 ^_^

Aug 30, 2016 @ 8:58pm

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 says ...
Aug 30, 2016 @ 9:02pm

@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 says ...
Aug 31, 2016 @ 1:19am

The screen filter and the challenge make it for me. Good work, man!

ErikU says ...
Sep 1, 2016 @ 4:23am

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!

Sep 1, 2016 @ 2:06pm

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 says ...
Sep 5, 2016 @ 11:10am

Lots of Juice there! Great Graphics!

Sep 11, 2016 @ 6:02pm

Not very original BUT the graphics (screenshake, particles, tv-effect, etc) are awesome! Quite an addictive game! :)

invader says ...
Sep 15, 2016 @ 10:48am

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 says ...
Sep 17, 2016 @ 7:45pm

@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 says ...
Sep 18, 2016 @ 10:44am

@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 says ...
Sep 18, 2016 @ 10:49am

@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.

You must sign in to comment.


Mini Submission FAQ

TEAMS: Teams entering the Jam should pick a single representative to submit your game, or create a team specific account you can share. We currently do not support Team Voting, but sharing an account and together playing and rating games is acceptable.

CAN I ENTER BOTH EVENTS?: You should pick 1 event, whichever you think it’ll do better in. If the idea is strong, and everything plays well enough, you can go Compo. If you’re a perfectionist, and would prefer people to play a more polished game, do the Jam. Many solo participants enter the Jam.

If you made 2 games, unfortunately, the website doesn’t support multiple submissions per user. To submit your 2nd game, you will have to make a 2nd account. Only do this if you made 2 games. Alternatively, if one game is better than the other, then consider just entering the better game.

CAN I KEEP WORKING UNTIL THE DEADLINE?: Yes! Immediately after the 48 or 72 hours, we do something called Submission Hour. As the name suggests, it’s an extra hour for you to package, upload, and submit your games. If there were catastrophic issues trying submitting your game, or you misunderstood how submissions work, that’s okay. It happens. We’re flexible. If you need advice, check with the folks on IRC. If you need an admin, get in touch.

CAN I KEEP WORKING ON MY GAME?: Oh definitely! You should! But for the sake of judging, keep the Compo or Jam version around. You can include a link to the Post-Compo/Post-Jam version of your game on your games page, but sure your main links are the original version.

PORTS: Ports to other platforms can be done after the deadline. That said, the sooner you finish your port, the sooner people can play your game, improving your chances of placing in the final results. For best results, provide a Web version of your game, or a Windows version with no dependencies. Also be sure to rate at least 20 games to improve your visibility (Coolness).

MY GAME CRASHES, IS UNBEATABLE, OR I MADE A TYPO: We allow you to fix crashes, win condition, or tiny bugs after the deadline. In a sense, this is like “porting” to support more players. We leave this open to interpretation, but generally speaking your game should be identical to the game you submitted. No new features, just fixing mistakes you should have caught had you been better rested.

MY GAME DOESN’T SHOW UP: If you can’t find your game, it’s usually because the URL to your downloads are missing ‘http://‘. Fix your URLs (http://mysite.com/mygame.zip) and you will show up. Alternatively, if you just posted it, wait a minute. The cache may not have refreshed yet.

NOT LOGGED IN?: If you get a message about not being logged in, even though you are, it’s because your web browser cached the non-logged in page. You can fix this by either refreshing your cache or clearing your cache. CTRL+F5 in many browsers. Chrome is a bit more work. Press F12 to enable Developer Mode, then you can right click on the refresh button and select “Empty Cache and Hard Reload”. This option is unavailable if you are not in Developer Mode.


[cache: storing page]