Welcome!
Welcome to the almostLua documentation! almostLua is a programming language for RetroStudio that mimics Lua syntax. It allows you to easily write new scripts and adapt existing ones without needing knowledge of block coding. almostLua compiles to block coding, enabling you to read and modify the output as you desire.
You are heavily advised to learn the differences between Roblox's Luau and almostLua before proceeding to use the project.
At the core of almostLua is the nearly-identical Lua syntax. All of your favorite features, such as if/else/elseif
, for/while
loops, functions, familiar libraries, instances, classes, OOP, have made it to almostLua as well.
Be sure to check out the categories on the left to learn more about almostLua and its technical capabilities.
If you need help with almostLua, feel free to ask in the #free-models thread on Retro Dev. Keep in mind that as a community-run project, not everyone might respond right away, but don't hesitate to reach out!
What you should know
almostLua simulates Roblox Lua as it was on September 5th, 2013 (v0.119.0.37583). There is no guarantee that features added after this date will work. Notable examples are
UserInputService
,:GetPropertyChangedSignal()
, and others. You can see what features almostLua supports (or will support) here and in Supported Features.almostLua is not a full implementation of Lua. While it supports many Lua features and is constantly expanding, it is not a complete replica of Lua. Please do not paste Lua scripts into almostLua expecting them to work as-is. Tip: Make sure to check out Feature Add-ins to see snippets of code that you can paste in at the top of your scripts to extend available almostLua functionality!
Not all features behave exactly like their Lua counterparts. For instance, tuples are simulated to support function input/output and assignment but don’t exist as native types in almostLua. Additionally, anonymous functions may occasionally behave unpredictably in certain RetroStudio script modes, so it's recommended to use named functions for more consistent results.
almostLua scripts may be less performant and larger in size due to the abstraction from block coding. While the performance difference is negligible in 99.9% of cases, it’s recommended to avoid using almostLua for highly demanding tasks, such as particle simulations or 3D renderers.
The documentation is still largely a Work-In-Progress, if you have anything to suggest, please do so in the respective #free-models thread
Last updated