Это первая из многих (надеюсь) частей по разработке игр с помощью Angular. Первая часть расскажет вам о проекте, над которым я работаю.



Несколько месяцев назад моя жена жаловалась, что не может найти хорошую версию тетриса для Xbox. «Вы разработчик программного обеспечения», - сказала она. «Разве ты не можешь просто создать его?».

"Почему нет?" Я сказал себе. «Это не может быть так сложно!». Это казалось интересным испытанием. Так что я быстро поискал в Google несколько статей о разработке игр для Xbox. Вскоре я обнаружил, что для того, чтобы получить что-то на Xbox, мне нужно либо опубликовать это через магазин, либо мне придется перевести свой Xbox в режим разработчика, что (насколько я понимаю) означает, что я не смогу больше не играть в «обычные» игры из магазина, пока включен режим разработчика. Мне также пришлось бы использовать инструменты и фреймворки, в которые я не хочу сейчас углубляться и которые не дадут новые полезные знания, которые я мог бы применить на работе.

Потом я вспомнил, что в Xbox тоже есть браузер. К сожалению, это просто Edge (старый, а не новый Edge на базе Chrome). Но, по крайней мере, это не IE! Так что, если я просто создаю свою игру как браузерную, мне не нужно будет проходить через магазин и мне не придется использовать режим разработчика. Также я могу использовать инструменты и технологии, которые тоже использую на работе.

Я решил просто использовать Angular, поскольку именно это мы в настоящее время используем в Diamant Software для создания нашего нового блестящего пользовательского интерфейса.

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

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

Так как я должен называть свою игру? А пока я предпочитаю называть его «Коробейники» рабочим названием. Так называется русская народная песня, на которой основана тема Тетриса (я уже сожалею об этом выборе, так как никогда не могу вспомнить, как это пишется).

Прежде чем я начал писать код, мне сначала пришлось изучить детали игровой механики T̶e̶t̶r̶is Korobeiniki. Это оказалось на удивление легко, так как есть какое-то официальное руководство, которому должны будут следовать официальные игры Тетрис. Это руководство было опубликовано в нескольких вики-сайтах Tetris, например здесь.

Самая важная часть этого руководства - это так называемая система супервращения, которая объясняет, как тетромино (ваша игровая фишка) ведет себя, когда вы его вращаете, особенно когда вы вращаете его рядом с другими блоками, где он может оказаться использованным. пробел после вращения. Правильное поведение очень важно, чтобы моя игра ощущалась как клон тетриса.

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

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

Вот некоторые из тем, которые я мог бы обсудить в следующих постах (никаких обещаний! Возможно, я ленив или занят, и это будет единственная часть, которую я когда-либо опубликую):

  • Как скачать и собрать игру
  • Общая архитектура игры (применение «чистой архитектуры» к тетрису)
  • Создание игрового цикла
  • Использование геймпадов в браузере
  • Работа со звуковыми эффектами и музыкой
  • Рендеринг игры с использованием компонентов Angular
  • Как оптимизировать игру, чтобы она всегда работала со скоростью 60 кадров в секунду

Дайте мне знать в комментариях, какие темы вам интересно читать.

Надеюсь, я вызвал у вас любопытство, и теперь вы хотите получить источник? Вы можете скачать его из моего репозитория на github, https://github.com/oocx/korobeiniki

Я не буду выпускать готовую версию - если хочешь поиграть, тебе нужно собрать самому :).

README.md содержит инструкции по созданию и запуску игры. Я предполагаю, что вы уже немного знакомы с разработкой на Angular, так что вы сможете быстро приступить к работе. Если нет, дайте мне знать, и я напишу еще один пост, чтобы помочь новичкам настроить среду разработки и собрать код.