• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

242 Neutral

About EmpireProductions

  • Rank
    Advanced Member
  1. MMORPG Prototype - Testers needed!

    I am developing a MMORPG Framework using Lidgren and Unity3D. I need some people to help test it out. This test will be a test to make sure my router is setup correctly to allow incoming connections and to test the server side Interest Management. So far there are no game features accept pressing "1" will cause you to shoot a fireball. Login Screen - Type in any username and password these are not checked yet because there are no user Accounts. Character Creation screen - Just click on Enter World. Once in the world a random character will be generated for you. Graphics - My goal for this Framework is to allow for Graphics similar or slightly better then World of Warcraft. To make sure it can handle those types of graphics and I am using assets from the World of Warcraft for placeholders and testing only! Once I start work on a full MMO I will replace all models! Client Download - http://www.riseofheroesmmo.com/Download/Client.rar
  2. MMO Architecture

    In my setup the Login Server handles everything before entering the world (Login, Character Creation, Character selection). Once the player selects the character he/she wants to use and presses Enter World the Login server sends the Connection Information for the Region server to the client and then the client disconnects from the login server and connects to the Region server.
  3. Server side AI

    I was wondering what the best way to handle AI would be? I am using Lidgren for the networking. Here is what I was thinking of doing: Region Server - Headless Unity Server - Controls the Physics simulation and Player Movement for a small Region. AI Server - Headless Unity Server - Connects to the Region Server just like a client and Handles a portion of the AI Entities for the region. You can have as many AI Servers as you want so you can have some advanced AI Actions. Features Server - Console Server - Handles all other features of the game for the Region. Connects to the Region Server. Client - Unity3D based Standalone Client - Connects to the Region Server. All messages are passed to the Region server where they are then sent to which ever server handles the Intended Game Feature. (For example if it was a Combat Message that the client sent to the Region Server it would be passed on to the Features Server for it to be handled there.) My problem with doing it this way is that I tested a fairly basic Client in headless mode and my CPU was at 100%. For development I am running the server and client on the same machine. There would be no way I could have 2 Headless Servers, a Console Server, and a Client running all at the same time on my PC! What other ways are there to handle AI and Physics on the server?
  4. C# Variables imported into a IronPython Script

    [quote name='Rainweaver' timestamp='1296163932' post='4765860'] [quote name='EmpireProductions' timestamp='1296135581' post='4765597'] After I write this I will be fooling around with this myself but in case I can't figure it out how would I get some Variables into a Python Script? I have a IronPython Scripting Engine that I wrote that I am able to Load Python Scripts into my Server. However now I would like to have the Combat Calculations done with in a python script so I can tweek them with out having to always recompile my server. In order to do that I will need to get the id of the attacker and the victim so I can use it in the script. How would I do that? [/quote] You should be able to create a ScriptScope from the IronPython engine and create / retrieve variables. See if this helps: [url="http://www.voidspace.org.uk/ironpython/dlr_hosting.shtml"]http://www.voidspace...r_hosting.shtml[/url] [/quote] Figured it out! Thanks! In case any one else wanted to do something similar here is my code: [code] public PythonCombatResult doCombat(long victimId, long attackerId) { //Put the needed Variables into Python scope.SetVariable("victimId", victimId); scope.SetVariable("attackerId", attackerId); //Execute Python Script engine.ExecuteFile(_nonImportDirectory + "Combat.py", scope); //Retrieve the needed Variables from Python float playerHealth = (float)scope.GetVariable("playerHealth"); bool won = (bool)scope.GetVariable("won"); //Create and populate the result structure PythonCombatResult result; result.attackerWon = won; //Debug Write to Console Console.WriteLine(playerHealth); //Return the results return result; } [/code] [size="2"][/size] scope.SetVariable([size="2"][color="#a31515"][size="2"][color="#a31515"]"victimId"[/color][/size][/color][/size][size="2"], victimId); this line takes a C# variable and places it into Python accessable by the string name in this case victimId [size="2"][color="#0000ff"][size="2"][color="#0000ff"]float[/color][/size][/color][/size][size="2"] playerHealth = ([/size][size="2"][color="#0000ff"][size="2"][color="#0000ff"]float[/color][/size][/color][/size][size="2"])scope.GetVariable([/size][size="2"][color="#a31515"][size="2"][color="#a31515"]"playerHealth"[/color][/size][/color][/size][size="2"]); This line of code gets a Python Variable and puts it into C#[/size][/size]
  5. After I write this I will be fooling around with this myself but in case I can't figure it out how would I get some Variables into a Python Script? I have a IronPython Scripting Engine that I wrote that I am able to Load Python Scripts into my Server. However now I would like to have the Combat Calculations done with in a python script so I can tweek them with out having to always recompile my server. In order to do that I will need to get the id of the attacker and the victim so I can use it in the script. How would I do that?
  6. I have a very general Server Design Question. In Most MMOs Combat and Quests for the most part go hand in hand. They are also 2 of the most commonly used features. Should I make 1 server that contains both Combat and Quests that way when a Player defeats a mob the combat part of the server can directly send the information to the Quest Manager to find out if it was a quest objective. Or should I break them up into 2 different servers and once the client gets the response back from the combat server that the mob was defeated have the client send the information to the quest server. So far because it takes alot of coding to get a server operational I have been using the Combat server for testing out the Quest system. I have been keeping the files neatly seperated so it would be easy to move the quest files over to the new project for the Quest Server. But after thinking about it I am thinking about just keeping the Quest stuff on the combat server atleast until it becomes a problem. What do others think about this?
  7. Hadeon Online - (M) MORPG

    Seems like from your story idea that every person will be THE Hero. For a MMO you really can't have a story thats based on a single hero and have every person be that hero. For a MMO you need a story involving many heros and let the players be those heros. For example have the story be about a Army and let the players be the members of that army. Also 6 months may not be realistic depending on what your aiming to release with the first Alpha Test. What features do you want to be complete at the first Alpha test? Depending on the size of your team my best suggestion is to aim to have a Authentication system in place and then the ability to move around and chat with other players online. Maybe a few buildings, trees, ect scattered around the place to make it more interesting. PM me if you would like help with programming! My engine could be ready for a first alpha test like I am describing in about 3 months instead of 6 months!
  8. Computer crash/Virus

    Quote:Original post by tstrimp By "these forums" I assume you mean some shady porn site. [grin] Nuke it from orbit, it's the only way to be sure. lol no by these forums I mean Gamedev.net I was waiting for a reply to my post in the Game programming forum about Terrain paging.
  9. Computer crash/Virus

    Ok why does it say some one responsed yet I am unable to see the response?
  10. Computer crash/Virus

    This afternoon while looking through these forums I got a real nasty virus I have been trying to deal with for the rest of the afternoon and evening. It was the FakeSpypro virus. I am completely lost as to what to try next. I got the virus and at first windows defender was doing a pretty good job or so I thought of keeping it out but then one system after another started crashing including windows defender. Task Manager was disabled. I then just shut down the computer and restarted. Upon restarting I was presented with a blue screen of death saying that windows was unabled to startup. It once again restarted and booted into startup repairer. Now heres where things really go wrong! I run startup repairer and it asks me if I want to restore the system to a earlier restore point. I click yes and I am guessing about half way through the power goes out. The power comes back on after only a second or 2 and I attempt to run System restore again. This time it finishing but says that it was unable to restore because it can't create a file that already exists. So I load windows normally and I get to the desktop and everything and I do mean everything starts crashing right away accept for sound, the Internet connection, and windows Defender. I scan the computer using windows defender and I remove the fakespypro virus then restart my computer. Again everything starts crashing as soon as the desktop comes on. I then attempt to run System restore a couple more times still same error message. I boot into safe mode with command prompt and type in sfc /scannow the scan finds no errors. I have done memory checks all of which comes back normal. The only other option I can think of is a complete Hard drive wipe but I have alot of stuff not backed up and while I was able to remove my most important files and get them onto this computer I would still rather not have to reinstall everything! Any suggestions would be great!
  11. Paged Terrain question

    I am using Ogre3D for a MMO Client and so I am using Ogre's new Paged terrain. I have my world broken up into regions each region being 1 terrain page. The Idea is that when the player moves to with in a certain distance of the edge of the region the server sends the client a command to load the next region. The server knows the names and locations of every region. Now my problem is how to figure out on the server when a player moves to with in a certain distance of the edge of the region. The Server knows the paged location but not the world location of each region. For example Region0x0 has a paged location of x0, y0, Region0x1 then has a location of x0, y1 with in the Terrain Engine. The Center of Region0x0 is located at a world location of x0, y0 and each region is currently 5000 units across. The center of Region1x1 would then be located at a World location of x5000, y5000. My question is is there any math equation that I could use to figure out what region the player is currently on and the distance to the edge of that region?
  12. ICEWorlds MMO Creation Package

    I would like to introduce ICEWorlds MMO Creation Package. About ICEWorlds: ICE stands for Internet Communications Engine which is the Networking library used in ICEWorlds. ICEWorlds started out as the ICEPlayer Demo which was a rewrite of the Player Demo for Ogre3D and RakNet. The rewrite removed the RakNet code and added in it's place ICE RPC calls between client and server. Version 1 of the ICEPlayer Demo was just replacing RakNet with ICE. Shortly after Version 1's release Version 2 was released with Editor support and basic Scripting support. With the inclusion of Editor support worlds could now be built using Ogitor (a Ogre3D Editor) and the server would read the resulting .scene xml file. When a Client logs in the server sends the scene data (static object placements) to the client. The goal of ICEWorlds is to be everything that Multiverse started out to be but to this point has failed to accomplish. Our goal is to be the leading Indie MMO creation package. ICE's Server Grid technology which allows grids of over 80 servers working together to serve over 10,000 concurrent users in a single zoneless world will help us to accomplish these goals. About Scripting: So far scripting is still very basic. Scripts are created using Lua. As of right now Scripts can be used to define Static Objects (disabled for right now), Items, Quests, and soon mobs. Scripting will be added to other areas as development continues and the need arises. Items: item = Item("Long Sword") InventoryManager:addItem(item) There will be more options for Items but I was trying to test it so I just did what was needed in order to test it. Static Objects (Buildings, signs, ground clutter, ect): object = StaticObject("smithyA") object:MeshName("models/cg_smithy/cg_smithy.mesh") object:MaterialName("") object:Location(3061,128,5790) object:Scale(13) ObjectManager:addStaticObject(object) Quests: quest = KillQuest("Kill Quest") quest:Description("This is just a test Quest!") quest:Goal("Start the Server") quest:Goal("Make sure this works") quest:Reward(InventoryManager:getItem("Long Sword")) QuestManager:KillQuest(quest) quest = CollectionQuest("Collection Quest") quest:Description("This is just a test Quest!") quest:Goal("Start the Server") quest:Goal("Make sure this works") quest:Reward(InventoryManager:getItem("Wooden Stick")) QuestManager:CollectionQuest(quest) About World Editing: World Editing is done using Ogitor (http://www.ogitor.org/HomePage) - which is the editor of choice for ICEWorlds and the only officially supported editor. Any editor which export Ogre3D's .scene files could be used however if there are any slight differences in the layout of the exported .scene file it could cause problems with the Server. For now only Static Object data (position, scale, rotation, ect) is loaded by the server and sent to the client. I will be adding importing of the Environment data (fog, skybox, skydome, camera far clip distance, ect) as well as the terrain page data in the near future. What I am looking for: I am looking for indie teams who would be willing to work with me by working with ICEWorlds, creating worlds (for now) which can be used as promotional material. During the time your creating worlds also send me any feedback (comments, suggestions, bugs, ect) so together we can make the goals of ICEWorlds happen! Where can I download ICEWorlds? PM me to let me know your interested in using ICEWorlds and I will send you the link!
  13. I am using the RedDwarf Server (Project Darkstar) and I am trying to convert my packet class to a ByteBuffer. Packet Class: package common; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.nio.ByteBuffer; import java.util.HashMap; public class Packet implements Serializable{ /** * */ HashMap<String,Object> hash = new HashMap<String,Object>(); private static final long serialVersionUID = -3039364606806310145L; public Packet(){} public void write(String dataKey, Object _data) { hash.put(dataKey, _data); } public ByteBuffer getBuffer(){ ObjectOutputStream ostream; ByteArrayOutputStream bstream = new ByteArrayOutputStream(); try { ostream = new ObjectOutputStream(bstream); ostream.writeObject(this); ByteBuffer buffer = ByteBuffer.allocate(bstream.size()); buffer.put(bstream.toByteArray()); buffer.flip(); return buffer; } catch(IOException e){ e.printStackTrace(); } return null; } //@SuppressWarnings("unchecked") public Object getData(String dataKey) { return hash.get(dataKey); } } Then on the server: Packet pack = new Packet(); pack.write("Message", "this is a message!"); channel.send(session, pack.getBuffer()); Then to decode the ByteBuffer on the client: public void receivedMessage(ByteBuffer message) { byte[] byts = new byte[message.capacity()]; message.get(byts); ObjectInputStream istream = null; try { istream = new ObjectInputStream(new ByteArrayInputStream(byts)); Object obj = istream.readObject(); if(obj instanceof Packet){ String _message = (String)((Packet)obj).getData("Message"); appendOutput(_message.); } } catch(IOException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); } } Now everything works pretty good but when I go to print out the message a bunch of extra text was added to the data. Can any one see anything that I am doing wrong here?
  14. Guild Design issues

    I am trying to design the guild system for a Historically based MMO (yes I know if you look up my other posts you will find that I move around alot but I have finally landed a job as the Lead Programmer for a Indie Dev. team). The server is being created using Photon from ExitGames and so the server extensions/modules are made using C#. My question is what is the best way to approach creating a solid Guild system? So far I have a Guild Object/Class with the very basics needed for creating the guild. When the server gets a guild creation request it will send the request to the Guild Manager and the guild manager will create a new copy of the guild object and populate it with the needed information (leader id, guild name, guild description, guild Government style, ect). Likewise when the server gets a AddMember message it will send the request to the guild manager and will add the giving user name to the giving Guild Object. The Guild Manager will store all of the guild objects in a hashtable with the Guild's Id as the key. The guild information will be saved in a database and upon the server starting the guild objects for each guild will be created and saved back into memory. Does this sound like a logical approach to doing guilds or is there a better way that they should be done?
  15. IronPython Question

    This is a scripting question however it since hardly any one ever goes into the scripting section I am placing it here. Mods if you want to move it that is ok. I was trying to get Lua working with my C# Server however after running into problems with it and doing some research I have decided to switch to IronPython. Now I have IronPython setup and things seem to be working however what I am interested in having my scripts be is something like this: KillQuest quest = new KillQuest("Quest Name"); So far I am able to do the following: KillQuest.AddReward('test',1) which AddReward is one of the methods in my C# class I am trying to expose to Python Scripts. Any one know how to get it setup the way I want it to be setup? My Code so far: public class ScriptingEngine { ScriptEngine engine; ScriptScope scope; private static ScriptingEngine instance = null; private ScriptingEngine() { engine = Python.CreateEngine(); scope = engine.CreateScope(); } public static ScriptingEngine getInstance() { if (instance == null) { instance = new ScriptingEngine(); } return instance; } public void exposeClasstoPython(string pythonName, Object _obj) { scope.SetVariable(pythonName, _obj); } public void runScript() { ScriptSource source = engine.CreateScriptSourceFromString("KillQuest.AddReward('test',1)", Microsoft.Scripting.SourceCodeKind.Statements); source.Execute(scope); } }
  • Advertisement