MM7 multiplayer project

The role-playing games (I-X) that started it all and the various spin-offs (including Dark Messiah).
default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

MM7 multiplayer project

Unread postby default8p » 29 Nov 2014, 15:57

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.

User avatar
unknownone
Pixie
Pixie
Posts: 132
Joined: 10 Mar 2011
Location: Italy

Unread postby unknownone » 29 Nov 2014, 21:36

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've played and enjoyed many RPGs:
MM6,MM7,MM8,MM9, Fallout 1&2, Planescape Torment, Torment: ToN, TES3, TES4

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 29 Nov 2014, 23:21

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 :)

Emjayen
Peasant
Peasant
Posts: 53
Joined: 01 Aug 2013
Location: Sydney, Australia
Contact:

Unread postby Emjayen » 23 Dec 2014, 01:10

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)
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
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.

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.

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 23 Dec 2014, 09:58

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.

Emjayen
Peasant
Peasant
Posts: 53
Joined: 01 Aug 2013
Location: Sydney, Australia
Contact:

Unread postby Emjayen » 23 Dec 2014, 10:47

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 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)

Image

(Yes, there's a bit of a texturing problem at the moment :)
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.
Sounds like the dumb-client model.
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.
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?
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 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.

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 23 Dec 2014, 13:00

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. :D

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.

User avatar
Konfuzius
Pixie
Pixie
Posts: 127
Joined: 03 Jan 2009

Unread postby Konfuzius » 23 Dec 2014, 16:55

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.

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 23 Dec 2014, 19:06

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.

Emjayen
Peasant
Peasant
Posts: 53
Joined: 01 Aug 2013
Location: Sydney, Australia
Contact:

Unread postby Emjayen » 23 Dec 2014, 22:10

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.
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.
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.
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.

--

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.

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 24 Dec 2014, 10:53

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.

User avatar
Xdarkon
Pixie
Pixie
Posts: 131
Joined: 28 Apr 2013
Location: Andover, Hampshire

Unread postby Xdarkon » 24 Dec 2014, 17:08

default8p wrote:Right now I use monster sprites for player (for example Guard).
You could also maybe import sprites from Might and Magic VIII? I imagine the Dragon Slayers would make more bad-ass sprites for players

User avatar
Bloax
Pixie
Pixie
Posts: 113
Joined: 30 Dec 2011
Location: Most likely not here. :c

Unread postby Bloax » 25 Dec 2014, 04:56

I would much rather prefer playing MM7 with one player controlling the movement (and perhaps a character) and other players controlling the single characters.
(I.e. they share the same screen.)

But maybe that's just me.

default8p
Leprechaun
Leprechaun
Posts: 20
Joined: 12 May 2009

Unread postby default8p » 28 Dec 2014, 14:51

Showing some progress with GUI and other stuff :)

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 :D Also the water is not animated yet and shore displays wrong but you can't see it on this image.

RobMM8
Leprechaun
Leprechaun
Posts: 21
Joined: 07 Oct 2013

Unread postby RobMM8 » 26 Jan 2015, 05:28

I love the idea, and the screenshots look promising.

User avatar
MadMax
Swordsman
Swordsman
Posts: 579
Joined: 20 Aug 2008
Location: Sweden

Unread postby MadMax » 13 Feb 2015, 20:14

WOW! This is like a dream come true! Never ever let this project go! This is great! It would be epic to be able to interact with others and play the game together! :D
"By the power of Zelas!"

User avatar
Salamandre
Genie
Genie
Posts: 1032
Joined: 13 May 2006
Location: France
Contact:

Unread postby Salamandre » 13 Feb 2015, 20:22

Forget, if not already dead, such project will die before next year. People have no sense of realistic proportions.

Emjayen
Peasant
Peasant
Posts: 53
Joined: 01 Aug 2013
Location: Sydney, Australia
Contact:

Re: MM7 multiplayer project

Unread postby Emjayen » 04 Dec 2015, 23:58

Still working on it, default8p?

User avatar
Bandobras Took
Genie
Genie
Posts: 1018
Joined: 06 Jan 2006

Re:

Unread postby Bandobras Took » 05 Dec 2015, 14:59

Salamandre wrote:Forget, if not already dead, such project will die before next year. People have no sense of realistic proportions.
Though sometimes, if the corpse lingers long enough, somebody else comes along who actually does do the project. :)
Far too many people speak their minds without first verifying the quality of their source material.


Return to “Might and Magic”

Who is online

Users browsing this forum: Bing [Bot] and 63 guests