🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

MMORPGs & AI - spreading it on clients

Started by
25 comments, last by Ysaneya 23 years, 11 months ago
Nice! Hey those 3 Orcs don''t seem to be attacking that guy... hey WAIT A MINUTE! They''re in formation around him! AAIIIIEEEEE!!! *you die*

Please, oh PLEASE let my computer control some of the NPC''s. I won''t hack the game, HONEST!
Advertisement
I think the bandwith problem is a lot more serious than you''re giving it credit for. Sure, having some guy runnning a couple of clients simulateously probably won''t have much affect. But consider the stresses of having your server suddenly need to handle not about 2000 clients, but 6000-8000. That''s a huge difference, and not something to take for granted. All the same, parallel processing is a great idea -- but rather than going SETI at home style, theres no reason why you can''t have the parallel processing all going on server-side, with neat rows SGI servers, or even some of those nice ccNUMA''s. Oh yeah... money... hmm... ok, nevermind.

random-nomad
Hmm.. i probably didn''t explain myself clearly, so here it goes again:

Kylotan:
I you read my previous replies, you''ll see i never said i wanted to make the client unhackable. As you said (and as i said), it''s impossible. I''m not naive. I won''t even try.
What i''d want is to make it useless.. a player shouldn''t have any interest in hacking it. Remove any interest for a player to hack the client, and he won''t.
Or/and, detect that a client has been hacked.

Buster:
*Rofl* Yes, I''d like to avoid that

Random-nomad:
That''s why i talked about scalability. Also keep in mind that AI probably doesn''t have the same needs than the average player.
Let''s take an example: movement. When a player moves, his client sends a movement report to the server, let''s say 10 times per second. Let''s say this report is around 20 bytes. That''s 200 bytes per second.
Now, does the AI needs to send 20 bytes 10 times per second ? Hell no. AI would be used to determine where a NPC should go. It needs to be done, well i don''t know, maybe once every 10 seconds ? My point is simply, it''s not the same amount of data sent at the same frequency.

And why not making parallel processing going on the server side ? Again, i think i didn''t explain myself clearly of *why* i wanted to do it client-side. That''s easy: i''d want to see AI be dramatically improved in MMORPGs.

Let''s think about it and forget the money problem for now.

On server side, you can have 10 super-fast (1 Ghz) machines dedicated to AI. Let''s say it''s a potential of 10 Ghz.

On client side, you can have 100,000 decent (500 Mhz) machines, giving.. 5% of their time to AI (not noticable for the player). It''s a potential of 2500 Ghz.

Server-side costs you lost of money to maintain. Client side would be free, assuming you *can* do it.

Do i still need to elaborate on the interests of my idea ?

Y.
> On client side, you can have 100,000 decent (500 Mhz) machines

Err.. it would mean 100,000 online connected players at the same time, which is rather optimistic But yet, with 20k players, it''d mean 500 Ghz.. still 50 more times than everything on server-side.

Y.
Couple of responses. On the internal computers you can have much more. When people spoke of really expensive computers, I was thinking 8 processor machines, fibre channel SCSI arrays, mounds of RAM, and a gigabit backbone for the network. It is impossible with the latency of the internet to replicate this using distributed processing. The linear Ghz equations used above make no sense when the bottleneck at that point of distribution would be the network the computers were connected with.

quote:
Beyond that, I really don't see the whole point in playing a game with thousands of other people. You're never interacting with more then a handful of them at any one time, and you'll never become even familiar with a few hundred of them at the very most.


The whole problem with only a few hundred people on the game is the inability to use statistical measures to manage and balance the game world. Economic systems in an MMORPG don't fully develop until you have many more people playing the game. The law is still correct though in stating that all that you will have is a sub-community effect. Facilitating the communication between players and the community is a serious gameplay issue that neither UO, EQ, nor AC properly execute. In all of these games it is extremely difficult to even find a buyer for something that you want to sell.

As for the original idea. One of those laws mentioned earlier, is the law that states one shall never trust the client. Hacking will occur in every and anyway possible. It is about as futile to try to prevent hacking as it is trying to prevent your users from figuring out the stats behind their characters. Both will occur with astounding efficiency. While in an ideal world things would be this way and we could trust every computer on our network, unfortunately this world does not exist so it is impossible to implement this idea effectively and fairly. *sigh*

Kressilac


Edited by - kressilac on July 3, 2000 10:08:55 PM
Derek Licciardi (Kressilac)Elysian Productions Inc.
quote: Original post by Ysaneya

Kylotan:
I you read my previous replies, you'll see i never said i wanted to make the client unhackable. As you said (and as i said), it's impossible. I'm not naive. I won't even try.
What i'd want is to make it useless.. a player shouldn't have any interest in hacking it. Remove any interest for a player to hack the client, and he won't.
Or/and, detect that a client has been hacked.



How would you make it useless? Pretty much anything that can affect the gameplay can be useful to change. If, as suggested above, your client was able to control the AI of NPCs, then people would change that AI to suit them. To have the NPCs that your client deals with in a different area entirely to the player would require the processing of twice as much world info, as well as more bandwidth, perhaps more than double the amount (send the other zone's info, plus the info for these NPCs)

Or, on a more basic level, you could just analyse the AI to the point where everything can be predicted. By analysing an NPC's AI, you could probably have it generate an automap, for example. The possibilities for exploitation rise along with the amount that you trust the client.

Lastly, I don't think trying to detect a hacked client is a viable solution. If they can hack your program to change behaviour, they can hack whatever mechanisms you use to detect a hack.

Edited by - Kylotan on July 4, 2000 9:35:58 AM

Here''s an idea for you guys to consider: Have special AI "clients" which are behind the network, have them log in just like a normal client to the same machines(except local or private backend network). It solves accusations of NPC cheating, since the server just thinks its another player and only gives them the same info(or you could have a special login for them too, maybe strip some of the superfluous info that a player would want). Anyway, you could have a couple of AI machines that just sit there and process AI and they "login", and take as much processor time(maybe less) than normal players on the server.

quote: Original post by Kylotan
How would you make it useless [ hacking the client ] ? Pretty much anything that can affect the gameplay can be useful to change. If, as suggested above, your client was able to control the AI of NPCs, then people would change that AI to suit them.


This is a 3AM idea, so don''t shoot me if it sucks, but what about making it standard practice for the client that''s running the NPC''s to modify their behaviour?

I was thinking about old Ultima games, and how you''re running around with a party of about 4 people, all dumb as rocks. Then I was thinking about Quake2, and the multitude of Bot AI''s that people were scripting as opponents.
Then I put them both together, and thought,
why the hell don''t you let the player design and run some NPCs for the world? Yes, some players will program them so that they are very advantageous to him, but is that a problem? No it isn''t, everyone else will be able to do the same.
Most players will end up having a small band of "henchmen". This could be useful for him too, perhaps being able to take control of different ones at different times, or letting them protect him while he is not logged in, or whatever.
Some players might program shopkeepers, or farmers, so that they have a little community that can generate funds for them. They might build castles that are staffed, etc etc.

You could have the player''s computer run those NPCs while he is logged in, and move them onto the central server when he isn''t. I think this wouldn''t overload it too much, since, as mentioned before, most of those NP-characters would be interacting with that particular player character most of the time anyway, and therefore be mostly idle when he is not logged in.


It just seems to me that this way, you could do economics, world population, social interaction, and a high level of NPC intelligence, without compromising server load or the main story (since none of those NPCs will be directly related to server story events - BUT, players may be able to write their own plots using their NPCs... )



Give me one more medicated peaceful moment.
~ (V)^|) |<é!t|-| ~
ERROR: Your beta-version of Life1.0 has expired. Please upgrade to the full version. All important social functions will be disabled from now on.
It's only funny 'till someone gets hurt.And then it's just hilarious.Unless it's you.


quote: Original post by Dogfood

Here''s an idea for you guys to consider: Have special AI "clients" which are behind the network, have them log in just like a normal client to the same machines(except local or private backend network). It solves accusations of NPC cheating, since the server just thinks its another player and only gives them the same info(or you could have a special login for them too, maybe strip some of the superfluous info that a player would want). Anyway, you could have a couple of AI machines that just sit there and process AI and they "login", and take as much processor time(maybe less) than normal players on the server.



This is what I was suggesting in my earlier post:
quote: Original post by Dak Lozar
Hmmm, now that I think about it, why not just have a smaller machine "on site" that would handle the NPC/MOB AI? This, possibly, is a good place for a COM+ component.
Or another server that just answers the "main" servers request.


What you would have here is a behind the "DMZ" server that responded to the main game server. This server would track all NPCs in the game, solving and answering request from the main game servers request for individual NPCs or groups of NPCs.
This approach would maintain security because the server would be inside the network and would also allow for the NPC/AI to be a fully developed application that would constantly be updating the NPCs and answering the request of the server. You could also make use of an in memory database, this would eliminate the need for the main game server and the NPC server to communicate. You would have to solve the issue of saving this volatile data, but that is easily remedied.


Dave "Dak Lozar" Loeser
Dave Dak Lozar Loeser
"Software Engineering is a race between the programmers, trying to make bigger and better fool-proof software, and the universe trying to make bigger fools. So far the Universe in winning."--anonymous
No replies to my 3AM idea? *sniff* I''m disappointed


Give me one more medicated peaceful moment.
~ (V)^|) |<é!t|-| ~
ERROR: Your beta-version of Life1.0 has expired. Please upgrade to the full version. All important social functions will be disabled from now on.
It's only funny 'till someone gets hurt.And then it's just hilarious.Unless it's you.

This topic is closed to new replies.

Advertisement