All Projects â†’ tfcat â†’ Leafgem

tfcat / Leafgem

Licence: mit
🌿💎 The humble beginnings of a 2D game engine in Crystal! [in-progress]

Programming Languages

crystal
512 projects

Projects that are alternatives of or similar to Leafgem

Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (+365.28%)
Mutual labels:  game-engine, 2d-game-engine
Haxepunk
Cross-platform desktop, mobile, and WebGL game engine, based on FlashPunk
Stars: ✭ 446 (+519.44%)
Mutual labels:  game-engine, 2d-game-engine
Glide
Game engine for making 2d games on iOS, macOS and tvOS, with practical examples and tutorials
Stars: ✭ 353 (+390.28%)
Mutual labels:  game-engine, 2d-game-engine
Octopuskit
2D ECS game engine in 100% Swift + SwiftUI for iOS, macOS, tvOS
Stars: ✭ 246 (+241.67%)
Mutual labels:  game-engine, 2d-game-engine
Grid Sdk
The Grid SDK - Game engine for Lua
Stars: ✭ 612 (+750%)
Mutual labels:  game-engine, 2d-game-engine
Winter
Winter is a 2D game engine for Pharo Smalltalk
Stars: ✭ 43 (-40.28%)
Mutual labels:  mit-license, 2d-game-engine
Basque
A top-down 2d game engine, written from scratch in under 1000 lines of C. Development of the game based on this engine is streamed on Twitch: https://www.twitch.tv/ryanpcmcquen
Stars: ✭ 388 (+438.89%)
Mutual labels:  game-engine, 2d-game-engine
Fxgl
Stars: ✭ 2,378 (+3202.78%)
Mutual labels:  game-engine, 2d-game-engine
Quadplay
The quadplay✜ fantasy console
Stars: ✭ 563 (+681.94%)
Mutual labels:  game-engine, 2d-game-engine
Hex Engine
A modern 2D game engine for the browser.
Stars: ✭ 558 (+675%)
Mutual labels:  game-engine, 2d-game-engine
Gdevelop
🎮 GDevelop is an open-source, cross-platform game engine designed to be used by everyone.
Stars: ✭ 3,221 (+4373.61%)
Mutual labels:  game-engine, 2d-game-engine
Pixelvision8
Pixel Vision 8's core philosophy is to teach retro game development with streamlined workflows. PV8 is also a platform that standardizes 8-bit fantasy console limitations built on top of the open-source C# game engine based on MonoGame.
Stars: ✭ 773 (+973.61%)
Mutual labels:  game-engine, 2d-game-engine
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+184.72%)
Mutual labels:  game-engine, mit-license
Leafgem
🌿💎 The humble beginnings of a 2D game engine in Crystal! [in-progress]
Stars: ✭ 72 (+0%)
Mutual labels:  mit-license, 2d-game-engine
Hge
HGE 1.9 configured with CMake DirectX9 version, with shaders. The classic 1.8.1. version is in the `master` branch if you ever need that.
Stars: ✭ 185 (+156.94%)
Mutual labels:  game-engine, 2d-game-engine
Litiengine
LITIENGINE 🕹 The pure 2D java game engine.
Stars: ✭ 384 (+433.33%)
Mutual labels:  game-engine, 2d-game-engine
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (+79.17%)
Mutual labels:  game-engine, 2d-game-engine
Imagineengine
A project to create a blazingly fast Swift game engine that is a joy to use 🚀
Stars: ✭ 1,751 (+2331.94%)
Mutual labels:  game-engine, 2d-game-engine
Castle Engine
Cross-platform (desktop, mobile, console) 3D and 2D game engine supporting many asset formats (glTF, X3D, Spine...) and using modern Object Pascal
Stars: ✭ 475 (+559.72%)
Mutual labels:  game-engine, 2d-game-engine
Coffee
An opinionated 2D game engine for Rust
Stars: ✭ 771 (+970.83%)
Mutual labels:  game-engine, 2d-game-engine

Description

Leafgem is the humble beginning of a 2D open source game engine written in Crystal!

Try it out with the demo project!

git clone https://github.com/tfcat/Leafgem.git
cd Leafgem
shards install
crystal run -s -p examples/demo/main.cr

notes to self

flare map files

Development

What are the main things we need for a Game Engine? Here's what I can think of off the top of my head. Each of the given features could be contained in a class which correlates to their purpose.

Documentation

  • [ ] Library / API reference for users
  • [ ] Simple text tutorial / demo walkthrough?
  • [ ] In-depth class reference for developers?
  • [ ] Video tutorials????
  • [ ] DEMO GAME (learning Leafgem by example)

Control

  • [x] Keypressing - on_press, on_release and is_pressed
  • [x] Mouse Input - on_click, on_release, and is_pressed for all of the buttons
  • [ ] Controller input
  • [ ] Touch input

Objects

  • [x] Instance-based system. (Unique, contained object instances, derived from a template [class])
  • [x] Destroying objects (self, and foreign)
  • [x] Object selection (e.g. setting attributes of foreign objects )
  • [x] Box collision detection
    • [x] Hit box definition, independent of sprite
  • [ ] Per-pixel collision detection

Sprites

  • [x] Sprite animations + Breaking sprites up into sub-images
  • [ ] Text rendering (TTF?)

Drawing

  • [x] Draw rectangles
  • [x] Draw sprites
  • [x] Draw circles
  • [ ] Draw lines
  • [ ] Draw polygons

Audio

  • [x] Oneshots
  • [x] Looping background music
  • [x] Audio fade in/out over time
  • [x] Multiple sound samples playing at once (the same sample cannot be played on top of itself)

Rooms

  • [x] Background renderer

    • [x] Parallax scrolling!
  • [ ] Foreground renderer

  • [x] Tileset renderer

  • [ ] Tile layers

  • [ ] Spawn objects in predetermined places

  • [ ] Easier workflow regarding room creation... (Currently use Tiled; should I make an editor?)

Known bugs

  • Going above the tilemap results in an invisible duplication of the map, according to the logic in get_tile_at within maps.cr. This results in unexpected true returns with some object functions; meeting_tile and meeting_tile_layer

Contributing

I'm not all that good with Crystal - I'm creating this project as practice using the Crystal language!

That means any and all contributions to this engine are welcome and heavily appreciated, no matter how big or small. The aim is to give creators an intuitive toolkit for making games quickly and easily!

Any ideas are welcome! Fork, and work your magic!

Contributors

  • tfcat - creator, developer, maintainer
  • brecert - developer, maintainer
  • rx14 - mentor, sensei, tech support, emotional support
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].