Решил поиграться с физикой Проиграл

С чего всё началось

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

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

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

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

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

Вспомнить хотя бы какой-нибудь Gang Beasts или HD серию Grand Theft Auto, где в обоих вселенных анимация тел работает за счёт физических свойств и других, прочих аддитивных компонентов, дающие самые забавные ситуации в игровом мире

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

Поэтому остановившись на том, что физика это мой путь, я вспомнил про один из самых моих любимых мультов, начала нулевых - "Планета сокровищ"

Решил поиграться с физикой Проиграл

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

В общем, я загорелся и набросал первый прототип.
(гифка так просто, не по теме, так как скриншотов на раннем этапе не делал)

Создание прототипа

Быстрого прототипирования так и не вышло

Изначально я реализовал сценарий борда, а именно:

  • Левитацию, за счёт фиксированной точки на поверхности, со смещением по высоте и применения к этой точке физической силы, по отношению к физическому объекту борда
  • Стандартное перемещение посредством ввода команд с клавиатуры
  • Ускорение сил перемещения борда
  • Остановку перемещения
  • И самое интересное, это вращение объекта по вектору нормали, которое за счёт дополнительной интерполяции выглядит так, словно герой самостоятельно пытается фиксироваться и подстраивать свой борд под ландшафт поверхности

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

Процедурная анимация или же физика?

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

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

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

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

Собсна я так и сделал, а именно:

  • Реализовал простой компонент IK на две конечности
  • Создал необходимые конечности для тела: руки, ноги, туловище
    (голову дома забыл)
  • Наделал целевых точек для конечностей
  • Нацепил на каждую родительскую кость по IK компонентам
  • Всё настроил и перешёл к контролеру тела

Для прототипа, контролер тела должен был мне дать:

  • Контролируемую симуляцию инерции
  • Управление конечностями для совершения каких-то процедурных взаимодействий
  • И т.д.

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

Падение

На часах уже было 21:00, а я не сделал даже половины того, что родилось в голове.

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

И тут.

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

Катарсис

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

И я был доволен что успел.
Но остался недоволен результатом проделанной работы, которая в голове выстраивалась как очередное творение Фумито Уэда.

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

Спасибо DTF и Playgendary за такое событие, которое смотивировало к действию денежной единицей, но по итогу, дала нечто большее.

1818
14 комментариев

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

2
Ответить

Спасибо, про билд и не подумал, только что прикрепил ссылку на него в статье, можете ознакомится.
Ну и здесь продублирую:
https://mega.nz/#!bFsF3ACI!ZolSrIsnFYEPXytvjXtAnuHz8q2bzzJoc8cQmpoOFGU

1
Ответить

Комментарий недоступен

1
Ответить

Спасибо!

2
Ответить

Блин, чертовски круто! 
Само собой, физику нужно сильно шлифовать, но уже сейчас кататься интересно.


Почему-то сразу начал думать о игре в духе Хотлайна или Педро. Столько всего в голову залезло - это здорово. Но думаю, что у тебя и так идей полно для наращивания мяса. Хотелось бы увидеть от тебя развитие игры!

1
Ответить

Ооо, при реализации прототипа, я действительно подумал о Педро, круто что Вы это уловили!
Есть идея сделать из этого приключение, стилистически подобное упомянутому мультфильму "Планета сокровищ", с примесью экшн составляющей того самого "My Friend Pedro".
Ну а еще, есть идеи реализации физического каната, который можно было бы на мой взгляд применять как угодно, хоть в боёвке, ударив соперника на расстоянии, хоть в ловушке, закрепив конечную точку за какую-либо поверхность и снести надвигающегося недруга, или же в перемещении, закрепив её хуком за что-нибудь и просто раскачаться, чтобы перелететь какое-нибудь пространство, которое на простом ховерборде не перелетишь.
В общем, идей масса, буду выкладывать девлоги, если что-то будет идти.
И спасибо за фидбек!

1
Ответить

Ховерборды - наше всё!
Молодец, что не даешь людям забыть про самый лучший транспорт будущего :)

1
Ответить