All Projects → paladin-t → bitty

paladin-t / bitty

Licence: BSD-3-Clause license
Bitty Engine - An itty bitty 2D game engine, with built-in editors, programmable in Lua.

Programming Languages

C++
36643 projects - #6 most used programming language
Makefile
30231 projects
HTML
75241 projects
Roff
2310 projects
shell
77523 projects
M4
1887 projects

Projects that are alternatives of or similar to bitty

Lambdahack
Haskell game engine library for roguelike dungeon crawlers; please offer feedback, e.g., after trying out the sample game with the web frontend at
Stars: ✭ 439 (+410.47%)
Mutual labels:  engine, sdl, indiedev
Tic 80
TIC-80 is a fantasy computer for making, playing and sharing tiny games.
Stars: ✭ 3,176 (+3593.02%)
Mutual labels:  fantasy-console, fantasy-computer
odin
High level 2d game engine written in Haskell.
Stars: ✭ 28 (-67.44%)
Mutual labels:  engine, sdl
WraithEngine
A free, open source, Java game engine library built on top of LWJGL. Designed to act as a use-exactly-what-you-need, no-assumptions framework, WraithEngine is versatile enough to act as a library within other tools or projects, or a full fledged standalone game engine.
Stars: ✭ 47 (-45.35%)
Mutual labels:  engine, indiedev
tortuga
A modern game engine built using dot net core
Stars: ✭ 14 (-83.72%)
Mutual labels:  engine, sdl
EtherEngine
简明易用的 Lua 跨平台游戏接口
Stars: ✭ 132 (+53.49%)
Mutual labels:  engine, sdl
grafx2
Mirror of GrafX2. Official repo is on gitlab.
Stars: ✭ 108 (+25.58%)
Mutual labels:  sdl, pixelart
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+11820.93%)
Mutual labels:  engine, sdl
Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+2000%)
Mutual labels:  engine, sdl
wasm4
Build retro games using WebAssembly for a fantasy console.
Stars: ✭ 711 (+726.74%)
Mutual labels:  fantasy-console, fantasy-computer
UE4-BYGLocalization
Simple CSV localization system for Unreal Engine 4
Stars: ✭ 54 (-37.21%)
Mutual labels:  engine
ffi-sdl
PHP FFI SDL bindings
Stars: ✭ 23 (-73.26%)
Mutual labels:  sdl
Driftwood
Driftwood 2D Tiling Game Engine and Development Suite
Stars: ✭ 23 (-73.26%)
Mutual labels:  sdl
awesome-indie
Resources for independent developers to make money
Stars: ✭ 7,991 (+9191.86%)
Mutual labels:  indiedev
Awesome Unreal Engine 4
UE4/UE5 Ressources Collection (Plugins, Effects, Doc, Tools, etc...)
Stars: ✭ 153 (+77.91%)
Mutual labels:  engine
bpxe
Business Process eXecution Engine
Stars: ✭ 36 (-58.14%)
Mutual labels:  engine
ZeroDSC
lightweight native PowerShell desired state configuration engine
Stars: ✭ 17 (-80.23%)
Mutual labels:  engine
AsepriteAddons
Lua scripts for Aseprite add-ons.
Stars: ✭ 45 (-47.67%)
Mutual labels:  pixelart
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (+195.35%)
Mutual labels:  engine
OpenNFS1
Remake of the original EA Need for Speed 1 using c# and Monogame
Stars: ✭ 157 (+82.56%)
Mutual labels:  indiedev

Home | Steam | Itch | Documents | About

An itty bitty game engine.

About Bitty Engine

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.

Why Bitty Engine?

Bitty 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).

It is supposed to be your ultimate 2D game creating software.

Features

Bitty Engine offers a set of orthogonal features that makes game development comfortable and enjoyable.

  • Resources API
    • Resources.load(...), Resources.unload(...)
    • Resources.wait(...), Resources.collect(...)
    • Etc.
  • Graphics API
    • Shapes: plot(...), line(...), circ(...), ellipse(...), rect(...), tri(...)
    • Text: text(...), font(...), measure(...)
    • Texture: tex(...)
    • Sprite: spr(...)
    • Map: map(...)
    • clip(...), camera(...)
    • Etc.
  • Input API
    • Gamepad
    • Keyboard
    • Mouse and touch
  • Audio API
    • Supports MP3, OGG, WAV, FLAC, etc.
  • Physics API
    • Space, Shape, Body, Arbiter, etc.
  • Libraries
    • Algorithms, Archive, Bytes, Color, DateTime, Encoding, File, Filesystem, Image, Json, Math, Network, Platform, Web
  • Application interfaces
    • Application, Canvas, Project, Debug

Technical specifications

  • Display: configurable resolution
  • Code: Lua, supports multiple source files
  • Image: either true-color (PNG, JPG, BMP, TGA) or paletted, up to 1024x1024 pixels per file
  • Palette: 256 colors with transparency support
  • Sprite: up to 1024x1024 pixels per frame, up to 1024 frames per sprite
  • Map: up to 4096x4096 tiles per page
  • Font: supports Bitmap and TrueType
  • Audio: 1 BGM channel, 4 SFX channels; supports MP3, OGG, WAV, FLAC, etc.
  • Gamepad: 6 buttons for each pad (D-Pad + A/B), up to 2 players
  • Keyboard and mouse: supported

Glance

Code

local obj = nil

function setup()
  obj = Resources.load('hero.spr')
  obj:play('move', true, true)
end

function update(delta)
  spr(obj, 208, 128, 64, 64)
end

See more in examples.

Games

Redistributing

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.

Everything is done with Bitty Engine (pro) by nothing more than a few mouse clicks.

Put 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.

Getting Bitty Engine

The pro version is available on Steam and Itch.

See version comparison.

Compiling from source

A 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:

git clone https://github.com/paladin-t/bitty.git
cd bitty
git submodule init
git submodule update
Details

See the README under the "src" directory for source code architecture.

There are some customizable macros:

  • BITTY_MULTITHREAD_ENABLED[=1]: indicates whether project code executes on a thread separately from graphics
  • BITTY_DEBUG_ENABLED[=1]: indicates whether project code debug is enabled; requires BITTY_MULTITHREAD_ENABLED==1; disable this to build a pure runner
  • BITTY_NETWORK_ENABLED[=1]: indicates whether the Network API is enabled
  • BITTY_WEB_ENABLED[=1]: indicates whether the Web API is enabled; disable this if you don't need web accessibility
  • BITTY_SPLASH_ENABLED[=1]: indicates whether the splash is enabled
  • BITTY_EFFECTS_ENABLED[=0]: whether full screen effects is enabled
  • 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(...)

Startup project

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.

Windows

Dependencies: Visual Studio (with C++ development tools installed).

Steps
  1. Build SDL2
    1. Compile from "lib/sdl/VisualC/SDL.sln"
    2. Execute lib/sdl/copy_win.cmd
  2. Build SDL2_mixer
    1. Compile from "lib/sdl_mixer/VisualC/SDL_mixer.sln" (need to setup SDL2 including and linking paths from previous step manually)
    2. Execute lib/sdl_mixer/copy_win.cmd
  3. Build Bitty Engine
    1. Compile from "bitty.sln"

MacOS

Dependencies: Xcode.

Steps
  1. Build cURL
    1. Execute:
      cd lib/curl
      ./MacOSX-Framework
      cd ../..
  2. Build SDL2
    1. Compile framework from "lib/sdl/Xcode/SDL/SDL.xcodeproj"
    2. Reveal "SDL2.framework" in Finder
    3. Copy "SDL2.framework" to both "lib/sdl/lib/" and "/Library/Frameworks/" (used in following step)
  3. Build SDL2_mixer
    1. Compile framework from "lib/sdl_mixer/Xcode/SDL_mixer.xcodeproj"
    2. Reveal "SDL2_mixer.framework" in Finder
    3. Copy "SDL2_mixer.framework" to "lib/sdl_mixer/lib/"
  4. Build Bitty Engine
    1. Compile from "bitty.xcodeproj"

Linux

Dependencies: CMake, GCC.

Steps
  1. Build cURL
    1. Execute:
      cd lib/curl
      ./configure
      make
      cd ../..
    2. Execute lib/curl/copy_linux.sh
  2. Build SDL2
    1. Execute:
      cd lib/sdl
      ./configure
      make
      sudo make install
      cd ../..
    2. Execute lib/sdl/copy_linux.sh
  3. Build SDL2_mixer
    1. Install necessary dependencies to enable extra audio format support, eg. for Ubuntu execute:
      sudo apt install libflac-dev libfluidsynth-dev libmodplug-dev libmpg123-dev libopus-dev libopusfile-dev libvorbis-dev
    2. Execute:
      cd lib/sdl_mixer
      ./configure
      make
      cd ../..
    3. Execute lib/sdl_mixer/copy_linux.sh
  4. Build Bitty Engine
    1. Execute:
      cd bitty.linux
      cmake . && make
      cd ..

Other platforms

Details

You can also setup your own build pipeline for other platforms. The "lib" and "src" directories are almost what you need. See the README under the "src" directory for code architecture.

The "platform_*" files contain most platform dependent code, you'll probably make a specific port.

Note the file dialog library is only usable on desktop builds, make your own adaption if you need it on other platforms.

Community and contributing

Documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].