Пост про создание небольшой игры на Unity под Android

Добрый день пикабушники и в частности мои глубокоуважаемые подписчики (все 17 человек). Сегодня я хотел бы рассказать Вам о своем новом проекте на Андроиде, который увидел свет несколько дней назад. Пару скринов:

Если кратко, то это волейбол с разными персонажами, их кастомизацией, с возможностью игры по сети с друзьями и много чем еще интересным. Для желающих скачать ссылочка https://play.google.com/store/apps/details?id=com.upitsoft.a...

Если понравится пишите - скину промо-коды на премиум версию.


Дальше будет много букв про разработку, читать по желанию.


Ну собственно вот. Все это дело писалась на Unity в одиночку мною, ориентировочно за 3 месяца. Считаю что получилось довольно быстро для одного человека +сказались предыдущие наработки, но и что-то отнимало очень много времени (привет UNET). Игра представляет собой простую вариацию волейбола каких, наверное, существует не один десяток. Так чем же мое приложение отличается от подобных и какой вообще смысл было его делать? Ну если коротко, вот несколько отличительных особенностей:


Сетевая игра, очень много сил было вложено в нее. Много способов подключения, попробовал в деле новый UNET от Unity гори он в аду, о чем сильно пожалел, поскольку для тех же самых Play Games Services, обработку пакетов, интерполяцию и т.д. писал все равно вручную, соединить с Юнетом не получилось, если вы знаете как - пишите, мне правда интересно. Реализована минимизация задержки с помощью хитрых алгоритмов, интерполяции, предсказания движения и т.д. В частности идет отправка ненадежных пакетов, а следом за ними с подтверждением (может я, конечно, изобрел велосипед, но нигде о таком не довелось прочитать). На стороне клиента это все обрабатывается, снижая задержку еще сильнее. Комфортно играть даже через мобильный инет с не идеальным уровнем сигнала.


И еще один огромный плюс. Поскольку Unity - штука кроссплатформенная, то и поиграть в сетевую игру можно на айфоне с андроидом одновременно. Или даже браузер в винде/stand alone с мобильными платформами. Пока правда только есть билд для андроида, но я работаю над этим.


Быстродействие. Все шейдеры написаны лично мной, в том числе пост эффекты и элементы меню. Принципиально не внедряю чужие скрипты и пишу все сам, люблю все контролировать (на Unity-то, лол). В итоге на своем телефоне 3-х летней давности получаю стабильные 60fps.



Менеджмент контента (хз как еще назвать:) ). Под контентом подразумеваются уровни для игры (носят только декоративный характер), персонажи (отличаются скоростью, массой, высотой прыжка), мячи для игры (обладают своими свойствами, массой, упругостью и т.д. Есть например тяжеленная 2-х пудовая гиря или квадратный 2Д мяч от ретро пинг-понга, который ведет себя соответственно), вещи для персонажей (представляют собой модификаторы характеристик персонажей). Суть в том, что весь контент описан очень универсально, добавляется в пару кликов, превьюшки рендрятся сами и т.д. Планирую реализовать возможность добавлять сторонний контент пользователям самостоятельно.


Что-то не совсем коротко вышло в итоге, так что извиняйте:) Также, если будет интересно людям, которые занимаются непосредственно разработкой, в частности на Юнити, могу написать про некоторые вновь реализованные мной, эмм... удобные вещи.


Ну например, первое что приходит на ум, то что раньше я всегда делал условия для проверки открытия ачивок в коде. Здесь решил поэкспериментировать и создал Scriptable Objects вместо создания тон кода. У объектов просто идут ссылки на переменные, отвечающие за разблокировку ачивок. Короче говоря структура объектов примерно такая:


id="......";

variable = Settings.gamesPlayed;

value = 100;

function = showUnlockedScreen(); //выполняемая функция, после разблокировки. Может быть пустой


Данная ачивка открывается если число сыгранных матчей достигает 100. Думаю смысл понятен. Если таких ачивок 50 штук, то писать условия к каждой переменной превратится в ад, а тут все пишется по сути одной функцией. Так же, дополнительный контент (новые игроки, уровни и т.д.) открывается тоже с помощью ачивок. Абсолютно любому контенту добавляется скрипт (locked content) со ссылкой на ачивку и все. Пока ачивка не разблокирована - контент закрыт. Что необходимо сделать для разблокировки - загружаем прямо с Google Play по id ачивки, на любом удобном языке. Нет смысла все писать по 100 раз.


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

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества