.. _pygame-comparison:

Pygame Comparison
=================

The Python Arcade Library has the same target audience as the well-known
Pygame library. So how do they differ?

Features that the Arcade Library has that Pygame does not:

* Supports Python 3 `type hinting`_.
* Thick ellipses, arcs, and circles do not have a `moirรฉ pattern`_.
* Ellipses, arcs, and other shapes can be easily rotated.
* Supports installation via standard Python package manager, using 'pip install'
* Uses standard coordinate system you learned about in math. (0, 0) is in
  the lower left, and not upper left. Y-coordinates are not reversed.
* Has built-in physics engine for platformers.
* Supports animated sprites.
* API documentation for the commands is better. Many commands include unit tests
  right in the documentation.
* Command names are consistent. For example, to add to a sprite list you use the
  add() method, like any other list in Python. Pygame uses append().
* Parameter and command names are clearer. For example, open_window instead of
  set_mode.
* Less boiler-plate code than Pygame.
* Basic drawing does not require knowledge on how to define functions or
  classes or how to do loops.
* Encourages separation of logic and display code. Pygame tends to put both into
  the same game loop.
* Runs on top of OpenGL and Pyglet, rather than the old SDL1 library.
* With the use of sprite lists, uses the acceleration of the graphics card to
  improve performance.
* Lots of :ref:`example-code`.


Features that Pygame has that the Arcade Library does not:

* Python 2 support
* Does not require OpenGL
* Supports older hardware like cameras, cdroms, MIDI
* Has better support for pixel manipulation in a memory buffer that isn't
  displayed on screen.


.. _type hinting: https://docs.python.org/3/library/typing.html
.. _moirรฉ pattern: http://stackoverflow.com/questions/10148479/artifacts-when-drawing-primitives-with-pygame