Keeping a roblox multiplayer server always online? Even with no players in the server

If datastores fail, its gone, ur stuff is gone.

And yes im kinda against datastores tho, since the maps could be really large and datastores could easily fail with the amount of parts spawned or changed by players.

It’s do-able locally with a port-forwarded-access server (would allow for better pre-encoding for space storage if you had a lower level language before pushing to the database), and he seems to have no regard for his parent’s electrical cost, so this is the best alternative.

I wont port forward stuff, it shouldnt be needed tho.

If you want to store a material for example, put it in an enumerator:

local Materials = {
   Cobblestone = {--[[Cobblestone properties]]}
};
-- You would be saving "Materials.Cobblestone" instead of 
-- {Material = Enum.Material.Cobblestone, BrickColor = BrickColor.new("Green")} -- (probably wrong but just an example)

The bandwidth though. I get charged $10 for every 50GB block after 1,200 GBs. So most definitely gonna be more combined with that electrical cost depending on your internet provider.

In the worst case scenario they will terminate service.

And I also wont pay for stuff as I said

Why not? Only your server would ever have to see your IP, the only other alternative is DataStore. Portforwarding is free.

I know port forwarding is free, but my dad wont allow me to port forward stuff since the website for the router says at the port forwarding part that it will get acces to mail clients and stuff like that so thats why he wont allow me to port forward.

Not sure what this is supposed to mean, as long as you don’t inform anyone of your IP and only open the correct ports, your information and activity is entirely safe.

Well that wont change my dad’s mind

Not sure I understand this, but port forwarding simply makes a local address discoverable on a specific port for your public facing IP. There’s probably more technical terms for that though. Perhaps there’s more to it and you can look into this more and discuss with your dad your plans?

Well first of all I wasnt thinking of port forwarding at all, but about that bot u talked about, how would that sort of work?

Have fun with DataStores then.

1 Like

oh noes, that will be hell, well theres no other thing to do then without port forwarding and paying, so i guess i will have to choose the path of hell

I never mentioned a bot. But mainly you know what type of servers you want. So you’d just save the associated data with a named server. Then load a manual list of servers.

It kind of won’t work with Roblox’s automatic servers. Instead of Roblox creating a server for you. Think of it as you creating a server for yourself. Like an MMORPG usually have named worlds. Each world is a server and your data is associated with only that server.

The limitations are that you can only have as many servers as you have names. So when roblox create you a server automatically and you run out of names, you would need to handle a case like this otherwise you’d end up with 2 zulus, and 3 bravos. (Zulu and Bravo being a name for a server instance).

And that would defeat the purpose of the system in the first place.

1 Like

sorry i replied to the wrong person, rigid had the idea for a bot

But I guess I will have to use datastores, or no saving at all

How would bots be so reliable? I mean, one server shutdown and its over, no matter how many bots were playing the game. Imagine if some accident happens with roblox servers or they force your server to shutdown for a roblox update. Datastores would be way more reliable, you just need to know how to optimize data usage.
I was making a survival game like minecraft which was saveable, if you want it I can pass the idea to save that “server”, i even already applied it and it worked:

  • I used a perlin noise generator with seeds. Pretty basic but was good looking. You can dig and place blocks.
  • To save, I made a table like this: {seed=seednumber,Blocks={…}}
  • Now comes the compression stuff. You might already know but each character is 1 byte, and you can have 4mbs (4.000.000 bytes). To start compressing, you dont want to save the world generated, that would be a huge waste of data and even impossible depending of how much you explored. Instead, you will save the world changes. (Ex: save the position you dug a block at x y z)
  • To save even more data, you can iterate over your chunks to check changes that repeat on the z axis, than on x axiz, and finally on y axis. With those iterations you will end up saving only two positions, marking each corner of the world changes that repeated (Ex: you made a wood wall which is 5x5x1, instead of saving 5x5x2=50 positions, you save only two, on each corner of the wall).
  • Make a dictionary so instead of saving blocks and mined stuff by name (Ex: woodblock,pos1:2,5,2,pos2:4,5,2) you save it as a numberid {0=Air,1=Wood,2=Stone,etc}.
  • There is even more compression you could do but I might not be that good at explaining it, but look how much you would save of data just for doing these steps i told you. If you were to mine a 4x4 tunnel going straight for 1000 blocks, you would have to save 16000 times without any compression, whereas if you were to compress it to just two corners of the data, you would save just once. So instead of making ‘wood,pos:x,y,z;’ 16000 times, which would be already 240 kbytes stored (6% of the datastore key limit), you would save ‘1,pos1:x,y,z,pos2:x,y,z’ once, resulting in just 23 bytes, or 0,000575% data usage). That’s about 410million times less data you used for the same tunnel you wanted to save.

Note this is a method which I copied from someone, it had a name but I forgot what it was, you can try searching it up.

3 Likes