TROUBLESHOOT MULTIPLAYER   12-21-2023

Written and Edited By: MarkEAW

 

[ GOTO THE MAIN EAWHS PAGE ]


CONTENTS

INTRODUCTION

MULTIPLAYER CONNECTION ISSUES
Enable DirectPlay | WinNT and Win2000 | Enable TCP | Enable IPX | Firewall / Router Settings
Joining Order | Joining Issues | Disconnected Players | Rebooting Necessary | Latency and Lag
Maximum Players Limited
Advanced Connection Settings | Adjusting Sync-rates | Sync Rate Notes

 

INTRODUCTION

This document was written to get you out of issues or problems you may have with the game and multiplaying.

MULTIPLAYER CONNECTION ISSUES

This section is for known problems with EAW and Multiplayer. Much of this information is not tested by me and I currently need to re write these topics. Read at your own risk currently. :/ This information may or may not apply to you.

 

Enable DirectPlay:
DirectPlay (DPLAY) is part of the Microsoft DirectX suite and provides networking functionality to games using the DirectPlay API, like EAW. It has been declared obsolete by Microsoft, but many older popular games (EAW) use if for network games. In 2002, the networking protocol received a major overhaul with DirectX 8.2 to make it more suitable for internet play. In 2004, Microsoft deprecated DirectPlay, but DirectX 9.x still shipped with DirectPlay support.

Windows 10 has DPLAY under DX9.x built in , but you may need to enable it; Even though Microsoft's DirectPlay has been deprecated in modern Windows, when adding EAW, or running the game for the first time, WIN8.1/10 may notice you require the DirectPlay component for multiplay, and it will automatically add it. If it does not then you can enable it: For Win10 under the Control Panel>Program and Features>Turn Windows Features on or off screen, then checkmark the box for Legacy Component>DirectPlay ('on demand').

To guarantee DirectPlay compatibility, the latest version of DirectX should be installed on the computers that are used by all players who participate in the game, preferably DX9.x. (Only Win9x and WinXP need to install a separate DX installation as DX is not built into those earlier Windows OS versions).

 

 

WINNT and WIN2000:
Online flying isn't possible under Windows NT or Windows 2000...there is no workaround for DirectX when it installs on Win2000 to enable the DirectPlay networking...so there can not be any working multiplayer as EAW requires DirectPlay.

When selecting in game, multi-play and IP you will get a blank or black screen in the EAW multiplayer configuration screens...you can still move the mouse around but you might get stuck on that screen. Try to use ESC key to go back to the main menu or use Windows shortcut ALT-F4 to exit the game.

 

 

Enable TCP:
This is already on your Windows system, just that DirectPlay needs to be enabled to use it with EAW. (See above).

 

 

Enable IPX:
IPX with EAW is used for LAN play, any version or type of EAW game can benefit. Simply, you just download an IPX Wrapper Program, in particular try Solemn's IPXWrapper. You will find in on my 'Links Page'. Read the included directions. This is known to work with Win7/8/10...

 

 

Firewall / Router Settings:
To join a game the client (player) must be using DirectX 6.0 or later and communicating with a Host using DirectX 6.0 or later. All the TCP & UDP port ranges for All DirectPlay versions, is listed below. You need to open those ports in your Firewall and your Router for whichever eaw.exe your using. Example: If you have more than one location for eaw.exe , decide which one/version your going to use so the folder path matches in your Firewall. (Some Windows OS versions prompt you to allow DirectPlay through your firewall).

 

To support EAW.EXE using ALL DirectPlay6 to 9 versions, allow:
 
lobby server listening. (Initial client players to send their intention to the host to join the game.)
-(DX7 or earlier) Outbound TCP connection on port 47624, (For Host: Inbound TCP connection on port 47624)
-(DX8 or later) Outbound UDP connection on port 6073, (For Host: Inbound UDP connection on port 6073)

session setup
-(DX7 or earlier) Inbound TCP ports 2300-2400, (The Same for Host)
-(DX7 or earlier) Outbound TCP ports 2300-2400,  (The Same for Host)

transmitting game data
-(DX7 or earlier) Inbound UDP ports 2300-2400,  (The Same for Host)
-(DX7 or earlier) Outbound UDP ports 2300-2400,  (The Same for Host)
-(DX8 or later) Inbound UDP ports 2302-2400,  (The Same for Host)
-(DX8 or later) Outbound UDP ports 2302-2400,  (The Same for Host)

 

Note: The 'Microsoft DirectPlay Helper':
The DPLAY Helper will most likely need the same ports allowed...(DirectPlay does not prompt for permission from your Firewall so you have to manually enter those numbers). Typically this helper is found on your Hard Drive at Windows\System32\dpnsvr.exe.  On Windows 10 64bit, its located at Windows\systemwow64\dpnsvr.exe.
 

 

Note2: Ports and DirectPlay8 and later:
2302-2400 UDP. As you can see there are two less ports available in DirectPlay8. So when players use a DirectX lower in version number than DirectX8, there will be problems for players due to 2 ports missing in the configuration...

It was thought that perhaps its best to set up one port per range, on all systems. But apparently there is no way to force the game to use any set of particular ports from the range 2302-2400 for communication to other player machines. The problem with DirectPlay7 and DirectPlay8 is that the machines will randomly choose the ports that they will use from the range 2300-2400. This is why ALL the ports have to be mapped to a machine. This also means that all these ports must also be forwarded to the game Host machine....

EAW relies on DPLAY6 protocol and there is no real server, there is only a session Host, which becomes client to client. The Host is the one that initiates the game and then he becomes a player like any of the other players once the game has started. Each player machine talks to EVERY other player machine to communicate, and as such there are many ports that are used.

 

 

Joining Order:
There is some evidence that there is a specific order in which players should join the game when players (including the Host) are on different Windows OS types/versions. Although you do not need to have a join order when there are 3 or less players. This is because the network circle is properly established in the correct order no matter who joins in which ever order.

Originally the EAW game was made for Win95 and was thought to connect to another Win9x type machine by design. (Either way, newer Windows versions are now known to be backward compatible with the older Windows versions when talking about connecting with DPLAY).

However the joining only seems to work best (or at all) when a special arrangement order (like the ones listed below) are followed. The so called "network circle" fortunately works fine in either direction. There is no restriction as to who Hosts the game or what his version of DirectX is as long as subsequent players take their version into account...

<insert order here if necessary>


(Self Note: heavily re-write below info)
Another way to try to grasp the complex join order processes is to understand that the first to join are the ones with the same OS as the host, followed by the later OS's until there's nothing higher. Next to join are the older OS's in reversed release date order, with the oldest of these joining last. The entire circle should show the right hierarchy from any location in the circle, a lower OS before and a higher one after that location, or vice versa for reverse order. You can also count from the host OS and allow subsequent newer versions join sequentially and end with the highest old version lower then the host's version. <CONFUSED? So am I>

The result of the entire circle should be that connections start somewhere with the lowest and end somewhere with the highest version, with all other versions sequentially in between, just like a clock, clockwise or counter clockwise. Once the right order has been figured out, you should stick to that order or perhaps assign a hierarchal value to each player so you can still use the same order even when certain players aren't present.

 

 

Joining Issues:
Before hitting the join button, players should wait at least two mouse freezes so the handshake is properly established, after the 2nd freeze only a limited amount of time is available to hit join before usually the game disappears and sets itself up for a 2nd try of the handshake.

When join is hit too late or too early a black screen for that player will be the result and he needs to reboot. The other players sometimes will see a few weird tokens where the player's name should appear. All players should then leave the room to free the player that's stuck in the black screen. If they don't this player can only forcefully shutdown his machine but if they do the player will be released after a while (usually within a minute or so).

 

 

Disconnected Players: (Self Note: rewrite topic)
Sometimes players can get disconnected from the game which can lead to all kinds of problems... You really should start the game over if one player gets discounted without leaving the game properly...

Sometimes the remaining player's game itself starts screwing up often resulting in unexpected behavior, like a rocket freeze, constantly exploding planes or a direct draw surface loss also known as a garbled screen. When a plane is reported to be constantly exploding it may help if that particular player simply bails out and requests a new plane (only when re-spawn is on).

Besides that, one or more player's OS may become unstable and a reboot is necessary. Often also the router's configuration seems to screw up, no idea if this is an OS issue or not, but sometimes a new network connection can no longer be established. Best cure is to power off the computer completely and restart it. Sometimes it's also necessary to power off the router and reboot it.


This can have the same effect on all players as a connection loss and it's advised that all players reboot. The above knowledge applies to the original game versions and derivatives, including FXEXE and is based on painstakingly taking notes of every encountered event since 2000 up to 2018 with operating systems from Win98 up to Win7.

 

 

Rebooting Necessary: (Self Note: rewrite topic)
Now another problem I've become aware of is that EAW needs all players who are not running it's native DirectX version reboot after each session or having been in the EAW Session Parameter screen, i.e. after they were actually connected to the network. This is also true when returning to desktop without launching, you can't connect twice (as this disturbs the joining order hierarchy??).

To play multiple games in a row, without rebooting every time, only works with WinME and Win98. Players can even stay in the game and setup another, but with higher operating systems reboots in between each game are necessary and the joining order must be strictly followed, meaning that a network circle is created which sequentially follows the direct play versions on these computers. It makes no difference if the circle of connections is clockwise or counter clockwise, as long as the highest and lowest connection are adjacent somewhere in the circle. Obviously Win95 is the lowest in hierarchy and Win10 highest.

 

 

Latency and Lag:
Bad pings create lag which can have some strange effects in a game. If you're in mayhem and your plane keeps exploding when you spawn that's due to lag rather than a diabolical misuse of aerial mines. Sometimes you get shot when no-one seems to be aiming at you. Lag again. Planes can sometimes jitter about the sky making it impossible to shoot anything. In the worst case, your game will freeze up and you'll have to force a close.

AI in a game contributes to lag. More players in a game also raise the stakes - but an eight player sweep is great when it works. Playing over the channel is best to reduce lag. (the eaw game doesn't have to display ground objects and much terrain).

Sometimes players only get "half in" to a game. At the first page you get to when the game is launched, their plane type might not appear or they will see a different plane to the rest of the players. Lag again. When you launch, that player will probably drop.

For some reason, exiting and re-entering the rookie room sometimes cures lag problems. Not always though.

EAW is usually OK on a 56K modem. If you're having trouble, try a new ISP or look for a time of day where your conn speed is better. Better still, get cable/DSL.

 

 

Maximum Players Limited:
From more than 8 players is not truly possible. The limit is apparently set by the quality of the DirectPlay programming in the game (DirectPlay, part of DirectX, is how the game connects for multiplayer). There was some rumor that EAW at the beginning of development was to have a limit of 10 players, but it never was implemented. It may have been found that most likely only 8 players max worked consistently.

It may be possible to one day to achieve more players if the sync multiplayer code is entirely rewritten, it would take almost a complete rewrite of the DirectPlay networking features. When the game was released, the code used was an older DirectPlay version. It is from what I understand a somewhat crude code compared with newer DirectPlay versions. So most likely it would be possible that just updating and optimizing the code to the latest version would achieve enough performance gain to make the TCP/IP connections more efficient so players do not drop out of the game ("get kicked"). However this is unlikely to happen anytime soon, as its a huge job.

The problem with EAW is its limited by both the era in which it was created and the numerous teams that worked on the game (Thought two or three teams or more). The programming was basically revised so many times the game was almost never released. Since hardly any team knew the whole code and it was never built to be "upgraded" most of the coding as I understand was not flexible. Chris Coon and a few others worked on the later networking revisions and produced stability enough for it to work. But even then the project was almost abandoned.

 

 

Advanced Connection Settings:
The stability of a multiplayer game is based mostly on the Host's computer system; The better that computer's system specs, especially the Internet connection, a less chance for lost packets (which create spawning errors) and the less warping everybody else will have (from the Host freezing) and the faster the Host's frame rate will be (smoother gameplay overall, for everyone).

Chris Coon of the MPS EAW Team, had done various code optimizations throughout the exe with the official v1.2 patch, there was no real adjustment to to DX6 itself, however he did make his main focus on the network code for handling lag and warping by improving the utilized DirectPlay in DirectX6 a little bit better than the older method found in v1.0 and v1.1 to give an overall much improved networking in v1.2.

If you use a dial-up modem, it's recommended that you turn compression off in your Internet dialer. Recommend a 28.8 kps modem or faster. However, Chris Coon, One of the MPS EAW Team programmers that did the v1.0 networking said EAW was optimized or adjusted for 33k(player) and 56k(host) modems.

EAW is capable of Local area network play with IPX or TCP/IP protocol. Internet play requires a true TCP/IP connection. But when used over the internet, it has been found that it seems impossible to get a stable connection with the maximum of 8 players. Just something to keep In mind.

Even with Multiplayer Lag and Warping problems reduced in v1.2, (and a respawn / framerate bug has been fixed), Lag and Warping can still occur. So choose your multiplayer sessions wisely; The number of planes in the air will affect lag and warping, so if the host has a slow modem / connection make sure (for example) that everybody picks the same plane type (or two) to minimize the number of extra squadrons created, for both friendly and from the enemy.

 

 

Adjusting Sync-rates:
You may find that the internet connections playtime may cause issues to with the game. However, there are several settings in the EAW.INI file that can change the way the game handles different connection types and speeds. These settings are considered for use by advanced users. To find the adequate values you will need to experiment over several multi-play testing sessions of online play.

Chris Coon (a MPS EAW Team programmer) suggested since faster and improved internet is available (faster than dial up) today, that the syncrates could be sped up. Knegel (a CodeGroup Programmer) tried and tested several settings to try to avoid screen freezes on the Host game, which results in warps on the players side. He was trying to determine the best couple of sets of settings to use with the maximum number of players and AI planes possible, one for games without AI's and one for games with many AI's.

Its possible for most players/host to get stutter or jumping too when first approaching then passing a bomber formation most likely due to the amount of smoke particles. However it is noticed that performance is improved on the second run, most likely cause the game loaded all the graphic data already. He also found that warp and freezing increase when the tail gunners start to shoot from bombers due to the high bandwidth needed for each gunner and projectiles. Thus this may be another game problem, loading large amounts of game data, in effect slowing things down and effecting online performance as it loads.

He theorized while human vs human only games, that the AI update rate is not important, therefore we can slow it down and now we should be able to run a faster PlayerPlaneUpdateRate and maybe also a ClockSyncRate.
So while playing with AI's, (especially vs AI's), we should speed up the AI_PlaneUpdateRate but slow down the PlayerPlaneUpdateRate instead to speed up the connection. Doing it that way we should be-able to decrease lag.
As far as I know and have read, those tests had too many factors involved to be effective, and resulted in no improvement of gameplay over the internet.

See my 'EAW.INI Help Document' under [NETOPTION] for details on the connection settings. Look for 'Update Rates' and 'More Connection Settings'.

Default settings of Update Rates (for reference):
AI_PlaneUpdateRate=350
PlayerPlaneUpdateRate=35
ClockSyncRate=140

Default settings of More Connection Settings (for reference):
SendTimeout=50
OverflowWait=70
SendIncrease=5
ExtraPacketDiscard=10

 

 

Sync Rate Notes:
All the above settings are meant to allow optimization to a computer speeds and FPS performance, which can vary greatly among different users and their machines. Apparently they're all using the same timeframe * 1/70th a second and are intended to set each computer's action so a regular dataflow with less problems can be established between them. They all relate to send/receive buffers which can vary in size depending on the used hardware and are meant to prevent buffer overflows which will cause irregular behavior. Below I have provided a basic description used by the game but their true influence on the game are rather vague.

AI_PlaneUpdateRate :: (speed to update the AI's behavior and position, network only)
PlayerPlaneUpdateRate :: (speed to update human behavior and position)
ClockSyncRate :: (base counter/FPS controlling how much time is given to update the network)
SendTimeout :: (if dplay send call takes beyond this ms, consider overflowed)
SendIncrease :: (each overflow increase sendbias by this amount)
OverflowWait :: (upon overflow, set no-send timer to this 70ths of sec)
ExtraPacketDiscard :: (if time left till regular update < this*Sendbias, don't send this packet)

I can't give any recommendations other than to have the HOST be the one with the fastest connection and speed of computer. Personally I've never changed any of these for actual ONLINE play and haven't suffered any real problems with the default values, but perhaps others have.

There maybe a problem that perhaps the HOST doesn't transfer these changed values to the other players. Tweaking just one computer in the network (preferably the HOST) just isn't going to cut it, they all need to cope with the data in the same particular amount of time or packets will get lost and buffers could overflow. Trial and error seems to be the only way to get results as mentioned in a previous topic.

 

 

[END]