Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / База данных игровых объектов: архитекстура системы сериализации и репликации произвольных объектов (4 стр)

База данных игровых объектов: архитекстура системы сериализации и репликации произвольных объектов (4 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
tacПостоялецwww1 июня 20183:01#45
Delfigamer
> А чтобы быть программистом, надо обязательно где-то выучиться?
я все чаще начинаю думать, что именно так ... иначе такие клоуны встречаются ;)
tacПостоялецwww1 июня 20183:04#46
gudleifr
> Про сиплюсплюсников слышали?
они еще не вымерли? говорят обитают где то в районе драйверов и не вылазять из этого уровня ..
tacПостоялецwww1 июня 20183:29#47
Delfigamer
> хранение игровых ресурсов - текстур, мешей, звуков и прочих ассетов - на
> жёстком диске
отлично,про файловую систему слышал? не пробовал ее использовать для этого?
tacПостоялецwww1 июня 20183:37#48
Delfigamer
> Или в жопу геймплей, будем передавать текст по HTTP?
чет я не понял, byte занимает меньше места чем char ?
skalogryzУчастникwww1 июня 20183:46#49
Delfigamer
> И нет встроенной поддержки для Lua, на котором пишется значительная часть моего движка.
поговаривают, что есть. Может быть врут.

Delfigamer
> Однако,
> Canonically, messages are serialized...
ну ты же создал своё описание. ты бы мог бинарный формат от pbuffers использовать.

Delfigamer
> По задумке, в моей системе форматы для RPC составляются в рантайме, с учётом текущего описания.
> Например, в ходе инициализации сессии, сначала явным сообщением вводится сокращение:
а это не обмен .proto файлами, в ходе инициализации сессии?
т.е. передать эти самые .proto один раз, а потом передаются данные в том же формате много раз.

DelfigamerПостоялецwww1 июня 20187:41#50
gamedevfor
> Если сделать всё через жопу то и бинарный формат не поможет достичь
> производительности по сети.
> Так что формат сообщений это низкоуровневая и преждевременная оптимизация.
Поэтому формат реализуется отдельно от редукции - чтобы можно было оптимизировать его отдельно, не затрагивая уже отлаженную редукцию и другие форматы.
Sh.Tac.
> дофига noexcept : )
Ref<> у меня используется в контейнерах, а при [[r::method]] от наличия/отсутствия noexcept зависит, заморачивается ли обёртка этого метода передачей исключений через языки.

tac
> > хранение игровых ресурсов - текстур, мешей, звуков и прочих ассетов - на
> > жёстком диске
> отлично,про файловую систему слышал? не пробовал ее использовать для этого?

Стоит ли? Ну давай попробуем.

Окей, смотри:
struct Location
{
  Vector3 center;
  Quaternion rotation;
};

class Actor: GCObject
{
  Location position;
};

enum class TeamIndex: int;

class AProjectile
{
  Vector3 velocity;
  GCPtr< Actor > shooter;
  TeamIndex team;
};
Какую функцию мне надо вызвать, чтобы сохранить инстанс AProjectile в файловую систему?

tac
> чет я не понял, byte занимает меньше места чем char ?
Двоичный формат занимает меньше места, чем XML. Ты не знал?

skalogryz
> поговаривают, что есть. Может быть врут.
> встроенной
А ещё она требует целую отдельную инфраструктуру, что для моего движка как-то уже слишком жирно.

skalogryz
> ну ты же создал своё описание. ты бы мог бинарный формат от pbuffers
> использовать.
В цитате я проблемы с форматом и описал - двоичный не удовлетворяет
> - - было бы неплохо, если бы ассеты можно было редактировать сами по себе, без реверс-инжиниринга форматов через код движка,
> - - было бы неплохо, если бы ассеты играли по-хорошему с системами контроля версий, типа git и svn,
, а текстовый -
> - - желательно, чтобы с выходом новой версии движка старые ассеты по-прежнему открывались,

skalogryz
> т.е. передать эти самые .proto один раз, а потом передаются данные в том же
> формате много раз.
И как ты себе представляешь этот процесс? Клиент принимает .proto, запускает protoc и перекомпилирует сам себя по ходу загрузки уровня?

Правка: 1 июня 2018 7:42

tacПостоялецwww1 июня 201813:34#51
Delfigamer
> Двоичный формат занимает меньше места, чем XML. Ты не знал?
я где то говорил о xml? эту хрень я даже не знаю зачем выдумали ... речь шла о тексте vs. бинарный код ... если ты используешь все 256 символов, которые кодируются 1 байтом, то капитан очевидность подсказывает, что выигрыша тв не получишь, и пересылай ты текст или байты, это проблема интерпретации. xml устраивает ненужную обертку, json более экономную вот и вся разница. я например, разделяю поля через таб и все дела .. если у тебя тот кто парсит, знает смысл того как было записано, все эти обертки нафиг не нужны, посылайсплошнымтекстомтолькознайгдезаканчиваетсяоднополеиначинаетсядругое

Правка: 1 июня 2018 13:41

tacПостоялецwww1 июня 201813:36#52
Delfigamer
> Какую функцию мне надо вызвать, чтобы сохранить инстанс AProjectile в файловую
> систему?
Delfigamer
> хранение игровых ресурсов - текстур, мешей, звуков и прочих ассетов - на
> > > жёстком диске
а класс, который ты описал, это текстура, меш или звук?

что за глупое слово инстанс? объект класса по русски это называется

Правка: 1 июня 2018 13:38

tacПостоялецwww1 июня 201813:45#53
Delfigamer
> сохранить инстанс AProjectile в файловую систему?
правильный вопрос зачем это делать? если для востановления состояния игры на какой то момент, то уж точно не нужно сохранять все свойства объекта. Тут вот и можно придумать простенькую систему сохранения, например для всех объектов на сцене сохранить их координаты и по большому счету все, для 80% случаев, все остальные взять из дефолта /префабов/

Правка: 1 июня 2018 13:49

skalogryzУчастникwww1 июня 201813:54#54
Delfigamer
> И как ты себе представляешь этот процесс? Клиент принимает .proto, запускает
> protoc и перекомпилирует сам себя по ходу загрузки уровня?
А в Lua ничего такого встроенного нет?
Мне казалось что есть (вспомнить ВоВ с луа скриптованием)

Ну если нет, то действительно использовать не получится

Правка: 1 июня 2018 13:55

DelfigamerПостоялецwww1 июня 201815:32#55
tac
> Тут вот и можно придумать простенькую систему сохранения, например для всех
> объектов на сцене сохранить их координаты и по большому счету все, для 80%
> случаев, все остальные взять из дефолта /префабов/
Окей, а откуда мне брать префабы?
tacПостоялецwww1 июня 201815:39#56
Delfigamer
> откуда мне брать префабы?
new AProjectile();
DelfigamerПостоялецwww1 июня 201815:55#57
tac
> new AProjectile();
tac
> префаб

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

Правка: 1 июня 2018 16:01

tacПостоялецwww1 июня 201822:18#58
Delfigamer
> данные игры хранились отдельно от кода движка
нахера?

п.с. да ладно??? ты это типа всех решил своим движком осщастливить? ты бы для начала хоть одну игру сделал бы

Правка: 1 июня 2018 22:29

tacПостоялецwww1 июня 201822:20#59
Delfigamer
> Если у меня пятьдесять разных проджектайлов - надо на каждый наследовать свой
> класс, только чтобы поменять дефолты в текстурах и хитбоксах.
какойто бред, по русски, какой смысл этого класса? я ваш гавняноанглийский не понимаю ...

если что то надо наследовать, то это уже другая сущность

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

Правка: 1 июня 2018 22:26

Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр