Size: a a a

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

2020 February 26

S

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

S

SET001 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),
   }
}


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

S

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

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 — русскоговорящее сообщество
factories
источник

S

SET001 in RU Rust GameDev — русскоговорящее сообщество
логика самого билда вынесена из префабов, префабы просто формируют данные
источник

S

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

S

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

S

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

V

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

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
Не очень рационально тут себя таким образом ограничивать
источник

S

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

V

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

S

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

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
SET001
да, потому что так у меня методы спекса будут в одном билдере который примет префаб и все сделает. а так методы спека будут в самих этих префабах везде
А почему это плохо? Какую проблему в данном случае решит абстракция?
источник

MS

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

MS

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

S

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