Jump to content
×
×
  • Create New...
  • SandBox | Февраль 2021


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

    Физика Упругости

    Возясь со свойствами поверхности, я изо всех сил старался сделать объекты упругими. Если бы я хотел сделать мяч супер упругим, я мог бы увеличить его эластичность, но если бы он ударился о что-то другое, что было упругим, он выстрелил бы со скоростью миллион миль в час.

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

    Как вы можете наблюдать, при 100% эластичности колесо никогда не перестанет отскакивать. Не очень реалистично, но оно есть, и на самом деле не прям колбасится.

     

    Декали

    По соображениям производительности декали являются довольно захардкожеными, и их трудно заставить работать по пути моддинга как мы хотели. В этом месяце я придумал способ сделать их немного более модульными, и разработал API для их размещения.

    spacer.png

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

     

    Звуки

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

    spacer.png

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

    Эти звуки также появляются по всему редактору, поэтому, когда вам нужно выбрать звук в Hammer или ModelDoc - они есть

    Свойства Поверхностей

    Свойства поверхностей также хранились в некотором недружелюбном для моддеров виде.

    Так что теперь мы определяем свойства поверхностей в свободных файлах .surface, например так.

    spacer.png

    Когда вы бросаете луч в игре, вы получите столкновение от поверхности, которое даст вам всю вышеприведенную информацию. Например, чтобы воспроизвести звук шагов

    spacer.png

    DoFootstep - это расширение, которое живет в коде аддона. Мы помещаем его в код аддона, чтобы вы могли видеть, что он делает, и делать что-то еще, если вам это не нравится.

    spacer.png

    Пользовательские Типы Ассетов

    Три вещи выше - это пользовательские ассеты. Вы сами можете задефайнить эти файлы.

    spacer.png

    Вот что внутри sound.asset.

    spacer.png

    Это FGD файл, который определяет структуру данных. Это позволяет вам создавать и редактировать материалы в редакторе ассетов

    spacer.png

    Затем в вашем коде аддона вы создаете соответствующий класс, подобный этому:

    spacer.png

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

    Они также интегрируются в систему ассетов Source 2, так что все это ощущается как часть движка.

    spacer.png

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

     

    Hammer(2)

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

    Я столкнулся с несколькими проблемами (в основном исправляя вещи, которые я сломал), но я добавил пару новых вещей.

    Наши C# энтити теперь могут получать ключевые значения из карты. Для этого вы просто отмечаете одно из своих свойств с помощью [HammerProp], и оно автоматически устанавливается, когда объект создается картой.

    spacer.png

    Однако это было бы бесполезно без добавления энтити вашего аддона в Hammer.. итак, теперь вы можете поместить fgd в папку config/ вашего аддона, и ваши пользовательские определения энтити будут доступны!

     

    Навмеш

    Я проделал кое-какую исследовательскую работу с навмешами, чтобы убедиться, что мы можем их использовать. Хорошая новость - мы можем.

    spacer.png

    Большая часть навигационных путей привязана к базе сущностей NPC AI движка С++, которую мы не хотим использовать, но навмеш в основном абстрагирован. Это работает для нашего подхода, так как мы хотим связать голые основы и код как можно больше в c#.

     

    Вода + Плавание

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

    Физические объекты должны взаимодействовать с водой по-разному, некоторые вещи должны плавать, некоторые вещи должны тонуть, все движение должно быть смочено.

    Пули должны попасть в поверхность воды и продолжить свой путь. Под водой пули обычно действуют по-разному.

    Игроки должны двигаться под водой также по - разному. Они должны уметь плавать. Их вид нуждается в куче постобработки и тумана, звук на выходе должен быть более приглушенным.

    Source 2 не имеет ничего из этого, поэтому мы начинаем с нуля. В этом месяце я сделал все самое важное. Есть еще много вещей, которые нужно сделать, но я не хотел тратить целый месяц на создание идеальной воды.

     

    Эффекты от Выстрелов

    Свойства поверхностей позволяют определить, какие партикли должны появляться при попадании пули на определенную поверхность.

     

    Бесшовные Кубмапы

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

    Это не идеально, но это убедительное решение для игроков, художникам не нужно беспокоиться об их настройке.

     

    Шум

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

     

    Улучшения Инструментов

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

    Вот некоторые изменения, которые облегчили нам жизнь в этом месяце.

    spacer.png

    spacer.png

    spacer.png

    spacer.png

    spacer.png

     

    Эксперименты с Транспортом

    spacer.png

    Я запилил базовую физику транспорта. Она работает, прослеживая вниз на колесах и применяя пружинные усилия для подвески. Затем я могу приложить силы к телу, чтобы заставить его двигаться. Я портировал модульные транспортные ассеты из rust. Это не идеально, но это одна из многих попыток. Все это на C#, на уровне аддона, так что вы сможете создать свою собственную физику автомобиля.

    Сейчас нет хорошего способа водить машины, так что это то, над чем мы будем работать.

     

    Глубина Резкости

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

    spacer.png

    Если вы программист игрового режима, вы можете просто включить его, изменив значения диафрагмы в объекте камеры, как вы сделали бы это с любой физической камерой, и так же просто, как изменить FoV.

     

    Deathmatch

    spacer.png

    Я работал над игровым режимом deathmatch, добавляя новое оружие и решая, что еще нужно сделать. Конечная цель для этого - быть играбельным, чтобы быть хорошим тестом для всей системы аддонов gamemode.

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

    За каждую вещь, которую мне удается запилить из моего списка, я нахожу еще 3, чтобы добавить к нему. Но это делает хороший прогресс, даже несмотря на то, что сам режим deathmatch, кажется, не движется вперед, он двигает все остальное вперед вокруг него.

     

    Итоги

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

    Оригинал - Официальный сайт SBox.FacePunch.com

     Share


    User Feedback

    Recommended Comments



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now