LD 38 April 21–24, 2017

Result: #2 in Theme, #5 in Humor, #38 Overall!

Wow, that result is amazing! As this was my first Ludum Dare I am very happy about the outcome! Thanks to everyone who voted!

marbleverse_results.png

https://ldjam.com/events/ludum-dare/38/marbleverse/

Conclusion

Next time I must :

  • Be really ready and work each hour of the weekend for finish a complete game.
  • Book more time to test and rate the other creations.

This event allowed me to discover a lot of great games made by passionate people.

And it was a good exercice for make a little demo with Kinjin Engine.

This is the beginning of a new project for me that continue here :

https://www.youtube.com/watch?v=KLNKMgvH9wY

Thanks to Mike for all his hard work on this new website.

See you all for Ludum Dare 39 !

Planet Desumaton - Results

The results are in:

  • Overall: 168th (3.75 average in 82 ratings)
  • Fun: 150th (3.63 average in 83 ratings)
  • Innovation: 127th (3.7 average in 82 ratings)
  • Theme: 121st (3.913 average in 82 ratings)
  • Graphics: 92nd (4.358 average in 83 ratings)
  • Humor: 109th (3.573 average in 77 ratings)
  • Mood: 265th (3.461 average in 78 ratings)

Scores in percentage (rounded):

  • Overall: 75%
  • Fun: 73%
  • Innovation: 74%
  • Theme: 78%
  • Graphics: 87%
  • Humor: 71%
  • Mood: 69%

I'm quite happy with the results and would like to thank everyone for playing and voting! :smiley:

If you haven't played my game yet feel free to still do so!:wink:

Game page (Window and WebGL version available)

PD.gif

The Z Axis - Thanks For Playing!

Thank you all for playing and rating The Z Axis! I am truly humbled my little puzzle platformer was 27th in the Fun catagory and 78th in Innovation. This was my first ever game jam of any kind and had no idea what to expect.

https://ldjam.com/events/ludum-dare/38/the-z-axis

If anyone is interested, I am working on an extended version with lots more levels and puzzle elements. Follow me on Twitter @JamieHolub for periodic updates!

Results Final results

Overall: 133 (3.829 average in 37 ratings) Fun: 27 (4.059 average in 36 ratings) Innovation: 78 (3.853 average in 36 ratings) Theme: 690 (2.588 average in 36 ratings) Graphics: 581 (2.879 average in 35 ratings) Audio: 237 (3.344 average in 34 ratings) Humor: 605 (1.957 average in 25 ratings) Mood: 192 (3.633 average in 32 ratings)

:astonished:

LDJam38b.gif

To do list - final results

Thanks to everyone who rated and comments our game

JAipbrjot9I.jpg

  • #### Game page - https://ldjam.com/events/ludum-dare/38/$27648 play if you haven't yet!

10.gif

357f.gif

Thanks for playing!

results.jpg

'World on the Tip of a Ballpoint Pen' did pretty well, ratings-wise! Thanks to everyone who played it. I might revisit this little world some time in the future, you all really took a liking to it!

Little Fortune Planet Bonus Breakdown - Part 7: LibGDX/GWT performance tuning

As mentioned before Little Fortune Planet was a bit of an experiment with non trivial, non optimized game design using LibGDX and GWT. Loads of nested loops O(n2), and dynamic textures. The game ran horribly slow on web, so we set out improving performance post jam.

Disclaimer: Food for LibGDX/GWT devs, but still got some meaty bits for others. We used LibGDX, a java game development framework that targets a wide variety of platforms. Keeping a couple of gotchas in mind, it transpiles your Java game (using Google Web Toolkit) to JavaScript fairly effortlessly. While the tooling is pretty good, it can be a real pain to profile.

Goals

Ideally the game would run at a steady 60 fps. Let's see what is eating all our performance. If you are using artemis-odb, grab the excellent profiler plugin made by @piotr-j for low cost profiling in game.

profiler.png

A target of 60 fps means we have ~16ms to spend per frame. Currently on my high end machine frames take at least double that to render on Chrome. Firefox and IE are even worse. Throughout optimizing Firefox generally seemed to struggle with our game.

Profiling Your (LibGDX) Web Game

So how to proceed? We'll run Chrome's built in profiler (F12 - Performance tab). Firefox and IE dev tools have similar features, so use whichever you prefer. Let's see what a couple of seconds of record button yields:

obfuscate.png

Oops! Looks like our function names have been obfuscated. We could use Google Web Toolkit's superdev mode to solve this for us, as it provides bridge between your Java naming and the browser dev tools, but since I'm not 100% sure on the side effects on profiling, we'll keep things vanilla and disable the obfuscator instead.

Add style PRETTY or DETAILED to html/build.gradle in your libgdx project.

java import de.richsource.gradle.plugins.gwt.Style compiler { optimize = 0 style = Style.DETAILED }

After redeploying the game and rerunning the profiler we get:

profiler2.png

Now we can read the function names! We'll run the profiler for a couple of seconds, and then sort 'Bottom-Up' to find hotspots in our code. In our case we're interested in functions that have a large amount of 'self-time', these functions are eating all our valuable frame time.

In our game we've identified two possible areas for improvement: Simulating and rendering the planet.

Improving Simulation Performance

Improving performance is relatively straightforward. Find the functions with the highest self-time and the least amount of effort to reach your set end goal.

rngisevil.png

In this case it seems the GWT random number generation is the culprit of bad performance. We use RNG heavily throughout the simulation; What direction does water flow this tick, where does stream spawn, etc. Since all simulation logic is run within a loop, this ends up being extremely expensive.

We could limit the uses of RNG but we don't want to rewrite everything or break the sim, so instead lets just precalculate our random numbers and see if we can fake it!

```java public class FauxRng {

private static final int PREGEN_COUNT = 10000;
private static int[] pregen = new int[PREGEN_COUNT];
private static int cursor = 0;

static {
    Random random = new Random();
    for (int i = 0; i < PREGEN_COUNT; i++) {
        pregen[i] = random.nextInt(Integer.MAX_VALUE);
    }
}

/**
 * Returns a random number between 0 and end (inclusive).
 */
public static int random(int range) {
    return nextInt(range + 1);
}

private static int nextInt(int i) {
    cursor = (cursor + 1) % PREGEN_COUNT;
    return pregen[cursor] % i;
}

/**
 * Returns a random number between start (inclusive) and end (inclusive).
 */
static public int random(int start, int end) {
    return start + nextInt(end - start + 1);
}

public static boolean randomBoolean() {
    return nextInt(2) == 1;
}

} ```

Don't show my boss.

Besides this change we limit the neighbor checks needed for each cell where possible. There are also some things that won't hurt the simulation much if they are run less often, like updates to the heat map.

Improving Rendering Performance

On LibGDX dynamic textures are generated using a Pixmap, which is fast on desktop, but slow as a snail on the browser. Lets check LibGDX's Pixmap implementation on web platform to check out what is so costly about this.

```java this.ensureCanvasExists(); if(this.blending == Pixmap.Blending.None) { this.context.setFillStyle(clearColor); this.context.setStrokeStyle(clearColor); this.context.setGlobalCompositeOperation("destination-out"); this.context.beginPath(); this.context.rect((double)x, (double)y, (double)width, (double)height); this.fillOrStrokePath(drawType); this.context.closePath(); this.context.setFillStyle(this.color); this.context.setStrokeStyle(this.color); this.context.setGlobalCompositeOperation(Composite.SOURCE_OVER); }

    this.context.beginPath();
    this.context.rect((double)x, (double)y, (double)width, (double)height);
    this.fillOrStrokePath(drawType);
    this.context.closePath();
    this.pixels = null;

```

Yikes! Pixmap is backed by a browser canvas. Since we draw tens of thousands of pixels, a fat loop won't perform very well as a tight one would.

If we could push an array of color data straight into the canvas it might perform better. Google Web Toolkit allows you to directly hook into Javascript, so lets write a little function to feed the canvas our pixel buffer. This ended up fixing rendering times to 4ms on Chrome, but Firefox still struggled. Dang!

Take a Break or Educate!?

Ultimately reading the google scriptures on the matter would help, but I tend to end up with too many browser tabs of interesting topics and no work done. Sometimes taking a short break and giving your mind a rest can be as effective; got an idea! Lets try something else.

Since only a small amount of particles in our sim change each frame, why not keep track of those and only do the expensive pixel plotting calls when we need to? We use an in-memory buffer outside of the GPU to track pixel changes, and plot changed pixels to a persistant FrameBuffer in GPU memory.

Delta's visualized looks something like this:

5921aa9170f27591622802.gif

Success! We managed to drop rendering time to 1-4ms on our target browsers.

Final Results

We've managed to get the time to generate a frame down to about 6-10ms, which is pretty good. We still hit the 30ms sometimes but overall the simulation is pretty smooth.

muchbetter.gif

Wanna try it out yourself? You can play the sandbox version here (WEB). Press P to open up the profiler.

Zwfduhc.png

Thank you!

My first ludum dare (and my first game published more widely than to a group of friends) went well - at least I think so. Big thanks to all that took time to play it, and leave the great feedback I got. Cheers to the great creators behind the open source graphics and music that made it possible!

  • Overall: 340 (3.441 average in 113 ratings)
  • Fun: 180 (3.55 average in 113 ratings)
  • Innovation: 718 (2.243 average in 113 ratings)
  • Theme: 671 (2.636 average in 112 ratings)
  • Humor: 145 (3.387 average in 108 ratings)
  • Mood: 387 (3.231 average in 110 ratings)

With so many great games I'm chalking that up as a success :D

ENTRY PAGE

https://www.youtube.com/watch?v=fuCQwZIAZMQ&feature=youtu.be

Max is still angry, and waiting for a big post-jam update.

Cheers, this was a fantastic experience!

Flat Earths! 35th in Overall Jam, 33rd in Fun, 31st in Visuals!

In a world where everything is subjective, it's hard to dispute that Ponywolf and Mutated Software took 35th place in the 72-hour #LDJAM for Flat Earths!

Capture.PNG

We really enjoyed making it, and now we have the heavy burden of deciding if this a high enough finish to make a post-jam version.

Flat MF'n Earths Peepol

You can play it on itch.io or play it on Gamejolt or read our postmortem.

Last Day of the Woods

* I really surprised. I wasn't able to send my game to Compo (because of time) and I was a part of the Jam. But I made everything (even music) in three days all alone, so my game "fought" with games made by three or four or even six persons. All in all I get 32 place! That's amazing! Thanks to everyone who rated my game! *

111мок.PNG efefни-8.png

* If you're interested here it is - https://ldjam.com/events/ludum-dare/38/last-day-of-the-woods *

I'm confused on the scoring so far is it done?

My first dares results? Overall: N/A (3 average in 3 ratings) Fun: N/A (3 average in 3 ratings) Innovation: N/A (0 average in 2 ratings) Theme: N/A (0 average in 2 ratings) Graphics: N/A (3 average in 3 ratings) Audio: N/A (0 average in 2 ratings) Humor: N/A (0 average in 1 ratings) Mood: N/A (0 average in 2 ratings)

Results are in! The rush for «Alternative» Math and the Renegotiation of Belief

Everyone knows all about being a first-timer. We hear of the thing, watch attentively for years as it happens around us, crafting glorious tales of human transformation, painted-to-sainted whores and the other way round — or to quote a lovingly racist cartoon version of Hercules, «from zero to hero, just like that!». And we want in on the thing.

I speak not of sexual discovery or dalliance, although the metaphor certainly fits, but of Ludum Dare, whose low-hanging fruits I’ve been enjoying for many, many years now — I've only recently begun building up skills in computer graphics and attempting to teach myself game development; progress has been slow but steady, although what you people refer to as rapid prototyping, I still call an excruciatingly painful childbirth.

And so it was that I became resolved to pop my LD cherry. At the event’s quinceañera. With a non-game.

Well, the results are in, and everyone’s been super excited since the big reveal. I am too. The feed is positively burning, and I feel obliged to point out the extreme levels of rationalization going into the multitude of self-aggrandizing result posts being shared right now. Jam and Compo winners are obviously happy, but everyone else seems to be scratching their heads and looking for ways to present their results under a more favorable light. This has led to a variety of number-fudging tactics and statistical spin-jobs, in what seems to be rather "alternative" math for a programming crowd.

It's actually pretty fun! The worse your basic calculus (or that of your target), the better your results turn out. For example, watch my Theme score teleport from the bottom 2% to the top 25% as I check its relative position in the Jam against the total amount of LD38 submissions (see Total Abuse).

CryoDreamemLD38/emResultStats.png

Relativism is all well and good, but please stop lying to yourself, to others, and to me. You've completed the Dare! Be proud of what you made and humble enough to own what you got in return.

:octopus: rules all datasets equally.

Rate My Game Please

Sooo, I have been using the wrong link on my page for some time, however, now it should be fixed so people can rate my game!

"A Cage of Love" Post Mortem

Results are finally in and they are interesting ! I'll make this post to conclude my participation to this Ludum Dare.

Ratings

results.png

When I submitted this game, I really didn't believe in it, there were a lot of things I could not make properly and I thought I would get very bad ratings. But in the end this was great ! Not my best ratings overall, but I still managed to be #10 in the Theme category :smiley: . Not really a category I was looking for but I'm still happy !

Here is my evolution from previous Ludum Dare participations :

LDscores.png

Unsurprisingly, my Fun score is the worst : there is not much to do in the game, it is slow, it is full of bugs... I was really hoping to find interesting game mechanics but was not very inspired. I also got a smaller rating in Graphics than last time. From comments I thought it would be a bit better, but it's not so bad :slight_smile: . So overall my previous games were better games. But...

I got a much better score in Theme !

My idea was to have a world which is getting smaller and smaller, and to have the player go through the same level day after day, but with differences due to the disappearing of the world. In the end I didn't manage to create that as cleverly as I wanter gameplay-wise, but I guess people liked the idea !

I have better audio !

Okay, not a big increase, but still, I keep improving little by little. I get most of my points from sounds, as I never made music. This time, I wanted to have some music. I made some 2-3 notes game over and opening "musics", which I quite like. I actually also tried a longer melody which was only in the title screen but I sadly didn't have any comment about that. People probably skip it directly :slight_frown: . Still, this forced me to actually create some music and I really hope to have something better next time !

Better mood !

Okay, from what I read a lot of people don't really know how to rate this category and I'm not quite sure too. But this is my best rating in this category, which means people liked my little story and narration. I'll come back to that.

The story

I usually do games which are not serious at all, with bad jokes and all. This time, I was inspired to do something more serious and personal, and it was very interesting. My game tells the story of two lovers living in a lovely house. One day, the world around them disappears and it keeps disappearing everyday, confining them in their house. At the end, the player has the choice to leave or staying stucked with the girl. As I explained, it was kind of metaphorical and personal.

Here is my interpretation of the story, which I didn't give : the boy is in love with the girl, but there is actually something wrong. The rest of the world disappearing represents what the boy is losing day after day because his relationship with her is taking all of his time. While the boy tries to fix that, the girl doesn't care. Some people complained that the girl wasn't helping in the game, but it was intentional. I wanted to show that despite all the love showing, there was actually something wrong : the boy sees his life escaping him and looks for help but the girl does not understand.

Now it was really interesting to see the interpretation of other people. Some comments I got : "I think I grasped the metaphor, it has some meaning to me too", "Nice that you offered a choice at the end! Wasn’t too easy for me, I could relate to the situation! Thanks for making this game!", "I’m not sure why you hate the player so much in a game about the perils of love. Maybe that’s the point. Hmmm…", "I thought the partner seemed really passive [...] It made the last choice pretty easy for me. Maybe that was the point, but the partner would have been more likable as a character and the loving relationship more believable with some teamwork in the gameplay[...] Love takes two sides working together.", "Despite the fairly short buildup, the ultimate decision has a lot of weight behind it"

These are really unusual comments and I loved reading them. This really pushes me to keep in that direction for future work, as it's something that I have been wanting to do for a long time. I'd like to thank all the people who let a comment : @sgadrat, @gozz, @simonhutchinson, @bunnery, @diegoctorguet, @r8berto, @blinry, @kevtukk, @mandarad, @willowblade, @ryte2byte, @tweedle, @smiling-cat-entertainment, @rixud, @shiitman, @zeriver, @davidthelazar, @nedmakesgames, @gaiusjulius, @feltip, @axoona, @stuntddude, @sparrow, @m-1 . Sorry for those who died in front of the phone booth :sweat_smile:

Some lessons learned

  • Test the game more and fix major bugs. People won't necessarily read your warnings in the game page, so it's better to have something with less content but that does not frustrate the player.
  • Same thing for graphics : it's better to keep it small and have everything perfect than a lot of things with inconsistent quality. I saw lots of games in the top rankings of Graphics which are very simple but clean. While I don't want to abandon the hand-drawn style, I think I can do better.
  • I need real music if I want to improve in the Audio category.

See you in Ludum Dare 39 ! :grin:

First jam, very good results!

Results:

*Overall: 209 (3.667 average in 20 ratings)
Fun: 70 (3.889 average in 20 ratings)
Innovation: 251 (3.389 average in 20 ratings)
Theme: 611 (2.889 average in 20 ratings)
Graphics: 501 (3.167 average in 20 ratings)
Humor: 18 (4.222 average in 20 ratings)
Mood: 138 (3.765 average in 19 ratings) *

So I have got 18th in humor? In my first jam? OMG thank you all so much!!! I really appreciate it!

I guess cows are really funny today :D

Graphing all of my Ludum Dare Entries

This was my 12th Ludum Dare in a row, so I've accumulated quite the data set in terms of entry ratings. Here's the graph of all 11 of my rated entries (LD36 had no judging):

ld ratings graph.png

As you can see, I've generally gotten better over time, with a few entries that received standout ratings in certain categories. I'm still super pumped that I finally got a 4 star this LD! That being said, I feel like my progress has been a bit slow. I've gotten better, but it's taken 4 whole years! With school and all, I usually don't get to devote a lot of time to game development. I feel that if I just spent more time working on my craft between Ludum Dares, I could make a really standout entry. My other regret is really playing it safe lately. At first, I was more willing to try different genre and more radical ideas. Lately, however, I've been sticking to my 2D platformer comfort zone. 2D platformers are my favorite, but maybe I should branch out.

Anyway, this was a great Ludum Dare and I can't wait for the next one.

I can't wait for LD39!

I'm happy with the results of my second ludumdare:

Capture.JPG

But have I made progress?

strong start.JPG

In my first ludum dare I used 3d models what seemes to be better, but now the game was more fun with simple graphics and got better overall. Both games I made were a bit to hard, because while developing I thought they are easy, so next time I have to make the game easier.

Planet Bash

https://www.youtube.com/watch?v=iUf9Lu5ZDVs

The results are in and wow! I never thought I could rank this high in my first game ever developed. I took this as an opportunity to learn some coding, which is something that always kept me from making my own games... I have worked doing art for games but I never had the confidence to take on one project on my own. Now I do!

Capture.PNG

All the feedback and entries were simply amazing, I can't believe the amount of talent and vision that is gathered here. You guys are all great, this is one experience that made me grow and I totally enjoyed being part of this.

I am still working on further improving the concept of Planet Bash, so keep around to watch it evolve into a finished product for I will be uploading the updates of the post-jam version. I put what I have so far in a public alpha so you can check what's new: https://killerkun.itch.io/planet-bash

My first ever 4-Star, but what does it mean?

Alright, results are in. I am thrilled that I got close to 100 Overall. After placing 446 and 263 in my previous attempts, and now 112, a place in the coveted top 100 is within reach, just you wait Ludum Dare!

I even got my first 4 star rating with a category in the Top 40:

results.PNG

However, what should I make of it? A really good score for Theme? What does it mean? Looking at how many people did the "guy on a round world" I thought that my game wasn't so special in that respect. It's an achievement and I'm super happy that I got it, but I would like to interpret this for the future. Any ideas?

ld38emfinal2/emopt.gif