Итак, есть сервер. Как он устроен?
*далее идут мои рассуждения, которые стоит подправить*
Вообще, основных функции сервера две: отвечать на запросы клиента, и обрабатывать виртуальный мир, в котором происходит действие, вне зависимости от того, есть там игрок или нет (отключать пустые локации можно, но мы про это пока забудем).
Первая функция вроде бы особой сложности не представляет - знай, обрабатывай себе запросы клиента о состоянии локации, перемещений вещей из сундука в инвентарь итд итп...
Запрос поступает на то, что можно назвать комутатором - процедура, которая его дешифрует и отдает/создает данные в поток-обработчик, который и осуществляет действие - например переместить номер предмета из области памяти А (судук) в область памяти Б(карман), проверив возможность этого перемещения.
А вот как идет обработка мира?
Тоже куча потоков, а в каждом - тригеры респауна, АI мобов??? или как же все это выглядит????
Цитата
А вот как идет обработка мира?
Тоже куча потоков, а в каждом - тригеры респауна, АI мобов??? или как же все это выглядит????
кхм... а взять движок и поиграться сложно что ли? Многие исходники обще доступны ... На сколько я помню ни каких там отдельных потоков, во всяком случае в том что я собирал... Например старые сырцы сога и дф ... Есть основной цикл .. game_loop_unix вроде функция из нее запускается уже вся обработка ... тебя интересует update_handler, у всех событий есть определенное время обновления... счетчик просто уменьшают до тех пор пока он не станет равен 0, тогда запускают обновление например mobile_update char_update quest_update obj_update и тд.. и снова инициализируют счетчик... вот и все ...
CrackedMind
05 Aug 2009, 17:09
Можно для начала почитать книжку:
[R.Penton] MUD Game Programming (2003). К ней прилагаются исходные коды.
А потом можно самому начать писать. Или взять готовые и поковырять их.
о, за книжку огромное спасибо!