Tverd
msgpack?
Tverd
там будет прикольная проблема, когда рекурсия пойдет, когда таблица ссылается сама на себя )))
Anton
https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D0%B0%D0%B9%D0%BD_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29
Tverd
Да нет, стандартный сериализатор, типа pickle в питоне, если я правильно понял
Anton
аа, я не в теме
Snusmumriken
Ух ты, смешная штука. Но я имел ввиду что-то проще. Да и сериализовать в объекте достаточно а) его самого б) его мета-таблицу в) если __index в метатаблице - таблица - сериализовать и её (или, если __index и метатаблица - одно и то же - прописать __index при восстановлении)
Tverd
хорошо, тогда для начала надо понять как сериализовать функцию... ибо она скомпилена
Snusmumriken
string.dump
Tverd
уверен? в луаджите там не шибко читабельно то, что я видел
Tverd
Парни, а видел кто-нить что-нить для рисования консоли? типа curses только с вменяемым объектным интерфейсом?
Snusmumriken
Уверен. Оно отлично загружается loadstring'ом, если используется та же виртуальная машина.
Tverd
😆 отлично выглядит )
Snusmumriken
Да пофигу. Главное - что это можно передать по сети. А ещё, можно вырезать всю лишнюю лабуду и сократить этим место.
Tverd
ну тогда вопросов мало... берем таблицу, по ней проходим pairs, предварительно сняв с нее mt, пихаем все, проверяем на рекурсию, и потом и мету таким же макаром
Tverd
это если бла-бла )))
Snusmumriken
Угу. Я же говорю что весёлая милая несложная задачка : 3 pairs, правда, должен быть рекурсивен. И при замыкании объектов, должны быть имена-метки. Ну там, вот такая штука: a = {}; a[1] = a должна превратиться во что-то такое: a = {'%a%'} А десериализатор должен обрабатывать '%a%', подставляя туда нужный объект, записывая вложенные таблицы в кеш-таблицу имён-id-ссылок. Фактически, достаточно чуть модифицированного json-сериализатора.
Tverd
Если писать, то немного надо напрячься )
Tverd
Ну да, я тоже так примерно подумал, ибо имена нужно сохранять
Snusmumriken
Хе-хе, хитрости : 3
Tverd
а есть же стандартный msgpack... он не то же самое делает?
Snusmumriken
Msgpack? Это где?
Tverd
да ладно.... http://msgpack.org/
Snusmumriken
А, видю.
Tverd
А изометрия это прикольно, было бы интересно. Тогда 3д движок и не нужен
Snusmumriken
Не, оно так не умеет. Обычный пакер json-like структур, просто очень хорошо сжимает. Ну, это всё таки для сообщений. Сообщения - как правило - набор полей.
Tverd
Ага, значит только таблицы... ну уже что-то все равно
Snusmumriken
Дык простых пакеров таблиц - жопой жуй : ) Оно и пишется в десять строчек. Просто там только строки/числа/булеан/другие таблицы без колец.
Tverd
зато кроссплатформенно и кроссязыково) но твою задачу это не решает, это уже понятно
Snusmumriken
Ну да, есть такое дело : 3 Json - тоже кроссплатформенный и кроссязыковый. Раньше эту роль исполнял xml. Это просто формат. Ну, а msgpack - замутили то же самое но сжимающее.
Tverd
Кстати, тут проскальзывало упоминание про таблицу из которой легко удалять элементы, не по индексу,а по значению. Где бы глянуть?
Tverd
ну критерии что бы быстро и соблюдался порядок, что бы можно было пройти как по массиву
Tverd
Хорошо, подумаю тогда, может что и выйдет ) спасиб
Snusmumriken
Удаление по значению - типичная задача бинарного поиска. И бинарные деревья делают примерно то же самое.
🦥Alex Fails
Починили
В каком жанре?
Ilia
Ае госпиталь тайкун:)) на love2d?
Tverd
не изометрия?
Tverd
Дык а как он появится-то? ))))))))))))
Ты же 3D хотел?
Ок.
Этот ты один пилишь?
Snusmumriken
Изометрия - это просто. У тебя может быть любое внутреннее представление игры (в виде данных), и произвольный рендер. По сути, изометрия - это те же тайлы, разделённые на несколько слоёв, и рендерящиеся от самого глубокого слоя/самого дальнего от камеры объекта к более ближним. Ну, то есть, сверху вниз, справа налево, с нижнего слоя к верхнему. Для крупных карт советую использовать спрайтбатчи и ffi-структуры, или либу типа этой: http://pastebin.com/unXUGUFW (я тут уже все замутил)
Snusmumriken
Ну, эта фигня рисует сотни и тысячи спрайтов в один drawcall
Tverd
от молодца, спасиб, поковыряемся
Snusmumriken
А, там в примере нет указания анимации. Без указания, оно будет отображать первый спрайт. Тут оно может быть статическим и динамическим.
Snusmumriken
Во, там что-то такое
Snusmumriken
Snusmumriken
Snusmumriken
Хех, тут очень много непонятных грязных хаков, вроде финалайзеров для удаляемых спрайтов, и странного способа запихивания в ffi-структуру ссылку на родительский грид, поэтому не обессудьте. Но зато типа очень экономично.
Tverd
это ты шейдеры крутил?
Snusmumriken
это ты шейдеры крутил?
Где? Шейдеров тут нет. Хотя конечно, я тоже крутил некоторое время назад.
Tverd
Где шар переливается...
Snusmumriken
Лав2д не подходит для тех у кого мало опыта.
Snusmumriken
Где шар переливается...
Это не шейдеры, просто управляющие переменные. Там анимация переливания, шестнадцать кадров.
Snusmumriken
А, если есть опыт использования движков - пойдёт. Лов довольно пуст, но есть много либ от комьюнити и полная свобода действий.
Snusmumriken
https://github.com/love2d-community/awesome-love2d
Snusmumriken
SDL. И дергание его функций напрямую. Тут нет оптимизаций движка, потому что нет движка :3
Snusmumriken
Зачем такой большой огл? 3d?
Snusmumriken
Ну, в спрайтовой части там мало что изменилось. И ловка даёт апишку 'детского' огла, что очень помогло мне поначалу.
Snusmumriken
В смысле, берем спрайт, и говорим: 'нарисуй его здесь, под таким-то углом'. Или берем мешку, указываем ей точки, указываем текстуру и говорим ей, нарисоваться вот тут. Минимум байтоёбства.
Snusmumriken
Но можно писать шейдеры на glsl. https://love2d.org/wiki/love.graphics.newShader
Snusmumriken
Там еще luajit, набор либ для пользования всякими звуками/картинками/физоном/сокетами/настоящей многопоточкой и всего такого. Ну, то есть, помимо SDL есть еще что-то по мелочи.
Snusmumriken
Должен подходить, но прикол в том что это не движок, и тут нет даже систем сущностей или редакторов сцен. Провоцирует на изобретение велосипедов. Да, есть комуночка, но все равно, велосипедостроение впереди планеты всей :3 Собственно, поэтому я и начал изучение с него. С одной стороны - свобода, с другой - куча действий чтобы даже менюшку организовать. Да и ты сам видишь, на какие извращения пошел я, чтобы сделать оптимизированные анимации. Успел написать в свое время написать кучу либ типа к конечных автоматов/систем состояний/быстрых векторов и всего такого. Самое популярное - на том пастбине.
Если не хочешь много велосипедить, и нужен хороший опенсорсный движок, можешь посмотреть Godot. Язык там не Lua, но простой.
Впрочем, в написании велосипедов есть своя прелесть.
Tverd
С Моаи уже давно нет смысла париться )))
Tverd
Медленный годот? Или его скриптовая часть?
Tverd
Между нами я не понимаю зачем нужен свой скриптовый язык в наше время, если есть Луа ))))))))))))))))
Yogurt
До луа так же думали
Тут описано. https://godotengine.org/article/godot-getting-more-languages
Yogurt
Yogurt
"We understood that most of the code written for a game is not performance critical" Ох, горит, держите меня
Most of the code. Узкие места можно на C++ написать.
Snusmumriken
Ну, сценарии и правда и не очень требовательны по производительности.
Yogurt
А там можно на плюсах?
Tverd
Это понятно все, но это время - написание своего скриптового, + очень сомневаюсь что можно что-то быстрее луаджита сделать.
Yogurt
Я просто не особо игрался с ним