2.0.0.dev6 released, itchy book.


Firstly, pygame 2.0.0.dev6 was pushed out the door this week. So far no regressions from the last release a month ago, which was nice.  It was also good to release much sooner than last time. The last releases were a few months apart. Automating lots of it is finally starting to pay off. Adding support for python 3.8 was a bit of trouble, but went pretty well thanks to people working on other packages sharing how they did it. A further motivation to work on pygame 2 is that pushing a python 3.8 release out the door for pygame 1.9.6 would be a lot of hassle.

Then yesterday, I decided to put the "pygame 4000" book up on itch. Release early, release often they say!  So I did. Well, I massaged some build scripts to generate the 4000.zip file, and started filling in the form with the description.


This morning I got up, and someone had downloaded the book! I wanted to shout out, thank you! But I did it quietly inside my head, as people were sleeping.

So I set about fixing a few things on the pygame website. There were a few issues people were having when editing their games. Then there was a long standing issue with the 'delete releases' button not working. Turned out there was a "raise NotImplementedError" in there... so no wonder! And finally some de-spamming of the website.

In the book I started a new section called "Awesome goodies for pygame".  Awesome things to use with pygame. Also started organizing the headers better in some of the docs. So that they match the rest, and so the table of contents looks a bit better. I'll do a new release on itch each time I add something useful.


Uploading the new 4000.zip now.


Here's the contents...

.
├── README.rst
├── code
│   ├── sdl2_basics_tutorial_fundamentals
│   │   └── hey.c
│   └── sound_generation_and_drawing
│       ├── metronome.py
│       └── sound_samples.py
├── docs
│   ├── _static
│   ├── arduino_pygame.rst
│   ├── awesome_goodies_for_pygame.html
│   ├── awesome_goodies_for_pygame.rst
│   ├── images
│   │   ├── fundamentals
│   │   │   ├── skull_ascii.jpg
│   │   │   ├── skull_done.jpg
│   │   │   ├── skull_early.jpg
│   │   │   └── surface_color.jpg
│   │   ├── pixel_perfect
│   │   │   ├── screenshot_did_not_hit_wall.png
│   │   │   └── screenshot_hit_wall.png
│   │   └── what-is-a-pygame-4000-for.png
│   ├── index.rst
│   ├── interpreter
│   │   ├── 01_interpreter.rst
│   │   ├── 02_interpreter.rst
│   │   ├── 03_interpreter.rst
│   │   └── lets-make-a-shit-javascript-interpreter.png
│   ├── interpreter.rst
│   ├── pixel_perfect_collision_detection.rst
│   ├── port_and_market.rst
│   ├── python_best_practices.rst
│   ├── python_game_programming
│   │   ├── 01_introduction.rst
│   │   ├── 02_python_intro.rst
│   │   ├── 03_pygame_introduction.rst
│   │   ├── 04_pygame_more.rst
│   │   ├── 05_parts_of_a_game.rst
│   │   ├── 06_abstraction.rst
│   │   └── 07_minimal_game.rst
│   ├── python_game_programming.rst
│   ├── sdl2_basics_tutorial_fundamentals.rst
│   ├── sound_generation_and_drawing.rst
│   └── unit_test.rst
├── examples
│   ├── README.rst
│   ├── __init__.py
│   ├── aacircle.py
│   ├── aliens.py
│   ├── arraydemo.py
│   ├── audiocapture.py
│   ├── blend_fill.py
│   ├── blit_blends.py
│   ├── camera.py
│   ├── chimp.py
│   ├── cursors.py
│   ├── data
│   │   ├── alien1.gif
│   │   ├── alien1.jpg
│   │   ├── alien1.png
│   │   ├── alien2.gif
│   │   ├── alien2.png
│   │   ├── alien3.gif
│   │   ├── alien3.png
│   │   ├── arraydemo.bmp
│   │   ├── asprite.bmp
│   │   ├── background.gif
│   │   ├── blue.mpg
│   │   ├── bomb.gif
│   │   ├── boom.wav
│   │   ├── brick.png
│   │   ├── car_door.wav
│   │   ├── chimp.bmp
│   │   ├── city.png
│   │   ├── danger.gif
│   │   ├── explosion1.gif
│   │   ├── fist.bmp
│   │   ├── house_lo.mp3
│   │   ├── house_lo.ogg
│   │   ├── house_lo.wav
│   │   ├── liquid.bmp
│   │   ├── midikeys.png
│   │   ├── oldplayer.gif
│   │   ├── player1.gif
│   │   ├── punch.wav
│   │   ├── sans.ttf
│   │   ├── secosmic_lo.wav
│   │   ├── shot.gif
│   │   ├── static.png
│   │   ├── whiff.wav
│   │   └── yuv_1.pgm
│   ├── dropevent.py
│   ├── eventlist.py
│   ├── fastevents.py
│   ├── font_viewer.py
│   ├── fonty.py
│   ├── freetype_misc.py
│   ├── glcube.py
│   ├── headless_no_windows_needed.py
│   ├── liquid.py
│   ├── mask.py
│   ├── midi.py
│   ├── moveit.py
│   ├── music_drop_fade.py
│   ├── overlay.py
│   ├── pixelarray.py
│   ├── playmus.py
│   ├── prevent_display_stretching.py
│   ├── scaletest.py
│   ├── scrap_clipboard.py
│   ├── scroll.py
│   ├── setmodescale.py
│   ├── sound.py
│   ├── sound_array_demos.py
│   ├── sprite_texture.py
│   ├── stars.py
│   ├── testsprite.py
│   ├── textinput.py
│   ├── vgrade.py
│   └── video.py
├── pygame4000.pdf
├── pygamedocs.epub
├── pygamedocs.pdf
└── pygamedocs_html
    ├── _images
    │   ├── camera_average.jpg
    │   ├── camera_background.jpg
    │   ├── camera_green.jpg
    │   ├── camera_hsv.jpg
    │   ├── camera_mask.jpg
    │   ├── camera_rgb.jpg
    │   ├── camera_thresh.jpg
    │   ├── camera_thresholded.jpg
    │   ├── camera_yuv.jpg
    │   ├── chimpshot.gif
    │   ├── draw_module_example.png
    │   ├── intro_ball.gif
    │   ├── intro_blade.jpg
    │   ├── intro_freedom.jpg
    │   ├── joystick_calls.png
    │   ├── surfarray_allblack.png
    │   ├── surfarray_flipped.png
    │   ├── surfarray_redimg.png
    │   ├── surfarray_rgbarray.png
    │   ├── surfarray_scaledown.png
    │   ├── surfarray_scaleup.png
    │   ├── surfarray_soften.png
    │   ├── surfarray_striped.png
    │   ├── surfarray_xfade.png
    │   ├── tom_basic.png
    │   ├── tom_event-flowchart.png
    │   ├── tom_formulae.png
    │   └── tom_radians.png
    ├── _sources
    │   ├── c_api
    │   │   ├── base.rst.txt
    │   │   ├── bufferproxy.rst.txt
    │   │   ├── cdrom.rst.txt
    │   │   ├── color.rst.txt
    │   │   ├── display.rst.txt
    │   │   ├── event.rst.txt
    │   │   ├── freetype.rst.txt
    │   │   ├── mixer.rst.txt
    │   │   ├── rect.rst.txt
    │   │   ├── rwobject.rst.txt
    │   │   ├── slots.rst.txt
    │   │   ├── surface.rst.txt
    │   │   ├── surflock.rst.txt
    │   │   └── version.rst.txt
    │   ├── c_api.rst.txt
    │   ├── filepaths.rst.txt
    │   ├── index.rst.txt
    │   ├── ref
    │   │   ├── bufferproxy.rst.txt
    │   │   ├── camera.rst.txt
    │   │   ├── cdrom.rst.txt
    │   │   ├── color.rst.txt
    │   │   ├── cursors.rst.txt
    │   │   ├── display.rst.txt
    │   │   ├── draw.rst.txt
    │   │   ├── event.rst.txt
    │   │   ├── examples.rst.txt
    │   │   ├── font.rst.txt
    │   │   ├── freetype.rst.txt
    │   │   ├── gfxdraw.rst.txt
    │   │   ├── image.rst.txt
    │   │   ├── joystick.rst.txt
    │   │   ├── key.rst.txt
    │   │   ├── locals.rst.txt
    │   │   ├── mask.rst.txt
    │   │   ├── math.rst.txt
    │   │   ├── midi.rst.txt
    │   │   ├── mixer.rst.txt
    │   │   ├── mouse.rst.txt
    │   │   ├── music.rst.txt
    │   │   ├── overlay.rst.txt
    │   │   ├── pixelarray.rst.txt
    │   │   ├── pixelcopy.rst.txt
    │   │   ├── pygame.rst.txt
    │   │   ├── rect.rst.txt
    │   │   ├── scrap.rst.txt
    │   │   ├── sndarray.rst.txt
    │   │   ├── sprite.rst.txt
    │   │   ├── surface.rst.txt
    │   │   ├── surfarray.rst.txt
    │   │   ├── tests.rst.txt
    │   │   ├── time.rst.txt
    │   │   ├── touch.rst.txt
    │   │   └── transform.rst.txt
    │   └── tut
    │       ├── CameraIntro.rst.txt
    │       ├── ChimpLineByLine.rst.txt
    │       ├── DisplayModes.rst.txt
    │       ├── ImportInit.rst.txt
    │       ├── MakeGames.rst.txt
    │       ├── MoveIt.rst.txt
    │       ├── PygameIntro.rst.txt
    │       ├── SpriteIntro.rst.txt
    │       ├── SurfarrayIntro.rst.txt
    │       ├── chimp.py.rst.txt
    │       ├── newbieguide.rst.txt
    │       ├── tom_games2.rst.txt
    │       ├── tom_games3.rst.txt
    │       ├── tom_games4.rst.txt
    │       ├── tom_games5.rst.txt
    │       └── tom_games6.rst.txt
    ├── _static
    │   ├── basic.css
    │   ├── doctools.js
    │   ├── documentation_options.js
    │   ├── file.png
    │   ├── jquery-3.4.1.js
    │   ├── jquery.js
    │   ├── language_data.js
    │   ├── minus.png
    │   ├── plus.png
    │   ├── pygame.css
    │   ├── pygame.ico
    │   ├── pygame_tiny.png
    │   ├── pygments.css
    │   ├── reset.css
    │   ├── searchtools.js
    │   ├── tooltip.css
    │   ├── underscore-1.3.1.js
    │   └── underscore.js
    ├── c_api
    │   ├── base.html
    │   ├── bufferproxy.html
    │   ├── cdrom.html
    │   ├── color.html
    │   ├── display.html
    │   ├── event.html
    │   ├── freetype.html
    │   ├── mixer.html
    │   ├── rect.html
    │   ├── rwobject.html
    │   ├── slots.html
    │   ├── surface.html
    │   ├── surflock.html
    │   └── version.html
    ├── c_api.html
    ├── filepaths.html
    ├── genindex.html
    ├── html
    │   ├── _images
    │   │   ├── camera_average.jpg
    │   │   ├── camera_background.jpg
    │   │   ├── camera_green.jpg
    │   │   ├── camera_hsv.jpg
    │   │   ├── camera_mask.jpg
    │   │   ├── camera_rgb.jpg
    │   │   ├── camera_thresh.jpg
    │   │   ├── camera_thresholded.jpg
    │   │   ├── camera_yuv.jpg
    │   │   ├── chimpshot.gif
    │   │   ├── draw_module_example.png
    │   │   ├── intro_ball.gif
    │   │   ├── intro_blade.jpg
    │   │   ├── intro_freedom.jpg
    │   │   ├── joystick_calls.png
    │   │   ├── surfarray_allblack.png
    │   │   ├── surfarray_flipped.png
    │   │   ├── surfarray_redimg.png
    │   │   ├── surfarray_rgbarray.png
    │   │   ├── surfarray_scaledown.png
    │   │   ├── surfarray_scaleup.png
    │   │   ├── surfarray_soften.png
    │   │   ├── surfarray_striped.png
    │   │   ├── surfarray_xfade.png
    │   │   ├── tom_basic.png
    │   │   ├── tom_event-flowchart.png
    │   │   ├── tom_formulae.png
    │   │   └── tom_radians.png
    │   ├── _sources
    │   │   ├── c_api
    │   │   │   ├── base.rst.txt
    │   │   │   ├── bufferproxy.rst.txt
    │   │   │   ├── cdrom.rst.txt
    │   │   │   ├── color.rst.txt
    │   │   │   ├── display.rst.txt
    │   │   │   ├── event.rst.txt
    │   │   │   ├── freetype.rst.txt
    │   │   │   ├── mixer.rst.txt
    │   │   │   ├── rect.rst.txt
    │   │   │   ├── rwobject.rst.txt
    │   │   │   ├── slots.rst.txt
    │   │   │   ├── surface.rst.txt
    │   │   │   ├── surflock.rst.txt
    │   │   │   └── version.rst.txt
    │   │   ├── c_api.rst.txt
    │   │   ├── filepaths.rst.txt
    │   │   ├── index.rst.txt
    │   │   ├── ref
    │   │   │   ├── bufferproxy.rst.txt
    │   │   │   ├── camera.rst.txt
    │   │   │   ├── cdrom.rst.txt
    │   │   │   ├── color.rst.txt
    │   │   │   ├── cursors.rst.txt
    │   │   │   ├── display.rst.txt
    │   │   │   ├── draw.rst.txt
    │   │   │   ├── event.rst.txt
    │   │   │   ├── examples.rst.txt
    │   │   │   ├── font.rst.txt
    │   │   │   ├── freetype.rst.txt
    │   │   │   ├── gfxdraw.rst.txt
    │   │   │   ├── image.rst.txt
    │   │   │   ├── joystick.rst.txt
    │   │   │   ├── key.rst.txt
    │   │   │   ├── locals.rst.txt
    │   │   │   ├── mask.rst.txt
    │   │   │   ├── math.rst.txt
    │   │   │   ├── midi.rst.txt
    │   │   │   ├── mixer.rst.txt
    │   │   │   ├── mouse.rst.txt
    │   │   │   ├── music.rst.txt
    │   │   │   ├── overlay.rst.txt
    │   │   │   ├── pixelarray.rst.txt
    │   │   │   ├── pixelcopy.rst.txt
    │   │   │   ├── pygame.rst.txt
    │   │   │   ├── rect.rst.txt
    │   │   │   ├── scrap.rst.txt
    │   │   │   ├── sndarray.rst.txt
    │   │   │   ├── sprite.rst.txt
    │   │   │   ├── surface.rst.txt
    │   │   │   ├── surfarray.rst.txt
    │   │   │   ├── tests.rst.txt
    │   │   │   ├── time.rst.txt
    │   │   │   ├── touch.rst.txt
    │   │   │   └── transform.rst.txt
    │   │   └── tut
    │   │       ├── CameraIntro.rst.txt
    │   │       ├── ChimpLineByLine.rst.txt
    │   │       ├── DisplayModes.rst.txt
    │   │       ├── ImportInit.rst.txt
    │   │       ├── MakeGames.rst.txt
    │   │       ├── MoveIt.rst.txt
    │   │       ├── PygameIntro.rst.txt
    │   │       ├── SpriteIntro.rst.txt
    │   │       ├── SurfarrayIntro.rst.txt
    │   │       ├── chimp.py.rst.txt
    │   │       ├── newbieguide.rst.txt
    │   │       ├── tom_games2.rst.txt
    │   │       ├── tom_games3.rst.txt
    │   │       ├── tom_games4.rst.txt
    │   │       ├── tom_games5.rst.txt
    │   │       └── tom_games6.rst.txt
    │   ├── _static
    │   │   ├── basic.css
    │   │   ├── doctools.js
    │   │   ├── documentation_options.js
    │   │   ├── file.png
    │   │   ├── jquery-3.4.1.js
    │   │   ├── jquery.js
    │   │   ├── language_data.js
    │   │   ├── minus.png
    │   │   ├── plus.png
    │   │   ├── pygame.css
    │   │   ├── pygame.ico
    │   │   ├── pygame_tiny.png
    │   │   ├── pygments.css
    │   │   ├── reset.css
    │   │   ├── searchtools.js
    │   │   ├── tooltip.css
    │   │   ├── underscore-1.3.1.js
    │   │   └── underscore.js
    │   ├── c_api
    │   │   ├── base.html
    │   │   ├── bufferproxy.html
    │   │   ├── cdrom.html
    │   │   ├── color.html
    │   │   ├── display.html
    │   │   ├── event.html
    │   │   ├── freetype.html
    │   │   ├── mixer.html
    │   │   ├── rect.html
    │   │   ├── rwobject.html
    │   │   ├── slots.html
    │   │   ├── surface.html
    │   │   ├── surflock.html
    │   │   └── version.html
    │   ├── c_api.html
    │   ├── filepaths.html
    │   ├── genindex.html
    │   ├── index.html
    │   ├── objects.inv
    │   ├── py-modindex.html
    │   ├── ref
    │   │   ├── bufferproxy.html
    │   │   ├── camera.html
    │   │   ├── cdrom.html
    │   │   ├── color.html
    │   │   ├── cursors.html
    │   │   ├── display.html
    │   │   ├── draw.html
    │   │   ├── event.html
    │   │   ├── examples.html
    │   │   ├── font.html
    │   │   ├── freetype.html
    │   │   ├── gfxdraw.html
    │   │   ├── image.html
    │   │   ├── joystick.html
    │   │   ├── key.html
    │   │   ├── locals.html
    │   │   ├── mask.html
    │   │   ├── math.html
    │   │   ├── midi.html
    │   │   ├── mixer.html
    │   │   ├── mouse.html
    │   │   ├── music.html
    │   │   ├── overlay.html
    │   │   ├── pixelarray.html
    │   │   ├── pixelcopy.html
    │   │   ├── pygame.html
    │   │   ├── rect.html
    │   │   ├── scrap.html
    │   │   ├── sndarray.html
    │   │   ├── sprite.html
    │   │   ├── surface.html
    │   │   ├── surfarray.html
    │   │   ├── tests.html
    │   │   ├── time.html
    │   │   ├── touch.html
    │   │   └── transform.html
    │   ├── search.html
    │   ├── searchindex.js
    │   └── tut
    │       ├── CameraIntro.html
    │       ├── ChimpLineByLine.html
    │       ├── DisplayModes.html
    │       ├── ImportInit.html
    │       ├── MakeGames.html
    │       ├── MoveIt.html
    │       ├── PygameIntro.html
    │       ├── SpriteIntro.html
    │       ├── SurfarrayIntro.html
    │       ├── chimp.py.html
    │       ├── newbieguide.html
    │       ├── tom_games2.html
    │       ├── tom_games3.html
    │       ├── tom_games4.html
    │       ├── tom_games5.html
    │       └── tom_games6.html
    ├── index.html
    ├── objects.inv
    ├── py-modindex.html
    ├── ref
    │   ├── bufferproxy.html
    │   ├── camera.html
    │   ├── cdrom.html
    │   ├── color.html
    │   ├── cursors.html
    │   ├── display.html
    │   ├── draw.html
    │   ├── event.html
    │   ├── examples.html
    │   ├── font.html
    │   ├── freetype.html
    │   ├── gfxdraw.html
    │   ├── image.html
    │   ├── joystick.html
    │   ├── key.html
    │   ├── locals.html
    │   ├── mask.html
    │   ├── math.html
    │   ├── midi.html
    │   ├── mixer.html
    │   ├── mouse.html
    │   ├── music.html
    │   ├── overlay.html
    │   ├── pixelarray.html
    │   ├── pixelcopy.html
    │   ├── pygame.html
    │   ├── rect.html
    │   ├── scrap.html
    │   ├── sndarray.html
    │   ├── sprite.html
    │   ├── surface.html
    │   ├── surfarray.html
    │   ├── tests.html
    │   ├── time.html
    │   ├── touch.html
    │   └── transform.html
    ├── search.html
    ├── searchindex.js
    └── tut
        ├── CameraIntro.html
        ├── ChimpLineByLine.html
        ├── DisplayModes.html
        ├── ImportInit.html
        ├── MakeGames.html
        ├── MoveIt.html
        ├── PygameIntro.html
        ├── SpriteIntro.html
        ├── SurfarrayIntro.html
        ├── chimp.py.html
        ├── newbieguide.html
        ├── tom_games2.html
        ├── tom_games3.html
        ├── tom_games4.html
        ├── tom_games5.html
        └── tom_games6.html

Get pygame 4000 book

Buy Now$3.00 USD or more