Спикер: Денис Ковалев, Software Developer в DataArt.
Тема: «Python в игровой индустрии».
«Расскажу о библиотеках и фреймворках Python, используемых для создания игр.»
О спикере: закончил физический факультет ВГУ, после чего пришел в IT, где работает уже более пяти лет. За это время успел поработать и с Perl и С/С++, и с Python и Java. Специализируется на работе с Linux и базами данных.
Видео: https://www.youtube.com/watch?v=RkcX6ZWU56s#t=2207
__
Сайт: http://www.dataart.ru/
Facebook: https://www.facebook.com/DataArt.Enjoy
Vkontakte: http://vk.com/dataart_enjoy
Twitter: https://twitter.com/DataArt_Enjoy
2. Используют Python
Battlefield 2 & Battlefield 2142
Eve Online
Mount & Blade
Civilization IV
Severance: Blade of Darkness
Greyhawk: Temple of Elemental Evil
3. Графические библиотеки
Tkinter, PyGTK, PyQt
PyGame - http://pygame.org
Pyganim - http://inventwithpython.com/pyganim
Pyglet - http://pyglet.org
Cocos2d - http://cocos2d.org
Pyggel (Python Graphical Game Engine + Libraries)
2D
3D
Panda3D - http://panda3d.org
4. Pygame
+ SDL (Simple Directmedia Layer) library
+ Stable and well-documented (http://www.pygame.org/docs/ref)
+ Examples (http://www.pygame.org/docs/ref/examples.html) and
tutorials (http://www.pygame.org/docs/tut/newbieguide.html)
- Not pythonic
+ Easy & powerful
17. Pygame + Pymunk
1. while 1:
2. for event in pygame.event.get():
3. if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
4. body = Ball(to_pygame(event.pos))
5. shape = body.get_shape()
6. space.add(body, shape)
7. balls.append(shape)
8. elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3:
9. brick = Brick(to_pygame(event.pos))
10. space.add(brick)
11. bricks.append(brick)
12.
13. ### Draw stuff here
14.
15. ### Update physics
16. fps = 60.0
17. space.step(1./fps)
18.
19. pygame.display.flip()
20. clock.tick(fps)
18. Pyglet
+ No dependencies
+ Pythonic
+ Images, audio, video in any format
- Not for games
Cocos2d
+ Pyglet-based
+ For games, apps, GUI interaction
- Poor API docs
- Google does not help
+ OpenGL interface
+ Layers and scenes
19. Pygame vs Pyglet
1. import pygame
2.
3. pygame.init()
4. screen = pygame.display.set_mode
((640,480))
5.
6. while 1:
7. for event in pygame.event.get():
8. if event.type == pygame.QUIT:
9. raise SystemExit("QUIT")
1. import pyglet
2.
3. screen = pyglet.window.Window
(640,480)
4.
5. pyglet.app.run()
20. Pygame vs Pyglet
1. import pygame
2.
3. pygame.init()
4. screen = pygame.display.set_mode((640,480))
5.
6. while 1:
7. timer.tick(60)
8. for event in pygame.event.get():
9. if event.type == pygame.KEYDOWN and
event.key == pygame.K_a:
10. print 'You pressed A'
11. #update objects here
12. pygame.display.update()
1. import pyglet
2. from pyglet.window import key
3.
4. screen = pyglet.window.Window(640,480)
5.
6. @screen.event
7. def on_key_press(symbol, modifiers):
8. if symbol == key.A:
9. print 'You pressed A'
10.
11. def update(dt):
12. #update objects here
13.
14. pyglet.clock.schedule_interval(update, 1/60.0)
15. pyglet.app.run()
24. Examples and games
pyvolley (cocos2d и pymunk) - https://github.
com/aikikode/pyvolley
Minecraft на Python (pyglet, OpenGL) -
https://github.com/boskee/Minecraft
“Кораблики” (PyGame + Tiled) https://github.
com/aikikode/nautili
pyhammerfight (cocos2d и pymunk) - https://github.
com/aikikode/pyhammerfight
Исходники примеров презентации - https://bitbucket.
org/aikikode/pygame_examples
Презентация - http://bit.ly/1lNp0Uk
25. Дополнительные источники
Игры и библиотеки - https://wiki.python.org/moin/PythonGames
Making games with Pygame - http://youtu.be/RQ-lIU0jWwg
2D game development using Pyglet with Cocos2d - http://video.kiberpipa.
org/py_2d_and_3d_game_development_using_pyglet/