#блог

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

Избранное

Все заметки

GitHub icon Github

Buffer icon Проекты

Обо мне

Xcode и место на диске

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

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

~/Library/Developer/Xcode/

Список что удалять: https://stackoverflow.com/a/40327522/7500489

Удалил у себя около 100 Гб о_О

 Нет комментариев    38   16 дн   ios   mac

Crop и scale текстур в Unity

Понадобилось делать простой кроп и ресайз картинки в Unity, но пространство имен System.Drawing.Imaging недоступно. Поэтому, чтобы изменить размер или вырезать часть из исходного изображения, все операции пришлось делать через Texture2D.

Демка и исходники на Github.

Ссылка на Github

 1 комментарий    53   1 мес   git   проекты

Backstage WWDC 2019

Вернулся из Сан-Хосе, был на WWDC 2019, хотелось бы поделиться некоторыми деталями от участника.

В марте «выиграл в лотерею» билет на WWDC и начал оформление доков. Об этом можно написать отдельный пост, если интересно, как сейчас в России получить американскую визу (не быстро, но может повезти). Всё успел, в конце апреля уже была готова виза :)

Три перелёта и я в Сан-Хосе. Сама конфа проходила в McEnery Convention Center, в центре города. Как пишет википедия, Сан-Хосе третий по численности населения в штате, после Лос-Анджелеса и Сан-Диего и десятый в США, а так и не скажешь О_о

Регистрация, получения бейджика, подарков и гоу ту презентация. Начало выглядело как-то так:

Вообще, уровень организации конференции просто супер! Всё очень чётко: сессии, доклады, свет, звук, работа волонтеров, приложение с расписанием и новостями, лаборатории, еда/напитки, всё работало, как часы. Было пару раз когда у докладчиков что-то не компилировалось или не получалось подключиться, но на этот случай были записаны специальные ролики в симуляторе с «нормальной» работой приложения (видимо ранее были прецеденты).

Про саму презу Keynote, думаю особого смысла нет говорить, все всё уже двадцать раз рассказали в подробностях. После, когда смотрел запись, не нашёл на ней как зал смеялся после объявления цены на подставку для нового Mac Pro, это было громко, видимо такие звуки приглушают :)

После Keynote, Тим который Кук, вышел к прессе показать новые возможности AR. Выглядело это вот так:

В холле, между докладами обычно очень людно, но это только в первый день:

Надо сказать, что очереди были везде, из-за большого количества участников: на вход, на доклады, в WWDC Store была отдельная очередь которая начиналась далеко на улице:

После входа в сам магазин, на покупку было ещё 8 очередей с двух сторон, но двигались они достаточно быстро, хотя может мне повезло. Из ассортимента: майки ($35), кепки ($40), свитера ($60), наушники, переходники, зарядки и т. д.

У всех были бейджи, даже у собак :)

Не попал на Bash в четверг :( Был в это время в Сан-Франциско. По фоткам было классно. Жаль конечно...

И немного про доклады. Их было много и темы самые разные. Каждый день с 9 до 17. Много было про SwiftUI и как его использовать, про AR, новые возможности Xcode и iOS 13. На все естественно не было возможности попасть, потому что они шли одновременно в трех залах. Но потом обязательно посмотрю записи.

Ну а сам Сан-Хосе так себе, по сравнению с Сан-Франциско :) Но всё равно очень красиво и интересно.

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. На мой взгляд очень достойно. Графика, музыка, анимации, всё на уровне. Есть косяки всякие мелкие, но это ж не релиз, так что буду следить. В ВКонтакте есть официальная группа и сайт ещё.

 Нет комментариев    17   4 мес   unity
Ранее Ctrl + ↓