Pull to refresh

Comments 35

Хм, скрипты на скриптах? :)

И почему творение от китайских друзей? На мой взгляд, LuaInterface проще
Я прогуглил разные библиотеки. Выбирал по параметрам:
1. полный source code, никаких dll
2. 100% совместимость даже с обрезанными Mono .NET на всех платформах

Выбрал UniLua, попробовал, заработало =)
Мы тоже хотели прикрутить Lua или Python, но пока останавливает как раз то, что они не на всех платформах работают. В отзывах Unity Lua Interface Library написано что на маке не работает и ответ разработчика что мол да, не работает.

Вы проверяли работоспособность на всех платформах?

Такую же бы штуку, только для C#
Мы не проверяли, но везде написано, что именно эта UniLua будет работать, т.к. написана полностью в исходниках и не ссылается ни на какие хитрые части дотнета. И кучи отзывов, что да, помогло и на iOS заработало.
А почему вас не устроил C# или JS?
Ведь C#,UnityScript и Javascript в Unity и есть скрипты.
Да и велосипедные надстройки теряют тестируемость.
Что вы выиграли от внедрения еще одного уровня скриптов?
Потому что написание квестов, скриптовых сценок и т.п. — не должно требовать перекомпиляции кода. Это геймдизайнерская задача. А никакая геймдизайнерская задача не должна требовать лазанья в код. Это — аксиома грамотного построения кода игры.
Простите, написание на LUA разве не лизание в коде, да и еще в сторонней IDE?
Описание квестов, уровней и другого динамического контента должно происходить деклоративно, например, в XML или JSON формате и скармливается движку, написанного программистом на «родных» языках для Unity и протестированному.
На мой взгляд — это грамотное построение проекта.
Так именно так и есть. Есть отдельные ресурсы гейм-баланса. Скрипты в текстовых файликах, баланс в табличке Google Docs. Все это дело скармливается в игру.

То есть дизайнер придумал квест, перед которым по его задумке нужно проиграть анимацию. Он забил квест в табличку и прописал ему скриптик в отдельном текстовом файлике. Все изолированно.
Тогда зачем Lua? Это не декларативное описание, а язык скриптов.
Использование Lua может нарушать порядок выполнения, а также приводить к появлению ошибок.
Этих недостатков лишен декларативный подход.
Можно сделать написание и компиляцию C# скриптов без перекомпиляции кода! Можно генерить код по декларативным описаниям дизайнеров. У нас например дизайнеры писали функцию расчета урона как обычную формулу а мы генерили и компилировали код, и меняли без перекомпиляции хоть в рантайме.
Повторюсь, C# может все что любой другой скриптовой язык и любая прикрутка луа и других скриптов к шарпу всегда будет бессмысленной и вызывать недоумение.
Вы сейчас про Unity или про C# в целом?
И про Unity и про C# в целом. mono поддерживает генерацию и компиляцию кода.
Еще раз — геймдиз вносит правку в блокнотике в текстовый файл скрипта и перезапускает готовый .exe — ваш подход позволяет так сделать?
Я не знаю, как с поддержкой всего этого в Моно, но на iOS работать не должно, т.к. там выпилены все подобные вещи в угоду секурности.
не получится, надо версию .net 3.5 минимум
Правильно ли я понимаю, что если правки не в начал игры, а в нескольких произвольных местах, то надо всю игру проходить заново до момента изменений?
Или гейм дизайнер еще и читерит в сейвах?
Естественно, для тестирования предусмотрены все необходимые инструменты
Друзья! Скажите, пожалуйста, как обстоят дела в этом юнити с тестированием? Тестируют ли вообще? Какие библиотеки используют?
И увидим ли мы тесты в этой замечательной серии?
Спасибо.
Рекомендую рассматривать данную статью в ракурсе «Как не надо делать», если только вы не хотите скинуть работу программиста на game-дизайнера.
То есть по-вашему скриптовать сценки в игре должен программист???
А по вашему программировать должен дизайнер?
Есть специальная должность — программист скриптов. Вот пусть он и пишет. Не лишайте людей работы:)
О чем мы вообще говорим, если у нас в компании всего 3 человека? =)
Тогда зачем вам вообще так все усложнять если вы делаете простенькую инди игру, а не WoW?:)
Поверьте — это наоборот упрощение.
Не смешите мои тапки! Покажите любой известный движок или просто проект, где применили такую методику и не разочаровались.
Сам на Lua сделал больше пяти проектов, но таких извращений еще ни в одном вообще не встречал.
Думаю есть только один вариант, когда уже есть на Lua написанная логика проверенная может даже из готовой игры.
и вот что бы только связать и запустить логику через два десятка Lua функций под Unity, на такую жертву можно пойти.
дело в том что Unity уже содержит скриптовый Engine на базе mono, а также содержит IDE для работы как программиста(MonoDevelop или VS), так и level-дизайнера(сама оболочка Unity и MonoDevelop если уже приходится делать кастовую логику на уровне)
Используя Unity, вы по сути, пишите скрипты под универсальный 3D Engine. И это все выгодно отличает Unity от все остальных игровых фремворков.
Описанный вами подход отлично подошел бы для реализации на Marmalade, где есть C++ и все. А в Unity как раз подход такой, что бы можно было легко и просто делать уровни и их логику, прост отлаживать и релизить игровые приложения.
Простите, но вы забиваете микроскопом гвозди.

Вообще зачем плодить сущности? Вам и так дали широкие возможности скриптования на C#, JavaScript или Boo на ваш выбор. Зачем еще Lua нужна? Тем более с такими шаманствами?
Сделайте редактор квестов и ведите описание квестов в JSON или csv, как уже было описано ранее. Надо чтобы перед квестом проигрался ролик — меняем соответствующий параметр в блокноте и не мучаемся с скриптованием и программированием. Пожалейте дизайнеров, им и так много чего считать и балансить приходится.

Единственное что приходит в голову для чего может понадобится Lua — клиент серверная игра-сервис с толстым клиентом. Например: у нас есть два числа x и y и мы знаем что в любой момент взаимодействие между ними может измениться. Ок, посылаем запрос серверу, он нам выдает скриптик на Lua и уже на клиенте считаем. Все довольны и выпускать патч ради такой мелочи не требуется.
У меня такое чувство, что вы не читали статью и комменты выше.
Но если это исключительно для геймдизайнера, то ведь есть же вроде визуальное скриптование в Юнити?
У них просто одна лицензия на всех 3 человек. И Юнити стоит только у програмиста, а у остальных только блокнот..))… Хардкорщики.
Такие вещи больше подходят для 3D игр, где прямо в играх собираются сцены и т.п.

В нашем же 2D подходе всю картинку удобнее и проще рисовать кодом и собирать тоже кодом, без работы с редактором сцены.
Sign up to leave a comment.

Articles