The Eternal War Between Light and Darkness

Hi everyone, welcome to another installment of me sitting in a corner thinking about what I did then writing about it.

I wanted to push out a blog post sooner, complete with a new gameplay video. However, the day after I uploaded it on Youtube, I made some major changes to the graphics and I was no longer satisfied with the video. So I had to make a new one and then start writing about that.

Before I go through it in detail, I’m just going to show you the new gameplay video and see if you can spot the changes:


Can you see what has changed. Go ahead, I’ll give you some time to think about it.

… … …

Ready? Alright, here we go:

Redundancy eliminated in graphics pipeline. Productivity up, but many lines of code now out of work

This first one is a bit unfair since it’s imperceptible: I rewrote the lighting rendering pipeline so that it works with GameMaker: Studio‘s native graphics pipeline rather than against it. This switch resulted in a 25% boost in framerate, though it’s not perceptible on my dev machine since it is able to render the game at over 60 fps. However, this might help some lower end machines run the game at the full framerate so they don’t have to cap it at 30.

Light and dark embrace more extremist positions

The way light and shadow are blended with the scene was also changed. In the old method, light and shadow were blended in using multiply blending implemented with GameMaker‘s built-in customizable blend modes. The new method uses overlay blending by means of a shader (there was no easy way of configuring GameMaker to draw using overlay blending). Below is a comparison of both methods:

Left: Old lighting using multiply blending | Right: New lighting using overlay blending

If you’re familiar with image editing programs like Photoshop or GIMP, then you should already know the differences between multiply and overlay blending and what they do. If not, then you can click on the links to get the technical explanation, or you can just look at the pretty pictures. The game now has access to a greater range of brightness values by using overlay blending; this not only makes bright areas look brighter but also makes dark areas darker, creating a a more striking contrast between the two:

The increased brightness also allowed me to enhance certain particle effects, such as making the fairy dust created by Réiltín look actually sparkly.

Increasing number of young lights join the occult

I fixed a long-standing problem with how the simple lights were drawn. In my engine, simple lights are lightweight (no pun intended) light sources that don’t cast shadows. They are used for things like lamps, muzzle and explosion flashes, and glow effects. Originally, these simple lights were drawn in post-processing, i.e. simply added on top of the regular (shadow-casting) light source. This had the effect of those lights shining through opaque objects when they should be occluded.

Should be. Could be. Would be. ARE:

In the screenshot above, the spiky hit flashes are properly occluded by the tree trunk in front of them. I left in the option of allowing simple lights to be drawn in post-processing, as demonstrated by the dead, flashing red monsters being drawn through the tree trunk.

Better minimap, better know a district

The minimap in the top-right is a fairly old feature, but before it only revealed the location of items relative to the Reiltin. In this update, it now also shows the location of enemies, walls, gates, decoys and proximity mines:

For proximity mines, the minimap also shows their activation range when primed and their area of effect when they explode:

Click to see full animation

I realize that giving all this information to the player really makes the game’s theme of obscuring things in the dark moot, but in the final game the player won’t have all this info all the time. They will have to use certain items or tools to get additional pieces of information.


Next time, on Feast for the Senses

And here’s some leftover stuff I haven’t finished yet but still want to mention:

Non-rectangular levels: it’s not hip to be square

Up until this point, all the levels I had created for Feast for the Senses were rectangular, whether they be levels for the Arena, free roam exploration, or linear exploration. But what if I didn’t make them rectangular? Here is a irregularly-shaped linear-type level I’ve started working on:

It might not be apparent from this screenshot, but this level is huge. It’s the largest room I’ve ever created in GameMaker. I had to make the sections wide enough to accommodate gunfights and the entire level long enough so that the player doesn’t just blaze through it too quickly.

Birth of a new tileset, the miracle of… uh… graphic design?

I’m starting to get bored of seeing both tilesets that are currently in the game, you know what that means: it’s time to add a new one to the family! The one I have in mine is a little more involved than the others. It makes use of dynamic graphics…

The undulations are almost hypnotic. Yes…

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.