Zyrius93 Posted April 7, 2015 Share Posted April 7, 2015 Greetings, fellow modders! Nearly two weeks ago I started a thread in the Steam Workshop in search of a team of developers. Unsuccessful in this regard I came to the Nexus. I'd like to backlink to said topic. Unfortunately, due to the complexity of Skyrim's game engine, writing an entire server which emulates the game, is currently out of question, thus only a host-based solution which relies on a person running the game is viable. This requires us to synchronize players with the host. To ensure this synchronization, we'd "intercept" specific engine function calls, such as ObjectReference.placeAtMe, and various event triggers. Being a newcomer to Skyrim modding itself (but not to modding or programming in general), I'd still need to figure out how events are triggered. From what I understand intercepting these events is vital for manually triggering and preventing automatic quests triggers and/or animations - correct me if I am misguided here. It should be negotiable to provide a small installer for the mod as nonetheless client and server executables and/or DLLs (written in c++, both at least partially as SKSE plugins) would have to be provided anyway. It should be negligible effort to include a patcher in the SKSE plugins which - upon launching the game - patch .pex files to redirect certain script calls like the one mentioned above to another function (in this case also injected into ObjectReference.pex) which then handles the synchronization by simply ignoring client-side calls. The actual call would only happen if instructed by the host. If the impact turns out too large, we'd simply take the SKSE route and patch all files with a standalone executable. Similar to FNIS, this would have to be done everytime a script is installed. My first goal, whatsoever, is to assemble a small team of programmers for this project. My spare time is extremely limited to at max two hours a day except Saturday starting with tomorrow such that developing the project all by myself would never come to an end. Note that this project differs greatly from Skyrim Online which has received an update after two long years of silence just at the end of last year. I even thought it was dead... Anyway, Skyrim Online tries to develop an MMORPG mod for the game, we simply want a "locally hosted" multiplayer mod to play with a few friends. Another great difference is that we will be able to support mods in our project, while Skyrim Online without doubt cannot allow many mods due to the nature of an MMO. Of course this would be just a fraction of what needs to be achieved for this rather large project. AI in particular is going to be a bugger. But given previous experience and high determination, I'm certain we can manage this project. Please, do read through the main thread in the linked Workshop discussion as it provides much greater detail on what I've worked out a while ago. I haven't updated everything yet, those updates can be found among the comments. For those in doubt due to my low previous participation, I am a professional part-time programmer. The other part of my time I spend with academic studies of computer science. Like many other nerds at my university, I've begun programming at a young age. So far, I have 9 years of experience in many different programming languages:Web-based programming - HTML, CSS, JS, PHPJava - Minecraft moddingC++ - the second language I had learnedC# - as part of an internshipPython - I'd love to be a Linuxian, but the amount of games I play... well, we know the story.Visual Basic for ApplicationsHaskell, Prolog - as part of my academic studiesI've always found a way to get my programs to work. As such I am confident that we can get this mod to work as well. "Nothing is impossible. It's all just a matter of time." That's my catch phrase. ;) P.S.: Skyrim Online is licensed on CC-NC-ND (Creative Commons - no copy - no derivative) which means we won't be able to borrow some of their code. Additionally they messed around with the SKSE team such that the nice guys over there decided to deny any usage of their source code to the SO team entirely... see the license delivered in the latest downloads of SKSE. Personally, I am not very fond of the SO dev team. P.P.S.: Constructive criticism is desirable! Link to comment Share on other sites More sharing options...
theimmersion Posted April 7, 2015 Share Posted April 7, 2015 (edited) You could get in touch with this guy? Also, local? not Online P2P co-op? (cant you make both?) Edited April 7, 2015 by theimmersion Link to comment Share on other sites More sharing options...
Zyrius93 Posted April 7, 2015 Author Share Posted April 7, 2015 You could get in touch with this guy? Also, local? not Online P2P co-op? (cant you make both?) Thanks for the lead! I certainly should try to get in touch with him. "Local" is the wrong term... local was merely opposed to massive-multiplayer. There already is an ad-hoc mod using two controllers for split-screen playing. I was referring to multiplayer via direct IP connection which many gamers usually accomplish by using a VPN. Link to comment Share on other sites More sharing options...
Staff BigBizkit Posted April 7, 2015 Staff Share Posted April 7, 2015 I see you have experience and dedication and all, but one of the main obstacles in this regard are the possible legal ramifications. Link to comment Share on other sites More sharing options...
DDProductions83 Posted April 7, 2015 Share Posted April 7, 2015 You could get in touch with this guy? Also, local? not Online P2P co-op? (cant you make both?) Thanks for the lead! I certainly should try to get in touch with him. "Local" is the wrong term... local was merely opposed to massive-multiplayer. There already is an ad-hoc mod using two controllers for split-screen playing. I was referring to multiplayer via direct IP connection which many gamers usually accomplish by using a VPN. You took all the time to post all the stuff at the start and you DIDNT google "Skyrim coop" at any point? Link to comment Share on other sites More sharing options...
Zyrius93 Posted April 7, 2015 Author Share Posted April 7, 2015 You could get in touch with this guy? Also, local? not Online P2P co-op? (cant you make both?) Thanks for the lead! I certainly should try to get in touch with him. "Local" is the wrong term... local was merely opposed to massive-multiplayer. There already is an ad-hoc mod using two controllers for split-screen playing. I was referring to multiplayer via direct IP connection which many gamers usually accomplish by using a VPN. You took all the time to post all the stuff at the start and you DIDNT google "Skyrim coop" at any point? I did. However, I did before the development of that mod started. Only two weeks ago, I decided to actually start something of my own after having dug around for "Skyrim multiplayer" and "Skyrim Online" which both did not come up with such a result. I see you have experience and dedication and all, but one of the main obstacles in this regard are the possible legal ramifications. I do see an uprising conflict with Bethesda regarding TESO. It appears Bethesda has made it clear that their employees must not collaborate on such a project, according to one of the commenters on the Workshop discussion. I'll need to clarify with them, that is true. Nonetheless, the only source of income for mods are donations to begin with... I'm sure the community and Bethesda can come to some consensus, even if it restricts the online gameplay capabilities (such as hosting professional MMO-like servers). Link to comment Share on other sites More sharing options...
Symbiote4 Posted April 7, 2015 Share Posted April 7, 2015 How i would love this, got no skills to offer though :P Link to comment Share on other sites More sharing options...
Daedthr Posted April 7, 2015 Share Posted April 7, 2015 I would be willing to contribute to an extent. I can programme in Visual Basic or Delphi, but if necessary I shouldn't have to much trouble coding in C++, as the syntax is relatively similar to Delphi and I have access to it. I script in Papyrus a lot, and have scripted for mods since Morrowind. Additionally I'm also proficient in lower-level programming and HTML and CSS to a very limited degree. However it might be worth taking into consideration how practical this mod will be. A game of Skyrim's magnitude would take a very high-speed internet connection to play multi-player, and any degree of connection latency would seriously take away from playability. This isn't even taking into account bandwidth limitations, or how modded games would translate to vanilla or alternatively modded games. While the concept sounds interesting, I'm not inclined to put an enormous amount of time into it as at this point it seems to me that it's an unrealistic expectation. I'm happy to look over code, provide advice and help to an extent, but for now that's about it. Should you manage to implement a method by which you can connect two or more PCs with the potential for server-like gameplay, then I'd be happy to get fully on-board. Link to comment Share on other sites More sharing options...
Zyrius93 Posted April 7, 2015 Author Share Posted April 7, 2015 I do agree that the amount of information which will need to be sent through the connection is massive, which is why optimization and clever "cutting back" on what is really necessary to communicate to clients is essential. That, however, is something hard to estimate beforehand. However, given that another author has already begun development and successfully connected two computers to one session, albeit buggy, I've lost all doubt that this is unrealistic. Perfection in this case really is overkill. We'll want simplification for this. Updating the current animation phase of every character in the world is unnecessary - I'd even say it isn't necessary to control every single NPC. It just has to appear as if the NPCs were synchronized, for example friendly but unimportant NPCs like Nobles are quite irrelevant information. I'm sure we'll find plenty of sources to cut down on bandwidth expenses... if we search hard enough. Unfortunately I have to say that I personally am not quite inclined to write a standalone server for Skyrim. There are two ways to go about such a project: first, the server serves as a man-in-the-middle who simply relays the information between the players. This, however, is vulnerable to cheating which effectively removes its usefulness for larger multiplayer servers. Second, we'd have to completely emulate Skyrim to properly calculate where a Draugr Deathlord Fus-Ro-Dah'd you to - otherwise we'd get unexpected behavior. We'd also need to develop a Papyrus Bytecode interpreter especially if we want to support third party mods on servers. In all honesty, I think a standalone server is more unrealistic than a host-based connection. Ideally, however, I'd like to write the mod in a fashion which would not completely trash the possibility of a standalone server. Regarding "how modded games would translate to vanilla [...]", my plan was to match the load order of the clients with that of the host. To play together, we'd be required to use the same mods. Obviously there also are those mods which need not be executed on both ends, like texture and/or model replacers. If I understand correctly, you'd be willing to help out here and there, but would only join in as a fixed member of the dev team if the mod shows promise for a stable future. Too bad. Due to my lack of spare time, I wouldn't even be able to set an ETA on that. Link to comment Share on other sites More sharing options...
theimmersion Posted April 8, 2015 Share Posted April 8, 2015 Why are you starting this if you dont have spare time for it? Gathering a crew while your in a jam? Since this is up, you gotta be ready to go. And dont focus on mods at all right now. IMO tho. I think you already are looking at it at an wrong angle of approach. First the game control I/O sync of two players, than sync of rest of the game, than mods. Mods should be the absolute last thing to think about. Consider yes, but your giving it a much more notice at this zero stage of development than it should be. Tho, im nor programmer or anything so sorry if im wrong here. :DI am for the co-op ofc but at this point, even in only vanilla games, its f*cking co-op. I mean, mod sync, thats gonna kill ya. Give your best with two players in one session and work from there. Im interested tho, how does it work with the master/slave multyplayer games? I understand that they communicate with each other of where the player and clutter and NPCs are and what they are doing (what animation is currently playing etc) and sends it to the other player and syncs. But one of them need to do it first before the other game knows what to do? In my head it goes like:If i put my uGrids to 5, actor distance etc and im master and friend has it on uGrids 9 and longer actor distance etc and hes slave, he gets NPC and clutter and interaction before my game gets it.Or he loads the world geometry only (static things that dont change)? Which results in lots of pop ups of NPCs and clutter from my end when my game loads that up?If he loads independantly other info than static unchangeable terrain and items.Now, he can shoot an arrow and kill someone but my game is master, what happens than?Because, now when we get closer, my game starts to load up but i didnt send that event to the slave but he has that information already. So it disappears for him when my game loads it up and sends that that didnt happen or it sends his info to me what it happened? If it sends to me, does it do when i load the grid or before that while its on low poly before LOD kicks in. Thats all the stuff im considering if it was multiplayer. Lots of things to sync, and you have to sync, otherwise things happen. Or what, he fights all of a sudden invisible enemies because of low priority sync or no sync at all on that matter. There cant be expactation of identical game configuration because not everyone has the same PC streinght to deal with many distance settings. That can make problems tho. But that should be actually the second stage of development. First stage should be the 2 players need to be in game, controlable and synced at all times.And mods should be the final stage. If you cant manage to sync the vanilla game with different game configurations, mods... NOPE. xDI think. Link to comment Share on other sites More sharing options...
Recommended Posts