Войти
ФлеймФорумПрограммирование

Ошибки проектирования в UE4 (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
22:43, 24 окт. 2018

А зачем сериализация? Это частная проблемма, которая легко решается с помощью fwrite ну, или на крайняк - iostream.


#31
(Правка: 23:02) 22:57, 24 окт. 2018

Olaf85
JS и .Net применяется автоматическая сериализация/десериализация объектов для передачи данных по HTTP. Это простой, хотя и избыточный способ.

Применение подобного подхода в C++ затруднено ввиду отсутствия в оном таблиц метаданных. Да и избыточность протокола для игр противопоказана. Куда рациональнее вручную собирать двоичные пакеты в виде структур, содержащих только нужные данные, и кодировать в Base64 (при необходимости) для передачи.

Так что "недостаток" спорный, очень спорный.

#32
23:46, 24 окт. 2018

Olaf85
> А зачем сериализация?
  save/load игр
  replay с перемоткой
  сетевое взаимодействие
  AI
  автонастройка баланса
  автотестирование/генерация уровней

#33
0:25, 25 окт. 2018

Olaf85
> Это частная проблемма, которая легко решается с помощью fwrite ну, или на
> крайняк - iostream.
Нафига?! В UE для этого предусмотрены свои методы. Конечно, Adler их лучше не смотреть, а то он наверняка тут же проблюется и потом всю жизнь будет судорожно взргагивать, нечаянно припомнив.
Но они работают, и в общем-то с ними проблем у меня не было. Дохрена каких было, а с ними не было.

#34
(Правка: 2:29) 2:27, 25 окт. 2018

Adler
> save/load игр
> replay с перемоткой
> сетевое взаимодействие
их есть это искаропки в UE4
причём для Character последнее идёт уже с готовыми алгоритмами синхронизации

#35
2:28, 25 окт. 2018

Sh.Tac.
Какое там баундс у анрила? Мемори? CPU?

#36
(Правка: 2:52) 2:30, 25 окт. 2018

lookid
> Мемори? CPU?
сожрёт сколько дашь и ещё попросит : )
всё от проекта же зависит
вон на мобилки деплой есть, но я не пробовал

З.Ы. даже можно патчить
правда они там скромно пишут

Currently, distribution of the patches hasn't been resolved for all platforms

#37
2:35, 25 окт. 2018
а адлер все так и прячет в сових сообщениях картинко IP вычислители... мне так нравится их всегда находить )
вот ник можно забыть, а картинку не забудешь ни когда ), сделай уже шобы они не палились на мобилка и я забыл про них )
#38
8:31, 25 окт. 2018
Да, на мобилках она в полэкрана
#39
9:15, 25 окт. 2018

технотролль

#40
(Правка: 22:05) 21:55, 25 окт. 2018

Adler
> виртуальный деструктор прямо в корне иерархии и это не правильно, т.к это
> означает что UE4 скорее всего из коробки не дружит с обычными С++ структурами в
> плане сериализации
Это где же вы С++ структуры-то откопали? :) Структуры были есть и остаются тяжелым наследием Plain C. А посему стандарт С++ на эту тему четко определяет набор действий допустимый для структур в Plain Old Data формате, в том числе и сериализацию, и ограничивает эти действия для всех остальных не POD структур и классов. Другими словами POD-структура должна быть полностью совместима со структурой описанной на языке С и в числе всего прочего не должна использовать наследование. Следовательно, любой объект отнаследованный от UObjectBase, будь у того хоть трижды невиртуальный деструктор, не является plain-структурой и ее нельзя сериализовать никаким другим образом, кроме как определив метод или ф-ию которая последовательно запишет в поток каждое поле структуры по отдельности.

https://ideone.com/nzqVka

#41
(Правка: 14:21) 1:32, 26 окт. 2018

totoro
> Это где же вы С++ структуры-то откопали? :)
под "обычными С++ структурами" я имел ввиду любую структуру не наследующую UObjectBase.
под "не дружит" - не умеет на автомате сериализовать. например, если требует вручную каждое поле связывать с потоком/архивом/устройством - то значит не_умеет/не_дружит.

totoro
> Plain Old Data

думал ошибка, посмотрел стандарт, а там тоже самое. раньше до С++11 вроде POD расшифровывался как plain of data, не?

totoro
> которая последовательно запишет в поток каждое поле структуры по отдельности.
полем структуры обычно может быть что угодно.
задача крутого tool`а для сериализации - уметь сохранять/конвертировать/клонировать почти всё что угодно со всеми потрохами, в таком формате и ограничениях, которые накладывает контекст в котором делается вызов.
естественно в UE4 ничего подобного нет и не будет. спасает UE4 только тот факт, что такого tool`а сериализации похоже пока нет ни у кого :)

а ещё:

проблема UE4 в том, что ни одно поле не может быть наследником UObjectBase, то есть вот изобрёл кто-то свой крутой класс наследник actor`а, но не может сделать его полем структуры, даже если очень сильно захочет, т.к экземпляр такой структуры потом никак не создашь, если я всё правильно понял.

- trollface.jpg
#42
(Правка: 12:05) 11:50, 26 окт. 2018

Adler
> то есть вот изобрёл кто-то свой крутой класс наследник actor`а, но не может
> сделать его полем структуры, даже если очень сильно захочет
Ты сейчас только что соорудил абсолютно тотально некомпетентную чушь и должен прямо сейчас удалить аккаунт, выкинуть компьютер и идти до конца своих дней копать картошку, рефлексируя свою неописуемую тупость.
PROTIP: прежде чем с умным видом рассуждать в том что не понимаешь - надо хотя бы прочитать документацию.

#43
12:38, 26 окт. 2018

Nerdman
> PROTIP: прежде чем с умным видом рассуждать в том что не понимаешь - надо хотя
> бы прочитать документацию.

это он ещё не видел проперти :)

#44
13:50, 26 окт. 2018

Adler
> думал ошибка, посмотрел стандарт, а там тоже самое. раньше до С++11 вроде POD
> расшифровывался как plan of data, не?
не. думаю те кто вводил аббревиатуру знают английский, в отличие от)

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПрограммирование