Серия «TOTAL RELOAD»

13

Отсечение модели в шейдере

Обычно на такие простые вещи "тратится" много математики. Реализовал "отсечение" вершин прямо в шейдере, как вам качество отсечения?

Зачем это?
Нужно было сделать реальные волны внури сосуда, а не однородную водную поверхность:

Отсечение модели в шейдере Gamedev, Компьютерные игры, Cgi VFX, Шейдеры, Компьютерная графика, Инди, Математика, Оптимизация, Алгоритм, Видеоигра, Screenshotsaturday, Видео, Длиннопост
Отсечение модели в шейдере Gamedev, Компьютерные игры, Cgi VFX, Шейдеры, Компьютерная графика, Инди, Математика, Оптимизация, Алгоритм, Видеоигра, Screenshotsaturday, Видео, Длиннопост
Показать полностью 2
13

Сечем модели плоскостью

Не думал что шейдер рассчения моделей плоскостью вызовет такой интерес, в том числе и у сеньеров на reddit :) Все еще работал над рассечением моделей. Теперь алгоритм стабильно работает на выпуклых высокополигональных моделях типа таких.

Ради эксперимента добавил тесселляцию, работает :)

Да, была проблема с "карнизами":

Сечем модели плоскостью Gamedev, Шейдеры, Сечение, Плоскость, Cgi VFX, Компьютерная графика, 3D графика, 3D, Unity3D, Алгоритм, Компьютерная симуляция, Компьютерное моделирование, Проецирование, Инди игра, Видео, Длиннопост

Но ее удалось решить:

Сечем модели плоскостью Gamedev, Шейдеры, Сечение, Плоскость, Cgi VFX, Компьютерная графика, 3D графика, 3D, Unity3D, Алгоритм, Компьютерная симуляция, Компьютерное моделирование, Проецирование, Инди игра, Видео, Длиннопост

Модель цилиндра невыпклая, потому есть небольшие наложения на основаниях:

Еще можно двигать плоскость сечения вверрх-вниз и качество проекции вершин на плоскость не пострадает (я быстро попробовал). Но мне это не нужно :)

Интересно, кто-то реализовывал подобный шейдер? Поделитесь скринами/видео?

Показать полностью 2 1
5

Немного промежуточных результатов из TReload

Работаю над интерфейсом дематериализатора (наше внутреннее название одного из объектов). Занимался выделением объектов. Пара промежуточных результатов :D

Немного промежуточных результатов из TReload Gamedev, Инди, Инди игра, Блог, Компьютерная графика, Cgi VFX, Игры, Компьютерные игры, Скриншот, Screenshotsaturday, Интерфейс, Unity, Длиннопост
Немного промежуточных результатов из TReload Gamedev, Инди, Инди игра, Блог, Компьютерная графика, Cgi VFX, Игры, Компьютерные игры, Скриншот, Screenshotsaturday, Интерфейс, Unity, Длиннопост
Немного промежуточных результатов из TReload Gamedev, Инди, Инди игра, Блог, Компьютерная графика, Cgi VFX, Игры, Компьютерные игры, Скриншот, Screenshotsaturday, Интерфейс, Unity, Длиннопост
Немного промежуточных результатов из TReload Gamedev, Инди, Инди игра, Блог, Компьютерная графика, Cgi VFX, Игры, Компьютерные игры, Скриншот, Screenshotsaturday, Интерфейс, Unity, Длиннопост
Показать полностью 3
13

Пара скетчей и наработки по TReload

А мы тихонько работаем над нашей игрой под кодовым названием TReload :D Появились некоторые нарабоки, которые есть возможность опубликовать:

Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост
Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост
Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост
Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост
Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост
Пара скетчей и наработки по TReload Screenshotsaturday, Скетч, Gamedev, Инди игра, Разработка, Блог, Игры, Компьютерные игры, Наработки, Длиннопост

Ссылки на нас:

VK // Twitter // Instagram // DTF // Habr

Показать полностью 6
4

Собираем комнату в T-Reload

Есть возможность поделиться вариантом процедурной сборки помещений из нашей игры. Как вам анимация?


Ссылки на нас:

VK // Twitter // Instagram // DTF // Habr

Показать полностью 1
0

Добавить игровой контроллер в игру, опрос

Привет всем!

Готовимся к релизу на ПК :) Мы изначально предусмотрели поддержку ПК, OSX, консолей и даже Linux. Игра подразумевает использование геймпада. Добавить контроллер и опубликовать порты предполагали после релиза. Но последние опросы ввели нас в замешательство.

Добавить игровой контроллер в игру, опрос Gamedev, Инди, Инди игра, Компьютерные игры, Опрос, Джойстик, Контроллер, Управление

Нам важно знать Ваше мнение! Что вы предпочитаете: контроллер или клаву / мышку?

Поделитесь пожалуйста своим опытом :)

10

Немного о подводных камнях интеграции геймпадов

Наконец дело дошло до интеграции геймпадов!

Немного о подводных камнях интеграции геймпадов Gamedev, Инди игра, Разработка, Unity, Геймпад, Инди, Разработчики, Компьютерные игры, Видеоигра, Тестирование, Интерфейс, Игры, Длиннопост

Мое предполагаемое ТЗ самому себе по части геймпада выглядело примерно так:
- поддерживать всевозмодные варианты геймпадов, а именно: xBox / Playstation / Nintendo / какиой-нибудь ноунейм
геймпады должны удовлетворять следующим требованиям (иначе поддерживать не сможем):
a) наличие 2-х стиков;
b) наличие D-Pad (4 кнопки на геймпаде слева)
c) наличие ABXY - кнопок на геймпаде справа (South/East/West/North)
d) наличие кнопки Start
e) наличие left/right bumper & trigger кнопок
- организовать интерфейс таким образом, чтобы была возможность производить настройку игры через геймпад (как и должно быть, + на игровых консолях не будет возможности использовать клавиатуру и мышку)
- сократить используемые кнопки в игре (до минимума)
- организовать возможность подключения кода геймпада к уже написанному программному интрефейсу (old Input)
- дать пользователю возможность гибко настраивать геймпад под свои требования

Предполагалось, что геймпад введем после выхода PC-версии игры. Но последний опрос показал, что людям важна не только возможность настройки управления, но и возможность выбора игрового контроллера. По этой причине и было принято решение подключить геймпад как можно раньше. Изучив вопрос, пришел к заключению, что нужно брать xBox геймпад 4-й ревизии.

Причины выбора:
- многие знакомые разработчики мне посоветовали именно его
- он часто используется в играх

Приобрел данное устройство за 5 300 руб. Не знаю, оригинал или нет... Но вроде все работает: беспроводное / проводное подключение на PC и OSX, кнопки, вибрация.

Интеграция с кодом
Как ни старался, но возник ряд проблем связанных с интеграцией.
- давно вышла новая InputSystem (Unity). Система гибкая, удобная. Потому было решено использовать именно InputSystem. Это привело к небольшой переписи логики существующего кода и пересмотру логики
- игрвое меню имело ряд проблем, которые возникли при отсутствии мышки. Дело в том, что навигация в меню с помощью геймпада основана на выделении текущего объекта с которым взаимодействует пользователь. У нас такого выделения не было, пришлось его ввести, пересмотрев дизайн всего меню
- вибрация. Удивительно насколько важна вибрация. Осознал это только тогда, когда начал с ней работать. Вибрация - это своего рода "тактильная озвучка", которая доступна только тем, кто играет с геймпадом. Качественная вибрация повышает передачу атмосферы, чувства присутствия. Некачественная (не соответствует происходящему в игре, расходится с анимациями) наоборот, разрушает впечатление и погруженность в игровой процесс.
Пришлось потратить время на создание целой системы вибрации на:
a) примитивные действия игрока такие как "взять"/"бросить" (незаметная вибрация)
b) вибрация движения (удары, полет, прыжки, неудобное перемещение в присевшем состоянии)
c) внешние реакции (вибрация от перемещения массивных обьектов, например: движение платформ, которые имеют внутренний мотор и вибрация от него передается части помещения)
в) добавлена возможность полного отключения вибрации

Что важно: важно не переборщить с вибрацией.

Пока не добрались, но уже в пути:
Говорят есть возможность использовать 4 вибропривода на геймпаде от xBox. У меня получилось использовать только два:
```
gamepad.SetMotorSpeeds(low, hight);
```
Никто не знает как получить доступ к еще двум?

Интеграция с анимацией
Оказалось, что триггеры геймпада работают "как курки", а не как кнопки. Если использовать их как кнопки, то игра "чувствуется иначе" и это никуда не годится.
Схема геймпада для того чтобы не было путаницы с тем что есть триггеры:

Немного о подводных камнях интеграции геймпадов Gamedev, Инди игра, Разработка, Unity, Геймпад, Инди, Разработчики, Компьютерные игры, Видеоигра, Тестирование, Интерфейс, Игры, Длиннопост

То есть сила нажатия передается в игру. Этим можно воспользоваться и задавать уровень приседания игрока в зависимости от уровня зажатия триггера.

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


Интерфейс меню
Как говорится: из песни слова не выкинешь. Так и в случае с геймпадом: просто так в меню геймпад не вставишь.
Пришлось видоизменить вкладку меню, которая отвечает за геймпад.

Ранее наше меню по форме немного напоминало меню из Portal 2: находилось в левой нижней части экрана и по форме было прямоугольным.
Нам было весьма проблемно "вставить геймпад" потому, что он получался "впихнутым" в окно, что даже смотрится неочень. А ведь нуно еще и дать возможность гибкой и интуитивно-понятной настройки клавиш.
По этой причине мы планируем разместить геймпад в центральной части экрана (места там достаточно и вниманием он обделен не будет), а меню разделим на два подменю (кнопки), которые раположим слевой и справой стороны экрана как условно показано тут:

Немного о подводных камнях интеграции геймпадов Gamedev, Инди игра, Разработка, Unity, Геймпад, Инди, Разработчики, Компьютерные игры, Видеоигра, Тестирование, Интерфейс, Игры, Длиннопост

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

Заключение, тесты
Тесты разных геймпадов проводил с помощью программы reWASD. Утилита позвляет "подменять" геймпад xBox на Playstation, переназначать кнопки и многое другое. То есть игра думает, что у вас в руках геймпад от Playstation.

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

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

Показать полностью 2
5

T-Reload: опыт интеграции геймпадов

В последнее время работал над интеграцией геймпадов в T-Reload.
Unity давно выпустила InputSystem, которая значительно отличается от старой Input.

В нашем случае (синглплеерная игра) не возникло проблем при миграции системы ввода с Input -> InputSystem.

Unity выпустила хороший тестовый проект Warriors, который позволяет изучить принцип работы новой системы ввода в действии.

В проекте использовались следующие устройства ввода:
1) Keyboard
2) Mouse (For simulating touchscreen input in the Unity Editor)
3) PlayStation 4 Dualshock Controller
4) Xbox One Controller
5) Nintendo Switch Pro Controller
6) Android Samsung Galaxy S9 (Touchscreen for Virtual Joystick and Virtual Button)

Клавиатура и мышь "воспринимаются" как одно устройсвто, работают. С ними проблем у нас не возникло.

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

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост

Подключил свой геймпад 4-й ревизии и он почему-то успешно распознался как Xbox One:

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост

Может кто знает как распознать разные версии геймпадов? Тестовый проект этого не умеет делать для геймпада xBox.

А вот разные геймпады Sony определяются по-разному. То есть можно точно знать что подключено: Dualshock или DualSense.
В WarriorsProject Unity использовали PlayStation 4 Dualshock.
Я же приобрел PlayStation 5 DualSense и WarriorsProject его не обнаружил в всписке поддерживаемых геймпадов. Пришлось добавлять.
То есть, получается, что xBox геймпады распознаются все как один, а геймпады Sony распознаются как разные.

Танцы с бубном на этом еще не закончились. Геймпад DualSense подключается по блютузу к разным компам через пень-колоду. До сих по не пойму точно как он коннектится и от чего это зависит. А вот геймпад от xBox подключается по блютузу без вопросов. Да и лампочка помогает видеть состояние xBox-геймпада (включен или нет, что очень удобно). В то же время на DualSense нет индикатора-лампы и непонятно включен он или нет.

С xBox проблем не возникло пока никаких. Ну кроме как impulseTriggers почему-то до сих пор нельзя запустить из коробки (у сони та же проблема).
Геймпад от сони подключается к компу без танцев с бубнами (быстро) если подключать через кабель. Но вот здесь нажатия кнопок почему-то не определяются именно для DualSense:

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост

В сети встречал подобную проблему у NintendoSwitchPro.

Особо удивила вибрация DualSense. Она совсем не работала. Работали все стики, все кнопки, но не вибрация. Я уже начал думать, что геймпад с браком. Случайно подключил его с помощью кабеля и обнаружил, что вибрация все же есть.
То есть у DualSense вибрация работает только при проводном подключении :/
Кто бы мог подумать? Нужно читать документацию.

Работа над интерфейсом геймпада в игре
Изучив разные версии отображения кнопок на геймпадах, принял неверное решение: решил провести линию к каждой используемой кнопке и подписать её (так кто-то сделал). В результате много возился с этим и понял, что не использовал опыт предыдущего дизайнера, а повторил его ошибки XD Распиновка геймпада путала игрока, выглядела крайне запутанно (примерно так):

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост

Это дело нас не устроило и мы пришли к такому варианту отображения подписей используемых кнопок:

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост

На этом пока все. Если кто знает, то подскажите где есть список со всевозможными bindingPaths???
Очень нужно знать баиндинги вот этих кнопок:

T-Reload: опыт интеграции геймпадов Gamedev, Геймпад, Игры, Компьютерные игры, Личный опыт, Разработчики игр, Xbox, Сравнение, Nintendo, Unity3D, Длиннопост
Показать полностью 6
Отличная работа, все прочитано!