Skip to navigation

Elite on the BBC Micro and NES

The Elite multiplayer scoreboard

Running multiplayer Elite competitions with a live Econet-based scoreboard

Multiplayer Elite has been the dream of pretty much every Elite fan since 1984 - a fever dream, some might say, but it was the stuff of boyhood fantasy for me at least. So with Elite finally working over Econet, I just had to have a go at making some kind of multiplayer version of everyone's favourite 1980s space game.

As a result, not only does Elite now load over an Econet network, but it also supports multiplayer scoreboards, letting you run live competitions between groups of players on the same network. The game experience is unchanged - this isn't a multiplayer arena combat version, it's the same single-player Elite as always - but it does enable competitive Elite sessions over Econet, with live scores being shared across the network... all using nothing more than old-school, old school hardware from the 1980s.

Not only that, but if you use more modern technologies like the Pi Econet Bridge, then you can host international Elite competitions by using the Internet to connect players on multiple Econet networks from anywhere in the world. The scoreboard system supports communication across multiple Econet networks, so the sky's the limit; welcome to the future, 1980s-style!

Read on to find out more about the scoreboard system, and how to set up your very own multiplayer game of Elite over Econet.

The multiplayer scoreboard
--------------------------

The scoreboard works with all three versions of Elite over Econet (BBC Master, 6502 Second Processor and BBC Micro). It looks like this:

The multiplayer scoreboard for Elite over Econet

The scoreboard runs on any machine on the network, and players configure Elite to send live scores to that machine. Each multiplayer game can cater for up to 20 players - in the above example, six players are competing across three different Econet networks.

The following stats are shown for each player, from left to right:

  • An asterisk shows the most recently updated score.

  • "Mc" shows each player's machine type: BBC Micro ("Bb"), BBC Micro with sideways RAM ("B+"), Master ("Ma") or 6502 Second Processor ("Sp").

  • "Net" and "Stn" show each player's network and station numbers.

  • "C" shows each player's condition (white is docked, while green, yellow and red show the current danger level, just like the in-game Status Mode screen).

  • "Lgl" shows each player's legal status (clean, offender or fugitive).

  • "Player" shows each player's name.

  • "Kills" shows the number of kills each player has made, followed by the number of times that player has died; to keep things fair across the different machine types, one kill is awarded for each ship or item that is blown up, just like in the original versions of the game (so the BBC Master's fractional kills are not used).

  • "Credits" shows each player's credit balance.

The results can be ordered by kill count or credits, and you can forward the results on to other scoreboards on the network, so you can set up a chain of scoreboards for each competition, for others to follow along.

Even though each game has a maximum of 20 players, you can run multiple games on the same network at the same time. Each game uses its own port for communication, so multiple multiplayer games can run concurrently without affecting each other. The game above is running on port 100, for example.

Setting up a multiplayer competition
------------------------------------

The ElScore program is the core of the live scoreboard system. It lives in the $.EliteGame directory along with the other game binaries, so you can run the scoreboard program like this:

  CHAIN "$.EliteGame.ElScore"

If you prefer, you can copy ElScore and run it from anywhere on the fileserver, just as long as you load it from the network rather than disc.

To set up a multiplayer Elite competition, do the following:

  1. Decide on a port number (from 1 to 127) that is unique to your particular competition on the local network. You can run multiple multiplayer competitions on the same network, as long as you give each competition a unique port number for it to communicate on.
  2. Run ElScore on any machine on the network (though not on a fileserver, as this will almost certainly crash the server). Enter the port number you chose in step 1 and note the network and station numbers in the top-right corner of the scoreboard (so if you see 1.149 in the top-right corner, that's station 149 on network 1, for example). If there is no Econet bridge on the network, then the network number will be 0.
  3. In each game of Elite that wants to join the competition, press COPY then N to configure the network settings (in BBC Micro Elite, you have to be docked for this to work). You should see a screen that looks like this: The Elite over Econet configuration screen This lets you configure the game to send scores to a specific scoreboard machine. Initially only the first line will be shown, but as you work through each setting, the next one will appear. The current value of each setting is shown to the left of the question mark (all the previous values are 0 in the above example). You can either enter a new value followed by Return, or you can just press Return to leave the current value unchanged.

    Note that the Delete button doesn't work when entering values - instead of deleting, it moves you on to the next value (this screen uses Elite's number input routine, and it's fairly rudimentary). If you make a mistake, it's probably easier just to press Return to get through the form, and then start again.

    When entering the network number, you need to know whether the scoreboard machine is on the same network as the Elite game you are configuring - in other words, do they share the same network number, or is there an Econet bridge between the two machines, giving each of them a different network number? If the scoreboard machine is on the same network as the Elite game you are configuring, then you must enter a 0 for the network number; if the scoreboard machine is on the other side of a bridge, then you must enter the non-zero network number shown in the top-right corner of the scoreboard.

    Consider the example scoreboard we saw above: The multiplayer scoreboard for Elite over Econet This scoreboard is on 1.165, so it is on network 1. We would therefore enter a network number of 0 into both of the Elite games being played on network 1 (i.e. on Elyssia and Jameson's machines) and we would enter 1 into all the other Elite games in the competition (as the other four players are on networks 2 and 12).
  4. After entering the network, station and port numbers of the scoreboard machine, you can optionally press "Y" to reset the scores. This will reset the kill count, death count and credit scores being sent from a client; the figures shown after the "Reset Scores" prompt are the current kill and death counts, which should be zero if this is the first run. Following a reset, kills and deaths are zeroed and credits are reset to 100 Cr. This lets everyone in a competition reset their scores to the same starting point.
  5. Elite is now configured to start transmitting the score to the scoreboard machine, though it might take a while to appear - see below for details on how and when scores are sent.

To disable transmissions from an Elite game to the scoreboard, set the port number to 0 in that game's configuration.

Using ElScore
-------------

Here are some notes on using the scoreboard program.

  • The scoreboard can display up to 20 live scores. Any games that are configured after 20 players have already joined will be ignored.
  • In ElScore, you can toggle the sort order of the scoreboard between kills and credits by pressing "S". The title of the current sort column is shown in red.
  • You can access the main ElScore menu by pressing "M". You can change the port allocated to this scoreboard, set up forwarding (see below), or quit the program.

  • If you pause Elite with COPY and press ESCAPE, then you get taken back to the title screen. In scoreboard terms, this is counted as a death.

  • Other machines can see the latest scores by using Econet's *VIEW command, passing the scoreboard station's network address as the argument. This will display a snapshot of the scoreboard. To set up a rolling scoreboard, see the section below on forwarding to multiple scoreboards.

The debugger
------------

The ElDebug program lists Elite transmissions on the network, so you can debug connectivity issues. It lives in the $.EliteGame directory along with the other game binaries, so you can run the debugger like this:

  CHAIN "$.EliteGame.ElDebug"

As with ElScore, you can copy ElDebug and run it from anywhere on the fileserver, just as long as you load it from the network rather than disc.

The ElDebug program is similar in concept to the scoreboard, in that it shows data that is transmitted to it, but instead of showing a live scoreboard, it shows the raw data being received. This is useful for debugging, as unlike the scoreboard, it shows all of the data coming in as it's received, even if the scores haven't changed.

The debugger is typically used in a forwarding chain, as described in the next section, but you can also configure Elite to send data directly to a machine running ElDebug - you just configure Elite with the network details shown when ElDebug runs.

Forwarding to multiple scoreboards
----------------------------------

Both ElScore and ElDebug can be configured to forward all the data they receive to another machine on the network (you configure forwarding in ElScore via the main menu, and you set up forwarding in ElDebug on startup). This other machine can then run ElScore to show the live scores or ElDebug to show the raw data, and it too can forward updates onto yet another server.

This lets you set up multiple scoreboards and debuggers in an "update chain" where each machine shows the same live scores from a particular game. Because each machine is individually responsible for forwarding data to the next machine in the chain, you can have as many scoreboards and debuggers as you like without slowing down the games themselves.

Note that forwarding is an experimental feature, so your mileage may vary. If data gets lost then it won't reach any machines later on in the chain, and if one machine in the chain crashes, the scores won't update on machines further down the chain.

Instant docking
---------------

Docking with the docking computer is instant in the standard BBC Micro version of Elite over Econet, as the docking sequence from the original version has been removed in order to fit the game into the reduced amount of available memory (the other missing feature is planetary detail, so planets are plain circles). The sideways RAM version of BBC Micro Elite over Econet still has the full feature set - it's just the standard BBC Micro version that is missing the docking sequence.

To make things fair during competitions, all the other versions of Elite over Econet also support instant docking, as otherwise BBC Micro players would have a time advantage. You can activate this by pressing "C" to start the normal docking sequence, and then tapping "J" to insta-dock; this applies to the BBC Micro sideways RAM version, the 6502 Second Processor version, and the BBC Master version, so everyone can dock as quickly as each other.

Data transmissions
------------------

Finally, a note on data transmissions. Elite transmits data to the scoreboard without waiting for confirmation that the data has arrived. This means that data transmission isn't 100% reliable, but it also means that a slow network will not affect gameplay. It can therefore sometimes take a few attempts before an update reaches the scoreboard. Each transmission is only 20 bytes so the total traffic is low, but Elite doesn't spend time polling to check whether the data gets through, so this can lead to lost data (though as the game keeps sending data reasonably regularly, this isn't a big problem).

You can manually trigger a transmission in a few ways: by working through the CTRL-N menu (just tap Return to skip each option), by buying or selling something, or by launching. In space, updates are sent every 256 iterations of the main loop, which tends to be every few seconds, but it can take as long as a minute if there's a lot happening on-screen. Killing other ships, dying and receiving bounty payments also trigger transmissions.