Supporting Third-Party Game Services

Last updated: 22 September 98

Games developed with Anet normally run either standalone or connected to the Anet game servers. However, the marketplace dictates that it be possible to enable games to use third party game networking services. This allows the game to reach the widest audience, and potentially allows for revenue from subscription-oriented game networking services.

Third-party networks, such as Kali, that perform IPX emulation can be used without any special support; the user simply selects IPX. However, the integration and performance this provides leave something to be desired. The remainder of this document will not discuss IPX emulation.

Anet now directly supports three third-party gaming networks under Win95: Heat, MPlayer, and Microsoft Game Zone.

Also, an alpha driver for Dwango is included in the SDK.

Anet's third-party network support has two parts:

  1. a command-line launcher program named anetdrop.exe, common to all third-party networks, plus
  2. if the third-party network is not IP-based, a wrapper transport dll specific to each third-party network; currently, wheat.dll and wmpath.dll.
These files are in the win\bin and win\dll folders of the Anet SDK.

Wrapper Transport DLL's

If a 3rd party game network supports IPX emulation or can provide the IP addresses of the players on the commandline when launching, anetdrop.exe can be used with the existing wipx2.dll or winets2.dll drivers.

3rd party game networks that have their own game networking API can usually be supported by writing a wrapper transport DLL. Example sources can be obtained from Dan Kegel. Wrappers have been written for Heat and MPlayer under Win95, and Dwango under DOS.

This option does allow for primitive score reporting to the game network, and is fairly easy to implement.

Supporting Anetdrop

Games must be written specifically to support Anetdrop. They should check for a commandline switch, e.g. -drop; if it is present, they call dpCreate(&dp, NULL, NULL, "freeze.dat"), use dpEnumPlayers() or dpRequestObjectDeltas() to see whether they are host or client, and then skip their player marshalling screen and proceed directly to their game setup screen.

When the game is installed, a special text file named anet.inf must go into the game directory. It contains, among other things, the name of the executable anetdrop will launch, and a few parameters, such as the session type to use for that game.

Using Anetdrop

Anetdrop can be used with any Anet transport and any appropriately enabled game. An example program, chat.exe, is included with the Anet SDK, in win\bin\chat. Anetdrop is run by the 3rd party network game browser, which uses commandline parameters to tell anetdrop what to do.

Run anetdrop once without any commandline parameters to get a list of the legal parameters. Here is the current list:

-n=path            	# which transport to use, e.g. -n=anet/winets2.dll
-h                 	# host a session
-m=maxplayers      	# Max number of players in session
-j                 	# join a session
-J=16              	# join any internet session (16=lobby, 0=game)
-s=mygame          	# session name
-p=myname          	# player name
-a=206.43.1.0      	# address (of host; used when joining if no broadcast)
-g=server_name  	# Name of the server to connect to
-v               	# Allow player variables
-w                 	# Don't exit until command does; return its exit code.
-x                 	# Let launched program init comm system
-b=9600            	# Baud rate
-c=0               	# COM port to use (0=COM1)
-f=5555555        	# Phone number to dial when using modem, omit to answer
-i=ATZ             	# Modem initialization string
-d=1               	# Dial method (1=Tone, 0=Pulse)
-o=206.41.1.1;206.41.1.2 # open connections to the list of addresses
-o=@ADDRESSFILE          # open connections to the address in the file ADDRESSFILE
-k                 	# Disables the dialog boxes

To get used to anetdrop without worrying about funny drivers, you can try it out first with one of the standard drivers, e.g. the loopback driver. Try the following (assuming you've installed the Anet SDK to \anet):

cd \anet\win\bin\chat
copy ..\..\dll\*.dll
..\anetdrop -h -p=player1 -n=wloop2.dll
This should start one chat program and cause it to host a session. Start another one and have it join the session by typing
..\anetdrop -j -p=player2 -n=wloop2.dll
You should be able to chat back and forth. (The loopback driver is kinda slow, as is the chat program's keyboard handling, so don't worry if chat seems sluggish.) Press ^D to quit.

Next, try it with the Internet driver. This time, specify a session name, too:

..\anetdrop -h -s=testChat -p=player1 -n=winets2.dll -g=california12.activision.com
..\anetdrop -j -s=testChat -p=player2 -n=winets2.dll -g=california12.activision.com
You should still be able to chat. Plus, if you peek at the server using
gtest -n=winets2.dll -p=california12.activision.com
species 65
sessions
you should be able to see the named session. (65 is the session type given in win\bin\chat\anet.inf.)

Running Anetdrop with MPlayer

Here are some notes on testing games on MPlayer.

  1. Contact your game's liason at MPlayer for a game id for your game, and for test accounts on MPlayer. Ask them to set up a single UDP GULP named ANET_UDP; this is the GULP the WMpath2.dll driver uses to communicate. (The default is a TCP gulp, but you don't want that; it slows down performance noticably, and causes jerkiness.)
  2. Make sure that you have installed the game and the Mplayer Client software. These instructions assume that you've installed the game in the C:\DarkReign\ directory. You might also want to read through the MPlayer SDK documentation to understand their architecture.
  3. This step would normally be done by Mplayer Automatically.
    You will need to make some additions to the Mplayer section of the registry. You will need to traverse the folders HKey_LOCAL_MACHINE -> SOFTWARE -> Mpath -> Mplayer -> Manifest. You will need to select EDIT -> New -> Key. If your game's MPlayer game id were 176, the key would be called "GAME176". Open the newly created Key and add the following string values (modified for your game):
    BMP                    leave blank
    Cmdline                "-n:wmpath2.dll -j -x -v -w"
    Config                 leave blank  (or give full path of game config DLL)
    EXE                    "c:\DarkReign\anetdrop.exe"
    Help                   leave blank
    Path                   "C:\DarkReign\"
    PWD                    "C:\DarkReign\"
    Title                  "DarkReign"
    Type                   "0"
    URL                    leave blank
    Version                "Beta Version"
    
    The Cmdline value contains the parameters passed to anetdrop.
  4. At this point, you should be configured to launch a game on Mplayer. Please remember that the previous instructions assume that you installed Mplayer in the default directory and the game is in the "C:\DarkReign\" directory. If not, please make sure the Registry entries reflect this. I'm attaching a file called "DarkReign.mpi". When you double-click on this file, you should cause Mplayer to start up, validate, and ask you if you want to create a new account or logon. Select Logon.
  5. The game's Game lobby is usually a restricted lobby which means that only specific accounts can logon to Mplayer and enter this game Lobby. Use the accounts MPlayer gave you in step 1 above for testing.
  6. Once you've logged into Mplayer, you should arrive in the game's Game Lobby. At this point, you will receive a message indicating that special files have been downloaded that will allow you to test the game in MPlayer's Developer Universe. You should receive two shortcuts on your Windows 95 Desktop. By clicking on the "Developer Universe" shortcut icon, Mplayer will startup, you should logon, and you will eventually make it to MPlayer's Main menu.
  7. While logged on to the Mplayer Developer Universe, double click on the DarkReign.MPI file on your desktop. This will take you to the game's Game Lobby within the MPlayer Developer Universe.
  8. Once you've logged into Mplayer, you should arrive in the game's Game Lobby. Select Create Room and have all other players meet in this room. Player with the "M" is the Moderator of the game. Once everyone has clicked "Ready To Play", have the Moderator launch the game by pressing the Launch button.
  9. If you have created a Game Configuration DLL, the Config value in the registry (see above) should be set to full path of the DLL, e.g. "C:\DarkReign\MpDRConfig.dll". When in a game room, select Settings icon in the upper right area of the User Interface to verify that the moderator can change the game setting and launch into the appropriate scenario/settings. Verify that the non-moderators can see these game settings.
  10. Play the game....

Running Anetdrop with Microsoft Game Zone

Here are some notes on testing games on MS Game Zone.

  1. Games on the Microsoft Game Zone require that each game is incorporated into the Game Zone software package. You will need to contact the Game Zone for this to occur. They will require some artwork to be used for your game.
  2. The Game Zone tests two registry keys to determine if the game is installed. They require the path to your game and the version number of the game. Keys with the names "AppPath" and "Version" are currently being used, so it would be nice to remain consistent. It is expected that these keys are present in the release version of your product.
  3. All Anet games on Game Zone currently use manual IP and use the winets2 driver.
  4. Since the game is being launched from the command line using anetdrop, the anet.inf file will need to be correctly configured.
  5. Your will need to supply the Game Zone with the command lines that launch your game for both the host and the clients. Game Zone can provide the following constants to the command line.
    %n  - Name of the player
    %p? - Address if player number ? where 0 is always the host
    %c - Number of players in the session
    
    A typical command line for the host is:
    anetdrop -n=winets2.dll -h -n=%c -p=%n -o=%p0;%p1;%p2;%p3;%p4;%p5;%p6;%p7
    
    Whilst the clients use a slightly modified command line:
    anetdrop -n=winets2.dll -J=0 -p=%n -a=%p0 -o=%p0;%p1;%p2;%p3;%p4;%p5;%p6;%p7
    
    Additional paramaters may be required such as -x if your application has a lengthy delay before initializing the networking and -v if your appication requires player variables. Refer to the anetdrop options for more information.
  6. The Game Zone will setup your game on Retail Test until it is ready for release. Your game won't actually be located in the list of games available for play, you will need to obtain the exact URL from your Game Zone contact.
  7. Create some test user accounts and then enter the session which the Zone has provided. From here you should be able to chat to other players, create games and join games.
  8. Once a game has been created and other players have joined it, the host launched the game... It is at this point that the anetdrop command lines are executed.
  9. Play the Game...

Back to top
Dan Kegel
Copyright 1995-2001 Activision