LIL is a Language Make games, nicely

A powerful new language for native apps and games

on MacOS, Windows, Linux and iOS Coming soon!

“Miro is working hard and you can feel his motivation”

- IgneousRed

“Placeholder for another quote.”

- Anonymous

“I do it because I love programming and I'm having fun”

- Miro Keller

“Coming from web design, LIL feels instantly familiar”

- @derSchepp

Documentation

Example LIL code:


#configure {
    name: "Adventurer";
    onUpdateFn: true;
}

#needs "std/animation.lil";
#needs "std/characterController2d.lil";


var anim: @animationController {
    sprite: @sprite { id: 1 };
    sequences: [
        //idle
        @animationSequence {
            frames: [
                @animationFrame { x: 0; y: 0; delay: 10 },
                @animationFrame { x: 100; y: 0; delay: 10 },
                @animationFrame { x: 200; y: 0; delay: 10 },
                @animationFrame { x: 300; y: 0; delay: 10 }
            ];
            length: 4;
        },
        //crouch
        @animationSequence {
            frames: [
                @animationFrame { x: 400; y: 0; delay: 10 },
                @animationFrame { x: 500; y: 0; delay: 10 },
                @animationFrame { x: 600; y: 0; delay: 10 },
                @animationFrame { x: 0; y: 74; delay: 10 }
            ];
            length: 4;
        },
        //run
        @animationSequence {
            frames: [
                @animationFrame { x: 100; y: 74; delay: 6 },
                @animationFrame { x: 200; y: 74; delay: 10 },
                @animationFrame { x: 300; y: 74; delay: 6 },
                @animationFrame { x: 400; y: 74; delay: 6 },
                @animationFrame { x: 500; y: 74; delay: 10 },
                @animationFrame { x: 600; y: 74; delay: 6 }
            ];
            length: 6;
        }
    ];
    length: 3;
    index: 0;
};

var player: @characterController2d {
    sprite: $( character);
    acceleration: 4;
};

fn onUpdate (var.f64 deltaTime) {
    anim.update();
    player.update();
    LIL__runSystems(deltaTime);
}


@root {
    width: 1440;
    height: 920;
    background: #0;
    
    #new @sprite character {
        width: 100;
        height: 74;
        src: "adventurer-v1.5-Sheet.png";
        x: 150;
        y: 100;
    }
}
            

Features

Familiar syntax

LIL comes as the spiritual successor to the AXR Project, which originated in the world of web design. I took the syntax of HSS, the language which the plan was to act as the replacement for CSS, but way more powerful, and kept evolving it until it grew into a completely new idea which doesn’t have such great ambitions, but is way more practical instead.

That’s why some of the syntax features will remind you of CSS and even JavaScript or C++, but this is its own beast all by itself.

Hardware accelerated 2d/3d rendering engine

The plan is to have a full rendering engine for you to use. The most simple and useful syntax combined with powerful graphics capabilities at your fingertips so you can unleash your full potential and focus on building the app or game. And enjoy doing so!

Free and open source

I intend to make no money off the language and rendering engine themselves. They should be something free to use for everyone, no strings attached. That's why I need your support, see the donate section.

Click here to go the LIL Github repository

Beginner friendly

The whole language was designed with beginners in mind. People usually are much more visual than they are good at manipulating abstract data representations in their heads. For example, starting out with boxes, shapes and colors feels way more approachable than how you usually go about learning a traditional programming language, studying variables, functions and data types first.

Also, it is very good at progressive disclosure of complexity. This means that you don't have to import a header file and write a main function before you can even start doing anything, for example.

Full featured low level language

Even though for the typical app developer the language is very simple and easy to use, you can go as deep as you want, even go as far as to manipulate memory on the bit level. If you know what you are doing, you won't be limited by the language.

Documented journey

You will be able to follow my progress on the YouTube channel! I will also be streaming on Twitch from time to time. I intend to do all sorts of videos and tutorials, hopefully with high content value, both as a way to teach but also to showcase what is going on.

Click here to go the LIL YouTube channel

Contribute

If, on the other hand, you want to help out by actually doing stuff, please reach out to me over Twitter or email. You don’t need to be good at programming to help. Just tweeting about this project already helps so much!

Please share this page with all your programmer friends. Lets make something great together!

Yours,
Miro Keller