Love2D Fighting Engine (L2DF
) is a cross-platform game engine written in Lua.
L2DF
is a perfect solution for:
- 2D and 2.5D games
- fightings
- beat 'em ups
- platformers
- similar genres
The backstage of this engine is an old "Little Fighter 2" game, so if you are familiar with it you can dive in very fast
because L2DF
uses similar syntax and terms. But if you're not there're no problem as we are going to support more syntaxes
like M.U.G.E.N. and make engine as flexible as it's possible.
If you're not that good in programming there're no problem since we have different presets which you can modificate without any single line of code! It was achieved with a flexible architecture and easy-to-read-and-write custom data files with our XML/HTML like syntax. We're going to release our custom editor for these files, so you won't need to edit data files manually in text-format :)
Right now L2DF
uses LÖVE as "backend" for rendering, input and other stuff, but we
also have plans to support CoronaSDK and Luce in future.
- Cross-platform. As soon as you use Lua and one of our backends it'll be available on mobile, desktop, TV and other devices.
- Custom easy-to-learn syntax to make up / modificate rooms, objects, animations and etc.
- Very flexible entity-component architecture.
- Fast physics / collision detection - perfect for fighting games!
- Frames based architecture - have a full control of your objects in each single frame.
- Number of presets which you can use to rapidly start making your game.
- Integrated Peer-to-Peer network support to bring you smooth, fast and responsive gameplay.
- NAT traversal which excludes requirement of using VPN, Hamachi and other software to initialize connection under NAT.
- "GGPO like" rollback networking instead of lockstep to make you feel an excellent netplay experience.
-
Go to releases page
-
Download one of packages in the latest available release:
l2df.lua
- if you want just to import engine into your game withrequire 'l2df'
demo-x.x.x.exe
- if you want just to test latest changes and features in Windowsdemo-x.x.x.zip
- if you want to see / modificate a single full-featured exampleSource code.zip
- everything is under your control, feel the full power of presets and modificate engine if you need it!
-
Place engine in your project and require it:
require 'l2df'
-- ^ exposes _G.l2df / l2df variable, you can localize it:
local l2df = require 'l2df'
-- or in libs/:
local l2df = require 'libs.l2df'
-- or in libs/ with some "hacks":
local src = love.filesystem.getSource()
package.path = ('%s;%s/libs/?.lua;%s/libs/?/init.lua'):format(package.path, src, src)
-- if previous 2 lines don't work:
love.filesystem.setRequirePath('libs/?.lua;libs/?/init.lua;?.lua;?/init.lua')
local l2df = require 'l2df'
- Initialize engine with default
init
function. It's not needed if you want to use only some parts ofL2DF
.
function love.load()
l2df:init()
end
- If you don't have your own game loop leave out the rest of it to
L2DF
. Else read documentation for more information on how to integrateL2DF
into your already existen game loop.
function love.run()
return l2df:gameloop()
end
- Now you are ready to start development!
You can find it here: https://atom-tm.github.io/l2df-engine.
It's still in-progress but already covers some basics of development with our engine.
L2DF
is an open-sourced software licensed under the MIT License.
This project also uses some parts of third-party libraries listed below.
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| Project | Distribution Files | Modificated | Copyright Holder | License |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| lua-rbtree | src/external/rbtree.lua | + | Soojin Nam | Public Domain |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| gamera | src/external/gamera.lua | - | Enrique García Cota | MIT |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| lua-struct | src/external/packer.lua | + | Iryont | MIT |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| JSON Encode/Decode | src/external/json.lua | - | Jeffrey Friedl | CC BY 3.0 |
| in pure Lua | | | | |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
| bump-3dpd | src/class/component/physix/cube.lua | + | Enrique García Cota | MIT |
| | src/class/component/physix/grid.lua | + | | |
| | src/class/component/physix/world.lua | + | | |
|--------------------|--------------------------------------|-------------|---------------------|---------------|
You can find full license text for this software in THIRD-PARTY-LICENSE
file.
Currently we don't have appropriate contributing guide but if you really want to help our team in some improvements or bug fixes then dm one of the core developers in Discord to discuss the topic / your pull-request:
Abelidze#0109
Kasai#1590
Also if you've found a bug it'd be great if you can explain it on the issues page.