Automated webstart-maker: need game authors

[quote]That assumes that images only live in one directory. In fact, being a CMS, they live all over the place (because they are classified by what they’re attached to as much as by what they are) AND there’s no prefix to tell the filetype - you simply don’t know until the file has been identified and looked up in th eMIME mapping - and so it requires a more general-purpose solution.
[/quote]
Umm… no, I was actually saying that the servlet would live in one directory (whatever that may be), and it will look up and return the image from the CMS.

In any case, here’s hoping that you can get JGF fixed. :slight_smile:

/me was being brief on dialup :slight_smile:

I meant the HTTP path when I said “directory”, not “physical directory”.

The URL’s for images are “everywhere all over the site” partly for reasons of simple codebase attributes that make pathless names for all related resources Just Work.

[quote]If I understand what you’re saying…the secret is to also have JGF hosted copies of all of them, and a series of checkboxes:

Your game needs:
LWJGL: 0.94 ? 0.93 ? latest ?
JOGL: …
jME: …

etc. It can then automatically insert a link to an extension file from the appropriate technology.
[/quote]
Bah, just scan the classes in the uploaded jars to figure out what extensions are needed :slight_smile: (kidding, but it would be cool.)

Hey, it seems to be working now, on ALL web browsers.

So, could a couple of people try uploading their games again?

http://javagamesfactory.org/views/submit-game

Once the game is “created”, you get redirected to a temporary page where you can click on “alpha” to create a new alpha release.

Upload your JAR files (including nativelibs, but that probably wont work well, since there’s no option to select OS/arch …yet), then go to

http://javagamesfactory.org/views/all-games-list

and click on your game, and click on the “play now” link, and see if it works.

PS: it maintains counters of how often each game has been played. Doesn’t work well right now, since Webstart can laucnh anywhere between 1 and 4 hits on the webstart JNLP for each “play” of the game…

[quote]While the IE bug get fixed, you should allow developers to upload with another browser like Firefox. Simply add a notice on the welcome page saying that JGF has problems with IE to upload games.
[/quote]
There were some problems with all browsers too, that had to be sorted out :(.

Hi blahblahblahh,

I tried to create an entry for Mighty Bubbles but I got the following error on second try:


Please contact the admin / dev-team
Copy and paste everything below this line when contacting them


--------------------------------------------------------------------------------

Referer URL:/controllers/create-game

Throwable:java.sql.SQLException: Duplicate key or integrity constraint violation message from server: "Duplicate entry 'Mighty Bubbles' for key 1" GE-SQL: with SQL text = INSERT INTO games(name, description_sentence, description_paragraphs, webpage, requiresallpermissions, created) VALUES ("Mighty Bubbles", "Fight the water ennemies and save the drops with your powerful bubbles!", "

Mighty Bubbles is the story of a little girl who wants to save her world of the water ennemies invasion. Their goal is to take control of any source of water. There are multiple water trees. Each of them produces water drops and the ennemies want to consume all of them. You, as the little girl (or boy if you insist) have to capture all the water ennemies by throwing them bubbles. When an ennemy is captured, you must pop the bubble to eliminate him.

Your second objective is to retreive all the water drops taken by the ennemies and bring them back to the water trees. A water tree can't hold more than 6 drops so when one is full, you must fill up another one.

You have to play the game with the keyboard. Here is the key mappings:

* Arrows : Run * X : jump * Z : Shoot * A : Save Point * Esc : Quit the Game 

", "", 1, "2005-02-07 05:31:36.25")

Line Source File 
318 In SQLService.java 
117 ...called from bExpeditionGeos.java 
38 ...called from Geos.java 
42 ...called from CreateGameController.java 
142 ...called from CMSControllersService.java 
117 ...called from bExpeditionGeos.java 
38 ...called from Geos.java 
62 ...called from HttpPostControllerService.java 
251 ...called from bAsynchronousService.java 
330 ...called from bModule.java 
534 ...called from Thread.java 

I got another error when I tried the first time but I don’t have the stack trace. :-/

It seems that you have problems with existing rows in your DB. Seems to be related to primary key/foreign key.

Unsurprisinlgy, you cannot have two games with the same name !

Although thanks for pointing it out…I need to add a pretty error screen to catch that exception and explain it in words, not stack traces :slight_smile:

Check the games pages and see if your first attempt created a page (looks like it did, if it’s in the DB).

Otherwise, create a “dummy” game with a slightly different name, and give me the error from the initial submit attempt.

[quote] Unsurprisinlgy, you cannot have two games with the same name !
[/quote]
Of course yes! ::slight_smile: But I think you should not use the game name as your primary key but rather an auto generated one for example. In my opinion the name of the game should be used to validate the game unicity in the system.

I’ll try to recreate the game today to capture the first stack trace.

By the way, I forgot to tell you the work you did for JGF is tremendous! :slight_smile:

Thanks for your great work!

I’ve tried with a different name and I got the following stack trace:


Please contact the admin / dev-team

Copy and paste everything below this line when contacting them

Referer URL:/controllers/create-game

Throwable:java.lang.IllegalArgumentException: Must supply a game logo or developer logo which is an image file ending in .jpg
Line      Source File
64      In CreateGameController.java
142      ...called from CMSControllersService.java
117      ...called from bExpeditionGeos.java
38      ...called from Geos.java
62      ...called from HttpPostControllerService.java
251      ...called from bAsynchronousService.java
330      ...called from bModule.java
534      ...called from Thread.java

The problem doesn’t seem to be related to the logo image since I provided a .jpg

I used Firefox 1.0. I’ll try with IE to see if it’s related to the browser.

I got a different error with IE:


Please contact the admin / dev-team
Copy and paste everything below this line when contacting them


--------------------------------------------------------------------------------

Referer URL:/controllers/create-game

Throwable:java.sql.SQLException: Not a valid escape sequence: {Ô¯tíaNÓ/¯­eÔa&#402;M&#184;´ÒËêW×b4&#8220;½a½©â&#8222;±&#168;5&#166;çzç®b8piLq1Æ!ÄaZ®.óêïÜÙæz&#190;O«öbZÜòÉ&#8212;4&#188;Y&#65533;Ϥëatapá :t~sþ|þzùÊóÏ&#65533;¢i&#180;pXþ_k\"ã˨Ä047&#8224;â8DNós 5,À¡@)±ÏBì^ÏÁ-4rýC,ò î6æ6¯7ê&#65533;ø&#127;ÀßC¥ìxäÕDäɪÅÃ&#8221;H´lP&#65533;#&#180;M&#402;Ïq]9¶·ÿ9 ù±®Þè·÷^gxgòõ××t± h.84eÈ`Ü&#190;ae¡Ú&#8225;&#166;l1öN&#8250;&#65533;ú&#8230;¯Ð&#127;ÀÏ°tx²ã&#8224; cÃ+'xØ5µVàeç·7èf&#8230;æ+&#65533;gò{Ê~a&#65533;kqum >a´ÂÒ >·$&#65533;#&#8482;%Ce°â HÆ>,j SÂv´8é²d@ðþÀü¾ía`è»a&#180;ó½p0&#8224;,²5ü&#65533;6Ìb$$kz&#65533;ñ a&#8220;-÷¨ &#8220;IÕ$²º&#189;Mu1åõ´8â°&#8217;F&#65533; 7úm*ñ¼Iê1$sØ(Û9èv&#190;#<&#8216;$Fþ®úèzSÀàöÇY Ç.H&#8482;B`ðã Ç&#8225;¦uÇ&#180;x&#184;´àÈÐ&#710;IÂþs¨óSÐ~&#180;ÑÜ&#164;Ïsþ#{TH#¶hÓÑ&#8224;ÕJ²³4½&#65533;æ\¢&#402;ȱ*r3í½CÉBÎÜ7¿&#65533;ü=×bºÕè³&#180;e´x&#65533;¬&#8224;dñð´Â&#8225; (ÙââÞ|F1ædH#ÿÙ 

", "", 1, "2005-02-08 04:38:55.584") GE-SQL: with SQL text = INSERT INTO games(name, description_sentence, description_paragraphs, webpage, requiresallpermissions, created) VALUES ("Mighty Bubbles demo", "Fight the water ennemies and save the drops with your powerful bubbles!", "
Mighty Bubbles is the story of a little girl who wants to save her world of the water ennemies invasion. Their goal is to take control of any source of water. There are multiple water trees. Each of them produces water drops and the ennemies want to consume all of them. You, as the little girl (or boy) have to capture all the water ennemies by throwing them bubbles. When an ennemy is captured, you must pop the bubble to eliminate him.

Your second objective is to retreive the water drops taken by the ennemies and bring them back to the water trees. A water tree can't hold more than 6 drops so when one is full, you must fill up another one.

Keys to play: Arrows : Run. X : jump. Z : Shoot. A : Save Point. Esc : Quit the Game. -----------------------------7d52c582c0232 Content-Disposition: form-data; name=\"screenshot280\"; filename=\"D:\mighty_bubbles\images\screenshots\normal.jpg\" Content-Type: image/pjpeg

ÿØÿàJFIFHHÿáÉExifMM*abej(1r2&#8224;&#8225;i½ÈeeAdobe Photoshop 7.02005:02:06 21:53:24 ÿÿ  Òe(&&#8250;HHÿØÿàJFIFHHÿí Adobe_CMÿîAdobed¤ÿÛ&#8222;            ÿÀ`¤\"ÿÝÿÄ?a a a 
", "", 1, "2005-02-08 04:38:55.584")

Line Source File 
318 In SQLService.java 
117 ...called from bExpeditionGeos.java 
38 ...called from Geos.java 
42 ...called from CreateGameController.java 
142 ...called from CMSControllersService.java 
117 ...called from bExpeditionGeos.java 
38 ...called from Geos.java 
62 ...called from HttpPostControllerService.java 
251 ...called from bAsynchronousService.java 
330 ...called from bModule.java 
534 ...called from Thread.java 

I cut most of the stack trace since it was essentially binary data of the images.
The game was created the first time with Firefox but not with IE.

[quote]I got a different error with IE:


Throwable:java.sql.SQLException: Not a valid escape sequence:
[/quote]
So...looks like the image file is attempting to get into the DB. Rest assured that at no point is any binary data ever placed in the DB, so this means there's something wrong with parsing the form-data - apparently some form-data where MSIE is sending a file is being received and interpreted as a form-field.

Could you confirm two things for me:
 - version of MSIE?
 - packet-capture? (you'll need to download ethereal.com for this, or else use tcpdump if you run linux/OS X, and run it with the commandline given here: http://www.ethereal.com/docs/user-guide/AppToolstcpdump.html )

Thanks.

I'll look into the other bug (the firefox error) this evening. Thanks!

Just to let you know that I didn’t forget you. I’m just too busy this time to troubleshoot what you’ve asked me.

stay tuned…

Thanks. I’ve put in error handling for the duplicate name case, and I’ve added a lot more detail to the other exception (it should give you the root cause exception now) AND … I just successfully uploaded JAR files in both MSIE (6) and Mozilla (1.7).

So … maybe working better now?

PS: SUN! If you introduce a goddamn exception chaining mechanism, don’t forget to add it to ALL your damn exceptions (can’t throw an IllegalArgException in 1.4 using exception chaining…or else my eclipse is buggered :frowning: Or maybe I’m so tired I’m missing something obvious? FFS WTF doesn’t Exception have a .setCause(). Grr).

Hey blah3, keep up the great work! :slight_smile: JGF is improving in the good way I think. I can’t wait to see it with the new logo!

The last time I tried to upload Mighty Bubbles, I got an error trying to upload the jars. One question: will you support having jars in seperate folders? My dist uses different folders for the different OSs.

There’s still no way to choose different OS/arch’s (I have an update that I will upload soon, but I am too ill at the moment).

However, everything else should work fine since my last post?

re: separate folders - sort-of; it’s possible, but when you upload everything is placed in one directory and there’s no option for you to override that. So long as you have no duplicate filenames it’s fine - the JNLP is built automatically, so it will correctly pick up the files wherever they are uploaded to.

In future, if there’s a lot of requests for it, I might add an option for you to arrange your game into sub-folders (it only needs changes to the HTML form, but it would need some effort to make it easy to use), but not right now.

I successfully uploaded survivor - including all the OS-specific nativelibs - but … webstart hangs “checking for latest version”.

I hate Sun’s webstart client, and recall once again Cas’s statement about how the coders responsible ought to be hung by their toenails.

Can anyone see what is wrong with this JNLP? I’d be extremely grateful, since I’ve got flu and can’t concentrate enough for anything this complex myself. But if someone can spot it, and I can fix it easily, then it looks like you’ll be able to upload any game.

http://javagamesfactory.org/jnlp/Survivor/alpha

NB: this was at around 02:20 am GMT, but sun’s date code in the linux JVM is still f*cking broken after 7+ years and doesn’t handle timezones and can’t count to 7 either. It makes me weep that no-one can (be bothered to) fix such major bugs :(. Does this have anything to do with webstart breaking?


<?xml version="1.0" encoding="utf-8"?>
<jnlp
 spec="1.0+"
 codebase="http://javagamesfactory.org/attachments/game/Survivor/"
 href="http://javagamesfactory.org/jnlp/Survivor/alpha"
 >
        <!-- Last-Modified header will be set to: Sat, 19 Feb 2005 04:28:15 +0100 -->
        <information>
                <title>Survivor</title>
                <vendor>Author: adam</vendor>
                <homepage href="http://grexengine.com/sections/games/survivor/" />
                <description kind="one-line" >You, your gun, and thousands of mindless critters</des
cription>
                <description kind="short" ><p>
You're stuck in a maze. Or a prison. Or maybe you were too drunk to look where you were going and fe
ll down a hole. Whatever...what matters is that you're in some underground complex full of rooms fil
led with lots and lots and LOTS of nasty things, all itching to get a piece of you.</p>
<p>Fortunately for you, you have a gun. Unfortunately for the weird critters trying to kill you (who
 knows why? Who cares!), they don't. In fact, they don't even know what a gun is - so there are lots
 of exciting, shiny, and above all dangerous weapons just lying around this place, pretty much ignor
ed by the denizens. It brings a gleam to your eye just thinking about it. A mean, nasty, "Come get s
ome!" kind of gleam.
</p></description>
                <icon href="game-logo.jpg" />
                <offline-allowed/>
                <jgf-release-type>alpha</jgf-release-type>
                <jgf-release-version>9</jgf-release-version>
        </information>
        <security>
                <all-permissions/>
        </security>
        <resources>
                <jar href="alpha/survivor-game.jar" />
                <jar href="alpha/survivor-interfaces.jar" />
                <jar href="alpha/survivor-level-loader.jar" />
                <jar href="alpha/survivor-renderer.jar" />
                <jar href="alpha/survivor-resources.jar" />
                <jar href="alpha/survivor-scripts.jar" />
                <jar href="alpha/survivor-textures.jar" />
                <jar href="alpha/survivor-utils.jar" />
                <jar href="alpha/common.jar" />
                <jar href="alpha/commongui.jar" />
                <jar href="alpha/xith-md2.jar" />
                <jar href="alpha/xith-obj.jar" />
                <jar href="alpha/xith3d.jar" />
                <jar href="alpha/gagetimer.jar" />
                <jar href="alpha/bsh-2.0b1.jar" />
                <jar href="alpha/vecmath.jar" />
                <jar href="alpha/jogl.jar" />
        </resources>
        <resources os="linux">
                <nativelib href="alpha/jogl-native-linux.jar" />
        </resources>
        <resources os="mac">
                <nativelib href="alpha/jogl-native-macos.jar" />
        </resources>
        <resources os="windows">
                <nativelib href="alpha/gagetimer-native-win32.jar" />
                <nativelib href="alpha/jogl-native-win32.jar" />
        </resources>
        <resources>
                <j2se href="http://java.sun.com/products/autodl/j2se" version="1.4.2+" />
        </resources>
<application-desc/>
</jnlp>

Did you try to put only the name of your jnlp file in the href attribute of the jnlp element instead of the whole URL? I do that in my game and I’m wondering if it matters?

Turns out the problem was a bit of code that used to be a workaround for a problem with HTTP HEAD, but for some reason now instead of fixing the bug created a new one. Webstart, being crap, crashes if you return a HEAD response with an explicit content-length of 0, despite the fact that that is legal.

Anyway, now I’m getting lots of weird and wonderful webstart crashes and haven’t started the game successfully; game starts, runs through most of the logging and then hangs before displaying menu screen, or crashes in other weird ways whilst loading the JARs. Hopefully this is just my copy of webstart being crap; does it work for anyone else?

on 1.5:
Exception in thread “javawsApplicationMain” java.lang.UnsatisfiedLinkError: no jogl in java.library.path