Как я делаю архитектуру своей игры? Часть 1.

  Рет қаралды 3,289

xk vods

xk vods

Күн бұрын

Пікірлер: 24
@timurnikolaev1438
@timurnikolaev1438 2 ай бұрын
нужно еще видео по аритектуре!
@ravenempty3562
@ravenempty3562 2 ай бұрын
Ого, еще ж не новый год, чем заслужили такой подарок Спасибо большое
@insanevirtuality
@insanevirtuality 2 ай бұрын
Блин, так-то прикольная тема. Я в годо однажды пытался архитектурно сделать боёвку Darkest Dungeon. Но я подошёл иначе, использую Command и Memento через MVC. У меня были Command, которые игроки или AI могли отправлять в Controller, в результате чего создавались CombatEvent'ы, которые уже как-то изменяли модель. Прикол в том, что Command можно передавать по сети (мультиплеер (нет)) и все CombatEvent и Command имеют undo() и redo(), что позволяет туда-сюда возвращаться по ходам и в целом делать реплеи игр. Все ивенты захватывались вьюхой и она уже решала, как что рендерить -- так называемое бутылочное горлышко. Что я в итоге получил хотя и работало, но мне не понравилось. Я уверен, что можно сделать лучше, но пока имею что имею.
@Lucio11a
@Lucio11a 2 ай бұрын
Согласен, Юнитаски огонь. Долго время писал на корутинах (собственно и сейчас изредка их использую в чужих проектах, где по какой-то причине нет юнитаска). Но для себя, по большей части перешел, именно на юнитаск. Очень удобно и не надо насиловать апдейт))
@dmytromahas9207
@dmytromahas9207 Ай бұрын
Согласен, юни-таски меньше нагружают железо плюс запустить их можно с любого класа а не только монобеха как это с корутинами
@boost_456
@boost_456 Ай бұрын
@@dmytromahas9207 единственный минус тасок: долго доходит понимание, как работают токены отмены и как правильно их юзать
@f0kes32
@f0kes32 2 ай бұрын
рефлексия это плохо. магия это плохо. все должно быть explicit. ну, как мне кажется, может вы меня переубедите?
@717pixels9
@717pixels9 2 ай бұрын
Мне как разработчику с низким уровнем программирования это очень интересно, хотя и не понятно. Вот в этом примере с камерой, отлично, можно запустить код из любого места. А как потом определить, кто там вертит камерой, когда через месяц понадобится это отключить? Моя интуиция начинающего разработчика говорит, что нужно сделать отдельный скрипт CameraRotator и прицепить к камере, тогда его легко можно найти либо поиском, либо в самом проекте.
@xkoster_vods
@xkoster_vods 2 ай бұрын
ctrl-shift-f поиск Camera.main / G.camera и смотришь кто ее трогает, или смотришь все обработчики OnStartLevel или куда там был помещен код с камерой 😁 Архитектура игры это не про то чтобы делать код который невозможно физически написать так чтобы он выстрелил в ногу, это про то чтобы сделать это было сложней, найти источник проблемы было проще, и сайд эффекты изменений были ограниченны.
@alfarabius
@alfarabius 2 ай бұрын
Предположу, что скрипт с камерой должен лежать в папке Scripts/Camera/OnEncounterReady
@717pixels9
@717pixels9 2 ай бұрын
@@alfarabius Да, но имхо не так важно, где лежит, главное что искать его я начал бы ткнув на камеру и посмотрев, что к ней прицеплено.
@alfarabius
@alfarabius 2 ай бұрын
@@717pixels9 Я к тому, что хранить скрипт в определенной папке, это настолько же простая концепция как и крепить монобехи к объектам.
@717pixels9
@717pixels9 2 ай бұрын
@@xkoster_vods Да, можно было бы поиском, но где-то камера была бы назначенной через публичную переменную (вроде Camera.main не очень быстро работает), где-то в названии переменной была бы описка, типа cmarea вместо camera. И в любом случае поиск выдал бы кучу всякого мусора. Просто у меня большая часть времени уходит на то, чтобы найти нужную часть кода, и я пытаюсь в первую очередь сократить это время поиска, сделав все наглядным. Наверное в вашем подходе больше плюсов и я попытаюсь получше разобраться в теме. Вообще делайте пожалуйста больше роликов по программированию.
@lisoferma
@lisoferma 2 ай бұрын
Не думал, что вместо прописывания каждого класса ручками, можно применить рефлексию, прикольно
@moleskin9955
@moleskin9955 2 ай бұрын
Ни-че-го не понимаю! ) Ну, радует хотя бы то, что мне сейчас не прям что страшно "не понимать". Всё равно всё приходит с теорией и практикой личной )
@lev431
@lev431 2 ай бұрын
О вернулся
@ilyamurashko4590
@ilyamurashko4590 2 ай бұрын
А есть что-то вроде Di ?)
@moranyt8299
@moranyt8299 2 ай бұрын
а я все понял =)
@moranyt8299
@moranyt8299 2 ай бұрын
вот только момент с драгом карты. Когда я делал свою карточную игру, я не так понял твою архитектуру и по сути просто сделал карты в виде набора компонентов. Так вот, почему драг карты отдельно во вьюхе?
@xkoster_vods
@xkoster_vods 2 ай бұрын
Драг карты был «исключен» из той системы потому что ему не требовалась какая-то архитектура или системность, это просто инпут метод
@Kot-Alenya
@Kot-Alenya 2 ай бұрын
Лучше создавать интеракции ручками: проще читать код(все интеракции будут списком, друг за дружкой), отпадёт необходимость в приоритетах(и в геморе, связанном с их настройкой).
@Diyozen
@Diyozen 2 ай бұрын
а не было необходимости запускать несколько интеракций параллельно? Как такие вопросы удаётся решать?
@xkoster_vods
@xkoster_vods 2 ай бұрын
В таком случае я запускаю несколько корутин и жду завершения их всех (если надо)
@Diyozen
@Diyozen 2 ай бұрын
@xkoster_vods понял, спасибо. Идея интересная, надо будет как-нибудь попробовать.
Hilarious FAKE TONGUE Prank by WEDNESDAY😏🖤
0:39
La La Life Shorts
Рет қаралды 44 МЛН
«Осень». Самая большая загадка Windows XP
14:36
Девять десятых
Рет қаралды 1,6 МЛН
Делаю СВОЮ ИГРУ в GODOT уже ПОЛ ГОДА
8:10
Vaskoteg | разработка игр
Рет қаралды 3 М.
УЧИЛСЯ ПРОГРАММИРОВАТЬ 365 ДНЕЙ
13:56
Honey Montana
Рет қаралды 683 М.
Я СЛОМАЛ ВСЕ ИГРЫ и мне понравилось.
26:30
БУЛДЖАТь
Рет қаралды 3,5 МЛН