- Game now checks to see if there is a initial environment setup, if not an Abyss is created to store players in.
- Game now compiles scripts prior to loading libary assemblies to ensure the latest assembly is loaded.
- BaseCharacter now supports the Abyss room if no initial Game realm is set.
- BaseCharacter will no longer load the player into a room that does not exist (was deleted or something), they are defaulted into the Abyss.
- ScriptEngine checks for errors in the script prior to trying to reference the compiled assembly (was causing errors if scripts failed to compile; no assembly generated to reference)
- Assembly libraries are now only loaded once.
MudServer:
- Example MyGame.cs script now constructs a realm and sets default properties.
- MyPlayer script added to show how to write your own player script.
- Server loop restored and now working correctly.
- Server now outputs additional info regarding startup.
- Server now forces TCP protocol.
- Login command now automatically disconnects a user if they are currently logged into the server when another user attempts to login with the same credentials.
- Login command now loads saved players when a character name is entered that has previously been saved.
- FileManager.GetData() now supports ignoring simi-colons in data files. These can be used as comments if needed.
- MudEngine.GameManagement.Game.TimeOfDayOptions has been removed from the Game Type. It is now just MudEngine.GameManagement.TimeOfDayOptions.
- BaseCharacter will no longer try to save the character if the supplied filename is blank
- BaseCharacter will now send a disconnect message of 'Goodbye!' upon the player being disconnected from the server.
- ScriptEngine.ScriptPath now returns a absolute path.
- Script File compilation within ScriptEngine.Initialization is now supported. This allows developers to write their MUD's using Scripts and letting the server compile them during server startup rather than use the ScriptCompiler.exe to pre-compile scripts now.
- Custom Game Types are now supported. Only 1 Type may inherit from MudEngine.GameManagement.Game at a time. To use, create a file, write a script that inherits from Game and run the server.
- ScriptEngine.GetObjectOf(string) method adding. Returns a object that inherits from the Type supplied in the parameter.
- Deleted StartupObject.cs
- Deleted Startup.dat
MudOfflineExample:
- Updated to reflect the TimeOfDayOptions change in MudEngine.csproj
MudServer:
- Added MyGame.cs inside Debug/bin/scripts. This is a example script showing how to inherit from Game and write a custom Game Type. This Type is used when the Server runs rather than the Engine Game Type.
- Server startup re-wrote to compile scripts during startup, scan them via the script engine for any custom Types that inherit from Game, and use the if needed instead of the default Engine Type.
- Server now uses a Settings.ini file to allow configuration of the Script Engine by users. Provides them the ability to now customize where scripts are stored and their file extension.
- Deleted Scripts.dll, as the Server now generates one at runtime each time it is ran.
As of this commit, users will not need to use C# to compile their MUD's any longer. Compile the Server and run it. Scripts are now fully implemented (however not fully tested).
- Updated all game commands to support the new Player.Send() method. Returning CommandResults is no longer supported.
- Login command now executes the Look command upon completing login.
- Look command now supports Rooms DetailDescription property. Use this for multi-line descriptions.
- Several changes to the Restart command. Still not working fully however, it no longer calls duplicate methods.
- Fixed Walk command not moving players around.
- Loading engine commands no longer happens more than once.
- Added additional Server Console log output
- BaseCharacter.Send() now correctly displays content to the user and prints the "Command:" message to the player after every command completed.
- The Server now sets Player.IsControlled to true when a player connects.
- BaseCharacter.Send() checks if the game is multi-player or not. If it is, it prints to Console, if not then prints to telnet clients.
Mud Offline Example:
- Updated Zeroth Realm creation to use Room.DetailDescription now that the Look command supports it.
- Updated the Game loop. No longer needs to print to the console due to the player.Execute() command automatically printing content to the console.
Mud Server:
- Removed player from server as it was not being used any longer.
- Updated to work with ScriptingEngine changes.
MudEngine:
- Game.PlayerCollection changed to a List<>. Server obtains a array version of it within Server.initialize() via players = pbs.ToArray().
- All BaseObject classes now require a reference to the Game and contain a property called ActiveGame.
- Player.Game removed and now uses it's parent objects ActiveGame property.
- Player.Role property added. Uses the new SecurityRoles enum that specifies what level of access the player has.
- ScriptEngine now loads all libraries found within the specified ScriptsPath directory, instances the scripts and places them into a collection.
- Custom character script instancing is now supported, but not fully implemented throughout the engine. They can be loaded, but not used during runtime at this time.
- Began working on in-line commands.
MudEngine:
- Now logs when a player connects. MudServer prints this to the console via Log.GetMessages()
MudCompiler:
- Added /bin/debug to ignore list.
- FileManager.GetDataPath now returns the actual Root directory when Root is requested rather than Root/Projects. That was considered Root for the older Designer.
- CommandEngine.GetCommands is now a method rather than a property.
- CommandEngine.LoadAllCommands replaced with CommandEngine.LoadBaseCommands for loading Engine specific Game commands. This is called from within Game.Start. A possible property for disabling default commands could be looked at in the future.
- CommandEngine.LoadCommandLibrary method added for loading custom user commands. This is fully implemented.
- CommandEngine.ClearCommands method added for clearing all currently loaded commands.
- Game.IsDebug static property added.
- Added additional logging for testing purposes throughout the project. Changing Game.IsDebug to false will remove the majority of the logged messages.
- Game.IsMultiplayer property added for enabling or disabling the server for Online/Offline support. Fully implemented.
- Game no longer loads user script libraries as this was being handled already by ScriptEngine.Initialize()
- Log now caches messages so consoles can print only content that was logged since the last loop. Using Log.FlushMessages() will clear the cached messages allowing each loop to show only the new logged messages.
- BaseCharacter IsAdmin argument in the constructor has been removed. No longer needed for testing.
- ScriptEngine can now compile more than 1 script without error.
- ScriptEngine.Assembly property added for accessing the currently loaded script library. This should be a List<Assembly> in the future for multiple libraries.
- Removed the last of my BlitScript engine code from ScriptEngine.cs as it was XNA specific. Need to look at StartupObject.cs as I believe that is XNA specific as well and not needed.
MudGame:
- Renamed MudGame to MudOfflineExample as it will be used for testing the game with Game.IsMultiplayer disabled. Makes testing easier then needing to stop/restart the server and connect via telnet constantly.
MudServer:
- Added MudServer project. This is a dedicated server that runs with Game.IsMultiplayer enabled. Developers can connect to it via telnet clients. All engine game commands are implemented.
- MudServer includes bin/Debug/Scripts.dll, which is a compiled library of scripts generated via MudCompiler. MudEngine.Game handles loading the library and there is no additional code required by the developers to implement their libraries into their games provided the name is 'Scripts.dll'