Как стать автором
Обновить
45
0
Артем Навроцкий @Bozaro

Программист

Отправить сообщение

У нас получился следующий алгоритм:


  • blueprint-ы всегда редактирует кто-то один;
  • избегаем blueprint-ы с логикой (прототип в blueprint, потом переносится в C++);
  • стараемся blueprint-ы использовать только как dataonly.

При этом бинарные формат имеет еще одну проблему: там лежит много мусора, который никто не видит.


К примеру, я бы предпочёл видеть за пределами ассетов:


  • предрасчитанное освещение карты;
  • предрасчитанный навигационный граф;
  • скомпилированный байт-код blueprint-ов.

Из-за подобного мусора не только сильно увеличивается размер исходных ресурсов, но и появляются паразитные изменения в файлах, которые меняться не должны.


Утилиты просмотра и слияния изменений, которые пишут Epic Games проблему не решают:


  • Они не показывают всю картину. Два визуально одинаковых ассета могут иметь разное поведение (например: https://udn.unrealengine.com/questions/271376/ue410-incorrect-asset-loading-in-cooked-game-data.html);
  • Они полагаются на то, что ассет можно распарсить текущей версией редактора.
  • Они не существуют отдельно от редактора. К примеру их проблематично использовать в bash-скриптах.

Мне довелось работать с:


  • CryEngine
  • RenderWare
  • Unity
  • UnrealEngine

В Unreal Engine лично меня расстраивает их приверженность бинарному хранению данных.
Причем во всем:


  • Файлы перевода;
  • BluePrint-ы, включая Data-only.

Это сильно мешает использованию веток при разработке.


К сожалению, сами EpicGames проблемы в этом не видят, и от того ситуация вряд ли скоро изменится :(


А в остальном — это лучший движок, с которым мне приходилось работать.

Я бы не стал полагаться на SO_KEEPALIVE. Там таймаут порядка 2-х часов.
В моей практике был прецедент: между серверами, которые держали неактивное соединение, находился statefull firewall и через час данные переставали через него проходить, хотя формально с обоих сторон соединение открыто.

Насколько я помню, как минимум под Linux вечно соединение без данных жить не будет.
Оно схлопнется, когда истечет параметр net.netfilter.nf_conntrack_tcp_timeout_establishe (по умолчанию: через 5 суток).

В Москве есть две "улицы 8 Марта". Одна из них ранее была в поселке Липки, но теперь он часть Москвы. Название улицы при этом не изменялось.


Так же в Москве "улица Станиславского" несколько переместилась в пространстве:


  • в 1994 улица Станиславского была переименована в Леонтьевский переулок;
  • в 2005 Малая Коммунистическая улица была переименована в улицу Станиславского.

Когда у меня мой бложик похакали, я почесал репу и переделал его на Hugo (благо динамический контент на нём не требовался).


В результате удалось избавиться от CMS, PHP и MySQL. Остался только Linux и nginx.

Да, я постоянно путаю LE и BE :(
Порядок сортировки сохраняется для UTF-8 и UTF-16BE.

Важная особенность UTF-8 и UTF-16LE: при побайтовом сравнении Unicode-строки не меняют свой порядок.

Windows, к примеру, позволяет создавать файлы, которые могут содержать не корректную UTF-16 последовательность.
Из-за этого, в частности, родилось надмножество над UTF-8 для кодирования таких последовательностей с замечательным названием WTF-8: https://simonsapin.github.io/wtf-8/

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

Глубоко копаете. Попробуйте просто поставить Microsoft Visual Studio 2010 на Windows 10.
Получите массу удовольствия.

В TreeSize pacman-ов нету :(

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


Так же надо отметить, что совместимость так же требует сохранения старых проблем.
К примеру:


  • ограничение на длину пути 260 байт;
  • ограничение на длину командной строки 4096 байт;
  • в Windows до сих пор нет единого стандарта передачи аргументов командной строки (все аргументы передаются в одной строке и зависит от компилятора, как он их разберет на части, см. сигнатуру метода https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682425(v=vs.85).aspx);
  • cp1251, cp866, недо-utf-16 в одной системе одновременно.

При этом, к примеру, реализация стандартного режима китайского ввода (https://ru.wikipedia.org/wiki/IME) с каждой версией (Windows XP, Windows Vista, Windows 7, Windows 8) начитает вести себя на уровне API по-другому.

Проблему постоянного копирования данных решали в рамках реализации Cap’n Proto (https://capnproto.org).

Я не понял претензию к строкам.
Предложение хранить строки в национальных кодировках а-ля CP-1251 порождает гораздо больше проблем, чем решает.

А за счет чего в такой ситуации обеспечивается безопасность работы с указателями?

В D, если я правильно понимаю, активно используется GC. И это ставит крест на многих областях применения, ради которых используют C/C++.

Проблему с JMX можно решить завернув его в JSON на стороне Java: https://jolokia.org/

Судя по тексту, это цифры за 2015 год.
Я так понял, что в 2010 было где-то 39% и 33%.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность