Removing Networking

Expanding and utilizing the engine via C++.
  • 1
  • 2
16 posts Page 1 of 2
Jay Copeland
Posts: 11
Joined: Thu Aug 11, 2016 11:13 am
by Jay Copeland » Mon Aug 15, 2016 10:57 am
Hello everyone,

I just downloaded the 3.9 release on my Linux desktop and got it up and running, I'm really happy to see it support the environment so much better than it has in the past. However, the project I'm working on requires a modification that I'm not sure I will be able to make, but I thought I'd ask you guys.

Is it possible to remove the built-in multiplayer networking component of the engine? I mean ... anything is technically possible with open source engines, but I'm curious just how heavily integrated it is.
Duion
Posts: 806
Joined: Sun Feb 08, 2015 1:51 am
 
by Duion » Mon Aug 15, 2016 12:09 pm
Why you want to do it? You can just make your game singleplayer only, no need to remove networking.
Jay Copeland
Posts: 11
Joined: Thu Aug 11, 2016 11:13 am
by Jay Copeland » Mon Aug 15, 2016 12:47 pm
Duion wrote:Why you want to do it? You can just make your game singleplayer only, no need to remove networking.


I'm the main programmer on board at this point, and I've worked an early-build MMO client-server model from our previous attempts at the project into something somewhat standalone, and I want to work it into Torque, but I can't get it working. I'm wondering if the built-in networking component is what's getting in the way. I would rather strip out what's in Torque and work in a fresh new version of what we've made than try to get what we have working around what's already there and ignoring it. In fact, doing so, according to a couple of people I know networking from the college, is considered a (albeit non-defcon) security risk.

I mean, they could be wrong, they aren't industry pros they're mostly info security in corporate settings, but I still think they probably have a good basis on the thought. Unless someone has a suggestion on how I could somehow rework the built-in networking altogether, that's what I'm looking at.

Would I benefit from making that client-server model a plugin to the engine versus built-in? I would think that too would be a security risk versus just going full into building it into the engine and thusly client.

If that makes sense, please shout if I'm not clarifying right. :)
Azaezel
Posts: 383
Joined: Tue Feb 03, 2015 9:50 pm
 
by Azaezel » Mon Aug 15, 2016 4:05 pm
docs
https://github.com/GarageGames/Torque3D ... ject.h#L59
docs
https://github.com/GarageGames/Torque3D ... lock.h#L37
docs
https://github.com/GarageGames/Torque3D ... face.h#L28
example of a recent tweak
https://github.com/GarageGames/Torque3D/pull/1358/files

tl;dr: Pretty tightly coupled. Server-authorative. Would tend to agree with the general assessment that mixing networking methods without some deep diving is likely to lead to oversights in security if that's what they meant. Otherwise would like to hear about it as an issue at a minimum.
JeffR
Steering Committee
Steering Committee
Posts: 742
Joined: Tue Feb 03, 2015 9:49 pm
 
by JeffR » Mon Aug 15, 2016 4:11 pm
Jay Copeland wrote:
Duion wrote:Why you want to do it? You can just make your game singleplayer only, no need to remove networking.


I'm the main programmer on board at this point, and I've worked an early-build MMO client-server model from our previous attempts at the project into something somewhat standalone, and I want to work it into Torque, but I can't get it working. I'm wondering if the built-in networking component is what's getting in the way. I would rather strip out what's in Torque and work in a fresh new version of what we've made than try to get what we have working around what's already there and ignoring it. In fact, doing so, according to a couple of people I know networking from the college, is considered a (albeit non-defcon) security risk.

I mean, they could be wrong, they aren't industry pros they're mostly info security in corporate settings, but I still think they probably have a good basis on the thought. Unless someone has a suggestion on how I could somehow rework the built-in networking altogether, that's what I'm looking at.

Would I benefit from making that client-server model a plugin to the engine versus built-in? I would think that too would be a security risk versus just going full into building it into the engine and thusly client.

If that makes sense, please shout if I'm not clarifying right. :)


Details for the particular setup you're shooting for would be useful, but on a basic level, I'm not sure how extreme a security risk an uninitialized and unused networking layer would be.

For example, if you wrote a custom game class that worked with your custom networking model and doesn't interact with the built-in packet handling in any way, then any theoretical bits exposed that could be set couldn't really be utilized to mess with the custom game class.

If your security buds have specific points of concern a la security, those could probably be addressed, but if your stuff doesn't interact with the existing networking, I don't think it'd really matter much.
Jay Copeland
Posts: 11
Joined: Thu Aug 11, 2016 11:13 am
by Jay Copeland » Mon Aug 15, 2016 4:20 pm


Thanks for the links, definitely gave me a little bit better perspective on what's going on there in integration. :)

Azaezel wrote:tl;dr: Pretty tightly coupled. Server-authorative. Would tend to agree with the general assessment that mixing networking methods without some deep diving is likely to lead to oversights in security if that's what they meant. Otherwise would like to hear about it as an issue at a minimum.


I do see how "neatly" the Torque networking is written, it's definitely better than a lot of networking I've seen in other projects.

JeffR wrote:Details for the particular setup you're shooting for would be useful, but on a basic level, I'm not sure how extreme a security risk an uninitialized and unused networking layer would be.


The worry my buds expressed wasn't so much of exploiting the system as it is, but having the underlying and unused networking there, if we ever decided to offer a paid upgrade system to the game, would allow a way for people to figure out how to set up their own multiplayer system just as good or better without paying. Sure, that shouldn't happen based on the idea people would go for ease of use versus cost, but look at all the WoW private servers, the desire to avoid payment is there. I know the argument and idea is silly in an open source setup of a project's engine, but it's still completely viable, right?

JeffR wrote:If your security buds have specific points of concern a la security, those could probably be addressed, but if your stuff doesn't interact with the existing networking, I don't think it'd really matter much.


Again, very true that it's not an issue too much of immediate security, but allowing such a thing to exist untouched invites it to be used as an exploit in some form. If my train of thought makes sense. :roll:

Final note: I would give details in particular, however at this point with all the engine modifications and overall design preplanning I'm working on to see if what we want is possible within the realm of reason, I'd rather just see if in a generic sense what I'm asking is so.
Jay Copeland
Posts: 11
Joined: Thu Aug 11, 2016 11:13 am
by Jay Copeland » Tue Aug 16, 2016 4:45 pm
Okay, I can give one further detail now that I know for sure we're going that route:

Our plan, if we could strip out the networking inside Torque, would be to replace it with our system that's tied to the Oracle Linux server we built for the server-side half of the project.

The thought is, would it be worth trying to edit the existing networking components to try to properly make use of the powerful Oracle server setup, or would we be better off stripping it out and replacing it?
chriscalef
Posts: 332
Joined: Mon Feb 09, 2015 7:48 pm
by chriscalef » Thu Aug 18, 2016 6:42 pm
After years of taking on projects that seemed reasonable at first but turned into monstrous quagmires before they were finished, if ever, I can say for sure that if I were you, I would try to work with Torque's existing networking layer before I'd try to strip it all out and replace it. It is very fast, by the way - I wonder if your Oracle system is as efficient in terms the needs of a realtime game, ie using the absolute least number of bits possible for the required data? This is one area where Torque benefits from its history as a first person game engine from the nineties, where everybody needed a smooth framerate while playing Tribes over their dialup modem connections.

Even if you do rely exclusively on the Oracle system, if your only concern is to make it impossible for players to play multiplayer on their own for free, it seems like you could come up with a myriad of ways to break that functionality without rewriting the whole engine to strip out the network code. I assume you're not going to release your source code, given the concern about exploits, so it would seem that a simple monkey wrench in the right place would be enough to make it impossible to connect to another player without going through your authenticated system.
Jay Copeland
Posts: 11
Joined: Thu Aug 11, 2016 11:13 am
by Jay Copeland » Thu Aug 25, 2016 7:17 am
chriscalef wrote:After years of taking on projects that seemed reasonable at first but turned into monstrous quagmires before they were finished, if ever, I can say for sure that if I were you, I would try to work with Torque's existing networking layer before I'd try to strip it all out and replace it. It is very fast, by the way - I wonder if your Oracle system is as efficient in terms the needs of a realtime game, ie using the absolute least number of bits possible for the required data? This is one area where Torque benefits from its history as a first person game engine from the nineties, where everybody needed a smooth framerate while playing Tribes over their dialup modem connections.

Even if you do rely exclusively on the Oracle system, if your only concern is to make it impossible for players to play multiplayer on their own for free, it seems like you could come up with a myriad of ways to break that functionality without rewriting the whole engine to strip out the network code. I assume you're not going to release your source code, given the concern about exploits, so it would seem that a simple monkey wrench in the right place would be enough to make it impossible to connect to another player without going through your authenticated system.


Excellent points ... yeah I'd probably be better off breaking functionality versus stripping it out if I could.

We will not be releasing source, correct. Though we're basing on Torque3D, we're heavily modifying several aspects with fully custom code, much of which we've sort of rigged together without input from others or books or anything to get specific functions and mechanics we want working. At this point it's mostly in the form of Torque plugins but we'll be changing that as time goes on after the release of Torque 4.0 (we're gonna end up basing mostly on that particular release, based on what we've heard rumor and such of the plans for that release and what we liked from 3.9's changes.)

Well after talking with a few friends in networking at the college, I actually got some suggestions on possibly figuring out a way to modify the Torque networking to specifically point towards and rely on the Oracle system. I know it's possible ... but would that be a good idea?
chriscalef
Posts: 332
Joined: Mon Feb 09, 2015 7:48 pm
by chriscalef » Sun Aug 28, 2016 12:10 am
Just what does your Oracle system do? Is it for persistence or frame by frame updates? Can you really hit it for player positions 32+ times a second, for all players? My only experience of anything database related is that interacting with them is far slower than that, but maybe what you have is a game-specific application designed for just what you are trying to do.

For what I'm used to doing with online games and databases, you would use the Torque networking for all the frame by frame updates, and then check in with the database periodically to save current position and sanity check the current state, etc., but I've never (in my admittedly old school, limited experience) heard of anyone using a database for realtime, frame by frame game state updates.
  • 1
  • 2
16 posts Page 1 of 2

Who is online

Users browsing this forum: No registered users and 1 guest