Size: a a a

2021 October 16

IS

Ivan Stepanov in pro.lua
операторы
источник

S

Snusmumriken in pro.lua
Просто забей. Есть функции.
источник

IS

Ivan Stepanov in pro.lua
Оххх, сложно то как
источник

IS

Ivan Stepanov in pro.lua
У нас битопляски везде будут...
источник

S

Snusmumriken in pro.lua
Прости, а что именно вы там так пакуете?
источник

S

Snusmumriken in pro.lua
Игровые объекты? Игровую карту?
источник

IS

Ivan Stepanov in pro.lua
У нас embedded и 2 мб оперативки
источник

IS

Ivan Stepanov in pro.lua
Паковать даже координаты необходимо
источник

IS

Ivan Stepanov in pro.lua
(работа с сетью)
источник

S

Snusmumriken in pro.lua
Есть вариант написать на сишке набор абстракций над битовой фигнёй. Выгружаешь в луа предельно сжатые объекты, луа при чтении и указании полей будет дёргать сишные функции которые ковыряют биты.
источник

IS

Ivan Stepanov in pro.lua
(и играми)
источник

IS

Ivan Stepanov in pro.lua
Типа такой, видел, да
источник

IS

Ivan Stepanov in pro.lua
[ivan@pc some-test]$ time luajit ./just_some_lua.lua 
158028

real    0m5.690s
user    0m5.684s
sys     0m0.000s
[ivan@pc some-test]$ time pypy3 ./just_some_python.py
158028

real    0m0.300s
user    0m0.269s
sys     0m0.017s
[ivan@pc some-test]$ time ./cmake-build-release/some
158028

real    0m0.099s
user    0m0.099s
sys     0m0.001s
источник

IS

Ivan Stepanov in pro.lua
LuaJIT не такой быстрый, как PyPy :(
источник

IS

Ivan Stepanov in pro.lua
Запрашиваю код ревью)
источник

IS

Ivan Stepanov in pro.lua
питоны и плюсовые решения взял из https://gist.github.com/Veedrac/d25148faf20669589993
источник

S

Snusmumriken in pro.lua
Нет, типа такого:

struct GameObject {
 int pos;
 int vec;
}

int lua_class_gameobject_new(lua_State *L){
   GameObject * o = (GameObject *)luax_newobject(L, "GameObject", sizeof(GameObject));
   int x = luaL_checknumber(L, 1);
   int y = luaL_checknumber(L, 2);
   o.pos = x & (y >> 0xF);
 return 1;
}

int lua_class_gameobject_Get(lua_State *L){
 GameObject * o = (GameObject *)luaL_checkudata(L, 1, "GameObject");
 char field = luaL_checkstring(L, 2)[0];
 if (field == 'x') {
   lua_pushnumber(L, o.pos & 0xFF);
 }
 else if (field == 'y') {
   lua_pushnumber(L, o.pos << 0xF);
 }
 return 1;
}

Потом выгружаешь метатабличку и функции создания игровых объектов в луа, прописываешь деструкторы и всякую такую ерунду.
источник

IS

Ivan Stepanov in pro.lua
Ааа, вон как
источник

S

Snusmumriken in pro.lua
источник

S

Snusmumriken in pro.lua
И кстати, тут неплохой такой набор утилити, в том числе по объектам, и примеры их применения.
источник