The Arcade Book
Installation
Arcade can be installed like any other Python Package. Your machine(s) need to support OpenGL 3.3+ for arcade to work. If you are familiar with Python package management you can just “pip install” Arcade. For more detailed instructions see Install.
Getting Help
If you get stuck, you can always ask for help! See the page on How to Get Help for more information.
Tutorials
If you are already familiar with basic Python programming, follow the Simple Platformer as a quick way to get up and running. If you are just learning how to program, see the Learn Arcade book.
Arcade Skill Tree
Basic Drawing Commands - See How to Draw with Your Computer, Drawing Primitives
ShapeElementLists - Batch together thousands of drawing commands into one using a
arcade.shape_list.ShapeElementList
. See examples in Faster Drawing with ShapeElementLists.
Sprites - Almost everything in Arcade is done with the
arcade.Sprite
class.Moving player sprites
Mouse - Move By Mouse
Keyboard - Move By Keyboard
Keyboard, slightly more complex but handles multiple key presses better: Better Move By Keyboard
Keyboard with acceleration, de-acceleration: Acceleration and Friction
Keyboard, rotate and move forward/back like a space ship: Move By Turning
Game Controller - Game Controller
Game controller buttons - Supported, but documentation needed.
Sprite collision detection
Basic detection - Learn Arcade book on collisions, Move By Mouse
Understanding collision detection and spatial hashing: Collision Detection Performance
Sprite Hit boxes
Detail amount -
arcade.Sprite
Changing -
arcade.Sprite.hit_box
Avoid placing items on walls - Randomly Place Coins, But Away From Walls And Other Coins
Sprite drag-and-drop - See the Solitaire.
Drawing sprites in layers
Sprite animation
Change texture on sprite when hit - Change coins
Moving non-player sprites
Bouncing - Sprite Bouncing Coins
Moving towards player - Sprites That Follow The Player
Moving towards player, but with a delay - Sprites That Follow The Player 2
Space-invaders style - Slime Invaders
Can a sprite see the player? - Line of Sight
A-star pathfinding - A-Star Path Finding
Shooting
Player shoots straight up - Shoot Bullets Upwards
Enemy shoots every x frames - Have Enemies Periodically Shoot
Enemy randomly shoots x frames - Have Enemies Randomly Shoot
Player aims - Aim and Shoot Bullets
Enemy aims - Have Enemies Aim at Player
Physics Engines
SimplePhysicsEngine - Platformer tutorial Step 3 - Many Sprites with SpriteList, Learn Arcade Book Simple Physics Engine, Example Move with Walls
PlatformerPhysicsEngine - From the platformer tutorial: Step 4 - Add User Control,
Ladders - Platformer tutorial Step 10 - Adding a Score
Using the physics engine on multiple sprites - Supported, but documentation needed.
Pymunk top-down - Supported, needs docs
Pymunk physics engine for a platformer - Pymunk Platformer
View management
Minimal example of using views - Minimal Views Example
Using views to add a pause screen - Using Views for a Pause Screen
Using views to add an instruction and game over screen - Using Views for Instruction and Game Over Screens
Window management
Scrolling - Move with a Scrolling Screen - Centered
Add full screen support - Full Screen Example
Allow user to resize the window - Resizable Window
Map Creation
Programmatic creation
Procedural Generation
TMX map creation - Platformer tutorial: Step 8 - Collecting Coins
Layers - Platformer tutorial: Step 8 - Collecting Coins
Multiple Levels - Work with levels and a tiled map
Object Layer - Supported, but documentation needed.
Hit-boxes - Supported, but documentation needed.
Animated Tiles - Supported, but documentation needed.
Sound - Learn Arcade book sound chapter
Spatial sound Sound Demo
Particles - Particle Systems
GUI
Concepts - GUI Concepts
Examples - GUI Concepts
OpenGL
Read more about using OpenGL in Arcade with OpenGL.
Lights - Lighting Demo
Writing shaders using “ShaderToy”
Learn how to ray-cast shadows in the Ray-casting Shadows.
Make your screen look like an 80s monitor in CRT Filter.
Study the Asteroids Example Code.
Rendering onto a sprite to create a mini-map - Mini-Map
Learn to do a compute shader in Compute Shader.