Jump to content


WFG Programming Team
  • Posts

  • Joined

  • Days Won


phosit last won the day on December 1 2023

phosit had the most liked content!

1 Follower

About phosit

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

phosit's Achievements


Sesquiplicarius (3/14)



  1. The x-axis of the right chart is time. The frames are ordered chronologically. The right chart are the frames ordered by time. No I only tested it with multiplayer with a single client that worked. I also get OOS with multiple clients when entering the command during a game. It worked when entering the command during the loadscreen. In a replay the turnlength is the same as in the game it came from.
  2. What do you mean by that?
  3. For the first part: Yes it would be good to implement that. There is a ticket: #5323 For the second part: There is also a ticket #3752 Most computation isn't executed every turn (or in a constant turn interval), like a builder deciding what to do when a field is placed. Still some computation does that, like the AI deciding what to do. IIRC An AI only executs each 8th turn. With more frequent turns the constant-turn-interval tasks could be spaced out more. So the average computation is roughtly indipendant of the turn length. Engine things (rendering, network...) Isn't done per turn but per frame. In a cpu intensive game there is a turn every frame. So engine things could be seen as constant-turn-interval tasks. (This entirely refutes my previous argument ) There isn't one magical thing which makes the game run fast (in a single thread (multithreading really is magical (that's a joke magic doesn't exist ))) If you only care about game speed (your complain 1) you want do as few constant-turn-interval tasks. Thus longer turns. If you only care about a responsive UI (your complain 3) you want to do as few sim-things per frame as possible. Thus shorter turns. About your 2. complain: I think in such a situation the fast clients repeatetly have to wait for the slowest client. When a fast client ends it's turn it has to wait's for the slow client to finish the turn. In this time the fast client shows an interpolation (IIRC 5 frames) to the user. When the slowest client is really slow thous 5 frames aren't enough. A solution (which just came to my mind, it isn't elaborate) would be to space thous "interpolation-steps" out, like one interpolation-step each second frame. The interpolation-step / frame ratio should be dynamic to the expected speed of the slowent client. Maby also the interpolation-step count could be dynamic. (I'm just thinking loudly at this point) We head in the direction of decreasing turn length even more: Hosts can already specify the turn length by typing `Engine.SetTurnLength(100);` in to the js console. (yes the feature is hidden) I'd like to see the results of your experiments .
  4. There is a fix but there is little activity so i don't think it will be commited soon.
  5. There will be another RC when we are in the release process. The release process from which 0ad-0.0.27-rc1-27645 originates got halted.
  6. Indeed, thanks for the ping. It should be fixed with rP27994.
  7. After updating ICU I also had linkage errors. It was fixed by cleaning the workspace.
  8. Looking at the linked ticket a future 2.12.3 should no longer have any issue, still technically it's a downstream bug, just that the fallout was unexpectedly large and the missing headers where injected back upstream. So I'd add the parser header regardless as this also allows the use of all 2.12.x releases. Right i used 2.12.1 Can you upload a patch? (I'm shy of patching libraries) To address the readability issue we could use a temporary/using. using MaybeConstXmlError = std::conditional_t<LIBXML_VERSION >= 21200, const xmlError, xmlError>; void errorHandler(void* UNUSED(userData), MaybeConstXmlError* error)
  9. Thank you for the work. I don't like preprocessor directives. We could go for: void errorHandler(void* UNUSED(userData), std::conditional_t<LIBXML_VERSION >= 21200, const xmlError, xmlError>* error) Also that wouldn't introduce duplication. @hyperion Does Fcollada also have an issue with newer lxbxml2 version? I get this errors: FCollada/FUtils/FUXmlDocument.cpp: In constructor ‘FUXmlDocument::FUXmlDocument(FUFileManager*, const fchar*, bool)’: FCollada/FUtils/FUXmlDocument.cpp:39:39: error: ‘xmlParseMemory’ was not declared in this scope 39 | xmlDocument = xmlParseMemory((const char*) fileData, (int)fileLength); | ^~~~~~~~~~~~~~ FCollada/FUtils/FUXmlDocument.cpp: In constructor ‘FUXmlDocument::FUXmlDocument(const char*, size_t)’: FCollada/FUtils/FUXmlDocument.cpp:67:23: error: ‘xmlParseMemory’ was not declared in this scope 67 | xmlDocument = xmlParseMemory(data, (int)length); | ^~~~~~~~~~~~~~
  10. Indeed. While writing that prompt it also got to my mind: In the winter there aren't that much less animals. Instead there is less gain on the fields.
  11. In days of old, when winter's chill did reign, Meat was a luxury, scarce and plain. The frozen fields lay barren, void of life, Leaving hunger pangs to plague our strife. But fear not, for in those frozen lands, There were still ways to feed our hands. We turned to fields of grain and green, Where other forms of sustenance were seen. The wheat and oats we harvested with care, Baked into bread, our bellies could bear. And from the gardens, vegetables galore, Stews and soups we made, and more. In winter's grip, we found a way, To survive each day, come what may. For though meat was a rarity, Our resourcefulness kept us in unity. So let us cherish these fields of gold, That give us life, both young and old. For in their bounty, we find a way, To thrive, even in winter's gray.
  12. Ok i reinstaled the git repo, but still don't get the xml error. If there is no objection i'll commit it as is.
  13. No, I also use GCC 13.2.1 from the arch repo I'll reinstall the complete git repo this weekend to see if that yields more errors. (Probably ./clean-workspace.sh didn't clean everything)
  • Create New...