About L2DF

Love2D Fighting Engine (L2DF) is a cross-platform game engine written in Lua.

L2DF is a perfect solution for:

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.

Features

Installation

  1. Go to releases page

  2. Download one of packages in the latest available release:

    - `l2df.lua` - if you want just to import engine into your game with `require 'l2df'`
    - `demo-x.x.x.exe` - if you want just to test latest changes and features in Windows
    - `demo-x.x.x.zip` - if you want to see / modificate a single full-featured example
    - `Source code.zip` - everything is under your control, feel the full power of presets and modificate engine if you need it!
    
  3. 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'
    
  4. Initialize engine with default init function. It's not needed if you want to use only some parts of L2DF.

    function love.load()
        l2df:init()
    end
    
  5. 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 integrate L2DF into your already existen game loop.

    function love.run()
        return l2df:gameloop()
    end
    
  6. Now you are ready to start development!

Documentation

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.

License

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.

Contributing

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:

Also if you've found a bug it'd be great if you can explain it on the issues page.

Last updated 2021-05-28 15:24:22