diff --git a/MUDCompiler/bin/Debug/Scripts/Player.mud b/MUDCompiler/bin/Debug/Scripts/Player.mud index af7ce04..3d8799b 100644 --- a/MUDCompiler/bin/Debug/Scripts/Player.mud +++ b/MUDCompiler/bin/Debug/Scripts/Player.mud @@ -1,6 +1,9 @@ -public class Player : MudEngine.GameObjects.Characters.Controlled.PlayerBasic +public class Player : BaseCharacter { - public Player() + public Game _Game; + + public Player(Game game) : base(game) { + _Game = game; } } \ No newline at end of file diff --git a/MudDesigner.sln b/MudDesigner.sln index 2ee3e10..1dd1f88 100644 --- a/MudDesigner.sln +++ b/MudDesigner.sln @@ -3,10 +3,12 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual C# Express 2010 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudEngine", "MudEngine\MudEngine.csproj", "{498943A8-DF5A-4DB0-B506-0BFF44788657}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MUDGame", "MUDGame\MUDGame.csproj", "{048E755C-DD05-47EC-930E-F45146B66F7C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudOfflineExample", "MudOfflineExample\MudOfflineExample.csproj", "{048E755C-DD05-47EC-930E-F45146B66F7C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MUDCompiler", "MUDCompiler\MUDCompiler.csproj", "{98E974DA-C650-4B88-B2F8-57AC7AE6C34F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudServer", "MudServer\MudServer.csproj", "{5BA65833-A99D-486C-8E74-C11A0713D44A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -47,6 +49,16 @@ Global {98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|Mixed Platforms.Build.0 = Release|x86 {98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|x86.ActiveCfg = Release|x86 {98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|x86.Build.0 = Release|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Any CPU.ActiveCfg = Debug|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|x86.ActiveCfg = Debug|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|x86.Build.0 = Debug|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Any CPU.ActiveCfg = Release|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Mixed Platforms.Build.0 = Release|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|x86.ActiveCfg = Release|x86 + {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MudEngine/FileSystem/FileManager.cs b/MudEngine/FileSystem/FileManager.cs index 152e784..de7ab6b 100644 --- a/MudEngine/FileSystem/FileManager.cs +++ b/MudEngine/FileSystem/FileManager.cs @@ -64,12 +64,11 @@ namespace MudEngine.FileSystem string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName; string assemblyName = System.IO.Path.GetFileName(assemblyPath); string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length); - string rootPath = System.IO.Path.Combine(installBase, "Project"); if (DataType == SaveDataTypes.Root) - return rootPath; + return installBase; else - return System.IO.Path.Combine(rootPath, DataType.ToString()); + return System.IO.Path.Combine(installBase, DataType.ToString()); } public static string GetDataPath(string Realm, string Zone) @@ -77,11 +76,10 @@ namespace MudEngine.FileSystem string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName; string assemblyName = System.IO.Path.GetFileName(assemblyPath); string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length); - string rootPath = System.IO.Path.Combine(installBase, "Project"); - string realmsPath = System.IO.Path.Combine(rootPath, "Realms"); - string requestRealm = Path.Combine(realmsPath, Realm); - string requestedRealmZones = Path.Combine(requestRealm, "Zones"); - string requestedZone = Path.Combine(requestedRealmZones, Zone); + string realmsPath = System.IO.Path.Combine(installBase, "Realms"); + string requestRealm = Path.Combine(installBase, Realm); + string requestedRealmZones = Path.Combine(installBase, "Zones"); + string requestedZone = Path.Combine(installBase, Zone); return requestedZone; } diff --git a/MudEngine/GameManagement/CommandEngine.cs b/MudEngine/GameManagement/CommandEngine.cs index 590933f..529f293 100644 --- a/MudEngine/GameManagement/CommandEngine.cs +++ b/MudEngine/GameManagement/CommandEngine.cs @@ -3,6 +3,8 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.IO; +using System.Reflection; //MUD Engine using MudEngine.GameObjects; @@ -12,28 +14,27 @@ using MudEngine.GameManagement; namespace MudEngine.GameManagement { - public class CommandEngine + public static class CommandEngine { /// /// Gets or Sets a Dictionary list of available commands to use. /// - static internal Dictionary Commands { get; set; } + static internal Dictionary Commands { get { return _Commands; } set { _Commands = value; } } + static Dictionary _Commands = new Dictionary(); - public List GetCommands + public static List GetCommands() { - get - { - List temp = new List(); - foreach (string name in Commands.Keys) - { - temp.Add(name); - } + List temp = new List(); - return temp; + foreach (string name in Commands.Keys) + { + temp.Add(name); } + + return temp; } - public bool GetCommand(string Name) + public static bool GetCommand(string Name) { if (Commands.ContainsKey(Name.ToLower())) return true; @@ -49,6 +50,9 @@ namespace MudEngine.GameManagement public static CommandResults ExecuteCommand(string command, BaseCharacter player) { string commandKey = command.Insert(0, "Command"); + if (Game.IsDebug) + Log.Write("Executing command: " + command); + foreach (string key in Commands.Keys) { if (commandKey.ToLower().Contains(key.ToLower())) @@ -59,17 +63,55 @@ namespace MudEngine.GameManagement return new CommandResults(); } + + public static void LoadBaseCommands() + { + LoadCommandLibrary(Assembly.GetExecutingAssembly()); + } + /// /// Dynamically loads the specified library into memory and stores all of the /// classess inheriting from MudCreator.InputCommands.ICommand into the CommandEngines /// commands dictionary for use with the project /// /// - public static void LoadAllCommands() + public static void LoadCommandLibrary() { - System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); - Commands = new Dictionary(); - foreach (Type t in assembly.GetTypes()) + LoadCommandLibrary(Assembly.GetExecutingAssembly()); + } + + public static void LoadCommandLibrary(string libraryFilename) + { + if (System.IO.File.Exists(libraryFilename)) + { + Assembly assem = Assembly.LoadFile(libraryFilename); + LoadCommandLibrary(assem); + } + } + + public static void LoadCommandLibrary(List commandLibraries) + { + foreach (Assembly lib in commandLibraries) + LoadCommandLibrary(lib); + } + + public static void LoadCommandLibrary(Assembly commandLibrary) + { + LoadCommandLibrary(commandLibrary, false); + } + + public static void LoadCommandLibrary(Assembly commandLibrary, bool purgeOldCommands) + { + //no assembly passed for whatever reason, don't attempt to enumerate through it. + if (commandLibrary == null) + return; + + Log.Write("Loading commands within " + Path.GetFileName(commandLibrary.Location)); + + if (purgeOldCommands) + ClearCommands(); + + foreach (Type t in commandLibrary.GetTypes()) { if (t.GetInterface(typeof(IGameCommand).FullName) != null) { @@ -100,6 +142,11 @@ namespace MudEngine.GameManagement } } + public static void ClearCommands() + { + _Commands = new Dictionary(); + } + public static string GetCommand(object Parameter) { List objectList = (List)Parameter; diff --git a/MudEngine/GameManagement/Game.cs b/MudEngine/GameManagement/Game.cs index 85ed90a..3c4cb25 100644 --- a/MudEngine/GameManagement/Game.cs +++ b/MudEngine/GameManagement/Game.cs @@ -33,9 +33,19 @@ namespace MudEngine.GameManagement Transition, } + /// + /// Gets or Sets if this game is currently running. + /// [Browsable(false)] public bool IsRunning { get; internal set; } + /// + /// Gets or Sets if this game is running in debug mode. Additional information is sent to the log if enabled. + /// + public static bool IsDebug { get; set; } + + public bool IsMultiplayer { get; set; } + [Category("Company Settings")] [Description("The name of the Company or Author building the game.")] /// @@ -176,6 +186,7 @@ namespace MudEngine.GameManagement _Filename = "Game.xml"; BaseCurrencyAmount = 1; BaseCurrencyName = "Copper"; + IsMultiplayer = true; //default. } /// @@ -183,30 +194,26 @@ namespace MudEngine.GameManagement /// public bool Start() { - //Setup the scripting engine + Log.Write("Starting Game..."); + //Setup the scripting engine and load our script library scriptEngine.Initialize(); - scriptEngine.ScriptPath = "Scripts"; - scriptEngine.ScriptExtension = ".mud"; - //Load our scripts library - if (System.IO.File.Exists("Scripts.dll")) - { - Assembly assem = Assembly.LoadFile("Scripts.dll"); + Log.Write("Loading internal game commands..."); + //Loads the MudEngine Game Commands + CommandEngine.LoadBaseCommands(); + //Loads any commands found in the users custom scripts library loaded by the script engine. + CommandEngine.LoadCommandLibrary(scriptEngine.Assembly); - foreach (Type t in assem.GetTypes()) + //Ensure custom commands are loaded until everything is fleshed out. + if (Game.IsDebug) + { + foreach (string command in CommandEngine.GetCommands()) { - if (t.BaseType.Name == "BaseCharacter") - { - Scripting.GameObject obj = new Scripting.GameObject(); - obj = scriptEngine.GetObject(t.Name); - //PlayerCollection.Add((BaseCharacter)obj.Instance); - } + Log.Write("Command loaded: " + command); } } - //Load all of the engine commands - CommandEngine.LoadAllCommands(); - + Log.Write("Initializing location..."); //See if we have an Initial Realm set foreach (Realm r in RealmCollection) { @@ -217,27 +224,36 @@ namespace MudEngine.GameManagement } } - if (InitialRealm == null) + if ((InitialRealm == null) || (InitialRealm.InitialZone == null) || (InitialRealm.InitialZone.InitialRoom == null)) { - Log.Write("ERROR: No initial realm set, un-able to finish starting of Game"); + Log.Write("ERROR: No initial location defined. Game startup failed!"); return false; } + else + Log.Write("Initial Location defined -> " + InitialRealm.Name + "." + InitialRealm.InitialZone.Name + "." + InitialRealm.InitialZone.InitialRoom.Name); + Log.Write("Starting Server..."); //Start the Telnet server - this.StartServer(); + if (IsMultiplayer) + this.StartServer(); IsRunning = true; + Log.Write("Game startup complete."); return true; } public void Shutdown() { + Log.Write("Server shutdown requested..."); //Place ending code here for game shut down. //TODO: Save content on shutdown. - Server.EndServer(); + if (IsMultiplayer) + Server.EndServer(); IsRunning = false; + + Log.Write("Shutdown completed..."); } public void Save(string filename) diff --git a/MudEngine/GameManagement/Log.cs b/MudEngine/GameManagement/Log.cs index 0cb266d..59d9d3b 100644 --- a/MudEngine/GameManagement/Log.cs +++ b/MudEngine/GameManagement/Log.cs @@ -10,6 +10,8 @@ namespace MudEngine.GameManagement { public static class Log { + static List cachedMessages = new List(); + public static void Write(string message) { string filename = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Root), "Log.txt"); @@ -22,6 +24,30 @@ namespace MudEngine.GameManagement sw.WriteLine(message); sw.Close(); + + //Add to the cache so consoles can get these messages if they want to. + cachedMessages.Add(message); + } + + public static string GetMessages() + { + string messages = ""; + StringBuilder sb = new StringBuilder(); + + foreach (string message in cachedMessages) + { + sb.AppendLine(message); + } + + if (sb.ToString() == "") + return ""; + else + return sb.ToString(); + } + + public static void FlushMessages() + { + cachedMessages = new List(); } } } diff --git a/MudEngine/GameObjects/Characters/BaseCharacter.cs b/MudEngine/GameObjects/Characters/BaseCharacter.cs index fcab5ef..70ada62 100644 --- a/MudEngine/GameObjects/Characters/BaseCharacter.cs +++ b/MudEngine/GameObjects/Characters/BaseCharacter.cs @@ -44,10 +44,9 @@ namespace MudEngine.GameObjects.Characters /// public Game Game { get; private set; } - public BaseCharacter(Game game,bool admin = false) + public BaseCharacter(Game game) { Game = game; - IsAdmin = admin; IsActive = false; CurrentRoom = game.InitialRealm.InitialZone.InitialRoom; } @@ -108,16 +107,22 @@ namespace MudEngine.GameObjects.Characters { // convert that data to string String str; - System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); + System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); str = enc.GetString(data); + + if (Game.IsDebug) + Log.Write("Client entered command: " + str); + // execute, and get result str = ExecuteCommand(str); + // convert the result back to bytes and send it back System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); Send(encoding.GetBytes(str)); if (!Game.IsRunning) Clear(); } + internal void Send(byte[] data) { try diff --git a/MudEngine/Networking/Server.cs b/MudEngine/Networking/Server.cs index 452fe65..bdb8e33 100644 --- a/MudEngine/Networking/Server.cs +++ b/MudEngine/Networking/Server.cs @@ -92,6 +92,7 @@ namespace MudEngine.Networking private void ReceiveThread(object obj) { int sub = (int)obj; + MudEngine.GameManagement.Log.Write("Receiving client data..."); while (stage == 2 && players[sub].IsActive) { try diff --git a/MudEngine/Scripting/ScriptEngine.cs b/MudEngine/Scripting/ScriptEngine.cs index 66d371f..639cc6b 100644 --- a/MudEngine/Scripting/ScriptEngine.cs +++ b/MudEngine/Scripting/ScriptEngine.cs @@ -10,6 +10,8 @@ using System.Text; using System.Reflection; using MudEngine.GameObjects; +using MudEngine.GameObjects.Characters; +using MudEngine.GameManagement; namespace MudEngine.Scripting { @@ -28,6 +30,8 @@ namespace MudEngine.Scripting public string InstallPath { get; private set; } public GameObjectCollection ObjectCollection { get; private set; } + public Assembly Assembly { get { return _ScriptAssembly; } private set { _ScriptAssembly = value; } } + /// /// File Extension for the scripts /// @@ -100,12 +104,12 @@ namespace MudEngine.Scripting Directory.CreateDirectory("temp"); //Setup the additional sourcecode that's needed in the script. - string[] usingStatements = new string[] { "using System;", "using MudEngine.GameObjects;", "using MudEngine.FileSystem;" }; - string source = "\nnamespace MudScripts{\n}"; + string[] usingStatements = new string[] { "using System;", "using MudEngine.GameObjects;", "using MudEngine.GameObjects.Characters;", "using MudEngine.GameManagement;", "using MudEngine.FileSystem;" }; foreach (string script in scripts) { string tempPath = "temp"; + string source = "\nnamespace MudScripts{\n}"; FileStream fr = new FileStream(script, FileMode.Open, FileAccess.Read, FileShare.None); FileStream fw = new FileStream(Path.Combine(tempPath, Path.GetFileName(script)), FileMode.Create, FileAccess.Write); @@ -186,6 +190,7 @@ namespace MudEngine.Scripting if (!System.IO.File.Exists("Scripts.dll")) { ErrorMessage = "Failed to load Script Assembly!"; + Log.Write(ErrorMessage); return; } @@ -193,16 +198,10 @@ namespace MudEngine.Scripting foreach (Type type in _ScriptAssembly.GetTypes()) { - //TODO: Re-implement StartupObject instancing only during Initialize calls. - //Remaining scripts should be instanced via a ScriptEngine.LoadObjectList() method. - //if (type.BaseType == typeof(StartupObject)) - //{ - GameObject gameObject = new GameObject(); - gameObject.Instance = Activator.CreateInstance(type); - gameObject.Name = type.Name; - - ObjectCollection._GameObjects.Add(gameObject); - //} + if (type.BaseType == typeof(BaseCharacter)) + { + + } } } diff --git a/MUDGame/..svnbridge/.svnbridge b/MudOfflineExample/..svnbridge/.svnbridge similarity index 100% rename from MUDGame/..svnbridge/.svnbridge rename to MudOfflineExample/..svnbridge/.svnbridge diff --git a/MUDGame/Environments/Zeroth.cs b/MudOfflineExample/Environments/Zeroth.cs similarity index 100% rename from MUDGame/Environments/Zeroth.cs rename to MudOfflineExample/Environments/Zeroth.cs diff --git a/MUDGame/MUDGame.csproj b/MudOfflineExample/MudOfflineExample.csproj similarity index 100% rename from MUDGame/MUDGame.csproj rename to MudOfflineExample/MudOfflineExample.csproj diff --git a/MUDGame/Program.cs b/MudOfflineExample/Program.cs similarity index 93% rename from MUDGame/Program.cs rename to MudOfflineExample/Program.cs index 443989f..c04e609 100644 --- a/MUDGame/Program.cs +++ b/MudOfflineExample/Program.cs @@ -42,6 +42,7 @@ namespace MUDGame game.ServerType = ProtocolType.Tcp; game.ServerPort = 555; game.MaximumPlayers = 1000; + game.IsMultiplayer = false; //Disables the server //Create the world BuildRealms(); @@ -54,7 +55,7 @@ namespace MUDGame //Player must be instanced AFTER BuildRealms as it needs Game.InitialRealm.InitialZone.InitialRoom //property so that it can set it's starting room correctly. - player = new BaseCharacter(game,true); + player = new BaseCharacter(game); //Add the player to the game. //Note once the server is fully implemented the player will be generated automatically by Game. //game.PlayerCollection.Add(player); diff --git a/MUDGame/Properties/AssemblyInfo.cs b/MudOfflineExample/Properties/AssemblyInfo.cs similarity index 100% rename from MUDGame/Properties/AssemblyInfo.cs rename to MudOfflineExample/Properties/AssemblyInfo.cs diff --git a/MudServer/MudServer.csproj b/MudServer/MudServer.csproj new file mode 100644 index 0000000..8e8a5bd --- /dev/null +++ b/MudServer/MudServer.csproj @@ -0,0 +1,66 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {5BA65833-A99D-486C-8E74-C11A0713D44A} + Exe + Properties + MudServer + MudServer + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + Zeroth.cs + + + + + + + {498943A8-DF5A-4DB0-B506-0BFF44788657} + MudEngine + + + + + \ No newline at end of file diff --git a/MudServer/Program.cs b/MudServer/Program.cs new file mode 100644 index 0000000..724ac24 --- /dev/null +++ b/MudServer/Program.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; + +using MudEngine.FileSystem; +using MudEngine.GameManagement; +using MUDGame.Environments; //Pulling this from the example game, no sense re-writing what already exists. + +namespace MudServer +{ + static class Program + { + static void Main(string[] args) + { + Game game = new Game(); + Zeroth realm = new Zeroth(game); + + realm.BuildZeroth(); + + //Setup the game + game.AutoSave = true; + game.BaseCurrencyName = "Copper"; + game.BaseCurrencyAmount = 1; + game.CompanyName = "Mud Designer"; + game.DayLength = 60 * 8; + game.GameTitle = "Test Mud Project"; + game.HideRoomNames = false; + game.PreCacheObjects = true; + game.ProjectPath = FileManager.GetDataPath(SaveDataTypes.Root); + game.TimeOfDay = Game.TimeOfDayOptions.Transition; + game.TimeOfDayTransition = 30; + game.Version = "0.1"; + game.Website = "http://MudDesigner.Codeplex.com"; + game.ServerType = ProtocolType.Tcp; + game.ServerPort = 555; + game.MaximumPlayers = 1000; + + Game.IsDebug = true; + + game.Start(); + + while (game.IsRunning) + { + Console.Write(Log.GetMessages()); + Log.FlushMessages(); + System.Threading.Thread.Sleep(1); + } + } + } +} diff --git a/MudServer/Properties/AssemblyInfo.cs b/MudServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ac57d42 --- /dev/null +++ b/MudServer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MudServer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MudServer")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5fd303bb-c0fa-40e1-aef2-b959665fc84a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MudServer/bin/Debug/..svnbridge/Scripts.dll b/MudServer/bin/Debug/..svnbridge/Scripts.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/MudServer/bin/Debug/..svnbridge/Scripts.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/MudServer/bin/Debug/Scripts.dll b/MudServer/bin/Debug/Scripts.dll new file mode 100644 index 0000000..47dccc7 Binary files /dev/null and b/MudServer/bin/Debug/Scripts.dll differ diff --git a/Readme.txt b/Readme.txt index db12135..aa2f2e3 100644 --- a/Readme.txt +++ b/Readme.txt @@ -17,10 +17,13 @@ to the project, development roadmap file and the projects design document. Not all of these files are completed files and are subject to change over the next few weeks. -The Mud Designer Source is included within the "Mud Designer" directory. -The source code can be modified by loading the Mud Designer.csproj file -into Microsofts Visual C# 2008 Express or newer. The Source Code requires -Microsofts .NET Framework 3.5 to compile correctly. +The Mud Designer Source is included within the "Mud Designer" directory, +however the designer is not being worked on at the moment due to a hefty +chunk of the engine being re-wrote. +The source code can be modified by loading the MudDesigner.sln file found +in the root directory of the source code. +You will need Microsofts Visual C# 2010 Express. The Source Code requires +Microsofts .NET Framework 4.0 to compile correctly. The File "Mud Designer.pod" is the project roadmap, and can be viewed by opening the file within the free OpenProject software found at