Conquer - LWJGL Turnbased Strategy

Fullscreen didn’t work for me.
Windows XP, ati radeon 9600XT

Oh, it seems the game is missing a ‘You’ve Won!’ message, or is there more to it than capturing all the planets? Playing on seems a bit useless.
And another thing, IMHO seeing the contenders ships move through the galaxy adds more excitement to reading a message afterwards about your planet being sacked, or succesfully fending an attack off.

Great looking font and such though, keep it up!

[quote]Also, Conquer is now listed on GameLizard. Check it out on the main page :slight_smile:

http://www.gamelizard.com/
[/quote]
I’m sorry for the rant that follows, but I’ve seen it lately with nearly every webstart application announced here: The certificate is expired.

I’ve already a bad feeling with all those self-signed certificates. For a website which looks like a professional service this is very unprofessional. I understand that you’re providing a free service here so that it might be too expensive to buy a certificate from a trusted authority but there’re other solutions.

And please, at least make the date valid because otherwise you get the feeling that nobody really cares any more. The Malohkan certificate expired 5 months ago.

Wurmonline’s certificate is even worse and did expire in December 2003. Mojang Specifications didn’t even bother to fill in the usual subject data. It’s again a website of a business of five persons, risking too loose all trust by issuing a suspecious certificate. Okay, perhaps only my trust because you all know these guys from the forums already.

Guys, anybody hacking your server could create a look-alike certificate and provide a hacked version of your software, adding spyware or else.

So at least, I’d recommend to provide a self signed CA certificate separately so that people can add this to their web start configuration (I know, i know certificates PKIs are a difficult matter and perhaps no user understands them but I think then they need to be educated) and then use a normal certificate (issued by that CA) for distributing our software. This way, if you keep the CA’s private key save, the risk is much lower because nobody can forge the certificate.

Ideally, the root certificate comes from some trusted authority like “java-gaming.org”. They’d then have to allow downloading (via SSL) the root certificate and maintain the private key, responding to cert requests from game designers.

Another opportunity would be that all games listed at “javagamesfactory.org” would use certificates issued by a CA at that site. So people need to add this trust root only once and have a better feeling of trust - and we do trust bla^3h, don’t we :slight_smile:

Stefan

I’d like to add a short review of the game:

I find the text difficult to read. The font would work for titles or headlines but I’d prefer something more readable for the body text.

I had trouble with the UI. It’s difficult to distinguish the window title bar from the window’s body area. It’s also difficult to distinguish the window title bar from the pull down menu.

New - Game - Settings - Player - Setup

looks exactly like

Menu - InfoDis… - GridBo… - Console

I tought that the fricky flashing thingy was the input focus. But I couldn’t enter anything before clicking into the nearly invisible input field. It’s also irritating that the flashing moves on into the next field. I had no clue what to enter into the Type field and there’s also no visible clue what to do after entering

Stefan - Human - A

I pressed Next (because that’s the only visible button thingy) but that didn’t add me to the players :frowning:

On the next screen, even if the number of neutral planets said 5, I’m pretty sure the board under the dialog had only one planet. I switched to 6 and back to 5 to get 5 random planets.

Instead of New Game (where I feared that the new game dialog would restart) I’d suggest a button label like “Start.”

I’m starting at W. The console says “Stefan’s turn” and I see no visible effect when clicking on InfoDis… GridBo… or whatever. Okay, the focussed subwindow seems to get highlighted but the window itself has no visible clue.

I click on W, then Q and wonder how many ships I have… after I noticed the dark grey text in the Info Display, saying 12, I entered 12. It’s a bit unfortunely, you click on W, (then there’s the info), then on Q (no info) and then I moved to mouse back to the fleet movement subwindow so I missed the info. No I didn’t really bother why there’s a 12 displayed on the map. Now I know :slight_smile:

I guess, I need to press Next Turn. The console said that Q held off my attack… and I don’t have any information about that planet. Guess I wait five turns to try again with 50 ships. It seems not possible to send smaller fleets to spy… but for fun, I send a single ship to both computer players.

After 3 turns, the computer player’s have conquered they neighbor planets, so I send my 38 fleets…

Strange… next turn, I’ve 44 ships on that planet. Seems that I not only conquered the planet but also could produce new ships - unexpected.

It seems there’s no way to see how long my fleets need to reach a planet. It would be nice if the info display for the targeted planet would reveal that info. Otherwise I’m quickly lost in fleet movement.

It would also be nice if production capability could be used to create defense installation or another kind of space ship. Currently, I’m simply moving fleets towards to border, crushing the computer… victory in turn 24 :slight_smile:

Nice game with a few usabily issues. Thanks for providing it.

Stefan

@Skippy: So far everyone that told me they’ve had that problem simply needed to click the link again, to find that Webstart hadn’t given them the latest version. Try it again and see if you still have that problem.

@Warren_Head: Sorry to hear that! I blame LWJGL :wink: I’ll keep working on it until I can get it right. It works fine for me on Windows.

The reason why your game hadn’t finished was because the enemy still had ships out. This means, you can send ships, have your planet taken, and still have a chance to let that fleet of ships capture another planet and keep you back alive. When the game is done, a window will pop up showing you the resulting statistics of the game.

As for showing enemy ships… that really kills the strategy element of the game :wink: However, I may add some upgrade-type features in the future allowing you to buy scanners that will let you see incoming ships that are say… 1 or 2 turns away.

@sma: I thought I recreated that less than 2 months ago… weird. I don’t even know how to see how old it is :slight_smile: I’ll redo it again I guess. As for the other certificate types you mentioned… I don’t know of them. If they cost money, I don’t think I’ll go for it any time soon :slight_smile: I’m a broke college kid who has enough trouble getting gas money.

I’ll comment on your game-oriented analysis in a bit. Thanks for the responses!

[quote]I find the text difficult to read. The font would work for titles or headlines but I’d prefer something more readable for the body text.
[/quote]
I agree with you there. I’ll see if I can get something better for that.

[quote]I had trouble with the UI. It’s difficult to distinguish the window title bar from the window’s body area.
[/quote]
I’m afraid I don’t see the problem… could you be more specific?

[quote]It’s also difficult to distinguish the window title bar from the pull down menu.

New - Game - Settings - Player - Setup

looks exactly like

Menu - InfoDis… - GridBo… - Console
[/quote]
I don’t know what you mean about that. They’re different font sizes, different colors, have different borders, and go in different directions… so I don’t understand the issue when you say “looks exactly
like”. Also, if you’ve ever used Windows or a similarly-themed operating system, the UI should look familar and work in a familiar fashion. Perhaps if you could give more specific comments as to your problems I might be able to help.

OK I can surely make changes to help that. In the future I’ll have drop-down lists for the options, but I just haven’t reached that yet. Also, if you have questions about what to do, try clicking the ?'s you see at the top right of each window. It’ll answer those very questions for you. Does that need to be made more intuitive? I think other applications have those for this reason…

Both of those are bad bugs. Thanks for pointing them out! They’ll be fixed ASAP.

OK :slight_smile: I guess that’s not a complaint?

Yeah, it’s just part of the game. At the end of each turn, every planet generates new ships, regardless of whether or not combat has taken place.

When you click a starting location, then click a destination, you’ll see some >>>> looking things pointing toward the destination. Count those, that’s how long it’ll take in turns. If you want to know later after you’ve sent the ships, put your mouse over the fleet and it’ll tell you when it left, and when it’ll arrive.

That’s a neat idea :slight_smile: After getting the current state of the game as clean as possible I hope to introduce some new features like that (online multiplayer capability being the top priority) without making it so complicated that it discourages new players.

Thanks for giving it a try!

OK, I’ve uploaded a new version. I think I fixed everything I said I would (minus the new font). I hope that’s true :wink:

EDIT: OK I changed the Font in the message window’s to Verdana, so any time you actually have a lot of text to read (except for the Console) it should be plenty readable now.

[quote]@Skippy: So far everyone that told me they’ve had that problem simply needed to click the link again, to find that Webstart hadn’t given them the latest version. Try it again and see if you still have that problem.
[/quote]
IIRC it was your app that made me flush my JWS cache, because it poped up a message that there was probably an update-bug in JWS and then just closed-down. (which is evil as many users don’t have a clue what JWS is, and how to clear its cache)

So I had an empty cache, ran your game and it kept throwing exceptions, I just tried again, and it still happens.

Yeah, it is evil, but necessary. Until Sun fixes the bug themselves, I simply have to deal with it. That IS the only way to solve the problem as Webstart is currently too stupid to ever refresh the .jnlp file on its own.

As for your error message, that’s very strange! I’ve seen it before, and each time it was because they had a copy of the .jar that didn’t include the QueueEntry class, which was a mistake on my part. I re-uploaded a fixed version, and it solved the problem. Anyone that told me they had that problem, I asked them to reload. Everyone so far says that fixed the problem. I’m sorry to say I don’t have another solution for you!

EDIT: By the way, I’m sure you don’t have the latest version because thost line numbers don’t even come close to matching up with the methods they refer to.

[quote] As for showing enemy ships… that really kills the strategy element of the game
[/quote]
Sorry, but I have to disagree with you on that. I actually think it adds a strategic element.
Mostly because right now you cannot see whether you are being attacked or not. If you cannot see the enemy, you will not acknowledge the option of being attacked by them(certainly not at the first game). If therefore your planet ends up being captured, well damn, where is the fun in that? Your planet has been taken over by an invisible strikeforce. I really feel like going at it again?
If you do see a few dots coming towards you, then you could think about the following questions:

  • with how many will they be?
  • in how many turns will they arrive?
  • with how many leftover ships can I attack something myself right now?

If in multiplayer mode, you could fool other players by sending groups of only 1 ship to attack them at one place and sending a huge pile in another direction.

Adding the visual clue really adds tension because it gives the player the notion of: you KNOW I am coming, you HAVE to act. Whereas now you could lose a game, but putting you loss of to: I couldn’t know he was coming, just bad luck.

Adding scanners and such is cool too. I know you already said that you made this game purely for testing the gui, so I understand the lack of polishedness in the gameplay. But I’m interested to see where you will lead it to :slight_smile:

Last run (where I lost hideously) showed an error

org.lwjgl.opengl.OpenGLException: Stack overflow (1283)
  at org.lwjgl.opengl.Util.checkGLError(Util.java:56)

  at org.lwjgl.opengl.Display.update(Display.java:515)

  at conquer.LWJGLRunner.drawBackbuffer(LWJGLRunner.java:415)

  at conquer.LWJGLRunner.runGame(LWJGLRunner.java:370)

  at conquer.LWJGLRunner.main(LWJGLRunner.java:54)</sup>

The gamesplay is modelled after a game called Konquest. Right now it works just like that one. However there was one small problem. The only multiplayer capability had to be local. So to play with a friend, we’d sit beside each other and use the game controls. The game put **'s in where you put in #'s for the ship, so that much was hidden, but you did know when and and where from and where to the fleets were moving. This really really killed the fun of the game. There is strategy in knowing you CAN be attacked, and having to defend against what you see being possible in the future, like Chess. When you are able to see everything moving, then it’s just an action game. You see an enemy, you respond to the enemy. That’s not strategy. My friends and I who love the original game have tried that and it’s really just not fun knowing that much. We’ve spent hours upon hours of playing and we all agree that that’s not how the game should be played. That’s why I hope to develop this into an online multiplayer game so we can avoid that sort of thing. I hope that much is enough to convince you that hidden ships are necessary for the structure of the gameplay :slight_smile:

Well, ofcourse you were right, and I expected clearing the cache would have been enough, but no…

I deleted the entire webstart directory, and now everything works fine…

JWS makes me cry… a little.

[quote]Yeah, it is evil, but necessary. Until Sun fixes the bug themselves, I simply have to deal with it. That IS the only way to solve the problem as Webstart is currently too stupid to ever refresh the .jnlp file on its own.
[/quote]
FYI off the top of my head, this isn’t actually true; but…fixing it requires you to run a custom server, or a J2EE server into which you can embed the JNLPServlet, because you need to switch webstart into it’s “preferred” codepath: the “versioned download protocol” (the default for ordinary webservers is called something else, e.g. “timestamp download protocol”). There’s a clear sense that Sun wants you to only use the versioned download protocol, even though it’s impossible on ordinary HTTP servers, since it requires you to inspect the incoming request and dynamically serve different data.

This, incidentally, is part of why JGF runs a proprietary web server: so that it can be easily upgraded to the versioned protocol in the near future. The versioned protocol fixes a fair few bugs in Sun’s default/ordinary download protocol…certinaly, the code would have been a lot easier to write.

Warren, I THINK I fixed that crash you got :slight_smile:

[quote]@sma: I thought I recreated that less than 2 months ago… weird. I don’t even know how to see how old it is :slight_smile: I’ll redo it again I guess. As for the other certificate types you mentioned… I don’t know of them. If they cost money, I don’t think I’ll go for it any time soon :slight_smile: I’m a broke college kid who has enough trouble getting gas money.
[/quote]
I tried you game again, and it’s still the same invalid certificate :slight_smile:

To check certificates, there’re at least two ways. If you get the Webstart security warning dialog, click on “Details.” An ugly (it seems the Java Webstart team is unable to create anything but ugly dialogs with bad usability) dialog with certificate details opens. It shows a number of fields from the certificate.

But let me first try to explain how an X509 certificate based public key infrastructure (PKI) is supposed to work.

RSA or DSA based cryptography can be used to sign data, assuring both that nobody tampered with the data and that the data is indeed from the person who said so.

You have a pair of keys (very long numbers) which are used to encrypt or decrypt data. One key must be kept private, the other can be published. Data encrypted with the private key can only be decrypted with the matching public key (I won’t go into details why this is so). This way, assuming that the private key was really kept private, I can take your public key and verify that the data you said you encrypted were really encrypted by you - nobody else could have done it without the matching private key.

So to sign something, you compute a cryptographic hash (MD5 or SHA1 are two well known algorithms) and encrypt that hash value. This is called signing. The encrypted hash value is the signature. The cryptographic hash has two important features: changing a single byte will result in a diffferent hash value and you cannot recreate the data just from the hash value.

Now, to verify the signature, I need to hash the data myself (using the same algorithm of course), decrypt your encrypted hash value and compare both values. Is is called signature verification.

I need your public key for that and this is where certificates come into play. A certificate is a (trusted) statement that a certain public key is from a certain person.

That person is the so called “subject” of the certificate. The certiciate stores a so called X500 name, which is that funny looking C=US, ST=North Carolina, L=Greensboro string, something that predates the idea of an URL. It says that you’re from the US, state NC, town Greensboro and so on. That X500 name is supposed to identify you.

But anybody could have created that certificate, just taking a public key and adding that X500 name.

Therefore, certificates are always issued by a trusted authority. Some other person I need to trust. That “issuer” says by signing the whole certificate that the subject data is correct. Signing a certificate works exactly like signing any other data and as you might guess, this is a recursive thing.

To verify the signature of the certificate, I need the certificate of the issuer. And I need to trust that certificate. Therefore, one talks about certificate chains which establish trust from a really trusted certificate authority (also called CA) to your certificate.

Most webstart applications (unfortunately) use self-signed certificates where the guy who created the certificate simply says “trust me”. That’s of course of no real value and computely bogus if it comes to real security. I could recreate your self-signed certificate to the byte. Anybody could.

Better let a trusted authority sign your certificate. Unfortuntely, these authorities normally take money for that service :slight_smile:

If a CA signs a certificate, it assigns a serial number (which can be used to revoke a certificate later on - for example if the private key leaked into the public) and a validity. A certificate is only valid for so many months.

You should be able to see all that information in the details dialog of Webstart. Your certificate expired “Sat Dec 18 22:55:12 CET 2004”

I said that there’s a second way to look into certificates. Windows comes with a nice viewer that opens automatically if you double click on a “*.cer” file. You can export those files from a Java keystore. Unix fans can use the mighty openssl tool to print certificate details.

But I talked more about certificates I ever wanted and add a few comments to the game in my next posting.

Stefan

I hope I’m looking at the latest version. I flushed my webstart cache but I still see this early-eighties-computer font everywhere. Update: Oh you said that you didn’t change the font, okay.

That flickering focus moves from “Add human player” to “Type” when I type the first letter. Why?

I think, I’d really prefer if the setup screen is not over the starmap when I try to randomize the stars so that the game looks interesting. I’d also like to suggest to distribute the players better so that there’s a certain distance. The space right to the starmap should be enough to put the controls there. Or do it like the original and display a tiny minimap.

Rearding your subwindow title bars. Your windows use a white font on a black background. So does your title bar and your menu bar. Therefore it’s difficult to distinguish. Typically, the window that has the input focus has an emphasis. This isn’t the case with your window system. Font size (yes the menu font is slightly larger - which makes the menu more important as it should be) doesn’t really help me. Do you develop on a very bright TFT? It seems that there’re dark gray borders around the red labeled buttons but I can barely seem them and overlooked them completely before.

Regarding help: Providing help windows is good, but even better is if you make the UI so that you don’t need to provide help. Something like “don’t comment bad code, rewrite it” :slight_smile:

I just read the help on the Grid Bord and zoomed into the starmap. Something I though where leftovers from misaligned graphics operations (sorry) are actually tiny ships. I’ve a 1600x1200 display and played the game in a window - that might explain that I overlooked that before.

Regarding counting: Don’t make me count. I don’t want to infer information that a computer could present me directly. That’s what I’d call ease of use.

Stefan

[quote]I hope I’m looking at the latest version. I flushed my webstart cache but I still see this early-eighties-computer font everywhere. Update: Oh you said that you didn’t change the font, okay.
[/quote]
Some people like it, some don’t :wink: I’ll notify my artist we have another vote against the Font hehe.

This was an attempt to keep people from missing it and playing a game without any human players (just the two default AI players) and being upset that they lose so quickly without playing… having never added themselves to the Player list. I suppose the pop-up warning when starting a game without Humans is enough now… I’ll remove the flashy stuff and see how that goes.

BTW the flash moves from one field to the next as if to say, “good, you got that box, now make sure you don’t forget to do this one either.” Any ideas on how to make that more intuitive? Just let the user figure it out?

Since the Randomize button is on the far left of that window, you can simply drag the window to the right a bit, and voila, it’s completely out of the way and you can still tweak all the planets how you want :slight_smile: I’ll see about adding a mini-map in addition to this anyway.

The red labelled “Menu” button is equivalent to the Windows “start” button. The following blocks are each of the Frames that are active. You say the borders are too hard to see… but on Windows as I see it… maybe it’s just my theme, I have NO borders to those boxes, so I don’t think it matters if you can’t see them.

The window that has input focus has it’s corresponding box at the top highlighted yellow. It’s the “New Ga…” that you see on the 800x600 resolution. I’m sorry I still don’t understand what’s wrong with this setup.

I’ll do my best to keep working with that in mind :slight_smile:

Yup they’re there. If your window is too small to see things, zoom in or change your resolution. Perhaps if that’s really an issue you can give me a suggestion to make it better?

Counting? I’m not sure what you’re referring to.

ahh and about the certificate. I’ll renew that soon :slight_smile: I don’t really see a great need for having to pay for a “special” certificate when the truth is, ANY software you download and run outside of Webstart automatically assumes full permissions. Why do I have to do extra work to convince people I’m safe when just downloading and running software and never seeing any “certificate” is already the norm?

Conquer now saves the following:

  • Options settings
  • Player list
  • Map size
  • Planet number

I also added a mini-map to the Planet Setup screen so you can more easily set up new games.

It used to work for me. Now I get the following exception:


java.lang.NoClassDefFoundError: com/sun/org/apache/bcel/internal/verifier/exc/InvalidMethodException
	at conquer.Conquer.<init>(Conquer.java:98)
	at conquer.LWJGLRunner.<init>(LWJGLRunner.java:98)
	at conquer.LWJGLRunner.main(LWJGLRunner.java:55)
	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.continueLaunch(Unknown Source)
	at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
	at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

I cleared the webstart cache and it still happens.

very interesting! I never would have forseen that. Thanks! The fixed version has been uploaded.

That could be your 16k entry. It is somewhat addictive. Simple and interesting.