17 июня 2014

Вода на flash'е.

Давно не рассказывал о том, чем занимаюсь сейчас. Поэтому сегодня поведаю о прототипе, который я переделывал уже много раз... Его кодовое имя - "вода". Тема избитая вдоль и поперек, но я все-таки решил попробовать свои силы, и реализовать свою воду на флеше. Ура!
Оказалось, что сделать полноценную динамику частиц жидкости с одной стороны - простое дело, но с другой - тюнинг всей системы, повышение производительности и сопутствующие проблемы (вроде скрещивания физики воды с физикой Box2d) - довольно трудоемкое и затратное дело! Возможно, именно поэтому довольно мало действительно качественных игр с физикой воды!
Идея
Заразился идеей сделать игру про жидкость, прослушав подкаст с Антоном Карловым, где он рассказывал о разработке игры про пожарника, которая на тот момент была еще не доступна для лицезрения. Я тут же засел за гугл в поисках материала по симуляции динамики жидкости. Собрал демку и начал любоваться, как льется какая-то ерундовина у меня на экране... Через пару дней я узнал, что игра Антона зарелизилась, и я бросился смотреть и изучать получившуюся у него воду. Ощущения были смешанными - с одной стороны такого еще не было на флеше! Вода льется, пенится, ее много, она тушит огонь, непосредственно участвует в геймплее. Мега-круто! С другой стороны невозможно отделаться от ощущения, что вода немного не дотюнена в плане физичности. Хочется, чтобы она быстрее падала, и в принципе взаимодействовала с окружением - двигала ящики, смывала врагов и всякое такое.
Зацените как у него вышло:









Эволюция "моей" воды
Чтобы было понятно, на каком этапе сейчас мой прототип, покажу несколько видео, от самого раннего к настоящему моменту:

Самый первый прототип, вода на воду-то не похожа, слишком вязкая что ли:



Уже получше, но струя никуда не годится, плюс нужна хорошая отрисовка самой воды



Конечный вариант, уже пилю игру с такой водой:










Игры с водой
Чтобы было понятно, где можно применить такой объем жидкости в плане геймплея, покажу три игры, про которые, наверно, слышали почти все:

Sprinkle islands


Where is my water 2


Shooter



Вдохновились? В общем, я стремлюсь к чему-то подобному :)







Пара слов о реализации
Вода у меня на частицах. Есть метод SPH (smoothed particle hydrodinamics), который позволяет довольно просто симулировать взаимодействие частиц, создавая ощущение жидкости.
400 частиц, взаимодействующих с физикой, сильно понижают фпс, конечно... Ботлнек - взаимодействие воды с Box2d. Пока удается держать фпс на отметке в 35 кадров, что приемлемо.
Итого у меня сейчас имеется физика частиц, а также их взаимодействие с физикой Box2d. Причем это взаимодействие двусторонее - частицы не проникают в тела, а сама вода может сталкивать и двигать физически сплошные объекты. Выглядит неплохо. Но хочется, чтобы было "круто!" :)



О чем геймплей?
Изначально я планировал сделать "рытье" земли, как в Where is my water, но на Box2d это не так просто сделать. Можно отказаться от физического движка вообще, и сделать геометрию земли руками, тогда рыть землю будет невероятно просто. Но при этом придется отказаться и от обычных физических объектов - не будет всяких подвижных камней, поворотных мельниц, дверей и так далее. Возможно, в будущем, я и сделаю такую игру (есть пара задумок), но сейчас я решил остановиться на варианте физической головоломки, вроде Sprinkle islands. Тушим домики, толкаем задвижки, скидываем камни и так далее.
Почему так? Ну, мне так проще, плюс такая игра станет отправной точкой - будет ясно, насколько интересна тема воды спонсорам и игрокам. На мой взгляд, интереснее делать небольшие игры, чем пилить здоровенный проект долгое время.



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



Почему так долго?
Первый прототип я релизовал в ноябре 2013ого... Поэтому хочется доделать по-быстрее, не откладывая в долгий ящик. За эти полгода мы разработали две игры (Red Warrior и Cut 3d), сделали несколько сайтлоков, продали права на портирование трех своих игр, да и просто весело провели это время!
Вот и получается, что новая игра движется медленно и вяло.

Сообщения, схожие по тематике:

0 коммент.:

Отправить комментарий