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.