ID:1860880
 
Applies to:Dream Seeker
Status: Open

Issue hasn't been assigned a status value.
Hello and wondering how possible this is. I been running tests with projects about 1 to 2 gig in size for BYOND. The problem I am having besides the number of people telling me BYOND is not used for this, is that my players had an issue with having to download the game about every time they logged on because to refresh resources.

Mostly my question and request is about, is to change the verification of the program so it would install from the computer if put in like the cashe folder or the install location. This way the resources would check against the update version to the current version on the computer.

Just having issues with my project size limited by the size of what my player base can download. While this works for the web apps and that it doesn't seem to work for larger scale projects I have been working on.

In short, just looking at making it so BYOND only has to download resources once or on updates.
BYOND already caches resources, if you're pushing more data into the cache than it is designed to hold, however, will cause it to fail. There are limits there for a good reason.

Whoever is telling you that a game of that size is way outside of the scope of what BYOND should be doing are quite correct. Even the best-looking high-end games that are being done in 2D these days are 500MB at best, and on BYOND it's rare to see anything over 50MB. You should probably look into scaling down what you're doing or find an engine that gives you more control over how your resources are delivered to players.
I believe that any changes to the .rsc file cause a full download of that said file again for the client, other resources loading in different ways, images/sounds can be "updated" or are not downloaded if nothing has changed. That is if those resources are outside of the .rsc.

Ideally with a game that size it should not be changed regularly. Think WoW or other standalone games where they update once per month or so with big changelogs etc.

If you're constantly updating your game you need to make the player aware that updating the resources is a constant thing like a BETA release and it is to be expected to redownload resources on any change.

Otherwise complete your game/bugs to a state where it is stable and monthly maintenance is only needed, this time frame will allow you to add a bunch of bug fixes and additional content which will keep the users happy.

Obviously fixing bugs is a top concern for most developers if these bugs are not exploitable they should be packaged up within that timeframe also.

But that's just my outlook on the way it is now.

Expanding / updatable resources without redownloading the core is going to be impossible in this case the way it's all set up will not allow it unless this is change, which I doubt it will be just to the pure fact that it's been this way for over 15 years.
See the problem is this, I released a couple test projects that was about 1.5 gigs in size. This was just for seeing if a larger project could happen.

It was mostly a mix of art, music, and other files for the test trying to see if I could make a 2D game up to the more standard level expected like on the DS or so.

The problem was not the game running but that every time the players would log in, they would have to download resources. Being about an hour between crashes or logging off.

So every time someone would log off, Byond would re-download the .rsc even though the version released was final with no changes.

Mostly why I am bringing this up is Byond is great for what I have seen but looking at something like a larger MMO scope in SNES or NES style is becoming issue prone why I put my project on halt for the last year and focused on RP Unlimited here.
You can make quite a great looking robust game under 100MB using BYOND, even the largest game on BYOND (SS13) is under that size. You're simply not going to get away with storing files that big in a cache shared by multiple games. It would be hell to load that giant file up any time you join a game just to see if you have the resources for that game.
Whether a not a game should be taking up gigabytes of space is irrelevant to the conversation at hand. We shouldn't fixate on that.

There is an inherent problem with DreamSeeker/BYOND; it seems to randomly want to redownload game resources despite the game never having been recompiled. I've experienced this many times with other games, especially SS13 which has probably the bulkiest files for any BYOND game. It's extremely irritating for the playerbase.
Changing the .rsc doesn't cause a full re-download. Dream Seeker is given a list of resources by checksum, and it asks the server to send over a package of the specific resources it doesn't have.
Then why is the re-downloading coming up? I've had more then one report of this, just looking at how this works and seeing if I can fix it on my end as well.
In response to Lummox JR
Lummox JR wrote:
Changing the .rsc doesn't cause a full re-download. Dream Seeker is given a list of resources by checksum, and it asks the server to send over a package of the specific resources it doesn't have.

Really? It's been like that for years for me, any changes forces a full download..
I wonder if large projects are merely stressing the cache limits. But I can look into that.
I've never experienced a full redownload. Only a forced download of updated/new resources and only new resources that are added from previous playing. Like if a song/image was output after I log out and I log back into the server after.
Thanks for the help Lummox JR, please get back to me on that. I would like to continue the project.
I've only ever had the redownload happen when my overall cache reaches a certain size, but yeah, I've had it randomly happen with larger games out of the blue too, so there's probably some merit to them messing things up.

But 1-2GB for a BYOND game is still nuts, that's gonna cause more issues beyond rsc. Your server is going to be generating a TON of bandwidth usage.
Counting on it, More when I get the project showable and running, I'll get the kick-starter going and distribution. why make a promise I couldn't fulfill?
Bandwidth usage doesn't mean lots of traffic, hosting servers (and most residential broadband) has limits on the amount of data you can pass through them, if your resource files are 2GB and 20 people play the game you've suddenly burned through 40GB of a finite number. Even largescale BYOND things don't need more than like 50GB a month, if that. You'll burn that up in a couple days and get your server locked down, especially if you do get popular. You'll need massively scaled resource distribution for a fairly small amount of players.
In response to Nadrew
Nadrew wrote:
Bandwidth usage doesn't mean lots of traffic, hosting servers (and most residential broadband) has limits on the amount of data you can pass through them, if your resource files are 2GB and 20 people play the game you've suddenly burned through 40GB of a finite number. Even largescale BYOND things don't need more than like 50GB a month, if that. You'll burn that up in a couple days and get your server locked down, especially if you do get popular. You'll need massively scaled resource distribution for a fairly small amount of players.


Not sure what's going on here but most good server providers have over 1TB allowances by default, unless you're specifically talking residential ISPs..

Anyway I've always highly suggest using - http://www.byond.com/docs/ref/info.html#/client/var/ preload_rsc

There's no reason why a server with players should also be serving the complete resources to a new user it's ludicrous to even think that, thats a good idea.
The bandwidth will have to be managed in the over all transfer, this being I would have to make sure the active data transfer is already at a small side, this is why I am using a SNES like system over a 3-D being the active data transfer for play. Being between the client and the server the active play could be done fluidly on an old 56 K modem.

The problem is the over all size of the project being more open world with a lot of interaction and integration with bringing the player in. So the active transfer of about 30 players was about 1 gig.

The problem came up with the base size of the project that was on a one time transfer. I would have the install of the BYOND .rsc from the server and we tried using an off site method. Both lead to when the player logged back in they needed to re-download the whole game no matter how they got the .rsc. This lead to needing to transfer the 2 GB for every new player to the server then having the offsite transfer hub or the direct transfer working. I even tried the coded method BYOND gave for taking the .rsc out of a set location. Nothing worked.

So the problem is I can get the bandwidth, I had the ability of an unlimited (1 TB) bandwidth download at the time of testing this. It was putting the strain not so much on the server testing end, but the player patients of having to watch 1-12 hours every time there net Disconnected to continue using the product. Let's be honest here, most players don't want to wait 10 minutes between Disconnected to re-log over the insane timescales being asked.
I meant that he'd burn up what the average BYOND game uses rather quickly, re-reading it, it reads like I meant that the 50GB would get you locked down, I meant that level of usage would probably get it done eventually (not specifically at that number)

I'd agree with the preload_rsc thing, but unless you had a way to offload that to multiple servers you'd be focusing the bandwidth usage on that one location even if the game was running on multiple hosts. It's a tricky thing to think about with resource sizes this large (I honestly can't even imagine how they'd be that large, I can almost bet there's uncompressed stuff in there that would have no noticeable quality difference if compressed using a better format.)
I was trying the pre_loader in the code as a back up as it was suggested but it still gave me the same problem.
In response to Nadrew
Nadrew wrote:
but unless you had a way to offload that to multiple servers you'd be focusing the bandwidth usage on that one location even if the game was running on multiple hosts.

Pretty simple actually - https://www.digitalocean.com/community/tutorials/ how-to-use-nginx-as-a-global-traffic-director-on-debian-or-u buntu

Should go a bit like this

preload_rsc = "example.com/zip.zip"

example.com is a reverse proxy with Geo capability

example.com determines closest server and pushes said file to the user from x.example.com masked as example.com

I hope I explained that well enough .. It's a loose example of what happens.
Page: 1 2