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 run Elite over more modern technologies like the PiEconetBridge, 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:


Each multiplayer game consists of up to 100 players - in this example, 25 players are competing across nine different Econet networks, with 20 players on page one and five more on page two. The results are sorted by the number of kills. The scoreboard can be run on any machine on the network, and players configure Elite to send live scores to that machine.
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 ("B"), BBC Micro with sideways RAM, B+ or B+128 ("B+"), BBC Master ("M"), 6502 Second Processor ("SP") or Archimedes ("A").
- "Station" shows each player's network and station number.
- "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 credit; press "S" to switch the sort order. Here's the same scoreboard as above, but ordered by credits instead:


The scoreboard supports up to 100 players, split across five pages with 20 scores per page. You can move between pages using the left and right arrow keys.
The scoreboard also has a menu where you can access various configurations and functions:

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 (see the section on forwarding below).
You can also delete scores from the scoreboard, which is useful if players forget to change their commander names and join as yet another JAMESON; and you can save the scores to a TSV file, which you can load into a spreadsheet for analysis.
Even though each game has a maximum of 100 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
------------------------------------
You can run the Elite scoreboard like this:
*Elite S
This runs the ElScore program, which is the core of the scoreboard system. It lives in the $.EliteGame directory along with the other game binaries, so you can also run the scoreboard program like this:
CHAIN "$.EliteGame.ElScore"
If you prefer, you can copy the ElScore file and run it from anywhere on the fileserver, just as long as you load it from the network rather than disc.
The scoreboard is designed to be run on a BBC Micro, but it does work on Archimedes, though you will need to use the CHAIN command to load it. You should run it from BASIC - it will not work properly in a Task window.
To set up a multiplayer Elite competition, do the following:
- Decide on a port number (from 1 to 255) 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. Port numbers 144-159 and 208-209 are reserved by Econet and should not be used.
- Run the scoreboard on any machine on the network (though not on the 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.
- 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:
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:This scoreboard is on 1.101, so it is on network 1. We would therefore enter a network number of 0 into all of the Elite games being played on network 1 (i.e. on Alex, Jameson, Raxxla, Rafe and Elyssia's machines) and we would enter 1 into all the other Elite games in the competition (as all the other players are on different networks).
- 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 the 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.
- 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 the scoreboard
--------------------
Here are some notes on using the scoreboard program.
- The scoreboard can display up to 100 live scores. Any games that are configured after 100 players have already joined will be ignored.
- 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 menu by pressing "M". Here you can change the port allocated to this scoreboard, set up forwarding (see the section on forwarding below), delete a score, save the scoreboard to a TSV file, or quit the program.
- To delete a score, enter the network and station number for the score you want to delete. You will be asked to confirm the deletion. If there is more than one score on the same network/station number - which may happen if a player changes their name, for example - then you will be asked about each one in turn, so you can delete the specific one you want to remove.
- To save the scoreboard, you must have write access to the directory you want to save it in. If you enter a filename then it will try to save the scoreboard in the current directory. You can also enter a full path, so to save a file in user Mark's home directory, you could enter a filename like $.Mark.ScoreTSV, or even &.ScoreTSV if your fileserver supports the & shortcut for the user directory.
- 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, though it will also slow down the scoreboard machine. A better option is to set up a rolling scoreboard using forwarding - see the section below on forwarding to multiple scoreboards.
The debugger
------------
You can run the Elite debugger like this:
*Elite D
This runs the ElDebug program, which logs, forwards and generates 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 also run the debugger like this:
CHAIN "$.EliteGame.ElDebug"
As with ElScore, you can copy the ElDebug file and run it from anywhere on the fileserver, just as long as you load it from the network rather than disc.
The debugger will work on both a BBC Micro and an Archimedes, though for the latter you will need to use the CHAIN command to load it. You can either run it from BASIC or in a Task window.
The debugger is similar in concept to the scoreboard in that it processes data that is transmitted to it, but instead of showing a live scoreboard, it lets you analyse, log or forward 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.
There are three options that you can choose from when the debugger starts up:
- Monitor and log scoreboard traffic. To monitor traffic, enter the port number on which data is being transmitted to this machine (you must have at least one machine sending data to the machine running the debugger). This will display all received data on-screen. You can also enter a filename to log data to a TSV file, and you can forward data on to one other machine.
- Forward scores to multiple machines. The debugger can be configured to receive data and transmit that data to up to five other machines on the network. This lets you create a peer-to-peer network consisting of multiple machines in a tree layout, rather than a simple straight line.
- Generate test scoreboard traffic. If you want to test score transmission over your network, then the debugger can generate test traffic to transmit to another station, for a configurable number of players. To simulate a busy game, traffic is intentionally sent out at a rapid pace.
You can press "P" to pause debugging activity at any point, and "R" to resume. Press ESCAPE to quit the debugger.
The debugger is typically used in a forwarding chain, as described in the next section.
Forwarding to multiple scoreboards
----------------------------------
Both the scoreboard and debugger can be configured to forward all the data they receive to another machine on the network (you can configure forwarding in the scoreboard via the main menu, and you set up forwarding in the debugger either when monitoring data, or by choosing to forward to multiple stations). The machines being forwarded to can then run the scoreboard to show the live scores or the debugger to show the raw data, and they too can forward updates onto yet more machines.
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, and because the debugger can forward to multiple stations at once, you can create entire tree structures of score machines on your network.
Note that forwarding is a fairly 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).
When docked, you can manually trigger a transmission in a few ways:
- Press COPY to pause and N to bring up the network menu, and step through the menu by pressing Return to skip each option without changing its value. Reaching the end of the menu will trigger a transmission.
- Buy or sell something (either cargo or equipment).
- Launch from the station.
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.
This system is not perfect, as the scoreboard might be busy and might not be able to service the transmission. Generally, though, if you wait long enough, scores will tend to update.