View Single Post
Monolith

JCF Member

Joined: Mar 2001

Posts: 2,221

Monolith is doing well so far

Aug 20, 2006, 07:37 PM
Monolith is offline
Reply With Quote
Some quick initial thoughts.

Jazz 2 Dedicated Server

Goals

Basic Functionality

  • The server must recreate the full functionality of a Jazz 2 server such that clients joining the game will not know the difference, assuming a server running no extras.
  • The server should not try to go beyond this except to satisfy the other goals. All extra features should be done through plugins.

Dedicated

  • The server should be able to run, hosting a game, indefinitely requiring no user input and not wasting resources on output when output is not needed.
  • A graphical display or display of any kind must not be necessary for the operation of the server. That doesn't mean one can't be provided, but it just shouldn't be required.
  • The server should be fully automatable; meaning another script or program can easily start, stop, and otherwise control the server.
  • The server should be able to be modified without taking down the server. Obviously in some extreme cases this is not possible, such as when needing to replace the executable that's running, but that should be rare. Most other things, such as changing parameters or loading and unloading plugins, should be able to be performed on the fly.

Secure

  • Ensure that both the server and the clients are protected from malicious attacks or hack attempts from other clients.
  • Wherever possible, cheating should be hindered unless of course the host chooses otherwise.

Flexible

  • The server should be flexible and easily modible to allow to allow expansion and improvement of the game and the server.

Code

  • The server would ideally be programmed in a language that is fast and has little overhead. Obviously this includes a lot of options, but it does exclude stuff like scripting languages.
  • Probably most importantly and most obvious, the server should be programmed in a language that is well understood by those who will be programming the server.
  • My personal preference would be to use C++. I might be biased to it because I know it the best, but it really is a good language for programming a game server. The language itself has little overhead, it can be object oriented (and should be used that way), and it allows for good exception handling. Other advantages include low-level socket access through Winsock, asynchronous sockets with Winsock 2, and it can easily work with DLLs which will be a good means of supporting plugins.

Plugins / Extensions / Mods

  • The best way to support flexibility and expandability is to make the server work with plugins. Plugins will allow hosts to easily alter the way the game or server works without actually changing the server itself, or relying on the feature to be built into the server.
  • Anyone should be able to make plugins.
  • A good method for implementing plugins would be to implement them as DLLs. DLLs can be created unconnected to the main program, and they can be easily loaded and unloaded while the main program is running.
  • One of the plugins could simply be an interface to a scripting language such as Lua or Python to allow for even easier mods.
__________________
<div style="float: right; width: 100px; height: 70px; margin: 5px 15px;"><img src="http://madskills.org/monolith/idleserver.gif" style="width: 98px; height: 65px;"><img src="http://madskills.org/monolith/theserver.gif" style="width: 98px; height: 65px; position: relative; top: -65px;"></div><div style="margin: 0 3em; font-size: 80%; font-style: italic;">Love is patient, love is kind. It does not envy, it does not boast, it is not proud. It is not rude, it is not self-seeking, it is not easily angered, it keeps no record of wrongs. Love does not delight in evil but rejoices with the truth. It always protects, always trusts, always hopes, always perseveres.</div><div style="text-align: right; text-size: 80%;">1 Corinthians 13:4-7</div>