{"repo":"kitao/pyxel","free":true,"listed":false,"github":"https://github.com/kitao/pyxel","clone":"git clone https://github.com/kitao/pyxel.git","description":"A retro game engine for Python","language":"Rust","stars":17648,"topics":["game","game-development","game-engine","gamedev","graphics","html","opengl","pico-8","pixel-art","python","pyxel","retro-game","rust","tic-80","wasm","webgl"],"license":null,"category":"game_engine","readme_excerpt":"# <img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/pyxel_logo_152x64.png\" alt=\"Pyxel\">\n\n[![Downloads](https://static.pepy.tech/personalized-badge/pyxel?period=total&units=international_system&left_color=grey&right_color=blue&left_text=PyPI%20downloads)](https://pypi.org/project/pyxel/)\n[![GitHub Repo stars](https://img.shields.io/github/stars/kitao/pyxel?style=social)](https://github.com/kitao/pyxel)\n[![GitHub forks](https://img.shields.io/github/forks/kitao/pyxel?style=social)](https://github.com/kitao/pyxel)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/kitao?label=Sponsor%20me&logo=github%20sponsors&style=social)](https://github.com/sponsors/kitao)\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H27VDKD)\n\n**Pyxel** (/ˈpɪksəl/) is a retro game engine for Python.\n\nWith simple specifications inspired by retro gaming consoles, such as displaying only 16 colors and supporting 4 sound channels, you can easily enjoy making pixel-art-style games.\n\nPyxel is open source under the [MIT License](https://github.com/kitao/pyxel/blob/main/LICENSE) and free to use. Let's start making retro games with Pyxel!\n\nAlso, this project is developed by one person, kept going by your GitHub stars. If you enjoy it, please give it a star!\n\n**[▸ User Guide](https://kitao.github.io/pyxel/web/user-guide/)**\n\n**[▸ User Examples](https://kitao.github.io/pyxel-user-examples/)**\n\n**[▸ Share Your Work](https://github.com/kitao/pyxel/discussions/new?category=user-examples)**\n\n---\n\n**Pyxel**（ピクセル）は Python 向けのレトロゲームエンジンです。\n\n使える色は 16 色のみ、同時に再生できる音は 4 音までなど、レトロゲーム機を意識したシンプルな仕様で、Python を使ってドット絵スタイルのゲームづくりが気軽に楽しめます。\n\nPyxel は [MIT License](https://github.com/kitao/pyxel/blob/main/LICENSE) のオープンソースで、無料で自由に使えます。Pyxel でレトロゲームづくりを始めましょう！\n\nまた、このプロジェクトは GitHub のスターを励みに、個人で開発を続けています。気に入ったらぜひスター登録をお願いします！\n\n**[▸ ユーザーガイド](https://kitao.github.io/pyxel/web/user-guide/)**\n\n**[▸ ユーザー作品集](https://kitao.github.io/pyxel-user-examples/)**\n\n**[▸ 作品を投稿する](https://github.com/kitao/pyxel/discussions/new?category=user-examples)**\n\n[<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/pyxel_thanks.png\" alt=\"Pyxel User Examples\" width=\"553\">](https://kitao.github.io/pyxel-user-examples/) [<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/pyxel_book.png\" alt=\"Pyxel book\" width=\"190\">](https://gihyo.jp/book/2025/978-4-297-14657-3)\n\n<p>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/examples/02-jump-game.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/02_jump_game.gif\" alt=\"Jump game\" width=\"253\">\n</a>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/examples/10-platformer.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/10_platformer.gif\" alt=\"Platformer\" width=\"222\">\n</a>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/apps/30sec-of-daylight.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/30sec_of_daylight.gif\" alt=\"30 Seconds of Daylight\" width=\"268\">\n</a>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/apps/megaball.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/megaball.gif\" alt=\"Megaball\" width=\"231\">\n</a>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/tools/image-editor.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/image_tilemap_editor.gif\" alt=\"Image and tilemap editor\" width=\"256\">\n</a>\n<a href=\"https://kitao.github.io/pyxel/web/showcase/tools/sound-editor.html\">\n<img src=\"https://raw.githubusercontent.com/kitao/pyxel/main/docs/images/sound_music_editor.gif\" alt=\"Sound and music editor\" width=\"256\">\n</a>\n</p>\n","default_branch":"main","files":460,"tree":[".gitattributes",".github/DISCUSSION_TEMPLATE/user-examples.yml",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/workflows/build.yml",".github/workflows/release.yml",".gitignore",".nojekyll",".vscode/settings.json","CHANGELOG.md","LICENSE","Makefile","README.md","crates/Cargo.lock","crates/Cargo.toml","crates/pyxel-binding/Cargo.toml","crates/pyxel-binding/build.rs","crates/pyxel-binding/src/audio_wrapper.rs","crates/pyxel-binding/src/channel_wrapper.rs","crates/pyxel-binding/src/constant_wrapper.rs","crates/pyxel-binding/src/font_wrapper.rs","crates/pyxel-binding/src/graphics_wrapper.rs","crates/pyxel-binding/src/image_wrapper.rs","crates/pyxel-binding/src/input_wrapper.rs","crates/pyxel-binding/src/lib.rs","crates/pyxel-binding/src/math_wrapper.rs","crates/pyxel-binding/src/music_wrapper.rs","crates/pyxel-binding/src/pyxel_singleton.rs","crates/pyxel-binding/src/resource_wrapper.rs","crates/pyxel-binding/src/sound_wrapper.rs","crates/pyxel-binding/src/system_wrapper.rs","crates/pyxel-binding/src/tilemap_wrapper.rs","crates/pyxel-binding/src/tone_wrapper.rs","crates/pyxel-binding/src/utils.rs","crates/pyxel-binding/src/variable_wrapper.rs","crates/pyxel-core/Cargo.toml","crates/pyxel-core/build.rs","crates/pyxel-core/src/assets/pyxel_logo_152x64.png","crates/pyxel-core/src/audio.rs","crates/pyxel-core/src/bgm_generator.rs","crates/pyxel-core/src/canvas.rs","crates/pyxel-core/src/channel.rs","crates/pyxel-core/src/font.rs","crates/pyxel-core/src/graphics.rs","crates/pyxel-core/src/image.rs","crates/pyxel-core/src/input.rs","crates/pyxel-core/src/lib.rs","crates/pyxel-core/src/math.rs","crates/pyxel-core/src/mml_command.rs","crates/pyxel-core/src/mml_parser.rs","crates/pyxel-core/src/music.rs","crates/pyxel-core/src/old_mml_parser.rs","crates/pyxel-core/src/old_resource_data.rs","crates/pyxel-core/src/pcm_decoder.rs","crates/pyxel-core/src/platform/event.rs","crates/pyxel-core/src/platform/facade.rs","crates/pyxel-core/src/platform/key.rs","crates/pyxel-core/src/platform/mod.rs","crates/pyxel-core/src/platform/sdl2/mod.rs","crates/pyxel-core/src/platform/sdl2/platform_sdl2.rs","crates/pyxel-core/src/platform/sdl2/poll_events.rs","crates/pyxel-core/src/platform/sdl2/sdl2_sys.rs","crates/pyxel-core/src/profiler.rs","crates/pyxel-core/src/pyxel.rs","crates/pyxel-core/src/rect_area.rs","crates/pyxel-core/src/resource.rs","crates/pyxel-core/src/resource_data.rs","crates/pyxel-core/src/screencast.rs","crates/pyxel-core/src/settings.rs","crates/pyxel-core/src/shaders/common.frag","crates/pyxel-core/src/shaders/common.vert","crates/pyxel-core/src/shaders/crisp.frag","crates/pyxel-core/src/shaders/gl_version.glsl","crates/pyxel-core/src/shaders/gles_version.glsl","crates/pyxel-core/src/shaders/retro.frag","crates/pyxel-core/src/shaders/smooth.frag","crates/pyxel-core/src/sound.rs","crates/pyxel-core/src/system.rs","crates/pyxel-core/src/tilemap.rs","crates/pyxel-core/src/tmx_parser.rs","crates/pyxel-core/src/tone.rs","crates/pyxel-core/src/utils.rs","crates/pyxel-core/src/voice.rs","crates/pyxel-core/src/window_watcher.rs","crates/pyxel-core/wrapper.h","crates/rustfmt.toml","docs/api-reference.md","docs/coding-policy-audit.md","docs/coding-policy.md","docs/editor-manual.md","docs/faq-ja.md","docs/faq.md","docs/images/01_hello_pyxel.gif","docs/images/02_jump_game.gif","docs/images/03_draw_api.gif","docs/images/04_sound_api.gif","docs/images/05_color_palette.png","docs/images/06_click_game.gif","docs/images/07_snake.gif","docs/images/08_triangle_api.gif","docs/images/09_shooter.gif","docs/images/10_platformer.gif","docs/images/11_offscreen.gif","docs/images/12_perlin_noise.gif","docs/images/13_custom_font.png","docs/images/14_synthesizer.gif","docs/images/15_tiled_map_file.gif","docs/images/16_transform.gif","docs/images/17_app_launcher.gif","docs/images/18_audio_playback.gif","docs/images/19_perspective.gif","docs/images/30sec_of_daylight.gif","docs/images/99_flip_animation.gif","docs/images/blt_figure.png","docs/images/bltm_figure.png","docs/images/image_editor.gif","docs/images/image_tilemap_editor.gif","docs/images/megaball.gif","docs/images/music_editor.gif","docs/images/pyxel_book.png","docs/images/pyxel_editor.gif","docs/images/pyxel_icon_64x64.png","docs/images/pyxel_logo_152x64.png","docs/images/pyxel_palette.png","docs/images/pyxel_testing_scene.jpeg","docs/images/pyxel_thanks.png","docs/images/sound_editor.gif","docs/images/sound_music_editor.gif","docs/images/tilemap_editor.gif","docs/mml-commands.md","docs/pyxel.gpl","docs/pyxres-format.md","docs/user-guide.md","docs/web-usage.md","python/pyproject.toml","python/pyxel/__init__.py","python/pyxel/__init__.pyi","python/pyxel/__main__.py","python/pyxel/cli.py","python/pyxel/editor/__init__.py","python/pyxel/editor/app.py","python/pyxel/editor/assets/editor_220x160.png","python/pyxel/editor/canvas_panel.py","python/pyxel/editor/editor_base.py","python/pyxel/editor/extensions.py","python/pyxel/editor/field_cursor.py","python/pyxel/editor/image_editor.py","python/pyxel/editor/image_viewer.py","python/pyxel/editor/music_editor.py","python/pyxel/editor/music_field.py","python/pyxel/editor/octave_bar.py","python/pyxel/editor/piano_keyboard.py","python/pyxel/editor/piano_roll.py","python/pyxel/editor/settings.py","python/pyxel/editor/sound_editor.py","python/pyxel/editor/sound_field.py","python/pyxel/editor/sound_selector.py","python/pyxel/editor/tilemap_editor.py","python/pyxel/editor/tilemap_viewer.py","python/pyxel/editor/widgets/__init__.py","python/pyxel/editor/widgets/button.py","python/pyxel/editor/widgets/color_picker.py","python/pyxel/editor/widgets/image_button.py","python/pyxel/editor/widgets/image_toggle_button.py","python/pyxel/editor/widgets/number_picker.py","python/pyxel/editor/widgets/radio_button.py","python/pyxel/editor/widgets/scroll_bar.py","python/pyxel/editor/widgets/settings.py","python/pyxel/editor/widgets/text_button.py","python/pyxel/editor/widgets/toggle_button.py","python/pyxel/editor/widgets/widget.py","python/pyxel/editor/widgets/widget_var.py","python/pyxel/examples/01_hello_pyxel.py","python/pyxel/examples/02_jump_game.py","python/pyxel/examples/03_draw_api.py","python/pyxel/examples/04_sound_api.py","python/pyxel/examples/05_color_palette.py","python/pyxel/examples/06_click_game.py","python/pyxel/examples/07_snake.py","python/pyxel/examples/08_triangle_api.py","python/pyxel/examples/09_shooter.py","python/pyxel/examples/10_platformer.py","python/pyxel/examples/11_offscreen.py","python/pyxel/examples/12_perlin_noise.py","python/pyxel/examples/13_custom_font.py","python/pyxel/examples/14_synthesizer.py","python/pyxel/examples/15_tiled_map_file.py","python/pyxel/examples/16_transform.py","python/pyxel/examples/17_app_launcher.py","python/pyxel/examples/18_audio_playback.py","python/pyxel/examples/19_perspective.py","python/pyxel/examples/99_flip_animation.py","python/pyxel/examples/apps/30sec_of_daylight.pyxapp","python/pyxel/examples/apps/cursed_caverns.pyxapp","python/pyxel/examples/apps/laser-jetman.pyxapp","python/pyxel/examples/apps/mega_wing.pyxapp","python/pyxel/examples/apps/megaball.pyxapp","python/pyxel/examples/apps/space_rescue.pyxapp","python/pyxel/examples/apps/vortexion.pyxapp","python/pyxel/examples/assets/PixelMplus10-Regular.ttf","python/pyxel/examples/assets/PixelMplus12-Regular.ttf","python/pyxel/examples/assets/audio_bgm.pyxpal","python/pyxel/examples/assets/audio_bgm1.ogg","python/pyxel/examples/assets/audio_bgm1.png","python/pyxel/examples/assets/audio_bgm2.ogg","python/pyxel/examples/assets/audio_bgm2.png","python/pyxel/examples/assets/cat_16x16.png","python/pyxel/examples/assets/jump_game.pyxres","python/pyxel/examples/assets/noguchi_128x128.png","python/pyxel/examples/assets/offscreen.pyxres","python/pyxel/examples/assets/platformer.pyxres","python/pyxel/examples/assets/pyxel_logo_38x16.png","python/pyxel/examples/assets/sample.pyxres","python/pyxel/examples/assets/tileset_24x32.png","python/pyxel/examples/assets/umplus_j10r.bdf","python/pyxel/examples/assets/umplus_j12r.bdf","python/pyxel/examples/assets/urban_rpg.png","python/pyxel/examples/assets/urban_rpg.tmx","python/pyxel/py.typed","python/pyxel/utils.py","python/requirements.txt","python/tests/_assertions.py","python/tests/_capture.py","python/tests/_runner.py","python/tests/conftest.py","python/tests/references/apps/30sec_of_daylight_f30.png","python/tests/references/apps/30sec_of_daylight_f60.png","python/tests/references/apps/cursed_caverns_f100.png","python/tests/references/apps/cursed_caverns_f70.png","python/tests/references/apps/laser-jetman_f210.png","python/tests/references/apps/laser-jetman_f270.png","python/tests/references/apps/mega_wing_f150.png","python/tests/references/apps/mega_wing_f30.png","python/tests/references/apps/megaball_f30.png","python/tests/references/apps/megaball_f90.png","python/tests/references/apps/space_rescue_f30.png","python/tests/references/apps/space_rescue_f60.png","python/tests/references/apps/vortexion_f200.png","python/tests/references/apps/vortexion_f30.png","python/tests/references/audio/classic_effects.wav","python/tests/references/audio/classic_music.wav","python/tests/references/audio/classic_sound.wav","python/tests/references/audio/mml_modulation.wav","python/tests/references/audio/mml_music.wav","python/tests/references/audio/mml_sound.wav","python/tests/references/audio/pcm_sound.wav","python/tests/references/editor/editor_image_16colors_f1.png","python/tests/references/editor/editor_image_16colors_fedit.png","python/tests/references/editor/editor_image_32colors_f1.png","python/tests/references/editor/editor_image_32colors_fedit.png","python/tests/references/editor/editor_image_64colors_f1.png","python/tests/references/editor/editor_image_64colors_fedit.png","python/tests/references/editor/editor_image_f1.png","python/tests/references/editor/editor_image_fedit.png","python/tests/references/editor/editor_music_f1.png","python/tests/references/editor/editor_music_fedit.png","python/tests/references/editor/editor_sound_f1.png","python/tests/references/editor/editor_sound_fedit.png","python/tests/references/editor/editor_tilemap_f1.png","python/tests/references/editor/editor_tilemap_fedit.png","python/tests/references/examples/01_hello_pyxel_f8.png","python/tests/references/examples/02_jump_game_f10.png","python/tests/references/examples/03_draw_api_f1.png","python/tests/references/examples/03_draw_api_f155.png","python/tests/references/examples/04_sound_api_f1.png","python/tests/references/examples/05_color_palette_f0.png","python/tests/references/examples/06_click_game_f1.png","python/tests/references/examples/06_click_game_f10.png","python/tests/references/examples/07_snake_f1.png","python/tests/references/examples/08_triangle_api_f1.png","python/tests/references/examples/08_triangle_api_f200.png","python/tests/references/examples/09_shooter_f1.png","python/tests/references/examples/09_shooter_f120.png","python/tests/references/examples/10_platformer_f1.png","python/tests/references/examples/10_platformer_f80.png","python/tests/references/examples/11_offscreen_f1.png","python/tests/references/examples/11_offscreen_f121.png","python/tests/references/examples/12_perlin_noise_f1.png","python/tests/references/examples/12_perlin_noise_f40.png","python/tests/references/examples/13_custom_font_f0.png","python/tests/references/examples/14_synthesizer_f1.png","python/tests/references/examples/15_tiled_map_file_f1.png","python/tests/references/examples/16_transform_f1.png","python/tests/references/examples/16_transform_f45.png","python/tests/references/examples/17_app_launcher_f1.png","python/tests/references/examples/18_audio_playback_f1.png","python/tests/references/examples/18_audio_playback_f3.png","python/tests/references/examples/19_perspective_f1.png","python/tests/references/examples/19_perspective_f20.png","python/tests/references/examples/99_flip_animation_f1.png","python/tests/references/examples/99_flip_animation_f30.png","python/tests/test_apps.py","python/tests/test_audio.py","python/tests/test_audio_render.py","python/tests/test_audio_semantics.py","python/tests/test_channel.py","python/tests/test_cli.py","python/tests/test_editor.py","python/tests/test_errors.py","python/tests/test_examples.py","python/tests/test_font.py","python/tests/test_format_prose.py","python/tests/test_generate_docs.py","python/tests/test_graphics.py","python/tests/test_image.py","python/tests/test_import_hook.py","python/tests/test_input.py","python/tests/test_math.py","python/tests/test_music.py","python/tests/test_resize.py","python/tests/test_resource_io.py","python/tests/test_run_examples.py","python/tests/test_sequences.py","python/tests/test_sound.py","python/tests/test_start_showcase.py","python/tests/test_system.py","python/tests/test_tilemap.py","python/tests/test_tone.py","python/tests/test_update_version.py","python/tests/test_utils.py","rust-toolchain.toml","scripts/check_wasm_wheel","scripts/format_prose","scripts/generate_docs","scripts/generate_gamepad_images","scripts/generate_pyi_docstrings","scripts/generate_thanks_image","scripts/install_wasm_wheel","scripts/run_examples","scripts/setup_venv","scripts/start_showcase","scripts/update_version","wasm/api-reference/index.html","wasm/code-maker/index.html","wasm/editor-manual/index.html","wasm/images/click_to_start_114x14.png","wasm/images/gamepad_button_98x98.png","wasm/images/gamepad_cross_98x98.png","wasm/images/gamepad_menu_92x26.png","wasm/images/pyxel_icon_64x64.ico","wasm/images/pyxel_logo_76x32.png","wasm/images/touch_to_start_114x14.png","wasm/import_hook.py","wasm/launcher/index.html","wasm/mml-studio/index.html","wasm/pyxel-2.9.9-cp311-abi3-emscripten_5_0_3_wasm32.whl","wasm/pyxel.css","wasm/pyxel.js","wasm/showcase/index.html","wasm/user-guide/index.html","web/api-reference/api-reference.js","web/api-reference/api-reference.json","web/api-reference/index.html","web/code-maker/index.html","web/code-maker/manual.html","web/code-maker/manual.json","web/code-maker/pyxel-editor.html","web/code-maker/pyxel-project.zip","web/code-maker/pyxel-screen.html","web/editor-manual/editor-manual.json","web/editor-manual/images/btn_image.png","web/editor-manual/images/btn_loop.png","web/editor-manual/images/btn_music.png","web/editor-manual/images/btn_play.png","web/editor-manual/images/btn_redo.png","web/editor-manual/images/btn_save.png","web/editor-manual/images/btn_sound.png","web/editor-manual/images/btn_stop.png","web/editor-manual/images/btn_tilemap.png","web/editor-manual/images/btn_undo.png","web/editor-manual/images/image_banknum.png","web/editor-manual/images/image_bankview.png","web/editor-manual/images/image_canvas.png","web/editor-manual/images/image_editor.gif","web/editor-manual/images/image_palette.png","web/editor-manual/images/image_tools.png","web/editor-manual/images/music_buttons.png","web/editor-manual/images/music_editor.gif","web/editor-manual/images/music_mscnum.png","web/editor-manual/images/music_playback.png","web/editor-manual/images/music_sequence.png","web/editor-manual/images/sound_editor.gif","web/editor-manual/images/sound_octave_l.png","web/editor-manual/images/sound_piano.png","web/editor-manual/images/sound_playback.png","web/editor-manual/images/sound_property.png","web/editor-manual/images/sound_sndnum.png","web/editor-manual/images/sound_speed.png","web/editor-manual/images/tilemap_canvas.png","web/editor-manual/images/tilemap_editor.gif","web/editor-manual/images/tilemap_imgnum.png","web/editor-manual/images/tilemap_mapview.png","web/editor-manual/images/tilemap_tileview.png","web/editor-manual/images/tilemap_tmnum.png","web/editor-manual/images/tilemap_tools.png","web/editor-manual/images/tool_bucket.png","web/editor-manual/images/tool_circ.png","web/editor-manual/images/tool_circb.png"],"storefront":"/r/kitao","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/kitao/pyxel/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}