Skip to content

Shepardeon/love2d-starter-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Löve Starter Template

Everybody needs love, this starter project provides plenty!

Should you use this template?

It depends. If you're just starting out with Lua and or Love2D, you might learn better by toying around without relying on libraries or starter projects like this one. However if you're a more experienced developer, you might enjoy the fact that a lot of boilerplate code has been handled for you. As such, you may want to use this starter project and or reuse some parts of it in order to build your own starter project.

You must keep in mind that this project doesn't have the pretention to be "the best" or "the only way" to create or handle a Love2D project. It's simply the way I like to do things when creating my projects.

What's included

  • Bump: A collision-detection library for axis-aligned rectangles.
  • Classic: A tiny class module for Lua (globally imported as Object when requiring shep).
  • Json: A lightweight JSON library for Lua.
  • Lume: A collection of functions geared towards game development. Also provides module hotswapping.
  • Hump.timer: A simple interface to schedule the execution of functions.
  • Shep: A starter library which brings an opiniated game structure which can handle input, game states, scene, entities, cameras and more.
  • A VSCode configuration based on Sheepolution's book.
  • A build task wrapping makelove which needs to be installed separately.
  • An opinionated directory structure.

Shep Features

  • A Game > Scene > Entity hierarchy
  • An event system to register and subscribe to events (observer pattern)
  • An input manager system which handles keyboard, mouse, gamepad (button press, release, hold, sequence)
  • A delegate state machine which represents states and stateflows using regular functions
  • An atlas management system that can use spritebatch
  • An animation system which uses the atlas system
  • A camera system that can handle multiple layers with parallax
  • A shader pipeline that can chain multiple shaders back to back
  • A rendering pipeline that combines camera+shaders+resolution handling
  • A debug graph which can be used to monitor update time, draw time, memory usage and so on...
  • An async loading system which allows to load game resources (images, fonts, sounds and more) without blocking the main thread
  • Utility functions to operate on coordinates, vector components and tables
  • A localization module that can load multiple languages from json files or from code

Planned features

As of now, the library is about ~75-85% done before I'm contempt with it for a 1.0.0 release. On top of revisiting some existing modules to fix issues or add new features (ie. add memory details and graphics stats to the debug graph) I have the following features planned:

  • An audio manager to put sounds in audio "categories" and manage their volume
  • A (simple) UI Library which can handle layout, buttons, label and 9Patch
  • A loader for Ldtk

License

All included libraries in lib/ remain under their original license. Except for Shep and all original code which is distributed under the MIT License (see LICENSE)

Included asset (ranger_f.png) is shared under CC BY 3.0, original author is Antifarea

About

A starting game template for Love2D including utility libs and an opiniated file structure

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published