AI Server for MMO system?
What do you guys think about having two seprate server applications running on two different computers?
One server is going to be your AI server.. As you can guess it handles all AI functions, making AI more advanced because almost all of CPU is used for the AI (Not having to share it with the connection/user server would allow it to perform more stuff per cpu cycle, etc..)
The other server is just going to be your common game server.. Accepting connections/creating user threads/collision detection, etc.
Does anyone think this is worth while? It would be also possible to have both servers on a LAN, so lag wouldn''t be a problem.
Regards,
Nate Strandberg
"Always forgive your enemies, nothing annoys them more.."
What would be the point? A machine with a given amount of processing power is almost always much cheaper than two machines each with half the processing power.
Well like I said, having two systems would allow you to create much more advanced AI.. Even possibly getting to the extent of ALife.
But true, if you had say:
P4 2.5ghz
800MB ram
Win2K SP2
Then it might be better with one system =)
-Nate
But true, if you had say:
P4 2.5ghz
800MB ram
Win2K SP2
Then it might be better with one system =)
-Nate
"Always forgive your enemies, nothing annoys them more.."
Having AI on a seperate server (glad to see this idea I tossed out over a year ago caught on) allows you to update the AI continually without shutting down the server to do it. It also allows you to have much more advanced AI as processing power isn''t an issue. And it allows you to have as many NPCs as you and as many types of them without having to change a thing server side. And you can add them at any time.
The server needs all the processing power it can get to avoid lag from having to deal with AI directly causing it to process game messages slower. If all it has to do is send messages and game logic then you won''t need to distribute the game server itself over multiple computers which is much more difficult than just making the AI for the NPCs seperate which only requires making a modified client and can be worked on seperate of the server.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Dot Com ]
The server needs all the processing power it can get to avoid lag from having to deal with AI directly causing it to process game messages slower. If all it has to do is send messages and game logic then you won''t need to distribute the game server itself over multiple computers which is much more difficult than just making the AI for the NPCs seperate which only requires making a modified client and can be worked on seperate of the server.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Dot Com ]
I don''t see any reason why this wouldn''t work, but I don''t think you are going to end up with as much benefit as you think you are going to. The overhead of sending essentially all world state data to a second server, then processing the data received from the second server back on the main server, just seems a little excessive to me. I think the response time of the AI will be noticably slower, which is probably the opposite of what you want.
The original question related to 2 server apps on 2 seperate boxes. This is nothing new, and is used for stuff like chat and login in existing commercial MMOs. IMHO it''s a very good idea. However AI is pretty central to the main game logic, and I''m not sure that you will gain much (if anything) by splitting it out to a seperate server.
Good luck.
The original question related to 2 server apps on 2 seperate boxes. This is nothing new, and is used for stuff like chat and login in existing commercial MMOs. IMHO it''s a very good idea. However AI is pretty central to the main game logic, and I''m not sure that you will gain much (if anything) by splitting it out to a seperate server.
Good luck.
hm.. Well thanks for the feedback guys! I guess just having one server processing game logic is the best idea for now.
Regards,
Nate S.
Regards,
Nate S.
"Always forgive your enemies, nothing annoys them more.."
This is a great idea.
The thing that you don''t understand is that MMP games take MANY servers (20+) to operate. Unless you do the EQ style of game (zones, which sucks!) there is no logical way to split AI among the different servers. Even with logical boundries in the world (AC, DOAC, BigWorld) you still benefit from having the AI code on a dedicated server.
Handling network traffic and state updates is nothing compared to the actual AI routines. Updating 500 monsters over gigabit ethernet is nothing compared to processing 500 monsters on a single machine. There are many ways to optimize the network traffic and state updates.
It''s been done and works great.
KalvinB: Good ideas are often thought of as excentric to the under-developed mind. :-p
Stephen Manchester
Senior Technical Lead
Virtual Media Vision, Inc.
stephen@virtualmediavision.com
(310) 930-7349
The thing that you don''t understand is that MMP games take MANY servers (20+) to operate. Unless you do the EQ style of game (zones, which sucks!) there is no logical way to split AI among the different servers. Even with logical boundries in the world (AC, DOAC, BigWorld) you still benefit from having the AI code on a dedicated server.
Handling network traffic and state updates is nothing compared to the actual AI routines. Updating 500 monsters over gigabit ethernet is nothing compared to processing 500 monsters on a single machine. There are many ways to optimize the network traffic and state updates.
It''s been done and works great.
KalvinB: Good ideas are often thought of as excentric to the under-developed mind. :-p
Stephen Manchester
Senior Technical Lead
Virtual Media Vision, Inc.
stephen@virtualmediavision.com
(310) 930-7349
Stephen ManchesterSenior Technical LeadVirtual Media Vision, Inc.stephen@virtualmediavision.com(310) 930-7349
I actually like this idea on paper. I''d say that you treat the AI Servers like clients. Only send them the information they need (i.e. other NPCs and PCs that are within their visual range). You can have 1 AI Server control the AI for several different NPCs, optimally they would be in the same area so they only need the information about PCs and NPCs that other AI Servers control around them.
You then set up a pool of these AI Servers and every time an NPC spawns, assign it to one of the servers in the pool. That server will be responsible for that NPC for its'' entire lifetime.
I dunno, that sounds pretty slick to me.
You then set up a pool of these AI Servers and every time an NPC spawns, assign it to one of the servers in the pool. That server will be responsible for that NPC for its'' entire lifetime.
I dunno, that sounds pretty slick to me.
quote:
Original post by smanches
It's been done and works great.
Examples in released games?
quote:
Original post by JonStelly
Only send them the information they need (i.e. other NPCs and PCs that are within their visual range).
There are some cases where AI might require much more information than this. Some pathfinding, character tracking, and probably many of the AI improvements that would be included in "more advanced" AI. What about coordinating a large army in combat, where some 'soldiers' are out of visual range of the lead unit/NPC?
I agree that this is feasible, but I'm not convinced that the rewards would be remarkable enough to warrant the extra work.
[edited by - fingh on July 23, 2002 12:52:52 AM]
"What about coordinating a large army in combat, where some ''soldiers'' are out of visual range of the lead unit/NPC?"
All you do is have a value in the character class that contains a view range. NPCs will just have a higher value so they get the info for a larger range of characters. Since you have 100Mbit to work with or more, the extra data isn''t much of an issue.
Or, you could just not given them a higher range and if they get behind, they get lost. Or you don''t have them track the leader. You have a chain instead. The track the person in front of them like you''d do in real life. When you have a large line of people the last people don''t follow the leader. They follow the line in front of them.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Dot Com ]
All you do is have a value in the character class that contains a view range. NPCs will just have a higher value so they get the info for a larger range of characters. Since you have 100Mbit to work with or more, the extra data isn''t much of an issue.
Or, you could just not given them a higher range and if they get behind, they get lost. Or you don''t have them track the leader. You have a chain instead. The track the person in front of them like you''d do in real life. When you have a large line of people the last people don''t follow the leader. They follow the line in front of them.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Dot Com ]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement