Fallout 2 Dedicated Server (co-op) v0.2
Second release. v0.1 got co-op working; v0.2 is about making every player a real
character rather than a camera pointed at the host's. A lot of what the simulation
computed still quietly keyed on player one — your XP, your traits, your poison, your
armor. That is what this release fixes, plus the car, plus a pile of things that only
the host could previously do.
Every player is their own character
- Character sheets update live for the player they belong to. XP and levels are
credited and shown to whoever earned them, skill gains from books and quests
arrive, perks arrive, and drug stat modifiers are finally visible. Previously all of
this was host-only on the client. - Combat and character math use the actor who is actually acting. Critical-effect
tables, off-hand criticals, enhanced knockout, critical-failure grace, the darkness
penalty, Living Anatomy, Pyromaniac, Stonewall knockback — plus traits (Kamikaze AC,
Small Frame carry weight, Fast Metabolism radiation/poison resistance), the Healer
perk's First Aid/Doctor bonus, and Heave-Ho throwing range. You fight with your own
sheet now. - Poison and radiation affect everyone. Both were gated to the host, so every other
player was literally immune. Resting also heals every player at their own healing
rate, instead of skipping non-host players entirely. - Jinxed is a group effect. If any player is Jinxed, the fumble aura applies to the
whole fight — co-op players are treated as a single party, the way Fallout 2 treats
party members. - Script-equipped armor actually protects you. A script putting armor on a non-host
player left them visibly armored with zero protection until they re-equipped it by
hand. - SPECIAL and perk bonuses now apply to other players outside their own turn.
Companions work now
In v0.1 you could not recruit a companion at all — trying to crashed the server. A party
member joining or leaving during a conversation made the dedicated server try to lay out
the dialogue window's party-status panel, which is client-only code, and it aborted. Sulik
took the server down with him.
In v0.2 the whole companion loop works: recruit them, they follow you, dismiss them —
or sell them to the slavers for caps. That last one is the base game's own content; it
simply became reachable once conversations and party membership both worked on a dedicated
server.
Companions are now full members of the shared world rather than something only the host
knows about:
- They are assigned network identities and their health, state and inventory changes
stream to every player like any other object. - They survive a reconnect. Previously a companion vanished from everyone's screen on
any reconnect or save-restore — he was alive and well on the server, and a map change and
back would bring him back, which is what gave the bug away. - They ride the save and the join handshake, so a player joining a game in progress sees
the companions who are already with the group. - The party is shared: a companion joins the group, not one particular player.
New in this release
- Highlight lootables — press Left Alt. Colour-coded outlines over everything worth
touching on your current floor: loose ground items, corpses, containers (including
scenery lockers, safes, desks and bookshelves), and ways out — doors, stairs, ladders,
elevators. Decorative clutter and living critters stay dark. Purely visual, never
written into a save. - Random encounters are yours to accept or decline. The server used to hardcode
"enter", so you got neither the description nor a choice — it walked you into every
encounter. Now the prompt is streamed to all players and the first answer wins. - Reload and unload work at all for connected players. There was no way to reach the
server, and cycling a weapon to RELOAD then clicking entered combat instead of
reloading. Now: reloading is free out of combat, correctly priced in combat (your turn,
action points charged), unloading works, "Out of ammo." reaches you, and a reload makes
the weapon-ready click plus a visible gesture so your squad can see you do it. - Drop part of a stack. Dropping — from the context menu or by dragging out of the
inventory window — asks how many instead of dumping the entire stack. - Swap weapon hands with
B, with the proper put-away/take-out animation. Comes with
per-player action pacing that reproduces the base game's animation-blocked feel without
ever stalling the server or the other players. - Autosave on every map entry, not just persistent town maps.
- You can heal a teammate. Arming an item on another player was being cancelled by a
stray examine before you arrived. - Non-host players are no longer second-class: anyone can take a map-edge transition,
anyone can use the worldmap and travel, and dialogue is driven by whoever started the
conversation.
The car
The Highwayman is drivable in co-op, and getting there turned up two bugs that are in
the original game and are still unfixed upstream:
- The engine parked your car in Arroyo. After any random encounter while driving, an
area lookup that fails leaves a zero behind — and every caller wrote that zero straight
into "which town is the car in", i.e. Arroyo. After that no town places the car or its
trunk, so the car is simply gone everywhere you go, permanently. Worse: the trunk is a
party member, so the next save-and-load deleted it along with everything inside it. Now
a failed lookup leaves the car where it was, and the server warns loudly at save time —
while it is still recoverable — if a party member is stranded off-map. - The placement scripts then refused to place it. Ported from sfall as
CarPlacedTileFix: a stale "tile I last placed the car on" global makes the scripts
skip the next map. This is sfall's "car is lost when entering a location via the
Town/World button and then leaving on foot".
Also on the worldmap: connected players now see the car sprite and their true position
before the screen opens (a player who opened it believing they were on foot had no car
at all for the whole trip), the in-game clock advances while you travel instead of
freezing, and encounter prompts stopped instantly cancelling themselves — which by car
was nearly every time, since driving covers several tiles per tick.
Things the world now tells you about
- Scripted art changes appear immediately — a dug grave, an opened door or container,
a thrown lever. These previously only corrected themselves when the map reloaded. - Lights are live — scripted lamps and glow, and global map darkness or brightness.
Also reload-only before. - Remote attacks show the real weapon instead of everyone punching, and phantom
wielded items in the loot, use and barter panes are gone. - Dropped items are visible to everyone, including items a player had no reason to
know about yet.
Stability
Three crashes hit in live play are fixed: a use-after-free on the worldmap, the
party-join abort described under Companions above, and a server-side abort on encounter
accept/decline. Also a bomb-timer undefined-behaviour fix and a hardened area-of-effect
kill narration path.
Known issues
- A full party wipe soft-locks. Reviving requires a living player to use a healing
item on a downed one, so if everyone is down there is no in-game way back. Load a save. - Leaving the worldmap with ESC leaves the map you are standing on without running
scripts until you change maps. - An occasional crash right after a map transition (roughly one in ten).
- Stealing and sneaking in co-op are not solved yet.
- The car and worldmap fixes above are fresh and have had limited field testing — reports
welcome.
Upgrading
Save files from v0.1 load. As always, keep a backup before switching versions.