Endless Waves of Aliens? Big Guns? A BOOMBOX? Let Them Come has everything you need to recreate a great Rambo in space story, after all they drew first blood right? While I am pretty pumped to start mindlessly mowing down hordes of ugly looking aliens what intrigues me most is how great this game looks being made in GameMaker. The dynamic lightning, the weapons effects, the sound and music, all of it looks well done and really shows off how powerful great design can be with GameMaker. I received an excellent technical write up from Klemen Lozar, the lead developer himself, on some of the challenges in making this game which we will go through piece by piece in a few minutes, but lastly just some launch time information: Launching on Steam and Xbox on Oct 3rd, with plans to launch on PS4, iOS and Android in the coming weeks; visit their website at: let-them.com; and check out their twitter: @LetThemCome .
Let’s talk about textures
Textures are the cornerstone of games and while more sometimes means better, it always means more space, both storage and memory so finding a balance between the two has always been tricky. In Let Them Come, the developer found an interesting compromise:
“Every creature in Let Them Come uses 3 unique texture sequences to achieve the final look.
With a total of 14 enemies and 5 bosses this seems like a lot. However, the textures, as described with examples below, ultimately combine with shaders to bring a lot of utility and add extra eye candy to the game that would otherwise require even more sprites to achieve.
To be as efficient and fast as possible, the game is rendered at a modest resolution of 960*540 and then scaled to fit the display. Low resolution, culling and other optimizations allow the game to run on a vast spectrum of hardware, including mobile devices.”
There are some great points made here:
- Shaders can add a lot of visuals to the game without taking up the extra memory and space of additional textures at a slight increase of gpu processing
- Getting a game to look and play good is only half the battle, getting it to run on all platforms that you want is the other half. Using as many techniques as possible to get performance as high as possible is recommended so the mentioning of difference optimizations is appreciated here.
Few things have the impact that good lighting has on the visual side of things, and Let Them Come is all about Light or lack thereof. The dynamic lighting systems are setup just right and really convey the terror of being alone in the dark with an impending rush of death coming for you. Observe the following snippet:
“By modifying depth, falloff and brightness of the lights, very dramatic and exciting effects can be achieved”
Now that is simply amazing, and all done in GameMaker. But there was more to the dynamic lighting system, including some more optimizations:
“Every dynamic game asset has a separate normal map texture required by the lighting engine. I choose to go with pixelated normal maps instead of smooth to maintain the pixel art look as much as possible. Most of the game assets were modeled, rigged and animated in a 3D package. This seems like overkill but it helped me achieve more accurate results and somewhat automate the creation process for the required textures.”
“Sprites in Let Them Come don’t rotate, in assets that need it, the rotation is part of the sprite sequence itself. This serves two purposes. It eliminates rotation artifacts that can be very obvious with low resolution sprites but much more importantly it allowed me to completely ignore rotation calculations in the lighting system, helping greatly improve performance.”
Now I thought it was interesting that the rotation was built into the sprite animation sequences instead of being procedural but the performance savings are a huge point, especially if you are targeting multiple platforms.
Tis but a scratch
Entity Damage is another area that is incredibly important in a visual oriented game and once again Let Them Come delivers with a Procedural Damage system. The benefits of making it procedural does not come free though, as you will need to choose how to represent damage on the entity texture; most times this is done using UV texture mapping which is exactly what Klemen did here. I’ll let his words explain:
“To avoid having to create multiple unique sprite sequences for different damage stages Let Them Come uses a procedural damage model achieved with a shader. This requires another unique sprite sequence per creature, UV texture. The UV texture, as seen above, is used to map other textures to the original motion of the sprite. This can be used to achieve all kinds of effects, in my case to signify the health of enemies and depict different damage types, like fire and electricity.
In a shader this can be done quite simply by replacing UVs of the original base texture with the xy coordinates of the dedicated UV map.
Another advantage of this mapping technique is that it offers total control over granularity, scale and look of the textures we can work with, as seen with examples below.”
“Some more examples of sprites associated with creature damage can be seen below. Most of the sprites needed to be polished by hand, some like blood splashes below are entirely hand animated, including their normal maps.”
“All of this combines to give Let Them Come a distinct action packed and dynamic feel!”
Indie Devs, Indie Games, Indie Fun
Let Them Come represents two years of constant work by Indie Developer Klemen Lozar who also founded the Indie Development Company TuataraGames. It is always great to see a developer follow through on creative work and it is even better when that creative work is done in GameMaker as it adds another example of what can be accomplished. I applaud Klemen and hope everyone takes a look at Let Them Come.
Good Luck in all things,
- [Made in GameMaker] Bounce Rescue by Bitecore Studios
- GameMakerBlog in Top Ten of Top Gaming Blogs to Follow in 2018
- GameMaker Studio 2 Winter Sale brings warm savings to developers
- [Giveaway] Deios 2 Steam Key Holiday Giveaway
- GameMakerBlog Levels up with new IndieDevHelp initiative