[Recruiting] Programmers for Co-op project

Post » Fri May 18, 2012 9:53 pm

I'm not brushing you off, but thanks for the warning. Though, if you'd be keen to try prove your own ideas wrong, you'd be most welcome :) My point of this project is to prove that it can be done. To paraphrase Mozart, as I've done so many times; The bytes are all there, I just need to put them in the right order.

Not much of a beer person, but I'll hold you to it nonetheless ;)

The fact that you didn't respond to my post with negativity says positive things about your attitude. Good on you for not reacting the way that I pretty well expected you to: brushing me off and/or insulting me. :P

As a reward for successfully completing the first step of your quest, I'm willing to offer any advice I can as you work on the project. I can't commit to directly contributing, but I've been around quite a few blocks in my time, so I can probably at least point you in the right direction when you hit a snag. And who knows, if the details of the engine's internals convince me that it's doable, I'm often enticed by a challenge...

I'm definitely interested in modding Skyrim. In fact, I'm already using similar injection techniques via Script Dragon to write C++ plugins, mostly to explore.

One piece of advice: if you're not already familiar with C++, I'd get yourself familiar now. You'll need that knowledge as you plumb the depths of pointer hell.


I just find it funny how all of those who are experienced and capable of asking the heavy questions, and recognizing the serious roadblocks, and even capable of imagining the solutions simply say "impossible", or dismiss the chances of it being done as very slim, without realizing the power of many capable minds dedicated to a goal.

...

I don't know anything about programming, but I really have the burning desire to learn.

...

If anyone really wants to get something done, they do it. If they don't want it bad enough, it doesn't get done.

OK, listen, I'm a coffee-shop liberal as much as the next programmer, I believe in self-empowerment, and my only fuels are curiosity and determination. But come on, dude, that's utter BS.

First, I don't think you have the right to question the determination of people who've already taken the time to learn the very things that you admit you haven't. I've spent decades programming. I can write code as low as assembler and as high as Javascript. I can damn near speak in ANSI C. I bought and read thousands of dollars worth of books on everything from OS thread scheduling to network structure to designing pleasing interface widgets. I've written and maintained software projects with hundreds of thousands of lines of code. Go learn what I've learned and then come back and tell me how someone of my knowledge level should be behaving.

Second, the experienced programmers recognize that as far as programming skills are concerned, he's still a toddler at best, and there's nothing wrong with that. That's how we all start. But no matter how determined, a toddler can't play professional football. And even a professional boxer, no matter how determined, can't deflect bullets with his fists.

Now you probably want to tell me that making Skyrim into an online multiplayer game is far more possible than punching bullets out of the air. But how would you know?

If you really have a burning desire to learn to program, I'd advise not insulting the intelligence of the experienced programmers who could guide you on that journey.
User avatar
Christina Trayler
 
Posts: 3434
Joined: Tue Nov 07, 2006 3:27 am

Post » Fri May 18, 2012 8:31 pm

The fact that you didn't respond to my post with negativity says positive things about your attitude. Good on you for not reacting the way that I pretty well expected you to: brushing me off and/or insulting me. :P

As a reward for successfully completing the first step of your quest, I'm willing to offer any advice I can as you work on the project. I can't commit to directly contributing, but I've been around quite a few blocks in my time, so I can probably at least point you in the right direction when you hit a snag. And who knows, if the details of the engine's internals convince me that it's doable, I'm often enticed by a challenge...

I'm definitely interested in modding Skyrim. In fact, I'm already using similar injection techniques via Script Dragon to write C++ plugins, mostly to explore.

One piece of advice: if you're not already familiar with C++, I'd get yourself familiar now. You'll need that knowledge as you plumb the depths of pointer hell.
What can I say? I intend to deliver the unexpected :) Besides that, I know that this can be done and that I have the resources (As well as ye old unemployment :P) to do it, so I fail to see why I shouldn't just because people write it off as "Too difficult".

Well multithreading is turning out to be a massive tosser ATM. I've got my own TCP client class going, but I need to run its' IO in a different thread (As well as make my own equivalent of the .Net BinaryReader class ><) so... Halp? :P I'm tinkering with the boost libs ATM but... Hah, it's not C# :P

I may look at Script Dragon, but ATM it's an SKSE plugin (I've even got Ian helping me a little :D).

C++ isn't the big, ugly machine I thought it'd be. It certainly has its'... Quirks... But it's always nice when my simple little things work and actually compile :3
User avatar
sophie
 
Posts: 3482
Joined: Fri Apr 20, 2007 7:31 pm

Post » Sat May 19, 2012 3:29 am

Ok, throwing my hat in the ring with an offer of help for the project, despite my cynicism :).

My background is in software engineering (if you want to be generous, programming if not :D), I did 14 years in a variety of languages (BASIC, FORTRAN, ADA 83 and C) on various OS's like VMS, Unix, OS9 (the embedded one, not MAC OS). However, it's been something like 7 or 8 years since I did any coding, so my skills are rusted into uselessness - and I never did any networking stuff or development for Windows.

Where I will be able to help is with the Skyrim scripting. As you'll see from my Hoverchair mod for Fallout 3 (link in my signature) I'm not bad at working out ways of getting the engine to do what it was never intended to do.

I'd make two suggestions to start with.

First, start off with a simple master/slave design, where one player is running his game as the master, and another player joins as the slave. Let the master game do all the game logic and AI, and simply pipe across to the slave everything that it needs to duplicate at its end (initial save-state from the master; creature/NPC position, orientation and actions; object movement; traps triggering; creatures spawned/summoned; lots of other stuff I can't think of right now). The only thing the slave machine has to send back is the controls pressed by the slave-player, the master will tell the slave what the result of those control presses has been. Doing things this way means that you have no negotiation between multiple instances of the game, each with their own idea of what is happening in the gameworld, each with their own dice-rolls to synchronise. I suppose in theory the master wouldn't need to have a player actually sitting at the keyboard (and so would be a server), but the advantage of doing it the master/slave way is that you have one player who is unarguably the host, and who is the Dragonborn. If you do want to have co-op questing rather than an arena, you'll need this - can't have all players starting conversations and quests, that way madness lies :D.

The disadvantage of this is that the slave/s will have to remain in the same internal cell as the master, or within a shortish distance in the exterior. Not a problem if players are playing co-operatively :).

Second, disable finishing kill moves and the slow-time dragon shout. I doubt there's any mechanism for slowing the slave when the master slows time, or vice versa. Ok, I have though of a possible way to do that, but it would mean forcing all players into 3rd person throughout and re-implementing automatic camera positioning, which I don't think you want to be bothering with.

I can't commit to giving a lot of time (I work full time and have to spend a lot of my spare time on medical treatment), but I can plug away at tricky problems and dream up outlandish solutions.
User avatar
Bird
 
Posts: 3492
Joined: Fri Nov 30, 2007 12:45 am

Post » Fri May 18, 2012 1:16 pm

Ok, throwing my hat in the ring with an offer of help for the project, despite my cynicism :).

My background is in software engineering (if you want to be generous, programming if not :D), I did 14 years in a variety of languages (BASIC, FORTRAN, ADA 83 and C) on various OS's like VMS, Unix, OS9 (the embedded one, not MAC OS). However, it's been something like 7 or 8 years since I did any coding, so my skills are rusted into uselessness - and I never did any networking stuff or development for Windows.

Where I will be able to help is with the Skyrim scripting. As you'll see from my Hoverchair mod for Fallout 3 (link in my signature) I'm not bad at working out ways of getting the engine to do what it was never intended to do.

I'd make two suggestions to start with.

First, start off with a simple master/slave design, where one player is running his game as the master, and another player joins as the slave. Let the master game do all the game logic and AI, and simply pipe across to the slave everything that it needs to duplicate at its end (initial save-state from the master; creature/NPC position, orientation and actions; object movement; traps triggering; creatures spawned/summoned; lots of other stuff I can't think of right now). The only thing the slave machine has to send back is the controls pressed by the slave-player, the master will tell the slave what the result of those control presses has been. Doing things this way means that you have no negotiation between multiple instances of the game, each with their own idea of what is happening in the gameworld, each with their own dice-rolls to synchronise. I suppose in theory the master wouldn't need to have a player actually sitting at the keyboard (and so would be a server), but the advantage of doing it the master/slave way is that you have one player who is unarguably the host, and who is the Dragonborn. If you do want to have co-op questing rather than an arena, you'll need this - can't have all players starting conversations and quests, that way madness lies :D.

The disadvantage of this is that the slave/s will have to remain in the same internal cell as the master, or within a shortish distance in the exterior. Not a problem if players are playing co-operatively :).

Second, disable finishing kill moves and the slow-time dragon shout. I doubt there's any mechanism for slowing the slave when the master slows time, or vice versa. Ok, I have though of a possible way to do that, but it would mean forcing all players into 3rd person throughout and re-implementing automatic camera positioning, which I don't think you want to be bothering with.

I can't commit to giving a lot of time (I work full time and have to spend a lot of my spare time on medical treatment), but I can plug away at tricky problems and dream up outlandish solutions.
No slave-master system :P Not necessary for a small group of friends doing 4 player co-op :) We already have a solution for the majority of what you've said, head on over to our forums and make a post under the staff recruitment or brainstorming recruitment section if you're interested :P

As an FYI to all, this thread isn't for discussion of how things are intended to work, I'm trying to keep that to our brainstorming and staff teams in our forums to keep it under control. This thread was intended to advertise the project and perhaps get some professional staff involved in the mod.
User avatar
Sanctum
 
Posts: 3524
Joined: Sun Aug 20, 2006 8:29 am

Post » Fri May 18, 2012 10:48 pm

Personally, I'm super interested in an MP mod for Skyrim, but I can't in good conscience contribute to this particular project. The main reason being that as a programmer, one of the most valuable things you need to learn is to be *lazy*. If there's an opportunity to avoid rewriting massive amounts of code, take it. While I can understand the appeal in doing everything over from scratch, and avoiding having to learn an unfamiliar and complex codebase, I have to say it's a huge mistake. Especially in the case of VaultMP where the code is open source and the author is amenable to someone else doing a port using his code, it's incredibly unwise to say "Nope, let's do it from scratch instead." IMO it's a telltale of a new programmer, and I think it makes the chance of success slim at best.

So at least personally, I'll be putting my efforts into porting Recycler's (very well written) implementation to Skyrim.
User avatar
Kevin S
 
Posts: 3457
Joined: Sat Aug 11, 2007 12:50 pm

Post » Fri May 18, 2012 4:44 pm

IMO it's a telltale of a new programmer
Oh, really? (Assuming that was at me :confused:)

http://www.skyrimnexus.com/downloads/file.php?id=211 My Spriggan project featuring PHP interop and C# codedom
http://www.hipolipolopig.us/files/1r4wigi1320065797.html My open-source Terraria mod based on Terraria 1.0.1.6, featuring XNA-less texture packs and scripted items
http://xbox360content.com/forums/topic/1927-world-extensibility-script-template-west/ My simple little project that allows for on-the-fly method declaration/invocation/updates
http://xbox360content.com/forums/topic/1500-world-framework/ And last but by no means least, my WORLD serialization and communications framework

So... :P It's all relatively easy, though I doubt a "new programmer" would be able to do it ;)
User avatar
daniel royle
 
Posts: 3439
Joined: Thu May 17, 2007 8:44 am

Post » Fri May 18, 2012 2:04 pm

That's nice and all, but it's still a huge waste and a mistake to do this from scratch when you have a codebase you could port that does everything you want. Like I said, I'm going to be putting my efforts there because with the VaultMP source, we could have Skyrim MP up and running in weeks instead of years.

And yes, it's a hallmark of a new or at least inexperienced programmer to want to write from scratch code that is readily available for porting/use. It's incredibly common in new developers, I've seen it time and time again in the guise of "writing our own game engine" or "writing our own physics engine" instead of using appropriate tools that already exist (i.e., writing a physics engine from scratch is pointless unless you need very specific functionality, in 99% of cases using PhysX, Bullet or Havok is the obviously better choice and those projects have dozens of man-years of work in them).

Anyway, I just think it's a shame to fragment the talent pool with a from-scratch project when a few good devs focused on a VaultMP port could have a working version so much faster. Best of luck on your project.
User avatar
Ladymorphine
 
Posts: 3441
Joined: Wed Nov 08, 2006 2:22 pm

Post » Sat May 19, 2012 12:42 am

So... This hasn't been successfully done often and I'm not supposed to start "from scratch"? Look, I know you're trying to be helpful but due to some rather personal circumstances surrounding upcoming dates, I'm inclined to be a bit negative.

Best of luck with your project, too. Perhaps we'll be able to collaborate at some point.
User avatar
Kitana Lucas
 
Posts: 3421
Joined: Sat Aug 12, 2006 1:24 pm

Post » Sat May 19, 2012 4:46 am

OK, listen, I'm a coffee-shop liberal as much as the next programmer, I believe in self-empowerment, and my only fuels are curiosity and determination. But come on, dude, that's utter BS.

First, I don't think you have the right to question the determination of people who've already taken the time to learn the very things that you admit you haven't. I've spent decades programming. I can write code as low as assembler and as high as Javascript. I can damn near speak in ANSI C. I bought and read thousands of dollars worth of books on everything from OS thread scheduling to network structure to designing pleasing interface widgets. I've written and maintained software projects with hundreds of thousands of lines of code. Go learn what I've learned and then come back and tell me how someone of my knowledge level should be behaving.

Second, the experienced programmers recognize that as far as programming skills are concerned, he's still a toddler at best, and there's nothing wrong with that. That's how we all start. But no matter how determined, a toddler can't play professional football. And even a professional boxer, no matter how determined, can't deflect bullets with his fists.

Now you probably want to tell me that making Skyrim into an online multiplayer game is far more possible than punching bullets out of the air. But how would you know?

If you really have a burning desire to learn to program, I'd advise not insulting the intelligence of the experienced programmers who could guide you on that journey.

At what point did I tell you how you should be behaving? At what point did I question the determination of any other programmer here? I simply stated that I find it funny that those who are capable of recognizing the problems and roadblocks are the same ones who are dismissing the possibility of it being done, simply because they know how hard one would have to work, and the types of things they would have to do or find to make it work, and that it is difficult. If you are capable of understanding the problem, you are capable of understanding or imagining a solution to said problem. I don't mean to insult anyone's intelligence, but all I can provide to the discussion is encouragement, mis-guided as it may be, because I would like to see this happen. It was said at one point that creating the V8 engine was impossible, and it was done in time. Many things have been said to be impossible, only waiting for a new idea or method to change that status. Even if it takes 4 or 5 years to make a project like this happen, it's not like people won't still be playing it around that time. (I only assume this because it takes about 5+ years for a new TES game to come out, but who knows how fast they might come out after this one)

Yes, others have dedicated more time than I have to learning this subject, and I have no authoritative stance on programming, and so I will learn, and not try to act like I know anything about the subject until I do, but keeping the right, positive mindset will yield results, and faster over one based in negativity, whether you're Albert Einstein or little old me. So to say that I'm telling you how you should be acting as a programmer based on your programming knowledge is a bit reactive, because that's not what the context of my words meant. I only meant, do not underestimate the power of many capable minds dedicated to a goal. The key there is many, not just the one you've pointed out as being a toddler.
User avatar
sara OMAR
 
Posts: 3451
Joined: Wed Jul 05, 2006 11:18 pm

Post » Sat May 19, 2012 1:34 am

Okay guys, chill the flames before the mods get upset :P
User avatar
Hannah Barnard
 
Posts: 3421
Joined: Fri Feb 09, 2007 9:42 am

Post » Fri May 18, 2012 2:30 pm

A little update to bring this topic back on track: We're now 13 people that are willing to spent their free time on this project over the next months/years. Some of us are skilled programmers, some will just tend to the millions of little things that are to be considered.

If you are interested to join us you are welcome to do so. We are still looking for both programmers and content staff. Don't let lack of programming experience discourage you, we will need at least a handfull of people creating Coop dungeons and PvP Arenas.

That being said, I'd like to remind you guys of the OP. This thread is not about telling us what we're doing wrong. We are looking for motivated people, it's your full right to disagree with this project, just disagree with us somewhere else and leave us be :D
User avatar
Janeth Valenzuela Castelo
 
Posts: 3411
Joined: Wed Jun 21, 2006 3:03 am

Post » Sat May 19, 2012 12:30 am

It's all relatively easy, though I doubt a "new programmer" would be able to do it ;)

With all due respect, unless you've been programming for several years on major projects, you are a new programmer. It's a relative term, of course, no one is suggesting you're still working your way through "hello world".


...it's a hallmark of a new or at least inexperienced programmer to want to write from scratch code that is readily available for porting/use. It's incredibly common in new developers, I've seen it time and time again in the guise of "writing our own game engine" or "writing our own physics engine" instead of using appropriate tools that already exist

While I agree with you in general, I find it amusing that you're making this argument when talking about making a mod for Skyrim. After all, Bethesda has by and large done exactly what you're describing above by rolling their own game engine/libraries/construction kits, game after game, year after year.

I would also point out that if no one was willing to write their own game engine or physics engine then we'd eventually run out of people to work on those existing tools you're referencing. Carmack and Cliffy B. aren't immortal.


At what point did I tell you how you should be behaving? At what point did I question the determination of any other programmer here?

I don't think you're a bad person and I'm not angry with you, but I do think that your post was unintentionally insulting (which I can look past) and also wrong (harder to look past).

I don't want to start a flame war here, that's pointless. But I'll take one last whack at explaining why I reacted that way.


I simply stated that I find it funny that those who are capable of recognizing the problems and roadblocks are the same ones who are dismissing the possibility of it being done, simply because they know how hard one would have to work, and the types of things they would have to do or find to make it work, and that it is difficult.

When those knowledgeable enough to properly gauge the project suggested that even if it's possible, it's too much work for a group of amateurs, you suggested that they lack the drive to make it happen, as if the issue here is a lack of willpower and not the scope of the project itself.

Making Skyrim into a multiplayer game is possible, of course. It's also possible to open doors with your forehead. Unless you have to do such a thing or get some pleasure out of the act itself, neither is advisable.

It's not a matter of negativity. It's just an honest evaluation of cost versus benefit. We don't even know if multiplayer Skyrim will even be fun, and by the time the project is done, we'll have all gone through the game 15 times. And if the project fails for any reason then all of that time is wasted.

If this was a project that's doable in a reasonable time frame, it'd be worth the risk. But if it's gonna take teeth-grinding dedication over years, it's just not worth it unless the attempt itself is fun enough.

No one ever said "this wouldn't be fun to try". We just said "it's almost certainly not going to succeed."


If you are capable of understanding the problem, you are capable of understanding or imagining a solution to said problem. Many things have been said to be impossible, only waiting for a new idea or method to change that status.

Problems we understand very, very well: cancer, poverty, blindness, acne, headaches, the common cold.

Solutions found to the above after many, many years of trying: chemo, oxy pads, advil, Sally Struthers.

I would suggest that your assertion is plainly false.

Will we fix those problems eventually? Maybe. Or maybe a super bird flu will wipe out our species in a decade and we'll never even get close.

Or maybe some of them will turn out to be an inherent flaw that is literally impossible to counteract while still remaining a human being.

We don't live in some magical world where the hero wins at the end of the movie because he wants it enough. We live in a rational world that works on rules. And "rule" is another word for "limitation".


...keeping the right, positive mindset will yield results, and faster over one based in negativity, whether you're Albert Einstein or little old me.

The same Einstein who said, "Two things are infinite: the universe and human stupidity; and I'm not sure about the the universe." and "I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones."


I only meant, do not underestimate the power of many capable minds dedicated to a goal.

I don't, but it isn't magic. If something is impossible then it's still impossible no matter how many people are trying. Also, in software projects, more people often equals slower results, not faster.

Regardless, my central point is that determination is a fuel, not a means. A jug of gasoline, even really potent gasoline, won't get you down the highway. You need a car for that.


Edit: Message received, I'll keep further commentary out of the thread.
User avatar
Harinder Ghag
 
Posts: 3405
Joined: Wed Jan 17, 2007 11:26 am

Post » Fri May 18, 2012 11:18 pm

Thanks :happy: Back to work, slaves! :D I mean... Well, you know :)
User avatar
Chenae Butler
 
Posts: 3485
Joined: Sat Feb 17, 2007 3:54 pm

Post » Sat May 19, 2012 2:39 am


While I agree with you in general, I find it amusing that you're making this argument when talking about making a mod for Skyrim. After all, Bethesda has by and large done exactly what you're describing above by rolling their own game engine/libraries/construction kits, game after game, year after year.

I would also point out that if no one was willing to write their own game engine or physics engine then we'd eventually run out of people to work on those existing tools you're referencing. Carmack and Cliffy B. aren't immortal.
They haven't really done that all. What they have done is upgrade the tech they have where it needed it in every iteration, which is a pretty standard thing to do. Creating the deferred renderer for Skyrim was a much needed upgrade from the rendering engine in Oblivion, and that still ties into my point. They made a decision to upgrade the renderer, then went out and implemented an industry standard rendering technique that has veritable libraries of documentation and code available. Also, they've extensively used middleware since the beginning, and still use Havok to this day (hell, Skyrim is even more middleware heavy with the use of Scaleform, for instance). And a lot of the core game-related functionality is practically unchanged save for stuff that's Skyrim specific.

And yes, obviously if no one ever wrote those pieces of middleware, we wouldn't have middlware. However, there's a world of difference between high level graphics and physics researchers getting together and writing a quality physics engine and hobbyist/novice programmers deciding to write that same sort of physics engine from scratch.

To @Hipolipolopigus, I'm not trying to say what you're doing wrong. I'm trying to tell you that you're wasting literal man-months of time by rewriting code that someone has already written. There's literally no point to it except pride. That might be a hard truth to accept, but there it is. And that's not a flame or anything meant to be derogatory, it's just an observation and opinion. I want to see a co-op mod sooner than later, and redoing all that work just means you will be mired in this project while you could have made huge leaps of progress in a much shorter time.
User avatar
JERMAINE VIDAURRI
 
Posts: 3382
Joined: Tue Dec 04, 2007 9:06 am

Post » Fri May 18, 2012 11:12 pm

Problems we understand very, very well: cancer, poverty, blindness, acne, headaches, the common cold.

Solutions found to the above after many, many years of trying: chemo, oxy pads, advil, Sally Struthers.

I would suggest that your assertion is plainly false.

Will we fix those problems eventually? Maybe. Or maybe a super bird flu will wipe out our species in a decade and we'll never even get close.

Or maybe some of them will turn out to be an inherent flaw that is literally impossible to counteract while still remaining a human being.

We don't live in some magical world where the hero wins at the end of the movie because he wants it enough. We live in a rational world that works on rules. And "rule" is another word for "limitation".

I wouldn't agree that the problems are understood so well if the "solution" to each is at best a temporary fix, and at worst not a solution at all. So I do not agree with you there. In order to understand or imagine the solution to a problem, you need to understand both the cause and the effect of the problem. You gave the example of cancer, a problem with a cause that is as diverse as there are humans. Each person's cause for contracting cancer is different, and so is the type of cancer, which is the effect. You cannot provide a one-size-fits-all solution to a problem which has a ridiculous numbers of variables as to a cause and effect. Headaches, same thing. Common cold, same thing. Each of these things affects each person differently, so not only is the effect variable, but the cause is too. These are not problems that we understand at all, let alone very well.

As to the rest, I understand your point of view. I know that it will almost certainly not work, and I know that all that time just might be wasted, but how else do you know unless you try? Will it be fun? For those who find enjoyment in the type of project this is, pure challenge. You are right, determination is a fuel, and not a means. If the determination is already here, what would you describe the means as? I understand that the CK is not out yet and things need to be checked, and if the means are not attainable, then yes, no amount of determination will get it done. If they are, then what? You are saying the determination alone is not enough, and I understand your anologies, but you say them as if you know something that says in this specific case something is missing that makes all the determination in the world equal to nothing due to limitation. Is there something missing?
User avatar
Jessica Phoenix
 
Posts: 3420
Joined: Sat Jun 24, 2006 8:49 am

Post » Fri May 18, 2012 5:07 pm

The idea is (Currently. Subject to change) to have a save that is invisible to Skyrim and that can only be loaded up with the Client (Whether via console or via some SKSE invocation). How the save is used depends on how the game is run. If it's a Client, then it's only purpose is to store Race/Gender and possibly location (Though we may decide to reset this upon entering a hosted game). If it's a Server, then all relevant data will be used and Synced to the Client worlds as necessary.

Please don't expect us to have an answer for everything. We don't know enough about the inner workings of Skyrim to be sure of our ideas, though we can easily speculate. Responding where I can (They may seem brief and somewhat cold, sorry!);

Game Version; Easy enough. Our SKSE plugin will have a set version of Skyrim that it will be compatible with. This data will be transmitted to the server when a connection is established and the connection rejected/accepted based on this.
Fair enough. I can forsee the possibility that the version you set gets an update that changes something, yet your mod maintains compatibility. I would suggest a way to VERIFY that the version is correct

Mods; Read sArchiveList and sArchiveList2 from Skyrim.ini. Sort by name, compress, send. If mismatch to Server, refuse connection.
Fair answer

Cheats; Not 100% sure, though it should be possible to maintain a list of "bad" commands on the Server, hook when a client enters a command and send the entered command to the server. Force kick if it's blacklisted.
From this answer, I assume you're going to hook into the console as well, then? Or would you simply be capturing EVERYTHING from the keyboard, parsing it, deciding if it's cheating, then passing it to the game?

Remote Character Representation; This is where my idea of a "Mannequin" or "Puppet" NPC comes into play. Each client will represent the other players with these. When a client successfully connects, their race/gender data is sent and then set on their Mannequin(Technically Mannequins, but let's keep it simple :P). When position/orientation data is received for player [x], their "Mannequin" is set to that position/orientation (Not streamed, sent when it changes). Same for Animation data (As much as possible, not 100% sure on this...).
Of course, the "puupets" are going to have the same stats as the player, the same armor, same weapons, etc? The method you mention (to me) seems to be guaranteed to introduce problematic behaviour

Mobs; Mobs should detect the Mannequin NPCs as hostile (Perhaps in the Player faction?) and attack them based on Skyrim's normal way of doing this (All handled on the server). Damage data is sent to clients as necessary calculating for active buffs/etc.
Not sure if this would work...but not sure it would fail, either

Equitable Sharing; Not at all sure at this stage. Could be hard, could be easy. We'll see.
Answer accepted

Performance Impact; Don't see how you can expect us to have an answer to this. Don't worry, we've fully benchmarked all end-product functionality in an alternate universe ;) /Crude Sarcasm ... Sorry :P
The reason for the question was simply that so many people have lag (depending on where they are) as the game stands now. When you introduce OUTSIDE elements (the need for synching the games, internet latency, the variety of possible connection speeds, and more), that lag will increase. And frame rates will plummet. And that is NOT conjecture. Oh, and I got the sarcasm without you needing to point it out.

Connection; I can't believe this actually requires an answer :P Friendo gives you their IP address, simple. Or, alternatively, a no-ip address. Resolving these to real IPs isn't hard.
So, you're going to have to coordinate very carefully on when to "join" a game. What about a dynamic IP that changes? Can you be sure that the IP address playerx gives won't be one that is force changed, as several ISPs like to do? You may not think this question needed asked, yet it IS a valid question that you would need to consider if you want many people to use the mod. I think it's apparent, however, that we disagree on this, and can just agree to disagree. Cool?

Sync; We intend for the server-client (It does need the client to run the world) to run as many processes as it can based on input from clients while the clients have their logic suspended. Could be resource-heavy, but we just don't know.
I just don't see how you're going to be able to do this part.

Mechanics; Put simply, we don't intend to put mechanics in as-is. Some will require some hefty core-editing to work as intended. Others are just hooks. Can't say for certain without first looking at the CK (Beta test, pretty please gamesas! :P).
In other words, you want to replace the single player game mechanics with those needed for multiplayer? I would imagine that the "core editing" you're thinking of would not be possible, as it would actually entail changing the source code. I could be wrong, but the mechanics change is the one that is truly the make/break part of this thing. If it can be done, cool. If not, you're out of luck.

Happy now? :P This is all based on speculation of the inner workings and is subject to change.
I am glad you at least acknowledged the questions, and made a sincere attempt to answer them. However, you left out something that, in retrospect (meaning I went back to look at my post to check) was a bit buried....Why don't you begin with the in game chat option that has been mentioned? As I said earlier, it seems that you have dismissed this idea or deem it of no importance, yet you would need the functionality of a chat system to coordinate in game.

I'm trying to be civil and clear in what I write, but I am on medication. If I have offended with this post, please PM me, tell me how it offended you, and I will correct it when my mind is a bit clearer.
User avatar
Nicole M
 
Posts: 3501
Joined: Thu Jun 15, 2006 6:31 am

Post » Fri May 18, 2012 10:47 pm

Still wanting to hear an answer regarding implementing just a chat client :D.
That's what you've got Steam for isn't it? :P
User avatar
Tania Bunic
 
Posts: 3392
Joined: Sun Jun 18, 2006 9:26 am

Post » Sat May 19, 2012 1:52 am

Sync; We intend for the server-client (It does need the client to run the world) to run as many processes as it can based on input from clients while the clients have their logic suspended. Could be resource-heavy, but we just don't know.

Even if you can collect and send all the necessary data without killing performance... how are you going to control the clients? If it's like Oblivion at all, the game includes NO provisions for directly controlling game entities. Even "scripted" situations operate through the AI (give the AI a task, let it handle movement, combat, etc). That will not work for multiplayer.
User avatar
Nicola
 
Posts: 3365
Joined: Wed Jul 19, 2006 7:57 am

Post » Sat May 19, 2012 3:36 am

That's what you've got Steam for isn't it? :P

Wow, true that.


Now to everyone else in this thread.
Unless you can provide positive constructive advice that actually tries to improve upon this project I suggest you find somewhere else to spew your mind.
User avatar
Andrew Tarango
 
Posts: 3454
Joined: Wed Oct 17, 2007 10:07 am

Post » Fri May 18, 2012 7:02 pm

Multiplayer doesn't have to be through a buddy playing in the same game as you. It can be something as abstract as a mod that fetches data back and forth to manipulate the ingame economy that is affected/affects everyone who plays that mod. That is more than possible.

What isn't possible, as many have commented on, is being able to take into account every single random variable found in the game. On Player A's screen... player A might enter a dungeon and see 2 wolves whereas Player B will enter the same dungeon, at the same time, and get 3 wolves. How does Co-Op make up for that fact?











ps... Cliffy B (Cliff Bleszinski) doesn't code anything.... Tim Sweeney is the real god that brought us UDK and the actual engine.
User avatar
Chelsea Head
 
Posts: 3433
Joined: Thu Mar 08, 2007 6:38 am

Post » Fri May 18, 2012 7:49 pm

Effectively, all ideas are hypothetical at this stage. If something won't work, we'll need to find another way to do it without losing too much functionality in the process (Syncing for example. Broadcasting all NPC positions when they update would be traffic-heavy. Could just send NPCs in active cells, perhaps?)

I'm trying to be civil and clear in what I write, but I am on medication. If I have offended with this post, please PM me, tell me how it offended you, and I will correct it when my mind is a bit clearer.
Nah, it's alright :P I was intending to hook into the console, yes. Though this could prove problematic. If it's possible to use the SteamAPI to do it I may look into that instead (As well as for the chat, though I despise Steam!). On the Mannequin NPCs, it's the best solution we have so far. If you'd like to contribute content rather than questions to the project then go ahead ;)

Even if you can collect and send all the necessary data without killing performance... how are you going to control the clients? If it's like Oblivion at all, the game includes NO provisions for directly controlling game entities. Even "scripted" situations operate through the AI (give the AI a task, let it handle movement, combat, etc). That will not work for multiplayer.
I can't give an answer on the inner mechanics of Skyrim and it's unreasonable to expect me to. See the Mannequin NPCs part in Kykkull's quote.

Multiplayer doesn't have to be through a buddy playing in the same game as you. It can be something as abstract as a mod that fetches data back and forth to manipulate the ingame economy that is affected/affects everyone who plays that mod. That is more than possible.

What isn't possible, as many have commented on, is being able to take into account every single random variable found in the game. On Player A's screen... player A might enter a dungeon and see 2 wolves whereas Player B will enter the same dungeon, at the same time, and get 3 wolves. How does Co-Op make up for that fact?
First problem, NPC positions. Second problem, representing the characters.

Why on earth would we take every variable? Where have I said that we would? Assumptions can be dangerous things, you know. They can start flamewars :confused:
User avatar
Alexandra walker
 
Posts: 3441
Joined: Wed Sep 13, 2006 2:50 am

Post » Sat May 19, 2012 3:15 am

Addressing a specific concern I've seen posted here regarding C#, I've actually found it to be relatively efficient for a managed language. C# tends to have a higher memory footprint because it has to load the .NET Framework, but it doesn't tend to operate as badly as what you're probably imagining. For lower-level stuff like Tcp sockets, it's actually quite slim and efficient, and very elegant to work with. I've been involved with writing two high-performance servers (in C# using .Net sockets) over the last few years, one a real-time voice application, and I can tell you it's certainly possible; at the very least, it wouldn't be the choice of using C# as a language to write the netcode that prevents an undertaking like this from succeeding.
User avatar
Melissa De Thomasis
 
Posts: 3412
Joined: Tue Feb 27, 2007 6:52 pm

Post » Fri May 18, 2012 6:58 pm

They haven't really done that all. What they have done is upgrade the tech they have where it needed it in every iteration, which is a pretty standard thing to do. Creating the deferred renderer for Skyrim was a much needed upgrade from the rendering engine in Oblivion, and that still ties into my point. They made a decision to upgrade the renderer, then went out and implemented an industry standard rendering technique that has veritable libraries of documentation and code available. Also, they've extensively used middleware since the beginning, and still use Havok to this day (hell, Skyrim is even more middleware heavy with the use of Scaleform, for instance). And a lot of the core game-related functionality is practically unchanged save for stuff that's Skyrim specific.

Fair enough. As I've been trying to get various toy mods to work via script dragon (the other place you and I have been hanging out) I've been so overwhelmed by the Bethesda-ness of it all that part of me believes that they hand-made the entire engine out of wicker and glue. :D

To @Hipolipolopigus, I'm not trying to say what you're doing wrong. I'm trying to tell you that you're wasting literal man-months of time by rewriting code that someone has already written. There's literally no point to it except pride.

Pride or simply for the learning experience. There's also a very real risk that this other guy's code will turn out to be a poor fit for Skyrim and you'll end up having to start from scratch anyway.

Again, not necessarily disagreeing with you here, just pointing out that it isn't so black and white. At this stage we can't really say which is the better approach. Sometimes reworking a solution that half fits is more time consuming than starting over.


I wouldn't agree that the problems are understood so well if the "solution" to each is at best a temporary fix, and at worst not a solution at all.

True, and mostly my point. Though you're right that our understanding of cancer isn't as complete as I suggested.

Though my greater point is that sometimes part of truly understanding a problem means knowing that there isn't any real solution.


As to the rest, I understand your point of view. I know that it will almost certainly not work, and I know that all that time just might be wasted, but how else do you know unless you try? Will it be fun? For those who find enjoyment in the type of project this is, pure challenge.

I've thrown away many, many hours chasing projects that were doomed to failure as well, and had great fun doing so. We agree on that much.


You are right, determination is a fuel, and not a means. If the determination is already here, what would you describe the means as? I understand that the CK is not out yet and things need to be checked, and if the means are not attainable, then yes, no amount of determination will get it done. If they are, then what? You are saying the determination alone is not enough, and I understand your anologies, but you say them as if you know something that says in this specific case something is missing that makes all the determination in the world equal to nothing due to limitation. Is there something missing?

I've joined up on the game project's forums to discuss these very topics. Come on over, register and join in the conversation! I'd be happy to answer at length over there.


ps... Cliffy B (Cliff Bleszinski) doesn't code anything.... Tim Sweeney is the real god that brought us UDK and the actual engine.

My mistake. I should know better than to mistake a Romero for a Carmack. ;)


Addressing a specific concern I've seen posted here regarding C#, I've actually found it to be relatively efficient for a managed language. C# tends to have a higher memory footprint because it has to load the .NET Framework, but it doesn't tend to operate as badly as what you're probably imagining. For lower-level stuff like Tcp sockets, it's actually quite slim and efficient, and very elegant to work with. I've been involved with writing two high-performance servers (in C# using .Net sockets) over the last few years, one a real-time voice application, and I can tell you it's certainly possible; at the very least, it wouldn't be the choice of using C# as a language to write the netcode that prevents an undertaking like this from succeeding.

All true. I actually like C# more than C++ on a lot of levels. While C++ continues to edge it out on performance, it's not by much and they'll continue to get closer as the compiler(s) mature.
User avatar
LijLuva
 
Posts: 3347
Joined: Wed Sep 20, 2006 1:59 am

Post » Fri May 18, 2012 5:54 pm

I have something to say to you that motivates everybody, money, I would pay for co-op in SKYRIM (just replacing the NPC companion would be enough).

I talked about you guys here:

http://www.gamesas.com/index.php?/topic/1301558-req-replace-npc-companion-with-real-friend/page__gopid__19662266#entry19662266

Regarding redoing stuff, everybody thought that 3D graphics were done in a certain manner, then Unlimited Detail (Euclideon) happened (no, it isn't a hoax, the government of Australia is funding them), so that defeats the argument of "throw away your ideas, use others".

Suggestion:
-Try to make it fast or else everyone is going to be playing something else

GOOD LUCK!
User avatar
Angel Torres
 
Posts: 3553
Joined: Thu Oct 25, 2007 7:08 am

Post » Fri May 18, 2012 7:01 pm

Fair enough. As I've been trying to get various toy mods to work via script dragon (the other place you and I have been hanging out) I've been so overwhelmed by the Bethesda-ness of it all that part of me believes that they hand-made the entire engine out of wicker and glue. :D
I feel that man, definitely. Though most of that feeling comes from the stuff they wrote specifically for the game systems and have been using in one form or another since Morrowind (I guess, I didn't do much MW modding so I don't know exactly how similar the BSAs and junk worked then) or Oblivion. The thing I notice most when messing with the game interface in Script Dragon is that they *really* didn't ever bother making the interface very friendly to doing more complex mods. It's very barebones, especially in terms of what data you can modify (vs. what data you can get at, which seems a lot more fleshed out).

Pride or simply for the learning experience.
Personally I think this is kind of a poor project to start simply for learning experience.

There's also a very real risk that this other guy's code will turn out to be a poor fit for Skyrim and you'll end up having to start from scratch anyway.
Well, I looked through the code and it's actually perfectly suited because the interface that VaultMP uses for FO3/FNV/Oblivion is virtually unchanged in Skyrim, all the necessary functions exist and are the same pretty much. What needs to happen for a Skyrim port to get up and running is finding all the actor value and necessary function addresses, as well as some addresses that the SKSE plugin portion would need. I think we'll have to wait until the CK is out for SKSE to have the functionality necessary, but honestly, it's a dead simple port and the code is very well written and designed.
Again, not necessarily disagreeing with you here, just pointing out that it isn't so black and white. At this stage we can't really say which is the better approach. Sometimes reworking a solution that half fits is more time consuming than starting over.
Except in this case, it's a solution that literally fits perfectly. As I noted above, the port job probably wouldn't even require any source changes to the actual logic of VaultMP, simply a matter of filling out the stuff that VaultMP needs in its API interface for calling the functions/grabbing actor values. That and the SKSE plugin bit.

I get where you're coming from though. It's just that in this instance, we have a working MP *framework* (it's very modular) that can easily be ported to Skyrim without having to rewrite all the other stuff that VaultMP already has (chat, querying master server, dealing with replicating moves from the server and remote client, etc.) and that is all written to be game agnostic already (the game-specific logic is all encapsulated, as is the data for functions and actor values). I can understand why some people would want to start from scratch too (to new programmers, starting from scratch often seems much easier than learning someone's codebase, even when that's far from the reality).
User avatar
April D. F
 
Posts: 3346
Joined: Wed Mar 21, 2007 8:41 pm

PreviousNext

Return to V - Skyrim