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... |