Войти
ПрограммированиеФорумОбщее

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

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

Delfigamer
> А чтобы быть программистом, надо обязательно где-то выучиться?
я все чаще начинаю думать, что именно так ... иначе такие клоуны встречаются ;)


#46
3:04, 1 июня 2018

gudleifr
> Про сиплюсплюсников слышали?
они еще не вымерли? говорят обитают где то в районе драйверов и не вылазять из этого уровня ..

#47
3:29, 1 июня 2018

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

#48
3:37, 1 июня 2018

Delfigamer
> Или в жопу геймплей, будем передавать текст по HTTP?
чет я не понял, byte занимает меньше места чем char ?

#49
3:46, 1 июня 2018

Delfigamer
> И нет встроенной поддержки для Lua, на котором пишется значительная часть моего движка.
поговаривают, что есть. Может быть врут.

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

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

#50
(Правка: 7:42) 7:41, 1 июня 2018

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 и перекомпилирует сам себя по ходу загрузки уровня?

#51
(Правка: 13:41) 13:34, 1 июня 2018

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

#52
(Правка: 13:38) 13:36, 1 июня 2018

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

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

#53
(Правка: 13:49) 13:45, 1 июня 2018

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

#54
(Правка: 13:55) 13:54, 1 июня 2018

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

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

#55
15:32, 1 июня 2018

tac
> Тут вот и можно придумать простенькую систему сохранения, например для всех
> объектов на сцене сохранить их координаты и по большому счету все, для 80%
> случаев, все остальные взять из дефолта /префабов/
Окей, а откуда мне брать префабы?

#56
15:39, 1 июня 2018

Delfigamer
> откуда мне брать префабы?
new AProjectile();

#57
(Правка: 16:01) 15:55, 1 июня 2018

tac
> new AProjectile();
tac
> префаб

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

#58
(Правка: 22:29) 22:18, 1 июня 2018

Delfigamer
> данные игры хранились отдельно от кода движка
нахера?

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

#59
(Правка: 22:26) 22:20, 1 июня 2018

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

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

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

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