The Grendel Project - Win32 MUD Server            (c) 2000,2001 by Michiel Rook



= Last minute information =====================================================


1. Introduction

We've reached a milestone in Grendel development. Nearly 9 months after the
resurrection of the codebase, 0.4.0 final has been released - something you have 
been waiting for a long, long time.

This release features the return of the GUI, or at least part of it. Some of
you may recall the (very) early days of Grendel. The first few releases (some of
which where internal and never had widespread use) sported a GUI with buttons, 
graphical console, all strings/controls attached.

Soon afterwards, I decided a simple "textmode" console would be better. 
The controls used in the GUI were not terribly lightweight, and at that time,
size was still an issue.

However, with the implementation of dynamically loadable modules in this
release - more on this later on - I decided it would be time to let the good ol'
days thrive again. The old console being eradicated, the server now lives in a 
single system tray icon with a popup menu. 

Clicking in this menu can trigger actions like shutting down or rebooting
the server, or other commands provided by modules.

One of the other new things is, as noted before, dynamic module support.
This enables third-party developers to implement functions that can be loaded
on-demand from the server, thus forming some sort of plugin architecture.

Modules included with this distribution are the core commands, a spellchecker
and a graphical console module. The latter registers itself into the popup
menu, and gives you access to a console window.

Another new thing is Linux support - Grendel now compiles on a Linux box
that has Kylix 1.0 installed. This results in a native binary that can
run without any speed loss, however, not all features are enabled.

And the last exciting feature is something you probably saw in the two
0.4.0 release candidates, the mobprog compiler, GMC, or Grendel MUD C.

Some example mobprogs, courtesy of Hemko de Visser and Tristan
Pothoven (also a resident Dreaven immortal), can be found in the
"progs\examples" directory!

All in all, this release is something very special. I hope that
you will have fun toying around with it.

Enjoy!

  Michiel


2. Features

Grendel requires Winsock2 to be installed. Windows 98, Me, NT4 and 2000
all come with this preinstalled, Windows 95 users will have to download
this update from the Microsoft site:

  http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe

  - GMC, or Grendel MUD C, is a replacement for the original (limited)
    mobprogs. It's a fully functional language based on C, which
    runs in Grendel using virtual machinecode - very speedy & flexible
  - Modularized mud: most functionality has been placed inside seperate
    modules which can be loaded/unloaded at will - this opens up
    the possibility of arbitrary code that can be loaded even
    while your server is running!
  - Linux support: Grendel now runs on Linux, using the new Kylix
    compiler from Borland (the Linux version of Delphi). 
    Note: this is entirely experimental, some features are missing
    (like copyover, and the graphical goodies), and we will not provide 
    any binaries
  - Copyover system: Grendel can respawn itself without dumping all the
    connections, e.g. users stay online during the reboot process,
    more info below
  - IPv6 support: Grendel natively supports the new internet protocol,
    on all Linux machines with an IPv6 enabled kernel, and on 
    NT4/2000 machines that have the MSRIPv6 preview from Microsoft 
    installed. Don't worry if you don't have this, Grendel will auto-detect 
    your settings and use them accordingly
  - Way better OOP design: greatly increases stability, looks better,
    works better
  - Old code removed: no more pchars, thus no more buffer overflows,
    no more wicked crashes, no more strange things - lot clearer,
    lot better
  - Tracking system: not totally finished, but tracking people
    already works pretty nice
  - New immortal commands
  - Hashing of important tables: commands/socials tables are
    searched faster, and use less memory
  - Smaug area convertor: converts most information from a smaug
    .are file to the Grendel format
  - Password encryption: player passwords are encrypted using
    the MD5 Message Digest Algorithm
  - OLC support: design and builds your area without leaving the MUD!


3. Documentation

Documentation has never been the strongest point during the development
of The Grendel Project, but the tide is slowly turning.

In the directory 'text' you will find a few plain-text documents
describing various parts of the server. These are Modules.txt (for
info on how to best code a module), Scripting.txt (info about
the GMC syntax & structure) and Coding.txt (guidelines on
coding conventions and tips on which units to use).


4. Compiling & running

Normally, you'd download the binary distribution (grendel-....-bin.zip), but
if you wish to modify and/or (re)compile the sources, you will need the
source distribution (grendel-....-src.zip).

When installed, the sources can be compiled by running (in the root dir)

  'make -f makefile.w32' on the Windows platform, or
  
  'make -f makefile.lnx' on the Linux platform
  
You can ofcourse also use the Delphi IDE, but this is not recommended.

When you have a binary (either by downloading it, or compiling it), you
can start it by typing 'grendel' <ENTER> in the Grendel root directory.

The default port is 4444, so get hold of a telnet client, and connect
to the server.


5. Copyover

Grendel sports a neat copyover system, which I think is relatively uncommon on
Win32 servers. The copyover procedure also supports copying a new grendel executable
into the dir and starting that (hence the name :P).

This only works if you start grendel from the base directory and compile new
executables in a bin\ subdirectory. This is already done in the compile.bat and
other scripts in the distribution, so your best shot would be to keep it that way.

The copyover system is very itchy, which means that if *anything* goes wrong,
it immediately dumps everything and starts a normal reboot instead - there shouldn't
be any endless loops.


6. The new affects system

0.3.5 saw the addition of a brand new affects system, which looked promising,
but had a few defects. Those have now been fixed (finally, hopefully).

An affect consists of a name, a wear-off message, a duration and a number 
of modifier/apply-type combinations.

At the moment, the following apply types are supported:

  APPLY_NONE, APPLY_STR, APPLY_DEX, APPLY_INT, APPLY_WIS, APPLY_CON,
  APPLY_HP, APPLY_MAX_HP, APPLY_MV, APPLY_MAX_MV, APPLY_MANA, APPLY_MAX_MANA,
  APPLY_AC, APPLY_APB, APPLY_AFFECT, APPLY_REMOVE,
  APPLY_STRIPNAME, APPLY_FULL, APPLY_THIRST, APPLY_DRUNK, APPLY_CAFFEINE

The modifier is specific to the apply type used, for example, when you use
APPLY_INT, the modifier reflects the amount of intelligence gained (or lost)
through this affect, whereas with APPLY_AFFECT, the modifier is one of the
AFF_ flags found in constants.pas (or the manual).

For spells/skills, the syntax is:

  "affects: <affect name> <wear-off message> <duration> { <apply type> <modifier> } { ... }", 
  
for objects, the syntax is:
  "A <affect name> <wear-off message> <duration> { <apply type> <modifier> } { ... }".

Check the areas and system\skills.dat for examples on objects and spells,
respectively.


7. Known problems

The server has never been this stable. Roughly 90% of the active code has been
guarded by exception handling and debugging code, enabling developers to track 
down bugs and keeping uptime at a maximum.

However, there are probably pieces we've missed, so if you run across one,
please mail everything you did, so we can reproduce the error and help you out.

You will need either Delphi 5 or Kylix 1 to compile the Grendel sources,
earlier versions are not supported.

Support for Delphi 6 will be introduced in 0.4.1.


8. Contact information

Below you will find a few important email addresses, for
support, info, list communication or personal contact.


General e-mail addresses:

  info@grendelproject.nl    - Requests for info about the project/site
  support@grendelproject.nl - Requests for support on serious errors
  
Developers:

  Michiel Rook          (michiel@grendelproject.nl)     manager, website, code
  Hemko de Visser       (nemesis@grendelproject.nl)     code, field testing
  Roeland van Houte     (xenon@grendelproject.nl)       code
  Oscar Martin          (jago@grendelproject.nl)        code
  Jeremiah Davis        (woodstock@grendelproject.nl)   documentation

Mailinglists:

	grendel-announce@yahoogroups.com  - announcements (new releases, etc.)

	grendel-mudserver@yahoogroups.com - coding, suggestions, support

  If you have trouble subscribing, you can go to our website
  (http://www.grendelproject.nl/) and sign up there.

Postcards:
  
  If you use and like Grendel, I'd very much appreciate it if you
  send a postcard to me:

	Michiel Rook
	Louis Saalbornlaan 63
	3584 GA Utrecht
	The Netherlands