Big Journey to Home Blog » Блог разработчика

    Блог разработки — Портирование: Часть 2

  • 2nd Апрель 2015
  • Всем привет! Пора рассказать вам о том, как переносился редактор уровней

    Он появился в игре почти в самом начале разработки. До Big Journey to Home я разрабатывал Platform Games Editor, поэтому тема редакторов мне была интересна. Создав 1 уровень, я уже начал писать редактор

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

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

    Я пару раз изменял метод сохранения, разработав метод открытия целых уровней. Подробнее о методах сохранения можете почитать здесь. Так получился редактор уровней. И тогда я перенес редактор в 720p

    Вышло не очень красиво, ведь нарисованных кнопок не было. В целом, работал он вполне неплохо.
    Этот функционал надо было перенести на новый движок. В новом движке предусматривается работа не только на Windows, поэтому метод сохранения, заложенный в Windows, не подходил (да и не работал). И тут мне ударила идея в голову создать обобщенный список уровней, с которым можно манипулировать. Это очень удобно. Но это было не так просто. Пришлось разрабатывать временную альтернативу. Файлы уровней я стал хранить в определенной папке, а открытие и сохранение происходило посредством написания имени файла. Да, не слишком удобно, зато работало на всех платформах

    Конечно, так нельзя было оставлять. Именно поэтому я стал разрабатывать этот «Браузер уровней». В нем отображаются уровни из базы данных BJtH-Online, созданные уровни в редакторе и уже загруженные уровни. Изменяемые уровни можно изменять в редакторе уровней. Я сделал максимально удобно, буду дорабатывать эту функцию в будущем

    Конечно, я и не мог оставлять редактор таким ужасным. Я его перерисовал и переоформил под планшеты. Кнопочки стали крупнее и теперь они делятся на 4 вкладки. Оформил редактор я в черно-белом стиле, это понравилось бета-тестерам и я оставил такой вариант оформления

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

    В заключительной части про портирование я расскажу о реализации некоторых небольших функций. Всем спасибо за чтение!

    С уважением, Silver Sword!

    Блог разработки — Портирование: Часть 1

  • 14th Март 2015
  • Всем привет! Разработка идет очень медленными шагами, так как она лежит сейчас только на мне одном. Я сегодня расскажу о том, как была портирована игра, какие вещи надо было предпринять для этого, что переписать и многое другое. Часть первая будет посвящена портированию сетевого режима игры и онлайн-функций на новый движок

    Раннее, онлайн-составляющая игры была написана на известной в узких кругах библиотеке 39dll. Она является расширением для Game Maker 7 и выше. Ее использует множество начинающих разработчиков, несмотря на встроенные в Game Maker тогда функции взаимодействия с сетью. Стандартные функции были довольно ужасными и ограниченными. В 39dll все было более-менее понятнее и более работоспособнее

    Для своей игры я впервые применил 39dll для внедрения системы автоматических обновлений. Я воспользовался готовым решением от zxc76 (спасибо ему за скрипт get_text). После почти готовой одиночной игры я начал писать кооперативный режим

    И тут начались беды. Я совершенно не понимал, как же работают сокеты, отправка данных и получение (да и до сих пор не совсем понимаю, если честно). Поэтому пришлось много-много гуглить. Находил только примеры единого сервера и подключения к нему кучи клиентов. Но мне была нужна другая связь сервер-клиент — это связь, когда один игрок создает игру и является сервером, а другой подключается и является клиентом соответственно. Долгие поиски привели меня к примеру реализованной на 39dll игры Pong. С примера я весь код почти и выдрал, поменяв передаваемые данные. Ну да, такой я программист 🙂

    i1

    И все работало на удивление неплохо. Позже пришлось придумывать разные алгоритмы для правильной работы уничтожения монстров у обоих игроков, падения люков и движения клонов. Но все бы хорошо, если бы не приход GameMaker: Studio и новых платформ. Так как 39dll не было нигде, кроме Windows, меня это сильно расстроило

    После переноса основных функций игры на новый движок, я попробовал запустить сетевую игру на Windows с помощью 39dll, но почему-то игра не хотела работать в ко-опе. Может, я что-то не так написал, может GameMaker глючит. За время моего безделья 39dll появился на OS X под названием 39dylib. Его я и стал использовать. Но и он не работал…

    Так я забросил переписывание онлайна до последнего момента. А до этого перенес онлайн-составляющую на этот самый 39dll и в GameMaker: Studio он работает до сих пор. Поэтому игра по-прежнему использует данную библиотеку. В случае с Ubuntu я нашел кем-то сделанную библиотеку 39dll для Linux. Я скомпилировал ее и все стало работать на третьей платформе. Но на iOS и Android пришлось придумывать другие способы для активации онлайн-функционала

    i2

    BJtH-Online использует GET-запросы для обработки запросов со стороны игры, то есть работает некая PHP-прослойка. В случае с настольными платформами (Windows, OS X, Ubuntu) используется 39dll и скрипт get_text. Для iOS и Android я написал вручную собственные библиотеки HttpGet. Пришлось быстро осваивать Java и Objective-C и кое-как приделать функцию. Мучился я долго, но это из-за незнания языков, скорее

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

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

    i3

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

    С уважением, Silver Sword!

    Блог разработки — Затишье перед бурей

  • 13th Апрель 2014
  • Всем привет! Наверное, многие уже забыли про нашу игру Big Journey to Home. Сейчас у нас довольно тихий этап разработки. Игра сейчас испытывает многие проблемы — все наши люди разбежались кто куда и их я потихоньку собираю. Так, сценарист скоро продолжит писать сценарий, а художник будет рисовать третью локацию — Ледяные пещеры
    Данная запись в блоге разработчика, скорее, напомнит об игре и расскажет о том, что было сделано и что будет сделано
    Главное, что было сделано за все время — локация «Подземелья». Оформление прошло на удивление быстро — я потратил около дня чтобы наверстать упущенное время



    Но основные силы брошены на подготовку к самому значимому событию в разработке — портирование игры на прочие платформы. Поэтому бета скоро будет доступна и на другие платформы — Mac OS X, Linux и Android. Цена за бета-версию также повысится на 1$ и будет составлять 2$

    Что было сделано во время подготовки?
    Прежде всего, были переработаны алгоритмы, связанные с BJtH-Online. Теперь взаимодействие с базой данных происходит через PHP-прослойку. Это значительно обезопасит игру и даст возможность портирования на другие платформы. Раньше для BJtH-Online была нужна библиотека прямого взаимодействия с БД — GMMySQL.dll
    Перенос проекта в другой редактор требует исправления мелких недочетов. Так, были добавлены многие новые диалоги и ведется работа над спецэффектами. Идет работа над световым движком, а эффект землетрясения уже готов

    Была доработана система диалогов. «Мультидиалоги» позволили наконец-то располагать множество диалогов в одной комнате

    Что еще предстоит сделать перед портированием?
    Необходимо доработать новый режим «Помощь другу», который даст другу помочь вам пройти комнату, на которой вы застряли. Он хоть и работает, но очень глючит
    Еще нужно доделать полностью четвертый кооперативный уровень. Очень странно, но какие-то три комнатки я пытаюсь сделать около года. Буквально вчера получилось создать комнату 4-8

    А после создания всего этого можно (и даже нужно) импортировать проект в GameMaker: Studio. Новая версия будет носить номер 0.5 и создаст огромное количество багов. Все со временем будет исправлено

    А как же мы про игру узнаем?
    Работа над продвижением игры еще не велась, но я уже смог договориться по этому поводу с некоторыми людьми.
    Вскоре после портирования игры начну потихоньку двигать игру. Steam Greenlight будет являться неплохим толчком для пиара — люди узнают об игре. Если даже в Steam игра не пройдет, она может завоевать сердце некоторых людей
    Недавно был проведен стрим нашей игры на twitch. Людей было очень мало, но, думаю, что это только начало. Была показана во всей красе новая локация. Вы можете ознакомиться с трансляцией здесь:

    Я думаю, я поведал вам обо всем, что сейчас творится с игрой. Разработка ведется уже около 4 лет. Получился большой долгострой. Надеюсь, что труды будут интересны людям
    С уважением, Silver Sword!

    P.S. Спешите купить бета-версию и будущую полную версию по низкой цене — 1$!

    Блог разработки — Статистика и аналитика: возможно ли без пиара набрать много загрузок?

  • 4th Ноябрь 2013
  • Здравствуйте! В очередной записи блога я напишу про первые дни в некоторых магазинах.
    1. Ubuntu Software Centre
    В этот магазин игра попала 16 октября 2013 года. С самого начала она попала на главную страницу

    Кстати, приложение шло до подтверждения около недели и не вызвало осложнений в проверке
    После публикации загрузки резко пошли вверх, но, разумеется, ненамного. 19 октября был пик закачек, а после — медленное падение. Когда приложение ушло из главной странице, его стали загружать 1-2 раза в день, залезая в пункт «Что нового?». На сегодня игру больше никто не загружает, только очень редкие закачки изо дня в день. Все это видно на графике

    В целом, результаты меня удовлетворили, так как ни в какие ресурсы игра не залезала и особого пиара не было
    2. Яндекс.Store
    В этом магазине ситуация для новых приложений плачевная. Во-первых, не было ясно, когда мою игру добавили в магазин. Во-вторых, она не появляется нигде, только если ее пробить в поиске. Поэтому набрать загрузки мне не удалось, лишь 3, две из которых — загрузки друзей
    3. Opera Mobile Store
    В этом магазине игра до сих пор не прошла проверку. Послал я ее туда 10 дней назад. Ждем реакции 
    4. SlideME
    В магазин SlideME игра попала лишь 4 дня назад и уже набрала 63 загрузки, несмотря на то, что я ее на видном месте не нашел до сих пор  Но чтобы этого достичь, мне пришлось нелегко. Я начал продвигать ее туда еще две недели назад. Мне сказали, что я должен подтвердить почту поддержки и убрать требование пользовательских данных. С этими вещами мне пришлось долго возиться, но в конце концов игра была добавлена в магазин через час после отправки. Такой быстрой поддержки я нигде не видел 

    Теперь время для аналитики. Для этого я использую Google Analytics

    Пик новых пользователей версии Android — публикация игры на SlideME. Это было вполне ожидаемо.

    Самое хорошее для меня — игру качают америкацны. Русские заходы — мои заходы в основном, поэтому их больше

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

    Вернемся к вопросу: Можно ли без пиара набрать много загрузок? Ответ — нет, пиар просто необходим. О пиаре я расскажу ближе к концу игры, когда он будет начат
    И про OUYA: В данный момент игра не опубликована в магазине, но активно движется в этом направлении. Подробнее об этом я напишу в отдельной записи блога
    Не забывайте о том, что купить бета-версию игры можно здесь. Вы найдете в ней много интересного, о чем я не скажу в ближайшие месяцы 

    Блог разработки — Выход на рынок OUYA

  • 14th Октябрь 2013
  • Всем привет! В четвертой записи блога разработки Big Journey to Home я расскажу вам о том, как игра пошла на рынок игровой консоли OUYA.

    Прежде всего, OUYA — это игровая консоль, разработка которой была профинансирована на Kickstarter. Она вышла не так давно и игр на ней существует чуть менее 500 (на момент написания статьи) Мне было интересно, как разработчику игры, завоевать этот молодой и, возможно, процветающий рынок.
    Вообще, история разработки на OUYA началась еще до продаж приставки. Я написал им письмо о том, что я разработчик и хочу опубликовать игру. В ответ пришло скорее «шаблонное» письмо:

    То, что я посылал:

    После того небольшого диалога прошел год. GameMaker Studio уже научился кое-как собирать OUYA пакеты. Я запустил среду разработки после обновления в Steam и увидел настройку «Enable OUYA packaging». Я сразу же задумался о специальном порте на OUYA.

    Сразу скажу, что я создавал первый билд совершенно «вслепую», так как не имею живой такой приставки, а эмулятора ее не существует. В моем доме нет ни одного устройства на Android, есть лишь эмулятор BlueStacks на Windows 8.
    Идея начала нарастать после того, как один из разработчиков напомнил мне о том, что игра не сильно пользуется популярностью и ее нужно немного популязировать, разместив бету в маркеты (да, бета-версия игры будет перенесена на Android и скоро будет продаваться). Я же поступлю немного иначе — опубликую демо-версию с двумя уровнями на некоторые бесплатные маркеты. Так началась активная разработка на Android и OUYA.
    О версиях на Android я расскажу в других записях. В этой же я конкретнее расскажу про OUYA. После создания версии для Android я начал адаптировать управление под джойстик. Уже раннее в игре было управление Xbox 360. Оно имело множество недостатков. В джойстике OUYA имеется не так много кнопок, которые можно как-то использовать. Конечно, можно как-то попытаться разобраться с тачпадом, но это не слишком удобно. В итоге, я назначил стрелки для выхода в главное меню и рестарта комнаты.

    В этом скриншоте сразу бросается в глаза левая часть экрана, где показаны две клавиши управления. Остальное же можно узнать в меню настроек.
    Еще одной сложностью был сам перенос управления с раскладки Xbox 360. В прошлой раскладке движение осуществлялось с помощью одного аналогового джойстика. Игроку было сложно с первого раза дать сигнал идти по диагонали. В версии для OUYA диагональные направления были отданы на второй аналоговый джойстик. Теперь игроку не так сложно манипулировать Джейком. Увы, управление не идеально и часто «глючит». Джойстик не всегда срабатывает, что раздражает даже меня.
    В целом, игра на OUYA вполне играбельна в данный момент. Правда есть еще один досадный минус — отсутствует сохранение между комнатами, уровень можно выбирать из главного меню.
    В магазине OUYA, по идее, выложена демо-версия, но считается как полная. Это нисколько не осложняет ситуация с игрой, она будет обновляться, как и Android версия.
    Сейчас игра проходит модерацию и, надеюсь, она будет одобрена.

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

    Спасибо вам за прочтение статьи! Если у вас есть вопросы, не стесняйтесь их задавать в комментариях. Кроме того, не забывайте, что вы можете купить бета-версию на Windows
    P.S. Версию для OUYA в формате APK вы можете загрузить прямо сейчас на официальном сайте!

    Блог разработки — Одна из важнейших частей в разработке

  • 17th Июль 2013
  • Всем привет! Это уже третья запись блога и, надеюсь, не последняя 
    В нашей игре до сих пор не существовало одной очень важной вещи, без которой игра просто не найдет игроков — обучение. Именно обучение помогает постичь игроку игровую механику и то, без чего игроку невозможно играть.
    В Big Journey to Home игрок должен пробираться через лабиринты, чтобы найти дорогу домой. Лабиринты делятся на отсеки, называемые комнатами. В уровне содержится определенное число комнат, которые игроку необходимо пройти.
    Запустив BJtH в первый раз, игра спросит, хотите ли вы обучаться основам игры. Новичок выберет положительный ответ и отправится в путешествие домой. Впрочем, если игра уже загружена кем-то, а обучения там не видно, его можно включить в опциях.
    Наша игра не предусматривает отдельных помещений для обучения, все нужное отображается непосредственно в игровых уровнях. Как, например, в самой первой комнате игрока учат управлять ортогонально, а так же понимать куда идти.

    В режиме обучения игра подсказывает верный путь игроку с помощью маркеров — клеток, слегка обведенных синим контуром. Это сделано для того, чтобы игрок понял основную механику движения монстров. Например, маркеры в комнате 1-7 показывают почти полное прохождение. Игрок, пройдя по ним, сможет увидеть как двигаются тараканы и не ошибиться, используя удары.
    Так как игра проходит бета-тестирование, я прислушиваюсь к мнению бета-тестеров и выделяю самые сложные комнаты в уровне. Маркеры и текстовые подсказки уже внесены в комнаты 1-1, 1-2, 1-3, 1-6, 1-7 и 1-9. Также планируется добавить их в 1-10 и во втором уровне в целом. Подсказки будут работать в определенных комнатах игры, но если игрок уже научился играть, он может в любое время их отключить. Это делает игру реиграбельной и доступной для многих людей, которые еще не знакомы с механикой игры.

    Кроме того, в игре доступен режим для профессионалов — Хардкор. Включив его в самом начале, игрок делает ошибку, так как он не сможет пройти его, играя впервые. Именно поэтому программа обучения делает всевозможные предупреждения насчет данного режима.
    Я надеюсь, что режим обучения поможет начинающим игрокам понять BJtH и все, что с ней связано. Обучение будет дорабатываться в течение бета-тестирования.
    Проверить систему обучения можно будет уже в следующей демо-версии 0.4.3, а владельцы бета-версии могут это сделать уже сейчас! Ожидайте обновлений! Не стесняйтесь писать нам о проблемах и ошибках в системе обучения. Это поможет сделать игру более понятной для всех игроков BJtH!
    С уважением, Silver Sword!

    Блог разработки — Как устанавливается игровая норма?

  • 10th Июль 2013
  • Вторая запись блога разработчика…
    Всем привет! Сегодня я расскажу вам, как я устанавливаю игровую норму для определенного уровня.
    Начну с того, что игровая норма — это оптимальное число ходов, за которое игрок должен пройти уровень. Если игрок не достигает игровой нормы (делает больше ходов, чем в ней указано), то это будет отражено в таблице рекордов и игрок не сможет получить определенные достижения.
    Как устанавливается игровая норма в одиночной игре?
    Чтобы установить норму, мне необходимо пройти уровень. Я стараюсь вложить в прохождение минимальное количество ходов, пытаясь ходить по диагонали и быстрее добегать до конца комнаты и уровня в целом. Так как среднестатистические игроки часто забывают о том, что они могут ходить по диагонали, игровая норма, скорее, предназначена для более продвинутых игроков, которые, как минимум, прошли игру. Конечно, покорять вершины рекордов можно с самого начала, но нужно понимать механику игры. Таким образом, можно пройти и на первую строчку в таблице рекордов. А чтобы люди имели стимул переигрывать уровни, игровая норма установлена достаточно оптимально. После прохождения уровня я подсчитываю свои ходы и приплюсовываю к ним 200-400 ходов, в зависимости от сложности комнат в уровне и возможности быстрого прохождения.
    Как устанавливается игровая норма в кооперативной игре?
    В кооперативной игре намного сложнее установить игровую норму, так как требуется не один человек, а два. Именно для этого у меня есть отличный помощник. Я вместе с Владом Хохловым (в BJtH-Online он ladislav) прохожу уровень и назначаю игровую норму по тем же критериям. Не стоит забывать, что ходы игроков суммируются и оба игрока получают одинаковый рекорд в таблице. Чтобы получить игровую норму в кооперативной игре, уметь играть должны оба игрока. Самый лучший путь в получении рекорда — пригласить друга в игру, обучить его азам и играть с ним в ко-оп режим. Но если такого друга нет, можно играть по сети с кем угодно, однако неизвестно, кого можно встретить…
    Игровая норма есть. Так почему ее нельзя увидеть всем?
    В этом и заключается вся хитрость. Игрок не может узнать, попал ли он результатом выше игровой нормы или ниже. Он может лишь надеяться на это. Если игрок не смог достичь нужного результата, он будет знать, что в следующий раз не стоит допускать каких-либо ошибок.
    Именно на всем этом построено определение игровой нормы — реиграбельность и достижение высшей ступени в таблице рекордов.
    Впрочем, попытать себя в достижении рекордов можно уже сейчас, сыграв в демо-версию (3 уровня) или в бета-версию (все уровни, но игровая норма недоступна в уровне 12 и ко-оп 3 и 4). Пробуйте и комментируйте!
    С уважением, Silver Sword!

    Разработка продолжается — редактор был сильно изменен

  • 5th Декабрь 2012
  • Пора вести не только новостной блог, но и блог разработки, о не ведении которого целых двух с половиной лет я очень жалею
    Долгое было обновление, которым я занимался в последнее время. Целую неделю я сидел и думал над своими тупыми ошибками созданием нового формата для редактора. Дело в том, что старые (bnl и bel) имели множество недостатков, из-за которых формат не мог быть кроссплатформенным (были задействованы архивы) и был очень уязвимым, не смотря на всю его шифровку

    Так как старый формат теперь не нужен, я расскажу его принцип. Во временной папке для редактора создавались файлы, которые хранили определенную комнату (что применяется и сейчас, но для большего удобства). Комната хранилась в зашифрованном голом коде, который игра запускала, расшифровывая и вновь зашифровывая файл, чтобы злоумышленники не смогли взломать игру. После сохранения уровня в файл bel или bnl все комнаты объединялись в архив, который был запаролен и зашифрован. Открытие такого файла производило обратные манипуляции соответственно. Сейчас формат blf лишен многих манипуляций и уже не хранит голый код, лишь зашифрованные цифры и буквы
    Его преимущества достаточно просты:
    1. Будет работать на всех платформах, а не только на Windows
    2. Занимает меньше места на диске
    3. Не является архивом, все записано в один файл
    4. Улучшена защита — теперь игру невозможно взломать таким образом
    5. Является универсальным — его можно открыть как для редактирования, так и для игры
    Переписать игру под новый формат было делом несложным — несколько скриптов и все. Однако адаптировать их и заставить работать правильно заняло у меня половину времени
    Сам редактор тоже изменился — я перевел его в формат 720p, как остальную игру немного раннее. Однако сейчас это выглядит достаточно убого

    Несмотря на это, работает он вполне сносно. Следующую комнату я сделал за время написания этой небольшой статьи:

    И вышло достаточно неплохо
    Что ж, работа над новым форматом еще продолжается, хотя уже почти закончена. Скоро редактор будет более удобным и в нем появятся новые плюшки, но это пока только в планах. Закрытое бета-тестирование будет скоро доступным и вы сможете оценить работу нового формата
    С уважением, Silver Sword!
    P.S. Для проекта нужен художник, сами видите, что творится в редакторе в плане графики 🙂