«Объясняю каждую строчку» — отчёт за май

«Объясняю каждую строчку» — отчёт за май

Ну, всем привет. Меня почти перестали смотреть, я всерьёз задумался о том, чтобы начать разговаривать с плюшевой игрушкой, постоянные зрители (три с половиной человека, ага) заняты сессией и экзаменами. Но зато я всё ещё делаю видеоигру на стримах. Вот и очередной отчёт подъехал!

В предыдущих сериях

Если вдруг кто-то не понял, что происходит:

Вот тут я объявил конкурс.

А вот тут подвёл его итоги. Если кто-то из победителей вдруг захочет ещё забрать призы, говорите куда высылать.

Ещё чуть-чуть про тот самый конкурс

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

Дело в том, что у меня нет GameObject в классическом его понимании. Был класс, который так назывался, но я его использовал исключительно для того, чтобы переиспользовать код. О том, что такая сущность есть, никто за пределами парочки классов не знает.

Тот, кто рисует спрайты, получает себе на вход пачку объектов, реализующий интерфейс IDisplayble. Те, кто проверяют столкновения работают с объектами класса ICollidable. О том, что есть сущность, реализующая эти интерфейсы одновременно, они не в курсе. Тут используются две буквы из SOLID. D - for Dependency Inversion (мы не зависим от конкретных реализаций) и I - for Interface Segregation (один условный интерфейс IGameObject разделён на IDisplayble и ICollidable, и тот, кто рисует спрайты ничего не знает о других свойствах рисуемого объекта).

Так что у меня был класс, который назывался GameObject, но не было нужды в столь универсальном, как можно было подумать из названия, классе. Ведь роль универсального класса выполняют несколько интерфейсов, описывающие разные свойства игры. Самое забавное, что буквально на прошлом неделе это окупилось. У меня теперь есть разные ICollidable: Wall - наследуtтся от Actor (бывший GameObject) и представляют из себя анимированный спрайт, сквозь который нельзя проходить, и TileWall, который не содержит в себе ничего, кроме хитбокса, а строится из ландшафта, хранимого в нарисованном в Tiled уровне. Внутри эти объекты абсолютно разные и не имеют почти ничего общего. У них разные способы создания, разная реализация, разная сложность. Но моей игре норм. Отвечающий за столкновение класс знает, что у этой штуки есть хит-бокс, сквозь который нельзя проходить, а остальное ему до лампочки.

А работай я с условным GameObject, умеющим всё, моему TileWall пришлось бы реализовать все свойства этого самого GameObject в виде различных костылей, вместого одного ICollidable.

Что изменилось за май?

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

Самое важное: научил врагов стрелять и двигаться. И разобрался с подходящей программной моделью, чтобы можно было доопределить своё поведение в том, что касается траектории полёта пуль (что вражеских, что игрока) и траектории движения врагов.

Так же у нас появился интерфейс. Где за три стрима я добавил полосочку здоровья игроку, время в игре и полосочки здоровья врагам.

Ну и когда у меня появились полноценные враги и, что важнее, возможность спокойно их добавлять по мере надобности (и я ещё добавил несколько штук), я смог смело перейти к тому, чтобы нарисовать сами уровни, где они будут размещаться. Уровни я рисую в Tiled. Замечательная вещица. Можно найти тут:

Как вы могли заметить, редактор универсальный и к какой-либо технологии не привязан. То есть, привязывать его к своей игре надо самому. Чем я сейчас и занят (не без использования уже существующих костылесипедов).

Приходи к нам на канал, ведь у нас есть:

  • Взрывающийся вертолёт
  • Модные тайлы, которые рисуются в Tiled (он клёвый)
  • Злые глазики, шпарящие самонаводящимися пулями
  • Пыщь-пыщь! Прямо как в 1979 году!
  • Юнит-тесты
  • Неуязвимые мины. Оп! Снова уязвимые. Оп! Снова неуязвимые. Они ещё так "птуньк" делают
  • Visual Studio 2017 Community Edition с чёрным фоном, выглядит как в кино про хакеров
  • Заросший чувак, бормочущий что-то себе под нос, иногда слегка небритый, выглядит как в кино про хакеров
  • Почему этот юнит-тест не проходит?!
  • Пиу-пиу-пиу! Прямо как в 1979 году!
  • Картинка с пони (рисовал не я)
  • Почему этот юнит-тест проходит?!
  • Бдыщчь! Прямо как в 1979 году!
  • Цветовая палитра NES в спрайтах, потому что я делаю вид, что у меня стиль, а не руки из жопы (делается с помощью программы aserprite)
  • Классы, интерфейсы и ещё какие-то умные слова

Ссылочки

Канал

Плей-лист с прошедшими стримами

Паблик вконтакте

Сюда я долблю уведомляшками о грядущем эфире. Можно там у меня что-нибудь спрашивать.

К каждому коммиту прилагается ссылка на видео

4545
8 комментариев

«... постоянные зрители (три с половиной человека, ага)...»

8
Ответить

Мне кажется сам формат подачи не интересен.
Новичкам нужно просто, быстро, и легко.
Понимающим нужны интересные или сложные штуки - без воды.

6
Ответить

Я вот недавно решил научиться создавать папку..

Ответить

Столько ссылок я ещё не видел ни в одной статье, мне кажется...

4
Ответить

я так понимаю, вон то зеленое это босс-вертолет, хороший признак... игры с боссом-вертолетом обычно имеют успех.

3
Ответить

Мужик, текст надо разбавлять не ссылками, а картинками. Оформил всё так плохо, что читать даже не хочется.

1
Ответить

Мля, чел талонтлив, жаль что жизнь только одна и нет времени окунуться во все это.

Мужик, зачем тебе это все ? Используй юнити или арил.

Ответить