|
1 |
| -# Bitty Engine |
2 |
| - |
3 |
| -**An itty bitty game engine, with built-in editors, programmable in Lua.** |
4 |
| - |
5 |
| -[Home](https://paladin-t.github.io/bitty/) | |
6 |
| -[Steam](https://store.steampowered.com/app/1386180/) | |
7 |
| -[Documents](https://paladin-t.github.io/bitty/documents/index.html) | |
8 |
| -[About](https://paladin-t.github.io/bitty/about.html) |
9 |
| - |
10 |
| -More stuff will be added... |
| 1 | + |
| 2 | + |
| 3 | +[Home](https://paladin-t.github.io/bitty/index.html) | [Steam](https://store.steampowered.com/app/1386180/) | [Documents](https://paladin-t.github.io/bitty/documents.html) | [About](https://paladin-t.github.io/bitty/about.html) |
| 4 | + |
| 5 | + **An itty bitty game engine.** |
| 6 | + |
| 7 | +* [About Bitty Engine](#about-bitty-engine) |
| 8 | +* [Features](#features) |
| 9 | + * [Glance](#glance) |
| 10 | + * [Version comparison](#version-comparison) |
| 11 | +* [Redistributing](#redistributing) |
| 12 | +* [Getting Bitty Engine](#getting-bitty-engine) |
| 13 | +* [Compiling from source](#compiling-from-source) |
| 14 | + * [Startup project](#startup-project) |
| 15 | + * [Windows](#windows) |
| 16 | + * [MacOS](#macos) |
| 17 | + * [Linux](#linux) |
| 18 | + * [Other platforms](#other-platforms) |
| 19 | +* [Community and contributing](#community-and-contributing) |
| 20 | +* [Documentation](#documentation) |
| 21 | + |
| 22 | +## About Bitty Engine |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | +Bitty 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. |
| 27 | + |
| 28 | +Technical specifications |
| 29 | + |
| 30 | +* Display: defaults to 480x320 pixels, configurable to bigger, smaller or self-adaption |
| 31 | +* Audio: 1 BGM channel, 4 SFX channels; supports MP3, OGG, WAV, FLAC, etc. |
| 32 | +* Font: supports Bitmap and TrueType |
| 33 | +* Code: Lua, supports multiple source files |
| 34 | +* Sprite: up to 1024x1024 pixels per frame, up to 1024 frames per sprite |
| 35 | +* Map: up to 4096x4096 tiles per page |
| 36 | +* Image: either true-color (PNG, JPG, BMP, TGA) or paletted, up to 1024x1024 pixels per file |
| 37 | +* Palette: 256 colors with transparency support |
| 38 | +* Gamepad: 6 buttons for each pad (D-Pad + A/B), up to 2 players |
| 39 | +* Keyboard and mouse: supported |
| 40 | + |
| 41 | +## Features |
| 42 | + |
| 43 | +### Glance |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | +### Version comparison |
| 48 | + |
| 49 | +| | Core | Trial | Pro | |
| 50 | +|---|---|---|---| |
| 51 | +| Programmable in Lua | YES | YES | YES | |
| 52 | +| Debugger | YES | YES | YES | |
| 53 | +| `Resources` API | YES | YES | YES | |
| 54 | +| Graphics API | YES | YES | YES | |
| 55 | +| Input API | YES | YES | YES | |
| 56 | +| Audio API | YES | YES | YES | |
| 57 | +| Libraries: Algorithms, `Archive`, `Bytes`, `Color`, `DateTime`, Encoding, `File`, Filesystem, `Image`, `Json`, Math, `Network`, `Platform`, `Web` | YES | YES | YES | |
| 58 | +| Application interfaces: `Application`, `Canvas`, `Project`, `Debug` | YES | YES | YES | |
| 59 | +| Saving project | YES | | YES | |
| 60 | +| Code editor | YES | YES | YES | |
| 61 | +| Sprite editor | | YES | YES | |
| 62 | +| Map editor | | YES | YES | |
| 63 | +| Image editor | | YES | YES | |
| 64 | +| Palette editor | | YES | YES | |
| 65 | +| JSON editor | YES | YES | YES | |
| 66 | +| Text editor | YES | YES | YES | |
| 67 | +| Bytes preview | | YES | YES | |
| 68 | +| Font preview | | YES | YES | |
| 69 | +| Sound preview | | YES | YES | |
| 70 | +| Basic examples: basics, games | YES | YES | YES | |
| 71 | +| Advanced examples: basics, games, libraries, primitives, recipes | | | YES | |
| 72 | +| Desktop binary builder: Windows, MacOS, Linux | | | YES | |
| 73 | +| HTML binary builder: WebAssembly | | | YES | |
| 74 | +| Available on | [GitHub](#compiling-from-source) | [Steam](https://store.steampowered.com/app/1386180/) | [Steam](https://store.steampowered.com/app/1386180/) | |
| 75 | + |
| 76 | +## Redistributing |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | +Bitty 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. |
| 81 | + |
| 82 | +Everything is done with Bitty Engine (pro) by nothing more than a few mouse clicks. |
| 83 | + |
| 84 | +## Getting Bitty Engine |
| 85 | + |
| 86 | +The pro version is available on [Steam](https://store.steampowered.com/app/1386180/). |
| 87 | + |
| 88 | +[](https://store.steampowered.com/app/1386180/) |
| 89 | + |
| 90 | +Get the trial version from [Steam](https://store.steampowered.com/app/1386180/) also to try out language, libraries, editors, pipelines, etc. |
| 91 | + |
| 92 | +## Compiling from source |
| 93 | + |
| 94 | +You can compile a core version from this repository, and customize redistributable binary to: |
| 95 | + |
| 96 | +* Change application icon |
| 97 | +* Change splash (keeping is thankful) |
| 98 | +* Encrypt assets in your own way |
| 99 | +* Link with 3rd-party libraries |
| 100 | +* Introduce your own API |
| 101 | +* Bring to other platforms |
| 102 | + |
| 103 | +A C++14 capable compiler is required, any compiler came after 2014 should be ok. |
| 104 | + |
| 105 | +You need to get this repository and its submodules before build: |
| 106 | + |
| 107 | +```sh |
| 108 | +git clone https://github.com/paladin-t/bitty.git |
| 109 | +cd bitty |
| 110 | +git submodule init |
| 111 | +git submodule update |
| 112 | +``` |
| 113 | + |
| 114 | +There are some customizable macros: |
| 115 | + |
| 116 | +* `BITTY_MULTITHREAD_ENABLED[=1]`: indicates whether project code executes on a thread separately from graphics |
| 117 | +* `BITTY_DEBUG_ENABLED[=1]`: indicates whether project code debug is enabled; requires `BITTY_MULTITHREAD_ENABLED==1`; disable this to build a pure runner |
| 118 | +* `BITTY_NETWORK_ENABLED[=1]`: indicates whether the `Network` API is enabled |
| 119 | +* `BITTY_WEB_ENABLED[=1]`: indicates whether the `Web` API is enabled; disable this if you don't need web accessibility |
| 120 | +* `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(...)` |
| 121 | + |
| 122 | +### Startup project |
| 123 | + |
| 124 | +Once you have setup and built a binary, it loads from "../data" or "../data.bit" automatically as startup project. Otherwise it shows a programmable workspace. |
| 125 | + |
| 126 | +### Windows |
| 127 | + |
| 128 | +Dependencies: Visual Studio (with C++ development tools installed). |
| 129 | + |
| 130 | +1. Build SDL2 |
| 131 | + 1. Compile from "lib/sdl/VisualC/SDL.sln" |
| 132 | + 2. Execute `lib/sdl/copy_win.cmd` |
| 133 | +2. Build SDL2_mixer |
| 134 | + 1. Compile from "lib/sdl_mixer/VisualC/SDL_mixer.sln" (need to setup SDL2 including and linking paths from previous step manually) |
| 135 | + 2. Execute `lib/sdl_mixer/copy_win.cmd` |
| 136 | +3. Build Bitty Engine |
| 137 | + 1. Compile from "bitty.sln" |
| 138 | + |
| 139 | +### MacOS |
| 140 | + |
| 141 | +Dependencies: Xcode. |
| 142 | + |
| 143 | +1. Build cURL |
| 144 | + 1. Execute: |
| 145 | + ```sh |
| 146 | + cd lib/curl |
| 147 | + ./MacOSX-Framework |
| 148 | + cd ../.. |
| 149 | + ``` |
| 150 | +2. Build SDL2 |
| 151 | + 1. Compile framework from "lib/sdl/Xcode/SDL/SDL.xcodeproj" |
| 152 | + 2. Reveal "SDL2.framework" in Finder |
| 153 | + 3. Copy "SDL2.framework" to both "lib/sdl/lib/" and "/Library/Frameworks/" (used in following step) |
| 154 | +3. Build SDL2_mixer |
| 155 | + 1. Compile framework from "lib/sdl_mixer/Xcode/SDL_mixer.xcodeproj" |
| 156 | + 2. Reveal "SDL2_mixer.framework" in Finder |
| 157 | + 3. Copy "SDL2_mixer.framework" to "lib/sdl_mixer/lib/" |
| 158 | +4. Build Bitty Engine |
| 159 | + 1. Compile from "bitty.xcodeproj" |
| 160 | + |
| 161 | +### Linux |
| 162 | + |
| 163 | +Dependencies: CMake, GCC. |
| 164 | + |
| 165 | +1. Build cURL |
| 166 | + 1. Execute: |
| 167 | + ```sh |
| 168 | + cd lib/curl |
| 169 | + ./configure |
| 170 | + make |
| 171 | + cd ../.. |
| 172 | + ``` |
| 173 | + 2. Execute `lib/curl/copy_linux.sh` |
| 174 | +2. Build SDL2 |
| 175 | + 1. Execute: |
| 176 | + ```sh |
| 177 | + cd lib/sdl |
| 178 | + ./configure |
| 179 | + make |
| 180 | + sudo make install |
| 181 | + cd ../.. |
| 182 | + ``` |
| 183 | + 2. Execute `lib/sdl/copy_linux.sh` |
| 184 | +3. Build SDL2_mixer |
| 185 | + 1. Install necessary dependencies to enable extra audio format support, eg. for Ubuntu execute: |
| 186 | + ```sh |
| 187 | + sudo apt install libflac-dev libfluidsynth-dev libmodplug-dev libmpg123-dev libopus-dev libopusfile-dev libvorbis-dev |
| 188 | + ``` |
| 189 | + 2. Execute: |
| 190 | + ```sh |
| 191 | + cd lib/sdl_mixer |
| 192 | + ./configure |
| 193 | + make |
| 194 | + cd ../.. |
| 195 | + ``` |
| 196 | + 3. Execute `lib/sdl_mixer/copy_linux.sh` |
| 197 | +4. Build Bitty Engine |
| 198 | + 1. Execute: |
| 199 | + ```sh |
| 200 | + cd bitty.linux |
| 201 | + cmake . && make |
| 202 | + cd .. |
| 203 | + ``` |
| 204 | + |
| 205 | +### Other platforms |
| 206 | + |
| 207 | +You can also setup your own build pipeline for other platforms. The "lib" and "src" are almost what you will deal with. See the [README](src/README.md) under "src" for description of directory structure. |
| 208 | + |
| 209 | +The "platform_*" files contain most platform dependent code. |
| 210 | + |
| 211 | +Note the file dialog library is only usable on desktop builds. Make your own adaption if you need for other platforms. |
| 212 | + |
| 213 | +## Community and contributing |
| 214 | + |
| 215 | +* [Discord](https://discord.gg/372vb8ct2H) |
| 216 | +* [Steam Discussions](https://steamcommunity.com/app/1386180/discussions/) |
| 217 | +* [GitHub Discussions](https://github.com/paladin-t/bitty/discussions) |
| 218 | +* [Issues](https://github.com/paladin-t/bitty/issues) |
| 219 | +* [Pull Requests](https://github.com/paladin-t/bitty/pulls) |
| 220 | + |
| 221 | +## Documentation |
| 222 | + |
| 223 | +* [Reference Manual](https://paladin-t.github.io/bitty/manual.html) |
| 224 | +* [Operations](https://paladin-t.github.io/bitty/operations.html) |
| 225 | +* [Keycodes](https://paladin-t.github.io/bitty/keycodes.html) |
| 226 | +* [Changelog](https://paladin-t.github.io/bitty/changelog.html) |
0 commit comments