ImAlexSmith

Пикабушник
поставил 65 плюсов и 16 минусов
Награды:
5 лет на Пикабу
307 рейтинг 5 подписчиков 4 подписки 6 постов 2 в горячем

Видео головоломок нашей игры

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

Кто что думает, кто что скажет?

Кстати, если кто из читателей не в курсе - мы пилим игру-головоломку с сюжетом. Уже даже делал пару постов про разработку:

https://pikabu.ru/story/skaz_o_tom_kak_myi_svoyu_pervuyu_igr...

https://pikabu.ru/story/kastomnyie_redaktoryi_dlya_unity3d_k...

Показать полностью 2

Когда что-то пошло не так

Когда что-то пошло не так Gamedev, Юмор, Вот это поворот, Что происходит?, Unity, Indiedev
Показать полностью 1

Скриншотный субботник #5

Привет лиге!

В связи с тем, что товарищ @Strangster не запретил подхватить инициативу - подхватываю.

Скриншотный субботник #5 Screenshotsaturday, Скриншот, Гифка, Разработка игр, Gamedev

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

Предыдущий скриншотный субботник тут: https://pikabu.ru/story/skrinshotnyiy_subbotnik_4_5716565


p.s.: скриншоты на заставке из игр, представленных в предыдущем субботнике

Показать полностью 1

Кастомные редакторы для Unity3D, которые мы используем в игре

Unity - сказочный движок. Иногда эта сказка добрая, про пони и радугу. А иногда - про страшного бабайку. И очень важная часть данного движка, а именно расширения для редактора (custom inspectors) - как раз про бабайку. В статье я бы хотел поделиться опытом использования собственных расширений на примере нашей игры.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка
Некоторые из наиболее интересных наших расширений. Сколько на экран влезло...

Начнем с теории. Вот, что говорится в документации про расширения:

“Unity позволяет вам расширить редактор своими собственными инспекторами и окнами редактора (Editor Windows), и вы можете задать, как свойства должны отображаться и инспектора при помощи пользовательского Property Drawers.” https://docs.unity3d.com/Manual/ExtendingTheEditor.html


То есть имеем три основных типа для расширения функционала, наследуемые от базовых классов:

* UnityEditor.Editor

* UnityEditor.EditorWindow

* UnityEditor.PropertyDrawer


И сразу же первая загвоздка - все расширения делаются только с помощью кода. Никакого визуального программирования и блок-схем, WYSIWYG, перетаскивания кнопочек по формочкам. Только C#, только хардор. Изменил размер кнопки - будь добр пересобрать весь проект, чтобы увидеть изменения. Соответственно, написать новое расширение или поправить скаченное из Asset Store не программисту - практически непосильная задача.


Первый тип (Editor) используется для того, чтобы сказать Unity “как отобразить класс”. Это может быть ScriptableObject или MonoBehaviour. Используется чаще всего, по крайне мере у нас. Второй (EditorWindow) - может быть использован для отображения почти любого содержимого в пределах нового окна, за которое он отвечает. Третий (PropertyDrawer) отвечает на вопрос “как отобразить параметр”. Причем это может быть как один из стандартных типов параметров, так и свой собственный.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка
Пример кастомного окна редактора из документации https://docs.unity3d.com/Manual/editor-EditorWindows.html

Для каждого из типов расширений можно найти по небольшому “Hello World” в документации. Но чтобы сделать действительно полезное, удобное и красивое расширение, придется еще потрахпостараться. Связано это, во-первых, с наличием ОГРОМНОГО числа недокументированных и внутренних (Internal) функций движка, которые можно использовать. Во-вторых, с большим количеством багов и общей отбитостью не интуитивностью подсистемы. В-третьих, почти все статьи про расширения на английском или вообще иероглифы. Если с английским лично я еще могу справится, то китайский поддается только гугл транслейту, что слабо помогает общему усвоению информации. Именно поэтому сделать что-то сложнее двух дополнительных кнопок - сродни алхимии и черной магии. Но когда это нас останавливало?


В нашей, казалось бы, небольшой игре используется 22 собственных скрипта для расширений на ~2 500 строк кода в сумме. Приведу особо интересные примеры для каждого типа расширений.


PropertyDrawer


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


Эта функция используется для свойств-идентификаторов объектов. Что-то типа ИД, необходимого для сериализации/десериализации структуры уровня. Защита от самого себя, чтобы не поменять идентификатор во время сборки уровня в редакторе. Если так сделать - уровень сохранится, но загружаться не будет.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

Еще есть PropertyDrawer для класса “Координаты X и Y” - вместо двух строчек выводит в одну. Еще один - для отображения коллекции string в виде выпадающего списка.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

EditorWindow


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


Первый - получение картинки-превью префаба. Т.е. той картинки, которая отображается в самом редакторе Unity. Реализуется с помощью одного метода AssetPreview.GetAssetPreview(gameObject) и возвращает объект Texture2D, который может быть использован в качестве контента для GUILayout.Button.

Второй - центрирование камеры в SceneView к выбранной ячейке.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

Editor


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

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

Дальше от него наследуются все остальные кастомные эдиторы. Самые “толстые” у нас - это ContentPackEditor, LevelEditor, LocalizationEditor, GameFieldEditor. Каждый от 200 до 300 строк кода. Опять же, приводить код каждого смысла не имеет. Расскажу только про интересные моменты.


Для ContentPackEditor нужен был функционал визуальной сортировки элементов массива. И такой функционал в Unity есть, это ReorderableList в UnityEditorInternal. Вот статья по основам использования http://va.lent.in/unity-make-your-lists-functional-with-reor...


От себя я добавил сворачивание/разворачивание списка при клике на заголовок.

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

В LocalizationEditor надо было сделать что-то вроде таблицы, чтобы четные и нечетные сроки выводились разным цветом.


Вторым проблемным моментом было сделать поиск в уже добавленных ключах локализации и мгновенный вывод результатов в виде выпадающего списка под строкой поиска. Вот для этого найти решение было действительно непросто. В итоге нашелся метод на каком-то китайском сайте с иероглифами. Хорошо, что код - он и в африке китае код. http://www.clonefactor.com/wordpress/public/1769/


Путем небольшой доработки напильником стало выглядеть все вот так:

Кастомные редакторы для Unity3D, которые мы используем в игре Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр, Unity3D, Гифка

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

Почитать статью без всяких гифочек, зато с тру-кодом на C# можно на форуме: http://www.cyberforum.ru/unity/thread2191585.html


Страница игры в Steam : http://store.steampowered.com/app/766740/Maze_Of_Adventures/

ВКонтакте : https://vk.com/ocponl

Youtube : https://www.youtube.com/channel/UCc8LO3KVcEPNalUZJBB-4nw

Сайт : http://www.ocp.onl


Подписывайтесь, комментируйте, покупайте игру))

Показать полностью 8

Зимний закат в Иркутске.

Зимний закат в Иркутске.

Сказ о том, как мы свою первую игру делали

Здравствуйте, дорогие читатели. Меня зовут Алексей Кузнецов. Я геймдизайнер (вроде бы) и программист (абсолютно точно) игры Maze Of Adventures. Хочу поделиться с вами историей разработки сего «шедевра». Может, кому-то поможет наш опыт. Может, кто-то поделится своим опытом в комментариях — и поможет нам.

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Пациент на момент выхода в ранний доступ в Steam

Первый раз — не ... разработчик игр

Началось всё летом далёкого 2012 года с большого желания делать игры и зуда в одном известном месте. Как и большинству начинающих игроделов, хотелось сразу запилить убийцу Crysis с преферансом и профурсетками. Поэтому «приглашаются все, делаем на энтузиазме». Да вот беда — было свободное время, но не было ни навыков, ни денег, ни опыта. Первая идея не выгорела. Как и вторая. Как и третья. В итоге скатились до головоломки. Уже тогда, в 20 лет, я понял, что организовать группу людей на совместный труд (ещё и бесплатно) — это вам не кули ворочать.


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

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Paint — ваш друг, брат и товарищ при прототипировании геймплея. А ещё немного жена, любовница и бабушка

Показав эту игру знакомому программисту, получил комментарий: «Так это же видоизменённая классическая головоломка Tilt Maze!». Тогда я начал программировать игру на Java для Android (при наличии знаний в Java чуть меньше, чем нулевых). В качестве главного рисовальщика к команде присоединился Юрий Чучмай, известный в некоторых кругах художник, который увидел пост про игру на одном из форумов игроделов.


Юра нарисовал простенькую графику с круглой принцессой в качестве главного героя. Принцесса должна была выбраться из замка, последовательно проходя лабиринты-головоломки. Причём всё было как взаправду — целый лист туалетной бумаги из школьной тетради в клеточку с десятком концептов. Выбор, обсуждение кудряшек, расположения короны и цвета глаз. Ну вы поняли. Всё, что можно, лишь бы не писать код. Был и кто-то ещё, но сейчас уже не вспомнить.

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Прыыыынцесса, что сказать

Закончилось это дело понятно чем. Как лебедь, рак и щука, каждый тянул в свою сторону, а потом члены команды и вовсе занялись своими делами (ну дык конечно, учёба началась). Прототип же был отправлен в дальние уголки жёсткого диска.

Новая надежда попытка

Долгое время мы с Юрой не общались, но висели друг у друга в друзьях во «ВКонтакте». В один прекрасный (или ужасный) момент мне стало неинтересно просиживать штаны в офисе и захотелось заработать на любимом хобби. Хотелось сделать что-то особенное, с редким геймплеем, а не очередной кликер. Юра понял, что рисованием тоже миллионы не заработаешь, поэтому, параллельно решил заняться тем, в чём разбирается, что нравится и потенциально может приносить хороший доход — геймдевом.


Так мы одновременно пришли к одной и той же идее. Весной 2017 года я написал Юре с предложением закончить проект — допилить ту самую принцессу. С таким посылом, что «а почему бы, собственно и нет?». Ведь за прошедшие пять лет каждый из нас набрался опыта в своей области и, надеемся, мозгов. Кстати, пришёл я к Юре не с пустыми руками. Перед этим я сделал прототип со старой графикой, но уже на Unity. Прототип работал на PC и Android и имел целый уровень.

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Прыыыынцесса в замке

Рабочий процесс

Принялись за дело. Работы было немного — дособрать прототип, чуть подкрутить графику и наделать головоломок. Всё это заняло бы от силы пару месяцев.


Удалённую работу организовали через Trello, Skype и систему контроля версий. В Trello ставили задачи и подсчитывали время, которое на них тратили. В Скайпе созванивались раз в неделю, чтобы решить, что в приоритете и куда двигаться дальше. Для синхронизации проекта использовали систему контроля версий — BitBucket. Благодаря ей несколько раз спасли информацию от потери. Хотя SourceTree (графическая оболочка для Git-систем, в том числе BitBucket) и доставляет периодическую головную боль, но в работе он просто незаменим.


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


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

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
А ведь могла бы быть и ведьма

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

«Дяденька, а продайте нашу игру? Как нет?!»

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


Название команде мы не придумывали. У меня пару лет как был куплен домен ocp.onl, куда мы и выкладывали демки и видео с этапов разработки. Немного погуглив, Юра узнал, что в фильме «Робокоп» была мегакорпорация OCP (Omni Consumer Products). Скромненько и со вкусом, нам подойдет.


Примерно в это время Юре попалась статья о той самой игре про Красную Шапочку. Мы следили за ней несколько месяцев и были очень рады, когда она вышла, потому что игра была действительно достойная и красивая. Но в статье ребята писали, что прибыли почти нет и что после года работы решили свернуть проект. Это нас, конечно, немного демотивировало.


Не обрадовали и ответы издательств. Из всех пятидесяти ответило около половины. Отказали. Половина из отказавших даже указали причину — устаревшие механики, нужен «mid-core & meta-gaming».


Мы долго гуглили и пытались понять, что это за зверь. Когда же разобрались, захотели переделать игру — добавить этот самый метагейминг. Даже начали прописывать метагейминговую составляющую — некий филлер, где игрок мог бы находиться между прохождением лабиринтов. У нас была идея сделать нечто вроде рогалика, где головоломки выступали бы аналогом боссов, а остальное время герой просто ходил по подземельям в поисках лута. После немалого количества часов мы поняли, что эта надстройка будет как пятое колесо у телеги. В общем, потратили время зря.


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


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

Сказ о том, как мы свою первую игру делали Steam, Инди, Ранний доступ, Длиннопост, Unity, Gamedev, Разработка игр
Археолог Джон наконец-то предстал перед широкой публикой во всей своей красе

Немного выводов

* Главное — упорство. Можно переключиться на пару дней на что-то другое, если вымотались. Но после этого просто возвращайтесь к работе.


* Не вкладывайте все деньги, если вы не профессионал. Первая игра — это проверка ниши, которую лучше сделать своими силами и набраться опыта. Вкладывайте то, что не жалко потерять. Мы на разработку потратили чуть больше 10 тысяч рублей. И это с учетом взноса Steam Direct.


* Всегда будьте вежливы друг с другом, пытайтесь договориться, находите компромисс. Засуньте свою корону и обиды подальше.


* Когда работаете вдвоём, то мотивации больше. Тут действительно «1+1=11». Когда в Trello появляются сообщения, вроде «три часа, прикручивал эффекты частиц», понимаешь, что проект движется и сам хочешь работать. С другой стороны не будьте только потребителем, думайте о напарнике. Если вы ничего не делаете неделями, то и у напарника падает мотивация.


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

И что ви таки имеете на данный момент?

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


Общее время работы на данный момент — более 800 часов на двоих. На очереди — следующая глава в таинственном Египте.


Будем очень признательны, если вы поиграете в нашу игру, дадите нам фидбэк, укажете на ошибки или похвалите удачные решения. Купить игру можно в стиме с 17 января. Если денег нет, а поиграть хочется — пишите нам. Придумаем, как мы можем помочь друг другу ^_^


Страница игры в Steam : http://store.steampowered.com/app/766740/Maze_Of_Adventures/

ВКонтакте : https://vk.com/ocponl

Youtube : https://www.youtube.com/channel/UCc8LO3KVcEPNalUZJBB-4nw

Сайт : http://www.ocp.onl


P.S.: данная статья является скорее эмоциональным порывом. То, чем хочется просто поделиться. Но за время разработки мы набрались и некоторого чисто технического опыта. По работе с Unity, BitBucket и тому подобным. Мы готовы написать вторую, более техническую, статью, если это интересно публике. Надо ли?

Показать полностью 6
Отличная работа, все прочитано!