- Added new Project. Mud Designer project will include the GUI elements needed for graphically building a MUD. Due to Environment creation being finalized, work on a GUI based Environment creation can start.
Mud Engine:
- Objects no longer require a path to be supplied when calling Object.Save()
- EditRealm command now edits senses.
- EditRoom now fully supports creating doorways, however editing existing doorways and linking to existing rooms is not implemented. This command only supports creating new doorways for non-existing Rooms (Rooms are generated as needed)
- EditZone Now fully supports senses and implemented.
- Game now supports loading of .ini files when calling Game.Load()
- All objects now include a SavePath properties. Override this to supply a path for where the object needs to be saved. All Environment and BaseCharacter objects override the BaseObject.SavePath to save into ActiveGame.DataPaths.Environemnts and Players respectively.
- ObjectCollection now instanced during ScriptEngine initialization to prevent exceptions during runtime.
- Create command no longer converts all names to lower case.
- Updated the Walk command to execute the Look command in a safe manor without injecting a command into the player Telnet console.
- TODO: Read my ReadME
- TODO: Change it into a GUI
- Currently it is a console application, Telnet functionality needs to be added as well as \n\r | \r\n correction.
Simply create a GUI for it and use the Networking/Client.cs file (see how it is used in the Program.cs).
Run the Game once, then edit the Settings.ini file generated to enable or disable the network server. Setting ServerEnabled to False will enable the Singleplayer offline mode within the engine.
- 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'
- Fixed ClientSocket accessor error.
MudCompiler:
- Added new project. This will compile the game scripts along with performing object checks to ensure the game contains no errors prior to publishing a release of the game.
- Removed from solution
Mud Engine:
- Moved the CommandEngine, CommandResults and ICommand Interface out from the Commands namespace and into GameManagement since they manage the game commands.
- Added CommandExit class to provide the ability to exit a game once running. This is fully implemented.
- Realms, Zones and Rooms now have an IsInitial property for determining if this is an initial location for the Game.
- Renamed GameSetup to Game.
- Corrected GameObject being in the incorrect namespace.
- Corrected the ScriptEngine not
- CommandEngine no longer needs a Name argument. Arguments changed from 5 to 4 due to this change.
Mud Game:
- Added Example Game used for testing various MUDEngine features and testing constructability of games using the engine.
- Currently only contains 1 Realm, 1 Zone and Two Rooms. Only working command is Exit.
- Corrected SaveDataTypes.Currency being named incorrectly. Changed to Currencies
- ProjectInformation now inherits from the new IFileIO interface.
- ProjectInformation.Load can be used instead of the FileManager now (note: Saving of ProjectInformation must still be done using FileManager)
- Organizing of BaseObject done
- BaseObject now supports BaseObject.Load. Use this instead of FileManager.Load
- Fixed UIRealmControl error, attempting to deserialize into a null Zone Field
- Program.cs is now encapsulated into a try/catch
- IFileIO interface added for providing a blueprint on file I/O operations
Designer:
- Additional ObjectTypes added to the ObjectTypes enum
- Additional commenting provided throughout the source.
- Re-organized the source code.
- Simplified the Constructor code. Roughly 50% less code now.
- Re-wrote the Object Load code to make it easier to read and maintain.
- Renamed several menu items to conform to the projects naming conventions
- BaseObject now sets the default value for Name programmatically for the editors propertygrids.
- Room, Realm and Zone no longer set their Name Properties to their default value, BaseObject handles it.
Room Designer:
- Scripts where'nt being saved, this has been corrected.
- Rooms wheren't being loaded when supplied via the command line argument (Method is used by the Zone Builder)
- Displaying scripts within the Designer is now fixed.
Zone Builder:
- Now displays the Zone Object Properties in the property grid.
* Added custom container controller
VisualDesigner:
* New editor designed similar to Visual Studio.
* Loads MUDEngine.dll and places all classes inheriting from GameObject into the designers Object list.
Mud Designer HUB:
* frmMain.cs - HUB now scans entire solution directory to find the correct app to launch rather than just checking the Project Manager directory.
* frmMain.cs - HUB now has the app launch precess wrapped within a try/catch/finally. No exception handling added as of yet within the catch.
MUDEngine:
* Engine.cs - ValidateProjectPath method now creates the Currency directory.
* Objects namespace added.
* Moved the Environment namespace and folder within the new Objects namespace.
* BaseObject.cs created. All Game objects will inherit from this, or a child of this class.
* Currency.cs created.
* ProjectInformation.cs - Added using statements.
Project Manager:
* Added Using statements for MUDEngine
MudEngine Zones now have a Name property.
MudEngine.ProjectInformation.BaseCurrencyName is no longer filed under Misc. within the Project Manager.
The Project Managers Realms list now generates the Available Zones lists if Zones exist.
The Project Managers Zone and Room list boxes have been replaced with CheckedListBoxes to easily select Initial Room/Zones.