VOGONS


Fragile Allegiance IPX Multiplayer

Topic actions

First post, by ghosthammer

User metadata
Rank Newbie
Rank
Newbie

Hey everyone,

So a friend and I have been trying for a long time (last week) to get Fragile Allegiance's multiplayer to work using Dosbox's IPX emulation. We are using the CD version of the game, but every time the multiplayer crashes about 5-15 minutes into the game. It reports a "Random seed error", I presume indicating that the host and client have gone out of sync. Here's what we've already tried:

> 16 mb ram (made the game more unstable, so we're using 16 mb now)
Core: Normal, Auto, and Dynamic. All tried.
Cycles: 13000, 20000, 40000, auto. With all core combinations. Well,
EMS: On/off

We've been trying this both over a home wireless network and over the internet; doesn't seem to make a difference. I don't know if it's worth noting, but when I start two instances of dosbox on my computer and play a network game that way the problem doesn't occur. But that's not too surprising, giving that only the server or the client is doing something at any given time.

So do you guys happen to have any ideas? I'm a little frustrated, but I'd appreciate any help. If I've omitted any important details, let me know.

Thanks again!
-Walt

PS Dosbox 0.72, Core 2 Duo 1.8ghz, 2gb ram, geforce 7400go, vista 64 bit, using soundblaster emulation

PPS Would this game use the FPU? Could it be FPU rounding differences between my machine and my friend's? Is there any way to test this theory with dosbox?

PPPS Dumb question, perhaps. I was looking at the ipxnet code a bit, and I was wondering if the communications protocol allowed assured deliverance or not? Could dropped packets have something to do with this? I'd imagine that the original dos ipx was pretty reliable in terms of packets loss.

Reply 1 of 36, by ghosthammer

User metadata
Rank Newbie
Rank
Newbie

Reply because the problem progressed:

So, going on the UDP ordering hunch, I d/led the latest dosbox repository and swapped out all of the SLDNet_UDP functionality for an old reliable UDP implementation I had. Presto - no network flaws whatsoever, even with varying cores. I'm going to investigate a little more, but I was wondering if it would be welcomed if I patched in a form of reliable UDP networking (and in-order reliable UDP networking) as various switches in the config file. That way, games such as Fragile Allegiance that require (yes, at a loss of speed) the stricter criteria on packets would run properly.

-Walt

Reply 2 of 36, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

I don't speak for the developers, but I hope that (quality) patches will gladly be accepted, especially if they address a problem with playing DOS games.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 5 of 36, by ghosthammer

User metadata
Rank Newbie
Rank
Newbie

1. I'm still working out the kinks with the help of bobo.
2. It's not a problem with SDLnet, I think it's a problem with the game's assumptions about IPX networking.

~Guesswork

For instance, a lot of dos was based on hardware interrupts... when an IPX packet is received, unless I'm mistaken, an interrupt is called. Thus, FA submits a packet and assumes that the next received packet will be relevant to the packet sent, because the other computer should have interrupted whatever it was doing and replied to the sent packet.

~End guesswork?

However, with default UDP networking (which is not an error) packet delivery is neither guaranteed to arrive or be in order. So when these packets arrive out of order, it doesn't work. How stingy FA is about the ordering I have yet to determine... Bobo said he got a 5 hr game with my latest fixed EXE which uses reliable delivery... But then it crashed (Still, the longest game I've gotten in without the fix was 20 minutes, so a huge improvement).

So, I don't know much about IPX networking. My guess would be that when FA was made, the type of LAN that this game would be played over allows for instant delivery? Which, if they relied on that... May mean that a duplex model (simultaneous sending and receiving) won't work. I don't know though. Any help would be appreciated...

Until then I'll dig through DosBox's IPX handling some and see when it receives messages I guess.

Reply 6 of 36, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

DOSBox's IPX was based on TCP once (which would provide delivery and sequence). I think they changed it because UDP produces less traffic. Might be worth to try the old functions. And maybe have it user selectable between safe/fast.

1+1=10

Reply 9 of 36, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Hm, looks like it was only during initial development...
The first IPX version already was UDP however there are some commented leftovers which hint at TCP...

http://dosbox.cvs.sourceforge.net/dosbox/dosb … er.cpp?view=log

1+1=10

Reply 10 of 36, by ghosthammer

User metadata
Rank Newbie
Rank
Newbie

Yeah, I saw those... I think they're just the coder boasting about UDP though (it's nice to code for because you don't have to transmit each packet's size before sending the packet's data, for instance). Oh well. I'm checking my reliability protocol for errors that would result in a packet being dropped. We'll see if that fixes it.

Reply 12 of 36, by Philzero

User metadata
Rank Newbie
Rank
Newbie

Hi,

I hope there has been some progress with the IPX problem up to now. For years now I wanted to play a large map with high asteroid density in multiplayer with a good friend. Now that we both recieved our diploma, there is time for such a game. The fridge is loaded with pizza and energy drinks and we are ready to go. But we still get the random seed error after a few hours.
Is there really nothing we can do except reformatting and installing DOS?

Greetz,
Phil

Reply 13 of 36, by ghosthammer

User metadata
Rank Newbie
Rank
Newbie

Yeah, unfortunately the last thing I haven't tried, which is a half-duplex sync over IP (each end has to request ability to send, THEN send), would cause way too much lag. Plus, I haven't had time to try it yet. Sorry. 🙁

Reply 15 of 36, by Philzero

User metadata
Rank Newbie
Rank
Newbie

Too bad, but you still did a great job to enhance the IPX gameplay up to a few hours.
Why does the Dosbox need to emulate the IPX via TCP? Isnt it possible to somehow access a "real" IPX in Windows XP?
I dont know alot about network programming, so maybe this is totally stupid...

Reply 18 of 36, by Philzero

User metadata
Rank Newbie
Rank
Newbie

It is obviously obsolete but we still need it to play obsolete games 😀 . One can play Windows 95 games via an IPX network on XP after installing the IPX protocol. So it still remains in XP somehow and can be accessed...

Reply 19 of 36, by MiniMax

User metadata
Rank Moderator
Rank
Moderator
Philzero wrote:

Why does the Dosbox need to emulate the IPX via TCP? Isnt it possible to somehow access a "real" IPX in Windows XP?
I dont know alot about network programming, so maybe this is totally stupid...

As h-a-l-9000 said, IPX is becoming obsolete. It might still exists in Windows XP as an optional component, but in Vista you have to go through twists and turns to install IPX (as far as I know). So even if DOSBox could somehow access the IPX-stuff in Windows, it would not work for the majority of Vista users. DOSBox is also running on Linux, it is on Mac OSX, Irix, Solaris, even some PDA's, the Sony PSP - and none of those have IPX that DOSBox could tie in to. And I suspect, when Windows 7 comes out, IPX will be totally gone.

So it would be a waste of time and effort to try to use the real IPX networking. It would be better to improve the IP/UDP emulation, since that will work for a long, long time to come.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32