Possible map streaming / live mapping ?



Users browsing this forum: No registered users and 0 guests

Next topic
Previous topic
Post new topic Reply to topic  NeoAxis Forum Index » General » Tutorials and Articles from Community
Search for:
Author Message
Indie License
Indie License
User avatar

Joined: Sat May 22, 2010
Posts: 403
Location: London, UK
Country: United Kingdom (uk)
PostPosted: Tue Jun 29, 2010 3:56 pm Post subject: Possible map streaming / live mapping ?
Bottom of Page Back to top
I was looking through the map files in an attempt to understand how theyre edited etc... and i realised that it would be very easy to load the data stored in ".map" files from a mysql database. and more to that, assuming you logged the players position / actions (huge task i know)... it would be possible to use a single read only table from an mysql db as a method of loading mapping data.

I was thinking this would be especially useful in mmo type games where everyone requires the same version of a map. my other thought was that the mapping data could be updated live on the mysql database and code implemented to only update the client mapping data if the player is out of render range.

i havent actioned or even attempted any development at this stage but after following msg_gol 's advanced server i thought this could be an exciting prospect for map loading.

feel free to tell me if this has already been done or if theres an easier method.

cheers.

Nethrix

edit: just had a thought about map loading and realised i would need to work out how / where NA loads all its mapping data and find a way of parsing it whilst the map is loaded.

edit2:

upon browsing the dynamic map demo i realised it would be easier to use this and create the entity's using a loop for each kind of entity creation, rather than storing data in the same way as .map files do.

so in short...

bad idea storing the .map file data.
better to store entity names / variables in a mysql database and load them with loops upon map load with "Entities.Instance.Create()"


Once again, just doing some ground work on how this could work. if anyone's came across a better way to do this, please let me know :P

 
 Profile  
Indie License
Indie License
User avatar

Joined: Sat May 22, 2010
Posts: 403
Location: London, UK
Country: United Kingdom (uk)
PostPosted: Tue Jun 29, 2010 5:16 pm 
Bottom of Page Back to top
Just a tip for people interested in creating maps dynamical rather than loading from .map files.

One of the problems i had was working out how to declare / create entities, as i didnt know what the entities were called. just simply open up one of the demo .map files and it gives you the entity names and properies.

this is probably all very noob'ish stuff but... i thought id share anyways.

_________________
Currently working on a first person space rpg - Test Server for Demo SDK 1.32 (Village Map): 199.195.214.95
 
 Profile  
Commercial License
Commercial License

Joined: Wed Nov 14, 2007
Posts: 2167
PostPosted: Tue Jun 29, 2010 5:27 pm 
Bottom of Page Back to top
Well you can already do dynamic maps, so you are kinda late...

Demo has a dynamic map demo.

_________________
http://games.kipase.com/
 
 Profile  
Indie License
Indie License
User avatar

Joined: Sat May 22, 2010
Posts: 403
Location: London, UK
Country: United Kingdom (uk)
PostPosted: Tue Jun 29, 2010 5:43 pm 
Bottom of Page Back to top
Yeah, im aware of the dynamic map demo, my intention was to be able to load maps from a server. so that changes to a map didnt mean downloading the map again. on map load it simply grabs the entitys from the database and loads them like the dynamic map demo.

Quote:
edit2:

upon browsing the dynamic map demo i realised it would be easier to use this and create the entity's using a loop for each kind of entity creation, rather than storing data in the same way as .map files do.


as im not trying to implement dynamic maps i feel its not too late for anything...

the further development of this idea was to load further maping data from a database and load it in to the same area/buffer/ wherever loaded entities are put.

as the topic suggests... really just ideas atm. trying to work out whats feasible and whats not.

 
 Profile  
Commercial License
Commercial License

Joined: Wed Nov 14, 2007
Posts: 2167
PostPosted: Tue Jun 29, 2010 8:16 pm 
Bottom of Page Back to top
I was toying with this idea too. I mean the server syncs entities to clients so you just need a good spot where to intercept this and send only entities you need for that client.

I think you might wanna use this on really big maps where it is not only necessary that you restrict network traffic but also need to restrict what entities are spawned

This is the place I think

public class EntitySystemServerNetworkService : ServerNetworkService

Also I'm wondering if you can do zones like this and eventually HUGE maps

_________________
http://games.kipase.com/
 
 Profile  
Moderator
Moderator
User avatar

Joined: Wed Nov 28, 2007
Posts: 1526
Location: Vancouver, British Columbia
Country: Canada (ca)
PostPosted: Wed Jun 30, 2010 11:45 am 
Bottom of Page Back to top
Oblivion/Fallout3 use a unique system for outdoor rendering I was looking into. They use a matrix table of hash codes that makeup a larger code of "cells" that are currently loaded into the engine for processing (by physics, lighting, etc.)

Theoretically transmit this 1 hash code to all players that makes up the active area that "all players" are in currently. This would leave us with inactive cells which also doubles as simple analytics information about which areas are popular and which are not.

So we have a big town, NeoAxis town, and I'm at the bank but you other guys are not and at other locations. My client does not care about what Wellu is doing in the hotel (but it is aware he is there).

If I decide to bring Wellu some beer perhaps...I take it to Hotel area and my client knows what I am doing and we already have this cell/area preloaded into memory because it knows he is there. I load it up and the server knows about this also keeping track of this giant hash code.

Sorry but I kind of ramble, and use silly example but there is a practical use buried in there I promise ;D
My only problem with this is the server component still needs to be aware of all "possible cells" that could be loaded and this would be a problem in this idea I think.

_________________
I'm NOT paid or work for NeoAxis. I only help moderate these boards. My opinions are not the opinions of NeoAxis Group LTD.
 
 Profile  
User avatar

Joined: Thu May 20, 2010
Posts: 86
Location: London
PostPosted: Wed Jun 30, 2010 12:51 pm 
Bottom of Page Back to top
Maxwolf wrote:
Oblivion/Fallout3 use a unique system for outdoor rendering I was looking into. They use a matrix table of hash codes that makeup a larger code of "cells" that are currently loaded into the engine for processing (by physics, lighting, etc.)

Theoretically transmit this 1 hash code to all players that makes up the active area that "all players" are in currently. This would leave us with inactive cells which also doubles as simple analytics information about which areas are popular and which are not.

So we have a big town, NeoAxis town, and I'm at the bank but you other guys are not and at other locations. My client does not care about what Wellu is doing in the hotel (but it is aware he is there).

If I decide to bring Wellu some beer perhaps...I take it to Hotel area and my client knows what I am doing and we already have this cell/area preloaded into memory because it knows he is there. I load it up and the server knows about this also keeping track of this giant hash code.

Sorry but I kind of ramble, and use silly example but there is a practical use buried in there I promise ;D
My only problem with this is the server component still needs to be aware of all "possible cells" that could be loaded and this would be a problem in this idea I think.


Really quick way to break this system in fallout3, set your move speed stupidly high, and run forward :D

Instant CTD or freeze :)

_________________
Rampant Studios - http://rampantstudios.co.uk
28 Carrots Later - http://www.indiedb.com/games/28-carrots-later
 
 Profile  
User avatar

Joined: Wed Apr 07, 2010
Posts: 251
PostPosted: Wed Jun 30, 2010 1:01 pm 
Bottom of Page Back to top
I like the system in Oblivion/Fallout 3.
I specially like the performance you get out of it without getting less results in graphical quality.

I run fallout 3 on one of my boxes (a budget box) with I3 530 2.93 GHz, Kingston PC3-10666, 1333 MHz Ram, Point Of View GeForce GT 240 512 MB and it runs perfectly on FULL SPECS! (lowest fps drop is about 26 sometimes when it is getting heavy in the wastelands).

It would not be that bad to copy some of the techniques used by the Fallout 3 engine (A)

_________________
"Gaming is a artform, when the gibs explode all over the screen, pure art!"
 
 Profile  
Moderator
Moderator
User avatar

Joined: Wed Nov 28, 2007
Posts: 1526
Location: Vancouver, British Columbia
Country: Canada (ca)
PostPosted: Wed Jun 30, 2010 1:32 pm 
Bottom of Page Back to top
@Dan Or how about that horrid bug where the game crashes every time you enter a new cell or attempt to save? The only way to fix it is to freakin' kill yourself in game and re-spawn and then save. Something about cells getting out of sync.

@SirDude0Lot That is the advantage of this system, you can have very, very heavy scenes. If you use console in Fallout3 to enable wire-frame mode the polygons the guys at Bethesda push to RenderWare are epic indeed (and very clean I might add).

The other disadvantages are things like you need very decent looking LOD models to make the effect "look right" as it fades between them as you get closer. Another funny thing with this system and large cells was if you fast-travel to another location in the same cell the objects around you will slowly fade in like your in Second Life or something as the rendering engine figures out where the heck you are.

We could maybe take the ideas from this system we like and forget the bad, maybe using the "cell area" idea to load maps for a particular zone. That way you could reduce re-connections to the server to only when you change zones which is what WoW and the others do anyway.

_________________
I'm NOT paid or work for NeoAxis. I only help moderate these boards. My opinions are not the opinions of NeoAxis Group LTD.
 
 Profile  
Commercial License
Commercial License

Joined: Wed Nov 14, 2007
Posts: 2167
PostPosted: Fri Jul 02, 2010 7:23 am 
Bottom of Page Back to top
Lets say I have a dedicated server running TankDemo.map and another running CraneDemo.map.

What kinda changes do I have to make to the client so that the player could actually move between the maps with no apparent server transfer?

The player would be moved from server to another but without him noticing it.

Also while standing on map edge the client could see the other map already.

Do I need a smaller map in between so the previous map can be unloaded from client?

Do the maps need to overlap a bit?

how would you render from 2 maps at the same time?

Objects/Players moving on the map edge would get locked to either server until one of the servers will no longer send events to it.

_________________
http://games.kipase.com/
 
 Profile  
Display posts from previous:  Sort by  
Post new topic Reply to topic  NeoAxis Forum Index » General » Tutorials and Articles from Community

Jump to:  

Next topic
Previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum


All times are UTC




Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group