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
This document was
written
to get you out of issues or problems you may have with the game and
multiplaying.
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]
|