3 releases

0.2.2 Jul 3, 2022
0.2.1 Jul 3, 2022
0.2.0 Jul 3, 2022

#982 in Game dev

27 downloads per month

MIT license

74KB
2.5K SLoC

Bowtie Game Engine

2D Game engine written in Rust

Current Capabilities

Rendering

Rendering through OpenGl. Naturally, this makes it somewhat incompatible with the newer M1 Macs since since they are deprecating OpenGl support.

  • Shapes:
    • Rectangle
  • Sprites:
    • Can take any of the implemented Shapes
    • Can take any PNG file and load it as a texture (with different filtering options)
    • Utilities to move them around seamlessly with Directions

Entity System:

Entities are a dynamic way to add your own entities and component systems and load them into the game engine. You can implement your own components and have them do practically whatever you want through the messaging system.

  • Entity trait to make any struct loadable in the game engine
  • Component trait to add functionalities dynamically to any entity
  • Messaging system so components and entities can asynchronously communicate

Pre-implemented Components

  • Collision: Reports collision between entities (multi directional)
  • Gravity: Drags objects down with acceleration
  • Event: To allow for any type of message sending

General utilitites

Directions

Directions enum with capabilities to "add direction", eg:

let direction = Direction::Up;
let new_direction = direction.add_direction(Direction::Right);
new_direction == Direction::UpRight

Color

Color struct that uses -1.0 to 1.0 normalized color values with helper enum, eg:

  let color = Color(1.0, 0.0, 0.0, 1.0);
  let red: Color = COLORS::Red.into();
  color == red

Planned Capabilities

  • All the things a game engine (for 2D games) is supposed to do

Next up:

  • More convenient entity loading
  • More seamless movement
  • More Newtonian-ly accurate gravity

Author

Yours truly, Celine Sarafa

Contributions

Contributions are not welcome at this time sorry :>

Dependencies

~1.5MB
~31K SLoC