Repository navigation
Releases: WoodyWizard/SporeCoop
Release list
SporeCoop 0.7.3.6
Fixed
- Civ and Space: a partner's vehicle, building or ship whose model uses parts or paints from a pack, a
mod or another profile's Sporepedia no longer crashes the game that does not have them. Such a model
is shown with similar base game parts, a vehicle falls back to one of the game's own designs, and a
building whose design cannot be shown is left out (the log names each unknown part once) (BUG-0469).
SporeCoop 0.7.3.5
Fixed
- Creature: a guest whose game lacks a parts pack (for example the Bot Parts pack) no longer crashes
when it loads a host world whose creature uses a part of that pack: the part is shown as a similar
base game part (the Creepy & Cute parts first), an unknown paint as a base game paint, and an id that
cannot be replaced makes the game use its own fallback instead of baking the model. Each unknown id is
written to the log (BUG-0452).
SporeCoop 0.7.3.4
Added
- Problem reports: when a player marks a problem (
/bug <text>in the co-op chat,coop.bug, or F9
"Report a problem"), the game keeps a screenshot of what that player saw, overlay included (JPEG, at
most 1280 px wide, a few hundred KB; the newest 5). The report file includes them undershots/
and lists each next to its mark; every player of the session keeps its own screenshot of a mark.
Crash and hang reports take none of their own moment (not safe there).[report] screenshot=0in
mods\coop.initurns them off and removes the kept ones (BUG-0442). Needs SporeKit 0.3.6. - Creature and Cell: DNA (and the cell's food) that a partner or the pack earned now says where it came
from in a short notice: "+9 DNA from Bob's hunt", "+7 DNA shared by Alice's pack", "+10 food (DNA)
from Bob's meals"; the game logs write each change with its cause (BUG-0389). - Logs: in the Tribe and Civilization stages the 10 s
trace:line now says how long the player's own
pointer has stood still (ptr_still=), so a report shows whether the partner's copy of it could have
caught up yet (BUG-0416).
Fixed
-
Tribe: the game could fault in its physics update in every frame (seen once on a guest, GOG 2024) when
a physics body had lost its owner, skipping the rest of the physics each frame. Such a body is now left
out of the update (BUG-0449). -
Tribe: a guest's own tribe members (and the host's) could walk 3-9 m inside the ground, or float over it, on
the guest's screen when the host walked them up or down a slope in the first half minute after the guest
joined (the guest's game is still paused then) or while the guest's game was paused; they stay on the
ground now, and new members appear on it (BUG-0444). -
Creature: after Cell -> Creature the shared creature parts were counted differently in the host's game
and the guests': the parts a cell brings into the Creature stage (the creature versions of its Cell
parts) counted only for the host, although every guest's editor offered them too. Every game now counts
the parts its editor offers, so the party's set agrees after the evolution, a load, a join and a rejoin
(BUG-0441). -
A game told to host before it reached its main menu (a console line during the start) crashed in the
host's first time-of-day message: the time of day is now read only once the game has its space player
data. Players hosting from the co-op window were not affected: the window first shows in the galaxy
menu (BUG-0433). -
Creature: eggs at the nests of other species could hang in the air on the host: the game lays them
where the layer stands and an egg that is not touched has no gravity. The host now puts an egg that
hangs over the ground onto it (BUG-0443). -
Tests: since the busy gate (BUG-0404) an action vote's result and the world share after an evolution can
wait for a pause or a cinematic on the host.vote_net_4pandpartyread the action's result the instant
the vote ended (it ran 0.9-1.8 s later),voteread the guest's body at a fixed time after the evolution
(its reload came later). The tests wait for them now; the votes and their results were right (BUG-0447). -
Tests: the lab's hitch gate failed a test on the frame that opens an editor (logged just before the
stage change); that frame now counts as the switch, not as a stall in play (BUG-0448). -
Tests:
editor_desyncfailed about every second run in the Cell part after the host's evolution:
the guest's mating call was pressed while the guest was still reloading the host's world or its
cell was hatching (the game takes no click then). The test now waits like a player; not a bug of
the mod (BUG-0411). -
Tests:
puppet_fightcounted steps of the other player's creature that the observer could not see: out of
the view the game puts a creature on the plain terrain instead of on a nest mound, 1 m lower. Only steps on
the observer's screen count now; it was not an ability (BUG-0414). -
Creature: an evolution vote that ended while the host's game played a cinematic (the evolution's own
fade-in right after the last editor, a caption) left the host in an editor without its buttons. The
vote's editor now waits until the cinematic is over and the game is not paused (the pause menu, the
Sporepedia, My Collections); a guest's own editor after a vote waits through a pause instead of being
dropped, and an action vote's result waits the same way (BUG-0404). -
SporeKit: a hook made while the game runs could let a game thread call address 0 (a handled
fault, once followed by a frozen game): the hook's original function is now set before the hook is
switched on. Seen in test games when the first simulated input was sent (BUG-0398). -
Creature: the creature parts a player finds (in a skeleton, from a creature, as a reward) are now the
whole party's, like DNA: a part the host finds is in every guest's editor too, a part a guest finds
is unlocked for the host and the others ("Bob found a new creature part"), and a guest keeps them
after a rejoin. Before, each player's game kept its own, and a guest lost its finds at the next
world load (BUG-0401). Both players need this version. -
Tests: the
teamtest could leave the guest's creature 0.94 m under the ground (its move next to
the host cut through the planet's curve); the test command now puts it onto the ground (BUG-0400). -
Tribe: right after joining, some of the host's animals could stand up to 1.7 m inside the ground on the
other players' screens for up to half a minute; they are always shown on the ground now (BUG-0399). -
Creature: the host's animals walking downhill no longer keep hopping on the other players' screens
(a short fall every few seconds) (BUG-0406). -
Creature and Tribe: animals of the host now walk and run on the other players' screens with their
walk animation, on the host's path: in the Creature stage a moving animal slid over the ground in
its standing pose, in the Tribe stage animals moved in small steps and jumps (BUG-0361). -
Creature: the other player's creature and the host's animals no longer stand still and then jump
ahead when they move without walking themselves (carried by an animation): they move along with
them (BUG-0394). -
Creature: the eggs at other species' nests are the same on every game: a guest now sees the eggs the
host's nests lay (where the host has them, on the ground), and an egg eaten by either player is gone
for both. Before, a guest saw none of them (BUG-0384). -
Tribe: the NPC tribes that form during play (the "a new tribe has appeared" event) were there only for
the host: guests never saw them or their members. A guest now gets each of them where the host has it,
of the same species, with its members (BUG-0381). -
Tests: the
creaturetest's guest hit could land on a member of the host's family or pack, a hit the
host drops on purpose since BUG-0374 ("hits applied 0 -> 0"); it now hits an NPC outside both (BUG-0390). -
Tests: play_tribe compared the chiefs' line of both games with the host's own counters in it (BUG-0397 still open: other play_tribe checks).
-
Creature: a creature of a partner's earlier creature (before its editor) could be missing on the
guest until the next world share: the host could not send its species any more (BUG-0370). -
Tests: npc_far / npc_pooled walked the host into the sea, where the game's deep water cinematic held
it in the air (sync-check "p0 10.7" in every run); they now walk on land and check where the guest
draws the host (BUG-0377). -
Setup: a Spore folder without Galactic Adventures (Steam's base game:
SporeBin, no
SporebinEP1) now says "Galactic Adventures is not installed" with what to install, instead of
"choose the SPORE folder"; choosingSporeBinorSporebinEP1takes the folder above it, and the
setup also looks in Steam's other library folders (BUG-0391). -
Setup: on Steam, Galactic Adventures (app 24720) has its own folder
steamapps\common\Spore 24720
next to base Spore'ssteamapps\common\Spore; the setup now finds it first, and when base Spore
(or itsSporeBin) is chosen it says "Galactic Adventures is installed in ...\Spore 24720: using
that folder" and installs there, instead of saying Galactic Adventures is not installed (BUG-0391). -
Setup and in-game update: when GitHub's API refuses (403 / 429: its hourly limit per IP address,
hit on VPNs and shared networks) the newest release now comes from the release page, checked
againstSHA256SUMS.txtas before; the setup could not install at all. If GitHub does not answer,
the setup says how to install with the release zip andinstall.bat(BUG-0392). -
Space: in the galactic core's system each player saw the partner's ship 20-30 m above where it
really was; partners' ships and the host's ships seen on a guest are now drawn exactly where the
mod puts them (BUG-0378; BUG-0190 still open: NPC ships in the core not measured yet). -
Support sync-check: it no longer reports a difference for a fast Space ship that is only a moment
behind (the allowed distance grows with the ship's speed), nor for players in the galaxy view,
where nobody's ship is shown (BUG-0378). -
Civilization: a guest that missed several new cities of other nations (joining, or cities founded
at once) now gets all of them and their vehicles within seconds; it used to get one city per
15 s, and those nations' vehicles were missing meanwhile (BUG-0380). -
Civilization: the support sync-check no longer reports a partner's moving pointer as a desync
(BUG-0380). -
Space: when the host's world cannot go out yet because its ship is on a planet (the Space stage
saves only off a planet, as right after Civilization), every player is now told that the world
follows when the host's ship leaves the planet (BUG-0382). -
Cell: a knocked-out cell no longer eats the food that floats into it, so it no longer comes back
from its respawn bigge...
SporeCoop 0.7.3.3
Fixed
- Creature: the partner's creature no longer moves in steps and teleports while the partner walks:
it walks with its walk animation exactly on the partner's path (before it stood or crept between
restarted walk orders, fell up to 3.5 m behind and was put in place again; BUG-0360).
SporeCoop 0.7.3.2
Fixed
- Creature: a guest whose own creature has fewer abilities than the world's creature got an error
(caught by the game) at every key press, and its ability keys could use the world creature's
slots: the ability bar was not built again after the guest's avatar took its own creature
(BUG-0358). - Space: a player who joined (or rejoined) while the host's ship was landing on a planet could get a
world saved on that planet: their game then logged errors at every frame and stalled for seconds
at a time. Such a save is now made again once the host's ship is off the planet (BUG-0357). - Cell: with four players a guest's game could drop to 3 frames per second at the end of the Cell
stage and never get into the Creature stage: a crowd of over 256 cells on its screen made the game
lose soft-body particles every frame until its particle pool was full, and the cells that shared
the last one were thrown around (BUG-0355). - Cell: a guest playing its own cell is no longer a "ghost" after joining or a reload (it swam
through everything and could not eat, bite or be hit): the mod took the rebuilt cell for the
partner's old puppet (BUG-0342). - Creature: a player whose game does not have the Creepy & Cute parts pack can now join a host whose
creatures use its parts: on that player's screen those parts are shown as similar parts of the base
game (eye for eye, mouth for mouth, the nearest abilities), with a notice; nothing of the pack is
shared (BUG-0354, BUG-0341). - Cell: a crowd of hundreds of cells next to a player no longer makes that game fault every frame or
throw a cell thousands of metres away (the game's pool of cell particles ran full) (BUG-0338). - Cell: a player who stays in the pause menu while the other players play no longer corrupts the
game's memory (a broken collision state, then a crash or freeze when Cell ends; seen on the way
to Creature with four players) (BUG-0348). - Creature / Cell: the host keeps its world's species; an own creature or cell chosen in an earlier
session (another world) no longer replaces the species the host just evolved (BUG-0344). - Cell: after a reload of the world a guest plays its own cell again, as the others see it (BUG-0349).
- Tools:
crash_triage.pyfinds the known ticket of a crash in a relocatedSporeApp.exe(Windows,
Steam) by its address numbered from 0x400000 (BUG-0346). - Cell: after the host's world is loaded again (an evolution, "Send my world"), a guest's cell no
longer starts alone up to 130 m from the host: it joins the host as after the first load
(BUG-0352). - Cell: a guest that bites a creature of the host now sees its health ring, as the host does
(BUG-0350). - Cell: the log names the food, the DNA spent and the editor's DNA budget at every cell editor and
stage entry, to explain reports of unexpected DNA (diagnostics, BUG-0351 still open). - Tribe: at the arrival and after a rejoin, a player's chief that stands in another one is moved to
its own spot round the village; two chiefs that end up in each other later are moved apart
(BUG-0340 still open: the chiefs can still start in each other in some runs). - Cell: a game with more than 1024 cells in one column of the cell physics (seen on a guest of a
four-player game, 0.7.3.1) no longer faults every frame with a half-second hitch each, a stopped
simulation and a frozen game after the stage change (BUG-0337). - Creature: an animal hit or killed while it runs now shows its health and its death on the other
players' screens at once (BUG-0334). - Creature: a player who leaves and joins again (or loads) within a minute of being saved by the
pack is saved again in the new session; the rescue cooldown no longer carries over (BUG-0330). - Tribe: where the village ground is higher or lower for the other players than for the host, the
tribe members and animals no longer walk in place or jump around on their screens: they stand on
their own ground where the host's stand (BUG-0329). - Civilization: a vehicle of another nation standing on a spice node no longer flickers 13 m away
on the other players' screens (their game moved it off ground it found invalid), and a fast
vehicle is no longer thrown ahead of its place when the host stutters (BUG-0186). - Civilization: a building the host's game rebuilt after a siege no longer stays a ruin for the
other players (BUG-0324). - Creature: animals running on the host are no longer shown metres behind on the other players'
screens (their copies hardly walked: each new walk order restarted the walk); a running animal's
copy now follows the host's path exactly (BUG-0281). - Creature: an editor opened right after a rejoin on a slow PC no longer stays black for good: it
opens once the player's creature is built (BUG-0318). - Space: a guest's game no longer faults when the host's NPC ships use a ship model the guest does
not have (the empires' ships come from each player's own Sporepedia cache); the guest shows such
a ship with a model of that empire it has, or not at all (BUG-0323). - Space finale: a host who waited at the galactic core and went in first is counted as entering
together (a counter the tests read; players saw nothing wrong, BUG-0320). - Co-op window: a host whose PC is on the network twice (cable and Wi-Fi) is listed once, not
once per address (both hosts need this version; BUG-0210). - Creature and Tribe: a partner's creature, an animal or a citizen that cannot keep up by walking
no longer falls further behind on a player whose game runs at a low frame rate (the pull towards
the host's position was per frame, now per second; BUG-0175). - Tribe: leaving the Tribe stage (for example for the galaxy menu before loading another save) no
longer faults when the game sends a tribe member it has already cleaned up on one more walk; that
fault could leave the next load from the menu unfinished (BUG-0310, BUG-0285). - Civilization: a vehicle the host's game moves in one step (not by driving) no longer flies past
its place on the other players' screens for a moment (BUG-0186). - Cell: a player leaving the Cell stage to load the host's world (after joining or rejoining) no
longer has the mod create or move cells while the game is tearing the stage down (a guard after one
crash seen in testing, BUG-0308 still open). - Cell: a player whose cell was moved far again and again (for example put back after an invalid
position) no longer fills its game with leftover background cells; a guest then stopped seeing
the host's cells at all. Background cells far from the player are now removed (BUG-0314). - Creature: when the host leaves to the main menu, the other players keep the animals they saw
around them (their own game runs them now); before, their planet stood empty and the nests
brought their members back one at a time (BUG-0180). - Creature: a player's game checks every second that the copies of the host's animals are still in
its world and makes a lost one again, with a log line saying what happened (diagnostics, BUG-0300
still open). - Tests: a test reusing running games no longer inherits fixes switched off by the previous test
(BUG-0312);coop_legless_guest.py --guest cancelclicks the red cross as it says (BUG-0317). - Space: a star nobody had visited could still get different planets in the two games (for
example 6 and 10), so a partner's planet did not exist on the other side. The game loads the star's
species on the way and that load drew from the same random numbers as the planets; it no longer
does (BUG-0185). Test:coop_space_seed_profile.py. - Tribe (and Creature): an animal running in a herd, for example one fleeing a hunt, no longer lags
a few metres behind on the other players' screens: a copy pushed off its path by the animal beside
it is now put back on it after half a second (BUG-0305). - Space: players joining while the host is on a planet no longer end up on that planet when the
host leaves it (their ships went back down a few seconds after loading the host's world while the
host stayed in the solar system): the world is now saved 2 s after the host is in the system, also
when the save would have gone out in the very frame the ship left the planet (BUG-0301, BUG-0287). - Tests: a host that fails to start hosting is logged and retried at the start of a test (BUG-0302).
- Cell with three or four players: the games no longer fault and crash when the players spread
out (the game's own collision step holds about 2000 cells; the host kept the area around every
player alive and the pools grew past it). The host now fills the other players' areas only while
it holds under 1100 cells (1300 for what that player sees), each player gets at most its 900 nearest cells, and the self-check no
longer reports the cells around other players as missing (BUG-0295, BUG-0296, BUG-0297,
BUG-0298). Test:coop_cell_4p.py. - Cell: a player whose own cell ends up at an invalid position is put back where it was, and its
game no longer fills the world from that position (a crash at the next level-up, BUG-0299). - Cell: a player far from the host found no food and no other cells: the host's game kept only
the area around its own cell alive. Now it populates and keeps the area around every player, and
each player gets the cells around itself, so two players exploring apart can both eat (BUG-0174,
BUG-0279). - Cell: a cell whose position is invalid is no longer sent to or shown by the other players (a
guard after one crash seen in testing, BUG-0292). - All modules now use one rule for "is the host's world the one I play", and the host names its
world when a player joins, so a guest joining in the host's Civ world no longer misses the first
vehicle and city state (BUG-0231). - A world share that failed after the host's save ("cannot share the world: ...") is retried up to
3 times, 30 s apart; a guest in another world no longer stays th...
SporeCoop 0.7.3.1
Added
- Problem reports: type
/bug <what you see>in the co-op chat when something goes wrong; every
player's log gets a line with the text and the moment, and the chat says "marked for the report". - Problem reports: the games of a session share one clock, so the logs of all players line up
(tools/merge_logs.pymerges them into one timeline). The host and the guests compare the shared
world every 30 s and log what differs (sync-check:,[coop] sync_check=0turns it off). The log
also has the frame rate and hitches, the game's free memory, the network quality per player, the
saves and world transfers with their times, settings that are not the defaults, and a summary
line of each session (also at the top of the report). The report lists other mods, extra
.packagefiles and game files of an unexpected size. Paths of your PC are masked in logs and
reports (support guide). - Problem reports: the log now says what each player did and what the mod decided: a state line
every 10 s (stage, world, position, partners and their distance, why a partner is hidden, link
quality, the food on the screen in Cell, the creature's body and where it came from) and lines
for eating, bites, bodies, votes, clicks in the co-op window, knockouts, stage changes, joins and
leaves, about 0.5 MB an hour.[coop] log_detail=0|1|2in coop.ini (coop.log detail Nin the
console) sets how much. "Report a problem" reminds that the other players should send theirs too. - Every game logs the SporeCoop, SporeKit and game versions of the other players when they join
(and warns when they differ);coop.statuslists them. Older versions show as unknown.
Changed
- Logs and problem reports no longer contain other players' internet addresses: a public address
is shown as a short tag ("public #3F2A"), a home network one by its class ("192.168.x.x").
Fixed
- A load from the galaxy menu (a stage jump, a received world) could crash the game in
cStarRecord::GetPlanetRecordwhen the stage was left with a game fault that kept the old
world's player empire in the menu: the mod now clears it first (BUG-0284). - Wine: the game could crash right after leaving a session, while the co-op window looked up the
PC's network addresses (the "Friends connect to" line); Wine's network code returned garbage when
several games of one Wine prefix asked. The lookup now runs in the background and rarely, does
not use that part of Wine at all under Wine, and a fault in it no longer ends the game
(BUG-0286). - Votes: "I'm ready" in the co-op window did nothing while a caption of the game was on the
screen (the brain-upgrade captions at the end of the Creature stage): the vote ran out of time.
The window's buttons now work during captions and cinematics (BUG-0273). - Stage changes: after the change to Tribe the guests could load a Creature save of the host and
stay in Creature, and in Space their ships could go back down to the home planet, until they
rejoined. The host's save for them now waits until it has been 2 s in the new stage or place, a
save the game did not write is made again, and older files are no longer sent as the new save
(BUG-0276, BUG-0287). - Creature: when the host's game put away NPCs far from the host's creature, a guest standing
near them still saw them for 2 s (again with every respawn of a nest member there). The host
now removes such an NPC from the guests at once (BUG-0274). - Tests: the four-player sync check no longer calls a whole kind of objects out of sync for one
object off among a few, and allows for the guest's designed 0.15 s lag; measured per player, the
3rd and 4th player were as close to the host as the 2nd (BUG-0275). - Creature: a new guest (no creations of its own) that saved an edit in its own editor at the start
of the Creature stage could be stuck with the host's legless creature from the Cell stage, on its
own screen (and after "Replace" on the host's too), after every rejoin and restart. Only a
creature the guest really made becomes its own now, and the co-op window's arrows can go back to
the world's own creature (BUG-0278). - Cell: the host's (or a guest's) game could crash while the Cell stage ended and the Creature
planet loaded, when the co-op status or the player's position was asked for at that moment. The
mod no longer reads the cells the game has already freed, nor anything else of a stage the game
left since the last frame (BUG-0271). - Creature: a guest's game could fault a second after it started to leave the stage for a world
the host shared (all three guests of a 4-player game, right after the host's creature editor).
The mod no longer touches the player's creature while the game tears the stage down (BUG-0264). - Tribe: after the Creature stage ended the players' way, the host saw no guest in its Tribe world
(no partners, "together" never reached) until its next save. The host now stays in its planet's
world through the game's temporary save name (BUG-0258). - Tribe: after the host visited an editor, the co-op epic creature was no longer tracked: it went
into the shared save and the world of every guest, stayed after the session and a second one
came later. An editor visit no longer counts as a new world (BUG-0217). - Civilization: a single frame without the player's first city could make the host forget every
vehicle and city owner (vehicles rebuilt on the guests, captured cities and bought vehicles given
to someone else). Only a real world change does that now (BUG-0223). - Civilization: with guests in the session only a capture's caption closes itself after 8 s; other
cinematics of the host (city purchases, camera cinematics) play to the end again (BUG-0224). - Saves no longer keep the empty herds made for a partner's creature after the partner left, and
every save builds its own list of co-op objects to leave out (BUG-0255). - Windows: a received world that could not replace its old copy (another program had a file of it
open) now goes into another save slot instead of being dropped; leftovers of interrupted world
writes are tidied, an old world moved aside is put back or kept as a backup (BUG-0254). - A cancelled evolution vote no longer opens every guest's editor, and a guest who leaves (or
loses the host) right after a vote no longer gets its editor opened offline. The Give recipient
you picked is forgotten when that player leaves or the session ends (BUG-0234). Needs the new
version on the guest. - Shared money or tribe food a guest spends right when another player joins is no longer given
back (it was spent twice: the purchase was made, the money returned, the host never counted it)
(BUG-0220). - After an evolution, every waiting guest gets the world when the cinematic is over (at most
120 s): with two or three guests the waits added up (120 / 240 / 360 s), and a leftover wait
could send the world during the cinematic, so a guest got the hatchling creature again (BUG-0232). - Civilization: a guest who plays another world than the host's no longer gets the host's
vehicles and cities applied to its own planet (its own vehicles were taken over or removed and
cities founded), and in Tribe and Civ its own tribe or vehicles play on under its own orders
until it plays the host's world (BUG-0231, partly: the shared resources and DNA of such a guest are still open). Cities already founded that way stay in the
guest's save. - "Host is in an editor / loading: you play on alone" is only shown in Creature, Tribe and Civ,
where the guest really plays on alone; in Cell and Space it is gone. DNA a guest earned while the
host was away goes to the pack only when the host plays that stage again, and DNA the host owed
is no longer paid into a different world it loads later (BUG-0233). Correction to 0.7.3.0: its
BUG-0205 line says a guest plays on with its own creatures while the host edits; that
holds for Creature, but Cell is still open (BUG-0205, BUG-0151). - Mixed versions: an older SporeCoop no longer loses long chat lines or gets an emptied species
table (BUG-0219): players tell each other at the join what they support; a long chat line
reaches a 0.7.2.x or 0.7.3.0 player cut, a big species table does not reach them, and a
notification names the player with the older version. A guest with a 0.7.2 host no longer keeps
every Cell meal in memory. - A player who is loading or saving is no longer dropped when somebody with the same name joins
(BUG-0235): a rejoin after a crash is recognised by a token the game keeps until a clean leave,
not by the name; such a rejoin now also works in a full 4-player session. - Pasting the co-op window's whole "Friends connect to: ..." line into Join works (BUG-0236).
- In-game update: a failed attempt no longer keeps the downloaded files in memory (BUG-0241),
a pack with two names for one file is refused (BUG-0242), and a second start of the mod or the
game's exit no longer interrupts an update between two file moves (BUG-0243). - Settings: a coop.ini saved as UTF-16 BE is no longer destroyed, and two games on one folder no
longer lose a name written at the same time (BUG-0245). - Crash reports name the thread that crashed (BUG-0248).
- Space: a disabled ship is no longer destroyed when you come back from an editor or an
adventure: the 20 s for a repair stand still while you are out of Space, and a load or the
galaxy menu ends the disabled state without a death (BUG-0229). A disabled state that ends while
you are out of Space (the session ends) no longer leaves your ship invincible (BUG-0228). - Space: spice of the co-op gift that comes back while you are out of Space is no longer lost:
it goes back into your cargo hold once you are in Space again. A gift received in an editor or an
adventure is now sent back like one...
SporeCoop 0.7.3.0
A big bug-fix release. A review of the whole mod and the test lab found about 180 problems; 158 of
them are fixed here, nearly all with an automated test that fails without its fix: crashes and freezes,
desyncs between the players in every stage, worlds and saves that could be overwritten or mixed,
the setup and the in-game update. The network protocol did not change: 0.7.3.0 plays together with
0.7.x, but both players need 0.7.3.0 for most of the fixes. What is still open is listed in
docs/known-issues.md.
GOG 2016 build (922af7c7): fixes that need new game addresses switch themselves off on it
(see the README); use the GOG 2024 or Steam build for them (BUG-0108).
Fixed
- Joining by host name no longer freezes the game while the name is looked up (BUG-0204): the
name is resolved in the background and the join goes on when the answer comes; an unknown name
ends the join with "cannot resolve ". Numeric addresses never waited. - Setup: the newest update pack next to the setup is used, and an older version is never
installed over a newer one without asking (BUG-0094): the button says "Install older x.y.z"
and asks first; silent mode refuses unless/downgradeis given. - Setup: the window cannot be closed while it installs or removes SporeCoop (BUG-0139), which
could leave the game withoutsteam_api.dll; clicking Install before the GitHub check has
answered can no longer corrupt the setup's memory (BUG-0077). - install.bat keeps your settings on a reinstall (BUG-0080):
mods\coop.ini(name, last address,
[update] check=0) andmods\sporekit.iniare only copied when missing. - Docs: GOG 2016 players are told which fixes their build does not get: the fixes since 0.7.2.2 that need new game addresses switch themselves off on the old GOG 2016 build; the README and these notes now say so (BUG-0108).
INSTALL.mdnames the right log line to check an install (BUG-0165). - Creature: a goal card's reward a guest earns while the host is in its editor is no longer
lost; it is paid when the host's creature is back. A guest whose host stays in an editor or on a
loading screen plays on with its own creatures, as when the host is in the main menu (BUG-0205). - A damaged creations package (My Creations) can no longer crash the game while it is read:
a 64-bit index offset could wrap the bounds check (BUG-0208, found by the new decoder fuzzer). - Space: the "Jump to" button of the co-op window jumps to the partner it names (with 3 or more
players a partner in your own system made every press fail), and the notice names that partner
(BUG-0072). Flying to a partner in the galaxy view is refused while your ship is disabled
(BUG-0063). - Space: galaxy map name tags react only to clicks on the game: a click in another window over
the game no longer starts a trip, and with swapped mouse buttons the primary button works, the
secondary one (camera drags) no longer flies the ship (BUG-0090, BUG-0145). - Space: the guest no longer sees defender ships twice in the host's system, and a game ship
can no longer be taken for a partner's ship (BUG-0111). - Space: an armada contract wave goes on with its own raid when the host leaves the colony and
comes back, instead of starting a second raid whose end decided the wave (BUG-0046). A won raid
on a partner's colony is no longer taken for an aborted one (BUG-0136). - Space: unvisited stars get the same planets on both games even when another thread names
things during the generation (BUG-0123);coop.space empire contactno longer breaks the game's
float maths after 8 calls (BUG-0126). - Saves no longer keep the partners' creatures (BUG-0020): a host save made while a partner
played kept the partner's creature and the herd made for it; after a restart it came back as a
strange creature of another species (the 0xD48634 crash came from attacking it). They are now left
out of every save. Test:coop_save_hygiene.py(suitesave_hygiene). - Cell: a guest's bites follow the game's rules (BUG-0078): a guest could hurt creatures the
host's own bite cannot (species that never attack the player, a creature just bitten or
invulnerable), and such species turned on the guest. Test:coop_cell_guest_bite.py. - A downed partner no longer rescues you (BUG-0131): in the Cell stage two knocked-out cells
side by side revived each other, and in Space two disabled ships repaired each other (also a
partner whose game froze or was loading counted). A lethal hit with nobody able to help is the
normal death. Tests:coop_cell_rescue.py,coop_space_helper.py. - Cell: small display fixes (BUG-0160): a cell no longer shows squashed for a moment when its
rotation is not set yet, a dying creature no longer shows full health on the guest, and the
partner arrows never get a broken position. Test:make test. - Joining over a lossy link no longer fails when the host's first answer is lost (BUG-0030):
the lost welcome counted as delivered and the join ended with "no answer from host (timeout)"
after 10 s (about one join in ten at 10 % loss). Test:make test. - Co-op window: the address field and the status line (BUG-0138, BUG-0104): an address pasted
with spaces around it (or the whole "Friends connect to" line) joins the first address; a port
that is not a number from 1 to 65535 is refused at once instead of a 10 s timeout. The status
no longer says "Connecting to ..." for the whole session: it clears when you are in, shows why
a session ended, and button messages go away after a few seconds, so the update line shows
again. Test:coop_ui_status.py(suiteui_status). - Co-op window: more than three games on the network (BUG-0183): "More >" pages through all
of them; the list forgets hosts that stopped answering and holds at most 32 (BUG-0039). - No "player0 (host) is back: your N DNA go to the pack" after a disconnect while the host was
in the main menu (BUG-0085). - A partner no longer freezes when the other PC has been up for 49.7 days (its millisecond
clock wraps, BUG-0053). Test:make test. - Creature: a guest that gets the world right after the host evolved no longer stays a
hatchling (BUG-0019): the world went out while the host's evolution cinematic waited for OK,
and the guest's creature never grew up nor migrated with the species. The host now sends it once
the cinematic is over. Test:coop_evolve_world.py(suiteevolve_world). - Creature: after a reload the guest plays its own creature again (BUG-0119): the mod told the
worlds apart by the avatar's memory address, which the game can reuse; the guest could keep the
host's species, or get its creature applied while the world was still loading. Test:
coop_world_reload.py(suiteworld_reload). - Creature: a guest that rejoins while the host is paused sees the animals around it
(BUG-0125) instead of an empty area until they walked away and back. Test:
coop_npc_rejoin_paused.py(suitenpc_rejoin_paused). - Creature: an animal that pushes against a rock on the host no longer stays a few metres off on
every guest (BUG-0169): its copy is put in place after 3 s. Unit test inmake test. - A fault inside the game during a co-op adjustment no longer leaves the game in the adjusted
state (BUG-0110): the cell stage's player index, a selection flag, a creature's tuning and the
Civilization capture attribution are put back on the next frame. Unit test inmake test. - Creature: social ability keys are ignored while the cheat console is open, and a digit typed
in another window no longer plays one when the game comes back to the front (BUG-0149, not yet
verified in a game test). - Crash reports in hard cases: a stack overflow now writes a crash report (before, the game
vanished without one), and a crash in a game that ran out of memory still writes the minidump and
tells you at the next start where the report is (BUG-0056, BUG-0127). Test:kit_crash.py. - Old crash reports are removed:
mods\logskeeps the newest 5 crash reports with their
dumps, 5 other reports and 3 report archives instead of collecting them for ever (BUG-0137). - Player names in any language: a Cyrillic or Chinese name survives a restart (it was saved as
"????"), and a name typed intocoop.iniwith a normal editor (UTF-8) is read correctly
(BUG-0142); names set in the console are capped at 24 characters and cannot change during a
session, long texts are never cut inside a character, the creations path in the log keeps its
non-Latin letters (BUG-0164). Tests:win_unit.py,make test. - Chat and notifications: a Russian or Chinese chat message gets the same room as an English
one in the notification panel and never ends in a broken character; chat always looks like chat
(a message with "lost" in it is no longer a red alert, a player named "Lost" joining neither),
and the co-op window's chat wraps long lines and scrolls back through the last 50 lines with the
arrows on its right (BUG-0129). - Name tags and banners with non-Latin text are centred (Cyrillic names, the arrows of off-screen
partners, the Russian contract banner) (BUG-0159). - The co-op window after a resolution change opens centred on the new screen instead of partly
off it, and the overlay's co-op status text is no longer drawn over the co-op window or the
notification panels at 1280x720 / 1366x768 (BUG-0113, BUG-0155). Test:coop_window_layout.py. - Hot reload of the mod no longer risks crashing a game thread that was running a re-hooked
function at that moment (BUG-0202). Test:kit_freeze.py(hookrace). - Host in the main menu (Tribe, Civilization): guests now really play on alone: their tribe
members and vehicles move and follow their order...
SporeCoop 0.7.2.4
More fixes from players' reports (Creature stage, Alt+Shift+Enter). 0.7.2.4 plays together with
0.7.x (the network protocol did not change); both players need 0.7.2.4 for the fixes on the guest's
side (the guest's respawn, deaths it sees, the host's species at the nests).
Fixed
- No more crash on Alt+Shift+Enter (player crash report, 0x7777BE). It is Spore's own "next
display adapter" key: on a PC with two or more display adapters (two monitors, or an integrated
and a dedicated GPU) the game rebuilt its graphics device on the other one and crashed, also
without SporeCoop loaded (a bug of the game). The key now toggles fullscreen like Alt+Enter
(players hit it with Shift still held). Test:coop_alt_enter.py(suitealt_enter). - Creature: a guest grows up again after a death (player report: "after my death I'm in
constant state of growing up from egg ... can't move at all"). A respawn puts the creature back
into the nest as a hatchling, and the game waits for a family member of the nest to greet it and
make it grow up. A guest has no family of its own (its own NPCs are removed, the host's ones it
shows run no AI), so the guest stayed a hatchling for good: half the health, the egg shell on its
head on both screens, no control. The guest's hatchling now grows up a few seconds after the
respawn (the host's only when its family has not come for 40 s). Test:coop_creature_respawn.py
(suitecreature_respawn). - Creature: a creature killed by anybody now dies on the guest's screen too (player report:
"enemies still seen as alive even when dead for quest"). The guest's copy of a host creature had
no AI of its own, and in Spore the death itself (falling over, becoming a carcass) is done by the
creature's AI: a killed creature stood on with an empty health bar, alive for the guest's game.
Test:coop_creature_kills.py(suitecreature_kills). - Creature: creatures notice the partner like the host's own creature (player report:
"aggressive enemies didn't target my friend"). The game's creature AI only ever looks at the
player's creature; on the host a creature nearer to a partner now treats that partner as the
player (notices, chases, attacks; its hits go to the partner). Host option
npcs_target_partners(on by default). - Creature: the guest sees the host's species at the host's nests (player report: at the same
nest the host saw its "Woopsies", the guest other creatures and "The Datzu are your allies!").
Spore populates a planet with the player's own creations, and creations are numbered per player:
a guest who made creatures has other ones under the same numbers, and its game showed those (and
their names and standing) instead of the host's. The host now sends its own creations that its
world uses, and the guest shows the host's creatures with them, under numbers of their own, with
the host's standings. Both players need this version. Test:coop_nest_species.py(suite
nest_species). - Creature: the guest no longer crashes when it reaches the new nest after a migration (player
report: "My friend crashed after I completed migration to a new nest", guest crash at 0xC6AE60).
The guest's own game claims the new nest too and plays its cinematic with the creatures of that
nest; the mod was removing those creatures (on a guest the host owns the creatures) while the
cinematic still placed them. Creatures the mod removes during a cinematic now go when it is over.
Test:coop_migration.py(suitemigration).
SporeCoop 0.7.2.3
Fixes from players' crash reports and screenshots (Cell and Creature stage). 0.7.2.3 plays
together with 0.7.x (the network protocol did not change); both players need 0.7.2.3 for the
species transfer (creatures of species only the host has).
Fixed
- Cell -> Creature: the guest's game no longer faults when the session ends. A guest that had
played the Cell stage together kept the host's cells it showed ("mirrors") after the stage was
left; when the session then ended (the host left or its game crashed), it removed them from a
cell pool the game had already torn down. The mirrors and the partners' cells are now forgotten
once the Cell stage is left, and the cell console commands answer only in the Cell stage. Test:
coop_cell_leave.py(suitecell_leave). - Creature: the guest no longer sees NPCs the host killed standing alive (player report). After
the host's editor or a load the host numbered its creatures anew, and the guest kept the old ones
next to the new: a living copy of every creature, which a kill on the host did not touch. The
guest now drops them. Test:coop_creature_desync.py(suitecreature_desync). - Creature: the guest sees creatures of species it does not have (player report: "he doesn't
even see my companion"). The host's planet is populated from the host's own creations and
Sporepedia downloads too; a guest without them could not build those creatures, also not an
ally in the host's pack. The guest now gets them from the host. Both players need this version
for it (an older host does not answer, an older guest does not ask). - Creature: no more crash of the host after an evolution, and no copies of the partner's
creature left in the world (player report, host crash at 0xB88BEA). After the editor the
partner's old creature stayed on the planet as a wild creature next to the new one, and the
herd made for the partner's creature could get its home deep inside the planet: when that
creature looked for land around its home the game read past its map and crashed. The old
creature is now removed when the players are back, a partner who comes back into the world
appears where it is (not between its last position and the planet's centre), and the herd of
a partner's creature stays under it. Test:coop_editor_strays.py(suiteeditor_strays). - Creature: no crash when you attack or kill the creatures a save brought back (player report,
host crash at 0xD48634, three times). A save made while the partner played kept the partner's
creature; loaded again after a restart it was a wild creature ("these guys appeared after I
loaded save"), and attacking it crashed the game. Such creatures are now removed when a world
loads (also from saves you already have), the game no longer crashes on any creature that lacks
that data, and the partner's creature no longer leaves a new herd in the world (and in every
save) each time it appears. Test:coop_creature_e84.py(suitecreature_e84).
SporeCoop 0.7.2.2
Fixes from a player report (two brothers playing the Cell and the Creature stage). 0.7.2.2 plays
together with 0.7.x (the network protocol did not change), but the fixes need both players on
0.7.2.2: host and guest share the work of kills, meat and editors.
Fixed
- Cell: the host's creatures no longer spin on the guest's screen, and the guest can kill them.
A creature now faces the same way for both players (it kept turning on the guest, between the
host and the guest), so its mouth and spikes are where they are for the host. The guest's
killing bite and bites with a mouth that eats chunks now reach the host (before, the guest could
wound a creature but never finish it). Test:coop_cell_spin.py(suitecell_spin). - Cell: both players see the meat of a kill, and a chunk is eaten once. When the guest killed a
creature, its meat appeared only on the guest's screen for a moment and the host's creature just
vanished; now the kill happens on the host with the game's own death and meat, which both see. A
creature the host kills also dies on the guest's screen (before it stayed there as if alive). Food
from a chunk both eat at the same moment counts once. Test:coop_cell_meat.py(suitecell_meat). - Joining sends the game the host plays now: a guest that joined a host who had started a new game
could be put into an older game of the host (the host had to delete it). Every game of a galaxy is
in the same save folder, and a planet named with letters outside English (for example in Cyrillic)
was not found, so another planet of that folder went out. Planet names in any letters now work on
both sides, the host always names the planet it plays (saving again if its file is not written
yet), and the guest never loads another planet instead. - Editors in the Cell and the Creature stage (player report): a guest can call a mate in the Cell
stage and evolve its own cell (its mate was removed by the pool sync at once); after the host's
editor the guest no longer crashes and sees the host's new cell or creature right away (a new
creation was sent once without its records: the guest's game faulted building the host's cell, or
showed its own body for the host until the next send); the host's mating call starts one vote,
not a second one that ran on in the editor; a rejoin applies the creations again (writing their
files failed while the game had them open); after the own cell editor the new cell stays the own
one; the guest's own creature editor after the vote opens once its world has loaded (opened right
after the start-of-Creature world arrived, it came up without parts or buttons and the guest was
stuck in it). Test:coop_editor_desync.py(suiteeditor_desync). - Crash reports: the minidump of a crash came out empty on some systems and then the archive was
not made; now the report, the archive and the mark for the next start come first, the minidump
(of the crashed thread) last, and the archive is made again with it.