Флейм
GameDev.ru / Флейм / Форум / Что даёт такой стиль кода , в чем его плюсы или минусы ? (4 стр)

Что даёт такой стиль кода , в чем его плюсы или минусы ? (4 стр)

Страницы: 13 4 5 68 Следующая »
Panzerschrek[CN]Участникwww12 июля 201813:36#45
Kartonagnick
> попробуйте реализовать вариативный тип без union,
std::variant?
Ghost2Постоялецwww12 июля 201814:37#46
Kartonagnick

> попробуйте реализовать вариативный тип без union
Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение детерминировано? Не нужны они совсем.
Вот когда у тебя "орхетектура", то разумеется без вариативных типов данных не обойтись.
А без универсальных детекторов членов вообще никуда.

EugeneУчастникwww12 июля 201814:43#47
Ghost2
> Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение
> детерминировано? Не нужны они совсем.
> Вот когда у тебя "орхетектура", то разумеется без вариативных типов данных не
> обойтись.
Предложи хорошую замену. Кейс: хранить произвольные метаданные для игрового ресурса. Чтоб потом в любом месте игровой логики просто взять и сделать resource.GetMetadata("key")
return [](){};Участникwww12 июля 201814:47#48
Ghost2
> А без универсальных детекторов членов вообще никуда.
Серьезный топик, между прочим
https://www.eurogamer.net/articles/2015-06-01-lego-mmo-developmen… tion-software
Ghost2Постоялецwww12 июля 201815:00#49
Eugene

> Предложи хорошую замену
Базовый класс meta_t и визиторы.

EugeneУчастникwww12 июля 201815:01#50
Ghost2
> Базовый класс meta_t и визиторы.
Хм.. Не до конца понимаю.
Хранить каждую запись метаданных в виртуальном классе?
KartonagnickЗабаненwww12 июля 201815:07#51
Eugene
> Хранить каждую запись метаданных в виртуальном классе?

сделай через жепу, окончательно все переусложнив,
лишь бы не заюзать простенький вариант.

KartonagnickЗабаненwww12 июля 201815:08#52
Panzerschrek[CN]
> std::variant?
до до. можно даже рантаймовый.
KartonagnickЗабаненwww12 июля 201815:08#53
Ghost2
> Зачем нужны вариативные типы, когда архитектура прозрачна, а поведение
> детерминировано?
что бы не делать через жопу со всеми этими визиторами и прочей ненужной хренью.
Ghost2Постоялецwww12 июля 201815:26#54
Eugene

> хранить произвольные метаданные для игрового ресурса
Что такое "произвольные данные"? Мне очень хочется увидеть пример таких данных.

> Хранить каждую запись метаданных в виртуальном классе?
Должен быть класс для pod'ов, где будут, собственно, pod'ы. Как раз в union.
И все остальное, если оно вообще нужно. Да, как виртуальные классы.

Kartonagnick

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

EugeneУчастникwww12 июля 201815:29#55
Ghost2
> Что такое "произвольные данные"? Мне очень хочется увидеть пример таких данных.
Число. Строка. Вектор (математический). Кватернион, матрицы. Вектор (с++). Мапа. Штук 20 типов наберется, треть не POD-ы.

Правка: 12 июля 2018 15:30

Ghost2Постоялецwww12 июля 201815:49#56
Eugene

> Штук 20 типов наберется, треть не POD-ы.
Мне как раз был интересен пример не-pod'ов.

EugeneУчастникwww12 июля 201815:57#57
Ghost2
> Мне как раз был интересен пример не-pod'ов.
Строки, вектора, мапы. Это основное.
Да, я хранил в метаданных ресурса много разных (но специфических) вещей, потому что это удобно.
Последнее, что я использовал — мапа разнотипных векторов: вектор с векторами (float3), вектор с кватернионами, вектор со скалярами.
Со стороны кода это выглядело как VariantMap с VariantVector, каждый из которых со своим наполнением.

Правка: 12 июля 2018 15:59

Ghost2Постоялецwww12 июля 201816:16#58
Eugene

> Строки, вектора, мапы. Это основное.
Если они immutable, то все это реально можно сделать pod'ами.
Если должны быть mutable, то это плохо подготовленные ресурсы.

> мапа разнотипных векторов
Под не-pod'ами я понимаю jackalope с картинки Суслика. Конкретно - нечто, имеющее полиморфное
поведение. Пока ты привел только сложные, но фиксированные на момент загрузки типы.

EugeneУчастникwww12 июля 201816:25#59
Ghost2
> Под не-pod'ами я понимаю jackalope с картинки Суслика
Ну извините...

> Пока ты привел только сложные, но фиксированные на момент загрузки типы.
О да, все на 100% фиксированное.
Вообще до моих изменений вариант сам был на 100% фиксированный, с набором из пары дюжин типов.
Виртуальность мне пришлось засунуть, потому что я хотел хранить в варианте произвольные типы. Не для метаданных ресурсов. В первую очередь для генерик коллекций типа behavior tree blackboard.

Страницы: 13 4 5 68 Следующая »

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

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