Skip to content

Commit cf33137

Browse files
committed
+added a license.
1 parent 14ef9b0 commit cf33137

File tree

2 files changed

+254
-10
lines changed

2 files changed

+254
-10
lines changed

LICENSE

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
BSD 3-Clause License
2+
3+
Copyright (C) 2020 - 2021 Tony Wang, all rights reserved
4+
5+
Redistribution and use in source and binary forms, with or without
6+
modification, are permitted provided that the following conditions are met:
7+
8+
1. Redistributions of source code must retain the above copyright notice, this
9+
list of conditions and the following disclaimer.
10+
11+
2. Redistributions in binary form must reproduce the above copyright notice,
12+
this list of conditions and the following disclaimer in the documentation
13+
and/or other materials provided with the distribution.
14+
15+
3. Neither the name of the copyright holder nor the names of its
16+
contributors may be used to endorse or promote products derived from
17+
this software without specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.md

Lines changed: 226 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,226 @@
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+
![](docs/documents/imgs/logo.png)
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+
![](docs/imgs/floppy.gif) **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+
![](docs/imgs/banner_coding.png)
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+
![](https://paladin-t.github.io/imgs/screenshots/bitty.gif)
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+
![](docs/imgs/banner_platforms.png)
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+
[![](docs/imgs/steam.png)](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

Comments
 (0)