FourGen
> Я такого не говорил. Можно копию этого?
Пожалуйста:
FourGen
> Вот пока вы мышку не двигаете, точка у вас будет всего одна и нафиг их новые
> создавать не нужно, а когда добежит, создастся еще одна.
FourGen
> Если по пути получили препятствие неплановое, то пересчитали... а не как каждый
> кадр.
Ну что дурачком-то прикидываешься.
Ты зажал ЛКМ, персонаж пошёл, камера привязана к персонажу, поэтому каждый кадр мышь указывает на новое место, а в какой-то момент это место оказывается в другой комнате, куда идти надо вообще другим путём.
Mephistopheles
> это вообще не нагрузка
Я про нагрузку вообще ничего не писал. Просто тут товарищ утверждает, что целевую точку перемещения следует обновлять только когда персонаж добегает до предыдущей.
>pahaa
а в какой-то момент это место оказывается в другой комнате
- Есть удержание клавиши
- Есть клик
Разница же очевидна?
При удержании он пойдет до упора.
При клике он пойдет в другую комнату.
Не понимаю в чем вопрос?
Зачем считать 100 раз одно и то же?
Просто тут товарищ утверждает, что целевую точку перемещения следует обновлять только когда персонаж добегает до предыдущей
Не вырывайте плз фразы из общего текста... Я же написал, что не нужно обновлять каждый кадр
поэтому каждый кадр мышь указывает на новое место
У меня каждый кадр камера двигается, а не пересчитывается то куда мышка стала указывать, а персонаж и вообще все остальное двигается уже с фиксированной скоростью. А точка считается 1 раз, пока нет причины ее пересчитать.
Настало время раскрыть основные технические характеристики первой версии движка. Игровой мир будет бесшовным, размер карты 8 км х 8 км, в мире будет всего 262144 персонажей, из которых половина может управляться игроками, а вторая половина - ИИ. Для оживления такого мира понадобится высокопроизводительный сервер и сетевой канал на 1 гигабит/с. На старте будет использоваться примерно в 10 раз менее производительный сервер и сетевой канал на 100 мегабит/с, соответственно фактически максимальное для железа количество персонажей будет порядка 26214 (13107 игроков и столько же ИИ). Изначально код будет писаться субоптимальный, производительность его будет примерно в 10 раз ниже чем ожидается от оптимального, так что можно ожидать 2621 персонажа (1310 игроков и столько же ИИ). Так как это примерно 1% популяции мира, заселять мобы впервой версии будут только часть территории - квадрат 800 м х 800 м, чтобы можно было предcтавить себе насколько плотно будет заселен игровой мир и на ранних этапах убедиться что выбранные технические параметры удачны.
Вий
> размер карты 8 км х 8 км, в мире будет всего 262144 персонажей
Вий
> 1310 игроков и столько же ИИ
Ващето в ммо обычно по 10-20 мобов на 1 игрока.
samrrr
Это сильно зависит от игры, в PvP наверное Мобов мало
pahaa
> Просто тут товарищ утверждает, что целевую точку перемещения следует обновлять
> только когда персонаж добегает до предыдущей.
а ну это минимум странно, ее нужно обновлять если она меняется)
Mephistopheles
На самом деле менять точку назначения надо так чтобы результат был получен большинством клиентов до того как траектория со старой целевой точкой начнёт отличаться от траектории с новой.
Вий
> На самом деле менять точку назначения надо так чтобы результат был получен
> большинством клиентов до того как траектория со старой целевой точкой начнёт
> отличаться от траектории с новой.
если там не будет ворлд пвп то на точность позиции игроков можно забить, пару раз в сек отправляешь корректировку кординат и норм будет. В пве главное точность позиций мобов и позиции текущего игрока. А остальных в целом пофигу +/- метр будет достаточно)
>Mephistopheles
а ну это минимум странно, ее нужно обновлять если она меняется)
Так я про это и говорю, а меня пытаются убедить, что камера через 1 кадр сдвинулась, мышка стала указывать в другое место и типа от этого точка назначения поменялась и надо маршрут пересчитать.
Я же говорю не надо, точка не поменялась и причин ее менять может не быть. Будут, пересчтиать маршрут к новой точке, не будет идти до конца по построенном маршруту и потом еще раз делать новый маршрут. Да и то таких проверок не нужно 250 раз в секунду.
FourGen
> мышка стала указывать в другое место
Вот для этого нужно ещё несколько спрайтов мышки, указывающей в разные стороны…
Mephistopheles
> ворлд пвп
А что такое ворлд пвп и чем отличается от просто пвп?
Вий
> А что такое ворлд пвп и чем отличается от просто пвп?
пвп в открытом мире это частный случай обычного пвп.
там арены, осады, дуэли, какие то отдельные локации тоже варианты пвп
>Вий
Вот для этого нужно ещё несколько спрайтов мышки, указывающей в разные стороны…
Спрайты курсора мыши показывающие направление относительно центра это не интересно, да и поворачивать один не интересно.
Можно пойти дальше, если маршрут пересчитывается каждый кадр:
Для каждой точки (всей карты) надо сделать по 8 спрайтов курсора мышки и менять его когда камера подвинулась. Проверяем в какую точку игрового поля стал указывать курсор мыши, проверяем, где персонаж относительно этой точки находится и ставим соотвествующий спрайт курсора мыши, только они обязательно должны быть все разные иначе будет непонятно куда указывает курсор мыши и поменялась ли у него позиция и в новую ли точку он указывает или нет.
FourGen
Надо сделать. Это будет наглядно
FourGen
>Так я про это и говорю, а меня пытаются убедить, что камера через 1 кадр сдвинулась, мышка стала указывать в другое место и типа от этого точка назначения поменялась и надо маршрут пересчитать.
Беда, беда...
Я же вас просил, не один раз:
> как вы планируете отличать кадры когда нужно регистрировать ввод игрока от тех где можно забить на желания игрока?
> Расскажите механизм принятия решения какие 4 кадра из 15000 выбирать для регистрации ввода.
А вы продолжаете игнорировать эти вопросы...
Т.к. вы не пытаетесь понять вопрос и решаемую проблему, а продолжаете сваливать все в кучу, придумывать не относящиеся к вопросу аргументы и плохие решения для казалось бы простых задач, я попробую максимально прояснить ситуацию по данному вопросу.
Первое. С чего все началось и в чем проблема?
Вий
>Часто кликающих туда-сюда игроков и ИИ можно затроттлить, чтобы персонажи не меняли текущее действие чаще чем 4 раза в секунду.
>троттлинг действует на управляющие команды а не на данные о состоянии. То есть управление становится ватным если кликать чаще чем 1200 раз в минуту
PS. Вий надеюсь я не сильно вырвал из контекста, я лишь хочу показать самую суть вопроса.
Т.к. на мой взгляд делать управление ватным - это очень плохая идея. Я хочу что бы этот проект получился хорошим, потому привел аргументы, что событий ввода может быть существенно больше и не один из них не лишний:
GGMaster
>В диабло никто кликом не ходит - зажимается клавиша мыши и игрок бесконечно к ней бежит, т.е. применений новой позиции будет столько сколько кадров. Игра у вас простая, т.е. кадров 200-300 выдавать будет, если не сделать лок. Ты перешел с секунд в минуты, я давай тоже пересчитаю 250кадров * 60секунд = 15 000 *кликов* в минуту. Отнимать у игрока управление это еще хуже, чем создавать рассинхрон
Второе. Как действительно нужно решать эту проблему.
FourGen, сейчас очень внимательно отнесись к следующей информации я ее специально скопировал из цитаты выше, что бы вы ее точно не пропустил:
> применений новой позиции будет столько сколько кадров
Почему я на этом акцентировал ваше внимание? - Потому, что вы считаете, что применение новой позиции и расчет пути - это одно и тоже, но нет - это две отдельные задачи.
Применение новой конечной точки делается каждый кадр - это дешево и тут вообще нет ни чего страшного. т.е. не нужно придумывать очень странные технические решения.
А вот расчет нового пути - это дело более затратное, потому его выводят в фон где он может рассчитываться на протяжении нескольких кадров. НО если по завершению расчета конечная точка изменилась, то расчет начнется заново для актуальной на тот момент позиции.
Результат:
- у игрока никто не отнимает управление
- персонаж всегда будет доходить до точки которую игрок указал последней, как бы он это не делал - клик или зажатая кнопка
- ресурсоэффективно
По этому, FourGen, ваше нелепое ёрничание выглядит глупо. И не забывайте, что вы являетесь участником форума, а потому в том числе и по вам судят об общем уровне компетенции форумчан.