LUA Implementation Limitations & Notes: Difference between revisions
Jump to navigation
Jump to search
(LUA) |
No edit summary |
||
Line 16: | Line 16: | ||
Old notes (largely outdated? Based on the old AS3 version) | Old notes (largely outdated? Based on the old AS3 version) | ||
{| class="wikitable mw-collapsible mw-collapsed" | |||
|+Outdated information hidden for now | |||
| | |||
Underworld's LUA VM is a modified version of the 2009 [https://code.google.com/archive/p/lufacode/ lufacode] project. It implements a small subset of the LUA 5.1 specification. | Underworld's LUA VM is a modified version of the 2009 [https://code.google.com/archive/p/lufacode/ lufacode] project. It implements a small subset of the LUA 5.1 specification. | ||
Line 54: | Line 57: | ||
***<nowiki>**In-game LUA compiler & editor so as to simplify the luac -> base64 -> edit json -> execute loop</nowiki> | ***<nowiki>**In-game LUA compiler & editor so as to simplify the luac -> base64 -> edit json -> execute loop</nowiki> | ||
* | * | ||
|} |
Revision as of 05:09, 13 July 2023
Our LUA VM is based on MoonSharp, which implements the LUA 5.2 specification.
This page describing known differences in MoonSharp may be helpful, in particular differences in std lib.
Some caveats to be aware of when writing LUA code for it:
- A LUA global is registered under the name 'this' to point to the LUA object that is executing the code.
- See GPS for a sample.
- However, as this is just a global variable and not an actual language keyword, if your code creates classes, 'this' will still point to the entity.
- Equality operator on entities, maps, locations, and other Underworld classes should be generally avoided currently
- This is because AS3 will return a new LUA table for each requested class. In future, these will be cached which should allow for accurate equality comparison. In the meanwhile, you can check locations equality by comparing if they both have the same RoomID and map.getName. Entity equality is trickier since many entities may share the same name.
- If you encounter unexpected bugs, post on discord with a link to some sample code to reproduce the bug.
- If you run into a wall due to functions not being exposed to LUA, please leave feedback on what you would like to build with the mod API but can't due to current limitations! This helps inform future revisions of the mod API.
Old AS3 LUA version notes (no longer relevant)
Old notes (largely outdated? Based on the old AS3 version)
Underworld's LUA VM is a modified version of the 2009 lufacode project. It implements a small subset of the LUA 5.1 specification. There's a lot of caveats to be aware of when writing LUA code for it:
|