
AInur
-
Posts
76 -
Joined
-
Last visited
Posts posted by AInur
-
-
Ideally soldiers except siege ignore buildings and only attack enemy units.
When force attack buildings, capture is most likely easier because the 0ad buildings have way too much health compared to units and damage done by units. But if it's ungarrisoned, then a capture is quite easy. Ultimately, it should be up to the player so we can keep it like status quo.
In any case, you can edit your unit_actions.js to change the behaviour of solder units and their hotkey associations.
My recommendation is to decrease the pierce and hack armours of buildings because they are too ridiculous high at the moment.
-
5 minutes ago, Dunedan said:17 minutes ago, AInur said:
A connection to the lobby server stays alive the whole time during pregame, as well as during the game itself.
The connection thinks that it is alive even after I have killed all pyrogenesis processes in the system. When I restart 0ad and rejoin the lobby 30 seconds later, there is still no game list (previous session is considered active by the bot). Not sure why that is.
-
4 hours ago, Dunedan said:
The cases I looked into so far were all caused by being online with multiple instances of 0ad. So unless that was done intentionally it'd be interesting to figure out why that happened.
It's caused by a delay in the lobby bots before it can confirm that a player has quitted. This is common when there are many players joining and leaving at the same time
On the client side, the gui has already reached the pregame page but a backend connection might still be alive
4 hours ago, Dunedan said:I believe it might be important to learn why rejoining a running game is necessary in the first place. Is that because 0ad crashes or because the player looses the connection to the host?
- bad connection to host, especially intercontinental games
- game bug or crash, e.g. suddenly cannot click, OOS, RAM overflow
- OS or hardware failure
- player is distracted by real life situations
-
I'm building the release version A27 and I see the fix has already been applied there 3 days ago by sera. This is the fixed SoundManager.cpp:
const ALCchar* devices = nullptr; if (alcIsExtensionPresent(nullptr, "ALC_ENUMERATION_EXT") == AL_TRUE) { if (alcIsExtensionPresent(nullptr, "ALC_ENUMERATE_ALL_EXT") == AL_TRUE) devices = alcGetString(nullptr, ALC_ALL_DEVICES_SPECIFIER); else devices = alcGetString(nullptr, ALC_DEVICE_SPECIFIER); }
But after I build this successfully, identical error is produced.
Can we do a try exception to skip this?
-
30 minutes ago, hyperion said:
building a26 from source
- Where can I find the fixed and buildable source code for A26? (I've tried to build the released zips and it throws error after error)
- Are the build steps identical to the A27 under development?
-
Apologies, the previous script was designed for moderate replay databases and purely optimised for performance. This version is safer as it counts the number of CPU cores that you have and limits the number of processes to just your core count. Of course it will be slower, but it's safer for low end systems.
snipe_analyzer_platinum_safe.py
The final process has to do the extra work, which slows down the overall generation. You can of course limit the folders that you want (for example we can have a CLI input for the user).
I had no problem with running 100 concurrent processes, but it might be unsafe for some users.
We can also try a multiprocessing pool.
-
1
-
-
2 hours ago, 0 calories said:
player_data = commands[0].split(',"PlayerData":[')[1] # crop unnecessary
IndexError: list index out of rangeThis index error is caused by referencing an index greater than the length of the list. It could either be caused by commands[] being an empty list (your commands file was empty) or if there was no valid players. Given this replay was from 2018, it's very possible that earlier versions of the game stored its replays in different formats, so this heuristic script won't be able to interpret it correctly.
Since the analyse_replay function is already in a try-except condition, the analysis for this particular replay failed but the other replays should be analysed correctly. It would be helpful if you can post that particular replay from 2018-04-28_0001 here for me.
-
@ffm2 Very nice scripts, thanks!
On the first run of snipe_analyzer_platinum.py, there were some errors due to adding numpy arrays of different datatypes. The lines 220-224 have been fixed for you:
def eco_scores(seq): score = np.array(seq['resourcesUsed']['food'], dtype='int64') score += np.array(seq['resourcesUsed']['wood'], dtype='int64') score += np.array(seq['resourcesUsed']['metal'], dtype='int64') score += np.array(seq['resourcesUsed']['stone'], dtype='int64')
You need to specify the datatype when converting lists to numpy arrays.
Also on line 20, you printed the string 'path' instead of the actual path. Both bugs are fixed in this file below:
Applying your script on my replays:
-
1
-
-
18 minutes ago, 0 calories said:
My test shows I reach average 20-22 CPS. Tested on this website https://clickspeeder.com/click-per-second/
Wow you are fast!
Using your website, I get between 5 clicks and 9 clicks per second, with a mode of 7. This is consistent with the peaks in the graph from ffm's script. In addition, the simulation lag prolongs the turn times, so it's possible to have values equal or slightly exceeding the score from this website.
The highest value seen on sanafur's graph was 17, which is well below his maximum CPS (especially when considering in-game lag), so everything is well explained.
-
1
-
-
You might be interested in:
-
1
-
-
What is the advantage of spam clicking so many times ? Do you spam click on just one spot or do you have to select different targets then spam click on every target once?
(after trying alt + right click, I still found my queue method more effective at sniping. I just had to remember all of the numbers of archers needed to do an instant kill under different conditions)
-
You create diversity by adding more to each faction, not by removing their essentials!
-
As I said, most 0ad problems are caused by handicapping civilisations. If every civ has champion melee cavalry then the problem is solved.
There are people who want to play Mauryas Athens and Sparta. These civs shouldn't be removed from the game. Your quest for diversity reduced diversity. Sometimes making the base structure tree the same helps a lot
In the past you had complaints about slingers, archers, pikeman, skirmisher cavalry, almost every unit. If you had given every civilisation an archer, a skirmisher/ slinger, the problems wouldn't have existed! Everyone can make that op unit and it wouldn't have been a thing!
-
2
-
-
1 minute ago, PyrrhicVictoryGuy said:
Therefore the only way champ cav pays for itself is by killing units.
Yes, actually I think champion cavalry is weak. But the point of this thread is solving the problem of champion cavalry becoming the one and only solution in all TGs; all other gameplay becomes irrelevant when someone makes 30 champions.
The current motion of TGs is a race to spam the most champions. The first to reach 35 champions wins for his whole team. All other units are irrelevant; all you need in your army is the champions.
That is the problem right now. The champions themselves are not strong but they monopolise the battlefield. Mauryas , Spartans and Athenians are unplayable in late game due to the lack of this unit
We are also seeing middle players letting their borders die just to buy them time for massing up this unit, then one player with 60 champs dominates the map with brainless brute force. This is not a health way of playing
-
2 minutes ago, PyrrhicVictoryGuy said:On 14/11/2024 at 8:55 PM, Atrik said:
Yes this is why people spam skirmishers, because they, unlike spear cav, kill champion cav
Not really. Any group of class b or class a infantry will get massacred by a significant number of champion cavalry
-
25 minutes ago, real_tabasco_sauce said:7 hours ago, PyrrhicVictoryGuy said:
Yes, to an extent. However, the situation where melee infantry units die first is still present
Not if you play against me; I will snipe your skirmishers!
-
1
-
-
13 minutes ago, hyperion said:
Quick check:
alcGetString(nullptr, ALC_DEVICE_SPECIFIER) returns nullptr or at least a char* starting with "\0" in 1.24.0
It's only used for printing the device name into a logfile. Making the follow up code expecting non NULL segfault. Skipping that part the sound works just fine, as it's only used for printing the device name into a logfile.
What exactly should I do to fix it?
-
1
-
-
0ad crashes whenever I try to start it. This became persistent and appeared suddenly.
TIMER| InitVfs: 186.839 us FILES| Main log written to '/home/esme/.config/0ad/logs/mainlog.html' FILES| Interesting log written to '/home/esme/.config/0ad/logs/interestinglog.html' TIMER| CONFIG_Init: 2.24604 ms Sound: AlcInit success, using OpenAL Soft Assertion failed: "0 && (L"FYI: WARN_IF_FALSE reports that a function failed. Feel free to ignore or suppress this warning.")" Location: SoundManager.cpp:841 (RunHardwareDetection) Call stack: (0x59bae6a4bd84) /usr/bin/pyrogenesis(+0x84ed84) [0x59bae6a4bd84] (0x59bae69f80a0) /usr/bin/pyrogenesis(+0x7fb0a0) [0x59bae69f80a0] (0x59bae69f9a69) /usr/bin/pyrogenesis(+0x7fca69) [0x59bae69f9a69] (0x59bae69fa335) /usr/bin/pyrogenesis(+0x7fd335) [0x59bae69fa335] (0x59bae669af23) /usr/bin/pyrogenesis(+0x49df23) [0x59bae669af23] (0x59bae669e86e) /usr/bin/pyrogenesis(+0x4a186e) [0x59bae669e86e] (0x59bae669e9a1) /usr/bin/pyrogenesis(+0x4a19a1) [0x59bae669e9a1] (0x59bae65aed0c) /usr/bin/pyrogenesis(+0x3b1d0c) [0x59bae65aed0c] (0x59bae62ae375) /usr/bin/pyrogenesis(+0xb1375) [0x59bae62ae375] (0x59bae629d3ab) /usr/bin/pyrogenesis(+0xa03ab) [0x59bae629d3ab] (0x714b6a1621ce) /usr/lib/libc.so.6(+0x261ce) [0x714b6a1621ce] (0x714b6a16228a) /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x714b6a16228a] (0x59bae62a71c5) /usr/bin/pyrogenesis(+0xaa1c5) [0x59bae62a71c5] errno = 0 (No error reported here) OS error = ?
This log suggests Soundmanager.cpp is causing an issue. The sound system on my device is working.
interestinglog.html is empty
mainglog.html only loaded some autociv config strings, nothing of interest.
I could play the game by using an appimage build, but ideally we can fix the main installation.
-
25 minutes ago, ffm2 said:
either selecting the unit and right click on the enemy unit
This is exactly what I did, but repeated maybe 2 times in 1 second? I often use alt + E to select cavalry and alt to select infantry. Maybe that was counted in this.
I made an upgraded version of your script which batch processes all replays in the replay folder, writing the output graphs to each replay folder. This is more automatic, faster and fail proof
-
2
-
-
@ffm2, can you explain the difference between single attack and group attack?Here are 2 graphs from a replay that I saved:
Being Astra- (1550) myself, I am sure that I didn't click on units 8 times in one second. I was not that fast. My main attack moves were Ctrl+Q and occasionally selecting 25 archers as dedicated snipers. My snipe move was holding down shift then right click on enemy units, which makes the sniper team kill off selcted enemies one by one. I didn't use Alt-click as I don't know how.
-
1
-
-
An idea: in order to ascertain the cause of these superhuman click rates, we can write a keylogger program that captures the mouse input of a volunteer. Then we can match the inputs to the turn times to check whether the commands were indeed issued by the physical hardware or 0ad bug or snipe script.
One very simple example is to log the mouse click activity of the volunteer over the duration of one game and check the maximum mouse click rate
-
Seems like we have consensus: put champions into special buildings, remove them from barracks
-
1
-
1
-
1
-
1
-
-
10 minutes ago, Lion.Kanzen said:
Spamming happens due to many circumstances, a snowball effect of CS, a product of citizens being soldiers and collecting resources.
Therefore they can also build barracks, therefore they can create more CS to collect more resources.
Another problem in my opinion is the population cost of the units, a horseman = a foot soldier, what changes is the resources, but when you reach the middle is pointless.At that stage, 10-20k of wood and food are already reached. It's easy to spam anything that costs wood and food, as well as getting metal through bartering(In case of not having metal mines).
I meant we should stop spamming champions. It's okay to spam citizen infantry.
-
A limit on the numbers will be effective. Reading older forum posts, it seems that every version had some OP units that messed up the balancing, but the issue is never the unit itself but rather spam champions in large quantities.
What we really need is not adjustment of stats but anti-spam!
Ratings Disputes and Offence Reporting
in Help & Feedback
Posted
This player Irina16 is known to be a troll who joins games and quits randomly. I've had one experience with her where she was on my team in a 4v4 TG, then she said something about armour stats change and just left the game...
It turned up that she did a suicidal infantry attack on an enemy and lost a few units. When she is hosting, she terminates the host suddenly if something goes wrong. I would recommend avoiding this user.
A very similar player is 2fast4me. He quits even more randomly; you don't even need to attack him. When he hosted a 4v4, he terminated the game at minute 8 and started saying random things in French in the lobby. When he plays in your games, he also says random French words and quit for no reason.
I really don't want to denounce people here but these two players are repeated offenders and I think I should warn everyone to not waste your precious time on them.