{"id":4095,"url":"\/distributions\/4095\/click?bit=1&hash=bb60f204192cb79e0cc5357514b41ba28dbf84ab3bb368abba8fa7488b0d5471","title":"\u0421\u0442\u0430\u0440\u0442\u0430\u043f-\u044d\u043a\u0441\u043f\u0435\u0434\u0438\u0446\u0438\u044f \u0438\u0449\u0435\u0442 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 \u0410\u0440\u043a\u0442\u0438\u043a\u0435","buttonText":"\u0427\u0442\u043e?","imageUuid":"56a875c5-dcac-59c6-83cb-bda6d9c55dcd"}

Chaosborn

Заготовка под рогалик на webgl-движке PlayCanvas.

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

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

В данный момент имеет значение первая сфера, которая изначально есть в оружии. Всего сфер 12, они разбиты на 4 группы и именно от группы изначальной сферы зависит цвет выстрела.

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

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

Запустить тест в браузере можно здесь:

Управление: WASD /стрелки - перемещение, пробел - выстрел, Enter - подобрать предмет. На мобильные устройства не рассчитано, но интерфейсные кнопки там тоже работают, а в окне настроек можно включить тач-джойстик, чтобы просто бегать.

0
9 комментариев
Написать комментарий...
hdg

а почему такой выбор движка? 

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Как минимум - на браузерной платформе проект куда более доступен для публики. Нажал и попробовал, не надо ничего устанавливать.
Если же смотреть по webgl-движкам, то у этого есть выделенное пространство под проекты (то есть не нужно поднимать что-то в интернете дополнительно) и очень неплохой редактор.
А так - при желании я всегда могу перенести эту структуру в другие движки, тот же Godot или Unigine, если захочется чего-то более крупного и уйти от некоторых браузерных ограничений.

Ответить
Развернуть ветку
Sergey Bullinside

Побегал тупо на телефоне,да я читал что выше.
Ну так вот,а чего он так медленно и вязко передвигается?
Сколько вы времени на это все потратили?

Ответить
Развернуть ветку
Alexander Kulkov
Автор

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

Ответить
Развернуть ветку
Serhii Liakh

Странный пример с дябло, учитывая, что сейчас уже далеко не 1997 год

Ответить
Развернуть ветку
Sovaĝa Kovaliro

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

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Смотря, что имеется в виду под эффектами. Взаимодействия с их последствиями?
На большинстве объектов есть скрипт "destructor", который сам по себе ничего не делает в цикле, но к его методу обращаются определённые "попавшие" в этот объект сторонние коллайдеры (выстрелы, игрок). У каждого destructor имеется идентификатор (ID), на основании которого он обрабатывает случившиеся столкновения (в том числе - реагировать на них вобще, или нет), а также может получать дополнительные свойства. Например, если desrtructor висит на существе, то у него появляется запас здоровья. Если на предмете, то координаты иконки этого предмета в текстурном атласе, для дальнейшей передачи в окно инвентаря персонажа и так далее.
Информация не через "столкновения" передаётся либо через то, что объект при инициализации получает ссылку на главный менеджер сцены (который делает большинство задач), в котором может впоследствии поменять/взять данные или как-то воспользоваться её методами (просто вызвать, вызвать с параметром, что-то посчитать). Либо, ещё один вариант - хранить некоторые переменные глобально и в нужном скрипте делать проверки на изменение этого значения (то есть некая самописная альтернатива системе сигналов-делегатов). Естественно, через сигналы и их слушателей тоже можно делать.

Ответить
Развернуть ветку
Мася Буйволов

С таким скрином никто кроме меня и собомжей сюда не заглянет. 

Ответить
Развернуть ветку
Alexander Kulkov
Автор

ну и нет в том трагедии, я dtf использую в качестве записной книжки

Ответить
Развернуть ветку
2 комментария
Раскрывать всегда
null