Seamless world. Possible?

edited April 2010 in Photon Server
Hello all there, and thanks to the Photon developers for this forum.
Note that you have no favicon for forum yet :)

Please help me with one question, which not clear from the Photon documentation.

Imagine, I have got game world, it has 10 square kilometres, which consists of 100 separate 3D terrain objects (each 100m x 100m).

Is this possible, to make moving between terrain objects seamless for the player? I mean with out any teleportation, gateways, doors or some like this.

a) Is rooms enough for it? If so, Can players sign to several rooms at once?

b) Or may be better to split (geometrically) all word on 100 (or even more) channel cells, and sign in and sign out any player who walk through this cells? So players which signed to one channel will see game events from neighbours.

Please, give a link to docs or examples about best Photon technology, if they exists for this topic.

P.S. English is not my natural language. Sorry for crap writing.
Russian Federation


  • Boris
    Hi KEMBL,
    I don't think rooms alone would be enough for what you describe.
    Our MMO sample is a lot like your second idea, check out the download section.
    The release candidate package includes a more advanced version:
    - server:, folder src-server/MmoSample
    - client:, folder demo-mmo
    Unfortunately we haven't had the time yet to provide good documentation, coming soon though.
    Hope it helps.
    Thank you for the docs targeting!
    I wrote one server on Project darkstar framework (RedDwarf now). Game world was works with cell/channel technology, or better to say cube/channel, cause all space was divided into 3D cubes and one cube was equal to one channel. This approach works just good. I think that this classic idea shell be hardcoded in server cause almost any dev make it from zero point.
  • dreamora
    Thats what the MMO Example basically does, not in 3D but in 2D from what I understand from the present information in the projects.
    But unlike your approach it uses the grid to cut down the distance between calcs to only do it there where it is of interest at all so it can use that for fade in fadeout etc (the unity one shows that nicely)

    your approach sounds like it would always force that into the whole cubic environment of a given actor due to the channel nature.
    You right, dreamora, all players always in virtual cubic environment, just like in Second Life. Of cause, they don't see any cubes in game, cause this logical level only. This needs to minimize network traffic, give some performance and reduce latency.

    P.S. We use 3D cubes, cause gameworld have got several up/underground levels. In much situations, 2D cells will be enough for message culling.
  • dreamora
    Didn't expect the users to see the cube, just management base core.

    I personally never seen a reason for full 3D grids cause only 2 types of games need them: flight simulation and space simulation
    All other types of games are fine if you have distinct 2D grid layers for the different "levels" because the full 3D grid does not take the totally impossible "see - hear - know" cases into account where massive walls / floors are between the layers, where as distinct 2D grids with "layer connector cells" (ladder, stair, ...) do.
    I plane to add aircraft in future, but now my gamers can fall to each other from bridges, wall/road holes and overpass. Several cars may stay each other in multistory parking. In such situation I have 2 ways:

    1) mix of 2D/3D logics, as you mentored

    2) let world work in "whole cubic environment" :)

    Both way have self benefits and discounts.
  • dreamora
    hehe :)
    Some vertical interaction is no problem with a 2D grid.

    The vertical split is normally only then required when you know that a lot of players / dynamic entities will be dense stacked vertically so you need to seperate them vertically for efficient handling.
    Thats for most if not all games a very rare case cause they are normally ground based and have physics.

    The only type of game that would have problems is some 0 gravity mmo or alike.
    But 0 gravity games are "geek things" and have some serious problems attracting any players at all as the two available 0 gravity games on steam show.

    A vast amount of people are already at their capability borders with a fixed ground and 3d game navigation especially when its more action oriented, without taking out the "down" to limit the movement to 2d only ;)
    "2D + levels" is the good discovered approach, but I'd like to use 3D, because this not less universal technology, and I already understand that this add several affect to count performance, cause needs to work with 3D vectors.

    BTW, how many channels Photon game world may have?

    This from documentation:
    1) Gets / sets the number of channels available in UDP connections with
    Photon. Photon Channels are only supported for UDP.

    2) public virtual short OpCustom(byte customOpCode, Hashtable customOpParameters, bool sendReliable, byte channelId);

    3) byte channelId The channel in which this operation should be sent.

    Conclusion - only 256? Cubic technology will be so wasteful :( Why so small?
    Let's say one cell is 250 metres, so all I can build is 16x16 cells = 4 square kilometres. Мy town is about 20x25 square kilometres! It not fits to this count of cells. If I make each cell bigger, to much not necessary events will make useless traffic.

    I think that Int value is more optimal for channelId.

    On other hand, I saw that Photon already have its own Interest Management Algorithm, I'll try to use it first.
  • dreamora
    You don't need to use any channels at all in Photon for that nor would you want to use it actually.
    Channels are for prioritizing what gets through and what not if a connection is full (so that important reliable transactions always go through like actor - actor trade etc where you MUST get the response from the other side to continue in a well defined state) and especially to seperate reliable from non reliable.

    What you need to do is just have the server to keep sets of other netobjects impacting a specific netobject (netobject is just some class you created and to me means all objects that are dynamic and updated in some way through net). that what the MMO sample projects DLL does and exactly the reason I would use it.
    Whatever you will do will always be pretty similar to that if not equal actually :)
    I think so, I was look at game examples and I think Photon dev make a great deal when publish it. I plane to use they technology unless fill that it'll not enough.

    Actually, I already read all docs I can, and do not find any borders to make world seamless. I'll try to make it and describe there hows it goes. My technology will looks just like on this movie: (Unity3D: Dynamic Terrain Loading)
  • dreamora
    There is no concept of "seams" or "zones" with the MMO example (without any of the two examples ie no MMO nor Lite, it has no concept of any kind genre, all fully up to you)

    To get seams in there you would have to add them yourself :-)
    The MMO example syncs your updates only with actors in a given proximity around you. Its actually as such by definition seamless as it does not update up to a given border / seam but for a given surrounding of interest.
    I know all this, you right - I'll need to write all this seamless logics for my own :)

    My words "do not find any borders to make world seamless" just mean that I have no sensation of limits to build seamless logics as I was desire with Photon :) Sorry for my poor English, I know how hard to understand it. I am in self education and hope that make me more clear.)