Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 February 26

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
и это проблема
источник

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
я только начинаю разбиратся с растом и вижу вот эти преграды и задаю себе вопрос - если я продолжу на нем писать не обнаружу ли я себе по ушы в таких вот костылях или это лишь пары специфичных моментов языка
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
SET001
проблема в том что я идеологически вижу как правильно должно быть но вынужден делать по другому не потому что нет нужды делать правильно а потому что методами языка я не могу этого реализовать
Нету смысла делать архитектуру ради архитектуры, если она не решает никаких проблем
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
Я не вижу никаких весомых преимуществ от подхода, который ты представляешь
источник

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
но я теперь понимаю что если бы она тут и сейчас что-то реально решала - это было бы не реализуемо
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
SET001
но я теперь понимаю что если бы она тут и сейчас что-то реально решала - это было бы не реализуемо
Вот то что Владислав сказал. Но при этом даже если ты хочешь сделать архитектурно, то выход есть - компонентгруп делает ровно то что тебе нужно.
источник

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
а это ведь классический случай - объявить массив чего-то там, заполнить его в одном месте и передать в другому, абстрагируясь от содержания и последующих действий
источник

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
Вот то что Владислав сказал. Но при этом даже если ты хочешь сделать архитектурно, то выход есть - компонентгруп делает ровно то что тебе нужно.
ну я посмотрю еще компонент груп
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
MyGroupOfComponents foo = json::deserialize();
foo.create(world);
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Литералли победа.
источник
2020 February 27

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikov
Я так и не понимаю, почему наивные перечисления прям столько ненависти собрали. Земерот живет со всякими

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, derive_more::From)]
pub enum Component {
   Pos(Pos),
   Strength(Strength),
   Armor(Armor),
   Meta(Meta),
   BelongsTo(BelongsTo),
   Agent(Agent),
   Blocker(Blocker),
   Abilities(Abilities),
   PassiveAbilities(PassiveAbilities),
   Effects(Effects),
   Schedule(Schedule),
   Summoner(Summoner),
}

fn add_component(parts: &mut Parts, id: Id, component: Component) {
   match component {
       Component::Pos(c) => parts.pos.insert(id, c),
       Component::Strength(c) => parts.strength.insert(id, c),
       Component::Armor(c) => parts.armor.insert(id, c),
       Component::Meta(c) => parts.meta.insert(id, c),
       Component::BelongsTo(c) => parts.belongs_to.insert(id, c),
       Component::Agent(c) => parts.agent.insert(id, c),
       Component::Blocker(c) => parts.blocker.insert(id, c),
       Component::Abilities(c) => parts.abilities.insert(id, c),
       Component::PassiveAbilities(c) => parts.passive_abilities.insert(id, c),
       Component::Effects(c) => parts.effects.insert(id, c),
       Component::Schedule(c) => parts.schedule.insert(id, c),
       Component::Summoner(c) => parts.summoner.insert(id, c),
   }
}


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

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Можно было бы решить, если бы варианты энума были бы типами.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Можно ж сделать тип под каждый вариант
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
polunin.ai
Можно было бы решить, если бы варианты энума были бы типами.
Это же только косметики немного наведет, но саму проблему необходимости вручную поддерживать несколько match'ей не уберет, нет?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А что именно должно не работать?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Также у опшна есть метод take который делает то, что ты делаешь реплейсом.
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
kvark: чего ты про это дело думаешь? https://twitter.com/flibitijibibo/status/1232793001388335104
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
oh no
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
oh no
источник

S

Safort in RU Rust GameDev — русскоговорящее сообщество
Выглядит как гемор.
источник