FinalForeach

LD 40

I'm in!

Woke up this morning to find this on my calendar! Completely unexpected. As a Solo team I will be using libGDX most likely, as well as sfxr, Audacity, and Gimp. What worked for me last time was writing down ideas from the themes to be voted before the theme reveal, and I highly recommend others do the same! Much easier to start with inspiration!

Done at last!

LD40-Ninjewels-Cover-image.png

This was a fun one. Much improved from last time, and I powered through without a writer's block. Having finished my game, I put the project in a git repo, and then I quickly discovered some personal information was on there... So I deleted the repo. Little did I know, my original source code, alongside everything from the project was lost.

I was shocked and horrified at this realisation. But then I realized I previously exported my project to a java binary. I then recovered the source code that was inside. Phew...

You can find my game here: https://ldjam.com/events/ludum-dare/40/ninjewels

Ludum Dare 45

I'm in!

The last ludum dare I did was LD40, and I'm back with more experience under my belt. Last time I did well with my art skills, hopefully this one will improve on game design. Was going to try C++ this time, but I need to work more on my engine first.

My setup: Programming Java with libGDX, Eclipse, and Git, drawing with GIMP, sound with sfxr, audacity, and possibly OpenMPT.

Lessons learned from last time:

  • A consistent art style is good, but important items and characters should be distinct from the background. Choose colours carefully.
  • Animations take time, but are very much worth it done right.
  • Git isn't meant to be used from the web browser, use the command line (I wasted so much time uploading files separately last time).
  • Don't try to improvise on physics if you don't have to. My last game had dumb turrets with poor aim since I neglected to use proper physics equations for projectiles.
  • Low game difficulty makes it easier to test, but people will be disappointed. Have a debug setup that makes your character invulnerable for play tests.

Here's to hoping we get some good games out of this!

Ludum Dare 47

I'm in!

I haven't done one of these in a while, here's to hoping my game-making skills haven't eroded away :sweat_smile:

My setup:

Programming: Java with the LibGDX library, Eclipse IDE and of course, Git

Graphics: GIMP

Sound: sfxr and Audacity

Music: LMMS

Last time I made big improvements on game design and even added music! I expect my musical skills to have improved again, since I moved on to LMMS and learnt a lot about music theory and how to make instruments that don't suck.

I expect my art skills to have taken a turn for the worse considering I haven't done pixel art in forever! :scream:

Last time I had issues with collisions, so this time I'll visualize the bounding boxes and hopefully save myself precious hours to improve the game overall.

2D Post Processing and You!

Here's a handy tip on how to make your 2D games nice and pretty. Lighting is generally an expensive and complicated operation, but if we take a simplified approach we can make a bland looking game into a good looking one without too much effort.

The first step is to clear the screen and draw into an FBO the lights. In my case I had tiles so I used a circular gradient texture for the player's field of view (shown left), and a white tile texture with heavily blurred edges for the tiles themselves (shown right). These are semi-transparent but I put a black background so that you can see easier here. light-textures-demo.png

So for each glowing tile the glow texture was drawn into the FBO with a colour tint, and each glowing entity would have the circle gradient tinted.

Since lights are additive and do not override the lights drawn before them, I had to set the glBlendFuncSeparate with parameters GL_SRC_ALPHA, GL_DST_ALPHA for the colours, and GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA for the alpha (you can see documentation of this openGL function here: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml

After that was drawn, set the blend function back to normal with glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA) so that images drawn in front override images in the back. Also clear the screen again and draw your normal game with its entities and tiles.

Then we end up with the two views (on the left what is now drawn to the screen, on the right stored in the FBO) on top shown here: Postprocessing-demo.png

Lastly to combine these two, draw the FBO (i.e the lighting) with the blend function glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA) so that the lighting produces a multiply effect as is done in image processing, darkening non-lit areas, and then you are done! To draw a UI, simply repeat the normal drawing step again with only your UI elements so it is not affected by the lighting.

I hope you can take from this and make prettier 2D games! If you want to see my compo entry where I used this technique go to https://ldjam.com/events/ludum-dare/47/keys-and-goblins where the source code is linked as well to see how this works in code.