|
From: Alexey M. <mas...@ma...> - 2002-03-31 15:04:12
|
Hi!
One of the main points we should clear from the very beginning is
the overall system architecture. There are a lot of nodes that should
interact with each other in some way. And also we have a lot of
factors that should influence the decision like Internet environment
(firewalls, bottlenecks etc), extensibility potential (supporting
mobile phones, PDAs, 3D acceleration in the future), AI and game
engine, synchronization and replication issues.
I've started to work in this direction and I think that I should
publish some thoughts for public discussion. I ask you to join and
give your ideas as it's one of the most important points now.
1. Synchronization and replication of data.
It is evident that we should limit amount of data transferred
between servers as much as possible. I've had a talk with our lead
analyst on this topic and he had proposed an elegant and well-known
solution.
We should divide all the events in the world in two major
types: global and local. Global solutions are those those that
impact most part of the slave servers at once. For example: new
quest announcement. Local ones influence only small number of
servers. When something happens between some servers it can be said
that a link was established between their sub-worlds.
Number of local events sent should greatly exceed number of
global events. This way we will be able to reduce amount of data
transferred.
One of the implementation could be asynchronous JMS messages.
Each client should be simultaneously connected only to one slave
server. When any event happens on the server it should
asynchronously notify all of it's clients. I don't think that JMS
will suite here well because it's a server-side and heavy
technology. Maybe some king of lightweight peer-to-peer
communication (JXTA, Jini) would fit well?
What's your opinion?
2. Internet environment.
Due to firewall restrictions I don't think that we'll be able to
use pure JMS or synchronous EJB calls. One of the solutions is to
use SOAP/WebServices but it's quite slow :(.
What do you think about it?
3. Game engine.
Most advanced gaming engines now support some kind of scripting
language. This allows to extend the game as far as you wish. I
think that we should also take a scripting engine and built it in.
In such case we will write the game engine and server-side
infrastructure using Java and the rest will be written the script.
We could use JPython for instance.
The extensibility can be also achieved using interfaces and
pluggable modules. It would have a speed advantage but as for me
it's less flexible.
Also I think that AI routines should be written using scripting
language in any case allowing the users to customize their beasts
:).
What type seems better for you? How much extensible the game
should be?
4. Non-PC devices.
The future for mobile devices. Everybody says that :).
I think that we should also take into account future support for
cellulars and PDAs with J2ME installed.
What do you think?
Ooh! I'm a little bit tired. Quite a long letter for me :)
Waiting for your response. Please answer if you have something to
say about the questions above.
P.S. I've drawn simple deployment diagram and published it. If you're
interested take a look at it. Soon I'll check it into project's CVS in
Together ControlCenter format.
--
Best regards,
Alexey Maslov mailto:mas...@ma...
|