Over the last few days several people have become interested in erecting a server side internet project. Here is the thread to throw around ideas, communicate, and plan. Feel free to add suggestions. Obviously this will require RedPower2 computers, so knowledge of the FORTH language is needed, but doesn't take long to learn some basic concepts if you don't know some of it already.
My mind is blown and this project sounds amazing. I cannot wait to see what if anything eventuates. I'd love an email system kewish@sgnet.tek Maybe an old BB system that we used to use in the early 90's http://en.wikipedia.org/wiki/Bulletin_board_system Edit: I'll admit that I know absolutely nothing yet about what is and isn't possible with RP2Computers. I'm sure you're all laughing at me saying "what a noob". To that I say "where's Nex, I need a beer".
Here is what I have so far. There are 16 colors of wire, which would mean 16 bits (or 2 bytes) of possible communication. Right now I am currently using the first 8 colors ( or 8 bits or 1 byte) for outgoing signal, the last 8 will be for the incoming signal. This allows for duplex communication. The only two problems I've come across are; 1. The server resources, and 2. The encoding of the data being sent. To get past the first problem we can just add a "TICKS" command to make it wait while executing a loop. I would like to send character codes using ASCII, since there is a built in function ("EMIT") to turn the codes into letters. This solves the second problem and brings up a third. How are we supposed to separate the string and convert each letter into a character code? There is no opposite to "EMIT" that I know of. Any suggestions? P.S. Try to reserve wireless redstone channels 1-16 for internet use.
Mind blown. If we have 8 digits for letters in the alphabet then we have 2^8 possible numbers, more than enough for what we need? You know what I have no idea. If you need a mindless drone look no further.
I am not that knowledgeable about FORTH. I would be happy to try and learn and would love to participate in an email system.
FORTH also needs the knowledge of BINARY so if you know BINARY a little bit that'll help. FORTH ticks me off time to time.. The internet idea seems like a very nice plan. Inb4 MinecraftInternet. Maybe use the MC intranet to make tutorials or something? Could be good for build ideas.
I think we should include a loop based mineOS more user friendly topology with a simple user interface. This would also be better because every frame of the loop we could check for incoming signals and send outgoing signals. Also it would be easier to manage the amount of ram that's left.
Well, I'd be one of the people working on it. I studied some networking, and studying programming. Well, I was thinking about similar idea in vanilla MC (yes, I'm not that bad with redstone), and RP computers will make it all 1000000 times easier. Encoding of information shouldn't matter at this moment. What we need to decide first is how to transmit it. We'll need computer systems capable of transmitting and receiving redstone(RP) pulses and interpreting them. We need to determine how fast can that happen, so it does not get affected by lag. We need to determine a speed that will not cause a server to lag. We need to figure out a way for one computer (a router, discussed later) to have multiple connections. I assume we will use star topology to prevent all collisions, so we'll need routers. We will need to design frames to send data. A frame with data will need these basic things Destination address (we'll need to determine how long addresses need to be) Source address Checksum or "frame length". Checksum would be more reliable, frame length would be easier to implement. Data itself What I suggest is combine many protocols used on real internet into one protocol. So probably we will need more stuff in the frame sequence numbers SYN-ACK flags, and maybe some other flags, like Error and Damaged frame. ports ??? would act as subprotocols too, basically deciding what program should interpret the frame. So we will need to come up with quite a lot of documentation and standards for all this to work. Then we will need hardware/software. First thing - Routers and switches. Routers would have to interpret destination address and pass on the message to the next router. or to the computers connected to it. I think a backbone of routers should be connected to switches that branch off of it, then switches would have computers connected. Routers would: have multiple connections to switches and other routers. At least 3, suggested 4. keep a full list of computer addresses connected through each port. Example - computers 10005, 62347 and 15187 are connected to port 1. So to pass a message to them it needs to be sent to port 1. Switches would: have at least 3 ports. connect computers, and keep a list of ports and corresponding addresses. have an "uplink" port to connect to the router But how would routers get those address lists? We'd need another protocol for that. So so far we'll have one to transport data and one for router communication. Every few minutes each switch would request all ports of their address. It would keep a table of ports and addresses, and send a list of all it's addresses to uplink - to the router. Router would match that list to whatever port it received it from and broadcast that message to all other ports. Other routers that recive it will match it to their ports and do the same. Switches will ignore it. We will need to ensure there's no loops in a backbone, or the message will go on forever!!!11 Computers obtaining addresses:Each computer needs to have a unique address. Using something like DHCP server would be too complicated, so I suggest that each port of a switch needs to have an address already assigned to it. This would simplify router communication too! Most likely each router will need it's own address too. I am not sure how to implement this, most likely just hard code it as each router is built. So at this point each connection to the switch would have an address, and be able to send a data that would be received by another computer, provided both computers know how to use the main protocol. What we need to do is to make a program that will take data and make it into a frame, then send it, receive a frame and make it into data. Everything is binary so far, so there's no need in any kind of encoding!!!!!! Then everyone who knows FORTH can do whatever they want with it. You can design a web browser, an e-mail program, DNS servers, and it would all run on this network!!! Now we have one big problem - it's Minecraft, not real life. Biggest issue here is cable being in unloaded chunk - this would cause a big communication issue. Possible solution - use wireless redstone transmitters/receivers right next to each computer. Would be pretty complicated and we'd soon run out of frequencies though. Other solution - ask administrations to allow chunk loaders for this project, which is very unlikely to happen. Then, building it all would not be that hard. Each connection would only need one bundled cable. Most resources would be used to make computers/routers. A lot of programming!!!!! We need to know limitations of FORTH and RP computers with memory management and multiple connections. Routers need to be the fastest computers, but all computers are about the same. We need to know how to reliably transmit a bit of data. One way, is to have one wire to be 1's and one wire to be 0's, not presence of current as 1, absence as 0. This will make it all more lag-proof, especially on bundled cables - they can't be out of sync between wires. There must be limits on how fast to transmit data!!! routers should have no limit, while switches and computers need to be slow enough to not overload the router!!! and a lot of problems that we don't know about yet!!!!! To start it all, we need support of server administration, in case we need something extraordinary, or to know how big we can be to not overload the server itself. Then we need to ensure that only one group of people is working on this project, and that they follow same standards and communicate well. We will need project managers who would maintain standards, programmers to do some coding and suggest standards to managers, wiring guys to do wiring and set up computers, etc. Then pretty much anyone can start Internet company, as long as they follow the standards. I suggest using GoogleDocs to store all standards where everyone can see them, and anyone from internet management can edit them. Biggest problem - getting the team together. We need to get together all best people from the server who have experience in PROGRAMMING, NETWORKING AND PROGRAMMING FOR NETWORKING(the last one is the most important. Anyone here work for CISCO as a programmer or something?)
I made a chat that anyone could hook up to with a copy/paste in the Sourcemod Garry's Mod using the Expression 2 language based off JavaScript. I know absolutely nothing about Forth tho. I would say InstantMessaging or Emails should be worked on first.
well it depends on how complicated we want this thing to be. We can make InstantMeassaging and Emails, but it will be 10000 times harder to add something else, or we can design a network to be able to send any kind of data and then we can write applications for that network to do pretty much anything. Btw my plan needs broadcasting added to it. This will allow to make a server-less chat program. Each new message would be broadcasted to all computers, and computers that run chat would accept those messages and display them in order they are received. So some suggestion on IP addresses. 8-bit address would give us over 200 possible addresses for computers, which I think is quite enough. That many computers in a network would lag us pretty bad anyways, so 8-bit should be enough. 8-bit addresses look like 10101010 with 1's and 0's only, or in decimal they can be represented as a number, like 170 for the same address - quite useful for applications. 00000000 should be a broadcast address, and 11111111 should be reserved too, idk what for yet
So you guys are designing an internet, based on a game played on the internet, that was also designed on the internet? Internet-ception. But in all honesty, this sounds extremely difficult but awesome at the same time
We're gonna write Minecraft on RP computers too, and set up a server to play over the Internet, and then design internet on that server. How fast does the very first Internet need to be to handle all that sh*t?
If you were to design minecraft inside of minecraft, a decent speed would be about ~1 mbps for the internet as a player
Wow, TheRussianSpy, that was a great breakdown of what we need, possibilities and limitations. Obviously you know more about programming than I do, and you're right that we need to establish a team for this. I'd happily nominate you for project manager, unless anyone has any objections. Also, to everyone else post here if you want to be a direct part of this project, and I'll start building a team in the OP. I'd like to know how you guys want to approach this, with a simple setup of a few computers in one building, or personal computers situated at your houses for a more independent approach?
I think PCs are the way to go, because of the fact that the appeal of the internet is being able to communicate with people without having to meet face-to-face. I'd be happy to help with the tedious task of laying down the wires.