An open source project for the Roblox game Bloxel that partially recreates the internet.
This repo assumes you already have a decent understanding of Bloxel's computer system and some basic programming knowledge. If not, please check the Bloxel Wiki, read up on it in the Discord, or check out Jens' videos on the topic.
This repo is still under heavy development, so please check the releases for working versions. I should also mention that all examples on the repo are based on the newest version of Interluad only, no forks or modifications (unless specified)
3 things are needed to get this working:
- Connecting lines 32 blocks apart, the max distance a port can extend. They can be decorated however the builder likes and generally follow the highways built by the HBA
- Repeater Stations to separate and handle all the connections between clients
- Multiple clients connected to Repeater Stations, referred to as Connectors in this project
Here is a simplified breakdown of the code;
- The Master Computer of the station gets sent a JSON, the first value of which is a 4 character long string
- 26 + 26 + 10 + 5 = 674 = 20,151,121 unique addresses, we're not going past 100 connected at once, let alone 20 million. We wont get into a IPv6 situation for a long time, if ever.
- The DNS System uses only "1"-"9998", no letters or special chars. Again, we wont need nearly 10k addresses.
- It then sends the JSON back down all of the wires connected to the station, eventually reaching its destination, even if it is astronomically slow.
- There is no built-in DDos protection, so the network could encounter an infinite loop if the other station send it back down the original wire.
Anything that gets sent to the Connector with a valid first value will be sent out to the rest of the world. Anything that it receives will be sent to all attached ports.
It is recommended to use a Computer instead of a Laptop to use as a Connector, as the more ports you have the better.
There is only one DNS server on the map, near the InterLuad Testing Site, and its purpose is to give out new addresses to DNS Connectors.
Using one inside a local network may be a good use case as well, explained here
The json is more-or-less completely handled by the Connector, but if you want to write your own, here is the base format;
{
"adrs":"2", // target address
"from":"1", // your address, added automatically if sending
"encrypt":{
// explained in the DHTP folder
// if sent a json with the exact value of "encrypt", it will be added here instead
},
"content":{
// if sent a json, it will be added here
// if sent a value, it will be added here in array form
}
}
On incoming packets, the whole packet will be sent out
Currently, there are 4 limitations to this project:
- Roblox's censoring system messing with most, if not all, user outputs; although this is just a fact of life on the site
- The 800 character limit but people have worked around it so its not too bad
- The 32 block limit between ports, not much of a limitation but its notable. Maybe make them look like power lines?
- Computers completely stop working when out of render distance, making repeater stations and clients with unloaded chunks between them completely useless.
Here are a few tutorials for how to build/set up certain features of InterLuad. It will get more complex the farther down you go, but it shouldnt be too bad.
This section is still a work in progress, feel free to submit a PR to edit this section. Images will be added later.
Lines are very simple, they are just splitters, 28-32 blocks apart, high off the ground, built alongside highways and usually look like low-voltage or compact transmission lines.
Stations, however, are more complex;
The connection system is simple, just getting it linked up and working is the issue, especially if you're using it as a front facing system for a local network.
First choose a connector to use, then;
Just copy-paste the contents of your connector of choice, link up ports 1 and 2, and let it run. You will be detected eventually by the DNS system, and your address logged. Its best to
You can ream more about DHTP here.
There is a test site in the works, a little east of !tp spawn3
. No waypoint or builds there as of now.
The Python file is for making sure that there are not immediate issues in the latest commit, like how many ports you are using and the length of the file. This will run automatically and can be viewed here.
If you end up passing the 800 char limit, you can try a few things;
- get rid of indentation
- reformat the code to use less chars
- if all else fails, you can make another file and use ports to talk to each other
MIT license cause no need to lock down the code, any commits will be under MIT as well