Геймплэй

Основной форум для общения на игровые темы
Аватара пользователя
phdoc
Администратор
Сообщения: 27206
Зарегистрирован: 29 май 2010, 16:43

Re: Геймплэй

Сообщение phdoc » 11 авг 2010, 13:39

Тимок писал(а):Вот когда перекос возникнет, тогда и надо его устранять.
Очень затратный путь. Лучше таки пытаться хоть что-то предвидеть. Профилактика выгодней хирургии.
Тимок писал(а):P.S.: Может быть, какой-нибудь износ для юнитов из сферы придумать? Чтобы хотя бы не одноразовые!
Да почему же "одноразовые"-то? Очень даже многоразовые, но - не вечные.
Делитесь и перемножайтесь

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 11 авг 2010, 13:46

Мне стало интересно по поводу ощутимости времени. С учетом того, что "ход" героя - это только перемещение его - не бой, не нерекомпоновка инвентаря, ничего - только перемещение. На что будет потрачено время? Вижу только один ответ: определение списка героев, перемещение которых видно на клиенте для каждого героя. То есть, если на карте 1000 героев, тогда для каждого надо выслать список героев (с краткими характеристиками и маршрутом движения), которых покажет клиент.
Сколько это займет процессорного времени? Намного ли больше, чем сейчас, когда информация о единичном перемещении героев на карте высылается каждые 5 секунд?
Готов написать код на С++, оптимизировав на время. Сдается мне, что это будет пара десятков микросекунд.

Аватара пользователя
phdoc
Администратор
Сообщения: 27206
Зарегистрирован: 29 май 2010, 16:43

Re: Геймплэй

Сообщение phdoc » 11 авг 2010, 14:13

Тимок писал(а):Мне стало интересно по поводу ощутимости времени. С учетом того, что "ход" героя - это только перемещение его - не бой, не нерекомпоновка инвентаря, ничего - только перемещение. На что будет потрачено время? Вижу только один ответ: определение списка героев, перемещение которых видно на клиенте для каждого героя. То есть, если на карте 1000 героев, тогда для каждого надо выслать список героев (с краткими характеристиками и маршрутом движения), которых покажет клиент.
Сколько это займет процессорного времени? Намного ли больше, чем сейчас, когда информация о единичном перемещении героев на карте высылается каждые 5 секунд?
Готов написать код на С++, оптимизировав на время. Сдается мне, что это будет пара десятков микросекунд.
А и попробуйте. Только не просто "каждому герою - список соседей с краткими характеристиками, выбранными из массива в памяти", а полный цикл обработки команды "хочу переместить моего героя вооон в ту клетку". Начиная с получения http-запроса, проверки авторизации, коннекта в базу (с транзакциями, блокировками и всем, что положено), разбора выбранных данных, анализа возможности самого факта перемещения по указанной клетке, просчета возможных столкновений с монстрами и другими героями, которые могут оказаться в этом же месте, модификацией данных и сохранением изменений обратно в базу, подготовкой ответа клиенту и его отправкой... Список я могу детализировать еще парой десятков пунктов :о)
Когда всё получится - приходите, и мы с Вами сделаем отличную серверную часть, может быть и не только для HeroesLAND'а, будь то на С++ или Питоне, что еще лучше. Я серьезно.

PS. Кстати, а почему речь пошла про "список соседних героев"? Начинали же с "полной одновременной обработки действий и их последствий от всех игроков на карте, собранных за период в N-секунд", нет?
Делитесь и перемножайтесь

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 11 авг 2010, 14:27

Начиная с получения http-запроса, проверки авторизации, коннекта в базу (с транзакциями, блокировками и всем, что положено),
модификацией данных и сохранением изменений обратно в базу,
На данный момент эти действия совершаются с частотой 5 секунд, как я понимаю. Это вдвое чаще.
разбора выбранных данных, анализа возможности самого факта перемещения по указанной клетке, просчета возможных столкновений с монстрами и другими героями, которые могут оказаться в этом же месте
Вот это готов написать. Не такой уж и тяжелый алгоритм будет. Особенно учитывая, что маршрут перемещения будет рассчитываться клиентом и высылаться в виде цепочки движений (8 направлений).
подготовкой ответа клиенту и его отправкой...
Вот тут один не справлюсь, с клиентом возни много будет, согласен.
Когда всё получится - приходите, и мы с Вами сделаем отличную серверную часть, может быть и не только для HeroesLAND'а, будь то на С++ или Питоне, что еще лучше. Я серьезно.
А между прочим, мне это интересно. Если ещё и компенсация будет - вообще здорово. Но начинать надо на голом энтузиазме, это я тоже понимаю.
С удовольствием посмотрю на сорцы, покопаюсь. Вдруг зацепит, как в старые добрые прогерские времена - засяду на несколько ночей, сваяю что-нибудь полезное.
PS. Кстати, а почему речь пошла про "список соседних героев"? Начинали же с "полной одновременной обработки действий и их последствий от всех игроков на карте, собранных за период в N-секунд", нет?
Сервер обрабатывает все, естественно. А на клиент не надо высылать информацию по всем героям. Только по тем, которых "видно" с текущей позиции. Разве так не проще?

Аватара пользователя
phdoc
Администратор
Сообщения: 27206
Зарегистрирован: 29 май 2010, 16:43

Re: Геймплэй

Сообщение phdoc » 11 авг 2010, 15:33

Нельзя "рассчитывать маршрут на клиенте". Вернее, его всё равно нужно перепроверять на сервере.
Сейчас действия героев независимы друг от друга. Вы же предлагаете раз в 10 секунд обрабатывать всех героев. И они в этот момент просто ждут.
Зачем сишному программисту пэхэпэшные исходники? Тут надо с нуля, от идеи :о)

Перечитайте свою "схему пошаговой стратегии". Там предложено комплексно обрабатывать поступившие за в какое-то время команды от всех героев на карте. Сейчас же любая команда от героя касается только его окружения.

PS. Советую начать с чего-нибудь простого, но реализующего мир, в котором одновременно происходят действия в результате команд нескольких игроков. Чтобы окунуться в проблему.
Делитесь и перемножайтесь

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 11 авг 2010, 16:19

Мне без разницы, на чем прогать, если честно. Просто на сях оптимизировать сподручнее.
Попробую на досуге...

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 11 авг 2010, 16:53

Нельзя "рассчитывать маршрут на клиенте". Вернее, его всё равно нужно перепроверять на сервере.
Проверка очень проста. Во что-то уперся - обрывается. В мобов он не упрется по моему алгоритму, они появляются только после движения.
Сейчас действия героев независимы друг от друга. Вы же предлагаете раз в 10 секунд обрабатывать всех героев. И они в этот момент просто ждут.
Настолько ли независимы? Маршрут видоизменяется каждые пять секунд, если кто-то на нем. Предполагаю, что это не клиент пересчитывает его. а если и клиент, так он каждые 5 секунд новый маршрут посылает на сервер.
А насчет ждут... Мы и так постоянно ждем. )))
Зачем сишному программисту пэхэпэшные исходники?
Мне без разницы, на чем прогать, если честно. Просто на сях оптимизировать сподручнее.
Перечитайте свою "схему пошаговой стратегии". Там предложено комплексно обрабатывать поступившие за в какое-то время команды от всех героев на карте. Сейчас же любая команда от героя касается только его окружения.
Да, в этом преимущество ходов по одной клетке, не спорю.
PS. Советую начать с чего-нибудь простого, но реализующего мир, в котором одновременно происходят действия в результате команд нескольких игроков. Чтобы окунуться в проблему
Попробую на досуге...

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 13 авг 2010, 11:38

Всё больше "натирают ноги" такие неудобства:
1) случайные дуэли на карте
2) возможность убежать от намеренной дуэли

На самом деле, сейчас если на тебя нападают, от него можно сколько угодно долго убегать на участке 2х2 клетки. Получается совсем не пошаговая стратегия, а соревнование грибов-кликеров.
"Нам не нужна такая румба!!!" (с)
Может сделать отдельную небольшую тестовую карту с "длинными ходами"? Посмотреть, как народ отзовется...

А по поводу моей модели, когда герои просто ждут по 10 секунд... Да хоть по минуте - если общая скорость перемещения по карте при этом не меняется, тогда проблем нет. Можно даже сделать прозрачным "стек походивших героев" - в оригинале мы знали, кто за кем ходит. Сразу спасет игроков с медленной связью, и карта станет более играбельной. Сейчас она больше напоминает глобальную карту в фоллауте. )))

Аватара пользователя
phdoc
Администратор
Сообщения: 27206
Зарегистрирован: 29 май 2010, 16:43

Re: Геймплэй

Сообщение phdoc » 13 авг 2010, 12:10

А Вы не замечаете противоречий в этих двух своих пунктах?
На самом деле, для того, чтобы напасть на героя, достаточно оказаться на мгновение раньше него в той клетке, куда он движется. А как уж это сделать, думайте сами. Способов - масса.

Карту мы пошаговой делать не будем, потому что "пошаговая" - это когда "все жду, пока я схожу", что абсолютно не применимой в нашем случае. Почему я, находясь за 400 клеток от кого-то, должен ждать, пока он соизволит сходить?

Еще раз повторю: попробуйте построить связный алгоритм разовой обработки команд от нескольких сотен игроков в мире размером хотя бы 200х200 клеток, и Вы поймете, что это - утопия. Не драконов :о)
Делитесь и перемножайтесь

Тимок
Сообщения: 282
Зарегистрирован: 31 май 2010, 09:50
Имя героя: Тимок

Re: Геймплэй

Сообщение Тимок » 13 авг 2010, 12:27

А Вы не замечаете противоречий в этих двух своих пунктах?
На самом деле, для того, чтобы напасть на героя, достаточно оказаться на мгновение раньше него в той клетке, куда он движется. А как уж это сделать, думайте сами. Способов - масса.
А чтобы убежать от атакующего, достаточно начать двигать в тот момент, когда он начнет двигаться на мою клетку. Способ один - но стопроцентный. :о)
Карту мы пошаговой делать не будем, потому что "пошаговая" - это когда "все жду, пока я схожу", что абсолютно не применимой в нашем случае. Почему я, находясь за 400 клеток от кого-то, должен ждать, пока он соизволит сходить?
Вот тут кто-то кого-то недопонял. Никто никого не ждет. В течении N секунд все отсылают на сервер ходы, потом одновременно получают результат. Если кто-то не сходил в это время - он остается на месте. Общая скорость перемещения по карте не уменьшается. От того, что кто-то долго думает - ничего не меняется.
Еще раз повторю: попробуйте построить связный алгоритм разовой обработки команд от нескольких сотен игроков в мире размером хотя бы 200х200 клеток, и Вы поймете, что это - утопия. Не драконов :о)
Эх, жаль, отпуск прошел, свободных дней - нема. Если выпадет денек - поробую обязательно!

Ответить