Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Help me decide!


Yxxe
 Share

Recommended Posts

Well, it's time for me to start doing the map rendering for Project Terra, and I've stumbled upon a dilemma. As maps are updated frequently, (player housing and other map events) I've come up with two options, and I'd like you to decide for me which one I should do, down to your personal preference. The poll will only be up for a few days at the most, so vote quickly.

Vote only once, and please post the reasoning behind your response if you can, thanks.

**Option 1**
All map data stays server-side, and "chunks" of map data (around 50x50 tiles) are sent to the client when a player crosses the X or Y "halfway point" in the map. Data is requested from the server, old data is removed from the map cache and the new data is appended.

Pros:
-Reduced client size.
-Lower memory usage in-game.

Cons:
-Server could potentially be sending map data every 1/2 second or so.
-Drawback on server performance.

**Option 2**
Map data is stored client-side, and frequent update requests are sent by the client after so many steps in one direction.

Pros:
-Better server performance than Option 1.
-Map data will be sent out at less-frequent intervals, depending on if the map data client-side matches the server map data.

Cons:
-Higher memory usage in-game.
-Client data size exceedingly larger. (Each geographic map is 262MB).

Thanks for your time,

Lightning
Link to comment
Share on other sites

I say **Option 2** purely because the ACTUAL gameplay won't be affected as much. They will have a smoother time actually playing the game. Regarding the client data size, that's no problem, I'm sure we've all downloaded WoW.. >.>
Link to comment
Share on other sites

@Azkanan:

> I'd prefer that we stress player's clients & Computers that little bit more than the server.

Of course you do, it'll be a feast for the Project Terra team when the server is burned out.

Frankly I don't care for neither option, cause I'm sure my computer will handle it and I'm not the one taking care of the server. Not to forget I don't like the Cons of either options.
Link to comment
Share on other sites

@NamelessSoul:

> I'd go for Option 2; most of the people are already used to downloading 1 GB and further just for playing a game. Though, if you have the right equipment(Which I'm guessing you don't have), you could go for Option 1.

Current specs are 12GB Ram and 8 Processors at 3.20GHz.
Link to comment
Share on other sites

@Azkanan:

> Current specs are 12GB Ram and 8 Processors at 3.20GHz.

Sounds like you've actually something, but, how about HDD? Plus, you would also need a good internet connection to handle multiple requests at the same time if you go with Option 1.

[Server Hardware Requirements Guide](http://confluence.atlassian.com/display/DOC/Server+Hardware+Requirements+Guide)
Link to comment
Share on other sites

You could also make several servers that function as one, say one that handles NPC interaction, one that handles World interaction, one that handles World Data etc.

May be a lot of trouble getting it to work together, but you can do a lot more with it. :]
Link to comment
Share on other sites

Is there real-time player modification of the maps themselves (terraforming, construction)?

That is really the only issue.

@Keebler:

> Option 2\. Server wide lag kills games so option 1 could be the death of any community you might build.

Depends on how efficient the map data packets are. For an online game clients have to generally talk to the server constantly anyway to get relevant data updates (entity locations, status updates, etc.).

Why are individual maps so large? It'd be better off having small maps (maybe the size of visible range of the player client), and dynamically linking them together. Then you could have a little bit of both, and cache a few local maps around the player's current location and do sending and updates when required.
Link to comment
Share on other sites

You should use a UDP packeting system to stream your constant flow of map data to all existing clients.

You could just lower the sending rate for specific things, depending on how important it is that those things are updated accurately. Growing trees and such would take a low-accuracy priority, while player-invoked actions to the map directly would stream a bit faster and take a higher level of priority in terms of accuracy.

Everything would flow with the serverloop already, so you wouldn't have to worry about too much of it being a burden on your server, handling things.
Link to comment
Share on other sites

@NamelessSoul:

> Sounds like you've actually something, but, how about HDD? Plus, you would also need a good internet connection to handle multiple requests at the same time if you go with Option 1.
>
> [Server Hardware Requirements Guide](http://confluence.atlassian.com/display/DOC/Server+Hardware+Requirements+Guide)

HDD has a good bit of space, and I have another HDD on-hand ready for use if I need more space.

As for connection, probably 0.5 - 1 MB on a wired connection, download. Upload is faster, can't remember the specs that-side.
Link to comment
Share on other sites

I would suggest finding a method that would allow you to take your 2500x2500 maps and breaking them down into smaller maps, have them client side and only load 9 maps at all time (which would be significantly smaller than loading a whole 2500x2500 map.

So you would load and display the map the player is on and have the surrounding maps ready for action, as soon as the player changes maps, release the maps out of scope and load the new surroundings in.
Link to comment
Share on other sites

@Miguu I don't need a constant stream of data, the map just needs to be updated whenever a change is made. The threads purpose was more along the lines of which of the two methods people would prefer, as I was unsure. As it sounds, people wouldn't mind downloading a larger client, so I will most likely go ahead with that. If anyone can find any other viable advantages to option 1, it would be great to hear them before I start. :-)
Link to comment
Share on other sites

@Lightning:

> @Miguu I don't need a constant stream of data, the map just needs to be updated whenever a change is made. The threads purpose was more along the lines of which of the two methods people would prefer, as I was unsure. As it sounds, people wouldn't mind downloading a larger client, so I will most likely go ahead with that. If anyone can find any other viable advantages to option 1, it would be great to hear them before I start. :-)

Hey wait a minute! I thought you had to go offline like, 3 hours ago? xD
Link to comment
Share on other sites

If there is real-time modifications, you can't constantly send huge maps to the player. This is why I suggest to have smaller individual maps more dynamically linked. This localises changes made by players to the maps and potentially reduces the traffic load sending the updates. If it happens so several players are making updates in adjacent maps, you'll have to send multiple updates, but in this case the updates are relatively small themselves and so lag shouldn't be as much of a factor.

I believe this is how Haven & Hearth does map loading and updates. However H&H has lag problems from map updates, I believe this is more from how their minimap system works, as both the world maps themselves, AND the minimaps are generated and sent to the clients from the server (while I think in their case, having the clients generate the minimaps based on what the world is currently at would be better).
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...