early version of Cube-Space

Hi all,

I’ve put a (very) early version of a game I’ve been working on the last 2 weeks. It’s a (light) 3D RPG with a Virtual Reality theme (which me trying to get away with horrible programmer art by calling it a Theme ;)) with all randomly generated levels. It’s far from complete, but it’s playable.
It looks very basic, also because I’ve been developing it with porting it to Android later in the back of my mind.

You only use the arrow keys to control and you battle by just standing next to a baddie.
Moving and battling costs power (which regenerates by moving still).
When you win a battle you get an ‘Orb’, which you can trade between levels for power-ups.

I tested it on Windows and Linux, but is should work on OSX and Solaris too.

All feedback is appreciated :slight_smile:

JWS link
www.gagaplay.com/cube-space/test/cube-space.jnlp

http://www.gagaplay.com/cube-space/test/title.png

http://www.gagaplay.com/cube-space/test/ingame.png

I gave it a shot, reached level 3 then died :frowning:

looks pretty nice, though I think you could use more colors (health box is blue, walls are blue, guards are blue).
For the controls, definitely need a “run” mode and strafing …
It is always reported where a door was open, but there’s no indication of your current coordinate ! a Minimap maybe?

all in all, good start ! Oh and Looking forward to seeing a long ranged attack !

Thanks teletubo, great feedback :slight_smile:

As for the controls, it had the typical FPS type controls earlier, but then I decided I wanted the controls to be as easy as possible for the Android version later, but you’re right about the strafing so I’ll add that.
It is supposed to become a ‘casual’ kind of RPG, not a fast paced action game (again, with phones in mind).

The minimap is on my todo list and ranged attacks are now planned too :).

Update: You can now strafe with the ‘.’ and ‘,’ keys

Tested on OS X and got this Exception:

java.io.FileNotFoundException: http://www.gagaplay.com/cube-space/test/lwjgl_osx.jar
	at sun.reflect.GeneratedConstructorAccessor3.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1368)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1362)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1016)
	at com.sun.deploy.net.BasicHttpRequest.doRequest(BasicHttpRequest.java:229)
	at com.sun.deploy.net.BasicHttpRequest.doRequest(BasicHttpRequest.java:113)
	at com.sun.deploy.net.BasicHttpRequest.doGetRequest(BasicHttpRequest.java:78)
	at com.sun.deploy.net.DownloadEngine.actionDownload(DownloadEngine.java:1186)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(DownloadEngine.java:1529)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(DownloadEngine.java:1507)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(DownloadEngine.java:1613)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(DownloadEngine.java:1538)
	at com.sun.deploy.net.DownloadEngine.getResource(DownloadEngine.java:217)
	at com.sun.javaws.LaunchDownload$DownloadTask.call(LaunchDownload.java:1739)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:637)
Caused by: java.io.FileNotFoundException: http://www.gagaplay.com/cube-space/test/lwjgl_osx.jar
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1311)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
	at com.sun.deploy.net.BasicHttpRequest.doRequest(BasicHttpRequest.java:190)
	... 14 more

oops, sorry about that. Can you try again?

I am ‘playing’ it right now, but it seems there is only one strategy: waiting for your health bar to reach 100%.

Too bad it takes rather long. I find myself minimizing the game, browsing a bit, doing some stuff, and switching back to see whether I already have 100/100. :-\

Update:
It seems you are using floats/doubles for “STR” (strength?), as it reads: 14.3999999999999999999

[quote]I am ‘playing’ it right now, but it seems there is only one strategy: waiting for your health bar to reach 100%.
[/quote]
Yes, the regeneration thing was a bit of a cop-out I admit… You can upgrade your regeneration speed though (perhaps another cop-out ;)). Any ideas?

[quote]It seems you are using floats/doubles for “STR” (strength?), as it reads: 14.3999999999999999999
[/quote]
Yes, I forgot to round it in the display :slight_smile:
I just fixed it.

Making walking around decreasing your power is really harsh. When you’re almost dead, and trying to get away, you die from… walking away.

Further, the power-regain should accelerate. I’m at 2pnt/sec now, waiting for 120, which means after each attack I have to wait ~60sec :o

I’m in ‘reality #4’ btw… very harsh.

I had 17 orbs, bought a ‘regenerate speed’ for 6 orbs, and now I have 0 orbs :frowning:

I second that. Apart from the fact that it just doesn’t feel right to get a penalty just for moving around, it’s simply annoying. I’m standing in a large, empty room…i could proceed to the next room to get some power-up and continue playing, but i can’t because moving would kill me. That makes no sense IMHO.

That was it for tonight. I was almost in the next level, and lost keyboard focus. I tried to move back, nothing happened (obviously) and when I figured out what was happening (that took 2sec) I was dead. The whole game got reset, all progress lost. :’(

I have to admit I’ve not really taken much effort yet to balance things out.

You can in theory also kill guards by letting them move (they also lose power from moving). Perhaps I add a ‘power efficiency power-up’ to decrease the amount of power it takes to move. Or maybe I should just drop the whole concept all together? I kind of liked to idea that moving takes power as I thought it would add some tension.

[quote]I had 17 orbs, bought a ‘regenerate speed’ for 6 orbs, and now I have 0 orbs
[/quote]
Hm, maybe you bought 2 by accident? I’ll check if I made a mistake somewhere…

Make it less… boring. Maybe make moving consume fuel instead of health, make fuel another resource, that drains very very slowly, you should always have enough, unless you’re plain stupid… Make it a little more fast-paced, and make the fighting involve strategy: different weapons, different defenses, from tip-over to EMP bombs :slight_smile:

Also, make the floor reflection a bit more subtle (reduce the effect a whopping 90%).
And don’t forget mipmapping, your textures are flickering.

Maybe it registered my single depression of the spacebar as 2… who knows. Better enforce some pause before you handle new input.

Next one:

[quote]“Unsignierter Eintrag in Ressource” means: “Unsigned entry in Resource”
[/quote]

com.sun.deploy.net.JARSigningException: Unsignierter Eintrag in Ressource: http://www.gagaplay.com/cube-space/test/lwjgl_macosx.jar gefunden
	at com.sun.javaws.security.SigningInfo.getCommonCodeSignersForJar(SigningInfo.java:403)
	at com.sun.javaws.security.SigningInfo.check(SigningInfo.java:275)
	at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(LaunchDownload.java:1498)
	at com.sun.javaws.LaunchDownload.checkSignedResources(LaunchDownload.java:1268)
	at com.sun.javaws.Launcher.prepareResources(Launcher.java:1222)
	at com.sun.javaws.Launcher.prepareAllResources(Launcher.java:624)
	at com.sun.javaws.Launcher.prepareToLaunch(Launcher.java:332)
	at com.sun.javaws.Launcher.prepareToLaunch(Launcher.java:232)
	at com.sun.javaws.Launcher.launch(Launcher.java:121)
	at com.sun.javaws.Main.launchApp(Main.java:418)
	at com.sun.javaws.Main.continueInSecureThread(Main.java:255)
	at com.sun.javaws.Main$1.run(Main.java:115)
	at java.lang.Thread.run(Thread.java:637)

Nice game. I like the effect used when your power is low.

I notice that the gidrahs don’t follow you into adjacent rooms. Assuming that’s the case, why not just make it so that if you enter a room with no gidrahs in it your health instantly regenerates, and so does that of the gidrahs you are fleeing from.

Cas :slight_smile:

That would allow for some cheating: walking into a room for the sole purpose of instantly regaining your health.

Exactly. To be able to walk into an empty room though you’ve got to be able to escape it.

I reckon this game would be niftier maybe if the rooms sealed themselves behind you, so it’s one way through the maze. Or just some rooms.

Cas :slight_smile:

You can make it huge, by making it 3D. Getting reflections to work is ‘slightly’ harder though :slight_smile:

Currently they don’t follow you, but that might change (and probably will, at least for new types of enemies).

[quote]Nice game. I like the effect used when your power is low.
[/quote]
Thanks, I was rather pleased with that effect myself :slight_smile:

I’m planning to add more features to make it more interesting, while at the same time trying to keep it accessible.

[quote]You can make it huge, by making it 3D. Getting reflections to work is ‘slightly’ harder though
[/quote]
That could be cool, but it still is supposed to be targeted at Android phones in the end, so I don’t want to make it too demanding.
What I am considering though is the concept that the finish is actually a path down, and that you can also go back to the previous level. That would allow for the possibility of some typical RPG style ‘grinding’. A bit like Dungeon Master if you wil.
A bit of an issue I have at the moment though is that even when I fix the seed of java.util.Random in the map generator, there are often still slight variations in the generated maps in different runs. Although it could be kinda cool that a level has actually slightly changed when you go back to it, I can’t really understand why it is happening.