KEMBAR78
Python для GameDev | PDF
Python для GameDev
Каблуков Станислав
1
About me
● Начинал с разработки на python
● Последний год разрабатываю игры
● В данный момент работаю в стараппе
● https://vk.com/stasonst19
● stasdolg@mail.ru
2
Let's go make a game
● У меня есть друг
● Он умеет хорошо чертить, рисовать
картинки
● В свободное время пишет рассказы
● Работает он: Сверловщиком глубоком
сверления (Да, есть такая профессия)
● В общем, он не программист как вы поняли
3
И как то вечером он ...
Что нужно, для
создания игр?
4
А какую игру ты хочешь?
5
Какие бывают игры бывают
● Внешний вид:
■ 2D
■ 3D
■ 2.5D
● Жанры:
■ Strategy
■ RPG
■ Shooter
■ Platformer
■ Arcada
■ Stealth action
● И т.д.
6
2D: Strategy
7
3D: RPG
8
2.5D: Platformer
9
Сочетания разных жанров
10
Shoot 'em up
11
Platformer
12
RPG
13
Arcade
14
Да, это все одна игра!
15
А давайте ...
16
В этом нам поможет Ren'Py
17
Что такое Ren'py?
● Написан на python, cython, при участии
pygame
● Есть собственный язык разметки .rpy,
который очень удобен, даже людям кто не
имеет программировать
● Много готового для visual novel
18
Сотни cозданых новел
19
Главное меню
20
Главное меню
21
Главное меню
22
Главное меню
23
Туториал
24
Туториал
25
Туториал
26
Rpy язык
init python:
def beepy_voice(event, interact=True, **kwargs):
if not interact:
return
if event == "show_done":
renpy.sound.play("beeps.ogg")
elif event == "slow_done":
renpy.sound.stop()
define pike = Character("Christopher Pike", callback=beepy_voice)
label start:
pike "So, hanging out on Talos IV, minding my own business, when..."
27
Rpy язык
define lucy_normal = Character("Lucy")
define lucy_evil = Character("Evil Lucy")
init python:
def l(what, **kwargs):
if lucy_is_evil:
lucy_evil(what, **kwargs)
else:
lucy_normal(what, **kwargs)
label start:
$ lucy_is_evil = False
l "Usually, I feel quite normal."
$ lucy_is_evil = True
l "But sometimes, I get really mad!"
28
Простенько и со вкусом
29
Нам нужен игровой движок
● Нет времени писать с нуля (Например как
Django в Web)
● Создают игры не только программисты, но
и аниматоры, дизайнеры, 3D модельеры.
● Ren’py как пример
30
Python game frameworks
● PyGame
● PySDL2
● Panda3D
● Cocos2D
● И т.д
31
32
Плюсы Unity
● Давно развивается, есть много готового
● Работа с физикой
● Работа с анимациями
● 2D
● 3D
● Кроссплатформенность
33
Unity обзор
34
Unity обзор
35
Unity обзор
36
Unity обзор
37
Unity обзор
38
Unity обзор
39
Unity обзор
40
Есть Boo(бу)
41
R.I.P
● В данный момент
не поддерживается
● Но еще работает
42
Boo
for i as int in range(0, 100):
print(i)
43
Boo
import UnityEngine
class MyCameraController(MonoBehaviour):
public ScrollSpeed = 15.0
i as int
def Start():
i = 15
if (GameController.GameIsOver):
self.enabled = false
return
44
IronPython
45
46
Unreal Engine
47
Unreal Engine
48
Unreal Engine
49
Blueprint
50
Blueprint
51
Blueprint
52
Blueprint
53
Blueprint
54
Blueprint
55
Blueprint
56
Visual Scripting
57
How and Why ?
● Помощь в изучение движка, если вы
знакомы с Python, например Blender или
Maya
● Автоматизация процессов
● Написание unit tests
● Реализация элементов игры
58
How and Why ?
● Поддержка Python, IntelPython, Anaconda
версий интерпретатора
● Поддержка Linux, MacOs X, Windows
● В процессе исследования поддержка Android
с помощью kivy проекта.
● Используется системный питон
59
Unreal Engine Python
import unreal_engine as ue
ue.log('Hello i am a Python module')
class Hero:
def begin_play(self):
ue.log('Begin Play on Hero class')
def tick(self, delta_time):
location = self.uobject.get_actor_location()
location.z += 100 * delta_time
self.uobject.set_actor_location(location)
60
2D это хорошо! Нужен Графон!
61
Blender
62
63
Что может Blender
● Создание и редактирование 3D моделей
● Анимирование моделей
● Текстурирование
● Работа со светом
● Рендеринг
● И т.д.
64
Внешний вид
65
Внешний вид
66
Внешний вид
67
Внешний вид
68
Scripting Python
69
Scripting Python
70
Scripting Python
71
Scripting Python
72
Что может Blender Python API
● Доступ к данным в сцене (модели, камеры,
● свет, анимация, частицы и т.д.)
● Создание и манипулирование объектами на
сцене
● Импорт и экспорт ассетов
● Создание новых меню, панелей, аддоны
● Работа с игровой логикой (bge)
● Работа с OpenGL (bgl)
● Mathutils: (vector, matrix, and geometry)
73
Quick Tools Menu
Аддон написаный
на Python
74
Есть еще!
● Maya
● MotionBuilder
● Softimage
● Cinema 4d
● Houdini
● Modo
● Nuke
● Hiero
● Cerebro
● RealFlow
● PFTrack
● ...
75
76

Python для GameDev