Few questions about OpenTNL in relation to what I am doing
by OvermindDL1 · in Torque Game Engine · 09/20/2005 (11:24 pm) · 8 replies
I am making a system where there is one master server, many sub-servers, and many clients per sub-server. Each sub-server only handles one area so there is no worry about overlap of the world. The sub-server's code is closely intertwined with the client code, only a single define compiles one or the other. I am planning on using python to create the objects which will be sent across the network. I have already created a remote method call interface in the classes so I doubt I would need to use the rpc in OpenTNL. I do not ever intend to make money off of this, but I do not want to open the code because of two reasons; one, it will probobly never escape my group of friends; and two, I don't want to deal with variations being out if it is every expanded. I do not intend on altering the network code so that is a non-issue.
As stated, just a small thing I am doing for fun, never intend to make money, but do not wish to release the source. Also note, I have no money... at all. Is this possible, or should I go elsewhere?
As stated, just a small thing I am doing for fun, never intend to make money, but do not wish to release the source. Also note, I have no money... at all. Is this possible, or should I go elsewhere?
#2
The main thing I was curious about was the licensing, the sub-server and client code are int-twined, although the compiled client does not contain the sub-server code, the code base itself contains both before compilation. I was wondering if I could just use OpenTNL in dll form or something similier, no changes expected to be made, and keep my side closed?
09/22/2005 (9:21 pm)
Quite close to what I'm doing. Actually the master server is directly connected to a database that holds the generalized state of the world. It parses through this updating things that are not already being handled elsewhere (in other words, no player is currently in), not time sensitive. Whenever a player enters an area that isn't being handled by a sub-server, it gives the sub-server the player is currently the information for it if it is near to areas the server is already handling, else it gives it to a more appropriate server and gives player info to reconnect to that sub-server. Overall, each individual server is going to be rated for a couple hundred people max, although I doubt I will ever get more then 10 in the total world; although I am designing it for massive players, I am creating it for the purpose of being able to handle a persistent and active world my friends and I will build/create/etc... I have a few computers laying around I am not using anymore so I figured that would be perfect to handle such things, may only need one or two up if it will only be a small amount of people. The bottleneck/difficulty here is not the network code, I am already handling rpc'ing and all such quite easily already, just need a back-end, what is difficult is how some of the managers function. Revealing more detail, each sub-server will be able to handle one planet and the surrounding space. The planet is a terrain system designed with paging and vast view distances, this is already working; space handles, well, space, along with gas giants, suns, asteroids, and such, this is mostly functional, except for lod'ing to billboards at far distances, working on two render passes, one for far away, then a closer one overlaid, which will contain billboards for things still far away, and actual meshes up close. As space will not be accessable till enough things are completed on land, it has taken a backseat for now, especially since it in full is not playable yet.The main thing I was curious about was the licensing, the sub-server and client code are int-twined, although the compiled client does not contain the sub-server code, the code base itself contains both before compilation. I was wondering if I could just use OpenTNL in dll form or something similier, no changes expected to be made, and keep my side closed?
#3
09/23/2005 (9:44 pm)
Buy a commercial license? :)
#4
09/24/2005 (2:43 am)
Heh, yea, not really possible, no money... at all. College tends to soak up every penny I get, not to mention I do not intend to ever make a dime off of this. I'll just find an api to handle the other things then. Thanks for your time. Be well.
#5
If it's for educational/non-profit use there might be a special deal to be had. You can inquire at sales@garagegames.com.
09/24/2005 (11:17 am)
Well, you could always GPL your code. :)If it's for educational/non-profit use there might be a special deal to be had. You can inquire at sales@garagegames.com.
#6
While I am thinking about it, I did not find a quick answer to this question for OpenTNL. What is the maximum amount of connection to individual systems can OpenTNL make before it starts experiencing a cap or a speed hit?
09/24/2005 (12:29 pm)
Actually I would be up for that if I had people helping, but I do not want people to start helping until I have something to show that I am committed, kind of a catch-22... I have been looking through about a dozen networking api's, focused on HawkNL(and things based on it), RakNet, and OpenTNL. Mostly just looking for something to use right now that will not bite me in the future. HawkNL being the most friendly to use due to the license; RakNet being very well featured, but have to jump through a hoop to get a free license (although an easy 'hoop'); and OpenTNL, which is well known and powerful, but the most restrictive license.While I am thinking about it, I did not find a quick answer to this question for OpenTNL. What is the maximum amount of connection to individual systems can OpenTNL make before it starts experiencing a cap or a speed hit?
#7
To your performance question, it's simply a matter of not enough information: it depends on SO many factors that it's really not answerable! TNL is "tuned" for FPS style games that require very accurate updating at extremely small frequencies, but MMOG's commonly don't require either of those tuning factors, so the code can be adjusted to meet your specific requirements.
09/24/2005 (12:34 pm)
To the license thing, TNL is OpenSource for non-commercial applications, so as long as you meet the specific requirements of the EULA (which I honestly do not know), you would be fine. My guess is that since you are keeping this in your inner circle so to speak, it wouldn't be a big deal to comply with the license requirements however.To your performance question, it's simply a matter of not enough information: it depends on SO many factors that it's really not answerable! TNL is "tuned" for FPS style games that require very accurate updating at extremely small frequencies, but MMOG's commonly don't require either of those tuning factors, so the code can be adjusted to meet your specific requirements.
#8
Would you happen to have a link to the EULA, only link to licensing for my use that I find on the OpenTNL website is the GPL, and although I understand the basics of it, I do not understand it as is. Someone needs to write the gpl in C equivilent pseudo-code, would be quite simple to understand then... Most things I work with are under the BSD license, even my favorate OS (for server and such use) is FreeBSD, not Linux... I am not a zealot for either, just what I have had my experience focus on... Sorry for the tangent.
09/24/2005 (1:11 pm)
This will be in two sets, one will be in space, floats positions will not be necessary to transmit, and int's can probobly be defined as a multiple of distance unless very close to something. The other will be on ground, will require detailed updates, but I am keeping distances large enough that int's will be all that should need to be transfered. This is by far more fps then mmo. Think more like planetside (never played it), but with resources/building...Would you happen to have a link to the EULA, only link to licensing for my use that I find on the OpenTNL website is the GPL, and although I understand the basics of it, I do not understand it as is. Someone needs to write the gpl in C equivilent pseudo-code, would be quite simple to understand then... Most things I work with are under the BSD license, even my favorate OS (for server and such use) is FreeBSD, not Linux... I am not a zealot for either, just what I have had my experience focus on... Sorry for the tangent.
Torque 3D Owner Stephen Zepp
Primarily, what you will want to be doing is to have your sub-servers able to both receive ghosted objects, and ghost them to their clients as well. The master server (if it is handling areas at all) will be ghosting objects to the sub-servers...although re-thinking what you said it seems you are implying the master server is simply a "redirector", and not actually managing world objects in it's simulation.
If that is the case, then you simply need your sub-servers to handle their own simulations (each mission/area, whatever you want to call it), and have the master server direct client connections to the appropriate sub-servers based on what area the client should be in.
In either case yes, it's certainly possible!