Библиотека Pygame — больше о спрайтах (часть 3)

Приступаем к третьей части описания того, как правильно разрабатывать игры с использованием библиотеки Pygame. Эта инструкция предназначена для новичков и программистов среднего уровня, которым нравится создавать игры и совершенствовать собственные навыки кодинга. 

Графические спрайты

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

Мы ранее создали маленькое приложение, которое перемещает цветной прямоугольник. Их хорошо использовать для оценки функциональности игры и для того, чтобы убедиться в том, что она работает. Тем не менее, в реальных играх не всегда понадобится использовать идеальные графические фигуры. Как быть в такой ситуации? Где можно взять графику для игры?

Где осуществлять поиск арта?

Фактически у вас есть всего три варианта:

  1. Самостоятельно его нарисовать.
  2. Воспользоваться услугами художника.
  3. Использовать готовые арты, которые уже есть в интернете как в бесплатном, так и платном доступе.

Первые два варианта могут использоваться, если вы – творческий человек и можете качественно нарисовать персонажей или объекты в игре. Или же можно заказать у кого-то такие картинки (имеется в виду, обратиться к друзьям, которые помогут нарисовать их). 

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

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

К слову, выкрутиться из этой ситуации можно. Можно найти готовые спрайты на сайте opengameart.org, на котором есть также другой контент типа музыки. Весь он лицензирован таким образом, что его можно использовать в играх без ограничений. К слову, рекомендуется пользоваться картинками, созданными Kenney, который считается на этом сайте одним из лучших создателей контента. Чтобы найти картинки этого художника, необходимо забить его имя в строку поиска.

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

В этом уроке будет использоваться Platformer Art Complete Pack, созданный этим человеком. Преимущество этого пакета в том, что здесь огромное количество различной графики, которая позволяет создавать платформеры (типичный пример игры такого жанра – всем известное Марио). 

Для начала необходимо скачать этот архив и распаковать его. Сперва начнем с картинки, имеющей название p1_jump.png.

Игровые ассеты и их организация

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

Чтобы появилась возможность использовать изображение в игре, необходимо дать соответствующую команду библиотеке Pygame. Чтобы это сделать, надо указать место, в котором находится соответствующий файл. Сам процесс может отличаться в зависимости от того, на каком компьютере работает человек. В этом заключается главная сложность, поскольку нужно, чтобы играть было возможно на любом устройстве. Чтобы решить эту проблему, необходимо дополнительно загрузить библиотеку os и указать местоположение игры. 

 import pygame

 import random

 import os




 # настройка папки ассетов

 game_folder = os.path.dirname(__file__)

Обратите внимание на специальную переменную __file__, которая использует папку, в которой сохранен код игры. А с помощью команды os.path.dirname мы можем указать путь к папке. Например, путь к коду на компьютере, находящемся под управлением операционной системы MacOS, может быть таким. 

/Users/gvido/Documents/gamedev/tutorials/1_3_sprite_example.py

А если под Windows – таким. 

C:\Users\gvido\Documents\python\game.py

Поиск местоположение файлов может отличаться в зависимости от используемой операционной системы. Для решения этой проблемы может использоваться команда os.path, с помощью которой ПК может самостоятельно определять путь, который будет правильным в текущей ситуации.

Теперь можно приступить к указанию местоположения папки img

import pygame

import random

import os




# настройка папки ассетов

game_folder = os.path.dirname(__file__)

img_folder = os.path.join(game_folder, 'img')

player_img = pygame.image.load(os.path.join(img_folder, 'p1_jump.png')).convert()

Для загрузки изображений используется pygame.image.load(), а convert() выполняет оптимизацию прорисовки, делая ее более быстрой. Как это происходит? Очень просто. Изображение конвертируется в формат, который будет быстрее появляться на экране.

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

class Player(pygame.sprite.Sprite):

    def __init__(self):

        pygame.sprite.Sprite.__init__(self)

        self.image = player_img

        self.rect = self.image.get_rect()

        self.rect.center = (WIDTH / 2, HEIGHT / 2)

Учтите то, что инструкции self.image.fill(GREEN) уже нет в нашем примере. Все потому, что в данной ситуации уже и не требуется заливка одним цветом. get_rect() работает таким же образом. Теперь она будет окружать прямоугольником каждое изображение self.image.

Если прямо сейчас попробовать включить приложение, пользователь увидит небольшого инопланетянина, который перемещается по экрану. Но здесь осталась одна проблема. Из-за черного фона ее не видно, но она есть. Чтобы понять, в чем она заключается, заменяем заполнение фона на синий цвет. Для этого используется команда screen.fill(). После этого мы начинаем понимать, в чем непосредственно заключается проблема. Библиотека Pygame - больше о спрайтах (часть 3)

На компьютере файл изображения всегда являет собой сетку пикселей. Вне зависимости от того, какая форма нарисована, есть дополнительные пиксели, которые выполняют функцию заполнителя фона. Чтобы исправить эту проблему, необходимо уведомить Pygame о том, что эти пиксели мешают, и попросить интерпретатор их игнорировать. В случае с нашим изображением, необходимо избавиться от черного цвета. Чтобы это сделать, необходимо добавить следующие строки кода. 

class Player(pygame.sprite.Sprite):

    def __init__(self):

        pygame.sprite.Sprite.__init__(self)

        self.image = player_img

self.image.set_colorkey(BLACK)

        self.rect = self.image.get_rect()

        self.rect.center = (WIDTH / 2, HEIGHT / 2)

set_colorkey() указывает на то, что необходимо игнорировать пиксели определенного цвета. В нашем случае – черного. Теперь мы решили проблему, и у нас остается просто инопланетянин на синем фоне.Библиотека Pygame - больше о спрайтах (часть 3)

Поздравляем! Вы теперь обучились продвинутой работе со спрайтами в Python. Теперь эти знания можно использовать для того, чтобы попробовать самому сделать анимацию с теми объектами, которые вам хочется. Для этого можно воспользоваться описанной выше интерактивной библиотекой.

Что еще нужно знать и уметь для того, чтобы разрабатывать игры?

Конечно, большинство разработчиков должны, помимо знания Python хорошо ориентироваться в возможностях и нюансах использования популярных игровых движков, таких как Unity, Unreal Engine 4 либо любого другого. В том числе, надо знать, как его устанавливать, работать в интерфейсе, интегрировать персонажей, настраивать игровой процесс, анимацию, звук и другие аспекты. 

Впрочем, другие языки программирования также нужно будет освоить. Если говорить о том же Unity, то он написан на C#. Тем не менее, знания Python будут огромным плюсом, поскольку часть кода проще писать на этом языке. Например, Python широко используется для создания прототипов игр.

Для того, чтобы стать хорошим разработчиком игр, необходимо знать и уметь:

  1. Как пользоваться пакетом Blender, который применяется для создания 3D-моделей. Современные игры, по большей части, трехмерные. Это бесплатная программа, поэтому проблем с ее скачиванием возникнуть не должно.
  2. Понимание физики процессов. В частности, какие силы могут влиять на персонажей и их поведение.
  3. Жанры игр и их особенности. Лучше выбрать какой-то конкретный и совершенствоваться в нем. Мы, например, сегодня использовали графический пакет для создания платформеров. Но есть и другие. 

И, естественно, ориентироваться в том, что такое объектно-ориентированное программирование. Есть также набор других важных для разработки игр компетенций.

Выводы

Создавать игры не только интересно. Это еще и высокооплачиваемая профессия, которая становится все более востребованной. Учитывая то, что Python – универсальный язык программирования, вы сможете с использованием него создавать игры не только для компьютеров, но и мобильных устройств.

К слову, зарплаты в этой сфере действительно высокие и могут достигать 500 тысяч рублей в месяц. Есть также ряд других преимуществ профессии, в которой можно применить те знания, которые были вами получены:

  1. Большое количество вакансий, исчисляемое несколькими сотнями. Так что проблем с трудоустройством возникнуть не должно.
  2. Набравшись опыта в разработке игр, можно открыть собственную студию и многократно увеличить свои доходы. 
  3. Возможность удаленной работы. Это особенно актуально в 21-м веке. 

Конечно, сфера разработки игр постоянно изменяется. Приходится регулярно получать новые знания и профессионально совершенствоваться.

ОфисГуру
Adblock
detector