View Rob Ashton's profile on LinkedIn
Black and White - Phoenix

On the 27th July 2005, Lionhead shut off the online servers for Black and White after nearly 5 years of their free online service. I'd never really played BW online before properly, so I organised a massive get together with the community on the final day of service and we all had a few final games together

It was a great, fantastic night and I felt the loss once the servers were gone, it was nice to be able to play online with my 'internet' friends when I wanted to, so I opened up Ethereal and began to work out the network protocol for a BW Lan gaming session.

On the 1st August 2005, I released a new application to the Lionhead Community. Black and White Phoenix :: Multiplayer Reborn - and for a few weeks I was playing it nearly constantly with a lot of people. Since then, in the 3 months after releasing it I had nearly 2000 downloads of the software, making it quite the success.

How it works:

A Phoenix Client takes the UDP broadcasts that Black and White sends out to seek other clients, modifies them and sends them on to other Phoenix Clients connected to a Phoenix Server. This is the Discovery Phase, and all going well, all the Clients can now see each other in the BW Global Lobby

  • BW Client 1 -> Broadcasts
  • Phoenix Client 1 -> Receives -> Phoenix Server -> Phoenix Client n
  • Phoenix Client n -> Broadcasts
  • BW Client n -> Receives

When a BW Client nominates another BW Client to become a BW Server, A connection is made from each BW Client to the Phoenix Client because of the modified UDP packets, and that Phoenix Client then forwards the connect on to the Phoenix Client on the nominated BW Servers machine. The Phoenix Client there then connects to the BW Server. This is the Chat Session.

At this point, the connection looks something like this

  • BW Client->Phoenix Client------\
  • BW Client->Phoenix Client---------> Phoenix Client->BW Server
  • BW Client->Phoenix Client------/

This means of course that during the chat session, the Phoenix Client on the BW Server end can modify the packets being sent to the BW Client and can therefore instruct each BW Client to connect to the real world IP of the BW server when the Game Session starts

When the game session starts, a direct connection is made between all the BW Clients and the BW Server. Because of this, no forwarding is taking place and the gaming is completely lag free providing the users have proper internet connections

  • BW Client -------\
  • BW Client -----------> BW Server
  • BW Client -------/

The source code for this project is lost, although a newer unfinished version exists on my hard drive. If that version is ever finished (Probably an hours work) both the new application and source will be released.

Source code is still however available on request.

BW Phoenix is written in C#.NET and as such requires the .NET Framework 2.0 in order to run

Downloads

Copyright © Rob Ashton 2007

Powered by Rob Ashton's Splendifirous Portfolio Manager. Not Available In Shops.