Quantum - Free RTS


http://www.file-pasta.com/thumb/b1a497de3059978fcc1f49d421e9a3f66b32fc8c.jpg

http://www.file-pasta.com/thumb/0f26fc9af7030652283018aefc894af821f0ff03.jpg

http://www.file-pasta.com/thumb/d821d1458cdb5280864b967f64c4ee4e3873fdb3.jpg

Hi there,

i’m new here so before i start spamming let me introduce myself: my name is mario, fulltime software developer in real-life, hobbyist game developer in my free time. The images above are from my game Quantum which is sort of a remake of Dyson, a real time strategy game. As i love Dyson i was offering the dev. team to help out with writting the multiplayer part for it. Sadly this did not work out as the guys are currently rather busy which is understandable. I thus started to write a multiplayer variant of Dyson in agreement with the Dyson dev. Alex in january and the results i want to present here.

In Quantum you are in control of creatures that orbit planets. You can colonize new planets by moving creatures to them. To create new Creatures you have to build trees on the planets. The new born creatures will then inherit certain properties from their home planet. The goal of the game is it to eliminate all enemy creatures and overtake all their planets.

Quantum is written in Java with a little help from Jogl and Beanshell. It offers the following features:

  • Single- and Multiplayer mode over Lan and the Internet
  • Automatic Server discovery
  • A simple in-game map editor
  • Scriptable bots with beanshell
  • Simple recording and playback of battles
  • Auto-Updater
  • thousands of creatures at your command :slight_smile:

Currently Quantum misses a sound system which i’m going to implement this week. There’s a couple of minor other features that haven’t made it in yet but overall the game is in a very playable state. It was tested on Windows Xp/Vista as well as on Ubuntu 8.04 and 8.10. I tried it once on a macbook pro and it worked except for the shaders. for now i can give no guarantees that it will work properly on that plattform. I’ll try to test it over the next 2 weeks.

As a minimum requirement you will need a geforce 2 class graphics card, a 1.5 ghz cpu and 64MB of Ram. Be warned though, it will not look very pleasant on such a system. For maximum eyecandy you should call a geforce 6 level graphics card your own as well as a dual core cpu. You’ll also need Java 1.5 installed.

To play the game simply download the zip file below, extract it and double click on the file quantum.jar if you are on a windows system. For other systems follow step 1 and 2 then open a console, change into the game’s directory and execute java -jar quantum.jar. Make sure to start of with the tutorial in the game, accessible via the main menu. the rest should be self explanatory. if it is not then please let me know! I’ll make a proper installer and executable launcher once the game reached feature freeze.

I’d be very interested in any feedback, be it technical or game related. In case you encounter a bug please report it and attach the file log.txt to your post if you find the time.

Thanks for reading this far and please forgive that my first post is spam.

website: http://apistudios.com/hosted/marzec/quantum
download: http://apistudios.com/hosted/marzec/quantum/click.php?url=quantum-1.31-pack.zip
webstart: http://apistudios.com/hosted/marzec/quantum/quantum-webstart.php
source: http://code.google.com/p/quantum-game/

for starts. WEBSTART please. pretty good game though. I only playes it once. and I think I got how ot play it.

Hi!

I agree with him. Please use Java Webstart (you can look at my own JNLP file of my game that relies on JOGL too), it will be easier. I cannot test it as my graphics card has no shader support. Could you simply deactivate the shaders when they are not available please?

works great here (ubuntu 8.10, geforce 7950) and quite fun too!

Signing the jar and getting Jogl and Networking to wirk with Webstart wouldn’t be a problem. However, Quantum allows you to create new Maps, create Bots as well as record and save the games you played. All of this is file based and I have no idea yet how to make that work relieably. Also, in case of bug it would be nice to get the log file. I don’t know where the user can find that. I know downloading the zip instead of directly using webstart is annoying i will try to fix this as soon as possible.

Concerning the shaders: they will be turned of by default if your graphics card does not supprort them. you can play the game just fine without them. However, it will not be pretty.

Thanks for your feedback and continue letting it come please!

Edit: after researching webstart a little bit more i’m kinda stuck. i see no way to deliver the content creation features via webstart. would a real installer be good enough?

I all my games, when I needed to save a file to disk, I use the users home-directory, nobody ever complained so far :slight_smile:
User home directory is:
String userDir = System.getProperty(“user.home”);

And, I agree, use webstart. I never try games that are not webstart anymore.

Hm, that seems easy enough. I’d need to change quite some things in the code but it’s worth it. Thanks for the hint. I’ll try to make a webstart version as soon as possible.

I don’t like webstarts, so I’m fine with
just wanted to let you know that not all do like webstarts =P

WHAT!!! how can you not like webstarts!!!

I’m really curious about your game. Since I have rare occasions to try games here, I won’t spend time installing your game. As soon as it’s webstartable, count me in.

Hi there!

i took your criticism concerning the absence of a java webstarter for quantum and fixed that. You can find the link to the webstart in the first post. Two things: first you will loading a php file. As i’m not in control of the server i can’t set the mime-type for jnlp files correctly so i had to do some php magic. Second, and more important: the webstarter version will create a directory quandum in your home folder where maps, bots, game recordings and logs files will be downloaded and saved to. Everything you create with quantum will be stored there. i’ll add a “Uninstall” button to the webstarter version which will remove the directory. I couldn’t come up with a better solution. Thanks to markus.borbely for pointing me in the right direction.

This is an experimental build. I tested it as much as i could but there could be still some bugs. If you encounter any please post the content of the file log.txt here.

Thanks a lot for all the feedback!

Interesting game. Here are my comments:

  • I really like the graphics style
  • tutorial is long to read. Try to summarize.
  • text in tutorial cuts lines at incorrect places. This makes reading a bit hard.
  • do you plan graphics in the background? That would enhance the visuals.
  • do you plan to support full screen? With the style I think full screen would be really cool.
  • when will we have music and sound?

Keep up. :slight_smile:

  • thanks, altough i have to admit that it’s the cheapest thing i could come up with
  • i’m aware of this. being not a native speaker that is kidna hard for me. maybe some with the skills would like to volunteer? :slight_smile:
  • the missing word wrap is on my todo list. i hope it will make it into the next version
  • atm the graphics have the lowest priority. i want to focus on the community aspect of it with people creating and sharing content in game. i will give the graphics some overhaul if i find the time though.
  • full screen will be in the next version. it’s just a couple of lines.
  • i’m currently recording some samples i’ll use to create a dynamic music system. we’ll see how it will work out, it will probably take another 2-3 weeks until i can release it.

Thanks a lot for the feeback ( i should really get a new phrase for that :slight_smile: )

[quote]- i’m aware of this. being not a native speaker that is kidna hard for me. maybe some with the skills would like to volunteer?
[/quote]
I guess it’s much more about how to express your thoughts

i guess i’m lacking a bit in that area too :slight_smile:

I noticed that rare are people who are both strong in math/sciences and languages but we can always improve nonetheless.

cool game, took me a couple tried to finally beat it with 4 bots :slight_smile:

Hello

Your game looks like an interesting take on the conquest-style gameplay, and I would really like to play but I get the following error when trying to run the webstart:

java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.sun.javaws.Launcher.executeApplication(Unknown Source)
	at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
	at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/sun/gluegen/runtime/DynamicLookupHelper
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at javax.media.opengl.GLDrawableFactory.getFactory(GLDrawableFactory.java:106)
	at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:520)
	at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:131)
	at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:90)
	at quantum.Quantum.<init>(Quantum.java:72)
	at quantum.Quantum.main(Quantum.java:132)
	... 9 more
Caused by: java.lang.ClassNotFoundException: com.sun.gluegen.runtime.DynamicLookupHelper
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	... 39 more

and the executable jar:

[FileManager] path to quantum is 'C:\Documents and Settings\user/quant
um/'
[FileManager] path to quantum is 'C:\Documents and Settings\user/quant
um/', returning file 'C:\Documents and Settings\user/quantum/./'
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/gluegen/runti
me/DynamicLookupHelper
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at javax.media.opengl.GLDrawableFactory.getFactory(GLDrawableFactory.jav
a:106)
        at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java
:520)
        at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:131)
        at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:90)
        at quantum.Quantum.<init>(Quantum.java:72)
        at quantum.Quantum.main(Quantum.java:132)
Caused by: java.lang.ClassNotFoundException: com.sun.gluegen.runtime.DynamicLook
upHelper
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        ... 30 more

hm, looks like jogl can’t find any bindings. here’s a quick check list that will help me help you :slight_smile:

  • what flavor of windows are you on? Looking at your home directory i assume it’s windows xp. 64-bit or 32 bit?
  • what kind of graphics card do you own?
  • i assume you used the webstarter. in that case jogl does some magic which seems to have gone wrong. try clearing your java cache.
  • you could also try the zip instead of the webstarter. simply download it from here. extract the zip to a folder of your liking and then double click the quantum.jar file.
  • another problem could be having another version of the file gluegen-rt.jar in you classpath. please check if that is the case by searching for the file on your harddrive(s). if you find more than one especially in the java directory this is the most likely cause for the problem. the most likely location for a conflicting file is in lib/ext in your java directory. many tutorials suggest to install jars there leading to such problems.

i’m sorry for the inconvenience i’m totally new to this webstarter business. hth and thanks for the feedback.

  • I’m running on windows xp 32-bit
  • My graphics card is Nvidia Geforce FX 5200
  • I used both the webstart version and the executable jar. Both gave the same error
  • Clearing the cache does not help
  • gluegen is on my computer, but it is not in the java directory or any of its subdirectories (it’s in some project darkstar-related folder)

It’s no problem, I guess it’s just some little quirk with my system. I’ll try it on my laptop later. :wink: