Jump to content

smiley

WFG Programming Team
  • Posts

    353
  • Joined

  • Days Won

    2

Posts posted by smiley

  1. If I might suggest something, you might wanna look into that commit which added the manager thing. In this case, this is just a missed rounding as opposed to an actual error. *just to clarify, I am not saying that its what caused the problem. Just saying that its a possibility. I dont care enough to go through commit logs lol.


     

    Spoiler

     

    [stuff nobody asked for]

    Unfortunately, floating point errors are not specific to JS. Using double precision, 0.1 + 0.2 = 0.30000000000000004. Python, JS, C++, whatever.

    1/5 = 0.2 in base 10.

    In base 2, its 0.00110011001100110011001100110011001100110011001100110011... and it goes on infinitely. In the IEEE 752 standard, the significand is 53 bits, the rest is cut off.

    Same as when you cant get exactly 1 when you add 1/3 + 1/3 + 1/3 together in a calculator which does not round off.

    [/stuff nobody asked for]

     

     

    • Like 1
  2. Ptolemies are the best civ. Bordering on being overpowered late game. With the merc hero, mercs are crazy cheap. Plus, there is a fixed cost tech which literally promotes your whole army to rank 2.

    When I stopped playing multiplayer, the whole meta kinda revolved around them.

    • Like 1
  3. Not a solution unfortunately. On my end, it doesn't really run out of memory even without increasing the runtime size. But it still takes a while to generate. But like I said, its bad design. On top of that, its highly cpu unfriendly. _Lots_ of cache misses, and those are expensive.

    Good enough for a workaround I guess. But why such a large size though? The largest map size in AoE2 was apparently 256 :)

  4. The server sends a compressed state of the entire simulation. And all the commands from the point the rejoin was requested. While the rejoined client is executing those commands, the game would be locked in the current step.

    What you are asking of is actually very simple. Conceptually at least. (Assuming the AI serializes all it needs). All the prerequisite code is already present.

    None of the state changing math is floating point btw. It’s all fixed point. So, just integer operations.

    Since you seem to be somewhat interested in engine design, I suggest reading up on the lockstep architecture. It’s not entirely the best engine design today, but it came from a time when bandwidth was rather precious.

    • Like 1
  5. 2 hours ago, enko said:

    If it is able to patch, is it possible to implement this in the next release? In my opinion an open-source software should not implement unadjustable boundaries.

    I just changed it to scale with the actual map size. Thanks for bringing it up.

    Spoiler
    Quote

    is it possible to implement this in the next release?

    That I cannot guarantee, I don't work on 0AD, but a fork of it. Maybe 0AD would eventually merge that in.

     

  6. Not unless you patch engine code and recompile it yourself.

    Certain maps sized 512 takes over 6 minutes to generate. So, if your 2048 sized map doesn't run out of memory, you would still have to wait for an eternity.

    Unfortunately, the 0AD map generation system has a terrible design problem. And fixing it is taking a lot longer than one first imagined.

×
×
  • Create New...