When I took over the java 4k contest from woogley I wanted to make it more user friendly and try to attract casual users. That did work for the first couple of years, but things have changed in the technology world with the introduction of smart gadgets, and a general decline of Java on the desktop for a multitude of reasons. Java4k is primarily now a developers attraction for our close knit community.

Java, webstart and applets, simply is out. You cannot expect it to run on a big chunk of desktops, but primarily it does not play on smart gadgets, phones, tablets, pads etc.

So, does our beloved contest stand at some kind of crossroads? Are my concerns unwarranted? Are there new opportunities?

So, this is really a open thread to discuss the contest in the context of this changing environment.

You can't use gadgets because every game would play differently on different devices and it would not be fair to judge games based on different feature sets. You might be able to do something with Ouya, since it is specifically designed for games and would have the same feature set for all developers, judges, and players. Everyone would be using the same API. I don't know what the current state of Ouya is though. That may be the contest after the next one.

Javascript games warrant the reputation that is unwarranted for Java outside the browser so they would not be a better alternative. It's marketing...

Edit: Let me state I am not a fan of the idea that a small group of companies should get together in a closed setting and make decisions to push on all downstream users. It is worse that they call it "open source" and "standard", especially when it means closed devices with no interoperability, competition, or opting out for consumers.

Webkit, Android, and Ouya all have these faults. I want my devices to be a person computer no matter what size they are, but the trend is toward the opposite owner-object relationship.

I find the 4k contest is a lot akin to the the demoscene subculture. By us - for us kind of thing. Showing off what kind of neat tricks you can pull off with only 4k.

I'm not sure how you define your "casual user", however, to me, a casual would be someone perhaps new to programming who would be interested to see what can be done/learned from by looking at the impressive games (and source codes) made with only 4k of data.

In other words, a casual, I feel, isn't necessarily that much different from those submitting the games themselves.

If by casual you mean people playing farmville on facebook then I'd rather shoot myself.

New opportunities? How do you mean, larger audiences? Hmm. Live Streams? I don't know.

As someone who hasn't ever participated in it. The few times I've tried making a few things. When I was searching for information, such as a decent starting point template, game loop. There was a lot of fragmentation and arguments on which one, or quite a few dead links.(Such as I think someone had an online compacter that ran your class through various compression programs in attempt to shrink it, that website is gone now) and while you can still use pack200 and some other things, the information is spread out and is less new user friendly)In addition to the few resources to help the 'casual' or 'new' user get started at least with some basics.

I think having a more well defined 'new user'/'tutorial'/'how to' wiki/website on some more basics would help tremendously with attracting new users. Since some things are handled differently.

Also why are 'applets' out. Even though they are less popular and have those silly security popups. They still function in most places don't they?

Although it would incur a huge 'overhead' to the new user(especially those not familiar with libgdx). Perhaps allowing libgdx- html5 port to be part of the competition.

Lets say you can only have 4k of source code (not including anything libgdx boilerplate) and then compile to the GWT-html5 and then it'd make the applet and accessibility a non issue.

First of all: I learned a lot during the 4K contests. The artificial limit on size is also a very pleasant (and enforceable) limit on how complex you can make the game. Excellent for trying out new concepts or ideas.

However, the 4K game contest in its present form is often more about designing a good compression chain than about creative game design. This makes it less newbie-friendly. Without a good compression chain (which can be pretty hard to do) there is no way to meaningfully compete in the contest. Also, as you say, Java on the web is history since the security debacle of Java browser plugins.

So in its current form I doubt it will really have a fruitful future ahead of it. But I do like the 4K contest a lot. Some ideas I had:- Disallow compression tools and make the JAR limit 10K (so Java10K). Or 9K if you like so we can make "its over 9000!!!!" jokes.- Make a wrapper that all players and contestants can use to launch the 4K or 9K/10K games. I made a simple wrapper with integrated JRE for my own 4K games. The wrapper with JRE would be some MB's, but you could add all 4K games made to the wrapper in a single downloadable collection without increasing the download size much. It would not be runnable from the web, but it would be quite easy to use.- Do an Java/Android contest with a size limit? EDIT: added:- A contest based on LWGJL may also be nice, although that would perhaps be more about OpenGL than about Java.

In don't really see how to do a contest about Java on the web (compiling to HTML5/Javascript kind of defeats the point of having a Java contest). However, there may be possibilities on the desktop (download-the-collection style) or on Android.

The 4k problem is now a bit of an anachronism. When you could be reasonably sure that at least Java developers would have Java applets available on their machines it sometimes worked ok (and thanks to how shit applets and webstart are, it often didn't anyway, but meh). Nowadays though anyone with any sense has totally disabled Java applets in the browser because of the massive attack surface it presents to sophisticated malware.

So you've got 4kb of useless code that can't actually be run.

Solutions...? Well maybe an actual launcher/browser desktop application would do the job. A self-contained VM installation like the ones we use for our games, which can be used to play all of the 4k entries (and they're so small the entire library of 4k games can be downloaded on the fly at startup). You'd have to get relatively clever with security but other than that, if it's enthusiasts who want to play the games, that's probably the best way to go. It also means that you can settle on a precise JVM version. You could also use the same launcher for a lwjgl16 compo too

I can't deny, I liked the standardisation and accessibility (to non-programmers) that enforcing Applets brought to the competition.

We could always go back to the old ruleset, and use runnable jars; or do browsers block the download and execution of those too?

The idea of a self contained app for presenting and running the library of games initially seems appealing..... But I can't help feeling it'd just be duplicating the function of the website. (but with a higher barrier to entry)

As for accessibility re the compilation tool chain; I agree it's the most esoteric part of building 4k apps, there should definitely be an official all in one ant+eclipse package for developing, building & publishing a skeleton app.I know there have been valuable contributions from numerous people, but i don't think we've yet had a comprehensive 'does everything' solution. I'd be willing to polish mine up and post it for review.

:edit:Just checked, and in Chrome you have fewer (and less verbose) warnings downloading & executing an unsandboxed runnable jar than you do launching an unsigned applet. That's really quite stupid.

Solutions...? Well maybe an actual launcher/browser desktop application would do the job. A self-contained VM installation like the ones we use for our games, which can be used to play all of the 4k entries (and they're so small the entire library of 4k games can be downloaded on the fly at startup). You'd have to get relatively clever with security but other than that, if it's enthusiasts who want to play the games, that's probably the best way to go. It also means that you can settle on a precise JVM version. You could also use the same launcher for a lwjgl16 compo too

That's what I first thougt before reading any messages. Maybe even an integrated comments/voting section that talks directly to java4k.com

As far as "good compression chain", doesn't anyone use ProGuard? It's gotten my 40k class file down to 4k. It has SO many options and seemingly can do it all.

A few suggestions based on what other people have said:

1. Add a service where a user can upload their class file (where the class name is G or something) and have proguard go through and do its magic. Proguard has a simple command-line interface, you give it a configuration file and run it... super simple. You could even add multiple configurations that yield different results and run all of them and present the user with the smallest one.2. Create a simple application that runs on all major OS's that has an embedded JVM... you could make the java4k files have their own extension like "j4k" which the application could open and run.

So many options on making java4k available to a wider audience and easier for developers to participate!

As for accessibility re the compilation tool chain; I agree it's the most esoteric part of building 4k apps, there should definitely be an official all in one ant+eclipse package for developing, building & publishing a skeleton app.I know there have been valuable contributions from numerous people, but i don't think we've yet had a comprehensive 'does everything' solution.

One big problem with making a comprehensive solution is that the best zlib-compatible compressors are neither open-source nor written in Java. Or are you volunteering to write a Java compress library which does multiple passes of perfect parsing with random Huffman trees constructed using a good heuristic? (It's one of the projects I have on the back burner, but "on the back burner" means that I don't want to promise anything).

As for accessibility re the compilation tool chain; I agree it's the most esoteric part of building 4k apps, there should definitely be an official all in one ant+eclipse package for developing, building & publishing a skeleton app.I know there have been valuable contributions from numerous people, but i don't think we've yet had a comprehensive 'does everything' solution.

One big problem with making a comprehensive solution is that the best zlib-compatible compressors are neither open-source nor written in Java. Or are you volunteering to write a Java compress library which does multiple passes of perfect parsing with random Huffman trees constructed using a good heuristic? (It's one of the projects I have on the back burner, but "on the back burner" means that I don't want to promise anything).

I'm not suggesting an optimal solution; just a 'works out of the box' build script that comes with all the necessary dependencies & gets you 'good' results.

There's already been a fairly comprehensive one contributed somewhere (though regrettably I can't remember by whom), but even that required a fair bit of faffing to fill in all the dependencies and get it working.If I recall correctly its problems stemmed from its attempt at being too clever (downloading the dependencies automatically from the relevant websites), that inevitably broke when the URLs in question became invalid.

I can't think of anything better - Unity 64K? It wouldn't be the same...I see 4K as a great way to play around with ideas within bounds. I also got a big kick out of trying to do AC, GTA, Far Cry & Skyrim in 4K.Sure online java's shot itself in the foot then looked down the barrel to see where the bullet came from and shot itself in the face, but it's still a beautiful language to use.Sod popularity, if we wanted full coverage we'd have to use JS or libGDX or something and the 4K constraint would be null and void.I say stick with applets for this year. Nothing lasts for ever, so let's make the last days the best!

I don't really have a strong opinion on how to solve the issues we're seeing, but I felt I wanted to write something in any case. Warning: Bleariness to follow.

I'd be sad to see the 4k contest go. I can see why it would happen, but I'm also okay with the games being directed mostly at programmers both new and old. I'm holding on to nostalgia a bit, but this contest has meant so much to me. I made my first 4k game almost immediately after I'd started coding (I'd only done HTML/JS stuff before). The game wasn't great, but it was so much fun to make. A few of the regulars on here proceeded to make great, inspiring games - the kind that made me want to improve. Since then, I've finished 18 more games for this contest, and started many more. If it wasn't for the 4k, I don't think I'd have chosen to study computer science. Later, that education got me into the games industry, and I'm now working with something I absolutely love with an amazing bunch of people.

Indeed, it would be a sad day when java4k finally "officially" finishes... i am sure that it will still occur by those who have a nostalgic connection to it. I must admit it is one of my highlights of the year. Both to see what others are able to achieve within the constraints, and to see what i am able to achieve.

A pretty out there suggestion:

Whilst not the same accessibility for users as applets pre security dialogs, how about collating and compiling all entries into native code (Excelsior Jet or jcc) and have a native installer. Users (well windows users) are used to downloading and installing and would not rely on java being installed.

This could also be done in parallel to the normal targeted environment (i.e. applets).

Indeed, it would be a sad day when java4k finally "officially" finishes... i am sure that it will still occur by those who have a nostalgic connection to it. I must admit it is one of my highlights of the year. Both to see what others are able to achieve within the constraints, and to see what i am able to achieve.

A pretty out there suggestion:

Whilst not the same accessibility for users as applets pre security dialogs, how about collating and compiling all entries into native code (Excelsior Jet or jcc) and have a native installer. Users (well windows users) are used to downloading and installing and would not rely on java being installed.

This could also be done in parallel to the normal targeted environment (i.e. applets).

There's no plan to end the contest.

Times have changed, indeed, and we need to consider some changes perhaps.

I may omit the judging panel in future contests, simply because it's a whole lot of work and getting more difficult every year to recruit judges. This year I barely was able to recruit judges. I realize the judging panel provides a valuable feedback, but reviewing 70 games is a tedious process for anyone, and honestly I get a bit anxious about it

Then there's my personal interest in game programming that has dwindled. I'm currently more focused on work related technologies than hobby related. Although I may return to the game arena later, I'm not quite sure if Java will be my first choice as I like to try out newfangled things.

I'm not quite sure about that installer. How would the contest work? New installer every time a new game is submitted? Or will all games be published at the same time at the end of the contest? So we're all in the dark for 3 months? I think going a installer route is giving up on java on the web, which although may be warranted it does create other problems for the contest. It may be suited for archive purposes, but not for an ongoing contest. Then you might ask, what's the purpose of the website if all the games are in a downloadable installer?

reviewing 70 games is a tedious process for anyone, and honestly I get a bit anxious about it

I understand that. I am willing to be a judge, however my game-credentials are pretty non-existent

Quote

I'm not quite sure about that in nstaller. How would the contest work?

Well I thought that the contest rules would stay the same as last year, i.e. applets, 4k jar. However there would be an alternative for people who do not have java or have turned off applets or scared of the security prompts.... and that would be an native executable version.

Off the cuff thoughts about how it would work would be that when a entrant submits a game, it is automatically compiled to windows and linux natives. From my limited experience with ExelsiorJet, these executables will require an 'embedded' runtime. So to make the total size per entry smaller an "installer" application can exist whose function is to be a launcher of sorts. It would:1. provide the 'embedded' runtime necessary for all the execuatables.2. request the latest list of entries from the java4k site.3. allow the user to download and play a selected game.

An offline compendium of all the entries could be made during and after entry closure by pre-including all the latest native executables.

Even with a permitted set of libraries, it'd dramatically increases the scope of the games.

4KB standalone (well, as standalone as the java runtime permits...) is attractive as an artifical limitation precisely because it keeps the scope down; it levels the playing field between those with lots of spare time, and those with little.

Actually I'd say it levels the playing field between those who enjoy making games an enjoyable experience to play versus those who enjoy the experience of making tiny games. It's subtle, but IMHO the end result has usually been a lot of, well, very crap games. There, I said it. All the effort really seems to go into bytecode hackery and dubious coding and smarty-pants geeky stuff and not a whole lot into interesting gaming. This is probably at least a part of the reason finding judges is so hard.

I'd rather play one well made and executed 16kb game that took 4x as long to make than twenty of the typical 4k games.

All the effort really seems to go into bytecode hackery and dubious coding and smarty-pants geeky stuff and not a whole lot into interesting gaming.

I don't quite agree with that. With the compression toolset you are allowed to use, there's not much of a need to smart-panty-hackery stuff anymore.I do agree some entries might benefit if more thougt was given to actual gameplay instead of "finishing something", but well, that's the purpose of java 4k. It's not meant to make a game that will be enjoyable for years to come. Crappy entries will exist in every competition no matter how high you raise the byte count - just look at ludum dare.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org