Code Monkey home page Code Monkey logo

dang's Introduction

SwordLord DANG!

SwordLord DANG! (Dainty Animations 'N Gears) is an Open Source Game Framework for the 32blit handheld open game console.

Games using DANG!

Why DANG!

The 32blit console is an interesting handheld. Pimoroni did a great job in creating a promising piece of hardware. But having a new platform unfortunately also means that tools and utilities that you are used to and that you became dependent upon are missing.

So we from SwordLord decided to work on an easy-to-use game framework for the 32blit. For us and our own games, but also for everybody else.

DANG! is not an Engine

While it would be cool to build a game engine for the 32blit, this is not what we try to achieve. We don't have the intention to re-invent Unity or Godot.

We focus on gluing a few existing (and new) tools and pieces together. Think of DANG! as a set of tools in a toolbox where you (hand-) pick the tools you need for a specific job. With DANG! you can focus on what makes your game unique and don't have to invest too much time into the standard things like animations or collision detection.

DANG! is an opinionated framework. Which means while you are free to use only parts and work around others, you will only experience the full power of DANG! when you follow a few rules.

Features

DANG! is somewhat work in progress. But already quite capable to reduce the time you need to invest to get a game off the ground.

What to expect from and you will get when using DANG!

  • Direct export of your levels from Tiled Editor based maps into C++ source code, ready to be used from your own code. No need to convert further, direct access to your data. Best of all, since those level definitions are defined as const struct, even huge levels won't really crash your 32blit handheld.
  • Direct export of your Graphics from Aseprite into c++ source code. No need for a conversion step neither during compilation, nor when run on the 32blit handheld. Even huge collections of graphics will work.
  • If you define animations within the Tiled Editor, those will automatically be played in your game. No need to write code for that.
  • DANG! contains a powerful Tween Engine and some pre-defined tweens which help you in animating and moving sprites.
  • Helper functions to play sound fx and a MOD engine which plays your favorite module files.
  • Collision detection which is small and focused on arcade games.
  • Support for automatically handling the viewport. Just bind it to a sprite and have the camera follow that sprite, as example.
  • A powerful Behaviour Tree implementation where you can define the NPCs behaviour in a human-readable, descriptive format. Should your baddies react to the players behaviour? DANG! got you covered.
  • Define rumble patterns for the game controller and the 32blit device, store and play them as Rumble Tracks exactly as you would play a song.

Documentation

Have a look at our Wiki pages.

To get details on the code, you can generate the code documentation with the help of doxygen and graphviz.

sudo apt-get install doxygen
sudo apt-get install graphviz

and then run doxygen in the root of the DANG! project folder (where you can see the Doxyfile).

doxygen

The documentation will be generated in the /docs/ folder. Check the index file in the html folder.

Licence

SwordLord DANG! and all its tools are released under the AGPLv3 License. See LICENSE file for details. Drop us a note if you need another license.

dang's People

Contributors

lordeidi avatar lordfilu avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dang's Issues

Upcoming function deprecation in 32blit SDK

Just as a heads up, I've merged the following PR:

32blit/32blit-sdk#733

This deprecates:

blit(Surface *src, Rect r, Point p, bool hflip)
blit_sprite(const Rect &src, const Point &p, uint8_t t = 0)
stretch_blit_sprite(const Rect &src, const Rect &r, uint8_t t = 0)

This will, hopefully, be released as a new SDK version sometime this month.

It looks like you use blit::screen.blit_sprite(src, dst, transform) which should be replaced with blit::screen.blit(blit::screen.sprites, src, dst, transform) when you move to the updated SDK.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.