Skip to content

CoD2 Silicon 0.2.0

Choose a tag to compare

@STiXzoOR STiXzoOR released this 05 Oct 15:20
· 237 commits to main since this release

Apple silicon, macOS 13 or later. Ad-hoc signed and not notarized: see the README for game data and first-launch (Gatekeeper) instructions.

Highlights: a native launcher with server browser, a Mac-hosted dedicated server, and a large round of 64-bit gameplay fixes. Start New Server no longer crashes, and grenades, smoke, effects, mounted turrets and the Controls menu all work.

Added

  • Native SwiftUI launcher with Liquid Glass styling on macOS 26+ (material
    fallback on macOS 13–25): server browser, library, settings, first-run
    setup and cod2x:// links. The game helper gets keyboard and mouse focus
    on launch.
  • Layered Icon Composer app icon with light, dark, clear and tinted variants.
  • Native arm64 dedicated server (cod2_macos_ded) for hosting on Mac
    hardware, with a launchd service, example config and operator guide in
    docs/server.md.

Changed

  • Fullscreen now defaults to desktop (borderless) fullscreen at the chosen
    render resolution. Exclusive fullscreen remains selectable.
  • com_maxfps defaults to 250 and accepts 0 (no cap) through 1000.

Fixed

  • Opening Start New Server crashed the game. The UI read the game-type,
    map, mod and movie lists through 32-bit offsets on the 64-bit build.

  • Smoke, explosions, muzzle flashes and other effects never advanced: the
    effects clock misread fx_freeze on the 64-bit build.

  • Join Server: localized placeholders such as "Source: &&1Internet", the
    empty Game Type, the empty server list and the cyan column tint.

  • Menu items flickered on hover; the pulse now follows the original timing.

  • Portal visibility overran its pool and clipped projections incorrectly,
    a likely cause of the world briefly disappearing while looking around
    (that symptom has not been reproduced in automated sweeps).

  • Black screens after Cmd-Tab, Mission Control or a hot corner: desktop
    fullscreen avoids display mode switches, and exclusive fullscreen now
    steps aside while the game is hidden. Exclusive fullscreen can still fail
    to restore after display sleep.

  • A second (system) cursor in fullscreen menus.

  • Players could not use stock mounted turrets. The use check read the
    wrong field, and the server marked every living player active each frame,
    which skipped the turret query.

  • Temporary collision models dropped their content mask and broadphase
    links used the wrong entity numbering, so they were unlinked from the
    world.

  • Thrown grenades fell through the world: movement checked the wrong
    bounce flag, so frags exploded far below the map and smoke never formed
    a cloud.

  • Effect colour curves and scales were not parsed, so smoke and explosion
    particles drew tiny and black.

  • The world turned black for several seconds after a nearby explosion: the
    OpenGL backbuffer copy behind the screen-feedback effect never copied.

  • Ordinary projectile impacts were skipped, and splash damage swapped its
    inner damage with its radius.

  • The Controls pages showed no key names next to their actions.

  • After a game started from a server link or --play with engine options,
    the launcher came back without a window.

  • A source-wide audit fixed more fields that the 64-bit build read at
    their 32-bit positions:

    • key binding records (the Controls menu);
    • 13 sound-setting reads (enable, pause and volume);
    • swapped network-channel sequence and dropped-packet fields;
    • player, corpse, obituary, scoreboard, pickup-sound and turret-event
      records;
    • renderer world, sun, sky and occluder objects;
    • collision-map allocation sizes.

    A gate now rejects new raw offsets, and a test opens every menu and runs
    every safe menu script.

  • Five network-parser memory-safety bugs found by fuzzing, including an
    out-of-bounds decompression read and an Info_SetValueForKey overflow
    reachable through getinfo.

Known limitations

  • OpenGL remains the renderer. The native Metal renderer is in progress for
    0.3, and so is presentation through Metal for smoother frame pacing.
  • Exclusive fullscreen can fail to restore after the display sleeps. The
    default desktop fullscreen is not affected.
  • The byte-for-byte comparison of the original 32-bit Linux build needs an
    x86_64 Linux host and runs in CI only.