Java 4K Game Programming Contest
Encyclopedia
The Java 4K Game Programming Contest (aka 'Java 4K' and 'J4K') is an informal contest that was started by the Java Game Programming community to challenge their software development abilities. The goal of the contest is to develop the best game possible within four kibibyte
s (4096 bytes) of data. While the rules originally allowed for nearly any distribution method, recent years have required that the games be packaged as either an executable JAR
file, a Java Webstart application, or a Java Applet
.
Java forums. After a bit of argument over how feasible a game would be in 4K, a user by the handle of mlk officially organized the contest on August 29, 2002.
Slowly but surely, entries began to trickle in for the contest. The majority of these entries were Applets, as it was believed that separating the images from the class files would help reduce the size of the file. Future contests would see a reversal of this as game creators utilized compressed JAR files to reduce the size of their code.
One of the most interesting points about the first contest was that non-game applications were allowed. One contestant produced a telnet
server in 4K of Java. However, this artifact of the first competition did not survive, and was most likely allowed because of the loose handling of the first contest. While no winner was officially declared the first year, the 4K Racing game submitted by Robin Chaddock (aka Abuse/AbU5e) was generally agreed upon to have "won".
Successive competitions became more and more organized, with many of the contestants pitching in to handle administration and promotion of the contest. All contests received official judging, with the method of judging being refined each year. By the third year, the contest was officially transitioned over to the JavaGaming.org forums. The fourth year saw the introduction of the JavaUnlimited website as the official repository for the contest. The site had been used the previous year to track entries that had been posted to the official threads on JavaGaming.org and forum.java.sun.com.
While there has been some discussion of providing prizes for the contest, it has continued to thrive without them. Most entrants seem to feel content to compete with their peers in a challenge of skill and ability. The reward has been nothing more than praise from those who play the games.
This may explain why spinoff contests targeting 8K, 16K, or a specific API like LWJGL have never taken off. In fact, the contestants seem to believe that 4K is the "sweet spot" that balances what an individual can do. Because of the tricks developed for the 4K contest, it's believed that adding even a single kilobyte would open the doors to far more complex games that are beyond the ability of a single developer.
s, transparency, and sound effects defined this year's entries. The strongest contenders were Defender 4000, Abuse's Shooty-Transparenty Game, and Space Invaders. However, Space Invaders lack of sound caused it to fall behind the other two entries which were competing hard to pack in the most technology and gameplay.
Of particular interest were the different tactics used by the two entries. For graphics, Abuse used precious few high color images which he then applied transparency and rotation to at runtime. Jbanes, on the other hand, developed an imaging packing technique that allowed him to store twenty-one single-color images. Rather than applying rotation and transparency, he chose to use his larger number of images to produce pre-rendered animations. For sound, Abuse used clear chimes and other instruments from the MIDI soundbank. Jbanes chose to use runtime-generated PCM sound that sounded more like video games of the late 1970s and early 1980s.
Both approaches had their merit, so it's difficult to say what finally swayed the judge's opinion. What is known is that Year 2 was the last year that sound would be a deciding factor in the games. In future years, the bytes allocated to sound were reallocated to other functions such as 3D graphics, levels, and boss
es.
Year 2 was the first year that official judging took place. Unlike subsequent years, the only judge was the contest organizer, mlk. After careful consideration, the judge decided to award Prong with the Best Technical Achievement Award, and declared Defender 4000 as the overall winner. Interestingly, he scored each game but did not use this score in determining the winner. Abuse's Shooty-Transparenty Game actually scored one point higher than Defender 4000.
Official List of Year 2 Entries
Judging this year was handled by a panel of three volunteer, professional developers who were not participating in the contest. One of the volunteer judges was Chris Melissinos
, Sun's Chief Gaming Officer
. The scoring method used was based on the method that mlk had applied the previous year, but was updated to allow the judges to give awards for exceptional gameplay or technological achievements.
While most of the entries were of exceptional quality, T4XI by Kevin Glass (aka kevglass) was chosen as the winner. Besides having extremely original gameplay, it provided exceptional graphics through a pseudo-3D effect that gave perspective to the buildings.
A minor amount of controversy erupted due to entries that judges had failed to score. Entries like JM4K and IsOlation Net were either too complex for the judges to launch, or contained networking components that they couldn't test. After this year's competition, the rules were changed to require that games be self-executable. In addition, contestants were warned in advance about the difficulties in judging networked games.
List of Games
List of Scores: (DHTML) (XLS)
For the first time in the contest's history, a special forum was setup on JavaGaming.org to host the contest. In addition, the JavaUnlimited.net site became the official site for entries and judging. While judging was originally going to be handled through JavaUnlimited by the Javagaming.org community, pushback from several members resulted in falling back on a more traditional judging system.
After the results came back, Miners4K by Markus Persson
was declared the winner. Second place was given to Kevin Glass's Roll4K, and third place was given to Goomba4K by Woogley.
The results of Year 4's judging were significantly better than those of Year 3, in part due to the rule changes which forced the entries to conform to easily executable formats. However, this did not completely eliminate judging issues. Some controversy erupted when two entries (Xero and JSquares) were given lower scores due to technical glitches. Several recommendations were posed to prevent this from happening in future contests, including trimmed mean scoring and verification of judge's scoring before acceptance.
List of Games & Results
Just like year 4, a forum was hosted on JavaGaming.org to host the contest. JavaUnlimited's system was used for hosting the games again, being considered the official site for the entries. A site update was planned for JavaUnlimited, but did not occur. Originally, the plan was to have a public vote and a judging panel. One month after the contest closing date the organizer without further explanation dropped the judging panel, which caused some unrest in the forums, accusations of censorship, locked threads and two participants withdrawing their entries from the contest (bringing the total down from 65 to 58). Voting was limited to javagaming.org forum participants, and within the alloted time, 25 people voted. About two months after the contest closing date, the official results were announced.
The winner was Metro4k by Blaine Hodge, followed by Jojoh's Roadfourk and Ulf Ochsenfahrt's aichess4k. Metro4k is a Sim City-like city simulation game, Roadfourk a racing game, and aichess4k a chess game featuring an AI opponent.
Unlike previous years, year 5 saw no game take the "last place", because the approval voting system used only gave votes to around half the games.
The competition was hosted on a new website, Java4k.com. Games from previous years can also be found on the new website. Before the launch of the contest, woogley had announced his withdrawal from arranging contest. The task of administrating the contest and hosting the site was therefore taken over by Arni Arent (appel) and Joakim Johnsson (jojoh). Just like previous years, there was also a dedicated forum at Java-Gaming.org.
The games were then thoroughly reviewed by five judges; Arni Arent, Joakim Johnsson, Kevin Glass, Matt Hicks and Chris Melissinos. They reviewed each game in three categories; Overall, Technical and Presentation. The results were announced on March 28, 2008.
The top three games in each category are listed below.
Overall Score
1. Spiderball4k by Måns Olson
2. Pinball 4K by Tom-Robert Bryntesen
3. t4nks by Markus Persson
Technical Score
1. Z4rch by Simon
2. Mini Golf by Tim Foden
3. 'Pinball 4K by Tom-Robert Bryntesen
Presentation Score
1. t4nks by Markus Persson
2. Spiderball4k by Måns Olson
3. war4k by Michael Bliem
Other technical first for this year were the submission of word games and a game which used the microphone. Word Twister used built-in levels, and Scr4mble used reflection to grab class names from the J2SE API and split them into words to build a dictionary. Frequent Flier was controlled by the pitch sung into the mic.
The games were reviewed by five judges: Arni Arent, Chris Melissinos, Matt Hicks, Eli Delventhal, and Mark DeLoura. As previously, they reviewed in the three categories of Overall, Technical, and Presentation.
There was minor controversy over the scoring because some judges were unable to play some games. Their scores for those games were initially 0 and counted against those games when the scores were first released on April 1, but the averages were changed to discount these 0 scores three hours later. After this change, the top three games in each category were
The games were reviewed by three judges: Arni Arent, Eli Delventhal, and Kevin Glass. They gave only an overall score, which was normalised before averaging. Separately there was a community voting system in which each voter had 25 points to allocate between the games, with a limit of 5 points to any one game.
The judges and the community vote coincided on the top three games:
Kibibyte
The kibibyte is a multiple of the unit byte for quantities of digital information. The binary prefix kibi means 1024; therefore, 1 kibibyte is . The unit symbol for the kibibyte is KiB. The unit was established by the International Electrotechnical Commission in 1999 and has been accepted for use...
s (4096 bytes) of data. While the rules originally allowed for nearly any distribution method, recent years have required that the games be packaged as either an executable JAR
JAR (software)
JAR is a tool for creating compressed file archives. It was invented by Robert K. Jung and was meant to be a successor to ARJ. It can achieve very good compression, but is not in wide use. JAR should not be confused with the .jar file extension used for Java Archive files, which are actually zip...
file, a Java Webstart application, or a Java Applet
Java applet
A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...
.
History
The Java 4K Game Programming Contest came into being on August 28, 2002 when a user by the handle of codymanix posted the suggestion to the Sun MicrosystemsSun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
Java forums. After a bit of argument over how feasible a game would be in 4K, a user by the handle of mlk officially organized the contest on August 29, 2002.
Slowly but surely, entries began to trickle in for the contest. The majority of these entries were Applets, as it was believed that separating the images from the class files would help reduce the size of the file. Future contests would see a reversal of this as game creators utilized compressed JAR files to reduce the size of their code.
One of the most interesting points about the first contest was that non-game applications were allowed. One contestant produced a telnet
TELNET
Telnet is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection...
server in 4K of Java. However, this artifact of the first competition did not survive, and was most likely allowed because of the loose handling of the first contest. While no winner was officially declared the first year, the 4K Racing game submitted by Robin Chaddock (aka Abuse/AbU5e) was generally agreed upon to have "won".
Successive competitions became more and more organized, with many of the contestants pitching in to handle administration and promotion of the contest. All contests received official judging, with the method of judging being refined each year. By the third year, the contest was officially transitioned over to the JavaGaming.org forums. The fourth year saw the introduction of the JavaUnlimited website as the official repository for the contest. The site had been used the previous year to track entries that had been posted to the official threads on JavaGaming.org and forum.java.sun.com.
Tradeoffs
Because the Java class file format incurs quite a bit of overhead, creating a complete game in 4K can be quite a challenge. As a result, contestants must choose how much of their byte budget they wish to spend on graphics, sound, and gameplay. Finding the best mix of these factors can be extremely difficult. Many new entrants believe that impressive graphics alone are enough to carry a game. However, entries with more modest graphics and focus on gameplay have regularly scored higher than such technology demonstrations.Prizes
When first conceived, the "prize" for winning the contest was a bundle of "Duke Dollars", a virtual currency used on Sun Microsystems' Java forums. This currency could theoretically be redeemed for physical prizes such as watches and pens. Unfortunately, the artificial currency was being downplayed by the introduction of the 4K contest, thus leaving no real prize at all.While there has been some discussion of providing prizes for the contest, it has continued to thrive without them. Most entrants seem to feel content to compete with their peers in a challenge of skill and ability. The reward has been nothing more than praise from those who play the games.
Reasons for success
While there has been a great deal of debate on why the Java 4K contest is so successful, the consensus from the contestants seems to be that it provides a very appealing challenge. Not only do the entrants get the chance to show off how much they know about Java programming, but the 4K size helps "even the odds" compared to other competitions where the use of artists and musicians can easily place an entry far ahead of the others.This may explain why spinoff contests targeting 8K, 16K, or a specific API like LWJGL have never taken off. In fact, the contestants seem to believe that 4K is the "sweet spot" that balances what an individual can do. Because of the tricks developed for the 4K contest, it's believed that adding even a single kilobyte would open the doors to far more complex games that are beyond the ability of a single developer.
Year 2 (2004)
Heavy use of pre-rendered spriteSprite (computer graphics)
In computer graphics, a sprite is a two-dimensional image or animation that is integrated into a larger scene...
s, transparency, and sound effects defined this year's entries. The strongest contenders were Defender 4000, Abuse's Shooty-Transparenty Game, and Space Invaders. However, Space Invaders lack of sound caused it to fall behind the other two entries which were competing hard to pack in the most technology and gameplay.
Of particular interest were the different tactics used by the two entries. For graphics, Abuse used precious few high color images which he then applied transparency and rotation to at runtime. Jbanes, on the other hand, developed an imaging packing technique that allowed him to store twenty-one single-color images. Rather than applying rotation and transparency, he chose to use his larger number of images to produce pre-rendered animations. For sound, Abuse used clear chimes and other instruments from the MIDI soundbank. Jbanes chose to use runtime-generated PCM sound that sounded more like video games of the late 1970s and early 1980s.
Both approaches had their merit, so it's difficult to say what finally swayed the judge's opinion. What is known is that Year 2 was the last year that sound would be a deciding factor in the games. In future years, the bytes allocated to sound were reallocated to other functions such as 3D graphics, levels, and boss
Boss (video games)
A boss is an enemy-based challenge which is found in video games. A fight with a boss character is commonly referred to as a boss battle or boss fight...
es.
Year 2 was the first year that official judging took place. Unlike subsequent years, the only judge was the contest organizer, mlk. After careful consideration, the judge decided to award Prong with the Best Technical Achievement Award, and declared Defender 4000 as the overall winner. Interestingly, he scored each game but did not use this score in determining the winner. Abuse's Shooty-Transparenty Game actually scored one point higher than Defender 4000.
Official List of Year 2 Entries
Year 3 (2005)
Year 3 was defined by a major influx of professional Java developers, 3D graphics in the games, and a gradual transition to the JavaGaming.org forums. JavaUnlimited also began mirroring the competitors in a permanent archive. While the mirror started as a manually edited HTML page, it eventually grew into a complete contest management site with a database back-end.Judging this year was handled by a panel of three volunteer, professional developers who were not participating in the contest. One of the volunteer judges was Chris Melissinos
Chris Melissinos
Christopher Robert Melissinos is a leading figure in the Java community. He serves as Sun Microsystems' Chief Evangelist and Chief Gaming Officer...
, Sun's Chief Gaming Officer
Chief Gaming Officer
A chief gaming officer is an executive position whose holder is focused on research and technical issues within a computer game company....
. The scoring method used was based on the method that mlk had applied the previous year, but was updated to allow the judges to give awards for exceptional gameplay or technological achievements.
While most of the entries were of exceptional quality, T4XI by Kevin Glass (aka kevglass) was chosen as the winner. Besides having extremely original gameplay, it provided exceptional graphics through a pseudo-3D effect that gave perspective to the buildings.
A minor amount of controversy erupted due to entries that judges had failed to score. Entries like JM4K and IsOlation Net were either too complex for the judges to launch, or contained networking components that they couldn't test. After this year's competition, the rules were changed to require that games be self-executable. In addition, contestants were warned in advance about the difficulties in judging networked games.
List of Games
List of Scores: (DHTML) (XLS)
Year 4 (2006)
Year 4 marked a period of transition toward making gameplay a priority over graphics and technical accomplishment. Many of the games were fairly simple in design, but aimed to make up for it with engrossing or addictive gameplay.For the first time in the contest's history, a special forum was setup on JavaGaming.org to host the contest. In addition, the JavaUnlimited.net site became the official site for entries and judging. While judging was originally going to be handled through JavaUnlimited by the Javagaming.org community, pushback from several members resulted in falling back on a more traditional judging system.
After the results came back, Miners4K by Markus Persson
Markus Persson
Markus Alexej Persson is a Swedish indie game developer and founder of Mojang AB. He is best known for creating the sandbox building game Minecraft.- Biography :...
was declared the winner. Second place was given to Kevin Glass's Roll4K, and third place was given to Goomba4K by Woogley.
The results of Year 4's judging were significantly better than those of Year 3, in part due to the rule changes which forced the entries to conform to easily executable formats. However, this did not completely eliminate judging issues. Some controversy erupted when two entries (Xero and JSquares) were given lower scores due to technical glitches. Several recommendations were posed to prevent this from happening in future contests, including trimmed mean scoring and verification of judge's scoring before acceptance.
List of Games & Results
Year 5 (2007)
Year 5 launched in December 2006 and lasted until March 1, 2007. It saw some great games, with much less focus on 3D and pseudo-3D graphics. Most games were 2D, with Pipe Extreme and Trailblazer being the only notable exceptions (one could argue that a few others are 3D as well, but distinctly less so).Just like year 4, a forum was hosted on JavaGaming.org to host the contest. JavaUnlimited's system was used for hosting the games again, being considered the official site for the entries. A site update was planned for JavaUnlimited, but did not occur. Originally, the plan was to have a public vote and a judging panel. One month after the contest closing date the organizer without further explanation dropped the judging panel, which caused some unrest in the forums, accusations of censorship, locked threads and two participants withdrawing their entries from the contest (bringing the total down from 65 to 58). Voting was limited to javagaming.org forum participants, and within the alloted time, 25 people voted. About two months after the contest closing date, the official results were announced.
The winner was Metro4k by Blaine Hodge, followed by Jojoh's Roadfourk and Ulf Ochsenfahrt's aichess4k. Metro4k is a Sim City-like city simulation game, Roadfourk a racing game, and aichess4k a chess game featuring an AI opponent.
Unlike previous years, year 5 saw no game take the "last place", because the approval voting system used only gave votes to around half the games.
Year 6 (2008)
Year 6 launched in December 2007 and lasted until March 1, 2008. Notably less games were submitted than in 2006 and 2007 - only 21 in total. Most of the games were 2d, with a total of 3 games using 3D or pseudo-3D graphics.The competition was hosted on a new website, Java4k.com. Games from previous years can also be found on the new website. Before the launch of the contest, woogley had announced his withdrawal from arranging contest. The task of administrating the contest and hosting the site was therefore taken over by Arni Arent (appel) and Joakim Johnsson (jojoh). Just like previous years, there was also a dedicated forum at Java-Gaming.org.
The games were then thoroughly reviewed by five judges; Arni Arent, Joakim Johnsson, Kevin Glass, Matt Hicks and Chris Melissinos. They reviewed each game in three categories; Overall, Technical and Presentation. The results were announced on March 28, 2008.
The top three games in each category are listed below.
Overall Score
1. Spiderball4k by Måns Olson
2. Pinball 4K by Tom-Robert Bryntesen
3. t4nks by Markus Persson
Technical Score
1. Z4rch by Simon
2. Mini Golf by Tim Foden
3. 'Pinball 4K by Tom-Robert Bryntesen
Presentation Score
1. t4nks by Markus Persson
2. Spiderball4k by Måns Olson
3. war4k by Michael Bliem
Year 7 (2009)
Year 7 launched in December 2008 and lasted until February 28, 2009 (extended from an original closing date of January 31). The number of games submitted returned to previous levels, with 67. This year introduced a requirement (later relaxed, but still followed by most games) to use JNLP deployment, and as a result had a mix of applications and applets.Other technical first for this year were the submission of word games and a game which used the microphone. Word Twister used built-in levels, and Scr4mble used reflection to grab class names from the J2SE API and split them into words to build a dictionary. Frequent Flier was controlled by the pitch sung into the mic.
The games were reviewed by five judges: Arni Arent, Chris Melissinos, Matt Hicks, Eli Delventhal, and Mark DeLoura. As previously, they reviewed in the three categories of Overall, Technical, and Presentation.
There was minor controversy over the scoring because some judges were unable to play some games. Their scores for those games were initially 0 and counted against those games when the scores were first released on April 1, but the averages were changed to discount these 0 scores three hours later. After this change, the top three games in each category were
Overall | Technical | Presentation | |
---|---|---|---|
1. | Left 4k Dead by Markus Persson | Bridge4k by Måns Olson | Left 4k Dead by Markus Persson |
2. | Bridge4k by Måns Olson | Pixeloids4k by Måns Olson | Red Baron 4K by Marcin Kochanowski |
3. | Pixeloids4k by Måns Olson | Left 4k Dead by Markus Persson | NiGHTS 4k by Orangy Tang |
Year 8 (2010)
Year 8 ran from December 1, 2009 to February 28, 2010. The number of games was down to half the previous year's, at 34. Following problems with Webstart in 2009, the 2010 contest was applets-only, but it did introduce the option of using pack200 compression.The games were reviewed by three judges: Arni Arent, Eli Delventhal, and Kevin Glass. They gave only an overall score, which was normalised before averaging. Separately there was a community voting system in which each voter had 25 points to allocate between the games, with a limit of 5 points to any one game.
The judges and the community vote coincided on the top three games:
- Burning Man by SquashMonster
- GTA4K by Simon
- FortressFall4k by soothsayer
External links
- Web Archive of the Original Thread - Actual thread was deleted by Sun during a regular system purge
- Incomplete list of first year entries - Saved by Archive.org
- Year 2 Thread - On Sun's Java Forums
- Java Unlimited - The repository for submitted games since 2005.
- 4K Game Design Tricks - A Wiki article to assist new entrants.
- 4K Tips and Sources - A set of tips, tutorials and game source codes for 4K Java participants
- JavaGaming.org Contest Forums - Each year (starting with year 3) has its own sub-forum.
- Why are 4K Games so much fun to write and Play?
- Should there be Java game competitions without size limits?