mZhura wrote:
marked ship moving to unknown system, but path-dots are not there
[...]
and by the way! marked ship doesn't really moving anywhere

Fixed in SVN.
Quote:
Geoff the Medio wrote:
Likely the fuel distribution should be just based on knowledge of starlanes, although in the event we have starlanes that can be removed, knowing a starlane exists and thus seeing fuel being distributed to a system along that lane in the client won't actually cause that distribution to happen on the server.
so, there is no way to tell client that starlane ceased to exist?
Right now, there's no way for starlanes to cease to exist... so it's a non issue.
If we added a way for starlanes to cease existing, as of now, the rest of the game would treat that like any other information known about objects that are destroyed that a player can't see when they're destroyed; the player would continue to think there's a starlane there, until the player got vision of a system attached to the starlane and thus became aware that it wasn't there anymore.
The game mechanics could be extended so that players would be informed if any starlane is removed that they'd previously observed but currently don't have vision of... but this doesn't seem like the appropriate thing to do given that I just spent / am still spending all this time adding a sensible visibility system...
Quote:
about enemy ships it seems logical not to know where it is heading to, just where it is in the current moment
How things current work, or are supposed to work, is that a player that sees an enemy fleet moving between systems is only told of the next system the fleet's moving to, and nothing about where it's headed after it reaches that system.
Quote:
it seems to me that i found the cause of ship freezing in starlane. it seems like it always happen when ship enters starlane with less then 1 fuel and doesn't reaches the end of starlane on the next turn.
That was indeed relevant information. I'd recently replaced a bunch of functions that returned objects with functions that returned object IDs. If an object didn't exist, the functions used to return a null pointer, equal to zero, which is often checked for by something along the lines of
Code:
if (!GetSystem()) {...}
Which only executed the ... code if there was no returned system. GetSystem was replaced by SystemID, which returns a special object id, -1, when there is no object, so the resulting code said
Code:
if (!SystemID()) { ...}
which executes the ... code if any ID other than 0 is returned, which is the case when there is no object, since -1 is the returned sentinel value to indicate that there's no object.
Specifically what was happening was that the move path calculating function was checking if the fleet had no fuel and was in a system, and if so, was aborting early and returning an empty path, since the fleet can't leave the system without fuel. With the change, fleets that weren't in a system and which had no fuel matched this check, since their system ID was -1 to indicate not in a system, and so these fleets had an empty move path returned, and thus didn't move.