Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF: crossfire design

Andrew Sutton wrote:
> it occured to me that changes could be made to the core
> server to facilitate a completely distributed gaming world.
> the benifits of distributing the game across several
> computers is fairly obvious: speed and reducing player
> occupancy of a single server. for example, a player (on
> server A) enters a dungeon. the entry for the dungeon
> specifies not only the location of the dungeon file, but
> the server on which the file lies (server B). the player is
> effectively removed from the game on server A and entered
> into the game in server B.

 This of course requires some amount of cooperation between server A and B.
There are some other issues:

 1) Server A and B have to agree to this, and not have anything in thier server
world that will greatly upset the other (great artifacts or easy ways to get
 2) Both server A and B need to be up for the game to be playable (to some
extent, this may provide more fault tolerance - it depends on the nature of the
dungeon - if it is just a small standalone dungeon on server B, if only server B
is up, it doesn't help out the bulk of people on server A since they can't even
log on)
 3) Network location/latency could become an issue.  A player may choose server
A because of relative close proximity/speed relative to where he is.  Server B
may not have those same attributes relative to the player.  IT would be
frustating player on a relatively fast server to find out you can't explore
dungeons due to their relative network slowness.

> i haven't exactly followed the archives since crossfire's
> creation since i just found out about the game a couple of
> months ago, but i'm curious if anybody has ever thought to
> try this before. to tell the truth, i can't imagine any
> reason not to offer a distributed version of crossfire
> (besides the difficulty in eliminating security attacks).
> it offers a technologically current solution to issues of
> server overload, and fits right in to the notions of modern
> day software design.

 When crossfire grows to the point it might actually saturate single servers, it
may be more relevant.  From an implementation point of view, soem stuff needs to
be added:

 1) Communication between server A and B so that it can actually transfer the
player between them.
 2) Communication/extension to the client to redirect to a new server.
 3) Some form of rollback in case the transfer can't take place.  For example,
player enters map, server A communicates to server B that player is coming over,
here is the player file.  This negotiation is successful, server A now tells the
player to go to server B.  client tries to go to server B, can't for some
reason.  client now needs to tell server A that he can't go there, and bring
back the character.

 But in reality, I think some of it will happen when the limitations are reached
of current computers for crossfire, and how to best balance the load.

 For example, a more logical approach compared to dungeons on different servers
would be to seperate in terms of continents or other large reasons.  This has
one nice advantage that the characteristics of the server could be very
different (different plant life and monsters) without having to duplicate the
archs of the first.  But such a split may not help if one continent is very
popular and the other is not.

 Currently, the main limitation is crossfire is that it is single threaded -
making it multi threaded is probably a much more worthwhile cause than trying to
do migration between servers (as the later would also require a fairly signicant
rewrite in the client, since cached values would now be per server, and it would
either have to flush its cached data or keep multile cache tables - one per
server).  A first step on that might be to make the client internally re-runable
(for example, you finish the game, and the client asks if you want to connect to
some server or really exit, and that could be a different server require the
client to free/readjust the cached data)

 To answer the question more concisely:  Player transferance between servers may
happen at some point, but as of now, that some point is a ways off as there are
many things that need to be considered and many other things that I would
consider more important to do than all that.
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to]