Skip to content

Releases: xndbogdan/OpenInfestation

v0.8.0

Choose a tag to compare

@xndbogdan xndbogdan released this 04 Nov 12:32

Full Changelog: v0.7.2...v0.8.0

v0.7.2

Choose a tag to compare

@xndbogdan xndbogdan released this 04 Nov 11:08

The skimmer's jet stops flickering, for real this time

The round jet at the back of the skimmer holds its shape in Vulkan with Ray Tracing. v0.7.1 fixed one cause, but the jet kept flickering while you flew. Ray Tracing rounds the jet's five-sided rim into a circle, and it placed the circle's centre from the craft's position rounded to whole units, while the jet itself was drawn at its exact position. The two sat up to half a unit apart, a little differently each frame, so the rim's outer edge kept switching between rounded and straight. The circle now uses the exact position too. Replaying a recorded skimmer flight, the jet's shape no longer changes from frame to frame.

The same fix steadies the other round parts: the VTOL's jet, the wheels and the power generator.

OpenGL and the software renderer are unchanged.

v0.7.1

Choose a tag to compare

@xndbogdan xndbogdan released this 04 Nov 07:26

Two fixes: a network game freeze and the skimmer's flickering jet

Your vehicle no longer stops answering in a network game. In Capture the Banner, a few seconds after you started firing, your vehicle could stop responding to the controls while the game kept running. Working out a weapon's damage briefly makes a throwaway particle, and online every particle is announced to the other players. That announcement wasn't handled on this path, and it stopped the vehicle. It is now sent as everywhere else.

The skimmer's jet stops flickering in Vulkan with Ray Tracing. The round jet at the back of the skimmer was rebuilt with more or fewer pieces depending on how big it looked on screen. While you flew, the camera's distance drifted, and the jet flipped between two shapes from frame to frame. Round parts now keep one shape. The blue glow in the jet's mouth still pulses, as it does in OpenGL and the original game.

OpenGL and the software renderer are unchanged apart from the network fix.

v0.7.0

Choose a tag to compare

@xndbogdan xndbogdan released this 04 Nov 05:43

Network play now starts and plays like the original

v0.7.0 is a round of multiplayer fixes, each checked against the original game running the same modes. Everything below is about network games. Single player is unchanged.

Starting a game. In the team arenas (Powerball, Buggyball and the banner and team arenas) the team menu now opens as soon as you arrive, and in the arenas with a vehicle choice the vehicle menu opens over it, as in the original. T and Y still reopen them. The host's F10 starts or restarts the game whichever order you do things in.

Powerball and Buggyball.

  • Powerball's players drive hovercraft again and Buggyball's drive buggies. Before, every arena vehicle turned back into a buggy, so a truck or hovercraft picked in Capture the Banner didn't stay one either.
  • Z kicks the ball you hold, tapping X flicks it back over your head, and holding X charges a throw.
  • Space gives the Powerball hovercraft its boost: two seconds, fading back to normal speed.
  • The host's L still turns everyone into the brain monster.

Dying works. Your first death no longer stops the game from hurting you. Drowning in deep water used to freeze your vehicle so it never respawned, and a crash death meant whatever you hit could never damage you again. Deaths now show their line ("Water Hazard", "Died stupidly") and you respawn.

Messages. Messages at the top left (deaths, your vehicle choice) show online; picking a vehicle used to leave its menu stuck open. As in the original, they have no dark panel behind them and sit below the scoreboard. A player who joins gets the right tag ("2up", not "0up").

The Escape menu online doesn't pause the game, as in the original, and now holding an arrow key moves through its rows again.

Network play is still new: these fixes were tested with two copies on one PC, not yet between two PCs over a network.

v0.6.0

Choose a tag to compare

@xndbogdan xndbogdan released this 03 Nov 22:23

Briefing camera fixes for path tracing

v0.6.0 fixes two things you could see in Vulkan with Ray Tracing on.

The briefing's live camera shows its fog again. On Level 1 the camera view in the briefing's lower right showed the far hills and water sharp, with no haze. Level 1's remastered fog is a sky blue, and in that camera it disappeared into the water and sky. The camera now fades the distance into its own fog colour, as the original game and OpenGL do. Other worlds' briefings were already right and look the same.

No more white flash when the briefing camera opens, or when you arrive in a world. The briefing camera opens and closes with a zoom that starts and ends at zero, where it shows nothing. The path tracer still drew those frames, and they left the mist holding bright values that took 2 to 3 seconds to fade. You saw a white camera view that slowly cleared. After Start Mission, the same thing could make the world arrive over-bright. Those frames are no longer traced, and the next view's mist starts fresh.

OpenGL, the software renderer and Vulkan with Ray Tracing off are unchanged.

v0.5.0

Choose a tag to compare

@xndbogdan xndbogdan released this 01 Nov 17:38

About twice as fast

v0.5.0 is a performance release: roughly double the frame rate. At retail's 4:3 view, replays match v0.4.0 exactly. In widescreen the game now runs from the view on screen, which fixes enemies frozen at the edges (below).

Released Windows builds on an RTX 5080 desktop, 3840x2160 widescreen, frames per second (median of three runs):

Scene OpenGL v0.4.0 OpenGL v0.5.0 Vulkan v0.4.0 Vulkan v0.5.0
Terra Nova 116 282 127 248
Pelagia, dry 98 228 107 207
Stendahl Alpha 135 312 138 292
Altair Prime 125 299 141 279

Vulkan here is the raster (Ray Tracing off). Path tracing is limited by the graphics card, so it runs about as before.

What changed

One world draw in widescreen. In Infestation, drawing the world also runs part of the game: whether an enemy is in view, its fade, footprints. To stay exact, widescreen used to draw the world twice: once at retail's 4:3 view for the game, and once for the wide picture. Now the world is drawn once, from the view on screen. This also fixes enemies standing frozen at the wide edges of the screen. Network games are unaffected, since each object is synced by the player who owns it.

Less CPU work per frame.

  • Clipped polygons are no longer zero-filled before use.
  • The draw memory record is written once instead of twice.
  • The draw queue sorts by node order.
  • Each corner of a fan is converted once.
  • Vulkan keeps the last texture it bound.
  • Texture and pipeline lookups use faster hash maps.
  • The terrain's blend table is built once, and each tile's texture is looked up once per draw.

Better-optimised builds.

  • Builds target x86-64-v2.
  • Link-time optimisation is on.
  • Both builds are now profile-guided: the compiler learns from a training run of the game which code is hot. On Linux this was measured at 5–8% faster on a 2015 MacBook Pro with Intel graphics.
  • The Windows build now links the C runtime in, so no Visual C++ redistributable is needed.

Vulkan sends its GPU work from its own thread. The main thread records each frame's draw calls, and a second thread sends them to the graphics card while the game moves on to the next frame. The picture shows at most one frame later than before.

Requirements

The game now needs an x86-64-v2 processor, meaning one with SSE4.2: Intel since 2008 (Nehalem) or AMD since 2011 (Bulldozer). Any PC from the last 15 years has one.

Measurements and method: docs/PERFORMANCE.md.

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@xndbogdan xndbogdan released this 31 Oct 21:19

Full Changelog: v0.3.1...v0.4.0

v0.3.1

Choose a tag to compare

@xndbogdan xndbogdan released this 31 Oct 18:08

Full Changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@xndbogdan xndbogdan released this 31 Oct 14:40

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@xndbogdan xndbogdan released this 31 Oct 08:13

Full Changelog: v0.1.1...v0.2.0