README.txt
上传用户:ghyvgy
上传日期:2009-05-26
资源大小:547k
文件大小:6k
源码类别:

其他游戏

开发平台:

Python

  1. INTRODUCTION
  2. The software in this package constitutes a sample program
  3. that is intended to demonstrate the principles discussed 
  4. in the articles:
  5.   
  6.   Precise Game Event Broadcasting with Python
  7.   Creating a "Safe Sandbox" for Game Scripting
  8. In the accompanying book, "Massively Multiplayer Game Development".
  9. The two articles were originally written as independent
  10. representations, but in constructing the sample program, it
  11. became clear that both concepts would benefit from a consistent
  12. treatment within the same code base. 
  13. FEATURES
  14. The program is a simple text-based multiplayer game server,
  15. similar to a MUD. The key features of interest include:
  16.   * An asynchronous event broadcasting framework that allows
  17.     interested code to register for events using very 
  18.     precise criteria, minimizing the overhead of polling 
  19.     for state changes and testing for the relevance of an
  20.     event that has been received.
  21.   * A framework for creating a "safe sandbox" in which game
  22.     designers and other non-technical scripters may feel
  23.     free to push the envelope of creativity without fear of
  24.     undermining the stability of the server with coding 
  25.     errors or a less than perfectly engineered implementation.
  26. To showcase the above features, an interactive, game-like 
  27. environment was developed to illustrate both how these 
  28. features work, and how to write code that makes use of them.
  29. The secondary features that achieve this include:
  30.   - Multi-user text-based (i.e. telnet) client support.
  31.   - A "world" with 3 distinct "rooms" that players can enter.
  32.   - A small set of trivial game behaviors, including a 
  33.     player inventory, the ability to take objects from the
  34.     world, and the ability to engage in combat with other
  35.     players.
  36.   - A limited text-based command set that supports the 
  37.     game play, and navigation within the "world".
  38. FILES
  39. The files included in this package are listed and described
  40. below:
  41. / <top-level> 
  42. README                -- This file
  43. gameserverdemo.py     -- The "main" program that drives the server.
  44. /gameserver
  45. __init__.py           -- Special empty file used by Python
  46. deferred.py           -- Deferred call implementation [1]
  47. eventbroadcaster.py   -- Event broadcaster implemenation [1]
  48. gameeventkeys.py      -- Event keys for precise registration [1]
  49. gameevents.py         -- Module of event id constants [2]
  50. gameobs.py            -- Module containing a variety of game objects
  51. gameserver.py         -- Core server framework, based on asyncore and asynchat [3]
  52. objmgr.py             -- Object manager that allows addressing objects by an id [2]
  53. request.py            -- Request handler and processor of input commands
  54. safesandbox.py        -- Safe Sandbox implementation [1]
  55. sandboxrexec.py       -- Restricted execution implementation [1]
  56. /gameserver/sandboxmodules
  57. __init__.py           -- Special empty file used by Python
  58. battle.py             -- A sandbox that provides an arena for combat [2]
  59. thetrap.py            -- A sandbox that demonstrates prevention of prohibited operations [2]
  60. town.py               -- A sandbox that implements a "social space" [2]
  61. Notes:
  62. [1] The code in these files implement the core concepts described
  63.     in the articles. Refer to them for implementation details referred
  64.     to in the text, and for comments that provide further explanation.
  65.     This code is almost identical to the listings in the articles, 
  66.     except where variable or module names had to be changed in order
  67.     to enable the code to work together in the same process.
  68. [2] These files represent concepts that either use the core concepts,
  69.     or facilitate their implementation. They are briefly alluded to 
  70.     in the article text in an abstract fashion. Their implementation 
  71.     details will differ from the examples in the articles, but they
  72.     should illustrate the concepts mentioned in them.
  73. [3] The asyncore.py and asynchat.py Python modules provide a useful 
  74.     framework for building asynchronous server applications. They are
  75.     excellent for quickly prototyping concepts such as those 
  76.     presented by this demo.
  77. RUNNING THE DEMO
  78. To run the demo, you must have Python installed on your system.
  79. This code has been tested with Python 2.2, but it should work
  80. fine with anything from 2.0 and later. The code should work
  81. on both Windows and Linux, as no platform-specific features
  82. were used.
  83. To start the server, change directory to the directory 
  84. containing this file. Then, run it with the following 
  85. command:
  86. $ python gameserverdemo.py <port>
  87. where <port> is the port number on which the server will listen
  88. for client connections.
  89. To connect to the server as a client, use any telnet client
  90. to connect to the server's listening port. For example, if
  91. you started the server on port 2112, connect with:
  92. $ telnet <hostname> 2112
  93. where <hostname> is the name of the computer on which the 
  94. server is running.
  95. Once connected, type 'help' for a list of commands, and 
  96. play around with it.
  97. CAVEAT EMPTOR
  98. The code presented in this project is for demonstration purposes
  99. only. Care was taken to ensure that the core concepts described
  100. in the articles were accurately implemented. However, it should 
  101. be recognized that in the interest of simplicity, only limited 
  102. attention was given to error handling. In addition, the code in
  103. this demo represents only one of many possible implementations of
  104. the concepts described in the article. You should consider your 
  105. project's needs and architectural constraints when applying 
  106. these principles in your own implementation.
  107. CONTACT INFORMATION
  108. I welcome questions and comments from readers. Please direct 
  109. them to: 
  110. Matt Walker 
  111. mwalker@softhome.net