Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

James / Java Cake Games

A member registered Sep 01, 2020 · View creator page →

Creator of

Recent community posts

Yes, 'B' looks like someone actually drew it. Compared to 'A' which doesn't quite look like a photo or 3D model - it's hard to put any descriptor on that other than "AI".

The section is for topics relating to itself. Not sure any of the boards are a great fit (doubt this would be welcome in the art section) - have a browse.

While I'm here... 'A' just looks weird. The anime style suffers less from anatomical/lighting/etc. oddities compared to the other one.

The fake download ads are a bit sketchy and spam jam submissions are not an infrequent occurrence. But all in all it's a very generous site, just the fact you can upload almost anything no questions asked, even paid games where payment is taken off-platform or with's share set to 0% in the settings. I know doing that gets a bit ethically dubious, so I'll say I haven't made any money from this site, nor have I tried to.

is like a UI without a skin.

I like the bouncing. Dangerously close to being a good game.

The requirement to set a maximum, limited to 255, seems flawed for larger games, even if they are far and few between on

For example, Old School RuneScape permits 2000 players per server, and these servers are interconnected to allow the exchanging of messages and trading of goods between them. There'd be no way to attach accurate metadata for that type of game on

It would be more appropriate to be able to set "1 or more players" for games where the limit is either unclear (e.g. you don't know how many players it takes to break the server) or high enough that it isn't impactful (e.g. your game may support LAN parties of up to 2^16 players, but no-one is at risk of hitting the limit).

Additionally, I'm unsure on the use case for being able to set the minimum player count as 0. Maybe if it plays itself, like an attract mode?

In any case, for local multiplayer games in particular that are likely to only support 2, 4 players (additional thought: a game might not support 3 players, e.g. if it requires two teams of 2, but a range doesn't let you express that) I can see this being useful for people browsing the catalogue.

Maybe you need RTX graphics. Mine shows beautiful animations.

(1 edit)

100K downloads? I feel out of touch, the way these things become popular. Looking at it, I don't think there's any grounds to get it taken down under. Game mechanics aren't copyrightable and it hasn't stolen any assets. They even changed the shape of the T block, presumably to weaken any potential claims from The Tetris Company for trademark infringement.

What's ADFL? I have my scepticisms it's anything, considering this was submitted into 14 different jams.

All iframes, with the exception of embeds, are now click-to-activate within project’s description, and other developer-provided fields. This is to prevent code on third-party pages from executing automatically when you navigating to someone’s page. We’ve seen scammers attempt to take advantage of how we treated iframes to initiate a download of malicious code automatically. Additionally, this change will prevent third-party services from automatically performing tracking without your consent. (Note, click-to-active iframes were already used in comments and community posts, this change now applies the same restrictions to the project pages themselves)

Hi leafo, I like the idea here but I'm not convinced on its effectiveness. If someone wants to initiate downloads on a project page, they can do so using an HTML5 game and checking "Automatically start on page load". Additionally, this change doesn't seem to apply to profile pages, devlogs, or the "Gameplay video or trailer" YouTube/Vimeo embed, where iframes continue to run without clicking.

Reduced tracking I'm not sold on, seeing as supports Google Analytics and the Facebook pixel, but I don't believe those services reveal raw IP addresses so maybe there is an argument to be made there.

The external links change is rather rad, though, potentially reducing phishing scams.

Based on their Play/App Store screenshots, I suspect they're looking for games to put in their app, and being able to embed HTML is simply easier for that. But I could be wrong - I have no association with this.

I have forwarded your criticism to it. This caused it to produce some more one-sentence answers, but they're still quite cumbersome. My favourite new one:

What did the libGDX game developer get for Christmas?
A heap of memory so he could finally allocate some space for his holiday cheer.

Why did the libGDX programmer have to use a different API to draw a Christmas tree?
Because the usual API only supported rendering rectangles, and the programmer couldn't figure out how to twist it into a tree shape!

What did the libGDX programmer give their significant other for Christmas?
A pixel art heart, drawn with the ShapeRenderer and scaled up to fill the screen! It may not have been the most impressive gift, but it came from the programmer's heart.

Why was the libGDX game so jittery during the Christmas parade?
Because the programmer was using a fixed timestep with a low frame rate, and the game couldn't keep up with all the excitement of the parade! The programmer promised to optimize the game's performance for next year's parade.

Why did the libGDX programmer put a tiny Christmas tree in their game?
Because they wanted to show off their sprite batching skills! The programmer carefully arranged the tree's triangles and quads to maximize the number of sprites drawn in a single batch. It may have been a small tree, but it was a big accomplishment for the programmer.

Why was the libGDX game so quiet on Christmas Eve?
Because the programmer forgot to add any sound effects! The game's levels were filled with silence, except for the occasional rustling of leaves or footsteps on snow. The programmer vowed to make up for their mistake by adding some festive music and sound effects for next year.

Why did the libGDX programmer have a hard time wrapping their Christmas presents?
Because they were so used to working with rectangular bounding boxes that they couldn't figure out how to wrap a non-axis-aligned box! The programmer tried their best to work around the problem, but in the end, they just had to settle for some oddly shaped presents.

Why did the libGDX programmer have to cancel their Christmas party?
Because their game was running so slowly that it couldn't handle the extra load of hosting a party! The programmer had spent so much time optimizing their game's performance that they forgot to leave room for fun. They promised to make it up to their friends by hosting a party in the game once they had fixed the performance issues.

Why did the libGDX programmer's Christmas dinner taste so weird?
Because they accidentally used the sprite font to write the recipe instead of the regular font! The instructions were all jumbled and hard to read, and the programmer ended up using the wrong ingredients in their dishes. It may have been a strange meal, but at least it was unique!

Why was the libGDX game so popular at the Christmas office party?
Because the programmer had added a special holiday mode that turned the game into a festive and fun experience! The game's levels were filled with snow, mistletoe, and gifts, and the enemies were replaced with jolly Santas and snowmen. The party-goers had a great time playing the game and spreading holiday cheer.

Why did the libGDX programmer's Christmas lights flicker?
Because they were using a fullscreen post-processing effect to simulate the twinkling of Christmas lights, and their game's performance couldn't keep up! The programmer had to turn off the effect to prevent the game from stuttering and lagging. They vowed to optimize the game's performance so they could enjoy the festive lights next year.

Why did the libGDX programmer's Christmas tree look so strange?
Because they used 3D models and lighting effects to create a realistic-looking tree, but the game's performance couldn't keep up with all the fancy graphics! The tree flickered and jittered on the screen, and it looked more like a ghost than a tree. The programmer promised to work on optimizing the game's performance so they could enjoy a beautiful tree next year.

Why did the libGDX programmer's Christmas party end early?
Because they ran out of virtual eggnog! The programmer had added a special holiday drink to their game, but they didn't anticipate how popular it would be. The guests drank so much eggnog that the game's inventory ran out, and the party had to end early. The programmer promised to stock up on more virtual eggnog for next year's party.

Why did the libGDX programmer's Christmas tree look so empty?
Because they were using a skeletal animation system to animate the tree's branches, but they forgot to add any decorations! The tree looked bare and lifeless on the screen, and it didn't have the usual Christmas cheer. The programmer promised to add some festive decorations for next year's tree.

How did the libGDX developer decorate his Christmas tree?
With sprite ornaments and pixel lights!

What did the libGDX developer get for Christmas?
A new game engine, of course!

Why was the libGDX developer's Christmas present so small?
Because it was a mobile game!

What did the libGDX developer get for Christmas from Santa?
A rendering API!

What did the libGDX developer get for Christmas from the Grinch?
A crash report!

What did the libGDX developer's friends get him for Christmas?
A new joystick for his desktop game!

What did the libGDX developer get from his secret Santa?
A physics engine!

Why did the libGDX developer have a great Christmas?
Because he had a game-changing holiday!

Why did the libGDX developer have a white Christmas?
Because he used a snow shader in his game!

What did the libGDX developer get from his grandmother for Christmas?
A new pair of headphones to listen to game audio!

Why was the libGDX developer's Christmas present so expensive?
Because it was a virtual reality headset!

What did the libGDX developer's dog get him for Christmas?
A new chew toy in the shape of a game controller!

Why was the libGDX developer's Christmas tree so square?
Because it was a sprite tree!

What did the libGDX developer get from his parents for Christmas?
A new laptop to develop games on!

Why was the libGDX developer's Christmas party so much fun?
Because it was a game jam!

All of these were generated using ChatGPT. The prompt was "Please write a Christmas-themed libGDX joke."

The website field uses rel="nofollow me", if that's good enough. But of course we only get one of those.

A competitor to the Trials series!

Android APKs must be signed to be installable by normal people. Fortunately, doing so is fairly easy and free.

(7 edits)

The Java-lin throw!

Yeah, it only accepts letters and numbers. I should probably widen it a bit.

Or sound, whatever it was. Currently I can't reproduce any issue with sound/music not defaulting to on (note: it remembers between page refreshes what they were last set to) but I did notice a now-fixed logic error with game over. Each bugfix breaks something new - the joys of programming!

Yeah, it could probably do with providing a hint if the player fails to work out what to do within a few seconds. I think that would be a fair compromise - no-one reads instructions until they need them anyway.

I don't know what's up with the spinning. I wanted to have the ducks on the left facing to the right and the ducks on the right facing to the left, but that leaves the question of what to do with the middle duck. So I figured it could just spin around, as if it also doesn't know which way to face. But I couldn't work out how to change the decal's Z axis (rotating with the cities like the sprites do) without resetting its Y (the 3D spinning) so that's why I settled on letting it freak out whenever Z rotation is due. Somehow, multiplying its Y by 360 avoided it getting reset to 0, but obviously that's not a particularly useful thing to do. Feels like a bug with libGDX, being unable to set more than a single axis, but perhaps I'll have to do more digging for decal examples before moaning where mgsx will see in case I'm doing it wrong.

The leaderboard is recycled from my Unipop game. Was hoping to create a new backend instead of building upon the existing cobbled-together codebase, but time didn't really allow for that. I saw Anthony's Venus Wars also has a leaderboard. The fact it displays the top 5 scores in-game is neat. I wonder if his has any cheat protection? There's only so much you can do on the client side - even if it was uncrackable, someone could just use an autoclicker (in the case of my game) or something. I've only taken a quick look at the games - haven't properly played them all. My jousting skills are weak.

Glad you enjoyed it. There's probably some other game out there that's similar to this one, even if the closest I can think of would be those ones where people are ordering food or whatever and you have to fulfil their orders before they get impatient and leave. My other idea for this jam was based on Nintendo's Manhole but with three or more holes on a single level instead of two holes on two levels each, plus the addition of characters you want to fall down the holes. Didn't get far enough with it to consider how to make it - it couldn't be completely random, as you'd end up in the impossible situation of having to plug two holes at the same time.

I'm in a better mood today now that a bit more time has passed since the jam. I swear they consult a fortune-teller to schedule these things at times that conflict with personal life.

(1 edit)

Yeah, something's broken with the music state.

2nd July edit, because leaving a third reply would be ridiculous:
Names that included S or M had issues because typing them toggled sound and music respectively. At last, it is fixed - now these can only be toggled once the game has actually begun.

Nah, Japan only.

Oh nowo! You'll have to create a twin to cover for you.

Hi, how's the development going?  :3

If I ordered a city through Amazon Prime instead it would've arrived by now.

I have 31 score and 31 money. Perfectly balanced, as all things should be.

Hello, I tried this and now my keyboard is almost as sticky as TEt's.

Yes, I didn't have time to grow my own tomatoes for the jam.

(1 edit)

Hey guys, is this where we start discord? I've been making my libGDX Jam 21 game but am facing an issue. I've written all my code for it, being sure to follow the tips in the video, but I have an error on line 1. How do I fix it?? Thanks in advance. Love, me. P.S. Sorry about the tomato juice.

Wales, Ireland and Scotland don't have the London Underground. Go back to the Chunnel you came from.

(3 edits)

Isn't that just marmalade? Banned. Game marmalades are already a thing, just not as successful -

But bad marmalade. The marmalade I know looks slightly different in texture. This isn't my marmalade - it's just a stock photo.

Good marmalade

Yesterday I was eating marmalade on toast and I think the panda or someone sent a message, so then I had marmalade on the smartphone and I think it was a few hours until I wiped it off.

(1 edit)

Sorry, but mayonnaise is not a jam. Or an instrument, for that matter.

It's Spring-time!

Several pieces, some might claim. But that's quite alright.

Please see the project page before downloading.

TL;DR: Save any important documents before running.


10-second speedrun!

Yeah, it's pretty hard to read. WCAG 2.0 AA requires a contrast ratio of 4.5:1 for text. Here we have 2.66:1.

How do you debug? Personally, I'm a big fan of System.out.println("yee");

I think it's too long, more than anything. But it's what I found - many of the free ghost sounds out there are scary screeches. Probably should've at least attempted to record my own.