A nice UT link - 333networks

Discussions about UT99
UT99.org

Re: A nice UT link - 333networks

Post by UT99.org »

billybill wrote:You are right it's not very common. The default query object (actor) doesn't send bots to be evaluated with the game code I pasted above. But the code that sends them through that is buggy and doesn't handle spectators correctly either.

So assuming a bot is sent through that code the same way spectators and players are and not ignored, they would be evaluated this way. It's killing two birds with one stone because that code is already there to handle the bots. People who look through the UT3 browser often will tell me it's ridiculous and a type of 'cheat' to make the server look more popular

However, it's not something that's hard to do given the existing code that evaluates them and sends to people's browser and services like gametracker that they are indeed bots.

I think you should support it because it's there, fake players with a ping you can't do anything about and I'm not suggesting you remove them from your total players unless there is a sure way to determine them. That said, I don't expect you would have an easy time doing this. Leaving them out of total player count completely might be going too far. Anyway, good luck
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

billybill wrote:Anyway, good luck
Thanks.

(side note: I'm talking about fixes on dev.333networks.com)
Right now, I stick with "<playername> (bot)", I guess that later on I could replace it with a computer icon or custom "team" color. The implementation is there, the rest is cosmetic.

Fake players-- not my problem for now. You can't catch them if you can't detect them. I guess it is just a matter of other players selling these admins out. There are plenty of people who may want to spend their free programming time on statistics and neural networks to recognize either bot playernames or impossible variations in score or ping. 333networks has (since short) a blacklist function, if such admins get caught, there is a way to remove them from my MasterServer. I have no policy about blacklisting yet, so until such time, it remains unused.

I sent emails to a few of the admins using the "bot query", asking more about how they do it. I expect either a forum post or an email from them within next week.


EDIT: Before I even posted, my suggestion was confirmed already! Crossposted with http://www.ut99.org/viewtopic.php?f=12& ... =15#p61103
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
User avatar
Hook
Inhuman
Posts: 754
Joined: Tue Apr 22, 2008 11:21 pm
Personal rank: UT99 Promoter/Admin
Location: Minnesota USA
Contact:

Re: A nice UT link - 333networks

Post by Hook »

Folks, Darkelarious and 333Networks is doing Excellent and Needed work for our UT99 Community, some of the best and most needed work to come down the UT pipe in years.
:gj:
I just hope he doesn't loose interest! :wink:
=Hook=(Member# 626)
HUTP Active Forums: https://hooksutplace.freeforums.net/forum
HUTP UT99 Community Portal: https://hooksutplace.freeforums.net/
OR: https://hermskii.com/hook/ut99_hutp/
UT99 Server -> CROSSBONES Missile Madness {CMM}

* Newest Versions of: PRO-Redeemers | PRO-SNIPER-Redeemers | PRO-SEEKER-Redeemers <-(the Original)
and Now with FOOD FIGHT and Frying Pan arena !!!
IP: 68.232.181.236:7777 <-(NEW IP to come)
UT99 MH Server -> {CMH} CROSSBONES Monster Hunt (MH) by Mars007 (The Original) - IP: 108.61.238.93:7777
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

Hook wrote:I just hope he doesn't loose interest! :wink:
Well, lately I have become obsessed with this thing called "curling". :agree1:
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
UT99.org

Re: A nice UT link - 333networks

Post by UT99.org »

billybill wrote:wow you have implemented everything I have said now. I can clearly see gametypes like excessivedm in the dm list. I can see _(bot) at the end of the playernames of bots. I am quite amazed at your non-hesitation to add these things

I have barely dabbled in the uplink object at all, but I did see some requests for you over at Hooks forum about regions. http://www.oldunreal.com/wiki/index.php ... nreal_v1.0

It looks to me like getting a listing of servers in the ubrowser would get the location of any servers with a set location, so sorting these client-side without having to click a server would be easy (think region server tabs).

It says on the wiki that 'region' is sent to the master server in order to determine which master server to use. Here is my best guess: a busy master-server would have nodes (think IRC network) and the nodes are in or handle different regions, the 'master server address' would act as receiver of servers and will re-direct all 'location' listed servers to the requested region node

If I am correct, and I am only guessing all this, the client would then choose their nearest master server and any others they might wish to gather servers from

There shouldn't be any need to split up of that given the limited amount of ut servers. I'm not sure of any games that do use a model like this. Presuming all that I said is correct. Given the current state of the game it wouldn't take a very powerful computer or connection to handle a large list. A large sustained attack may force you to re-think the structure of things, or maybe if you supported enough different games you would want to do something like this to split up the load. Hey, just throwing it out there

I could probably check myself how many servers are sending a location. I'd like to know if you had interest in doing something like this in the future. It would provide a stability boost and some new ways to deal with DOS attacks. More is better than one, or none. I see other networks like multiplay have moved to be more stable with their own masterservers. It surprises me you wrote most of this yourself when there already exists one or more. Several of these have come and go and you only have to search what's available to the engine (not game specific) to see what already exists
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

In the current configuration, the MasterServer can support all games which use the same gamespy protocol that UT uses too. If I can get somebody to figure that out, we're essentially done, then I can do the rest. There is one catch, you may have heard of the "secure/validate" challenge. There is plenty of documentation available, so I guess I'll assign that as homework to who reads. The structure is largely in place to adapt this challenge for more than one (ut) gametype, all with unique keys. I found a way to respond properly to the secure challenge, and send out the challenge on my own as well, so only legitimate UT clients can connect.
Sorry, bots!

The location thing works pretty much as you described it already, it was designed in a marvelous way for that time. Very smart, very practical. Sadly, it was barely used. Currently, only 21 out of 1003 entries (queried since yesterday evening) have a location set different than 0 (world). In other words, I can surely implement this feature, too bad that admins do not set the location on their own. This is not an automated process.
On the other hand, as also discussed at Hook's UT place, what I can do, is bind the IP whois data to a country. After that it's just a matter of toying with the display to list by country, by region (anyone volunteering to make region tables?) or by hemisphere. It is possible, it will just take some time to properly implement and show. I have a few things more on the To Do list (on-site favorites, upload/download framework, TheDatabse), this one is not on top unless there is a real demand (overflowing mailbox) for it.

As for the DDoS thing, I hear it's going around like the flu. My provider should have a decent DDoS protection, but if somebody really wants to break 333networks, so be it. In that case, I just close the ports, and nobody gets to see 333networks anymore after that-- simple as that. I'm in for the fun, if somebody thinks he/she has a reason to take that fun away from me, then I'm out.

I am concerned about popularity of 333networks, though. A few months ago, only 12 servers did a link-up to my MasterServer, three weeks ago that was 25, now there are 56 servers linking up. The website got 4700 visits since I aired the development build last week. I don't know about popular sites, but for me that is an awful lot of interested people. I like to keep 333networks running stable, for now that is going fine. But if 333networks continues to grow like it does now, I will have to consider expanding to a business connection (or glass fiber) and a better server. I promise to put the specs on the site at some point in time.

UPDATE: almost 3500 hits from one single IP. At first I thought it was malicious or an attack, I had my hand on the "block" button, but now I am actually starting to wonder whether somebody left this page open all day and night? Perhaps I should revise my auto-refresh policy. That's the dark side of writing a nice website, it might get popular. I'm not sure how I am going to fix this drain-- it's a service to all of you, but at the same time that service should not break itself. Or I could put up a donation button and hope that it's enough to buy me a nice/fast connection and server.
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
UT99.org

Re: A nice UT link - 333networks

Post by UT99.org »

billybill wrote:Multiple nodes would really secure everything, I don't see a need to block non UT clients from fetching the master list that is the wrong way to deal with it. I know what you are getting at but the people making the fetchers are probably less interested at reading the documents than the attackers if you were worried about them specifically targeting the master list. Lots of traffic is often assumed to be ddoss but if you check it it will be aimed at something else and more likely spam bot related. I wouldn't rely on your host alone to block these

You have already had interest from other people here who would host nodes for any ips passed to them and as you know the client will only ping each ip and port once and multiple master servers in client inis is the norm

(And you probably shouldn't name and shame that ip, they probably left their page open like you said)

Anyway, I want to report another bug. This one is ignoring players when spectators are present. Example server sends reply of 9/9 players like this

Code: Select all

player_0/name/mesh/soldier/
player_1/name/mesh/soldier/
player_2/name/mesh/soldier/
player_3/name/mesh/soldier/
player_4/name/mesh/soldier/
player_5/name/mesh/soldier/
player_6/name/mesh/spectator/
player_7/name/mesh/soldier/
player_8/name/mesh/spectator/
player_9/name/mesh/soldier/
player_10/name/mesh/soldier/
players 9 and 10 in the above list are being skipped over. I haven't looked over your code to see what's happening, I can only speculate that you are cutting the players off when the 9 (numplayers) is reached. I'm talking about the http://333networks.com/ut/ not the interactive ut browser lookalike
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

That could perhaps be an older bug that I thought I had covered--
Spectators have empty fields, my regex does not. So the {key => value } gets mixed up to {value => key}. I'll look into that.

The reason why I validate UT clients before sending the IP list is an heritage from how the MasterServer itself works. This is something built in the protocol. If I try to break out the validation part, UBrowsers cannot connect anymore, sadly it is as simple as that. I can consider an (http) API for this purpose-- just a simple ip:port list getting page.
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
UT99.org

Re: A nice UT link - 333networks

Post by UT99.org »

billybill wrote:Ah, k. I have used a couple of third party browsers in the past that were able to retrieve the list, did not realize they were doing proper validation. I knew they were doing something more complex than requesting the list and getting the ips but figured there was a quick hack to get around validation, masterserver didn't require it any longer, or they had actually learned the validation process. My point still remains that you will need something besides validation to stop DOS attacks and should not rely on validation alone
$carface
Skilled
Posts: 212
Joined: Sat Jul 23, 2011 10:58 pm

Re: A nice UT link - 333networks

Post by $carface »

Any ideas why all of the unrealkillers servers show as archived?

EG http://333networks.com/ut/185.16.85.10:7778
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

$carface wrote:Any ideas why all of the unrealkillers servers show as archived?
It starts to happen more and more now. I will look into it-- it's probably a bug in the updater process.

EDIT 10 minutes later: restarted the updater without modifications. Seems to be fixed now. Odd.
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
$carface
Skilled
Posts: 212
Joined: Sat Jul 23, 2011 10:58 pm

Re: A nice UT link - 333networks

Post by $carface »

Might be a good idea to cron or schedule task it for now :)
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

$carface wrote:Might be a good idea to cron or schedule task it for now :)
Not really. Restarting a task automatically is a mixture of a serious design flaw and incompetence to solve it. A receipe for disaster. I figured out that a number of servers were not queried because they did not respond in time and were considered "offline". I added a function that checks whether the server sent any beacons in the last hour or so.

If any servers show as archived/offline in the future, consider adding it to the 333networks master server.
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: A nice UT link - 333networks

Post by Higor »

If the overhead isn't in the CPU, you should consider making server objects a bit smarter, with their own processing line, called by the main loop whenever we need it.
You said processing line in the object class and make it go thru various states.

The processing line shouldn't be called (and process all objects' states) with such a high frequency, something between 1-10 hz should be enough.

On each server object (c++ example):

- On the main loop, iterate all Server Objects and call UpdateState( CurrentTime - LastUpdate);
- void UpdateState( float Delta); //Delta is the interval between calls, we use this value to then update our State Timer

- float StateTimer; //We use this for various purposes, if goes <= 0 after UpdateState, trigger the timer and change state.
- int CurState; //Described below
- int TimeOutCount; //Self explanatory

1 - Active1 > Server has responded to latest query, set StateTimer to next query time (a global setting).
2 - Active2 > Server failed it's last query, set if TimeOutCount is >= 1, set StateTimer to query retry (global setting, should be as low as possible)
Optional >> 3 - DelayedQuery > Too many queries ATM, delay set on StateTimer, this may happen if the master server loses connection.
4 - PendingResponse > Awaiting server response on query, set StateTimer to the TimeOut time (another global setting), if timeout occurs, do TimeOutCount++.
5 - Down > Server is considered down, happens if TimeOutCount goes above the timeout global setting, set StateTimer to the time we want to keep the server registered in the list.

The main looper 'can' have an event system where you may call a function in the main looper to notify what happens to individual queries.
Something like:
- void QueryStarted( ServerObject* SO)
- void QueryFailed( ServerObject* SO)
- void QuerySuccess( ServerObject* SO)
Using this method, you may also keep track of the amount of Active Queries, Successful queries and Failed Queries by simply doing --,++ on said events.
Coding in states and events is pretty damn fun and error proof if done right (unreal engine is all about events after all).
User avatar
Darkelarious
Skilled
Posts: 175
Joined: Sat Feb 08, 2014 12:02 pm
Personal rank: 333networks admin
Location: Phobos Moon
Contact:

Re: A nice UT link - 333networks

Post by Darkelarious »

Thanks for your contribution, Higor. Currently, instead of running everything through states or a large array(ref), I store everything in the database and have the server query bot sort it out later.

I am writing documentation on the master server and how I implemented my own on http://git.333networks.com. On IRC, plenty of clever suggestions and useful ways to implement them came by, so I will focus on those too when I can find time for it in the next week or two.
--Darkelarious
Image
Masterserver | Discord Channel
Oh, and we still are ready to receive donations. The url works, right? It doesn't seem to be doing anything...
Locked