Repository navigation
CoD2 Silicon 0.2.0
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 andcod2x://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_maxfpsdefaults 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 misreadfx_freezeon 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
--playwith 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 anInfo_SetValueForKeyoverflow
reachable throughgetinfo.
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.