The English Channel in the metaverse
Creating a 3D, real-time, ocean environment in Roblox
This is the first in a series of experiments showcasing industrial applications of the metaverse, built as part of a talk given to the lovely people at Digi2al.
Experience MetaChannel for yourself on Roblox

Understand what’s happening at sea

The English Channel is one of the busiest shipping lanes in the world. If you want to understand what’s going on in the channel - for safety, security, or supply chain reasons - there are several data sources that you might draw upon:

The typical way to display this data is on a two dimensional map, as shown in the Marine Traffic example below. Displaying positional data on a two dimensional map has been the established norm for centuries. But there are some problems with this kind of visualisation.

AIS data from MarineTraffic AIS data from Marine Traffic

2D visuals; 3D world

One of the limitations of a two dimensional map is that it can be hard to build a visual picture of what it’s actually like in the environment you’re representing. For a start, you’re limited to what you can actually represent on a two dimensional surface. If you look at the Marine Traffic map above, there are some insights that you might be able to draw, but the fundamental question of “what’s going on in the channel” is still unanswered.

This can have serious implications when you need to understand conditions and traffic quickly and don’t have time to wade through data to build a mental picture of the current environment. Processing several visibility readings from various buoys around the channel is much more mentally challenging than looking at a 3D simulation of the same data - as shown below.

500m visibility
5km visibility

The MetaChannel

What if you could view that same Marine Traffic data in a 3D, metaverse version of the Channel? How might it help your understanding of what’s going on? These questions - and the opportunity to speak about them with lovely people at Digi2al - led to the creation of MetaChannel, a 3D, real-time, persistent, view of the English Channel. The platform used to create the MetaChannel was Roblox - a service that’s great for creating quick proof of concept worlds that can be easily accessed.

Mapping the channel

The first challenge when approaching this project was the sheer size of the physical space involved. The sea is big. Even the English Channel, at its narrowest point, is 18 nautical miles (34km) wide.

Roblox’s typical map size is 4.5km square, and generating terrain larger than 4.5km x 4.5km crashes the world before you’ve even tried to load it. It turns out that generating huge amounts of empty sea is very computational expensive.

This presented a problem: if we can only have 4.5km of sea in our world, is there any point?

4.5km isn’t a large area 4.5km isn’t a large area to map

Procedural generation

Rather than pre-generating vast empty swathes of sea, what if the water could be generated in real time around users, using procedural generation? This turned out to be a much more sensible approach, allowing a theoretically infinite map size, as most of it would be empty space.

Sea appearing on the horizon

The only drawback is if you’re moving through the sea at high speeds you can just about see the water being generated beyond the horizon.

Sourcing & processing the data

As mentioned, every vessel above a certain size is required to relay their position in real-time via AIS. Services like MarineTraffic aggregate AIS data using a combination of satellites and terrestrial base stations, and then create maps of this data.

Whilst MarineTraffic is easy to access in map form, it’s difficult to get access to the raw data. The platform does offer an API, but it’s prohibitively expensive (an issue with pretty much all real time maritime data). A service called Datalastic offers an API for a much more reasonable €99/month, and just €9 for a 2 week trial. Their /api/v0/vessel_inradius endpoint “allows you to scan an area in the sea or ocean to see all the ships in your selected area” - perfect for our purposes.

A center latitude/longitude point of 51.0064931,1.5371778 and an 8 nautical mile radius captures almost all of the channel - and avoids vessels docked at port.

An 8nm radius around a point An 8 nautical mile radius around a central lat/lng

The data we get back includes all the vessels within the bounding box, with information about the position and destination. This is the raw data that can be used to power our ocean world. For example, here’s the JSON object for the Isle of Inishmore.

	{
			"uuid": "0997b8d5-ca4e-7f0a-2462-e75ed95dc767",
			"name": "ISLE OF INISHMORE",
			"mmsi": "209093000",
			"imo": "9142605",
			"country_iso": "CY",
			"type": "Passenger",
			"type_specific": "Ro-Ro or Passenger Ship",
			"lat": 51.0205,
			"lon": 1.518772,
			"speed": 19,
			"course": 119,
			"heading": 115,
			"destination": "CALAIS",
	}

Mapping coordinates in the metaverse

The world is round, and our ocean world is flat. In order to plot the locations of vessels in relation to one another, each vessel’s latitude and longitude needs to be converted to X, Y, Z coordinates. Luckily we have the initial latitude and longitude 51.0064931,1.5371778 that will serve as the center point of our world - mapped to (0,0) Roblox coordinates.

If we work out the distance of each vessel from this central point - on both axis (the vertical Y coordinate of all vessels remains at sea level) - we’ll be able to map them in relation to one another.

The distance between each degree of latitude remains broadly similar regardless of where you are on earth (varying from 110.567km at the equator to 111.699km at the poles). Assuming an average distance of 111km between each degree of latitude, we can calculate the distance between the centre point of the map and the vessel in question.

Roblox uses the programming language Lua, and the Lua code to compute this is:

	local centerLat = 51.0064931
	local vesselLat = 51.0205
	local relativePositionX = (centerLat - vesselLat) * 111

In our example vessel Isle of Inishmore is -2.06km on the X axis from the centre point. Unfortunately Roblox doesn’t use km as a measure, it uses studs. There’s a lot of debate in the Roblox community about the accurate conversion of meters to studs, but the broad agreement is that 1km is equal to 3571 studs. So the X coordinate for our map of this vessel would be -2.06 * 3571 = -7,356.26.

The distance between each degree of longitude changes depending on where you are on earth. At the equator the distance is 111km, and at the poles it’s 0km. Luckily because in our case each vessel is positioned at a roughly similar longitude, we can assume that the distance in our map will remain broadly similar.

At our center point, each degree of longitude is 70.04km (calculated using a formula from Wikipedia). For the Isle of Inishmore, the distance from the centre point is -1.538km - or -5,493 in studs.

Visualising the vessel

We now have a position for the vessel, but we don’t have a way to represent it. Luckily as part of the AIS data each vessel provides a “type”. This allows us to select an appropriate 3D model. In the Channel, the most common vessel types are cargo, tanker, SAR (search and rescue), tug, fishing and passenger. One of the benefits of Roblox is that is has a wide selection of free user-generated 3D models.

Here are the 3D (rough) equivalents of these vessel types:

Vessel models ready to be cloned Vessel models ready to be cloned. From left to right: SAR, Tanker, Cargo, Passenger, Tug, Fishing

For each entity, we’ll select the 3D model that is most appropriate. In the case of Isle of Inishmore, it’s a passenger ship, so at coordinates (-7,356.26, -5,493) we’ll clone the passenger ferry model. When our world loads, we’ll repeat this process for all of the vessels, populating our world with vessels at accurate positions.

We may have vessels in place, but we need a way to explore this world - and to actually find them. As mentioned before, the sea is big. The MarineTraffic map makes it look as if the vessels in the channel would be easily discoverable, but even in the heavily modded speed boat below (with speeds of up to 500km/hr), and good visibility, you can travel for hours without discovering a single vessel.

A speed boat exploring the channel A speed boat exploring the channel

Instead of having to travel for hours, it might be useful to move instantly between the vessels in the channel. We know the coordinates of each vessel so we can teleport the user between them. Ideally we don’t just want to drop someone in the water, though, so some sort of platform next to each vessel would make sense.

The observation deck The observation deck with data and transport

The need for a platform near each vessel offered an opportunity to design a physical representation of some of the other data points that we know about the vessel, as well as a speed boat and a helicopter to take a closer look at the vessel in question.

Finally, this world is a social one, so benches near the data allows for conversation and discussion.

The observation deck The observation deck with data, seats and transport

Current Limitations

Though MetaChannel offers a certain level of accuracy, there are some significant current limitations:

3D Modelling

All vessels in our world are represented by just six 3D models. Though the rough vessel type can be discerned from the model, that is where the similarities stop.

The real INDI vs the 3D model version The real INDI vs the 3D model version

However, there are two ways that in the near future this issue might be addressed.

Orientation and speed

The vessels in our world are all static. The complexity introduced with moving vessels meant that it was out of scope for this project, but the data is available to add to a future version. The vessels are also all in the same orientation; again, heading information is available to rotate the vessels to their correct bearing.

Cost of data

AIS data is prohibitively expensive and so the real-time component of this world can only be live for a few weeks.

Weather Conditions

The weather in our world is a perpetual balmy summers day, with calm seas and good visibility, whereas the weather in the real English Channel changes dramatically - often hour to hour.

There are lots of APIs that could be used to update the weather in real time (e.g OpenWeather). But perhaps more excitingly there are a number of marine observation stations (e.g Gascogne) which provide real-time readings of visibility, wave height and wave period. Using just a few of these observation stations could give an accurate picture of channel conditions in our world.

An example data buoy An example data buoy being set up

Data accuracy

AIS data isn’t checked for authenticity, and vessels sometimes report false locations. This can be for a variety of reasons - everything from a misconfigured sensor to deliberate tampering. In addition, only larger vessels tend to report their position via AIS.

In our world, AIS data is only loaded once, when the world loads. This is to prevent too many calls of the API, but it does mean that the data becomes stale almost instantly. A call to the API every few minutes would solve this issue and give a much more accurate view.

Windfarms & buoys

At the moment only six types of vessel are represented - but there are lots of other things in the channel: buoys, wind farms and more. These could be added to future versions.

These are not ships These are not ships, but they are in the channel

Shore

Our world has no shore. This is partly because it’s much easier to generate infinite sea compared to a varied coastline. There are tools that can created 3D versions of freely available maps, but these tend to be quite inaccurate. The rendering below has the correct height of the White Cliffs of Dover but they’re not very… white.

Rendering coastline is much harder than sea Rendering coastline is much harder than sea

The other problem with rendering coastline of any sort is that it becomes very computationally expensive. Unable to procedurally generate the terrain around you, we’d be back to picking a 4.5km x 4.5km stretch of coastline.

Conclusion & next steps

The creation of social 3D virtual worlds, powered by live data, opens up a number of new possibilities to address important challenges in industry. Despite the limitations of the project documented about, there are some exciting further applications of something like MetaChannel:

Playing back conditions

What did the channel look like yesterday? Last month? Two years ago? Imagine being able to fly over the channel exactly as it looked many months or years in the past, to answer important strategic questions or to follow a hunch. Being in a metaverse environment complete with historical weather conditions, vessel positions and more is the closet thing that we have to time travel.

Triangulating data sources for anomaly detection & insight

2D data visualisations and graphs make it easier for humans to spot anomalies and outliers in data. 3D environments take this detection a step further. By having multiple data sets informing different elements of the world: weather, ocean conditions, navigation and more, it could become easier to spot anomalies and uncover insight.

Making strategic decisions

Imagine making decisions, or having a meeting, in a live environment instead of in a video conference with a slide deck. Being able to transport several people, all physically separated, into one single persistent environment, could change the way that decisions are made.

Training in live environments

The RAF, Army and many other organisations are already experimenting with training in virtual reality. Combining these simulations with live data in synthetic environments offers exciting new opportunities to create dynamic and true to life training scenarios.

Wargaming

Simulating scenarios in true to life environments, with live data, is already being trialed by UK MOD as well as other organisations around the world. However, these are currently closed - and typically military - experiences. Wargaming, despite its name, doesn’t need to have a defense comportment. Something like MetaChannel may offer opportunities to experiment with scenarios around supply chain logistics and adverse weather.

The best way to understand the metaverse is to experience it for yourself.
Find out more about our Experience the Metaverse crash course.