Multiplayer Development

Everything about development and the OpenMW source code.
User avatar
raevol
Posts: 3093
Joined: 07 Aug 2011, 01:12
Location: Caldera

Re: Multiplayer Development

Post by raevol »

psi29a wrote:I'm honestly ashamed at how people here are fear mongering.
I'd like to echo this.

This community has made me really proud with its ability to keep all the usual Linux-community and gamer-community schlock behavior out of it. Let's not suddenly turn things sour just because someone wants to make a contribution that will have zero effect on you whatsoever.
User avatar
krugman25
Posts: 19
Joined: 16 Jun 2015, 18:16
Location: Small town in Iowa
Contact:

Re: Multiplayer Development

Post by krugman25 »

Thanks psi29a, lysol, raevol. This is the kind of thing of support I was hoping to see out of the OpenMW dev community. That means a lot to outside devs like me that would like try and contribute to this project, whether or not that work ever gets pulled into the main build. You never know what to expect being on the outside and coming into a community like this, so I approached cautiously. Your words are encouraging and I am looking forward to popping the hood on OMW and seeing what it can do. Thanks for the python example psi29a, that puts any concerns I had to rest. I am looking forward to forking OMW! :D
SquireNed
Posts: 403
Joined: 21 Dec 2013, 22:18

Re: Multiplayer Development

Post by SquireNed »

I mean, any MP being added would not at all impact the standard single player experience. It's not like Just Cause 2 MP where it's a change out of the executable and the only way to play is via server, it's just a way to begin making the OpenMW engine more feasible for things that aren't MW, and allow people to experiment with making MW a multiplayer experience (I'm not sold on it being particularly enjoyable, just due to the way the system works, but there could be some interesting shenanigans, especially with additional mods).
Parmenion
Posts: 3
Joined: 18 Jun 2015, 07:05

Re: Multiplayer Development

Post by Parmenion »

like others said, the difficult part will be the integration of a "multiple player-actor concept" into an engine that has been designed to be strictly single-player centric. the networking code and any new additional use-cases for interaction between players you might have in mind is quite trivial in comparison.

just an idea:
1 create a "bot-mode" in OpenMW. make an AI-controlled main-actor (no matter how simple the AI) and a non-interactive watcher-mode for the player (like watching Civ with only AI-controlled empires)
2 add support for multiple simultaneous bots
3 integrate bots in normal player-controlled game mode.
4 add those fancy networking staff

that way you solve the most difficult problem first without having to do too much at the same time just to get to a PoC.

this was the way I did a working multiplayer NetHack fork long time age.

also: hello to all.
User avatar
krugman25
Posts: 19
Joined: 16 Jun 2015, 18:16
Location: Small town in Iowa
Contact:

Re: Multiplayer Development

Post by krugman25 »

Parmenion wrote:like others said, the difficult part will be the integration of a "multiple player-actor concept" into an engine that has been designed to be strictly single-player centric. the networking code and any new additional use-cases for interaction between players you might have in mind is quite trivial in comparison.

just an idea:
1 create a "bot-mode" in OpenMW. make an AI-controlled main-actor (no matter how simple the AI) and a non-interactive watcher-mode for the player (like watching Civ with only AI-controlled empires)
2 add support for multiple simultaneous bots
3 integrate bots in normal player-controlled game mode.
4 add those fancy networking staff

that way you solve the most difficult problem first without having to do too much at the same time just to get to a PoC.

this was the way I did a working multiplayer NetHack fork long time age.

also: hello to all.

I never really thought of approaching it from that angle. Those were great tips. Thank you.
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: Multiplayer Development

Post by sjek »

what comes in mind from scripts

onactivate command generally takes from player activating and can contain messageboxes rendered on screen. memory tells that there's sometimes get/set/mod functions without needing specify player. trapped / activated doors and containers, etc. sandboxing those to whoever activates could solve it.
for the gimmicks of vanilla scripting if player-> is specified the nearest taken as target for simple one.

sandboxing also for getPCjumping, PCrace, getcollidingPC, etc. meaning that it would somehow run separately for every player / bot in the game?

global means that there's no specified object or cell where it's bound, free to run every frame everywhere kinda.
local script also runs on every frame but is bound to specified place / cell.

https://wiki.openmw.org/index.php?title ... :Scripting
http://www.uesp.net/wiki/Tes3Mod:Catego ... ction_List

under development so bugs there and here, can be honed later :') .p
orc
Posts: 2
Joined: 21 Jun 2015, 08:53

Re: Multiplayer Development

Post by orc »

Hey krugman good luck with your project!

I do not have a lot of experience with development in any field, but if you want a non-invasive multiplayer addon, what if you created mod loader of some sort which will disable the single-player characteristics and loads ones that will not restrict co-op gameplay?
User avatar
krugman25
Posts: 19
Joined: 16 Jun 2015, 18:16
Location: Small town in Iowa
Contact:

Re: Multiplayer Development

Post by krugman25 »

orc wrote:Hey krugman good luck with your project!

I do not have a lot of experience with development in any field, but if you want a non-invasive multiplayer addon, what if you created mod loader of some sort which will disable the single-player characteristics and loads ones that will not restrict co-op gameplay?
At this point, unless I learn something new that will change my mind, I am planning on creating new multiplayer classes that inherit and override the regular OpenMW classes. That way I am not changing any of the OpenMW source code, but just extending current functionality.

While I am here, here's an update thus far. Last week I spent the entire weekend getting everything set up. I have Linux,Windows and Mac OS to test on but I am going to be doing all of the development in Ubuntu. I would like to eventually get the source successfully compiling on Windows so I can debug over there if I so choose, but it's not a top priority right now.

I have the osg branch compiling on my Ubuntu now. I have zero experience with the libraries used in OpenMW and I haven't used C++ for about 5 years so I have a little bit of a curve to overcome before I really start moving fast with this. I have already begun adding a little bit of GUI to create a separate multiplayer interface, and have begin developing the ENet sandbox applications. According to the list below I am just getting going on phase 1 of this little project. I will describe in detail all of the phases of development below.

Phases are separated out based on how they affect the the OMW engine. I see that as outside of the engine, the visual part of the engine and finally the Morrowind specific in-game mechanics.

Phase 1:Non OMW Testing - External sandbox applications are developed to test MP features what will be eventually added to OMW.
Phase 2: Partial OMW Network Intigration - Features will begin being added to OMW and functionality of the features in OMW will be tested against already build and tested external sandbox applications. This phase includes the minimal amount of GUI and non networking related modification to test MP features.
Phase 3:Full OMW Network Intigration - All networking based features will be implemented into OMW and all features will be tested against other OMW instances.
Phase 4:In Game Modification - This is the last phase with could be broken down into a lot of smaller phases but this will include any changes required for the game to operate successfully with having more than 1 main player. This itself will be implemented in phases such as simply getting multiple character models in the same instance, handling character to character and character to NPC interaction, saved games, mods, etc. At this point this phase is not really on my radar at all. We will cross this bridge when we get here :)


My action steps moving forward are as follows...
Phase 1:Non OMW Testing
  • Create a simple ENet client connection to an ENet server using console application that implements full functionality that will be seen in OpenMW implementation
Phase 2: Partial OMW Network Intigration
  • Add server functionality into a single player M1orrowind game
  • Connect ENet client console application to Morrowind Server and send all Morrowind in-game activity to client console application.
  • Connect multiple ENet console clients to ENet OpenMW Server, send information to all peers and have peers send information back to the host, ensure events are triggering on both ends and information is transferring correctly

Phase 3:Full OMW Network Intigration
  • Begin inheriting and overriding MW classes to introduce a mutliplayer game instance that supports multiplayer client/server functionality.
  • Test OpenMW client to OpenMW server connetivity. All clients will simply be viewing the hosts player as a passive client.
  • Finish gui's for launching a multiplayer instance and joining another players multiplayer instance
Phase 4... we'll cross that bridge when we get there :D
User avatar
Pop000100
Posts: 82
Joined: 18 Aug 2014, 21:17
Location: Loitering around Gnisis.

Re: Multiplayer Development

Post by Pop000100 »

good to know there is some follow through most of these things die before they see any progress.
best of luck(this is the reason i started following OpenMW, multiplayer)
User avatar
gus
Posts: 390
Joined: 11 Aug 2011, 15:41

Re: Multiplayer Development

Post by gus »

you might want to look at raknet, it is really good (and they have this awsome replication thing). I was even bought by oculus ;)
Post Reply