Jump to content

Acero

Community Members
  • Posts

    12
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Acero

  1. Some AOE2 players talked about estimating how many ELO points the handicap tended to "give" to players. I might have heard that +5% handicap increased your ELO rating by 100. Of course this is a simplification, because it will not increase the game knoweldge and the micro of said player, but some useful estimations were made, in order to better balance games. So, under this loose logic, if you wanna play with your friend that is 300 elo points below you, you can give him a 15% handicap and enjoy the game better.
  2. While reading the endless "ProGui" promoters and detractors posts in this forum, an idea came back to my mind. I think ProGui gives an advantage to low level and mid level players by assisting their boom (requiring less attention for the training, and leaving more attention available for other tasks). While you could think of it like a negative (which in many cases is), it has a "good" aspect, which is that lower level players can now participate in higher level games, something that is especially welcomed now that 0AD has lost so many old players. This reminded me of a feature AOE2 has, which is the possibility of adjusting the "handicap" of each player. This adjustment is basically a multiplier on resources collected for that individual player. For example, if you give a player a 20% handicap, he will get 20 more resources for every 100 resources collected. If I am not mistaken, this is the exact same mechanism PetraBot difficulty levels are implemented. Vinme was complaining that he had no players of his level to play 1v1s against. And many of us can often either not fill a TG, or find suitable 1v1 opponents. I think, if added to 0AD, this handicap adjustment (per player) might make balances possible when currently they are not. They would promote lower level players joining higher level games (and the opposite can also happen). They would allow more 1v1s and team games to be played, and reduce the waiting time before games can be started. Graphically, I think the handicap percentage should be shown in the row of each player in the pre-game screen. 0% handicap should be the default, and the host should be able to change it. Before starting, everybody should be able to see this percentage next to each player name, as we can see the team number and civilization chosen currently. Maybe someone can tell here if this could be developed as a mod first to test it, or it has to be hardcoded into the game engine right away, to be able to work. What you think about this idea?
  3. Acero

    CPU Lag

    real_tabasco_sause, I tried this command on the console. It fails on single player mode, so I had to open 2 instances of 0AD, one as host and one as client. As soon as I entered the command on the host machine I got an OOS. And when I tried this command on the client it failed telling me only hosts can enter this command. So apparently both host and client should be patched via mod before the game starts.
  4. Acero

    CPU Lag

    Can this command be entered during a 4v4 replay? It would be an interesting test to make for sure. But, while testing turn length on a single computer might be interesting, I want to test it on actual multiplayer games from the lobby. Testing it just on my own CPU does not give us the whole picture probably.
  5. Acero

    CPU Lag

    Regarding these charts: Can someone explain what the x-axis stands for in both left and right charts? The screenshot seems to be cropped just where it is written. I can't understand the meaning of these charts without it. If someone can explain it would be great. If the turn rate can be changed in JS, then maybe @Atrik idea of doing a quick mod to test it could be worth. The only question would be if there is a way that the host can communicate the selected turn rate every time a new game starts. Else the mod would have a hard coded turn rate, which would not allow us to test different values on different games.
  6. Acero

    CPU Lag

    Just to summarize, after reading the previous discussion, I would be in favor of: Allow the host to change the turn rate (maybe a settings option). Make the game report the real speed the game is running at (as a moving average for example). Make the game indentify the player responsible for slowing down the game to its current speed. Just with those tools we could study the problem of setting an optimal turn rate in real games played in the lobby instead of speculating. I suspect the optimal turn rate will not be a single number set in stone for every type of game. There are plenty of smart players and hosts that can give feedback about how turn rate impacts games after a while of testing. I would not disregard that help from the community.
  7. Acero

    CPU Lag

    Regarding the new Vulcan improvement on performance, we are all eagerly awaiting for it, hope the new alpha sees the light soon. But I think this proposal does not get invalidated by this. I am sure we all can agree that 0AD will never run fast enough in the foreseeable future. We are already orders of magnitude away from optimal performance in TGs, especially in big battles where a single turn can freeze up to 10 seconds, when it should take 200 miliseconds. That's 50 times slower. And if, by some miracle, surplus performance was available, we can always find new ways to make use of it, for example: We could revert the collision sizes to previous normal values to make units behave in more realistic ways instead of lumping together like they do now. We could play larger TGs, like 5v5, 6v6, etc. So a simple tweak that could potentially increase performance by 2x or more should not be ignored in my opinion.
  8. Acero

    CPU Lag

    Thanks real_tabasco_sauce for pointing to the reasons for the change back to 200ms. On the one hand it would be nice to see real data about the effect on performance by the change in turn rate. I haven't seen the benchmarks Feldfeld mentions. If someone can point to them that would be nice. My own experience says it was bad for large TGs in general. On the other hand what could be a better benchmark than to allow the community itself to change and test this in real TGs. To make it possible, the host should be able to tweak the turn rate (maybe a settings option). Also the game should report the real speed the game is running at (as a moving average for example). Lastly the player responsible for slowing down the game should also be identified. This way, several games that include this "slow cpu player" could be ran and conclusions drawn after a few days or weeks of testing. Doing testing over time on real TGs is way more solid that a few "laboratory tests" we could come up with. Also way more brains could be involved in observing the advantages and disadvantages of higher or lower turn rate values. Remember that performance issues can happen for different reasons, as unit placement and terrain will be different on each game. It's not a one-dimensional problem. For example, currently we know that if cronelius is playing a 4v4 TG, and the game makes it to late game, the actual lobby time will be between 2 and 2.5 times higher than the actual game time. In other words, the game will run between 0.4 and 0.5 the normal speed. That's more or less a rule. If we could already experiment with the turn rate, it would be possible to find out almost overnight which setting makes more sense in these type of games. On the other hand, In 1v1s it might make more sense to use a different setting.
  9. Acero

    CPU Lag

    If you open any replay file (command.txt) you will find that the duration of each turn is stated on each line a new turn starts, like "turn 0 200". The 200 stands for 200 ms. In a23 you would see "turn 0 500". The example below comes from a multiplayer 4v4 tg on this alpha: turn 0 200 end hash b6f05acff08e123cde8c1c43ec19627c turn 1 200 end hash-quick 2c00bb0c9b7ad23bd7f74ea4a261fa82
  10. One of the most important sources of frustration for team game players (TG) is the amount of lag they experience in every game, especially in late game, when populations are bigger and battles involve larger armies. This post proposes two changes to the game: Adding an in-game player cpu lag indicator (similar to the in-game player network lag warning we already have) in order for players and hosts to be able to diagnose lag in their games when network problems are not the bottleneck (which is the case in most TGs nowadays). Sadly, right now, players are kept in the dark about the cause of lag in their TG games. Reverting 0AD simulation to use 2 turns per second (as it was the case in alpha 23) instead of 5 turns per second (as now) in order to increase the performance of the game up to 2.5 times compared to what we have now. As I am not a developer, please tell me if these ideas make sense to you and give me your feedback on the lag issue of 0AD. Lag complaints The complaints about 0AD lag fall into three categories: 1. Slow game The game lasts way longer than it should. It is not uncommon for a 4v4 TG of 25 minutes gametime to last 50 or 60 minutes of real time (just because of in-game lag and not accounting for pauses) and this overall sluggishness causes a lot of frustration. Players wonder: why should we be forced to play at 0.5x or 0.4x of the speed when the game setting was set at 1x? 2. Lag spikes During key moments of the game the lag spikes to ridiculous levels, especially in late game and in big battles, when the game can freeze for up to a few minutes until enough units have died. During these lag spikes all sense of movement is lost, and the battleground becomes a slideshow. 3. Frozen user interface (for slow cpu players) Players with slow CPUs experience an additional problem. Not only the units in the game run slower and come to a standstill in big battles, but the whole 0AD user interface freezes during lag spikes. While players with fast PCs can still experience a fluid user interface, for players with slower CPUs the simple act of writing a team chat message, moving the camera or selecting any entity on the game becomes almost impossible during strong lag spikes, and very difficult during moderate lag spikes. CPU lag vs Network lag Whenever a player has a ping above 400ms the game shows his name and his ping milliseconds on the top-right part of the screen, informing everyone that his connection is lagging. This type of lag is easy for everybody to understand and identify. What keeps most players confused is why can it be so much lag in a game when no lag warning is shown to them. This lag is caused by someones computer being too slow keep pace with the speed of the game and, as we know, the game will run at the speed of the slowest PC, which becomes the bottleneck in terms of game speed. In this post I will refer to "cpu lag" as the lag caused by computer performance bottlenecks as opposed to network bottlenecks. While the CPU lag will be affected by both the performance of someones computer CPU and GPU, the CPU aspect is almost always more problematic than the GPU aspect, as it will become clear below. A personal experience In the days of alpha 23 my PC was perfectly capable of playing regular 4v4 TGs. Sure, we got some late game lag and battle lag spikes back in the day, but my PC felt perfectly adequate for 0AD back then, and the experience was decent. Path finding big armies on forests or choke points like gates was a big problem but thankfully it was not that common to encounter (maybe it was really nasty in 1 out of 10 games). I stopped playing for a while, but when I came back to alpha 25 the lag spikes and overall feeling of the game had become horrendous in almost every late game 4v4 TG. Clearly my PC was now obsolete to play the new 0AD. I replaced the graphics card of my PC with a modern one, but the frame rate and responsiveness did not improve. A computer perfectly capable of running 'Red Death Redemption 2' at max settings and 60 fps was barely getting 1 fps in big battles in 0AD. Then I talked to several technically oriented players and the concensus about those who knew was that the CPU performance was the bottleneck in 0AD TGs. No matter how good your GPU is, if your CPU is old or slow (especially in single core performance) your experience will be horrible. Modern games like 'Red Death Redemption 2' need beefy GPUs but can work well on older CPUs by having more optimized code than 0AD and by making use of multiple cores of your CPU. 0AD is an old game that was designed before multicore CPUs were common. The simulation and the problem of turn rate While a slow GPU can cause low framerate, you can always lower the graphics settings to increase performance. But in the case of CPU lag there is nothing you can tweak, as 0AD requires a non negotiable amount of single core computing power every turn in order to update what is known as "the simulation". The simulation involves all the rules of the game and the inputs of the players in order to calculate what the next state of the game should be. Due to the way 0AD is designed, this is a linear process that can only be done by a single core of your computer. As I started talking to players that are also devs I came to the concept of "turn", a step which involves the calculations that take place in order to move the simulation forward. Back in the days of alpha 23 there would be 2 turns per second, which means that, for every second, the simulation would be updated twice. This involves taking into account the user inputs and applying the rules of the game to each and every unit and entity in the game in order to update them to the new state. Then, in alpha 24, the original rate of 2 turns per second was increased to 5 turns per second. Correct me if I am wrong, but this meant that alpha 24 became 2.5 times more demanding on that critical single core of your CPU. And since CPU lag is the most important cause of lag in large TGs then its pretty easy to deduce that this change might have been the single worst design change decision made in 0AD history in terms of making large TG games less enjoyable. What is the optimal turn rate How many turns should be calculated every second? What is the optimal amount? The first thing to notice is that you can input as many commands per second as you want in your game, irrespective of the number of turns per second. For example, suppose you want to snipe and you can click 5 times very quickly by pressing the shift key at the same time. Those 5 attack orders would all be queued and sent to the next turn. If you wanna cheat with an autoclick mouse you could send 30 clicks in one turn. 0AD will not complain. The number of actions you can input on a given amount of time is not limited by the turn rate. Another thing to keep in mind is that around 1 second will pass since you issue any command and your units start executing it. Apparently it works this way in order that every computer executes the commands issued by every player at the same time. So keep in mind that an unavoidable latency of 1 second for every command will be always present, again, irrespective of the number of turns per second. So, how many turns do we need per second? On the one hand we know that the more turns or calculations per second, the slower the game will run in late game TGs, which nobody wants. On the other hand, what is the advantage of increasing the turn rate in terms of gameplay, say from 2 to 5? As I see it, there is very little. Back in the days of a23 we could observe pretty good micro from top players, zigzagging their way out of javelins thrown at them, and let's not forget the nasty hero dances dodging all arrows that were so common back then. And all that was done apparently with 2 turns per second. Do we need to update units 5 times per second now? Let's remember that one second will pass anyway between any command issued and the unit acting on it. Moreover, lately the units cannot change direction instantly as before, because acceleration was added to their physics, so they became more sluggish in response. And alpha 23 with 500ms turns felt more responsive due to the lack of acceleration physics. In my opinion, the added lag caused by a higher turn rate defeats the purpose of the increased "snappiness" the developer probably intended, especially in large TGs. And the 1 second latency for every command limits the amount of perceived "snappiness" we will ever have in 0AD no matter how fast the turns are being tried to be calculated. Turn rate proposal The simplest option would be to revert to the tried and true 2 turns per second we had in alpha 23. This would probably decrease CPU lag by more than twofold. A better solution would be to allow the host of the game to select the turn rate he wants. Another solution would be to automatically adjust turnrates depending on the number of players, for example: 1v1 - 5 turns per second (like current alpha) 2v2 - 4 turns per second 3v3 - 3 turns per second 4v4 - 2 turns per second (like alpha 23) Or set the turn rate according to overall population cap. Or dynamically adjust the turn according to the slowest player cpu performance during the game. Early game it could have a fast turn rate and slowly turn it down as the game progresses. In any case, a hardcoded return to a turn rate of 2 would be a huge improvement in performance and probably a trivial change to implement. CPU lag warning Besides this, I want to propose that a cpu lag indicator or warning be added to 0AD. This warning should be similar to the network lag warning we already have. For example: zniper14 0.4x This would indicate that in the last minute the CPU of the player "zniper14" is only capable of running the game at 40% of the intended speed. In big lag spikes we will probably see numbers approaching 0.01x for some players. This number should be calculated by the amount of seconds (of real time) needed to compute all turns in the last 10 seconds (of game time), and divide that amount by 10. This is obviously an example and other ideas could be thought of.
  11. A few things to point out: I came back 5 days ago to 0AD, and as kun0 correctly says, I am using a new account, but I have not misrespresented my level to anyone. The game in question was balanced by SaidRdz, who knows who I am. Kun0 and aronramirez attacked my ally 'Sabloku' who held 2v1 like a champ for a while, and then I came a whole minute or two late. Kun0 was already not happy at that point. He and his ally had failed a 2v1, they were low on pop, and were defeated easily afterwards by my ally and me. He was so angry that he asked in open chat if I was DoctorOrgans (as a type of insult, I suppose). After the game ended it was me and not others who told kun0 that I was Acero. I apologized to kun0 if the confusion about my identity made him angry, I even offered him my spot on the next game to make it right. I also told him that it was in part his fault to just assume my level without asking me who I was before the game or during the game. I still think kun0 is one of the coolest players in 0ad and like him very much. Greetings.
×
×
  • Create New...