Избранное

Все заметки

GitHub icon Github

Buffer icon Проекты

Обо мне

100 заметок с тегом

unity

Позднее Ctrl + ↑

Сервер на 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.

 Нет комментариев    113   6 мес   js   nodejs   unity   проекты   разработка   с#

Zombotron

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

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

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

 Нет комментариев    38   6 мес   unity   игры
 Нет комментариев    29   7 мес   unity

Плагины 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 с лигатурами. Нраица.

 Нет комментариев    39   7 мес   unity   ссылки

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

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

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

Смотреть тут

 Нет комментариев    155   8 мес   unity   игры   ссылки

Новости Unity с GDC 2019

Unity делает новый физический движок. Даже два :) Первый — Unity Physics, который будет дефолтным, с открытым исходным кодом, на C#. Второй — Havok Physics от Microsoft, платный. На хабре можно почитать статейку.

Call of Duty: Mobile сделала на Unity. Уже идёт пре-регистрация для андроида.

В Unity будет AR Foundation — объединенный API для упрощения разработки AR приложений и игр.

Неплохие анонсы надо заметить, будем надеяться, что нововведения не приведут к новым лагам в неожиданных местах :)

Adaptive Performance в Unity. Новая фича которая будет работать начиная с Samsung S10. Как я понял, «картинка» будет подстраиваться в зависимости от мощности устройства, чтобы не было лагов.

Unity будет поддерживать гугловскую игровую платформу — Stadia. Играть можно будет на любых устройствах, хоть с телевизора и из ютуба. Даже геймпад свой выпустили. Что это такое и как оно работает, на хабре. Если коротко — не всё так радужно.

Unity купила Graphine. Это разработчик ПО визуализации текстур в реальном времени. Позволяет использовать UHD текстуры, сжимать их и оптимизировать время загрузки.

DOTS. Unity подтягивает свои инструменты под одну технологию, data-ориентированную. Там и ECS, и C# Job System, и Burst Compiler. Havok тоже будет работать так. Ещё одна статья (перевод) на хабре.

Ну и чтобы два раза не вставать — исходники демки MegaCity. Развлекайтесь.

Новая демка от Unity

На GDC 2019 показали новое видео возможностей движка Unity: The Heretic. Выглядит оч круто. Позже напишу выборку, что ещё интересного анонсировали.

 1 комментарий    30   8 мес   unity   видео

Полезные ассеты и расширения #4

Hierarchy Icons

Позволяет быстро оценить и увидеть какие типы объектов находятся у вас на сцене и как они расположены в иерархии. Не нужно каждый раз смотреть в инспектор.

Selection History Navigator

Интересный ассет от автора предыдущего — позволяет быстро перемещаться по истории выделенных объектов. Есть хоткеи для Mac и Windows.

SoftMaskForUGUI

Да, снова «мягкая» альфа маска для UI :) Но этот бесплатный ассет примечателен тем, что работает внутри стандартной маски и поддерживает TextMeshPro.

ZombieObjectDetector

Ассет от Unity, позволяет диагностировать сцену и находить «зомби-объекты», которые где-то не очистились, зависли и не используются. Лог пишется в отдельный файл, который потом можно изучить.

Luna console free

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

Ещё про визуальное программирование в Unity

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

Ниже, небольшой обзор от Brackeys, а после него: самые популярные ассеты для визуального программирования и видеотуториалы.

FlowCanvas

Bolt

Playmaker

Behavior Designer

Amplify Shader Editor

Shader Graph

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

Ранее Ctrl + ↓