LTA : Переделать все, чтобы работало точно так же
Привет! Это микро-апдейт по моей космической игре.
Сначала я думал, что сделаю одноэкранную игру за несколько часов и успокоюсь на этом. Но со временем втянулся, стал добавлять новые фичи. Делал, как получилось и особо не напрягался, что называется работал реактивно.
Если интересно, о какой игре идет речь, посмотрите другие мои посты. Там есть записи геймплея.
Из такого развлечения на вечер игра превратилось в развлечение на много вечеров с перспективой когда-то сделать нормальный играбельный билд:)
К чему я веду? К тому, что наступил момент, когда нужно сделать новый шаг в отношениях с проектом - задуматься об архитектуре. Этим я сейчас и занимаюсь. Так как программист я такой себе, слова вроде Масштабируемость, Гибкость ид были совсем не про мои работы. Я попросил о помощи Сашу, он рассказал, как можно организовать данные и взаимодействие между сущностями в игре. Довольно терпеливо рассказал, спасибо ему за это:) Ведь тупых вопросов я задал немало.
Таким образом с прошлого раза игра визуально и геймплейно практически не поменялась, так как в основном все изменения внутри кода.
Сейчас я занят тем, что полностью переделываю подход к генерации планет в игре. Если раньше планеты генерились на ходу, и данные о планетах содержались раздроблено - каждая планета содержала информацию о себе. Из-за этого было неудобно сделать даже радар - приходилось искать каждый объект для отображения на радаре отдельно, так как их ничего не объединяло.
Но теперь данные о планетах (и о всех остальных объектах в игре) генерируются до старта игры, сохраняются, и уже потом на их основе будет строиться игровой мир.
Все, что есть на данный момент - это логи, которые показывают, что планеты успешно сгенерировались и к каждой из них есть доступ.
И это только планеты, а я губу раскатал еще на очень много сущностей в игре. Впереди долгий путь, в котором придется подкачать свои скиллы разработчика. Звучит не очень весело, но я уверен, что оно того стоит и результат в итоге будет хорошим :)На сегодня у меня все, спасибо за внимание!
На картинке - лог с генераций планет и схема наследования классов, в которых будет содержать слой данных игры и слой геймплея.
Подробнее
• • publl c EntityData data {get;prrvate set; > public void InitfEnotyOata data) {this.data = data; public int Id {get;} public Enum Type {get;} public abstarct void lnit(string data); public float radius; public float mass; public override void Initfstring data); public PlanetData plateData => data as PlanetData; DamageData HeatDamage ExplossiveDar abstarct EntityData PlanetData PlanetBase m ihlir 1 puuiiL L i Lriaiiciudia etcPIateData => planetData 1 as ETCPIanetData; \ / / Z.,/J y f ; '
unity,Unity3D,геймдев,Игры,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,космос,Инди игры,нейросети,MidJourney
А потом когда ты сделал наконец как хочешь, оно начинает баговать.