{"id":13568230,"url":"https://github.com/paladin-t/bitty","last_synced_at":"2026-04-07T13:01:06.639Z","repository":{"id":50470126,"uuid":"306275527","full_name":"paladin-t/bitty","owner":"paladin-t","description":"Bitty Engine - An itty bitty 2D game engine, with built-in editors, programmable in Lua.","archived":false,"fork":false,"pushed_at":"2026-04-01T13:13:02.000Z","size":58536,"stargazers_count":328,"open_issues_count":0,"forks_count":23,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-04-03T00:39:40.956Z","etag":null,"topics":["bitty","bitty-engine","engine","fantasy-computer","fantasy-console","game-development","game-engine","gamedev","indiedev","lua","pixelart","sdl"],"latest_commit_sha":null,"homepage":"https://paladin-t.github.io/bitty","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paladin-t.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-22T08:42:31.000Z","updated_at":"2026-04-01T13:13:06.000Z","dependencies_parsed_at":"2023-02-17T19:45:32.991Z","dependency_job_id":"61221459-1250-4ea0-aa1a-eb7c314be986","html_url":"https://github.com/paladin-t/bitty","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/paladin-t/bitty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fbitty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fbitty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fbitty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fbitty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paladin-t","download_url":"https://codeload.github.com/paladin-t/bitty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fbitty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31513382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitty","bitty-engine","engine","fantasy-computer","fantasy-console","game-development","game-engine","gamedev","indiedev","lua","pixelart","sdl"],"created_at":"2024-08-01T14:00:21.971Z","updated_at":"2026-04-07T13:01:06.622Z","avatar_url":"https://github.com/paladin-t.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"![](docs/imgs/logo.png)\r\n\r\n[Home](https://paladin-t.github.io/bitty/index.html) | [Steam](https://store.steampowered.com/app/1386180/) | [Itch](https://tonywang.itch.io/bitty) | [Documents](https://paladin-t.github.io/bitty/documents.html) | [About](https://paladin-t.github.io/bitty/about.html)\r\n\r\n![](docs/imgs/floppy.gif) **An itty bitty game engine.**\r\n\r\n* [About Bitty Engine](#about-bitty-engine)\r\n\t* [Why Bitty Engine?](#why-bitty-engine)\r\n\t* [Features](#features)\r\n\t* [Technical specifications](#technical-specifications)\r\n* [Glance](#glance)\r\n\t* [Code](#code)\r\n\t* [Games](#games)\r\n* [Redistributing](#redistributing)\r\n* [Getting Bitty Engine](#getting-bitty-engine)\r\n* [Compiling from source](#compiling-from-source)\r\n\t* [Startup project](#startup-project)\r\n\t* [Windows](#windows)\r\n\t* [MacOS](#macos)\r\n\t* [Linux](#linux)\r\n\t* [Other platforms](#other-platforms)\r\n* [Community and contributing](#community-and-contributing)\r\n* [Documentation](#documentation)\r\n\r\n## About Bitty Engine\r\n\r\n![](docs/imgs/banner_coding.png)\r\n\r\nBitty Engine is a cross-platform itty bitty **Game Engine** and open-source **Framework**. The full featured engine is programmable in Lua and integrated with built-in editors. It keeps the nature of both engine's productivity, and fantasy computer/console's ease to iterate. It boosts your commercial/non-commercial projects, prototypes, game jams, or just thought experiments.\r\n\r\n### Why Bitty Engine?\r\n\r\nBitty Engine has everything built-in for coding, graphics composing, etc; it has a full featured debugger for breakpoint, variable inspecting, stepping, and call-stack traversing; it offers a set of well-designed API with full documentation; it builds fast binaries with code and asset obfuscating, moreover its package size is small (around 10MB with empty project, other engine outputs more than 10 times bigger).\r\n\r\nIt is supposed to be your ultimate 2D game creating software.\r\n\r\n### Features\r\n\r\nBitty Engine offers a set of orthogonal features that makes game development comfortable and enjoyable.\r\n\r\n* `Resources` API\r\n\t* `Resources.load(...)`, `Resources.unload(...)`\r\n\t* `Resources.wait(...)`, `Resources.collect(...)`\r\n\t* Etc.\r\n* Graphics API\r\n\t* Shapes: `plot(...)`, `line(...)`, `circ(...)`, `ellipse(...)`, `rect(...)`, `tri(...)`\r\n\t* Text: `text(...)`, `font(...)`, `measure(...)`\r\n\t* Texture: `tex(...)`\r\n\t* Sprite: `spr(...)`\r\n\t* Map: `map(...)`\r\n\t* `clip(...)`, `camera(...)`\r\n\t* Etc.\r\n* Input API\r\n\t* Gamepad\r\n\t* Keyboard\r\n\t* Mouse and touch\r\n* Audio API\r\n\t* Supports MP3, OGG, WAV, FLAC, etc.\r\n* Physics API\r\n\t* `Space`, `Shape`, `Body`, `Arbiter`, etc.\r\n* Libraries\r\n\t* Algorithms, `Archive`, `Bytes`, `Color`, `DateTime`, Encoding, `File`, Filesystem, `Image`, `Json`, Math, `Network`, `Platform`, `Web`\r\n* Application interfaces\r\n\t* `Application`, `Canvas`, `Project`, `Debug`\r\n\r\n### Technical specifications\r\n\r\n* Display: configurable resolution\r\n* Code: Lua, supports multiple source files\r\n* Image: either true-color (PNG, JPG, BMP, TGA) or paletted, up to 1024x1024 pixels per file\r\n* Palette: 256 colors with transparency support\r\n* Sprite: up to 1024x1024 pixels per frame, up to 1024 frames per sprite\r\n* Map: up to 4096x4096 tiles per page\r\n* Font: supports Bitmap and TrueType\r\n* Audio: 1 BGM channel, 4 SFX channels; supports MP3, OGG, WAV, FLAC, etc.\r\n* Gamepad: 6 buttons for each pad (D-Pad + A/B), up to 2 players\r\n* Keyboard and mouse: supported\r\n\r\n## Glance\r\n\r\n### Code\r\n\r\n```lua\r\nlocal obj = nil\r\n\r\nfunction setup()\r\n  obj = Resources.load('hero.spr')\r\n  obj:play('move', true, true)\r\nend\r\n\r\nfunction update(delta)\r\n  spr(obj, 208, 128, 64, 64)\r\nend\r\n```\r\n\r\nSee more in [examples](examples).\r\n\r\n### Games\r\n\r\n![](docs/imgs/game1_2048.png)\r\n\r\n![](docs/imgs/game2_reversi.png)\r\n\r\n![](docs/imgs/game3_boing.png)\r\n\r\n![](docs/imgs/game4_sweeper.png)\r\n\r\n![](docs/imgs/game5_platformer.png)\r\n\r\n![](docs/imgs/game6_rpg.png)\r\n\r\n![](docs/imgs/game7_racing.png)\r\n\r\n## Redistributing\r\n\r\n![](docs/imgs/banner_platforms.png)\r\n\r\nBitty Engine helps you to make standalone binaries for Windows, MacOS, Linux, and HTML (WebAssembly). It is redistributable for both non-commercial and commercial use without extra fee, your project is totally yours.\r\n\r\nEverything is done with Bitty Engine (pro) by nothing more than a few mouse clicks.\r\n\r\nPut an image at \"../icon.png\" relative to executable to customize the icon dynamically. Put an image at \"../splash.png\" as well to customize the splash, the image could be transparent.\r\n\r\n## Getting Bitty Engine\r\n\r\nThe pro version is available on [Steam](https://store.steampowered.com/app/1386180/) and [Itch](https://tonywang.itch.io/bitty).\r\n\r\n[![](docs/imgs/steam.png)](https://store.steampowered.com/app/1386180/) [![](docs/imgs/itch.png)](https://tonywang.itch.io/bitty)\r\n\r\nSee [version comparison](versions.md).\r\n\r\n## Compiling from source\r\n\r\nA C++14 capable compiler is required, any compiler came after 2014 should be ok. You need to get this repository and its submodules before build:\r\n\r\n```sh\r\ngit clone https://github.com/paladin-t/bitty.git\r\ncd bitty\r\ngit submodule init\r\ngit submodule update\r\n```\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eDetails\u003c/summary\u003e\r\n\r\nSee the [README](src/README.md) under the \"src\" directory for source code architecture.\r\n\r\nThere are some customizable macros:\r\n\r\n* `BITTY_MULTITHREAD_ENABLED[=1]`: indicates whether project code executes on a thread separately from graphics\r\n* `BITTY_DEBUG_ENABLED[=1]`: indicates whether project code debug is enabled; requires `BITTY_MULTITHREAD_ENABLED==1`; disable this to build a pure runner\r\n* `BITTY_NETWORK_ENABLED[=1]`: indicates whether the `Network` API is enabled\r\n* `BITTY_WEB_ENABLED[=1]`: indicates whether the `Web` API is enabled; disable this if you don't need web accessibility\r\n* `BITTY_SPLASH_ENABLED[=1]`: indicates whether the splash is enabled\r\n* `BITTY_EFFECTS_ENABLED[=0]`: whether full screen effects is enabled\r\n* `BITTY_PROJECT_STRATEGY_MAP_BATCH_ENABLED[=0]`: indicates whether map batch is preferred; it might speed up map rendering if enabled, but requires more memory and could be slow with `mset(...)`\r\n\r\n\u003c/details\u003e\r\n\r\n### Startup project\r\n\r\nOnce you have setup and built a binary, it loads from \"../data\" or \"../data.bit\" automatically as startup project. Otherwise it shows a programmable workspace.\r\n\r\n### Windows\r\n\r\nDependencies: Visual Studio (with C++ development tools installed).\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build SDL2\r\n\t1. Compile from \"lib/sdl/VisualC/SDL.sln\"\r\n\t2. Execute `lib/sdl/copy_win.cmd`\r\n2. Build SDL2_mixer\r\n\t1. Compile from \"lib/sdl_mixer/VisualC/SDL_mixer.sln\" (need to setup SDL2 including and linking paths from previous step manually)\r\n\t2. Execute `lib/sdl_mixer/copy_win.cmd`\r\n3. Build Bitty Engine\r\n\t1. Compile from \"bitty.sln\"\r\n\r\n\u003c/details\u003e\r\n\r\n### MacOS\r\n\r\nDependencies: Xcode.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build cURL\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd lib/curl\r\n\t\t./MacOSX-Framework\r\n\t\tcd ../..\r\n\t\t```\r\n2. Build SDL2\r\n\t1. Compile framework from \"lib/sdl/Xcode/SDL/SDL.xcodeproj\"\r\n\t2. Reveal \"SDL2.framework\" in Finder\r\n\t3. Copy \"SDL2.framework\" to both \"lib/sdl/lib/\" and \"/Library/Frameworks/\" (used in following step)\r\n3. Build SDL2_mixer\r\n\t1. Compile framework from \"lib/sdl_mixer/Xcode/SDL_mixer.xcodeproj\"\r\n\t2. Reveal \"SDL2_mixer.framework\" in Finder\r\n\t3. Copy \"SDL2_mixer.framework\" to \"lib/sdl_mixer/lib/\"\r\n4. Build Bitty Engine\r\n\t1. Compile from \"bitty.xcodeproj\"\r\n\r\n\u003c/details\u003e\r\n\r\n### Linux\r\n\r\nDependencies: CMake, GCC.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build cURL\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd lib/curl\r\n\t\t./configure\r\n\t\tmake\r\n\t\tcd ../..\r\n\t\t```\r\n\t2. Execute `lib/curl/copy_linux.sh`\r\n2. Build libuv\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd lib/libuv\r\n\t\tsh autogen.sh\r\n\t\t./configure\r\n\t\tmake\r\n\t\tmake install\r\n\t\tcd ../..\r\n\t\t```\r\n\t2. Execute `lib/libuv/copy_linux.sh`\r\n3. Build SDL2\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd lib/sdl\r\n\t\t./configure\r\n\t\tmake\r\n\t\tsudo make install\r\n\t\tcd ../..\r\n\t\t```\r\n\t2. Execute `lib/sdl/copy_linux.sh`\r\n4. Build SDL2_mixer\r\n\t1. Install necessary dependencies to enable extra audio format support, eg. for Ubuntu execute:\r\n\t\t```sh\r\n\t\tsudo apt install libflac-dev libfluidsynth-dev libmodplug-dev libmpg123-dev libopus-dev libopusfile-dev libvorbis-dev\r\n\t\t```\r\n\t2. Execute:\r\n\t\t```sh\r\n\t\tcd lib/sdl_mixer\r\n\t\t./configure\r\n\t\tmake\r\n\t\tcd ../..\r\n\t\t```\r\n\t3. Execute `lib/sdl_mixer/copy_linux.sh`\r\n5. Build Bitty Engine\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd bitty.linux\r\n\t\tcmake . \u0026\u0026 make\r\n\t\tcd ..\r\n\t\t```\r\n\r\n\u003c/details\u003e\r\n\r\n### Other platforms\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eDetails\u003c/summary\u003e\r\n\r\nYou can also setup your own build pipeline for other platforms. The \"lib\" and \"src\" directories are almost what you need. See the [README](src/README.md) under the \"src\" directory for code architecture.\r\n\r\nThe \"platform_*\" files contain most platform dependent code, you'll probably make a specific port.\r\n\r\nNote the file dialog library is only usable on desktop builds, make your own adaption if you need it on other platforms.\r\n\r\n\u003c/details\u003e\r\n\r\n## Community and contributing\r\n\r\n* [Discord](https://discord.gg/372vb8ct2H)\r\n* [GitHub Discussions](https://github.com/paladin-t/bitty/discussions)\r\n* [Issues](https://github.com/paladin-t/bitty/issues)\r\n* [Pull Requests](https://github.com/paladin-t/bitty/pulls)\r\n\r\n## Documentation\r\n\r\n* [Reference Manual](https://paladin-t.github.io/bitty/manual.html)\r\n* [Operations](https://paladin-t.github.io/bitty/operations.html)\r\n* [Keycodes](https://paladin-t.github.io/bitty/keycodes.html)\r\n* [Formats](https://paladin-t.github.io/bitty/formats.html)\r\n* [Changelog](https://paladin-t.github.io/bitty/changelog.html)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fbitty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaladin-t%2Fbitty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fbitty/lists"}