#блог

об играх, разработке на Unity и личном опыте

Избранное

Все заметки

GitHub icon Github

Buffer icon Проекты

Обо мне

UnityMobileInput больше не нужен

Обновлено 16.05.2019
Свершилось. В новой версии Unity 2019.1 допилили поле ввода (InputField) в TextMeshPro.

Раньше эта галочка не работала и поле ввода всё равно появлялось.

Теперь дополнительное поле ввода не появляется на iOS и Android! Мой UnityMobileInput не особо-то и нужен, всё можно сделать «штатными» компонентами и оно будет работать как надо, вроде :) Там же есть и поддержка эмоджи.

UPD

Рано радовался, определять высоту экранной клавиатуры юнитеки так и не научились... Всё равно придётся использовать костыль, хоть и меньшего размера :)

Сервер на Node.js и клиент на Unity

Задумал я тут выложить на Github свою очередную поделку — простой сервер на Node.js и клиента к нему на Unity. Много раз сам гуглил различные библиотеки, пробовал, тестировал, пытался сам написать что-то (с моими познаниями в Node.js :), но потом подсмотрел как сделано у старого китайского Pomelo, который уже сто лет не поддерживается.

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

Опыта в Node.js у меня не очень много, поэтому я нагуглил такой фреймворк — Architect. Не знаю насколько это оправдано, но пока сделано с помощью него.

  • многопользовательский сервер для нереалтаймовых игр
  • отправка и получение команд и запросов (аналог JSON RPC)
  • поддержка SSL
  • основная часть на Architect
  • простое добавление команд: один файл = одна команда
  • работает с MongoDB

Команды (события)

public void TestCommand () {
    JsonObject param = new JsonObject();
    param["param"] = "value";
    _connector.Command("test-cmd", param);  
    // _connector.Command("test-cmd");     // without params
}

Чтобы «слушать» команды с сервера надо подписаться на команду (событие):

public void TestCommand () {
    _connector.On("test-cmd", OnTestCmd);  
    // _connector.Off("test-cmd", OnTestCmd);     // unsubscribe
}

void OnTestCmd (JsonObject result) {
    if (_connector.IsError (result)) {
        // handle error
        return;
    }
    // handle result
}

Запросы (RPC)

public void TestRequest () {
    JsonObject param = new JsonObject();
    param["param"] = "value";
    _connector.Request ("test-rqt", param, (result) => {
        // handle answer
    });   
    // _connector.Request ("test-rqt", OnTestRequest);          // without params
    // _connector.Request ("test-rqt", param, OnTestRequest);   // callback in external method
}

void OnTestRequest (JsonObject result) {
    if (_connector.IsError (result)) {
        // handle error
        return;
    }
    // handle result
}

На RPC запросы с сервера можно подписаться также как и на обычные команды. Отличие в том, на них надо обязательно «отвечать».

На сервере каждая команда находится в отдельном файле и экспортируется, как-то так:

module.exports = function (commander, message, imports) {
    if (!validate(message.data, commander.protocol.log)) {
        commander.sendError(message, "invalid_data");
        return;
    }
    ...
    commander.sendResponse(message, { result: "ok" });
};

Протокол сообщений можно легко переделать, добавить шифрование или свой какой-то формат, можно посмотреть в репе Pomelo, у меня будет также примерно.

Для создания простой многопользовательской онлайн игры — этого достаточно. Это будет такая демка, когда можно взять сервер и клиент, запустить и сразу увидеть как оно работает. Код будет полностью доступен, так что умеющие в Node.js и C#, смогут переписать мои «костыли» на свои :)

После тестирования и «боевой» проверки на игре, если всё получится, думаю сделать небольшой курс, где опишу, как на основе такой базы делать несложные онлайн игры. Но замечу ещё раз — НЕ реалтайм!

Stay tuned.

Zombotron

Недавно в Steam вышел новый Зомботрон. Если кто не играл в предыдущие части на флеше, то многое потерял :) Это 2D экшн про зомби, монстров и пришельцев с кучей оружия и взрывов. Поиграть в предыдущие части можно на официальном сайте.

В этот раз разработчик делал игру 3 года, один, на Unity. Издателем выступил Armor Games. Да, этот тот старый сайт с кучей флеш игр :)

У автора есть отличный сайт на котором он пишет (редко) про разработку, нового Зомботрона и другие свои игры. Есть что почитать. Ещё давно прочитал его перевод серии статей про многопользовательские игры. Ещё есть группа в ВК. Там же можно найти интересные заметки, например, про систему выпадения случайных вещей.

Партизаны

Почти год назад вышла статья на DTF про разработку игры «Партизаны». Это такой ремейк старых-добрых Commandos. И вот вчера разработчики выложили первое видео геймплея.

Игра делается на Unreal Engine, хотя сначала начинали на Unity. На мой взгляд очень достойно. Графика, музыка, анимации, всё на уровне. Есть косяки всякие мелкие, но это ж не релиз, так что буду следить. В ВКонтакте есть официальная группа и сайт ещё.

Как открыть онлайн кинотеатр

Недавно на Хабре, из песочницы, буквально на пару часов выплыла статья, про то, как один товарищ сделал свой «онлайн кинотеатр», хорошо, сайт для просмотра фильмов и сериалов, онлайн :) Её быстро заминусовали и автор убрал в черновики. Но прочитать и запомнить, самое интересное, я успел.

Так вот, чтобы открыть свой «онлайн кинотеатр» нужно зарегистрироваться в одном сервисе, получить токен и подгружать в IFRAME кино — всё (нет)! Это вроде как незаконно.

Кому интересно, можно по-изучать — http://docs.moonwalk.cc. Весь API отлично документирован.

Интересно, как с этим борются правообладатели...

Плагины VS Code для Unity

Уже довольно долгое время я пользуюсь VS Code и он, до сих пор меня не разочаровал :) Это отличный быстрый редактор с кучей разнообразных плагинов. Для работы с Unity использую вот эти:

Debugger for Unity

В общем-то, нет смысла придумывать сложное описание, обычный дебагер и он работает. Можно конечно отлаживать и через Debug.Log :) Можно, но не нужно.

C# FixFormat

Эта штука must have, сколько времени она сэкономила сложно посчитать. Форматирует C# код со всеми отступами и переносами. Товарищ Leopotam постарался.

C# XML Documentation Comments

Плагин для генерации XML комментариев, нужно ввести только 3 слеша и IntelliSense всё расскажет о методе или классе.

eppz! (C# theme for Unity)

Это не плагин, а тема оформления. Приятная цветовая гамма в пастельных тонах, для любителей тёмных тем.

Unity Code Snippets

Плагин с коллекцией Unity сниппетов. Позволяет быстро сгенерировать метод с параметрами.

А ещё, я поставил себе шрифт Fira code с лигатурами. Нраица.

Про Notion

Я давно слышал про Notion.so, и на VC.ru и в телеграмм-канале его дизайнера читал, зарегался давно, но всё никак попробовать времени не хватало.

Вообще, уже долгое время хочу систематизировать все свои записи, заметки, напоминания и списки в одном месте. Сейчас многое хранится в Pocket, Google Keep, Docs и Drive. Думал развернуть у себя что-то типа MediaWiki, DokuWiki, чтобы был поиск, вложенные страницы, таблицы и вот это вот всё. Но так до этого дело и не дошло. Зато, до Notion добрался.

Если коротко:

сначала не понятно и сложно, потом интересно и многообещающе :)

Это такой инструмент «всё в одном». Действительно, из-за того что возможностей много, не сразу понимаешь, что и как себе организовать, с чего начать. Разработчики это тоже понимают, поэтому у них есть несколько начальных шаблонов. Но никто вас не ограничивает в «творчестве», можно начинать и с чистого листа. Кроме того, появились уже сайты со сторонними шаблонами, которые можно легко к себе продублировать. Также, можно импортировать документы в разных форматах.

Планирую туда перенести базу знаний по своим проектам, также таблицы из Trello, списки задач и диздоки. Ну и личные всякие штуки. Есть мобильные приложения и проги для Windows и MacOS. Ещё удобно отправлять в Notion ссылку на какой-нибудь сайт/статью/видео через встроенную функцию «Поделиться» на Android или iOS, как я делал это с Pocket. Возможностей по внутренней организации и оформлению страниц — море.

Эта штука бесплатна для личного пользования с ограничением в 1000 блоков, всё что больше — платно, $4 в месяц. Если нужен доступ для нескольких пользователей, с обсуждениями и админскими опциями, то $8.

Было бы классно, если была self-hosted версия, как например DokuWiki или Gitlab, но пока отсутствует. Посмотрим, как быстро кончатся «бесплатные» блоки :)

128 книг по разработке игр и Unity

На Пикабу добрый человек раздаёт свою коллекцию книг по разработке игр, в PDF.

  • 128 книг. 2,08 Гб данных.
  • 95% на английском языке, 5% на русском.
  • 90% о разработке игр на Unity.
  • 10% о разработке в общем, геймдизайн, шейдеры, шаблоны проектирования, создание архитектуры проектов и т. д.
  • Лежит все на расшаренной папке Яндекс.Диска или Google.Drive

Смотреть тут

Ранее Ctrl + ↓