Стрим-центр15 в эфире
Выживаем с подписчиками! Общаемся с чатиком! GTHs стримит Dead by Daylight
Русь Gonzo_ru стримит Crusader Kings II
HC Breach, LA+poison leegumbo стримит Path of Exile
stream center intro slide 1

«Канобу» и «ВКонтакте» запускают «Стрим-центр» — сервис для тех, кто любит смотреть и проводить прямые трансляции. Наш сервис поможет делиться стримами с «ВКонтакте», Twitch и YouTube и обеспечит новую аудиторию, которой будет интересен именно ваш контент.

«Стрим-центр» доступен на любой странице «Канобу» — достаточно нажать на стрелку в верхнем правом углу и развернуть сетку с активными стримами. Вы также можете открыть чат, кликнув на иконку сообщения в правом углу.

Кнопка «Добавить стрим» позволит поделиться прямой трансляцией. После нажатия вы увидите три активных поля. В первой строке нужно вписать адрес канала, остальные поля заполнит наш сервис.

stream center intro slide 4

Делиться стримами — это просто! Попробуйте сами. Обратите внимание, что после добавления стрима ваша трансляция сначала отправится на рассмотрение модераторов.

5 2 793
4 мин.

FPAH: Дневник первой игры.. Часть 2. Про Godot.

Этой части предшествовали Часть 0, Часть 1 и видео-обзор британского летсплеера..

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 1

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

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

Раздвоение личности.

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 2

Физические 2D объекты в Годо представлены KinematicBody2D, StaticBody2D и RigidBody2D, причём последний имеет несколько режимов: Rigid, Static, Character и Kinematic. Кайф в том, что можно переключать режимы на ходу. В моей игре это реализовано следующим образом: пока "клюшка" не активна она ведёт себя как ригид - её позицию просчитывает физический движок, её можно сбить у неё есть инерция и всё такое; когда игрок держит "клюшку" пальцем она становится кинематиком - её позиция следует за пальцем, но если расстояние между пальцем, который её ухватил увеличивается до определённого значения (в случае если её выбили другой "клюшкой" или движение было слишком резким) она снова становится ригидом. Так я получил две игровых фичи: можно швыряться "клюшкой" и выбивать их друг у друга из рук.

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

Кручёные нормали.

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 3

Карты нормалей - это хорошо! С ними всё плоское выглядит не так плоско. Они сообщают угол, под которым якобы должна упасть тень, а тени создают объём. Я ожидал, что если дать шейдеру tangent-space карту, при вращении объекта он будет всегда освещаться правильно, но поскольку этого не случилось и тень вращалась вместе с объектом, пришлось раскручивать векторы самому, в обратную сторону. В результате объекты крутятся, свет крутится, тени крутятся, но делают вид, что не крутятся. If it looks right - it's right! = )

Косые углы и линейные функции.

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

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 4

При мне такой фигни не было! = )

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

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 5

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

Можно потише?!

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

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 6

Звучит, работает, хорошо. Опять же, if it looks right - it's right!

Партиклы! Партиклы!

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

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 7

Немного наглядной оптимизации.

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 8

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

FPAH: Дневник первой игры.. Часть 2. Про Godot. - Изображение 9

Вот как-то так.

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

Если вам станет интересно делать игры и вы выберете для этих целей Godot, не забудьте первым делом заглянуть в его Русское Сообщество в ВК, там сидят люди в разы прокаченнее меня.. = )

Следующая часть будет про Xcode и iTunes Connect. Игру можно найти в App Store, набрав в поиске FPAH..

Меня зовут Рома Чумак.

#gamedev #indiegame #геймдев #инди

2 комментария

Destiny: Rise of Iron DLC announce.