top | item 40672417

(no title)

Tarragon | 1 year ago

We used deterministic game play to implement multiplayer on the GB Color port of Vigilante 8.

The GBC Link Cable would pass 1 byte in each direction at the same time. It's a pair of shift registers filling each other up across the cable.

The game was locked to the GBC's frame rate. There was a lot work to update the screen that had to happen in each (effectively) V-Blank and if it was missed the smooth scrolling stuttered.

At multiplayer startup we passed our seed. To run it looked like this:

On frame A it reads the controls, and packs them into a byte and puts that in the transfer buffer. The transfer occurs while it renders frame B. At the start of frame C it has the local controls encoded in the byte sent on frame A and it has the other side's controls in the byte received in frame B.

It applies the controls to the game state and renders frame C. Local and remote controls are applied with one frame delay.

There was no frame delay of the controls for local play so if you ever lost in multi-player feel free to blame lag and me specifically if you need to.

discuss

order

HanClinto|1 year ago

I just bought this cart a few weeks ago (love the old GBC rumble carts!) and I was impressed that it had link-cable multiplayer. It's a really good game!

Thank you for the technical note on the multiplayer implementation -- that's really cool!

Tarragon|1 year ago

COOL! I'm really happy to hear that.