MM7 multiplayer project
MM7 multiplayer project
Hi, about two weeks ago I started to work on multiplayer version of MM7. To do this I will rewrite the game from scratch using Ogre3D engine. It's a big project so it takes time, I'll post updates in this thread if there are any and someone is interested.
So far I have working:
Terrain, model, lights and sprite rendering
Basic collision detection
Networking
Client / server synchronization (for example movement and turning)
What is not done:
Gameplay
UI
Inventory
Skills
Spells
AI
Login
Saving & loading
Pretty much everything
I plan to change few things with the game to better suit multiplayer. For example each player will only play as 1 character not party, removing turn based system from game, and some other stuff I haven't thought of yet. I would like to add custom content once this is all working. Also I should mention it will be more like MMO? type so there's just one server.
So far I have working:
Terrain, model, lights and sprite rendering
Basic collision detection
Networking
Client / server synchronization (for example movement and turning)
What is not done:
Gameplay
UI
Inventory
Skills
Spells
AI
Login
Saving & loading
Pretty much everything
I plan to change few things with the game to better suit multiplayer. For example each player will only play as 1 character not party, removing turn based system from game, and some other stuff I haven't thought of yet. I would like to add custom content once this is all working. Also I should mention it will be more like MMO? type so there's just one server.
- unknownone
- Pixie
- Posts: 132
- Joined: 10 Mar 2011
- Location: Italy
Wouldn't it be a better idea to add the multiplayer regime to the MM7 engine reconstruction project with teams, that to recreate a single character MM like game in another engine altogether? There are many single character games with fantasy setting that have multiplayer.
I'm not criticizing your idea, it's great to work on something like that, I would like to give just my idea.
I'm not criticizing your idea, it's great to work on something like that, I would like to give just my idea.
I've played and enjoyed many RPGs:
MM6,MM7,MM8,MM9, Fallout 1&2, Planescape Torment, Torment: ToN, TES3, TES4
MM6,MM7,MM8,MM9, Fallout 1&2, Planescape Torment, Torment: ToN, TES3, TES4
I considered it thoroughly. There were three choices, hack existing game to have multiplayer (worst option), use engine recreation project or create new from scratch. I chose the last because the engine recreation project is still a long way from being playable but most of all I don't understand their code, a lot of variables aren't named and this being a big project it's a deal breaker if I don't understand all of it. Besides writing it from scratch with multiplayer in mind has great advantages in the future, not to mention of course having an engine that isn't 15 years old
Interesting. Coincidentally I've just begun exploring the idea of rewriting the MM6-8 engine myself.
Few questions out of curiosity:
1) Why not just write an engine from scratch rather than using Ogre3D?
2) What synchronization model are you using [to enable multiplayer]?
Also, I don't think you should change such a fundamental game mechanic as the party (ie., multiple characters) for the sake of multiplayer; you could just represent a party in-game using a single character model (sure, it's not great looking, but it's not terrible either)
To be honest I can't fathom why they went in that direction when simply reimplementing the game in their own engine would not only allow more flexibility, but also end up being easier to develop.
Few questions out of curiosity:
1) Why not just write an engine from scratch rather than using Ogre3D?
2) What synchronization model are you using [to enable multiplayer]?
Also, I don't think you should change such a fundamental game mechanic as the party (ie., multiple characters) for the sake of multiplayer; you could just represent a party in-game using a single character model (sure, it's not great looking, but it's not terrible either)
I doubt anyone but the authors do. It looks like the majority of it is just decompiled from the original game machine code with some added annotations.I chose the last because the engine recreation project is still a long way from being playable but most of all I don't understand their code
To be honest I can't fathom why they went in that direction when simply reimplementing the game in their own engine would not only allow more flexibility, but also end up being easier to develop.
Because it's much easier to use an existing graphics engine than write one from scratch. It would take me probably months just to do something I can do in 15 minutes with Ogre.
I don't know how to answer second question. I'm not sure what the names of the things are. When a new object is created for client then server sends only the parts of the object that are different from default template of that object. For example if a monster is created then only it's template ID, instance ID and few other things are sent, client already knows what the rest are. If something changes with that monster then only those few changes are sent. I think it's somewhat similar to what WoW uses, if that helps.
I thought about removing party because the turn based part of the game will be removed and it would be too difficult to control four characters in real time with all the spells and such.
Now I'm also starting to have some doubts, if I'm going to change so many things then what's the point of even calling it MM, might as well just make a new game :\ but I don't know how to make sprites or textures so I don't know what to do really in the end.
I don't know how to answer second question. I'm not sure what the names of the things are. When a new object is created for client then server sends only the parts of the object that are different from default template of that object. For example if a monster is created then only it's template ID, instance ID and few other things are sent, client already knows what the rest are. If something changes with that monster then only those few changes are sent. I think it's somewhat similar to what WoW uses, if that helps.
I thought about removing party because the turn based part of the game will be removed and it would be too difficult to control four characters in real time with all the spells and such.
Now I'm also starting to have some doubts, if I'm going to change so many things then what's the point of even calling it MM, might as well just make a new game :\ but I don't know how to make sprites or textures so I don't know what to do really in the end.
I wouldn't be so sure about that. For instance, I began learning 3D programming (via Direct3D9) just yesterday, and --2 hours after learning how to coerce the API into rendering a triangle for me-- I'm rendering MM7 dungeons (ie., BLV files, the decoding of which, is what I've spent most of that time doing sadly)Because it's much easier to use an existing graphics engine than write one from scratch. It would take me probably months just to do something I can do in 15 minutes with Ogre.
(Yes, there's a bit of a texturing problem at the moment
Sounds like the dumb-client model.I don't know how to answer second question. I'm not sure what the names of the things are. When a new object is created for client then server sends only the parts of the object that are different from default template of that object. For example if a monster is created then only it's template ID, instance ID and few other things are sent, client already knows what the rest are. If something changes with that monster then only those few changes are sent. I think it's somewhat similar to what WoW uses, if that helps.
Removing turn-based mode is understandable, however I don't quite understand the last part: as in it would be too fast-paced in real-time multiplayer?I thought about removing party because the turn based part of the game will be removed and it would be too difficult to control four characters in real time with all the spells and such.
I have similar trepidation (I also can't draw for shit) however for me, I enjoy programming, and furthermore well-designed games should be heavily data-driven anyway, thus the particular title (whether it be an MM game, or a completely new game) is quite inconsequential as it should require little to no change code-wise.Now I'm also starting to have some doubts, if I'm going to change so many things then what's the point of even calling it MM, might as well just make a new game :\ but I don't know how to make sprites or textures so I don't know what to do really in the end.
I already can walk around in emerald island but to do that I converted MM format into something else. I think it's better that way because in the future I may want to add custom content and the MM format is crap.
Yes, that's what I meant, 4 characters are too difficult to play in real time mode, even when every spell can be bound to a hotkey.
There's actually a lot done already.
On client side:
* terrain system (auto loading / unloading terrain cells so all the world could be in the same place without loading screens)
* static objects like houses, bridges and such, also automatically load / unload based on distance
* sprites + animations
* lights
* collision detection + walking around
* mouse looking
* mouse picking - done but not used anywhere yet
* gui system, the system itself is ready but i haven't made any in game GUI yet except console window that helps me test, like in old quake games
* binding any action to key / mouse
* networking - all of in game stuff is server based
On server side:
* keeping track of who should see what and sending updates to clients
* SQL database
* instanced map support
* inventory functionality - not tested yet on client side because no UI for this is implemented
* loot functionality - not tested yet also because combat is not implemented
Also a bunch of stuff is half done which I didn't mention here.
Yes, that's what I meant, 4 characters are too difficult to play in real time mode, even when every spell can be bound to a hotkey.
There's actually a lot done already.
On client side:
* terrain system (auto loading / unloading terrain cells so all the world could be in the same place without loading screens)
* static objects like houses, bridges and such, also automatically load / unload based on distance
* sprites + animations
* lights
* collision detection + walking around
* mouse looking
* mouse picking - done but not used anywhere yet
* gui system, the system itself is ready but i haven't made any in game GUI yet except console window that helps me test, like in old quake games
* binding any action to key / mouse
* networking - all of in game stuff is server based
On server side:
* keeping track of who should see what and sending updates to clients
* SQL database
* instanced map support
* inventory functionality - not tested yet on client side because no UI for this is implemented
* loot functionality - not tested yet also because combat is not implemented
Also a bunch of stuff is half done which I didn't mention here.
May I ask how the end result should look like? In MM, players don't have anything to represent them in the world. To monsters, you are just an invisible object.
I think it's rather pointless to make a multiplayer when you cannot see other players. Are you going to make every player just play a single character, or control a whole party? And what about the respawn times for dungeon?
I feel that, apart from the coding standpoint there are other major obstacles to overcome.
I think it's rather pointless to make a multiplayer when you cannot see other players. Are you going to make every player just play a single character, or control a whole party? And what about the respawn times for dungeon?
I feel that, apart from the coding standpoint there are other major obstacles to overcome.
Right now I use monster sprites for player (for example Guard).
Everyone plays one character, this was just explained in the last post why.
Dungeon is instanced so multiple partys can go to same dungeon and not see each other. Each of the party would play their own dungeon. As for outside of dungeon respawn times are individual for each monster, I haven't decided yet how long the respawn times should be for either.
There are many obstacles to overcome on every aspect of the game, not just coding.
Everyone plays one character, this was just explained in the last post why.
Dungeon is instanced so multiple partys can go to same dungeon and not see each other. Each of the party would play their own dungeon. As for outside of dungeon respawn times are individual for each monster, I haven't decided yet how long the respawn times should be for either.
There are many obstacles to overcome on every aspect of the game, not just coding.
Indeed, migrating to a different format is the way to go, although my point was more that the native 3D APIs are not as unweidly as you may think -- especially given the simplicity of MM's requirements.I already can walk around in emerald island but to do that I converted MM format into something else. I think it's better that way because in the future I may want to add custom content and the MM format is crap.
It would just pose more a challenge. Besides, thinking about it some more, I'm not sure how MM-multiplayer would work. The only way I can conceive it would be to have the entire game instanced and allow a small number of players to join each instance -- although that still leaves many questions to be answered. Personally, the only aspect of multiplayer I'd be interested in would be PvP anyway to provide a late-game challenge.Yes, that's what I meant, 4 characters are too difficult to play in real time mode, even when every spell can be bound to a hotkey.
--
Sounds like you've done quite alot; any chance of a demo?
EDIT: Also, mind sharing some light on the BLV format? The reference documentation is a bit sketchy and I'm having to correlate it with the source of MM7Viewer. The main issue I'm having is with texturing and understanding precisely what each faces vertices are meant to be (it would seem a standard triangle-list, however there's always remainder vertices). Or, just point me to some source code that's fine too as I can't seem to find any tool other than mm7viewer that works with BLV.
EDIT2: After hacking in a DX proxy interface into MM7 to watch the D3D calls, it seems the game actually uses triangle-fans (and not lists)... that explains a lot.
It makes no sense to me to use native API if someone has done all the work already.
Only instances are instanced, the world maps are not instanced and all players can see and interact with each other in there.
The format is not a triangle list. Take a look at open source engine recreating project https://www.assembla.com/code/mm7/mercurial/nodes They have both BLV and ODM working.
Only instances are instanced, the world maps are not instanced and all players can see and interact with each other in there.
The format is not a triangle list. Take a look at open source engine recreating project https://www.assembla.com/code/mm7/mercurial/nodes They have both BLV and ODM working.
Showing some progress with GUI and other stuff
I made a console to test GUI system, like in old quake games. Behind you can also see the alchemist building of emerald island and the terrain. Distance fog and sky doesn't exist yet so it's just ends and black sky for now Also the water is not animated yet and shore displays wrong but you can't see it on this image.
I made a console to test GUI system, like in old quake games. Behind you can also see the alchemist building of emerald island and the terrain. Distance fog and sky doesn't exist yet so it's just ends and black sky for now Also the water is not animated yet and shore displays wrong but you can't see it on this image.
- Salamandre
- Genie
- Posts: 1032
- Joined: 13 May 2006
- Location: France
- Contact:
Re: MM7 multiplayer project
Still working on it, default8p?
- Bandobras Took
- Genie
- Posts: 1019
- Joined: 06 Jan 2006
Re:
Though sometimes, if the corpse lingers long enough, somebody else comes along who actually does do the project.Salamandre wrote:Forget, if not already dead, such project will die before next year. People have no sense of realistic proportions.
Far too many people speak their minds without first verifying the quality of their source material.
Who is online
Users browsing this forum: No registered users and 0 guests