А еще на Siemens были свои идентификаторы кнопок, из-за чего в версиях игр для других телефонов невозможно было нормально использовать управление. Помню, я потратил достаточно времени, чтобы написать патч, который перемапливает клавиши под Nokia или какой-то другой стандарт.
Делал себе схожие настройки и столкнулся с проблемой: запросы на помеченные сайты иногда уходили с задержкой.
Чтобы это исправить, необходимо либо отключить FastTrack в Firewall -> Filter Rules (тогда будут проседания производительности), либо провести дополнительные настройки:
1. В Firewall -> Mangle дополнительно создать правило вида:
Отвечу как человек, перешедший (с кучей ругани) с кастомного движка на Unity.
1 Баги
В Unity много багов. Очень много. Эти баги не фиксятся годами. «Комунити из 100к юзеров» тут играет отрицательную роль: нужно больше времени на обработку сотен репортов от юзеров, по делу и не очень. Если у вас нет $100K для приобретения исходников движка или спеца по реверсингу, вы обречены. Если не верите, попробуйте свернуть игру в Hearthsone (AAA-игра от Blizzard на Unity) на iOS-устройстве, рвзверните и посмотрите на белые квадраты вместо текста.
2 Доп инструменты
Используя Unity, вы получаете набор генерализованных тулзов. Да, это классно для простых задач, но для реализации сложных штук вам обязательно понадобится собственный инструментарий. И когда вы напишете его поверх Unity, а там что-то упадет, закрыв за собой весь редактор, вы будете долго ругаться. У нас не раз терялись изменения в редакторе уровней из-за подобных проблем.
3 Новые фичи движка
Программисты на Unity привыкли искать готовые решения в Asset Store. Эти решения в 50% случаев не работают, а в 90% случаев работают не так, как надо.
Пример. Не далее как неделю назад прикручивал логин через Google Play Games, нашелся стандартный плагин. Одним из требований гейм-дизайнеров являлся тихий логин на старте без показа попапов. Каково же было мое удивление, когда вызов метода silentSignIn() показал мне окно с подтверждением авторизации! При этом код, который я несколько лет назад лично писал для проекта на кастомном движке, работает корректно до сих пор. В итоге я потратил несколько дней на то, чтобы отказаться от стандартного решения в пользу кастомного.
Что касается производительности, с ней в Unity все ужасно. Многие решения делаются на скорую руку, лишь бы успеть за рынком. Если не верите, попробуйте глянуть в дизассемблированный код, там много интересного.
4 Кроссплатформенность
Как ни странно, возникают серьезные проблемы при выходе новых платформ. Когда я портировал игру на Nintendo Switch, версии Unity под нее отсавали от основного релиза на пару месяцев, крашились при любом удобном случае, а 50% функциональности движка в принципе не работала (и не работает до сих пор). В итоге дошло до того, что мне пришлось патчить скодегененный il2cpp-код, иначе игра не запускалась в принципе (это решение так и ушло в продакшн). И тут опять мы возвращаемся к проблеме $100K.
5 Сотрудники
Я пособеседовал нескольких Unity-программистов. Так вот, их уровень порой просто за пределами добра и зла. Часть людей хочет около 150-200к, но даже не представляет, что есть асимптотика и чем структуры отличаются от классов. Доступность движка для новичков ведет к подавляющему снижению общего уровня грамотности.
А еще на Siemens были свои идентификаторы кнопок, из-за чего в версиях игр для других телефонов невозможно было нормально использовать управление. Помню, я потратил достаточно времени, чтобы написать патч, который перемапливает клавиши под Nokia или какой-то другой стандарт.
Чтобы это исправить, необходимо либо отключить FastTrack в Firewall -> Filter Rules (тогда будут проседания производительности), либо провести дополнительные настройки:
1. В Firewall -> Mangle дополнительно создать правило вида:
/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=new \
dst-address-list=rkp new-connection-mark=connection_rkp passthrough=yes
2. В Firewall -> Filter настроить правило для FastTrack:
/ip firewall filter
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-mark=!connection_rkp connection-state=established,related
После этого маршруты через VPN и FastTrack будут уживаться вместе.
Кстати, удобно использовать Address List, туда можно заносить доменные имена, которые будут резолвиться при запуске.
Для DNS рекомендую включить DoH, который стал доступен в 6.47.
1 Баги
В Unity много багов. Очень много. Эти баги не фиксятся годами. «Комунити из 100к юзеров» тут играет отрицательную роль: нужно больше времени на обработку сотен репортов от юзеров, по делу и не очень. Если у вас нет $100K для приобретения исходников движка или спеца по реверсингу, вы обречены. Если не верите, попробуйте свернуть игру в Hearthsone (AAA-игра от Blizzard на Unity) на iOS-устройстве, рвзверните и посмотрите на белые квадраты вместо текста.
2 Доп инструменты
Используя Unity, вы получаете набор генерализованных тулзов. Да, это классно для простых задач, но для реализации сложных штук вам обязательно понадобится собственный инструментарий. И когда вы напишете его поверх Unity, а там что-то упадет, закрыв за собой весь редактор, вы будете долго ругаться. У нас не раз терялись изменения в редакторе уровней из-за подобных проблем.
3 Новые фичи движка
Программисты на Unity привыкли искать готовые решения в Asset Store. Эти решения в 50% случаев не работают, а в 90% случаев работают не так, как надо.
Пример. Не далее как неделю назад прикручивал логин через Google Play Games, нашелся стандартный плагин. Одним из требований гейм-дизайнеров являлся тихий логин на старте без показа попапов. Каково же было мое удивление, когда вызов метода silentSignIn() показал мне окно с подтверждением авторизации! При этом код, который я несколько лет назад лично писал для проекта на кастомном движке, работает корректно до сих пор. В итоге я потратил несколько дней на то, чтобы отказаться от стандартного решения в пользу кастомного.
Что касается производительности, с ней в Unity все ужасно. Многие решения делаются на скорую руку, лишь бы успеть за рынком. Если не верите, попробуйте глянуть в дизассемблированный код, там много интересного.
4 Кроссплатформенность
Как ни странно, возникают серьезные проблемы при выходе новых платформ. Когда я портировал игру на Nintendo Switch, версии Unity под нее отсавали от основного релиза на пару месяцев, крашились при любом удобном случае, а 50% функциональности движка в принципе не работала (и не работает до сих пор). В итоге дошло до того, что мне пришлось патчить скодегененный il2cpp-код, иначе игра не запускалась в принципе (это решение так и ушло в продакшн). И тут опять мы возвращаемся к проблеме $100K.
5 Сотрудники
Я пособеседовал нескольких Unity-программистов. Так вот, их уровень порой просто за пределами добра и зла. Часть людей хочет около 150-200к, но даже не представляет, что есть асимптотика и чем структуры отличаются от классов. Доступность движка для новичков ведет к подавляющему снижению общего уровня грамотности.
И да, в Unity нет нормальной доки.
Как-то раз в конторе, где я работал, была проблема с очень странным поведением игрового персонажа. Выяснилось, что причиной этого был следующий код: