Hi community !I'm starting a new project that I would like to share with you.
NoodleNoodle is/will be a game framework in C++/Lua. It's inspired by my
Potato framework (itself very strongly inspired by SFML Game Development Book) but I planned some improvement.
FeaturesSo this framework will contain, more or less :
-
Windowing +
Rendering-
Resources-
Events-
Screens / Game States-
Entity/Components-
Simple GUI-
Animations-
Particles-
Json +
Json serializationGoalsThe goal is to have a strong "engine" in C++ completely binded to Lua, so that when you develop a game you just write Lua.
Bind some SFML features to Lua.
To be able to copy/paste an executable and then just change Lua code to make a new game.
There's a lot of work to do, the most of it will be done when I need it (SFML Jam here come). I also encourage you to fork/issue/participate anyhow, you will be welcomed
Inspirations - Other libsSo it's philosophically inspired by
LÖVE (a lot) somehow.
It's also inspired by some of your libs like Thor, Featherkit, etc. but I don't know yet if I can bind them directly to Lua.
I use
Selene as Lua C++11 wrapper, even if I have trouble with static methods...
ExamplesWhat the Lua code looks like at the moment - main.lua
local Noodle = require("scripts/Noodle/noodle");
function Init()
Noodle.Application.setWindowTitle("It Works !");
print("Init function called");
end
function Step(dtInSeconds)
--print("Step "..dtInSeconds);
if Noodle.Mouse.isButtonPressed(Noodle.Mouse.Button.Left) then
print("Left Mouse Button pressed {".. Noodle.Mouse.x() .." ; ".. Noodle.Mouse.y() .." }");
end
end
function Render()
end
function Quit()
print("Goodbye !");
end
There are three mandatory functions/hooks :
Init() ,
Step(..) and
Render() and some facultative ones. These hooks are parsed once and then directly called by C++.
C++ and Lua classes are indistinctly accessible through the
Noodle Lua table.
LinksNoodle GitHub Repo (check de dev branch)
Potato-framework GitHub Repo