Differences between revisions 23 and 50 (spanning 27 versions)
Revision 23 as of 2006-05-09 22:35:22
Size: 8976
Editor: RichardJones
Comment:
Revision 50 as of 2020-12-03 12:57:14
Size: 3649
Comment: removed dead link
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

You can write whole games in Python using [http://www.pygame.org/ PyGame].
You can write whole games in Python using [[http://www.pygame.org/|PyGame]]. See a list of other PythonGameLibraries maintained in this Wiki, or [[http://www.devmaster.net/engines/list.php?fid=6&sid=11|this list maintained on DevMaster.net]]. A full tutorial can be found in the free book [[http://inventwithpython.com/pygame|"Making Games with Python & Pygame"]].
Line 7: Line 6:
Read [http://www.onlamp.com/pub/a/python/2002/07/11/pythonnews.html Humongous Python] for a case study. == Websites ==
[[https://coderslegacy.com/python/python-pygame-tutorial/|Pygame - The Full Tutorial]] - A complete pygame tutorial that teaches it from the ground up. Several game projects are also available with step by step explanations and the source.
Line 9: Line 9:
Read [http://rene.f0o.com/mywiki/PythonGameProgramming Python game programming tutorial]. [[https://web.archive.org/web/20121021155936/http://onlamp.com/pub/a/python/2002/07/11/pythonnews.html|Humongous Python]] for a 2002 case study on Pygame.
Line 11: Line 11:
Another library is [http://www.alobbs.com/pykyra PyKyra]:
  PyKyra is a fast game development framework for Python. It is based in SDL and the Kyra engine. In addition to the standard features of Kyra, PyKyra also supports MPEG video, sound (MP3, Ogg Vorbis, Wav and Multichannel module files), direct images reading and much more. -- InTheirOwnWords
[[https://coderslegacy.com/python/pygame-rpg-game-tutorial/|Pygame RPG Series]] - A series of short tutorials over the course of which a complete RPG styled game is created using Pygame.
Line 14: Line 13:
Two pages that are dedicated for python in 3d are [http://www.py3d.org/ Python 3D(py3d.org)] and [http://www.vrplumber.com/py3d.py Python 3D Software] [[https://pygametutorials.wikidot.com/|Pygame programming tutorials]] is a compilation of a few short tutorials for Pygame.
Line 16: Line 15:
[http://www.pyweek.org PyWeek] is a bi-annual programming challenge that produces several great games. Its rules page has a listing of game libraries. ''Someone should copy that to this wiki...'' [[https://pythonspot.com/game-development-with-pygame/|Game development with Pygame]] is a tutorial that is an introduction to Pygame. Also contains tutorials on how to make several basic games in Pygame.
Line 18: Line 17:
If you're interested in learning how to use Pygame to create 3D games, two sites that are dedicated to 3D Python are [[http://www.py3d.org/|Python 3D(py3d.org)]] and [[http://www.vrplumber.com/py3d.py|Python 3D Software]]. You can find several 3D game projects available here.
Line 19: Line 19:
== Testimony == [[http://www.pyweek.org/|PyWeek]] is a bi-annual programming challenge site that produces several great games.
Line 21: Line 21:
I tried porting [http://taoriver.net/eouwiki/ Escape of the Unicorn] to Python/PySDL, but the game dropped from 30 fps to 6 fps. == Books ==
There's also some books that specifically cover game programming in Python:
Line 23: Line 24:
After a lot of profiling and unrolling screen draw code, I was able to reach 8 frames a second. [[http://inventwithpython.com/|http://inventwithpython.com]]
Line 25: Line 26:
If you look at PyGame and PySDL games, you'll notice that they aren't action or arcade games.  . [[http://inventwithpython.com/|"Invent Your Own Computer Games with Python"]] is a free, Creative Commons-licensed book on Python for complete beginners with no experience programming. Each chapter has the source code for a small game such as Tic Tac toe, Hangman, Reversi, and others. The final chapters provide an introduction to Pygame.
Line 27: Line 28:
I have only heard of few efforts that succeeded in embedding Python in C++, and I have forgotten them. For the most part, people (including Humongous, as described in [http://www.onlamp.com/pub/a/python/2002/07/11/pythonnews.html the case study described]) extend Python with C++. If you are going to mix Python and C++, I think it is best to extend Python- that is the intended direction. I consider this a failing of Python. http://inventwithpython.com/pygame
Line 29: Line 30:
If you want to embed a scripting system because you already have a huge system, embed something like Guile. I think it is an inferior solution, but that it will result in a lot less heartbreak.  . [[http://inventwithpython.com/pygame|"Making Games with Python & Pygame"]] is also a free, Creative Commons-licensed book that assumes a small amount of Python programming experience. It goes into more detail with the Pygame library. There is the source code for games such as Tetris, Connect Four, Simon, Sokoban, and others.
Line 31: Line 32:
I suspect I'll try to rewrite Escape of the Unicorn as a C++/Python mixture some day, and pay careful attention to how I cut the C++/Python lines.
I think only a few things need to be given to C++, such as display loops, animation management, and collision detection.
http://www.handysoftware.com/cpif
Line 34: Line 34:
-- LionKimbro [[DateTime(2002-07-19T10:45:57)]]  . "The author set out to write a book like the one he used to teach himself programming at age 12. ... This book has been successfully used by homeschooling families and public school teachers." The library and example code supplied with the book is also available for download.
Line 36: Line 36:
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470068221.html
Line 37: Line 38:
Not every type of game will work well with python. Although I must disagree that none of the games written in pygame are action or arcade games. Pygame can do extremely well in these environments. My first game, SolarWolf, is an action arcade game. It runs locked and limited at 40 frames per second with its 800x600 graphics, with generally over 50 animated objects on the screen. It uses time-scaling to control animations on slower machines, and has been rated very playable by people on less than 200mhz pentiums.

The general performance problems people have with pygame are related to using the SDL library. Without special tweaking, games usually run on SDL with no hardware acceleration. This can take a noticeable speed hit on games with fullscreen scrolling graphics. Generally, speeding up the python code will have minimal performance games, but optimizing what is drawn will have significant impact.

Still, I concede that there are types of games that just won't be suited towards python. But the situation is far more hopeful than the experiences of 'Escape of the Unicorn'.

-- Pete 'ShredWheat' Shinners


I work for a publicly held MMP game publishing company. I can't provided too many details because most of the interesting stuff is company confidential. However, I can testify that we are using Python to develop both the client and the server architectures. To be fair, the core graphics engine and high performance stuff is written in C++, but the game code is in Python. It goes something like this:

Client: The executable is the Python interpreter, and it loads C++ extension modules for 3D rendering, collision, UI, movement, and such. Game code is written in Python. The main rendering loop is in C++, however, which is a critical point for performance. In development we get around 50 FPS with a high-poly scene, and up to several hundred FPS rendering a single large triangle :P.

Server: The executable is a C++ server framework that embeds the Python interpreter, which also imports C++ extension modules. Again, high performance code, such as networking, movement, AI, and physics is in C++ (combining extensions and native code). Game code is in Python. But this is most of the code. Game code on the server consists of every system that has anything to do with the rules of the game, scripting, object interaction, combat, trade, inventory, etc. etc.

We do not use SDL, so I can't comment on it. However, I can say that, the right mix of Python and C++ is an ideal combination of technologies for game development. Just like any Python app, you have to keep the performance critical stuff in extensions, and minimize the calls between Python and C++. But the high level logic, game code, and other "fun stuff" lends itself to Python very well.

-- Matt Walker

SolarWolf has an all black background, which is just a screen clear, so that works fine. Escape of the Unicorn has an animated tile background. That's why it's chugging so much.

I agree with Matt Walker- if you do the engine in C++ and the game code in Python, it'll work.

'''What we really need in the Free Software world need is a C or C++ sprite, collision, and sound/music engine that is all wired up to host Python scripts, right out of the box.'''

-- LionKimbro

I completely disagree with all of the negative mentions of PyGame/Python/SDL. If you know how to code, and know how well to code, you can easily drum up a game that is complicated (much more so than just 'animating backgrounds', yeesh) and hit an extremely fast framerate. I've created some platform game engines with multiple parallax scrolling layers, large environments and each layer having animated tiles, and I STILL need to slow it down on 200mhz machines. Of course, I'm used to programming on machines with limits, since my last job was programming a z80 chip in C and ASM.

-- Mandrake

Mandrake, who said that the game was just "animating backgrounds?" The game includes animating backgrounds. The game is ''not'' just animating backgrounds.

At any rate, we're talking about using SDL with Python.

And in that context, it's not good enough. You can't, at present:

* Program the game purely in Python.
* Using SDL. (by PyGame, or PySDL.)
* Have animated tiled backgrounds.
* And expect to have more than say 4 FPS on a 450MHz computer.

And that sucks.

Sure, you can code up whatever you want in C. Be my guest. Go for it. I've done it myself. But here in Python-land: No-go. Not today. Not yet.

-- LionKimbro

There is similar discussion on the [http://gpwiki.org Game Programming Wiki].

We may want to [http://wikinodes.wiki.taoriver.net/moin.cgi/UnderstandingDelegations delegate discussion] of Game Programming with Python to the Game Programming wiki, as it seems like the Python wiki is moving towards "official" Python work. I feel we'd have much greater energy at the Game Programming wiki.

-- LionKimbro

The case for Python as a game programming language is not clear cut. First, as have said LionKimbro, It depends on the game. A graphic intensive game should be build with other tools.
The cost of function call is simply too important (calculate the number of function call you need to have to get 60fps).

But, many games can be programmed with python. Before stopping as the first glimpse of lack of performance, It's important to realize that to get more performance, you need to be more pythonic.
Frankly, [http://taoriver.net/eouwiki/ Escape of the Unicorn] should have decent performance in python (based on the small available screenshots).

Game programing is not only about programming Half-Life 3. It also means programing the next Zuma and, for this, Python is a good fit. It also a good langage to learn game programming and that is a very precious thing (I just miss design by contract, but that just me).

Lionel.

Maybe now. It's been several years. But when I was working on Escape of the Unicorn, with my 450 MHz using PySDL, redrawing the animated tiles for every frame was giving me a rate of 3-10 fps; I don't remember exactly what.

-- LionKimbro [[DateTime(2005-12-20T01:33:06Z)]]

I have programmed PyZX, an emulator of ZX Spectrum personal computer, fully in Python+Pygame. The code is about 3000 lines.

Vadim Kataev Sun Feb 19 17:08:05 CET 2006


----
See also this [http://www.gamasutra.com/features/20020821/dawson_pfv.htm paper by Bruce Dawson].
 . "Ever want to develop your own computer game? Learn the practical concepts of object-oriented programming for game design using Python in this easy-to-follow, content-filled guide. Whether you're a student, aspiring game developer, or veteran programmer, you'll gain skills as you progress from station to station in a series of clear-cut tutorials on different styles of games. The last stop will be a finished game program for you to show off."

Game Programming With Python

You can write whole games in Python using PyGame. See a list of other PythonGameLibraries maintained in this Wiki, or this list maintained on DevMaster.net. A full tutorial can be found in the free book "Making Games with Python & Pygame".

If you have an existing game and want to add a scripting engine to make it more flexible, Python is also a very good choice. But you'll have to learn about IntegratingPythonWithOtherLanguages.

Websites

Pygame - The Full Tutorial - A complete pygame tutorial that teaches it from the ground up. Several game projects are also available with step by step explanations and the source.

Humongous Python for a 2002 case study on Pygame.

Pygame RPG Series - A series of short tutorials over the course of which a complete RPG styled game is created using Pygame.

Pygame programming tutorials is a compilation of a few short tutorials for Pygame.

Game development with Pygame is a tutorial that is an introduction to Pygame. Also contains tutorials on how to make several basic games in Pygame.

If you're interested in learning how to use Pygame to create 3D games, two sites that are dedicated to 3D Python are Python 3D(py3d.org) and Python 3D Software. You can find several 3D game projects available here.

PyWeek is a bi-annual programming challenge site that produces several great games.

Books

There's also some books that specifically cover game programming in Python:

http://inventwithpython.com

  • "Invent Your Own Computer Games with Python" is a free, Creative Commons-licensed book on Python for complete beginners with no experience programming. Each chapter has the source code for a small game such as Tic Tac toe, Hangman, Reversi, and others. The final chapters provide an introduction to Pygame.

http://inventwithpython.com/pygame

  • "Making Games with Python & Pygame" is also a free, Creative Commons-licensed book that assumes a small amount of Python programming experience. It goes into more detail with the Pygame library. There is the source code for games such as Tetris, Connect Four, Simon, Sokoban, and others.

http://www.handysoftware.com/cpif

  • "The author set out to write a book like the one he used to teach himself programming at age 12. ... This book has been successfully used by homeschooling families and public school teachers." The library and example code supplied with the book is also available for download.

http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470068221.html

  • "Ever want to develop your own computer game? Learn the practical concepts of object-oriented programming for game design using Python in this easy-to-follow, content-filled guide. Whether you're a student, aspiring game developer, or veteran programmer, you'll gain skills as you progress from station to station in a series of clear-cut tutorials on different styles of games. The last stop will be a finished game program for you to show off."

GameProgramming (last edited 2020-12-03 12:57:14 by ShadowClaw20017)

Unable to edit the page? See the FrontPage for instructions.