www.mudconnector.su

Национальный мадконнектор.
Текущее время: Вс апр 28, 2024 4:31 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Рассылка сообщений
СообщениеДобавлено: Пт июн 13, 2008 7:21 pm 
Не в сети

Зарегистрирован: Пт май 30, 2008 10:38 pm
Сообщений: 80
Откуда: спб
В игре есть много сообщений, которые надо рассылать. Под сообщениями подразумевается некоторая информация, выдаваемая клиенту.
Эти сообщения простые очень по идее: кто-то зашел в комнату -- надо всем видящим это создание об этом сказать (и тем кто видел, как ушел, и тем кто видел, как пришел). То же про вещи (взять/надеть/бросить/снять), про социалы и команды (смотреть на вещь/создание), про бой тоже. Можно миллион придумать.
Первый вариант, который я сделал -- тупой. Например, если персонаж берет предмет, то в том же методе Creature#take(item) рассылаются сообщения всем, кто находится в той же комнате. Это отстой потому, что надо делать проверки. Отстой потому, что по сути создание, проверяет, кому сказать в этйо комнате о своем действии. Смешно даже.
Пусть лучше, думаю, каждый будет сам думать, принять ли ему во внимание действие или нет.

Говоря короче, при поднятии предмета у всех созданий в комнате (или во всем мире), у самой комнаты (или всем комнатам), а также у вещей (-||-) вызывать метод типа #taken(actor, what). В общем случае там будет отсылка мессаджа клиенту (у персонажей) или ничего (у вещей, монстров и комнат), но эти методы можно определить в модуле (типа триггера получится). Эти методы содержат в себе реакцию объекта на какое-то действие. Действия (акции) симметричны с реакциями.

Проще всего, конечно, реализовать все эти методы на общем уровне Главного объекта MObject. От него наследуются Zone, Room, Creature, Item. В главное объекте делаем болванки методов, переопределяемые в каждом классе отдельно. Реакции делятся на три группы по признаку причин и момента их появления:
1. реакции на действия после их совершения: MObject#after_tell, #after_spell, #after_drop
2. реакции перед действием: #before_tell, #before_attack -- вызывается перед чьим-нибудь нападением, #before_spell, #before_drop -- если, например, надо поймать вещь налету.
3. реакции на тикеры: #on_tick (в начале тика), #after_round (после совершения удара руками).
По умолчанию у игрока (класс Player < Creature) стоит в методах отсылка сообщения клиенту (#send "вася бросил меч"), у монстра и вещи вообще пусто.

В том числе это ответ на вопрос, что доступно билдеру.
Интересно мнение кодеров на такую реализацию рассылки сообщений вместе с реакциями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт июн 13, 2008 8:41 pm 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
Считаю, что у тебя подход правильный... я делаю подобным же образом. Это так называемые эвенты - события,
каждый из которых представляет собой скрипт, который выполняется при каком-то событии.

Ньюнсы однако есть -
1. Так как мобов и объектов много - то для каждого писать скрипт на каждое из событий запаришся...
Поэтому у меня есть общие (базовые) скрипты для мобов и объектов, которые выполняются по
умолчанию. Если какому-то мобу нужно поступить на событие по другому - ему пишется свой
скрипт на это событие

2. Последовательность запуска скриптов - т.е. чьи скрипты на событие будут запускаться первыми ?
Мобов, чаров или может игроков ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт июн 13, 2008 8:56 pm 
Не в сети

Зарегистрирован: Пт май 30, 2008 10:38 pm
Сообщений: 80
Откуда: спб
Логично будет делать для созданий и вещей по порядку расположения в комнатах.

Прочитал про "скрипты" и понял, что ООП рулит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пн июн 16, 2008 5:57 pm 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
andrej_andreev писал(а):
Логично будет делать для созданий и вещей по порядку расположения в комнатах.


Это тоже вариант. Просто тот, кто обрабатывается первым, получает приемущество -право "первого удара". Поэтому все не так просто. Но попробовать стоит.

andrej_andreev писал(а):
Прочитал про "скрипты" и понял, что ООП рулит.


Где и что ты прочитал про скрипты ? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Чт апр 22, 2010 6:48 pm 
Не в сети

Зарегистрирован: Вт апр 20, 2010 10:56 am
Сообщений: 16
Тема двухлетней давности, но я тут думал и надумал более удобный вариант с сообщениями, который мог бы комбинировать как общение, так и действия персонажей. Вся технология завязывается на Jabber. Вместе с игровым сервером можно использовать сервер Jabber а в клиенте к игре по тихому сделать и клиент жабы но сделанный для нужд игры. В чем идея. Жаба как известно поддерживает так называемые конференции, что есть ни что иное как комнаты чатов. Что ж :) все легко :) приватные сообщения могут быть как сообщения из ростера. А уже для каждой игровой комнаты к примеру можно сделать отдельную конференцию. Зашел в комнату, одновременно зашел в соответствующую конференцию. Ну и соответственно вышел из конференции комнаты откуда ушел. Таким образом простые сообщения можно посылать в эту комнату и будут их слышать только те кто там находится. Простые действия так же могут быть обработаны как /me. И здесь определение кому отсылать сообщения будет идти автоматом как бы. Главное клиенту следить куда отсылать сообщение, в какую комнату, и так далее. И это лучше чем нагружать сервер такими вещами, как определение кто находится в комнате, и рассылать каждому игроку. Пускай этим занимается Jabber сервер. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт апр 23, 2010 10:40 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Я верно понял, что решения о том, что увидят другие игроки будет принимать клиент одного из игроков :) ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт апр 23, 2010 4:56 pm 
Не в сети

Зарегистрирован: Вт апр 20, 2010 10:56 am
Сообщений: 16
Отчасти и да и нет :) подробнее думаю стоит описать :) предложенное решение как уже понятно исключает вообще использование старых и так скажем классических клиентов и протоколов мада :) следовательно и клиенты нужны будут :) по сути решать будет клиент :) так будет удобнее :) но здесь контакт с джаббером не будет очевидным именно для игрока. То есть не предполагается сделать в клиенте к игре еще один квип или пси. Клиент тихо сам должен работать с сервером, основываясь на действиях игрока. То есть игрок в процессе игры перешел с одной комнаты в другую, то и клиент тихо, без участия игрока выходит из конференции для одной комнаты, и заходит в конференцию другой комнаты куда зашел игрок :) то есть тут как бы и клиент решает, и он одновременно не решает что увидят другие игроки :) я предлагаю именно подстроить технологию джаббера для построения именно части коммуникации в игре. Как то вот так это :) а игрок на деле не будет как бы знать, что это все на джаббере, что личные сообщения это ростер, при переходе по комнатам он ходит по конференциям, что к примеру торговый чат, чаты клана и глобальный и системный это не чаты, а тоже конференции на сервере джаббера. То есть это внутри клиента все :) а игроку предлагаются окна чатов или переговоров к примеру :) плюс можно и различные статусы, и настроения протокола использовать и в игре :) найти им применение :) как бы поле деятельности готово, широко и мощно :) главное им воспользоваться, и написать честный клиент и продумать как это будет работать с сервером :) тут может возникнуть лишь одна проблема. :) если исходные клиента открыты будут, лишь бы этим не воспользовались кривые руки, которым охота что нить там изменить :) но это тоже можно в принципе решить :) ибо как мне кажется и сервер игры будет доводиться до нужд, и вместе с ним и клиент каждой отдельной муд на этом сервере игровом тоже для соответствия нуждам :) вот такие вот мысли :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт апр 23, 2010 4:59 pm 
Не в сети

Зарегистрирован: Вт апр 20, 2010 10:56 am
Сообщений: 16
И еще повторюсь :) я предлагаю джаббер использовать ТОЛЬКО ДЛЯ ОБЩЕНИЯ В ИГРЕ и упрощения решения задачи, так как в сервер игры не нужно будет еще добавлять сервер мгновенных сообщений. Этот подход я предлагаю использовать лишь для общения игроков, но не для остальной игровой механики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт апр 23, 2010 6:23 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
D-RectX писал(а):
И еще повторюсь :) я предлагаю джаббер использовать ТОЛЬКО ДЛЯ ОБЩЕНИЯ В ИГРЕ и упрощения решения задачи, так как в сервер игры не нужно будет еще добавлять сервер мгновенных сообщений. Этот подход я предлагаю использовать лишь для общения игроков, но не для остальной игровой механики.


Я не вижу существенного преимущества.
Интеграция всего этого весьма вероятно займет больше времени, чем реализация точно того, что требуется.
Безопасность решения тоже мягко говоря "под угрозой".
А главное непонятно "ради чего сыр-бор" ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рассылка сообщений
СообщениеДобавлено: Пт апр 23, 2010 9:04 pm 
Не в сети

Зарегистрирован: Вт апр 20, 2010 10:56 am
Сообщений: 16
Ну интеграция не так сложна. Библиотеки благо есть и их много. xmpp.org/libraries.html :) во вторых часть функций если не все по отправке сообщений и коммуникации между игроками будет перенесена в отдельный сервер. Это гораздо упростит код логического сервера игры. То есть там будет реализована именно логика игры, а не логика в перемешку с вопросами об отправке приеме сообщений, определении тех кто в комнате находится куда зашел игрок, кому отправлять надо, кому не надо. Короче решение таких задач мало того что можно решить гораздо проще и заодно перенести часть нагрузки на клиент, ибо нагрузка не очень высокая, но также это может позволить не засорять код движка игры различными задачами коммуникации и сообщения между игроками. То есть вот игровой сервер. Вот джаббер сервер. Вот они вместе и работают на благость игрокам. А клиент взаимодействует с ними обоими по мере надобности. Некое разделяй и властвуй :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти: