1. Impaler Gold
  2. News

Impaler Gold News

Listen to the music of Impaler!

For all of you that already played and those still on the pale/spike, we have a nice treat to listen to at home, work, and in between. Here’s the official Impaler soundtrack!

Composed and produced by Catton Arthur, this six-track album delivers a progressive synth metal experience of the best retro shooters from the 90s. The fact that it was performed using actual romplers from that era only adds an extra spike!

Listen to the entire soundtrack below in one video or check this song-by-song playlist.

[previewyoutube][/previewyoutube]

Track List:
  1. Ensorcelled by Bloodshed
  2. Cathedral of the Skull King
  3. Solace of the Auroral Pentagram
  4. Flesh Tempered like Weathered Steel
  5. Rapture of Eternal Agony
  6. Ripped from the Womb of Oblivion


The romplers used to record it:
  • Korg 01W
  • Korg TR Rack
  • Emu Proteus 2000
  • Roland SC-55
  • Emu Proteus 1
  • Korg M1




Soundtrack credits:
  • Composed and Produced by Catton Arthur
  • Art Illustration by Logan Maxon
  • Glitch elements by Zoe Wolfe
  • Album Art Arrangement by David Lopez


You can also listen to the soundtrack on Spotify and support the artist by buying the music on Bandcamp.

https://store.steampowered.com/bundle/29360/Project_Warlock_x_Impaler/

https://store.steampowered.com/bundle/29427/PROJECT_WARLOCK_II_x_Impaler/

https://store.steampowered.com/bundle/29426/BLOOD_WEST_x_Impaler/

https://store.steampowered.com/bundle/29424/INCISION_x_Impaler/

https://store.steampowered.com/bundle/29425/POSTAL_Brain_Damaged_x_Impaler/

https://store.steampowered.com/bundle/29385/Pixelated_Milk_Bundle_x_Impaler/

https://store.steampowered.com/bundle/29361/Impaler_x_NecroBouncer/

Impaler is now available to play!

Roguelite arena shooter Impaler is now available to buy and play!

In Impaler you summon spikes to slay demons, build barriers, and reach the higher ground on top of using the arsenal of FPS staples. The game was designed for quick, fun sessions and is well suited to playing on the go thanks to its Steam Deck optimization. Each playthrough is a unique challenge that lets you beat high scores, and unlock new weapons, skills, and upgrades.

The solo developer Apptivus has custom-built the game’s engine using the original C language. This was his personal challenge of self-development as a programmer. It also gave him full control over the game’s looks, feels, and performance. Developing Impaler was his passion project for the last 212 weekends. Four years later, players can finally enjoy it!

[previewyoutube][/previewyoutube]

Go and give Impaler a try and leave a positive review if you like it!

Impaler includes additional enemy and weapon skins from classic boomer shooter Project Warlock and they're here to stay as a permanent option, just like you asked for it on the forums!



We also have a number of Steam bundles with extra discounts, so be sure to check them out!

https://store.steampowered.com/bundle/29360/Project_Warlock_x_Impaler/

https://store.steampowered.com/bundle/29427/PROJECT_WARLOCK_II_x_Impaler/

https://store.steampowered.com/bundle/29426/BLOOD_WEST_x_Impaler/

https://store.steampowered.com/bundle/29424/INCISION_x_Impaler/

https://store.steampowered.com/bundle/29425/POSTAL_Brain_Damaged_x_Impaler/

https://store.steampowered.com/bundle/29385/Pixelated_Milk_Bundle_x_Impaler/

https://store.steampowered.com/bundle/29361/Impaler_x_NecroBouncer/

Writing a 3D Game in C (in 2022)

Many indie game developers will reach for Unity, Unreal, or Godot when starting a new project. These battle-proven game engines are likely the right choice. Me, after years of using Unity, I wanted to do something different. I decided to push myself and write a game from scratch. It took longer than expected but I learned a ton and it renewed my interest in game development.

[h3]My primary motivations to write Impaler in C:[/h3]
  • I was tired of building in Unity
  • I wanted to learn more about the internals of game engines
  • I wanted the game to run flawlessly on the Steam Deck
  • I wanted the game to look and feel unique


[h2]Thoughts on Proprietary Engines[/h2]
Games built on proprietary engines are increasingly rare today. It is estimated that fewer than 20% of games launched in 2021 were using in-house tech. Overall, this is a good thing. This means developers are focused on creating a good game experience vs implementing low-level systems. The majority of projects should be approached this way. That being said, I’m always excited to play a game that was built from scratch - I enjoy seeing what tradeoffs & innovations developers make. In my opinion, games built on proprietary engines are often more unique.

[h3]Exceptional games with proprietary engines[/h3]
Factorio (2016) supports a staggering number of units, buildings, and systems that interact in real-time.

Journey (2012) has a distinct visual style and is considered one of the most unique games of all time.

There are examples of games that should not have been built on in-house tech too. Cyberpunk 2077 was delayed multiple times, plagued with performance issues, and shipped with game-breaking bugs. The developer has recently switched to Unreal - this suggests the engine may have contributed to Cyberpunk’s challenges. There are risks in building on a bespoke engine.

I learned hard lessons building Impaler too. When I pitched Impaler to publishers, I shipped a preview build with a sinister bug. The bug made the game run in slow motion and it appeared like the game had extremely poor performance. In reality, it turned out to be an issue with the game clock and handling of laptops with power-saving features. Naturally, it did not reveal itself on my own machine. This almost killed my chances of securing a publishing partner. “writing it yourself” comes with risks.

[h2]Background on Unity[/h2]
Unity is a mature game engine with indie-friendly licensing and a massive community. It uses a modern language (C#) and has everything you need to build a game. Anything that isn’t provided out-of-the-box can be found on the asset store or GitHub. The available tutorials, free add-ons, and open-source projects are incredible. On top of that, you can export your games to run a wide range of platforms. All-in-all, it is a complete solution.

I was introduced to Unity in 2013 when I was a mobile game developer. It was an attractive option for making cross-platform games and it did this very well. Later, in 2017 I used Unity to make VR games. I was the “optimization guy” on many of these projects which gave me an opportunity to learn a lot about it.

[h3]There are exceptional games built on Unity[/h3]
Cuphead (2017) makes you feel like you are inside a 1920s cartoon.

Elderborn (2020) is an action game with massive environments, significant polish, and stellar performance.

[h2]Why I Avoided It[/h2]
Unity is also associated with titles that “feel” like Unity games. I attribute the “Unity feel” phenomenon to the overuse of common components and starter projects. The previous examples do not suffer from this. The developers took great care to ensure the visuals, physics, and camera implementations were tailored to the game they were making. Unfortunately, there are others that feel like you are playing a reskinned tutorial.

Despite the strengths of Unity, I disliked using it and my interest in game development diminished. The aspects of game programming that I enjoyed the most (graphics and physics) were not a big part of the job. Instead, I glued pre-built components together, performed frustrating upgrades, and refactored code to avoid garbage collection. I found the Unity way of doing things at odds with the way I like to write software.

[h3]My past challenges with Unity development:[/h3]
  • required a lot of mouse work and clicking
  • made heavy use of binary files - a challenge for collaboration and version control
  • the “nice” C# features such as LINQ would generate garbage
  • I didn’t like ECS, prefabs, or the approach to instantiating game objects
  • it felt very object-oriented vs data-oriented (with state and logic mixed)
  • keeping a portfolio of games current with the latest Unity version was exhausting


[h2]Motivations for Not Using an Engine[/h2]
I was making a game in a crowded genre and I knew many of the other titles were made in Unity. I believed that building on my own (very simple) engine could help me capture the retro feel and aesthetic I was after.

[h3]My goals & circumstances:[/h3]
  • wanted every ounce of performance for the Steam Deck
  • could afford the extra time investment
  • the scope of the game was not overly ambitious
  • wanted full control of the look and feel
  • saw a plausible path to reusing the tech for other projects
  • wanted to void engine licensing fees


Knowing I was writing a game from scratch, I had to choose an environment and framework. I chose MinGW, GLFW, and OpenGL because I was familiar with them. I then stumbled across Awesome C on GitHub and found libraries that convinced me writing a game in C was feasible.

[h2]Why C and not C++?[/h2]
C++ is the obvious choice but the syntax and endless features overwhelm me. I’m not a fan of OOP for game development - class-heavy C++ was not the right move. Despite being 50 years old, I found the simplicity of C attractive. The game is almost entirely structs, arrays, and functions (with a few special data structures sprinkled in). I like data-oriented design and C somewhat encourages a separation of data and logic. It seemed to better match my programming preferences.

[h3]C structs became my favorite language feature:[/h3]
  • deep cloning of data with simple assignment a = b;
  • deep equality checks bool are_equal_by_value = memcmp(a, b, sizeof(some_struct_t));
  • immutable data with const const some_struct_t foo = {};
  • designated initializers some_struct_t a = { .foo = true, .bar = 123 };
  • simple preallocation of game state static game_obj_t object_pool[MAX_GAME_OBJS] = {};


[h2]What I Learned[/h2]


[h3]It is a slow burn - especially for a weekend project[/h3]
C is time-consuming to write compared to other languages - there is no doubt about that. The basics like string & array manipulation can’t always be done with elegant one-liners. However, some of the lost time is rewarded back to you in other ways. C is a typed language with good static analysis which makes refactoring predictable and low-risk. There are a limited number of ways to approach problems but that consistency is a feature. I would describe it as a slow and steady process. With the right code foundation, a developer can be productive in C.

[h3]The good:[/h3]
  • fantastic open source C libraries are available
  • memory management isn’t painful when you preallocate
  • compile times are short and binaries are small (~4MB)
  • builds are simple and fast - can push a new build to Steam in 15s (pure code change)
  • the code is portable if you avoid OS-specific APIs (I develop on a Mac & test on a PC)
  • the performance is great


[h3]The bad:[/h3]
  • debugging user issues in production is hard (Unity crash reporting vs log files)
  • scarce community, support, and tutorials
  • AV software may think your game .exe is a virus
  • creating good menu interfaces is challenging
  • less confidence the game will work on a wide range of hardware
  • SDKs often have C++ interfaces that require a custom wrapper to call from vanilla C


Impaler could have been made in
[h2]Closing Thoughts & Helpful Resources[/h2]
Off-the-shelf game engines are the right choice for most projects - especially ones that need to be profitable and ship quickly. If you have the luxury of writing a game from scratch will expose you to more and make you a better developer. At the very least, you will gain an appreciation for what commercial engines provide you. I hope to continue what I started and write more games in C - I’m enjoying it.

I compiled a list of resources that were helpful while developing the game. You can find it here on GitHub. I hope to share more about the internals and architecture of the game in a future post.

https://store.steampowered.com/app/1573090/Impaler/

Special in-game content revealed!

We've teamed up with the creator of boomer shooter Project Warlock for an explosive event!

Upon the release of Impaler on December 6, the game will include in-game enemy and weapon skins from Project Warlock. The sexy Demoness will invade our cathedral and the powerful Harvester shotgun will be there to stop her from sucking out your life!



Project Warlock was released 4 years ago in 2018. That's almost precisely the same time as the solo indie dev Apptivus began the development of Impaler as his weekend passion project. 212 weekends later, you will soon be able to play Impaler!

Also, keep an eye out for a special launch bundle of Impaler and Project Warlock.

Wishlist the game and share it with your friends!

https://store.steampowered.com/app/1573090/Impaler/

A price to impale for!

Impaler is releasing soon and we wanted to give you a heads-up about our global and local pricing.

Our main goal with Impaler is to give you a short, intense, and fun break from reality. To complete the game you will need to beat 10 waves of enemies and a boss. One playthrough should take you about 30 minutes. After that, you can replay to unlock more skills and beat your high score.

A game like this should be affordable to stand out among much bigger titles, so we decided to set our global base price at $2.99.



Below you can also check some of the local prices that we set based on price points recommended by Steam:

  • Global & US - $2.99
  • UK - £2.49
  • France, Germany, and Eurozone - €2.99
  • Russia - pуб.125
  • Brazil - R$10.49
  • Japan - ¥350
  • Indonesia - Rp28,999
  • Turkey - TL33.00
  • Ukraine - ₴74
  • Mexico - Mex$39.00
  • Canada - CDN$3.89
  • Australia - A$4.50
  • New Zealand - NZ$4.49
  • Norway - kr33.50
  • Poland - zł13.49
  • Switzerland - CHF3.29
  • China - ¥15.00
  • India - ₹155
  • Chile - CLP$1,900
  • South Africa - R32.00
  • Taiwan - NT$66
  • Argentina - ARS$249.00
  • CIS countries - $2.19
  • SASIA countries - $1.89


We're also planning a launch discount and some neat game bundles, so be sure to wishlist and follow Impaler on Steam!

[previewyoutube][/previewyoutube]

https://store.steampowered.com/app/1573090/Impaler/