PBA Bowling 2001

Protocol

PBA Bowling was solved with an so called "DC module" for the IRC server,
the same used for Next Tetris and Starlancer.

Domains and Ports

  • master.gamespy.com
  • peerchat.gamespy.com
  • gpcm.gamespy.com
  • gamestats.gamespy.com

Breakdown:

1. The Dreamcast always start out with sending a "USRIP" to the IRC server
    * Pretty much, give me my IP before I register to the IRC server.
2. The response from PBA should be the clients public IP
    * In Starlancer and PBA the IP will be hashed and used in the channel name. 
3. The DC sends NICK, USER
    * USER will contain a hashed IP and the gamespy id
    * The hashed IP is used between the DC's
4. Creating a game room
    * A game room can be seen as a IRC channel.
    * The IRC channel name contains the hashed IP of the creator 
       and therefore the channel name is unique.
5. Joining a game room
    * Master server sends the stored IP:6500 of the client
       that are active and has created a game room.
    * The joining client sends a status UDP to IP:6500
    * When the joining client gets a response the game room should be displayed
    * When the client joins the game room, the client DC hashes the IP received from the Master Server
       to be able to resolve the IRC channel name to join.
6. Startng a game
    * When starting a game, the clients will do a IRC "/whois" on the other client(s)
    * The DC receives the USER-information containing the hashed IP of the client(s)
    * The custom UDP ping will then be used towards the decoded IP(s)

Note:
The IRC servers used today have restrictions that breaks PBA Bowling to work.
Two major limitations needs to be adjusted before compiling your own IRC server:

1. The length of the USER needs to be increased to 20+ chars
2. Allow the char '!' which nowadays are not allowed in the USER string.

Needed by the player

  • Open TCP/UDP 2300-2400 (actual gameplay)
  • Open TCP 47624 (gameplay handshake)
  • Open UDP 6500 (only needed when hosting a game)
  • Open UDP 13139 (Used for custom UDP ping)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License