Можно Ли Делать Игры На Python?
Python нашёл себе место почти во всех сферах IT. Разработка веб-сайтов, управление станками ЧПУ, desktop, мобильные приложения, а уж про искусственный интеллект, машинное обучение и анализ данных я вообще молчу. Сейчас Python лучший друг хоть школьнику, хоть сотруднику научно-исследовательской лаборатории. А что на счёт игр? Компьютерные игры — это огромная доля IT рынка, которая уже набрала и продолжает набирать обороты. Игры то делать можно на питоне? Сегодня мы расставим все точки над i. Меня зовут Макс, я один из авторов YouTube канала PyLounge, а вы читаете статью в которой я расскажу можно ли создавать игры на Python и какую нишу занял Python в сфере gamedev.

Для удобства разделим все игры на несколько категорий:
AAA-проекты по типу Assassin’s Creed и Call of Duty, которые разрабатывают е крупные студии;
В таком порядке и будем разбираться.
Все масштабные 3D игры так или иначе создаются с помощью специальных игровых движков. Игровой движок — это по сути набор инструментов, который позволяет работать с графикой, физикой, скриптами и прочим.
Движки довольно требовательны к производительности, а Python сам по себе медленный, поэтому непосредственно ядро игры на Python не пишут. Движки, как правило, создаются на компилируемых языках, таких как С/С++ или С#.
Крупные компании зачастую используют Unity, Unreal Engine 4, CryEngine, Source или пишут собственные движки (Anvil, Fox, REDengine) обычно на С++. Хотя и существуют специальные игровые движки, написанные на Python, но о них чуть дальше.

Перемещение по меню, переходы между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов, ИИ — всё это и многое другое приходится программировать на каком-то языке, который поддерживает тот или иной движок.
Unreal Engine 4 используют С++, Blueprint и некоторое подобие JavaScript, основой для Unity является C# (была попытка ввести язык Boo, это по сути типизованный Python, но идея провалилась). Из более менее крупных, ходовых движков Python как основу использует пожалуй только Godot (точнее он использует GDScript, по сути видоизменённый Python с небольшими фишками).
Поэтому не смотря на возможность работы с графикой и в целом реальность разработки игр, сам по себе Python не используется или практически не используется, как основной язык для разработки крупных игр. Но его часто используют как вспомогательный инструмент.
На нём пишут игровую логику, используют для написания внутриигровых скриптов и подсобной работы, не касающейся рендеринга, например, организации серверных элементов управления, внутриигрового моддинга, интерфейсов и прочего. На написании игровых скриптов остановимся поподробнее.

https://github.com/wrye-bash/wrye-bash
В первую очередь скриптовый язык Python позволяет отделить игровую логику, от всего остального (графики, физики, ввода/вывода, сетевого взаимодействия). Скрипты на Python могут применяться для написания взаимодействия персонажей, запуска сцен, диалогов, взаимодействие NPC с триггерами (например, ходьба где-то, остановка, чтобы поговорить с другим NPC, а затем продолжить бежать куда-то), статистика противника (здоровье, скорость, точность), а также обработки различных событий.

Игровая логика обычно не содержит сложных вычислений и скорость языка отходит на второй план. Это и ляжет на плечи Python. Действительно сложные или требующие высокой производительности части (какой-нибудь условный поиск пути) можно унести в движок.
Получается, что скриптовые языки такие как Python или Lua вызывают какие-либо методы движка и оперируют ими для создания игровой логики и наоборот: движок может вызывать заранее оговоренные функции в скрипте, где разработчик уже как-то обрабатывает вызов. То есть скрипты позволяют разделить слои логики игры и логики игрового движка. Вы можете изменять игровую логику, настройку игры и прочие параметры без необходимости перекомпиляции всего кода.
Скрипты Python можно использовать, даже если игра написана на другом языке. Python использовался в Battlefiled, Sims, Civilization, World of Tanks, Vampire: The Masquerade: Bloodlines и ещё много где.
Кроме того, Python часто используют для написания тестов, что тоже важно. Получается, что Python не такой уж редкий гость в крупном геймдеве, однако используется он далеко не как основной язык и конкуренцию ему составляет(-ли,-вят) Lua\JS\TypeScript (возможно) и т.д. С крупными многобюджетными играми на этом всё.
Когда же речь идёт о чём-то более простом, о создании не навороченных 2D и 3D игр Python выступает во всей красе. Для создания хобби-проектов, инди и мобильные игр под Android Питон предоставляет несколько хороших и относительно популярных инструментов.
Pygame – это библиотека модулей для языка Python, созданная для разработки 2D игр. Также Pygame можно называть своего рода фреймворком для создания игр. Он имеет хорошее сообщество, открытый исходный код, кроссплатформенность, качественную документацию, множеством примеров игр, а ещё он довольно простотой для изучения.
PyGame хорошее начало, чтобы познакомиться с особенностями разработки игр. Более опытными программистами Pygame может использоваться для быстрого создания прототипа игры, чтобы посмотреть, как все будет работать. После этого игра переписывается на другом языке. Другими словами, преимущество Pygame в легком обучении и быстрой разработке. С помощью него вполне можно создать отличную игру, но скорее всего казуалку. Pygame-приложения могут работать под Android на телефонах и планшетах с использованием подмножества Pygame для Android.
Panda3D — игровой движок, включающий графику, звук, ввод-вывод, обнаружение столкновений и другие функции, относящиеся к созданию 3D игр. Основным языком программирования, предназначенном для работы с SDK Panda3D, является Python, однако ядро движка написано на C++. Panda3D использовался даже для крупных коммерческих игр (Toontown Online, Pirates of the Caribbean Online). Он также включает работу с графикой, звуком, сетью, устройствами ввода (мышь, клавиатура, джойстик и т.п.), физикой на базе ODE и многими другими вещами, требующимися при разработке игры. Основным графическим API для «панды» является OpenGL, так же возможно использование и DirectX. Движок достаточно простой в изучении и при должной сноровке, с помощью него вполне реально сделать что-то простое, но интересное.

https://pirates.fandom.com/wiki/Pirates_of_the_Caribbean_Online
Отдельно стоит отметить движок RenPy . Это именно то, на что действительно стоит обратить своё внимание.
RenPy — это бесплатный, написанный на Python, свободный игровой движок для создания визуальных новелл (графических квестов с диалоговой системой) в 2D-графике. Поддерживает платформы Windows, Linux, Android, iOS. Именно на этом движке созданы такие известные игры как Бесконечное Лето и Корона из Листьев.

Everlasting Summer
Движок использует сценариообразный скриптовый язык, что превращает создание простых игр в несложное дело, оставаясь гибким и предоставляя широкие возможности опытным авторам. Для более сложных игр необходимо применять Python: есть возможности подключение видео и использование различных спецэффектов на движке; также можно подключать мини-игры, системы подсчёта параметров, чтобы сделать не просто диалоговую кликалку.
Кроме того, он предоставляет возможности, ожидаемые в каждой визуальной новелле, например, сохранение-загрузка, доступ к настройке различных параметров игры и перемотка диалогов. RenPy имеет отличный официальный туториал, документацию и большое русскоязычное комьюнити.
По данным из Wiki cвыше 1200 игр используют движок RenPy. И это действительно тот инструмент, который поможет вам реально и без особых проблем воплотить ваши игровые идеи в жизнь, пусть и в формате визуальной новеллы. Достаточно только наличие базовых знаний Python, идеи и хорошего художника. Дерзайте, возможно именно ваша игра покорит интернет, как это было в случае БЛ.
Из всего этого следуют, что Python вполне применим для создания игр, зачастую более простых, но и в крупных проектах встретить его вполне реально, хоть и происходит это редко. Некоторые игры на Python имеют огромную популярность, тоже Бесконечное лето, о котором говорилось ранее. Однако, очевидно, что язык не совсем про разработку игр. Он гораздо более применим совсем в других сферах.
Игры, в которых использовался Python
Сегодня вашему вниманию представляется статья и небольшая инфографика, которая покажет вам на конкретных примерах, что Python столь же эффективен в разработке игр, как и в других областях.

Вот некоторые из самых известныx игр, в которых был в той или иной мере использован Python:
Battlefield
(2005 / Digital Illusions CE (DICE) / Стокгольм)
Все серии Python используется в игре для различных нужд, от серверных элементов управления до внутренней логики игры. Battlefield — это одна из самых популярных игр в жанре симулятора войны, которая хорошо известна на весь мир.
EVE Online
(2003 / CCP Games / Исландия)
Это многопользовательская онлайн ролевая игра (MMORPG), действие которой разворачивается в антураже научно-фантастического пространства. Пользовательская база насчитывает более 500 000 игроков. EVE Online полностью написана на StacklessPython, что делает ее одной из крупнейших игр, использующих Python для своих нужд.
Mount & Blade
(2008 / Tale Worlds / Турция)
Ролевая игра, действие которой происходит в средние века. Игра была разработана всего лишь двумя людьми, мужем и женой, они использовали скрипты на языке Python для обеспечения модульности игры. Особенности игры — это огромный игровой мир и эпические сражения в реальном времени.
Sims 4
(2014 / Е.А. Maxis Sims Studio / США)
По праву является самой известной игрой в жанре симуляции жизни. Sims 4 — первая компьютерная игра, которая занимала лидирующие позиции на всевозможных игровых чартах на протяжении двух лет, и продалась в объеме 408,150 экземпляров по всему миру в течение первых четырех дней. На сегодняшний день продано более 1.1 миллиона копий по всему миру, что делает Sims 4 одной из самых продаваемых игр, которые использует Python — для обеспечения внутриигрового моддинга, открывающего пользователям огромные возможности по изменению параметров игры.
Civilization IV
(2005 / Firaxis Games / США)
Это компьютерная игра в жанре пошаговой стратегии. Цель игрока — подчинить себе весь мир путем дипломатических переговоров или кровожадной войны. Большая часть игры написана на Python, и Boost Python, что дает возможность пользователям собственноручно создавать модификации для игры.
Frets On Fire (FoF)
(2006 / Unreal Voodoo / Финляндия)
Музыкальная игра с открытым и свободным исходным кодом, которая сама по себе имитирует коммерческую игру Guitar Hero. Игра полностью написана на Python с использованием библиотеки Pygame. Благодаря открытости и простоте кода, игра представляется как хорошая площадка для изучения и практики программирования.
Top 4 Python Game Projects
The popularity of python appears to be increasing with each passing day. Python has become an essential tool in a wide range of fields. One of the primary reasons to learn and use Python is English -like nature of this language. People who are new to programming may also grab this language relatively easily.
One of the numerous things python is used for is game development. Although better software packages, including game engines such as Unity and Unreal Engine exist exclusively for game development, learning to develop games with Python has its own advantages.
One of the advantages is that you will gain essential coding and problem-solving skills. The reason for this is that game development is a challenging task. Every aspect of the game must be planned in advance. Another solid motivation to experiment with developing games in Python is that you will have completed a project. You may then use this project to demonstrate your Python programming abilities.
Having said that, here is a list of some of the finest python game project ideas that you may develop on your own. Developing the python game projects listed below should help you practice your skills, while also providing a pleasant experience of playing something you developed.
Python Game Project Ideas
1. Dice Simulator
The title of this game will give you a hint what we’re up to. We’d be developing a program that would allow you to simulate the roll of a dice. To complete this project effectively, you must be aware of the game loop and random number generator concepts.
Our aim for this project is that when the programme is executed, it chooses any random integer between 1 and 6 (if you are simulating a standard dice). After the program has selected an integer, it must print the number it has selected and display the number. After printing the number, one roll of the dice is successfully simulated. From here, you may give the user the choice to roll another dice and get another random digit from one to six by pressing a certain key.
You will need to brush up the following concepts if you want to complete this game successfully.
- Random Integer generation
- Printing and using the command line interface
- The use of game loops (while loops).
Indeed, this simulation is not similar to reality because there are numerous elements in the real world (such as spin, air pressure, surface hardness, dice shape, surface friction, etc.) that would be extremely difficult to simulate in this simple programme. It would, however, maintain the unpredictability associated with a dice roll.
2. Role Playing Game
The objective of this project is to develop a Role playing game without any GUIs. It may seem difficult to believe, but there was a time when all RPGs were text-based with only a few graphical elements on the screen.
An RPG which is developed without GUI may not appear very attractive, but with this project you will be working on something very interesting. If you can manage to spin up an engaging story that gamers would enjoy, you will find that your game will be warmly accepted. Not to mention, because there aren’t many things to worry about with this project, you would have a lot of time to come up with a brilliant narrative.
Some of the basic programming concepts that you must be aware of before starting to develop this game, have been mentioned below:
- Use of if, elseif, and nested if else if statements.
- Printing.
- Story building.
- Loops.
- Data structures (arrays, strings, classes, etc.)
Just like any successful RPG should, you’d need to provide the players with good choices in the game. The story-line of the game should progress based on what the players chose. You would also need to program all of the possible paths that a person can follow in the game. If you want the players to have a fun time, both the story-line and the code should be extremely precise.
Also, direct your focus towards world-building. Players must be aware of where they are and what they are doing. You should also provide significant background and an ultimate objective which should feel natural.
3. Mario
Mario was originally created by Nintendo for its consoles, but has now evolved into a franchise. There have been numerous Mario upgrades, reboots, and spin-offs. For the sake of practise, you will be recreating this classic.
When compared to modern games like Assassin’s Creed, the game mechanics in Mario may appear to be quite basic. In this side-scrolling 2D game, you may either move (both left and right) or jump. However, combining only these two movement mechanics with a wonderful level design results in a wonderful experience for the player.
To effectively make a duplicate of Mario, you would need to take care of a number of factors. Powerups, Goombas, Piranha Plans, and obviously a lot of pipes would be required (because in the end, Mario is a plumber). You’ll also need to combine all of the levels. However, if you build a deep copy, you will also have to replicate and create different worlds for our plumber to navigate his way.
4. Side-Scrolling Dino Game
Those of you who have had the experience of having a poor internet connection might know this game. To see this dino game that you will develop in this project, simply disconnect from the internet for a moment and try to open any web-page on Google Chrome.
The objective of this game is very simple. Tap on the Dino to make him run. You begin the game by leaping over the cactus plants. There is no specific objective of this game. Virtually, you are in the driving seat of a Dino and can only jump and duck to avoid the obstacles in this endless side scrolling game. You must dodge all obstacles and make a high score.
When you reach a certain point in the game, you will encounter a flying pterodactyl. You can easily dodge this flying beast merely by ducking. You might encounter some other opponents as well, who would make the game more difficult as the distance that you cover increases.
We hope you found some fun python game projects to develop, share, and enjoy. Making a game is a simple and enjoyable way to put your programming skills to the test.
If you are interested in learning more about python programming and wish to develop gamer under the guidance of expert mentors, come join us at Rancho Labs where you can learn,build and innovate!
7 лучших игр, использующих Python
ТОПы
Python — не самый распространенный язык программирования игр, но благодаря простоте использования он помог создать несколько запоминающихся игр.
Python — один из самых популярных языков программирования. Его простой в освоении синтаксис обеспечивает гибкость и простоту использования. Однако Python — не первый язык программирования, который приходит на ум при рассмотрении видеоигр. При этом некоторые большие игры запускаются с использованием Python.
Причина этого может заключаться в преимуществах Python, заключающихся в том, что он быстрее, чем большинство других языков, для написания и сборки. В отличие от других компьютерных языков, Python читается как английский, что значительно упрощает пользователю чтение и работу с ним. Это мощный и простой в использовании язык; без него эти игры не были бы прежними.
7/7 Battlefield 2
Поле битвы со странным названием 2на самом деле это третья часть франшизы, выпущенная в 2005 году. Это первая часть серии Battlefield с современным сеттингом. Действие игры происходит примерно в 2007 году, в ней разворачивается вымышленная война между Соединенными Штатами, Европейским союзом, ближневосточной коалицией и Китаем. Серия Battlefield когда-то была одним из самых громких имен в жанре шутеров от первого лица, но в последнее время теряет популярность.
Это название было амбициозным проектом, который хотел поднять масштаб игры дальше, чем раньше. Для всех дополнений Battlefield 2 используется Python для многих фоновых операций, таких как элементы управления сервером. Игре нужен был Python, чтобы помочь создать многофункциональную систему. Результатом инженерной мысли стал отличный онлайн-опыт, который был революционным для своего времени, например, крупномасштабный бой, требующий использования голосового чата в реальном времени для взаимодействия с другими игроками.
6/7 The Sims 4
Эта франшиза не нуждается в представлении, но некоторые игроки могут удивиться, узнав, что в этой игре используется Python. The Sims 4 — это классическая игра-симулятор, разработанная Maxis и опубликованная Electronic Arts. Стоит обратить внимание на долговечность этой франшизы, поскольку она менялась с годами. Недавно, 18 октября 2022 года, она стала бесплатной моделью. Спустя восемь лет после ее выпуска она по-прежнему набирает обороты.
Как следует из названия, эта игра позволяет игрокам создавать аватар для управления. Геймплей вращается вокруг моделирования жизни “Sim'а. В игре используется специально разработанный игровой движок, который позволяет использовать несколько дополнений и гибкость игрового процесса, включая активное сообщество моддеров.
5/7 Крепление & Blade
TaleWorlds Entertainment полностью выпустила культовую средневековую стратегическую ролевую игру Mount & Клинокв 2008 году. В игре игрок создает персонажа и может путешествовать по земле Кальрадии. Будь они торговцами, воинами или чем-то другим, Mount & Blade дает игрокам свободу выбора собственного стиля игры. Это захватывающий опыт с уникальной боевой механикой, историческим прошлым и большим сообществом моддеров, которые помогли еще больше расширить границы игры.
Продолжения Mount & Клинокбыли столь же успешными, что сделало ее одной из самых известных средневековых ролевых франшиз. Успешная франшиза прошла долгий путь, но своим скромным началом она обязана Python, поскольку возможности моддинга для Mount & Blade были созданы с использованием Python.
4/7 World of Tanks
World of Tanks— многопользовательская онлайн-игра, разработанная Wargaming. Игроки могут управлять одними из лучших танков и боевых машин 20-го века. Игра бесплатна и имеет значительную базу игроков. Игроки могут выбирать из более чем 600 боевых машин, чтобы уничтожить своих врагов и исследовать обширные карты. Движок BigWorld используется для серверной части и в основном написан на Python. И дело не только в этом, так как World Of Tanks использует множество инструментов программирования.
Пользовательский интерфейс использует Flash, что удивляет. некоторые люди, но это работает хорошо. Однако даже это может измениться в зависимости от того, на какой платформе ведется игра. Например, в игре используются уникальные клиенты для Xbox или Mobile. Разработка игр кажется сложной.
3/7 EVE Online
EVE Online — это огромная игра по размеру и истории. Уже около 20 лет EVE Onlineбыла опорой на MMO-сцене, она действительно является пионером жанра. Действие происходит в научно-фантастической вселенной, где игроки могут стать кем угодно: торговцами, шахтерами, пиратами или наемниками. Это сложно, этого нельзя отрицать. Новым игрокам придется пройти крутую кривую обучения, но они будут вознаграждены совершенно уникальным продуктом.
И снова это сложная игра, для поддержания работы которой требуется Python. Клиент и сервер игры используют Python для основной части работы.
2/7 Civilization IV
Цивилизация Сида Мейера широко признана одной из величайших игровых франшиз для ПК всех времен. Игроки берут под свой контроль новообразованную цивилизацию и должны провести ее от основ человеческого происхождения до вершин освоения космоса. Есть определенные пути к победе: дипломатия, война и технический прогресс. Игроки должны пройти все три, чтобы стать величайшей цивилизацией, которую когда-либо видел мир. Ее легко взять и играть с друзьями, что делает ее классикой с хорошим соотношением цены и качества, поскольку в нее можно играть снова и снова.
Существует так много рандомизированных карт и бесчисленные часы увлекательного пошагового веселья в Civ IV.Как и многие игры в этом списке, Python предоставляет множество возможностей для моддинга. Кроме того, одной из лучших частей Civ IV является создание пользовательских карт для игры. Это также совместимо с Python.
1/7 Toontown Online
Технически несуществующая игра Disney, Toontown Online, была детская MMO, которая стала культовой, но в конечном итоге была закрыта в 2013 году. Оригинальная игра была полностью написана с использованием Python на протяжении всего времени ее разработки. Игра была сверхбезопасной с дурацкой атмосферой Диснея, позволяя игрокам создавать простые аватары из предустановок и без страха исследовать Toontown. Она была настолько популярна, что фанаты даже устроили Toonfest, фестиваль в честь игры.
Теперь фанатская реплика доступна для всех охотников за ностальгией. Python по-прежнему используется для продолжения наследия оригинальной игры, поскольку создатели римейка рекламировали вакансии для людей, знающих Python.