SPENCER

Наконец закончил первый проход на систему отдачи на этой неделе, и я очень доволен результатами. Я экспериментировал с несколькими различными методами, чтобы попасть туда, куда я хотел, черпают вдохновение из CS, Battlefield и Повстанцев.

Первая проблема с системой должна была обеспечить, несмотря на хаотичность моделей отдачи, что и сервер, и клиент может самостоятельно воспроизвести тот же хаотичность для предсказания на стороне клиента пуль. Решение, которое я придумал было семян каждый кадр, где случайные данные Отдача была необходима со временем сущности игрока (то, что клиент и сервер всегда согласуют). Как правило, псевдо случайные функции не дают особенно равномерное распределение при повторном высевают каждый кадр с линейно меняется семена (время всегда клещами вверх по одному), так вместо этого я создал длинный буфер случайной байт данных с использованием Random.Next (), который Я могу использовать в качестве доступной для поиска случайного поиска позже. Это также обеспечивает выполнение случайной функции так же хорошо, как он может получить.

На первом проходе, я использовал таблицу поиска для каждой последовательной пули, выпущенной и увеличил откат к этой конкретной точке после каждой пули. Причина, используя поиск вместо полной случайности, чтобы дать игрокам возможность получить мышечную память для моделей отдачи, создавая более высокий навык потолок перестрелка. Хотя этот метод имел желаемый эффект мышечной памяти, он не чувствовал себя достаточно, как мощный отдаче. Анимация сторона / ощущение пистолета было немного не хватает, оно также затрудняло равномерно интерполировать из положения возвратной, не отклоняясь от заранее определенной траектории. Другими словами, запасной вариант выглядел обратной отдаче.

Мой второй подход должен был использовать намного больше хаотичность. Я заменил способ возбуждения отдачи от того, чтобы быть предварительно определенный путь, чтобы с помощью пружины и применяя случайные силы к нему. Это было немного больше отдачи, как чувствую, но забирали большинство эффектов мышечной памяти, и было очень трудно настроиться на протяжении длительного периода спрея.

То, что я обнаружил, если отдача была достаточно сильна, чтобы сделать вас неточная сама по себе в то же время стрельбы, где ваша перекрестие, он чувствовал себя слишком интенсивным. Я решил ввести слой неточностью над рисунком отдачи, что со временем увеличивается. Таким образом, я могу держать оба эффекта довольно тонкие, но в сочетании они дают достойный эффект на вашу способность поразить цель, не чувствуя себя с ума.

Я также заменил случайный весенний удар с индексом пули поиска, основанный на выстрелами в брызгами, которые привозили мышечную память красиво. Однако по-прежнему существует недостаток чувства отдачи на пистолете. Я сузили его к тому, что, в то время как ваша игра, как правило, анимация на ~ 60 кадров в секунду +, оборудование имитируется на 20fps. Рендер нить интерполирует между оборудует моделирования клещей, чтобы обеспечить непрерывность движения, однако это сглаживает первоначальный скачок от отдачи удара забирая много его удар. То, что я сделал, чтобы решить эту проблему, чтобы добавить второй гораздо более жесткие пружины, которая работает на визуализации потока, и применяет последовательный удар с, вероятно, виден только для кадра или два, но слоев над верхней части 20Гц пружины, чтобы придать ему немного более сердца.

В результате на данный момент выглядит следующим образом:
Примечание muzzleflash и Gunsmoke в настоящее время отключены, они будут добавлены обратно позж

Вы заметите, что я вожу неточность (не отшатнуться) кривая нескольких различных факторов:

  • Как долго вы опрыскивание для
  • Если вы дальновидный
  • Как быстро вы движетесь
  • Если вы приседая
  • Если вы заземлены

В то время как эта система является детерминированной, и может быть легко контролировать, если вы знаете Что происходит, старый перекрестие был массивный отсутствие обратной связи. Так что я построил новый, который показывает вам точно, что происходит:

Я нахожусь в процессе получения ветви ItemV2 обратно в играбельный состояние сейчас, как только это будет завершена, мы будем делать некоторые Deathmatch тестирование с AR, итерация немного, то мы играем, чтобы выпустить предварительный просмотр филиал Gunplay, чтобы получить ваши ребята обратной связи. Существует еще куча делать на перестрелка, как звук, обратная связь воздействия, как лучше трассеров, воздействие крови и звуков. Мы будем итеративный на них в течение ближайших недель.

COW_TRIX

Been разбивая новую дорожную инструмент на этой неделе, и я сделал некоторый существенный прогресс. Предупреждение! Этот раздел, вероятно, не будет супер интересно для людей, которые не делают дорожную приспособление сами, или не имеют интерес к программированию и математике. Для этих двух категорий людей, хотя, я надеюсь, что это может быть ценным для ваших собственных решений этой проблемы. Итак, как же мы строим процедурный дорожной сети в гибкой, расширяемой, надежный способ?

Я вареные всю концепцию вниз от дорог и пересечений и все, что материал в гораздо более отведенной модели управляемой сети узлов. Все узел является положение в пространстве, а также подключения к другим узлам. Узел сам по себе не является особенно важным в изоляции, так как это соединения, которые сделают наши дороги в конце концов. Первое, что я сделал была создана эта базовая структура, сети владеющие узлы, узлы, владеющие соединения с другими узлами, а затем соединений компонентов, которые владеющие бы делать вещи, чтобы создать дорогу в мире. Так, например, то, что отвечает за коробление сетки вдоль соединения является компонентом, как это имеет место, что отвечает за изменение высоты местности под дорогой, чтобы соответствовать этому. Поскольку мы хотим, чтобы наши дороги к кривой плавно между узлами, мы должны интерполировать между ними. Обычное решение, и путь, который я пошел, был квадратичные сплайны Безье, которые имеют некоторые удобные свойства. Эта страница является обязательным прочитать ресурс для алгоритмов, стоящих за этой части системы.

Итак, следующий шаг был перекос сетки вдоль этого сплайна. Это первое соединение-компонент я написал. Самый простой способ сделать это, чтобы представить одну ось сетки как специальный сплайн-ось. То, что вы тогда сделать, это перебирать вершины, перевести положение сетки вершины из этой прямой оси к искривленных оси сплайн (с использованием границы сетки как ваш нормализации – в конце концов, значение сплайна т должно быть между 0 и 1!) , и там вы идете! Некоторые дорожные инструменты используют другую методологию, где они процедурно генерировать сетку, как они идут вдоль сплайна, но если честно, это не кажется, стоит времени и усилий, для меня, и есть только миллион больше мест, где все может пойти не так. Это инструмент, редактор в конце концов – если это можно сделать лучше в другой программе, как инструмент 3D моделирования, это должно быть сделано там! С помощью нашей методики означает, что мы можем искажать сколь угодно сложные сетки, как дороги, не увеличивая сложность кода. Предостережений для этой методики является то, что нам необходимо реализовать черепицу в наших моделей входных данных (хотя на самом деле мы должны были бы сделать это с помощью другой методологии, а), и что мы должны сделать окончательный УФ-пропуск в “undistort” Увс. Этот ультрафиолетовый передача необходима в связи с одним из свойств кривых Безье – что “естественное время”, значение т мы кормим алгоритм Безье не коррелирует с расстоянием мы путешествовали вдоль сплайна. Таким образом, мы не можем предположить, что базовая сетка с равномерно расположенными Verts приведет к деформированной сетки с равномерно расположенными Verts, даже если мы искажая его по совершенно прямой рейкой. Таким образом, мы должны повторно UV.

Вторая проблема в том, чтобы сделать основные ландшафты приходят навстречу дорогу таким образом, что не приводит к значительному вырезку. Я впервые попробовал наивный метод просто маршируют вдоль сплайна, и чертить линию вдоль сплайна на карты высот, как я пошел. К сожалению, это не работает особенно хорошо – даже на совершенно плоских дорогах, как показано на рисунке справа. Когда мы переходим от одного сплайна к другому, мы получаем значительный разрыв. Это также медленно, чтобы вычислить, и при изменении высоты узлов к чему-то экстремального, вы получаете значительную степпинг в зависимости от того, вы походу через шлицы, поэтому я изменил тактику.

Вторая методология я должен был взять за пределы сплайна, и перебирать все точки высот в этой границы. Для каждой точки высот, вопрос – какова ближайшая точка на сплайн? Если мы сможем найти ближайшую точку на шлицы и установите высоту в этой точке на высот до высоты в этой точке, то мы получим хороший, гладкий и хорошо пригнанной кривую на карты высот, которая будет соответствовать именно под Дорога. К сожалению, из-за всего этого, без Неинтегрированные решения соотнесения естественное время с реальным расстоянием через шлицы, нет точного решения этого. Мы просто должны найти достойное приближенное решение. Я нашел некоторые ресурсы по этой проблеме, но я такой программист просто прыгать в проблему и попытаться решить ее с основ. Простое решение, что я полагал, что будет работать в практически все решения, где мы не делали сумасшедшие искаженные шлицы, был просто бинарный поиск. Бинарный поиск структурирована следующим образом: начать с произвольной точки в пространстве, р. занять сегмент (начиная с [0, 1]) и разделить его пополам, так что у вас есть три точки вдоль сплайна, p0, p1, и p2. Вычислить расстояние между р и всех этих точек. Теперь сравните комбинированные расстояния р0 + p1 и Р1 + Р2. Основываясь на этих результатах, мы изменим диапазон мы смотрим на шлицы и повторите процедуру, пока какой-нибудь порог точности т пока не будет достигнута. Преимущество состоит в том, что количество итераций алгоритмов требует постоянной, в зависимости от порога требуемой точности. Это работает очень хорошо, и вы можете увидеть GIF алгоритма здесь:

Итак, теперь мы имеем ближайшую точку, это тривиально, чтобы выяснить, какой высоты определенной точки на местности должно быть. Из этого POIN, все, что мне нужно сделать, это смешать высоту мы рассчитали с высотой дороги, на основе какой-то спад. Тем не менее, это было еще немного медленно, так что я положил в способности получить объект ограничительной рамки сплайна, так что мы можем отбраковать большое количество расчетов высоты для дорог, которые не являются ортогональными к местности сетки высот. Это ускорило скорость вычислений много. Бросок в смеси с оригинальной местности, и это конечный результат:

Я очень доволен этим результатом! Следующие шаги осуществляют отображение УФ и плиточные сетки вдоль сплайна, чтобы обеспечить лучшие концентрации поли на жестких поворотах. Более подробно на следующей неделе!

GAVKU

На этой неделе я закончил из версии куртки и сделали несколько разновидностей текстур для него. Ее было сделано таким образом, что вы сможете смотреть передачу вы оборудовали под ним, т.е. Tshirt или боевой жилет, что ваш персонаж может носить.

hurtworld куртки

Это также участвует подстройка и шкуры, чтобы убедиться, что не было вопиющее количество отсечения с шестерней под ним. Для этого я приношу новую сетку в скиннинга файл майа, который имеет игрок скелет и основание зацеплении загружены, а также некоторые испытания anims его движения. Я затем скопировать вес кожи игрока по горизонтали и начать тестирование деформации, не щипая части данных кожи до ее на приемлемом точке.

MILS

Я сделал это, чтобы текстуры города на этой неделе. Так что я просто сделал небольшое плоское тестирование цвета по всему сетках. Это выглядит очень красиво, все нормальные карты вышли хорошо. Я дал Тома сетку и текстуры, чтобы сделать некоторые гифы. На следующей неделе я буду добавлять некоторые дополнительные биты к нормальному виду карты, а затем перейти на детали базовой текстуры. После этого я буду проектировать графики для комплектов тела, а затем я буду делать.

Мотоциклы Hurtworld

ТОМ

Я начал работать на этой неделе на проверки для системы аварийного, добавив проверки, чтобы убедиться, что вы не можете использовать сбой в глюк через базы и рельефа местности.
Система аварии работает, поставив игрока внутри невидимого транспортного средства они не имеют никакого контроля над тем и позволить им падать, пока они не останавливаются, то они выйдут. Есть две возможности для сбоя вращения, порождая аварии транспортного средства и оставить его после аварии.
Хотя это достаточно легко сделать различные комбинации raycasts и перекрывают проверки, чтобы проверить новые позиции ясны, это сложно решить, что должно быть сделано, если эти проверки не удастся. Например мы проводим аналогичные проверки в настоящее время при выходе из транспортных средств, чтобы предотвратить игроков, выходящих через стену в чьего-то основания, если все выходы автомобиля неудачу эту проверку мы предотвращаем игрока покинуть машину. К сожалению, это не является хорошим решением для аварии транспортного средства, как вы окажетесь застрял навсегда, если вы придете к остановке в неправильном месте. Другим вариантом может быть, чтобы убить игрока, но мы чувствовали, что это было бы слишком неприятно для игроков.
То, что мы собираемся, чтобы попытаться это положить плеер в режим обхода после после аварии проверки строя, который позволит игроку контролировать их аварии транспортного средства с физическими силами, пока они не выпячивать себя в месте, где это ясно для них, чтобы встать ,
Для порождая аварии транспортного средства мы выполняем капсулу литой от места мотоцикла до нужной точки икру, если это не удается, мы икру аварийную машину непосредственно на верхней части мотоцикла вместо этого.

Также на этой неделе я работал на балансе повреждения автомобиля. Только имея общее здоровье автомобиля чувствовал себя немного упрощенным и привело к транспортным средствам, либо чувство, как пули губок или быть нереалистично слабым, так что я сделал вложения автомобилей большая часть картины.
Технически в данный момент живут все вложения имеют свое собственное здоровье и может быть индивидуально уничтожен таким же образом, вы можете удалить диски, стреляя их это просто, что все элементы, но колеса имеют огромное сокращение повреждения на них, что делает его непрактичным и расточительно, чтобы удалить их в этом случае.
Я перебалансировано все эти модификаторы эффективно уменьшая их здоровье до разумных уровней и изменили свое поведение так Снаряды больше не будут проникать через транспортные средства, как они делают для игроков, и сделал это так, урон, получаемый с помощью крепления транспортного средства не будет передавать через повреждения на транспортном средстве ,
Это позволяет нам иметь разумные уровни здоровья автомобиля без них чувства слишком слаб, и мы можем создать более интересные вложения ездить решения как «я могу использовать тяжелые, но сильные бронепанелей или более легкие, более быстрые, но слабые панели?».
Это также позволяет нам делать классные вещи, как если снимать панели внешнего хранения транспортных средств, они будут ронять лут проводятся в дополнительных ячейках памяти.

Я также подкорректировали взрывы поэтому транспортные средства принять дополнительные повреждения, ведущие к цепи взрывов и изготовлением взрывчатых веществ относительно жесткий счетчик для транспортных средств. Я также сделал взрывы применить краткое воздействие тепла на близлежащие субъектов, если вы достаточно близко, может быть достаточно горячей, чтобы зажечь вас (или в данном случае, трупы автомобилей остались позади).

Я также работал получать Mils новейшего искусства в игру и настройке слотов краски и маски, ее действительно начинают приходить вместе!

Что же касается того, что осталось сделать, прежде чем вы можете получить ваши руки на нем:

  • Заменить аварии заполнитель и встать анимации и создания анимации, ползающих
  • Получить окончательные текстуры для Кенги, включая шаблоны краски маски
  • Оседают на конечных наборов Кенга
  • Ремонтное нерестится транспортных средств и грабить таблицы включить Кенге
  • Тестирование (особенно баланса и проверка аварии)