Stacker - Block stacking arcade game

Commercial Explanation:
Stacker by Elsea Labs is a free and open-source game based on the popular “Stacker” physical arcade game. Use your gaming skills to stack blocks on top of each other and try to make your tower reach the top of the grid. You’ll earn points based on time and skill and be able to compare your score with friends who also play. This arcade-styled game is a great way to pass time or challenge yourself.

Development Notes
The game is almost done, so I figured I would put it on the forums for suggestions and to have people review the code. I’m new to JGO, so hello, and I hope you enjoy this and my future games!

If you run the game via console/terminal, you will see more details about the scoring system.

Check the to-do list to see what’s left, and feel free to help out, make suggestions, or point out bugs.

Download: Current Github Pre-Release
Note: This is the game in its current state as seen on GitHub. This is unfinished and not fully featured.

Source Code: https://github.com/Elsealabs/Stacker/tree/master/com/elsealabs/stacker
Changes: https://github.com/Elsealabs/Stacker/commits/master
To-do List: https://github.com/Elsealabs/Stacker/blob/master/TODO

Nice, I always wanted to make it but was never really bothered to. This brings back old and horrible memories about the damn machine showcasing PSP and Nintendos. For some reason I could never stack it to the top.

Fun game regardless though

Fun little game and nice simple design.
Good work!

Thanks for trying it out! If anyone has any suggestions for additions to gameplay, or any constructive criticism of anything about the game, it would be much appreciated.

When pressing spacebar before the light is on, the window closes and maybe you could add a little animation when winning the game instead just starting a new one.

Thanks for pointing out the error.

And I had planned for a winning screen of some sort, and a statistic tracking system. There will also be a few other additions that make it better graphically, such as menus, and an animation of the block “falling” when it misses the block selection below it instead of just disappearing. I’ll update the “TODO” with those ideas.

Why does it take so long (about 5 seconds) until the light goes on?

It’s hard coded to wait exactly three seconds before the machine “turns on” just for effect. Eventually there will also be music that sounds as if it’s “booting up” with the machine. Whenever I add the music I’ll shorten the time it takes for the machine to turn on.

It’s not a problem, just wondered why…

Sadly there is no winning screen…

In other words, I failed at the last row (I guess) :S

That’s cool! Just wondering, did you use lwjgl? I just got linux, and was wondering if I can make one jar for all platforms on lwjgl, I saw your game ran on all, and just thought of it.

lwjgl (like most of the graphic libraries) is always for all desktop systems isn’t it?

Yes, but I want it to work on all desktops (i.e. linux, windows, mac)

Thats exactly what I wanted to say…
Are’nt other lwjgl programs running on your linux/mac?
If, there’s something wrong.

Wait, I think you just put all the natives for all OS’s in the jar file. Lwjgl doesn’t run on linux sometimes b/c programmers don’t put in all the natives, if I am correct.

I’m using LibGDX which is an AMAZING framework that runs on all desktop operating systems, and iOS and Android, without altering your code. LibGDX is based off of LWJGL, OpenGL, OpenAL, and stuff like that though. Click my Github link on the main post to see some of the code in action.

http://libgdx.badlogicgames.com/

Nah. I’ll make one game maybe in libgdx. Then I’ll make my own library. I like to know that I made the framework, rather than just take someone else’s work.

Added what I’ve done in the past day as a pre-release on Github. Basically new falling animations, and under the hood optimization.

For the next week I will focus on organization, and re-programming and re-thinking the way things are rendering, and attempting to make it more centralized and organized. Right now the way the program renders things in general feels unorganized and messy, and I will aim to fix that.

Once that’s done in my eyes, I will add menus, music, statistic tracking, and then put up another pre-release.

Current Release: https://github.com/Elsealabs/Stacker/releases/tag/0.1.1

The new animation is making it looking VERY much better!
For a small winning animation without having to wait for a new screen:
Maybe something coming from top destroying the tower line by line…

Hi there I just downloaded your new release. Unfortunately it doesn’t run :frowning:

Here’s the trace:

JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Unable to create OpenGL display.
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Unable to create OpenGL display.
	at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:212)
	at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setupDisplay(LwjglGraphics.java:181)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:122)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
Caused by: org.lwjgl.LWJGLException: Could not get the JAWT interface
	at org.lwjgl.opengl.AWTSurfaceLock.lockAndInitHandle(Native Method)
	at org.lwjgl.opengl.AWTSurfaceLock.access$100(AWTSurfaceLock.java:51)
	at org.lwjgl.opengl.AWTSurfaceLock$1.run(AWTSurfaceLock.java:94)
	at org.lwjgl.opengl.AWTSurfaceLock$1.run(AWTSurfaceLock.java:92)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.opengl.AWTSurfaceLock.privilegedLockAndInitHandle(AWTSurfaceLock.java:92)
	at org.lwjgl.opengl.AWTSurfaceLock.lockAndGetHandle(AWTSurfaceLock.java:66)
	at org.lwjgl.opengl.MacOSXCanvasPeerInfo.initHandle(MacOSXCanvasPeerInfo.java:57)
	at org.lwjgl.opengl.MacOSXDisplayPeerInfo.doLockAndInitHandle(MacOSXDisplayPeerInfo.java:56)
	at org.lwjgl.opengl.PeerInfo.lockAndGetHandle(PeerInfo.java:85)
	at org.lwjgl.opengl.MacOSXContextImplementation.create(MacOSXContextImplementation.java:47)
	at org.lwjgl.opengl.ContextGL.<init>(ContextGL.java:132)
	at org.lwjgl.opengl.Display.create(Display.java:847)
	at org.lwjgl.opengl.Display.create(Display.java:754)
	at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:208)
	... 3 more

I’m running OSX so maybe that’s part of the problem.

The art style is really nice from what I can see though ;D