MarcoLizza / tofu-engine

Old mirror of https://github.com/tofuengine/tofu. Follow there!

Home Page:https://github.com/tofuengine/tofu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tofu Engine

Welcome!

Guess what? Yup, that's yet another game engine/framework.

Pros

  • Carefully crafted C99 code.
  • Self-contained, no external modules/libraries required (system-wide libraries excluded).
  • Multi-platform through coss-compilation (Windows, Linux and Raspberry-Pi... no MacOS won't be supported, ever).

Dependecies

Features

  • Fully script-based, using Lua.
  • Straight multimedia support, no intermediate third-party libraries (OpenGL 2.1 required).
  • Windowed/fullscreen display with automatic scaling.
  • Internal software renderer.
  • Palette based graphics with up to 256 colors.
  • Predefined library of 8/16/32/64 colors palettes.
  • Automatic nearest-color palette indexing of images.
  • Per-color re-indexing (shifting) and transparency, affecting drawing operations (global, too?).
  • Out-of-the-box timers support.
  • Customizable application icon.
  • Support for archived games, via custom "packed" format (w/ optional encryption).
  • Game-controller support (w/ D-PAD and mouse emulation) w/ keyboard/mouse fallback if not available.
  • Tiled-map support w/ camera support (zoom and scrolling).
  • Screen shaking.
  • Detailed logging facility (w/ logging level throttle).
  • Crash screen (debug build).

Desiderata

  • Bit Block Transfer operations when drawing (also, stencil support, see this).
  • Animation support w/ frameset DSL (i.e. compiling a string where each token can be a single frame, a range or a "keep-current-frame for some time" command). Each frameset can have its one update period, and will be most likely based upon a timer.
  • Audio support (based upon dr-soft/miniaudio) w/ run-time multi-voice synth (a-la Bfxr).
  • Out-of-the-box easing functions (see this and this).
  • Out-of-the-box palette switching (with tweening) features.
  • Game state and display transitions (at which level? Engine or script?).
  • Library of noise functions (cellular, Perlin, etc...).
  • Library of "retro-feel" shaders.
  • Multiple players support.
  • Define some fixed resolutions (see this)?
  • Use a custom memory-management allocator.
  • Switch to Vulkan API (through GLFW).

Inspirations

License

Copyright (c) 2019-2020 by Marco Lizza (marco.lizza@gmail.com)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Old mirror of https://github.com/tofuengine/tofu. Follow there!

https://github.com/tofuengine/tofu


Languages

Language:C++ 69.7%Language:C 28.6%Language:Lua 1.4%Language:Makefile 0.3%