OpenBSD support thread
Made a port for 0.3.0 and 0.2.8.2.1 but when I play on that server I get weird graphical explosion outputs. Tried the server on two different machines.
Recording attached.
Packages for OpenBSD 4.0 available!
Recording attached.
Packages for OpenBSD 4.0 available!
- Attachments
-
- test.zip
- Recording using 0.2.8.2.1 Windows client, looks same on both branches.
Other public servers seem to work normally. - (109.46 KiB) Downloaded 231 times
Last edited by belenus on Mon Jan 22, 2007 8:24 pm, edited 4 times in total.
- bel
Sure it's related to the server? The first strange explosions appear when you fumble in the menu, it may have to to more with that (from my point of view). Shot in the dark fix suggestion: increase the GAME_TIMEOUT setting. I haven't played the recording back in a debugger yet, but those things can happen when cycle deletion messages for last round's cycles arrive at the client when the new round is already initialized.
And of course, we already had our fair share of bugs with similar effects, but so far, they affected all platforms equally.
And of course, we already had our fair share of bugs with similar effects, but so far, they affected all platforms equally.
I've run it on 3 boxes now, two are notebooks in the local LAN which shows the weird explosions and the third is a dedicated server which runs just fine without errors.z-man wrote:Sure it's related to the server? The first strange explosions appear when you fumble in the menu, it may have to to more with that (from my point of view). Shot in the dark fix suggestion: increase the GAME_TIMEOUT setting. I haven't played the recording back in a debugger yet, but those things can happen when cycle deletion messages for last round's cycles arrive at the client when the new round is already initialized.
And of course, we already had our fair share of bugs with similar effects, but so far, they affected all platforms equally.
- bel
Hmm, I think I'll need a serverside recording. I debugged the clientside one, and indeed, the explosions are triggered when the cycles are destroyed on server command. That command usually should come during the grid deconstruction phase and the explosions should never be displayed, but in your case, they come in during the following grid construction phase. If increasing GAME_TIMEOUT does not help, it's a bug in the server code, the server should wait until all clients have received all important messages before progressing from the deconstruction to the construction phase.
The serverside recording, ideally, should not contain AIs. They like to break the recording from floating point inaccuracies. Just use additional clients in chatbot mode
And I'd also need the clientside recording to match the serverside recording, I'll probably need to bounce between the two a lot.
I'll probably have to somehow eliminate the explosion that gets triggered in this situation anyway; it's what causes the explosion sound at round end in 0.3.0.
The serverside recording, ideally, should not contain AIs. They like to break the recording from floating point inaccuracies. Just use additional clients in chatbot mode

I'll probably have to somehow eliminate the explosion that gets triggered in this situation anyway; it's what causes the explosion sound at round end in 0.3.0.
Recordings with default GAME_TIMEOUT... in a LAN.
Windows Client: 0.2.8.2.1
Server: 0.2.8.2.1 OpenBSD package
Windows Client: 0.2.8.2.1
Server: 0.2.8.2.1 OpenBSD package
- Attachments
-
- recordings.tar.gz
- (381.73 KiB) Downloaded 236 times
- bel
Heh, this seemed familiar for a good reason
It's already fixed largely in the branch. I added some more safety checks. Time to get 0.2.8.3 finished.
What happened is:
- All walls are cleared
- All cycles are killed
- The cycles that are still alive drop their wall
- the wall keeps referencing the cycle and keeping it alive for a bit longer, just enough that the destruction message is sent out late
- the client creates the explosion on arrival of the destruction message, which is too late.
The fix is to simply swap the cycle kill/wall clear order. Here's a patch against 0.2.8.2.1 for you, I hope it works.

What happened is:
- All walls are cleared
- All cycles are killed
- The cycles that are still alive drop their wall
- the wall keeps referencing the cycle and keeping it alive for a bit longer, just enough that the destruction message is sent out late
- the client creates the explosion on arrival of the destruction message, which is too late.
The fix is to simply swap the cycle kill/wall clear order. Here's a patch against 0.2.8.2.1 for you, I hope it works.
- Attachments
-
- explosionbugfix.patch.gz
- (526 Bytes) Downloaded 226 times
Patch applied without issues but had to change it a little. (Just need diff -u output from inside the armagetronad folder.)The fix is to simply swap the cycle kill/wall clear order. Here's a patch against 0.2.8.2.1 for you, I hope it works.
Made a new package but can't test it right now.
Ahh btw, if you search the LAN with a client... how does that work?
Just had a stupid Windows firewall at work signal a portscan because of that...

- bel
With a portscanbelenus wrote:Ahh btw, if you search the LAN with a client... how does that work?

The server could just broadcast itself (can be turned ON and OFF, default should be OFF) and the client listens for those broadcasts. If the client catches a broadcast it connects to the server and fetches detailed information.z-man wrote:If you see a way to avoid this that works in all situations, I'm open to suggestions.
- bel
That reverses the problem
Now you can't have several clients on the same machine, because the clients have to open a well defined listening port. I admit that is a more far-fetched scenario in most cases, but for debugging, I sometimes run as many clients as my machines can handle.
Plus, the overall network load is increased by the constant broadcast (a very minor problem that would be tolerable).

Plus, the overall network load is increased by the constant broadcast (a very minor problem that would be tolerable).
Sure it would reverse the problem... but it is much better having ONE server broadcast that it is there than having multiple clients portscan a whole local subnet.z-man wrote:That reverses the problemNow you can't have several clients on the same machine, because the clients have to open a well defined listening port. I admit that is a more far-fetched scenario in most cases, but for debugging, I sometimes run as many clients as my machines can handle.
Plus, the overall network load is increased by the constant broadcast (a very minor problem that would be tolerable).

- bel
Patches applied, port and packages updated.z-man wrote:Yes, it works on 0.3.0 as well.
Seems to work now but you got an idea why I got huge lag when playing in a local network but connection to a real server is ok?
- Attachments
-
- armagetronad-dedicated.tar.gz
- OpenBSD port of the 0.2 and 0.3 branch.
- (4.71 KiB) Downloaded 250 times
Last edited by belenus on Mon Jan 22, 2007 8:43 pm, edited 1 time in total.
- bel