Skip to content

Instantly share code, notes, and snippets.

@davidpendergast
Last active August 22, 2023 13:53
Show Gist options
  • Save davidpendergast/77e49f8028ce611ac478c38f77f9f72f to your computer and use it in GitHub Desktop.
Save davidpendergast/77e49f8028ce611ac478c38f77f9f72f to your computer and use it in GitHub Desktop.
Pygame vs. Pygame-CE API Differences
Pygame vs. Pygame-CE API Differences
------------------------------------
This document is meant to serve as a reference for pygame developers that use
both pygame and pygame-ce. It is not an endorsement of one over the other.
Last updated: April 26, 2023
Info was compiled from the repos' release pages and their respective docs:
https://github.com/pygame/pygame/releases
https://github.com/pygame-community/pygame-ce/releases
https://www.pygame.org/docs/index.html
https://pyga.me/docs/
Pygame-CE's first version was 2.1.3, which is equivalent to Pygame's 2.1.3 API-wise.
Both released on Feb 14, 2023.
Since then, they've mostly diverged in terms of API changes.
Changes that appear in both packages eventually are marked with a (*).
*------------------------------*
| Pygame's changes since 2.1.3 |
*------------------------------*
pygame 2.2.0: (Feb 27, 2023)
* added Color.premul_alpha() and Surface.premul_alpha()
* added Color.grayscale() and transform.grayscale()
* added Vector(2|3).__round__()
* added "window" attribute to DROPFILE / DROPTEXT events
pygame 2.3.0: (March 14, 2023)
added special_flags= arg to sprite.Group.draw()
added Rect.scale_by() and scale_by_ip()
changed behavior when you assign floats to Rect's attributes (it now rounds instead of truncating)
added _sdl2.video.Window.from_window() class method
added Vector2.from_polar() class method
added math.lerp() function
*---------------------------------*
| Pygame-CE's Changes since 2.1.3 |
*---------------------------------*
pygame-ce 2.1.4: (March 5, 2023)
* added Color.premul_alpha() and Surface.premul_alpha()
* added Color.grayscale() and transform.grayscale()
* added Vector(2/3).__round__()
* added "window" attribute to DROPFILE / DROPTEXT events
Font enhancements:
change no-arg Font constructor to give default font with size 20
added pygame.Font alias
added wraplength arg to Font.render
added Font.align
added Font.set_script()
added Font.set_direction()
added pygame.mixer.music.get_metadata()
added Surface.fblits()
added pitch arg to image.frombuffer / image.from(string|bytes)
added pygame.IS_CE flag
added pygame.Joystick, pygame.Font, pygame.Clock, pygame.Event, pygame.Channel aliases
added _sdl2.draw_triangle()
added _sdl2.draw_quad()
pygame-ce 2.2.0: (March 25, 2023)
added FRect
improved display.set_mode()'s vsync=True behavior
added display.is_vsync(), get_current_refresh_rate(), and get_desktop_refresh_rates()
added transform.invert(), box_blur(), and gaussian_blur()
added system module
added scrap.put_text(), get_text(), and has_text() (and deprecated rest of scap module)
added Font.name
added swizzling for Color (i.e. ability to call .rgb or .rgba)
changed image.save() and image.load() to support file= keyword args
changed mixer to raise FileNotFoundExceptions where appropriate
improved line and circle drawing
removed fastevent module
pygame-ce 2.2.1: (April 2, 2023)
No API changes
@davidpendergast
Copy link
Author

@avaxar pygame and pygame-ce's version numbering schemes are totally desynced after 2.1.3 so it doesn't really make sense to compare them this way in my opinion. For example, you can see that pygame's 2.2.0 is actually better aligned with ce's 2.1.4 (by both date and feature set) than with ce's 2.2.0, despite using the same numbers as 2.2.0. And both frequently skip version numbers the other uses. You can feel free to keep updating your markdown version here though and organize it however you like.

@avaxar
Copy link

avaxar commented Apr 27, 2023

Yeah, it's kind of tricky to visualize the chronology correctly while also trying to show the differences side-by-side, as text/markdown is a rather one-dimensional linear medium.

Edited.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment