Comments 32
Соискатели, которых мы собеседовали, неплохо знали Unity, но плохо – C#.«Неплохо знали Unity» означает, что умеют в визуальный редактор?
Закрытая платформа. При возникновении проблем, решение которых зависит от Unity, у вас нет других вариантов, кроме как ждать нужного релиза.Не совсем правда. У них можно попросить внутренний билд, если не боитесь. Плюс, у них разработчики некоторые идут на контакт с радостью, так что проблему можно прям с ними обсудить.
+1
«Неплохо знали Unity» означает, что умеют в визуальный редактор?
Не только.
Не совсем правда. У них можно попросить внутренний билд, если не боитесь. Плюс, у них разработчики некоторые идут на контакт с радостью, так что проблему можно прям с ними обсудить.
Как было сказано выше в статье, у нас с Unity партнерские отношения, мы работаем с техподдержкой уровня Enterprise. Однако, с внутренним билдом часто возникают технические сложности, поэтому нам проще подождать релиза.
0
Вот и мы ждали-ждали, вышла 5.5.0, а там кое-какие вещи сломались. Заметили это уже после апдейта в сторах =/
0
Напишите пожалуйста какие конкретно вещи сломались в вашем случае
0
Там кое-какие щейдера поломались.
Но, что самое неприятное, странные вещи со скейлом произошли. Мы в этом месяце запустились на Facebook Gameroom, и вот там, в случае, когда игрок скейлит сам клиент перед запуском игры, нормально скейл не отрабатывает, координаты тачей ломаются, и перестаёт клавиатура работать. Плюс странная пикселизация наблюдается.
Но, что самое неприятное, странные вещи со скейлом произошли. Мы в этом месяце запустились на Facebook Gameroom, и вот там, в случае, когда игрок скейлит сам клиент перед запуском игры, нормально скейл не отрабатывает, координаты тачей ломаются, и перестаёт клавиатура работать. Плюс странная пикселизация наблюдается.
0
На самом деле интересно, и надеюсь что вторая часть действительно будет.
Плюс — интересно какой ЯП использовали для сервера?
Плюс — интересно какой ЯП использовали для сервера?
0
На сервере используется С#, соответственно у нас есть возможность частично шарить код между сервером и клиентом.
+1
Должен заметить такого рода статьи от Плариума радуют, очень мало в сети инфы о работе крупных проектов.
0
Если не затруднит, можно примеры кода?
0
Примеры какого именно кода интересуют?
0
Пример вот этого:
Далее указывается путь к Property в ViewModel в строковом виде, с которой GameObject должен связаться.
При Awake биндинг через ContextBox ищет в Context нужную ему Property по пути и, если находит, подписывается на её изменения.
При изменении значения Property во ViewModel UI тут же реагирует на эти изменения и отображает их в ассоциированной Label.
0
Сейчас поищем.
0
Если вас интересует реализация этого механизма, то показать мы его, к сожалению, не можем. Как и говорится в статье, для поиска необходимых Property используется рефлексия.
Пример использования Property в Context выглядит как-то так:
В UnityEditor в биндинге, который лежит в иерархии префаба AlertPopup, путь задаётся так как на картинке ниже, в соответствии с именем переменной.
![](https://habrastorage.org/r/w1560/files/541/c00/0c8/541c000c8fdd4f2bab7f53e36d804d02.png)
Пример использования Property в Context выглядит как-то так:
public class AlertPopupContext : Context<AlertPopupContextState>
{
public readonly StringProperty Message = new StringProperty();
protected override void Set()
{
Message.Set(State.Message);
}
}
В UnityEditor в биндинге, который лежит в иерархии префаба AlertPopup, путь задаётся так как на картинке ниже, в соответствии с именем переменной.
![](https://habrastorage.org/files/541/c00/0c8/541c000c8fdd4f2bab7f53e36d804d02.png)
0
Те в случае вычисляемых полей при множественных зависимостях и при последовательном изменении значений этих зависимостей в одном обработчике у вас лейбл будет перезаписан несколько раз с соответствующими gc memory allocation на строках?
+1
Хорошее замечание, если мы вас правильно поняли. Чтоб этого избежать, мы собираем все изменения и выполняем только самое последнее в конце кадра.
0
Вы взаимойдествуете с сервером по протоколу http? Никаких сокет-соединений? Что ж это за реалтайм такой, опишите подробней?
0
http с keep-alive, по сути, тоже самое, что и raw socket. Только лишних заголовков много. Если сообщения отправляются только в одну сторону, то вполне жизнеспособно.
0
WWW в юнити (а в статье указан именно он) раньше принудительно вырезал keep-alive и еще кучу заголовков, как сейчас — без понятия, но не думаю, что поведение сильно изменилось. Возможно новый вебреквест из HLAPI уже умеет такое.
0
Мы для запросов к API используем UnityWebRequest с keep-alive. Работает отлично. Основное соединение с сервером через LLAPI. С WWW и других проблем много было. Благо сейчас есть хорошая замена.
0
Вы видимо не доконца прочитали, в статье написано так:
Все команды являются обертками над HttpWebRequest и выполняются асинхронно (Asynchronous Programming Model). Для WebGL-билда команды являются обертками над Unity WWW классом, который выполняется через корутины. Для коммуникации с сервером данные сериализуются в JSON-формат.
0
Так это не я не до конца прочитал, видимо. Еще раз тезисы: WebGL, WWW, нет поддержки Keep-Alive. Речь не про UnityWebRequest из новой сети, а про старый WWW — это 2 разных подсистемы.
0
Вы первую часть осознанно игнорируете?
Stormfall: Rise of Balur — мобильная игра.
Все команды являются обертками над HttpWebRequest
Stormfall: Rise of Balur — мобильная игра.
0
Эээ, еще раз прочитал — так вообще получается муть написана — javascript-обертки над браузерным HttpWebRequest нужны как раз только для WebGL (и будут работать только в нем). В чем смысл второй половины про WWW + коротины в WebGL?
0
Да, на https с long polling для некоторых запросов. Одна из следующих статей в этом цикле будет посвящена как раз работе с сервером, там будет все расписано подробнее, так что следите за обновлениями :)
0
Спасибо за цикл статей, очень интересно читать. Интернет наполнен туториалами для новичков, но вот таких действительно полезных статей, о том, как что устроено в реальном проекте — единицы. Есть вопрос про механизм биндингов: если в процессе рефакторинга кода решили переименовать у Tab поле Name в, допустим, Title, то как найти все GameObject-ы, которые подписаны на это поле, чтобы в строке-пути до Property тоже поменять на Title? Есть ли возможность делать это автоматически?
0
Sign up to leave a comment.
Особенности разработки мобильной MMO RTS. Часть 1