Νῑκόλαος
в чем именно?
Igor
А для чего это применить то можно?
Νῑκόλαος
для возможности запуска у себя C# скриптов с возможностью контроля безопасности и времени исполнения
Νῑκόλαος
превосходный проект
Igor
в чем именно?
Я вообще с опаской на C# смотрю, из семейства Си он мне меньше всех симпатизирует
Νῑκόλαος
зря, с выходом неткора это самая крутая платформе из Си
Igor
Мне и чистенькой сишки хватает
Νῑκόλαος
я просто не вижу применения в си, от слова совсем)
Igor
Каждому своё
Igor
Мне, например, нравится быть как можно ближе к машине
Igor
На ассемблере я писать не собираюсь, конечно, жизнь коротка слишком для таких развлечений, так что для меня си - идеальный вариант
Νῑκόλαος
Rust?
Igor
Подумывал его попробовать, но так на Сях и остался
Igor
Не хочется куда-то перелазить
Ж
https://github.com/yanghuan/CSharp.lua кто нибудь этим пользовался ?
Какой-то сферический конь в вакууме, или я не понял, как им пользоваться. Вот есть у меня код проекта на Unity. Взял .cs файлик попроще, закинул в демку: https://yanghuan.github.io/external/bridgelua-editor/index.html ...а оно мне в ответ кучу ошибок. Попробовал разные файлы. Любая зависимость вводит его в ступор, и ладно бы сконвертил с ошибками, так нет, просто куча ошибок и всё. Вообщем, пока например для портирования проекта с Unity на Corona / Defold / Love не годится.
Lucky
Колдовство, сжечь!https://habr.com/ru/post/473636/
Ж
буханка и троллейбус, но круто
Ж
не, ну руками по-старинке конечно всё можно, просто чуда не происходит
Νῑκόλαος
зависимости оно не подтягивает, но именно шарповый код транслирует очень хорошо, хотя и бывают баги. У меня просто весь проект завязан на этот транслятор кода, думал мб кто нибудь использует тоже)
Ж
ну да, не спорю, код и правда неплохой получается (если получается): private int NextId { get { return nextId_++; } } транслирует в getNextId = function (this) local default = this.nextId_ this.nextId_ = default + 1 return default end
Νῑκόλαος
точнее зависимости там можно в транслятор заносить, я просто этим не пользуюсь, а веб интерфейс это просто побаловаться
Ж
а декомпилятор вменяемый для lua есть? а то существующие грустно декомпилят такой код: local _M = { } _M.test = { 1,2,3 } function _M.someFunc() for i = 1, #_M.test do print(_M.test[i]) end end _M.someFunc() получается хоть и понятная, но фигня с UPVALUE: { test = { 1, 2, 3 }, someFunc = function() for _FORV_3_ = 1, #_UPVALUE0_.test do print(_UPVALUE0_.test[_FORV_3_]) end end }.someFunc() И часто вообще ересь типа{1,2,3}[_FORV_3_]
Ж
т.е. да, код восстановить часто удаётся, но вот сразу после декомпиляции код не работает, например
Snusmumriken
Ну и нытьё : )
Νῑκόλαος
Можно тоже поною? Никак не могу найти представление для Иерархии данных в табличном представлении, ну и собственно парсера всего этого. Как на Lua обстоят дела с этим? Как геймдату хранят ( только не в виде кода луа представлении ) в таблицах, есть иерархические какие нибудь лоадеры?
Snusmumriken
Ой мама, столько всего непонятного, что хочется конкретного примера.
Snusmumriken
Потому что выглядит пока просто как "дерево/куча объектов и функции для руления ими"
Νῑκόλαος
Νῑκόλαος
Вот небольшой пример. тут к примеру value.item это массив, и он должен для микромоба заполниться двумя элементами
Snusmumriken
1. Объектики, наследующиеся от всякой фигни (СуперЩит наследуется от щита наследуется от игрового объекта которого можно брать в руки) 2. ESC (энтитя, на которую замиксинены "игровой объект который можно брать в руки" и "защищающий объект")
Νῑκόλαος
все это надо как то распарсить, только все оно будет парситься автоматом на основе заданной схемы данных, я бы чо нить подобное просто хотел увидеть, чтобы можно было данные заполнять
Snusmumriken
А парсилка — обычная csv-парсилка, чаво уж там.
Νῑκόλαος
вопрос именно в представлении таблицы, возможно есть более красивые варианты такого представления иерархии
Νῑκόλαος
типо хочется к примеру кампанию запихнуть в одну таблицу, есть N кампаний, у них M нод, у них по K мобов на уровне
Νῑκόλαος
http://castledb.org/ такую штуку нашел, никто не юзал?
Snusmumriken
Тэкс, стоямба. Тебе нужны просто уровни. Кампания — это просто набор уровней (и, возможно, передающиеся между ними данные). Уровень — это условная карта, условные сущности и правила старта/триггеров/завершения данного уровня. Тут ничего шибко сложного, но хранить придётся как чуть более объёмную фигню, а ля CSV для стратежки: -- LEVEL_HEADER.CSV rule_name, trigger_when, args, action "level start", "init", "{"setGold": 2000, "setStone": 300}", every_player_and_bot "checkwin", "everyframe", "{"checkGold": 2000, "checkBase": true}", goto_level_2 -- LEVEL_ENTITIES.CSV entity, owner, stats, position, ... castle, player, , 10:20, castle, bot1, , 10:25, archer, player. 10:21
Νῑκόλαος
я пишу не для уровней, я пишу обобщенное решение, под которое можно запихнуть все что угодно, это могут быть уровни, айтемы, мобы со всякими плюшками внедренными, и всяким таким подобным, что именно это будет должно описываться структурами, и именно что я хочу чтобы была поддержка иерархической вложенности, вобщем безумная штука, сейчас просматриваю кастлдб и он подходит очень хорошо, надеюсь как обычно не сломаю идею
Νῑκόλαος
на шарпах я бы описал эту структуру примерно так: Dictionary<string, SomeClass> где сам класс содержит еще одно поле Dictionary<string, SomeClass2> Field 2
Snusmumriken
Описывай так, как описывал бы на шарпах.
Νῑκόλαος
csv мне не нравится тем что пользователю много париться надо, + я точно не хочу заставлять его использовать Json...
Snusmumriken
Пофигу в какие будут форматы, если ты сделаешь редактор карт. Сшиваешь все csv-шки, ресурсы и скрипты в один архивчик, монтируешь и подгружаешь содержимое. И наоборот, когда редактор наредачил — выплёвывает архивчик, можно даже с модами.
Νῑκόλαος
а, я кажись понял. редактор карт мне вообще не важен, суть в табличных данных только
Νῑκόλαος
карты подразумевались по количеству монстров, а не сама карта (ее представление)
Νῑκόλαος
Νῑκόλαος
подкупает возможность иерархии обьектов, + типизированность
Snusmumriken
Понимаешь в чём фигня, полностью универсальная система оказывается крайне неудобной. Помнишь третьих героев? Там есть игровая карта как трёхмерный массив. Тебе нужна поддержка такой структуры, иначе будет кошмар (да и вручную прописывать айдишки почвы/сущностей на каждый слой будет жопно, нужен редактор с кисточками). Хочешь гексагональную карту? Придётся морочиться с другими штуками. Хочешь полигональную карту? Миллиард массивов вершин, и каждый что-то да значит.
Snusmumriken
Совершенная универсальность — это кошмар, по этой причине в движках типа юнити этого не делают: юзер сам склепает то что ему нужно.
Νῑκόλαος
а, так я ведь не игру делаю, я сервис делаю, не мои проблемы аахахаха. а если серьезно, то я с редактором карт пока ничего не могу поделать, мб позже придумаю, мне именно данные нужно придумать как заредактировать
Snusmumriken
Уровень чем плох? ))
Νῑκόλαος
уровень в юньке мб 3д или 2д, делать руками редактор бессмысленно)
Νῑκόλαος
а у меня таргет именно на юнити
Νῑκόλαος
сами сделают, сэкспортят и заюзают
Snusmumriken
Жуть какая, тогда пробуй каслбилдер, потом расскажешь
Snusmumriken
(в варкрафте, на принципе "всё есть уровень", выпочковался дотан, а кампании там — просто надстройка над уровнями, хе-хе)
Νῑκόλαος
помню разок залезал туда в детстве, но нифига не понял)
Aleksandr
а есть релизации hot code reload на lua а то мы тут релизовали !
Νῑκόλαος
Жуть какая, тогда пробуй каслбилдер, потом расскажешь
Оказалось там наследование нельзя реализовать адекватно... вопщем идет лесом, но для простых проектов типо игры на луа думаю очень хорош был бы
Νῑκόλαος
На луа на чем можно сделать GUI? мне табличный редактор хотелось бы замутить
Anonymous
На питоне
Anonymous
Кек
Νῑκόλαος
на питоне так на питоне, либу подскажи то)
Snusmumriken
tk
Andrey
добрый вечер! а кто-нибудь юзает автоформаттеры? нашёл пару мелких luafmt на гитхабе, но мб есть что-то популярное?
Snusmumriken
Например мод на атом https://github.com/Glavin001/atom-beautify
Andrey
Например мод на атом https://github.com/Glavin001/atom-beautify
интересно, спасибо! но мне всё же что-то типа luafmt подойдёт, ибо хочу в пайплайн вставить
Snusmumriken
Хошь автоматом "улучшать" весь код проекта?
Andrey
да, а почему в кавычках? :) иногда просто форматирование съезжает, и я не замечаю какое-то время
Andrey
а тут раз - и такой-то прекоммит хук
Snusmumriken
Ну, потому что лично я не использую автоматическое форматирование потому, что оно мне всю табличность портит : )
Snusmumriken
Ну типа я тут пробелами отбиваю отступы, а оно их кушает.
Andrey
как раз хотел пример такого :)
Andrey
хм, в clang-format такое можно настроить
Andrey
мне тоже это нравится
Andrey
p.s. заинтригован переменной HEAP
Snusmumriken
(это куча)
Andrey
что ж.
Snusmumriken
А так, на самом деле тут тестовый вариант для моей сетевой либы, поэтому задача — как можно быстрее накидать более-менее рабочий пример. Даже serpent вместо binser, дабы видеть происходящее.
Snusmumriken
В виде "глазами смотреть но не трогать, она в процессе".