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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Падение

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

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

И тут.

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

Катарсис

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

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

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

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

44 показа
1.1K1.1K открытий
14 комментариев

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

Ответить

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

Ответить

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

Ответить

Спасибо!

Ответить

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


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

Ответить

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

Ответить

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

Ответить