🐔 Chicken Invaders 1 Remastered #05

Our next milestone is to get the CI1 code to compile inside the CIU framework. We want to get the absolute bare minimum to compile (but not necessarily actually work correctly), and then iteratively build upon it.

This means we ditch anything optional or superfluous and focus on the bare essentials. We comment out or stub out the introductory sequence, outro, disk I/O (saving/loading high scores), high score name entry. Even the sound and input systems are ripped out almost entirely (CI2 provides a sound emulation layer that we can use, and we’ll do significant rework on the input system to support mouse and joypads anyway). There are a lot of casualties here, but we’ll swing around and fix them later on.

This is a crucial step because it can’t be broken down any further sub-steps, and there’s no indication of whether we’re on the right path or even how close we are to a successful compilation (well, except for the giant list of compiler errors that should hopefully get shorter and shorter as time goes by). We have to spend several hours ‘flying blind’ until we land on solid ground again.

Thankfully, CI1 is a small project, and it’s easy to strip it down to a minimal working version. Other projects are much larger/harder, and we can easily spend several days or even weeks in a non-compilable state.

As part of this process, we also wire up the graphical resources so CI1 can access them (otherwise we won’t be able to see anything). We’ll use that program I wrote for CI2 to convert the essentials from bitmaps to textures:


These graphical assets are in the original (low) resolution, so let’s configure UVE for 640x480 and single-resolution (1X) graphics.

A slight(?) detour

Since UveUDX9, UVE has a mode called HQ2X, which doubles the resolution of all textures (while keeping the rest of the game exactly the game). This is how CI3 and CI4 were “remastered”: by re-rendering all assets in 1600x960 resolution (instead of the original 800x480). Uve++11 expands upon this concept, theoretically allowing for HQ3X, HQ4X, or above. Very recently, the capability to have different resources use different HQ factors was added. So, for example, it’s now possible for the UI to have twice the resolution of the rest of the game (this is used in the Android version of CIU).

When HQ2X was first introduced, two separate sets of assets needed to be created (one for 1X and one for 2X), and they were both kept separate on disk. It quickly became apparent that this is not a sustainable strategy, however. The two versions of each file must always be kept ‘in sync’ – updating one but forgetting to update the other causes a lot of bugs and maintenance headaches.

So CIU took a different approach. Only one version of the assets is ever created (the highest-resolution version). When the game is looking for an asset to load in low resolution, it will automatically downsample the higher-resolution version appropriately(*).

* This is only during development. For the final build, when the WAD data file is created, assets are baked into their final resolutions. There are also a lot of details I’m glossing over, such that .JPG files are never downsampled to prevent quaility loss, or that high-resolution asset dimensions are restricted so that they perfectly match the 1X dimension, or that you can mark certain assets to be ‘resolution-agnostic’. But this detour is long enough as it is.

…and we’re back

As I’ve mentioned, the decision at this point in time was to NOT remaster the graphics. Using existing graphics as-is (a) saves effort (b) arguably creates a more authentic experience and (c) is more in line with the initial reasoning behind this project, which was not a full remaster but more of a ‘technical refresh’. In fact, I agonized over the subtitle and how to best communicate this to the players:

  • Chicken Invaders: One ?
  • Chicken Invaders: Redoux ?
  • Chicken Invaders: Tech Refresh ?
  • Chicken Invaders: Re-heated ?

In practice, however, keeping the original graphics in 1X resolution was a poor decision:

  • UVE doesn’t actually support loading 1X assets directly – it always requires a 2X asset that it can downscale. So changes needed to be made to the engine to support this, hence more work. Most egregiously, it breaks compatibility with the older folder layout of assets on disk. As of this writing, I’m uncertain whether this change will be reverted.

  • After viewing the game for the first time, it became apparent that 640x480 graphics upsampled to FHD resolutions (or above) simply became to murky and blurry. And it only gets worse if you turn “bilinear interpolation” off(*).

  • I tried to half-fix this by upscaling the UI, but having the UI at 2X while the game is at 1X creates a jarring inconsistency in the quality.

* I should really have more screenshots of this process, but I didn’t know I would be doing a write-up until later.

So, the decision has been reversed: we’ll remaster the graphics at 2X resolution (similar to CI2), which now lands this project firmly in the “remastering” category. On the upside, we now at least know what the subtitle will be…


… but we now have a new set of problems.

Next part in the series

Start at the beginning


Who are you referring by we?

1 Like

Uh, isn’t CIU the only thing made in Uve++11? I was able to get HQ(X>2)x on episodes.

1 Like

Well, iA is a company

1 Like

well, this line confuses me as he uses both we and I

1 Like


  1. where is chickenA.tga?
  2. Why is the weapon called “crystal”?
  3. Is salmonsky a pun on a mackerel sky?

I’m not sure how it works anywhere else, but where I live the formal articles, like something for publishing or just a university task, has to avoid using “I” and use “we” instead as often as possible.


Random forum users: Creating 5 topics within a day.

OG forum users: That’s very illegal.

IA: Creating 5 topics within a day.

OG forum users: Understandable, have a good day.


Wow this was changed.

1 Like

if the topic is interesting enough then it is legal (and also it’s the interaction dev, he always posts interesting stuff, so he gets a free pass)

1 Like

Perhaps, but it there was no official provision for it until CIU.

For this series, I’m using “we” to refer to both myself (as the narrator) as well as you (the readers). It’s as if we’re doing it together, step by step.

Most likely it was an early iteration which got replaced at some point during development, but the filename stuck.

Because the 3D model looks like one.

Clupea Harengus sky :wink: