Aydar
CryEngine уже брали, не пошло
Короче я к тому что умысла в выкладывании в опенсорс нет, то что движок сомнительного качества это уже иной вопрос, если сообщество захочет то допилит, не захочет не допилит. Данный проект им просто уже не нужен вот и выложили. И даже кстати тот факт что ни одной нормальной игры не вышло не говорит о том что весь код движка автоматически плохой и ничего полезного не принесет.
Pavel
CryEngine уже брали, не пошло
Поправьте. но разве Lumberyard - это не допиленый CryEngine какой-то версии? я к тому что на CryEngine так-то не мало игр выходило...
Aydar
2 вроде как
Ну вот тем более, чтобы такой клозедсорс перевести в разряд открытых надо кучу юридических вопросов сначала решить. Я где-то читал про Unreal Engine 1 (!) игроки просили его открыть, но всё застопорилось, потому что там целая куча мелких компонентов написана разными конторами и перевод этого добра в опенсорс требует разрешения множества людей и этим некому заняться.
Andrey
Всем привет, коллеги, подскажите есть ли ресурсы где достаточно много разных примеров использования debug.sethook и достаточно разжеванно. В книжке Иерусалимски только одна страничка.
Snusmumriken
Всем привет, коллеги, подскажите есть ли ресурсы где достаточно много разных примеров использования debug.sethook и достаточно разжеванно. В книжке Иерусалимски только одна страничка.
Ну собственно там и нужна только одна страничка. http://www.lua.org/pil/23.3.html Хук вызывается при каждом вызове любой функции в указанных событиях (вызов, возврат и т.д)
Джифорсович
Ввожу команду luarocks config variables.LUA_LIBDIR /usr/lib64/lua/5.1 выхлоп: Wrote variables.LUA_LIBDIR = "/usr/lib64/lua/5.1" to /home/h3x/.luarocks/config-5.1.lua затем: Configuration: Lua: Version : 5.1 Interpreter: /usr/bin/lua5.1 (ok) LUA_DIR : /usr (ok) LUA_BINDIR : /usr/bin (ok) LUA_INCDIR : /usr/include/lua5.1 (ok) LUA_LIBDIR : /usr/lib64/lua/5.1 (not found) **************************************** Use the command luarocks config variables.LUA_LIBDIR <dir> to fix the location ****************************************
Джифорсович
почему не меняется конфиг
Джифорсович
Джифорсович
дира то создана
Джифорсович
ls /usr/lib64/lua/5.1/ bit.so* lpeg.so* mpack.so*
Джифорсович
а, лол, я понял, можно было luarocks init сделать
Джифорсович
видимо мне это должно помочь
Джифорсович
окей, спасибо за помощь
Wsevolod
Есть пояснение, почему, например, ("_"):rep(10) работает, а local t = {} t:insert(42) — нет?
Leon174
Строковая библиотека экспортирует свои функции в виде модуля с именем string . Начиная с Lua 5.1, она также экспортирует свои функции как методы, принадлежащие типу string (при помощи метатаблицы данного типа). Поэтому, например, перевод строки в заглавные буквы можно записать либо как string.upper(s) , либо как s:upper().
Leon174
Для табличной библиотеки этого нет. local inspect = require "inspect" local t = {} print(getmetatable(t)) local s = "" print(getmetatable(s)) print(inspect(getmetatable(s)))
Tverd
Всем привет! Кто-нить чо-нить находил для луа типа макропарсера? например видит он в тексте table.insert(tbl, 88) и тут же меняет на tbl[#tbl+1] = 88, видит for i,v in ipairs(tbl) меняет на for i=1, #tbl и тд
Leon174
Всем привет, но никого нет, вымерли. Я такого не встречал. Если только самому написать. Lua2Lua transpiler, забавно, наверное.
Tverd
ну есть варианты luamacro, думал можно обойтись готовыми вещами )
Tverd
а так да, lua2lua что-то должно быть... туда бы еще отключение и включение ассертов
Leon174
Может metalua?
Snusmumriken
Есть пояснение, почему, например, ("_"):rep(10) работает, а local t = {} t:insert(42) — нет?
Сделай local t = setmetatable({}, {__index = table}) И будет работать. Или даже local arrmt = {__index = table} function array(t) return setmetatable(t or {}, arrmt) end Тогда будешь мутить всякие массивы с arr:insert()/arr:remove().
Leon174
Блин, столько интересного тогда было, такой движ был и как отрезало. Привет Иерусалимски и его папско-каталической бурсе.
mendisobal
Всем привет, есть ли какой-нибудь адекватный способ узнать количество элементов в не индексированном массиве. Также интересно понимать как находить последний элемент такого массива. pairs() ведь как-то понимает, что нужно остановится. Буду весьма признателен за ссылку на почитать или за разъяснения
mendisobal
А длинну видимо только счётчиком, перебрав все элементы (
Snusmumriken
Ничего страшного, всё нормально. function table.hlen(tbl) local i. k = 0, next(tbl) while k do i = i + 1 k = next(tbl, k) end return i end
A
Здравствуйте, коллеги! Начинаю изучать применение lua в различных железках )) Прошу помощи в правильной организации telnet-соединения!! Суть в чём, две железки должны общаться передавая короткие команды раз в 10..15 минут. Помимо сообщений о текущем состоянии необходимо изредка (40..60 сек) отправлять дополнительные запросы. Напрашивается простая схема типа: local socket = require("socket") local host = hostIP local port = 23 local tcp = assert(socket.tcp()) tcp:connect(host, port) --- while tcp do local res, err = tcp:receive() dosomething(res, err) local command = GetComm() tcp:send(command..'\r\n') end И вот тут возникает засада (( Пока сообщения идут с маленьким перерывам, всё ок. А как только перерыв между сообщениями увеличивается до нескольких минут, всё, ждём пока что-либо не будет принято... Подскажите, плз, какие есть способы преодолеть это?
🐅🤦‍♂️
Здравствуйте, коллеги! Начинаю изучать применение lua в различных железках )) Прошу помощи в правильной организации telnet-соединения!! Суть в чём, две железки должны общаться передавая короткие команды раз в 10..15 минут. Помимо сообщений о текущем состоянии необходимо изредка (40..60 сек) отправлять дополнительные запросы. Напрашивается простая схема типа: local socket = require("socket") local host = hostIP local port = 23 local tcp = assert(socket.tcp()) tcp:connect(host, port) --- while tcp do local res, err = tcp:receive() dosomething(res, err) local command = GetComm() tcp:send(command..'\r\n') end И вот тут возникает засада (( Пока сообщения идут с маленьким перерывам, всё ок. А как только перерыв между сообщениями увеличивается до нескольких минут, всё, ждём пока что-либо не будет принято... Подскажите, плз, какие есть способы преодолеть это?
Вам для начала нужно выставлять тайм-аут сокета при получении данных. Начните с документации luasocket на settimeout. А потом менять цикл обработки.
Snusmumriken
Здравствуйте, коллеги! Начинаю изучать применение lua в различных железках )) Прошу помощи в правильной организации telnet-соединения!! Суть в чём, две железки должны общаться передавая короткие команды раз в 10..15 минут. Помимо сообщений о текущем состоянии необходимо изредка (40..60 сек) отправлять дополнительные запросы. Напрашивается простая схема типа: local socket = require("socket") local host = hostIP local port = 23 local tcp = assert(socket.tcp()) tcp:connect(host, port) --- while tcp do local res, err = tcp:receive() dosomething(res, err) local command = GetComm() tcp:send(command..'\r\n') end И вот тут возникает засада (( Пока сообщения идут с маленьким перерывам, всё ок. А как только перерыв между сообщениями увеличивается до нескольких минут, всё, ждём пока что-либо не будет принято... Подскажите, плз, какие есть способы преодолеть это?
Сокет работает в двух режимах: с бесконечной блокировкой и с таймаутом. С блокировкой - сокет блокирует соединение пока не примет что-нибудь, и tcp:receive() без аргументов ждёт разрыва соединения. Чтобы принять строку с разделителем \r\n — используй tcp:receive("*l"). Второй вариант — сокеты с таймаутом, там если ничего не пришло по таймеру — соединение отпускает, и может идти дальше, например проверять другие соединения.
Snusmumriken
Пробовал так: ... tcp:connect(host, port) tcp:settimeout(5) ... После этого соединение рвётся.
Соединение не рвётся. Просто тебе нужно сделать цикл tcp:receive(), когда что-то придёт — оно тебе обязательно скажет, и в цикле ты можешь делать что-то ещё помимо сетевого соединения.
Snusmumriken
А статус соединения лежит как раз в err при receive, если оно прекращено — напишет не timeout а closed.
A
Спасибо!! Сейчас попробую ))
Snusmumriken
Пробовал так: ... tcp:connect(host, port) tcp:settimeout(5) ... После этого соединение рвётся.
local socket = require("socket") local host = hostIP local port = 23 local tcp = assert(socket.tcp()) tcp:settimeout(0) local status = tcp:connect(host, port) --- while status ~= 'closed' do -- команды telnet однострочные, -- поэтому "*l", т.е. line local data data, status = tcp:receive("*l") if data then dosomething(data, status) end local command = GetComm() if command then tcp:send(command..'\r\n') end socket.sleep(0.03) end
Snusmumriken
Собственно https://w3.impa.br/~diego/software/luasocket/tcp.html#receive
A
🙏
Snusmumriken
Ну вот теперь оно не блокирует и в цикле сначала спрашивает: "А пришла команда снаружи? Нет? Ну я другим займусь", а ещё спрашивает себя "а надо ли команду отправить?" и если да — отправляет. Ну и вот.
Snusmumriken
И примерно то же самое должно быть на сервере, только там крайне желательно менеджерить сразу много соединений параллельно подобным же образом. Сервер вполне себе тянет несколько (десятков) тысяч одновременно подключённых клиентов.
Snusmumriken
Собственно https://w3.impa.br/~diego/software/luasocket/tcp.html#receive
А блин, возможно "*l" это дефолт, ну ничего страшного если его явно указать, меня чот переглючило вчера. Ещё и криво объяснил спросонья.
Alxius
О, так это ты её делал!
так давно уже. ) теперь только патчи и обновления и графика добавляются ) . Кстати ищу человека который может в блендере пару монстров или героя нарисовать лучше чем то что имеется. примерно на 1000 рублей рассчитываю нужно иметь ввиду что в игре из рендерера хотя я его сохраню получится только спрайт 64х64 или в лучшем случае если обновлю движок 128х128
Alxius
изначально пиксельные хуже тем что в будущем я могу из три-д модели сделать любые.
Alxius
плюс в будущем вдруг я захочу реально 3д-ные модели использовать
Alxius
в таком случае файлы в формате блендера в багажнике пригодятся. хотя не факт что так будет но это возможно
Alxius
просто если у тебя етсь модель можно как 8 кадров сделать так и 24 по 64х64. каждый кадр
Alxius
и анимация будет плавнее
Alxius
а если нарисовано по пикселю - не будет никаких промежуточных кадров
Alxius
да. потому в игру рендерятся спрайты
Alxius
насколько я знаю в Лове кое-какие 3д фичи уже имеются.
LISP
А я вот своей игре даже стилистику не придумал(
Alxius
цена за модель или за комплект?
Цена за модель и все нужные сделанные скриншоты с нужных ракурсов ). И.к блендер у меня файлы не открывает с новой версии потому что в убунту считают что блендер должен быть старый
Alxius
Я думаю нажатие принт скрин никогда сложным не было )
Luсky
я переслал моделлеру
Luсky
мой гонорар за посредничество 7% от суммы сделки. С каждого.
Alxius
спасибо =)) посмотрим, в прошлый раз мне 2 спрайта за 100 рублей сделали , на анимацию так и не договорились
Alxius
выяснилось что девушка не умеет рисовать технику. только людей и арты - зато отлично
Lurk
Всем доброго утра! А в Lua брэйкать из циклов только можно?)
Snusmumriken
Snusmumriken
Осуждаю
Lurk
Да. А откуда тебе ещё нужен брейк?
Из вложенных if’ов) Из switchей))))) ок есть ретерн вопрос снимается)
Lurk
в жизни)
А так можно?)
Осуждаю
та за шо, перегоришь же ж без брейков
А так можно?)
даже нужно
Lurk
даже нужно
доверюсь Вашему опыту
ну не знаю)опыт только 1 год
Lurk
ну не знаю)опыт только 1 год
Чёт быстрое выгорание в луа)
ну я и не в луа)
луа так частично использую