Python Arcade Library Logo

About

  • Introduction
    • Learning Resources
      • Getting Started
      • Experienced Developers
    • Community driven
    • History
  • Frequently asked questions
    • Can I use Arcade resources in my own educational materials?
    • Can I use Arcade in a commercial project?
    • Can I copy and adapt example code for my own projects?
    • Can Arcade run on…?
      • Windows, Mac, and Linux
      • Raspberry Pi and Other SBCs
      • Web
      • Mobile
  • Freedom to Remix and Share
    • Yes, You Can Make Commercial Games!
      • How Do I Publish My Games?
    • The MIT License
    • Public Domain Assets
      • Where are all these assets from?
    • What About Academia?
  • For Educators & Researchers
    • Citation Template
    • Version Considerations
      • Arcade Textbook
    • 2.6.X Maintenance?
    • Raspberry Pi and other SBCs
      • SBC Purchasing Rules of Thumb

Getting Started

  • Install
    • Requirements
      • Windows, Linux, and Intel Mac
      • Raspberry Pi and Other ARM SBCs
    • Using pip
    • Development version
    • Running examples
    • Batteries Included
  • Examples
    • Starting Templates
    • Primitives
      • Drawing Primitives
      • Animating Drawing Primitives
      • Faster Drawing with ShapeElementLists
    • Sprites
      • Player Movement
      • Non-Player Movement
      • Easing
      • Calculating a Path
      • Sprite Properties
      • Games with Levels
      • Shooting with Sprites
    • Audio
      • Sound Effects
      • Music
    • Display Management
      • Resizable Windows
      • Backgrounds
      • Cameras
    • View Management
      • Instruction and Game Over Screens
      • Sectioning a View
    • Platformers
      • Basic Platformers
      • Tiled Map Editor
      • Procedural Generation
    • Graphical User Interface
      • Experimental Widgets
    • Grid-Based Games
    • Advanced
      • Using PyMunk for Physics
      • Frame Buffers
      • OpenGL
    • Concept Games
    • Odds and Ends
      • Particle System
    • Tutorials
    • Stress Tests
  • Tutorials
    • Simple Platformer
      • Step 1 - Install and Open a Window
      • Step 2 - Textures and Sprites
      • Step 3 - Many Sprites with SpriteList
      • Step 4 - Add User Control
      • Step 5 - Add Gravity
      • Step 6 - Resetting
      • Step 7 - Adding a Camera
      • Step 8 - Collecting Coins
      • Step 9 - Adding Sound
      • Step 10 - Adding a Score
      • Step 11 - Using a Scene
      • Step 12 - Loading a Map From a Map Editor
      • Step 13 - More Types of Layers
      • Step 14 - Multiple Levels
    • Pymunk Platformer
      • Common Issues
      • Open a Window
      • Create Constants
      • Create Instance Variables
      • Load and Display Map
      • Add Physics Engine
      • Add Player Movement
      • Add Player Jumping
      • Add Player Animation
      • Shoot Bullets
      • Destroy Bullets and Items
      • Add Moving Platforms
      • Add Ladders
    • Using Views for Start/End Screens
      • Change Main Program to Use a View
      • Add Instruction Screen
      • Game Over Screen
    • Solitaire
      • Open a Window
      • Create Card Sprites
      • Implement Drag and Drop
      • Draw Pile Mats
      • Snap Cards to Piles
      • Shuffle the Cards
      • Track Card Piles
      • Pick Up Card Stacks
      • Deal Out Cards
      • Face Down Cards
      • Restart Game
      • Flip Three From Draw Pile
      • Conclusion
    • Lights
    • Bundling a Game with PyInstaller
      • Bundling a Simple Arcade Script
      • Handling Data Files
      • Troubleshooting
      • Extra Details
      • PyInstaller Documentation
    • Compiling a Game with Nuitka
      • Compiling a Simple Arcade Script
      • But What About Data Files And Folders?
      • Removing The Console Window
      • What About A Custom Taskbar Icon?
      • Additional Information
    • Shaders - Shadertoy
      • Ray-casting Shadows
      • CRT Filter
      • Shader Toy - Glow
      • Shader Toy - Particles
      • Compute Shader
      • GPU Particle Burst
      • Working With Shaders
    • Making a Menu with Arcade’s GUI
      • Step 1: Open a Window
      • Step 2: Switching to Menu View
      • Step 3: Setting Up the Menu View
      • Step 4: Configuring the Menu Buttons
      • Step 5: Finalising the Fake Window aka the Sub Menu
      • Adding a Title label
    • Working With FrameBuffer Objects
  • The Arcade Book
    • Installation
    • Getting Help
    • Tutorials
    • Arcade Skill Tree
  • Built-In Resources
    • Do I have to credit anyone?
    • How do I use these?
    • Top-Level Resources
    • Fonts
      • Kenney TTFs
      • Liberation TTFs
    • GUI Basic Assets
      • Button
      • Checkbox
      • Icons
      • Scroll
      • Simple Checkbox
      • Slider
      • Toggle
      • Window & Panel
    • Image Theme Sets
      • Alien
      • Animated Characters
      • Backgrounds
      • Cards
      • Cybercity Background
      • Enemies
      • Items
      • Miami Synth Parallax
      • Pinball
      • Space Shooter
      • Spritesheets
      • Test Textures
      • Tiles
      • Topdown Tanks
    • Input Prompt
      • Xbox
    • Music
    • Onscreen Controls
      • Flat Dark
      • Flat Light
      • Shaded Dark
      • Shaded Light
    • Sounds
    • Tiled Maps
    • Video

Manual

  • Drawing & Using Sprites
    • Drawing with Sprites and SpriteLists
      • What’s a Sprite?
      • Why SpriteLists?
      • Using Sprites and SpriteLists
      • Using Images with Sprites
      • Viewports, Cameras, and Screens
    • Advanced SpriteList Techniques
      • Draw Order & Sorting
      • Custom Texture Atlases
      • Lazy SpriteLists
  • Keyboard
    • Events
      • What is a keyboard event?
      • How do I handle keyboard events?
    • Modifiers
      • What is a modifier?
      • What does active mean?
      • How do I use modifiers?
      • How do I tell left & right modifers apart?
  • Sound
    • Why Is Sound Important?
    • Sound Basics
      • Loading Sounds
      • Playing Sounds
      • Stopping Sounds
    • Intermediate Loading and Playback
      • Streaming or Static Loading?
      • Intermediate-Level Playback Control
    • Cross-Platform Compatibility
      • The Most Reliable Formats & Features
      • Loading In-Depth
      • Backends Determine Playback Features
      • Choosing the Audio Backend
    • Other Sound Libraries
      • Using Pyglet
      • External Libraries
  • Textures
    • Introduction
    • Texture Uniqueness
    • Texture Cache
    • Custom Textures
  • Event Loop
    • Introduction
      • on_draw()
      • on_update()
      • on_fixed_update()
    • Time
      • Clock
      • FixedClock
      • Up Coming
    • More on Fixed update
      • Death Spiral
      • Update Interpolation
    • Vertical Synchronization
      • What is vertical sync?
      • Vertical sync disabled as a default
  • Camera
    • Key Concepts
      • World Space
      • Screen Space
      • View Matrices
      • Projection Matrices
      • Viewports
    • Key Objects
  • Sections
    • A simple example
    • How to work with Sections
    • Sections configuration and logic with an example
    • Section Unique Events
    • The Section Manager
  • GUI
    • GUI Concepts
      • Classes
      • Drawing
      • UIMixin
      • UIConstructs
      • Available Elements
      • User-interface events
      • Different event systems
    • GUI Layouts
      • Included Layouts
      • When to use which layout?
    • GUI Style
      • Which Widgets Can I Style?
      • Basic Usage
      • Advanced
    • Own Widgets
      • Where to start
      • Example ProgressBar
    • Own Layout
      • Where to start
      • Example CircleLayout
    • GUI Controller Support
      • Basic Setup
      • Advanced Usage
  • Texture Atlas
    • Introduction
    • Size Restriction
    • Resize
    • Default Texture Atlas
    • Custom Atlas
    • Border
    • Updating Texture
    • Removing Texture
    • Rendering Into Atlas
    • Debugging
  • Resource Handles
    • Using Resource Handles
      • How Do I Use Resource Handles?
      • When & Where Can I Use Resource Handles?
      • Adding Your Own Resource Handles
      • Adding your New Resource Handle
    • Adding Multiple Directories to a Resource Handle
    • Cleaner Code with Pathlib
      • Finding your Project Folder
    • More on How Resource Handles Work
      • Implementation Details
    • Resources Handles and PyInstaller/Nuitka one-file builds
  • OpenGL
    • Initialization
    • Garbage Collection & Threads
    • Threads & vsync
    • SpriteList & Threads
    • Writing Raw Bytes to GL Buffers & Textures
  • OpenGL ES Devices: Raspberry Pi, Etc
    • OpenGL ES
    • Supported Raspberry Pi Configurations
      • Operating Systems
    • Unsupported Raspberry Pi Devices
      • Incompatible Older Devices
      • Incompatible New Devices
    • SBC Requirements
      • Standard Python
      • Supported OpenGL ES Versions
      • Arcade’s Binary Dependencies
      • An Adequate Power Supply
  • Performance
    • Collision Detection Performance
      • Why are collisions slow?
      • The Faster Alternatives
      • Spatial Hashing
      • Pymunk Physics Engine
      • Compute Shader
    • Drawing Performance
      • Drawing Shapes
    • Sprite drawing performance
      • An Option for Advanced Users
    • Text drawing performance
    • Loading Performance
      • Loading Screens and Rooms
    • Sound Performance in Depth
      • Static Sounds are for Speed
      • Streaming Saves Memory
  • Headless Arcade
    • Enabling headless mode
    • How is this affecting my code?
    • Examples
      • Simple headless mode
      • Headless mode while extending the Arcade Window
    • Advanced
    • Issues?

Contributing

  • Contributing To Arcade
    • Contributing Code
    • I Can’t Code Yet
      • Tell Us About Documentation Issues
      • Play Games made with Arcade
      • Create Art, Music, and Sound
    • Report Bugs
      • Excellent Bug Reports

Community

  • Community Locations
    • Community Standards
    • Where to Post
    • Other Locations
  • How to Get Help
    • Sharing & Formatting Your Code
      • Formatting for Discord & Github Issues
      • Code Hosting
    • Arcade Version & Basic Environment Info
  • Games made with Arcade
    • User-submitted Games
      • Brazier
      • PhotoShip
      • Space Station Builder
      • Notepad Doodles
      • BoxHead Survivor
      • Temporum
      • SOL Defender
      • Binary Defense
      • Space Invaders
      • Ready or Not?
      • Age of Divisiveness
      • Fishy-Game
      • Adventure
      • Transcience Animation
      • Stellar Arena Demo
      • Battle Bros
      • Rabbit Herder
      • The Great Skeleton War
      • Python Knife Hit
      • Kayzee
      • lixingqiu Games
      • Space Typer
      • FlapPy Bird
      • PyOverheadGame
      • Dungeon
      • Two Worlds
      • Mama Nyah’s House of Tarot
      • Simpson College Spring 2017 CMSC 150 Course
    • Python Discord GameJam 2020
      • 3 Keys on the Run
      • Triple Blocks
      • Triple Vision
      • Hatchlings
      • Gem Matcher
      • Tri-Chess
      • Insane Irradiated Insectz
      • Flimsy Billy’s Coin Dash 3
      • ZeYoughEzh
      • Coin Collector

API Reference

  • Quick Index
  • API Reference
    • Types
      • HasAddSubMul
      • TiledObject
      • SupportsDunderLT
      • SupportsDunderGT
      • AnchorPoint
      • Color
      • RectKwargs
      • Rect
      • LRBT()
      • LBWH()
      • XYWH()
      • XYRR()
      • Viewport()
      • BoxKwargs
      • Box
      • XYZWHD()
      • LBNWHD()
      • LRBTNF()
    • Resources
      • resolve_resource_path()
      • resolve()
      • add_resource_handle()
      • get_resource_handle_paths()
      • list_built_in_assets()
      • load_kenney_fonts()
      • load_liberation_fonts()
    • Primitives
      • draw_arc_filled()
      • draw_arc_outline()
      • draw_circle_filled()
      • draw_circle_outline()
      • draw_ellipse_filled()
      • draw_ellipse_outline()
      • get_points_for_thick_line()
      • draw_line_strip()
      • draw_line()
      • draw_lines()
      • draw_parabola_filled()
      • draw_parabola_outline()
      • draw_point()
      • draw_points()
      • draw_polygon_filled()
      • draw_polygon_outline()
      • draw_texture_rect()
      • draw_sprite()
      • draw_sprite_rect()
      • draw_lrbt_rectangle_outline()
      • draw_lbwh_rectangle_outline()
      • draw_lrbt_rectangle_filled()
      • draw_lbwh_rectangle_filled()
      • draw_rect_outline()
      • draw_rect_filled()
      • draw_triangle_filled()
      • draw_triangle_outline()
    • Shape Lists
      • Shape
      • ShapeElementList
      • create_line()
      • create_line_generic_with_colors()
      • create_line_generic()
      • create_line_strip()
      • create_line_loop()
      • create_lines()
      • create_lines_with_colors()
      • create_polygon()
      • create_rectangle_filled()
      • create_rectangle_outline()
      • get_rectangle_points()
      • create_rectangle()
      • create_rectangle_filled_with_colors()
      • create_rectangles_filled_with_colors()
      • create_triangles_filled_with_colors()
      • create_triangles_strip_filled_with_colors()
      • create_ellipse_filled()
      • create_ellipse_outline()
      • create_ellipse()
      • create_ellipse_filled_with_colors()
    • Sprites
      • load_animated_gif()
      • BasicSprite
      • Sprite
      • SpriteSolidColor
      • SpriteCircle
      • PyMunk
      • PymunkMixin
      • TextureKeyframe
      • TextureAnimation
      • TextureAnimationSprite
      • AnimatedWalkingSprite
    • Camera 2D
      • Camera2D
    • Sprite Lists
      • SpriteSequence
      • SpriteList
      • ReadOnlySpatialHash
      • SpatialHash
      • get_distance_between_sprites()
      • get_closest_sprite()
      • check_for_collision()
      • check_for_collision_with_list()
      • check_for_collision_with_lists()
      • get_sprites_at_point()
      • get_sprites_at_exact_point()
      • get_sprites_in_rect()
    • Sprite Scenes
      • SceneKeyError
      • Scene
    • Clock
      • Clock
      • FixedClock
    • Text
      • Text
      • load_font()
      • create_text_sprite()
      • draw_text()
    • Tiled Map Reader
      • TileMap
      • load_tilemap()
    • Texture Management
      • ImageData
      • Texture
      • load_texture()
      • load_image()
      • load_spritesheet()
      • make_circle_texture()
      • make_soft_circle_texture()
      • make_soft_square_texture()
      • TextureCacheManager
      • SpriteSheet
      • get_default_texture()
      • get_default_image()
    • Hitbox
      • calculate_hit_box_points_simple()
      • calculate_hit_box_points_detailed()
      • HitBoxAlgorithm
      • HitBox
      • RotatableHitBox
      • BoundingHitBoxAlgorithm
      • SimpleHitBoxAlgorithm
      • PymunkHitBoxAlgorithm
    • Texture Transforms
      • VertexOrder
      • Transform
      • Rotate90Transform
      • Rotate180Transform
      • Rotate270Transform
      • FlipLeftRightTransform
      • FlipTopBottomTransform
      • TransposeTransform
      • TransverseTransform
    • Texture Atlas
      • TextureAtlasBase
      • DefaultTextureAtlas
      • AtlasRegion
      • UVData
      • ImageDataRefCounter
      • UniqueTextureRefCounter
    • Performance Information
      • print_timings()
      • clear_timings()
      • get_timings()
      • enable_timings()
      • disable_timings()
      • get_fps()
      • timings_enabled()
      • PerfGraph
    • Physics Engines
      • PhysicsEngineSimple
      • PhysicsEnginePlatformer
      • PymunkPhysicsObject
      • PymunkException
      • PymunkPhysicsEngine
    • Misc Utility Functions
      • configure_logging()
      • Chain
      • as_type()
      • type_name()
      • is_iterable()
      • is_nonstr_iterable()
      • is_str_or_noniterable()
      • grow_sequence()
      • copy_dunders_unimplemented()
      • is_raspberry_pi()
      • get_raspberry_pi_info()
      • unpack_asfloat_or_point()
    • Geometry Support
      • are_polygons_intersecting()
      • is_point_in_box()
      • get_triangle_orientation()
      • are_lines_intersecting()
      • is_point_in_polygon()
    • Game Controller
      • ControllerManager
      • get_controllers()
    • Joystick
      • get_joysticks()
      • get_game_controllers()
    • Window and View
      • NoOpenGLException
      • Window
      • View
      • get_screens()
      • open_window()
      • get_display_size()
      • get_window()
      • set_window()
      • close_window()
      • run()
      • exit()
      • start_render()
      • finish_render()
      • set_background_color()
      • schedule()
      • unschedule()
      • schedule_once()
      • Section
      • SectionManager
      • get_pixel()
      • get_image()
    • Sound
      • Sound
      • load_sound()
      • play_sound()
      • stop_sound()
    • Advanced Camera Features
      • ZeroProjectionDimension
      • CameraData
      • OrthographicProjectionData
      • PerspectiveProjectionData
      • Projection
      • Projector
      • duplicate_camera_data()
      • constrain_camera_data()
      • orthographic_from_rect()
      • generate_view_matrix()
      • generate_orthographic_matrix()
      • generate_perspective_matrix()
      • project_orthographic()
      • unproject_orthographic()
      • project_perspective()
      • unproject_perspective()
      • OrthographicProjector
      • PerspectiveProjector
      • ViewportProjector
      • DefaultProjector
      • static_from_orthographic()
      • static_from_perspective()
      • static_from_raw_orthographic()
      • static_from_raw_perspective()
      • static_from_matrices()
    • Pathfinding
      • AStarBarrierList
      • astar_calculate_path()
      • has_line_of_sight()
    • Isometric Map (incomplete)
      • isometric_grid_to_screen()
      • screen_to_isometric_grid()
      • create_isometric_grid_lines()
    • Earclip
      • earclip()
    • Easing
      • EasingData
      • linear()
      • smoothstep()
      • ease_in()
      • ease_out()
      • ease_in_out()
      • ease_out_elastic()
      • ease_out_bounce()
      • ease_in_back()
      • ease_out_back()
      • ease_in_sin()
      • ease_out_sin()
      • ease_in_out_sin()
      • easing()
      • ease_angle()
      • ease_angle_update()
      • ease_value()
      • ease_position()
      • ease_update()
    • OpenGL Context
      • ArcadeContext
    • Math
      • clamp()
      • lerp()
      • lerp_2d()
      • lerp_3d()
      • smerp()
      • smerp_2d()
      • smerp_3d()
      • lerp_angle()
      • rand_in_rect()
      • rand_in_circle()
      • rand_on_circle()
      • rand_on_line()
      • rand_angle_360_deg()
      • rand_angle_spread_deg()
      • rand_vec_spread_deg()
      • rand_vec_magnitude()
      • get_distance()
      • rotate_point()
      • rescale_relative_to_point()
      • rotate_around_point()
      • get_angle_degrees()
      • get_angle_radians()
      • quaternion_rotation()
    • OpenGL
      • Context
      • Texture
      • TextureArray
      • Buffer
      • Geometry
      • Framebuffer
      • Query
      • Shader / Program
      • Sampler
      • utils
      • Exceptions
      • Types
    • Exceptions
      • OutsideRangeError
      • IntOutsideRangeError
      • FloatOutsideRangeError
      • ByteRangeError
      • NormalizedRangeError
      • PerformanceWarning
      • ReplacementWarning
      • warning()
    • Start/Finish Render
      • StartFinishRenderData
    • Cache
      • crate_str_from_values()
      • crate_str_from_list()
      • HitBoxCache
      • TextureBucket
      • TextureCache
      • ImageDataCache
    • Future Features
      • RenderTargetTexture
      • InputType
      • InputEnum
      • StrEnum
      • ControllerAxes
      • ControllerButtons
      • XBoxControllerButtons
      • PSControllerButtons
      • Keys
      • MouseAxes
      • MouseButtons
      • parse_mapping_input_enum()
      • RawInputManager
      • ActionState
      • InputDevice
      • InputManager
      • Action
      • Axis
      • InputMapping
      • ActionMapping
      • AxisMapping
      • serialize_action()
      • parse_raw_axis()
      • serialize_axis()
      • RawBindBase
      • RawActionMapping
      • RawAxisMapping
      • RawAction
      • RawAxis
      • BackgroundTexture
      • Background
      • BackgroundGroup
      • ParallaxGroup
      • Light
      • LightLayer
      • VideoPlayer
      • VideoPlayerView
    • GUI
      • UIMessageBox
      • UIButtonRow
      • UIDraggableMixin
      • UIMouseFilterMixin
      • UIWindowLikeMixin
      • Surface
      • UIManager
      • NinePatchTexture
      • UIView
    • GUI Widgets
      • FocusMode
      • UIWidget
      • UIInteractiveWidget
      • UIDummy
      • UISpriteWidget
      • UILayout
      • UISpace
      • UITextureButtonStyle
      • UITextureButton
      • UIFlatButtonStyle
      • UIFlatButton
      • UIDropdown
      • UIAnchorLayout
      • UIBoxLayout
      • UIGridLayout
      • UIBaseSlider
      • UISliderStyle
      • UISlider
      • UITextureSlider
      • UILabel
      • UITextWidget
      • UIInputTextStyle
      • UIInputText
      • UITextArea
      • UITextureToggle
      • UIImage
    • GUI Events
      • UIEvent
      • UIMouseEvent
      • UIMouseMovementEvent
      • UIMousePressEvent
      • UIMouseDragEvent
      • UIMouseReleaseEvent
      • UIMouseScrollEvent
      • UIKeyEvent
      • UIKeyPressEvent
      • UIKeyReleaseEvent
      • UITextEvent
      • UITextInputEvent
      • UITextMotionEvent
      • UITextMotionSelectEvent
      • UIOnClickEvent
      • UIOnUpdateEvent
      • UIOnChangeEvent
      • UIOnActionEvent
      • UIControllerEvent
      • UIControllerConnectEvent
      • UIControllerDisconnectEvent
      • UIControllerStickEvent
      • UIControllerTriggerEvent
      • UIControllerButtonEvent
      • UIControllerButtonPressEvent
      • UIControllerButtonReleaseEvent
      • UIControllerDpadEvent
    • GUI Properties
      • Property
      • DictProperty
      • ListProperty
      • bind()
      • unbind()
    • GUI Style
      • UIStyleBase
      • UIStyledWidget
    • GUI Experimental Features
      • UIPasswordInput
      • UIScrollBar
      • UIScrollArea
      • UITypedTextInput
    • arcade.key package
    • arcade.csscolor package
    • arcade.color package
    • arcade.uicolor package
Python Arcade Library
  • Games made with Arcade
  • View page source

Games made with Arcade

  • User-submitted Games
  • Python Discord GameJam 2020
Previous Next

© Copyright 2025, Paul Vincent Craven.

Built with Sphinx using a theme provided by Read the Docs.