Setsu

Setsu

пикабушник
пол: мужской
поставил 10908 плюсов и 572 минуса
отредактировал 0 постов
проголосовал за 0 редактирований
94К рейтинг 134 подписчика 10К комментариев 89 постов 24 в "горячем"
1 награда
5 лет на Пикабу
40

MightyThews (часть третья)

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


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


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

- Художник по текстурам

- Художник по интерфейсам

- Художник по концептам

- Художник по эффектам

- Аниматор

- Ригер персонажей (Человек, который настраивает скелеты под персонажа, контроллеры для него и привязывает персонажа к скелету)

- Программист игровой логики

- Программист интерфейсов

- Программист шейдеров

- Звукорежиссер

- Геймдизайнер

- Левелдизайнер

- Сценарист


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


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

- Моделить

- Левелдизайнить

- Писать сценарий

- Программировать логику

- Геймдизайнить

- Анимировать

(Все что идет далее достаточно легко набрать на ассетах или купить у других)

- Работать с интерфейсом

- Текстурить

- Ригать

- Работать со звуком

- Рисовать гуи

- Работать с эффектами

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


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


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

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


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

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


В общем в итоге я решил что аркада с видом сбоку - это слишком затратное занятие и забросил все на полгода.

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

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

Самое смешное, что с квестом у меня тоже не зашло. Сделать один уровень легко, но развивать историю все же очень сложно. Это неподъемная для меня задача. Да, я очень поздно узнал что не умею в сторилайн.

Для ориентиров при планирования сюжета сделал карту. После от скуки прилепил анимированных камер под заглавную тему из Bulletstorm.

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

Сразу скажу что это не "Канализационное ГТА". Вся карта будет разбита на маленькие уровни.

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

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

MightyThews (часть вторая)

Все наработки из предыдущего поста были сделаны за октябрь-январь 2014-2015 годов.

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

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

В итоге я получил около тридцати процентов фпс сверху. Для телефона вышло где-то на пятнадцать кадров в секундну сверх максимальных шестидесяти.

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

MightyThews (часть вторая) MightyThews, Игры, Gamedev, Unity3d, Видео, Длиннопост

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

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


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

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

И стрельба по глупому аи.

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

MightyThews (часть вторая) MightyThews, Игры, Gamedev, Unity3d, Видео, Длиннопост

Теперь у них есть рагдолы, но при этом они частично падают по анимации.

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

Правда рагдолы тут плохо настроены, видно как им крутит хвосты.


Далее можно посмотреть как я попытался прикрутить стелс мод, который в итоге ушел в мусор.

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


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

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

А вот тут немного ретро файтинга с музыкой из Alien Soldier.

Завтра покажу к чему все сейчас пришло.


В прошлом посте я сказал что не умею в сторилайн и несколько человек (@devcor, @Koldyr, @mrViRu5) захотели помочь. Чему я, естественно, очень рад. Я собирался вам ответить, но подумал, что будет лучше, если сначала вы увидите конечную итерацию, которая довольно сильно отличается от нынешней.


На сегодня пока всё. Всем мышей.

MightyThews (часть вторая) MightyThews, Игры, Gamedev, Unity3d, Видео, Длиннопост
Показать полностью 3 6
734

MightyThews (часть первая)

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

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

Через полторы недели собрался какой-то начальный функционал:

Решив не останавливаться на одних прыжках и лазанью по стенам, я просидев еще три дня и добавил трубу, по которой можно лазить. И ящик, который можно двигать. Соответственно вместе с анимациями для главного героя.

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


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

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


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


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

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


Через какое-то время мне пришла в голову идея системы односложных квестов.

Квесты состояли из нескольких монологов, которые соответствовали состоянию квеста. состояний было четыре:

0 - Мы еще не брали квест.xml

1 - Мы взял квест, но не выполнили условия.xml

2 - Мы взяли квест и выполнили условия.xml

3 - Мы сдали квест.xml

В этом видео показываются все четыре варианта монологов:

Раз квесты готовы, значит пришла очередь боевки.

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


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

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

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

На этом у меня пока все, остальное выложу завтра.

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

Мы ищем frontend-разработчика

Мы ищем frontend-разработчика

Привет!)


Мы открываем новую вакансию на позицию frontend-разработчика!

Как и в прошлые разы для backend-разработчиков (раз, два), мы предлагаем небольшую игру, где вам необходимо при помощи знаний JS, CSS и HTML пройти ряд испытаний!


Зачем всё это?

Каждый день на Пикабу заходит 2,5 млн человек, появляется около 2500 постов и 95 000 комментариев. Наша цель – делать самое уютное и удобное сообщество. Мы хотим регулярно радовать пользователей новыми функциями, не задерживать обещанные обновления и вовремя отлавливать баги.


Что надо делать?

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


Вам необходимо знать современные JS, CSS и HTML, уметь писать быстрый и безопасный код ;) Хотя бы немножко знать о Less, Sass, webpack, gulp, npm, Web APIs, jsDoc, git и др.


Какие у вас условия?

Рыночное вознаграждение по результатам тестового и собеседования, официальное оформление, полный рабочий день, но гибкий график. Если вас не пугает удаленная работа и ваш часовой пояс отличается от московского не больше, чем на 3 часа, тогда вы тоже можете присоединиться к нам!


Ну как, интересно? Тогда пробуйте ваши силы по ссылке :)

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

Удачи вам! ;)

Показать полностью
Отличная работа, все прочитано!