![]() |
Альтернатива скриптовику.
Привет, булка.
У меня вопрос такой вот интересный вопрос: существуют ли какие нибудь альтернативные методы реализации сценария в игре? Я имею ввиду относительно сложные жанры типа шутеров и рпг. |
Ответ: Альтернатива скриптовику.
Хочу обсудить, но даже не понимаю вопроса. Что значит "реализации сценария в игре"?
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
Шутеры по сложности с РПГ лучше не сравнивать и так понятно что в РПГ система триггеров на несколько порядков сложнее. |
Ответ: Альтернатива скриптовику.
Да можно скриптовать от кучи параметров. Не только прохождение через триггер. У тебя цель реализации какая?
|
Ответ: Альтернатива скриптовику.
Цель реализации такая, что скриптовик программировать - сложный и долгий процесс.
Любая игра - по сути структура. Скрипты нужны для того чтобы ее "творчески нарушать". Но только ли с помощью скриптов это можно сделать? Я это имею ввиду. |
Ответ: Альтернатива скриптовику.
у меня была идея взять C и писать скрипты на нём (у нас kismet-подобная система логики, скрипт это просто одна нода, если кто не в курсе то вот), на время разработки скрипты будут компилироваться во время запуска и исполнятся на виртуальной машине, а во время деплоя мы просто берём все скрипты и вставляем в код игры
но к сожалению я не нашел нормальных, лёгких, простых компиляторов C которые можно перепотрошить под свой набор инструкций (кто предложит llvm - пускай сам и попытается, это чудовищный монстр, хоть и п*здец какой быстрый и крутой !), если написать виртуальную машину можно за вечер-два, то написать хоть какой-то компилятор для C это как минимум неделя работы по хорошему, а то и две-три, а сейчас на это нет времени так что пока сижу на lua, есть еще идея заюзать http://skookumscript.com/, но стоит он очень много, за такие деньги я два компилятора сам напишу :crazy: |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
jimon, вот в том и штука. Виртуальная машина не сложна. А вот компилятор... Поэтому и спросил. Это нехилые затраты времени. Но и альтернатив не много.
H@NON Главная цель - чтобы самому не запутаться. О моддерах речи не идет. У меня была такая идея. Зашить абсолютно все). Но есть мнение, что это будет ужасно). Лол. Вообще вариант зашить все в экзэшник - самый простой. Это вроде как и не скрипт, но исполняет в полном объеме его функции. Не так гибко, но для реализации сценария вполне сойдет. |
Ответ: Альтернатива скриптовику.
Цитата:
сорцы на твоём языке -> [твой транслятор] -> исходники на си -> [си компилятор] -> бинарник |
Ответ: Альтернатива скриптовику.
Цитата:
есть эпическая система http://gentle.compilertools.net/ там в семплах лежит компилятор небольшого подмножества паскаля в MK68k и так же пример компиляции этого же паскаля в вм, самая большая крутость в том что исходники этих компиляторов весят около 10-20 кб, но трудоёмкость написания этого кода зашкаливает, он сверх-декларативный похожий на логическую парадигму, но я уверен что неплохой C компилятор, генерирующий байт-код, можно впихнуть в 30 кб на gentle, только писать его нужно будет те же две недели |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
jimon, может заинтересует:
http://ru.wikipedia.org/wiki/TCC Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
|
Ответ: Альтернатива скриптовику.
для c# есть такая штука как рефлексия.
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
|
Ответ: Альтернатива скриптовику.
Если пилишь логику игры и "событий" в одно лицо - мочи хардкод, быстрее выйдет.
Если надо кому-нибудь типа моделлера-левелдизайнера поручить придумывание и воплощение событий - тут да, скриптовые движки в помощь. А альтернативы... Действительно непонятно, "а зачем?". |
Ответ: Альтернатива скриптовику.
Цитата:
ИМХО. Для больших проектов скриптовик полезен, но для мелочи достаточно редактора. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
ну для больших проектов удобнее редактор юзать имхо. там столько этих скриптовых сцен, что для каждой писать скрипт это я хз.
|
Ответ: Альтернатива скриптовику.
Цитата:
Имеется ввиду что в больших проектах может понадобиться кастомизация. Её не всегда можно добиться редактором. Конечно редактор и там, и там не помешает. |
Ответ: Альтернатива скриптовику.
Цитата:
для рпг нужен рекдатор, ибо будит проще. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
radiobutton, по моему ты не знаешь что такое рефлексия, скрипты и редактор (в данном контексте).
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
объясняю по хардкору в данном контексте:
рефлексия - точное описание на википедии прочитаешь, а на примере это так: в рантайме ты можешь получать инфу о объектах и создавать объекты. скрипты - сорцы на интерпретируемом ЯП выполняемые в виртмашине. Что бы быстробыстро вносить изменения в логику игры, не компилируя основной код редактор - что-то абстрактное, где можно редактировать объекты (НПС например): добавлять скрипты, выбирать модели, ставить на карту и тд. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Ок. Тогда сделай мне на рефлексии (без реализации виртмашины):
Программа которая выполняет скрипт, и показывает это как либо. НО скрипт нельзя компилировать. Хз как ты на рефлексии сделаешь виртуальную машину, но ты же не троль, ты адекватный человек который отвечает за свои слова, ты сможешь. |
Ответ: Альтернатива скриптовику.
Цитата:
или уже не подходит под твое описание скриптов ? ( |
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
либо ты не знаешь чем компиляция отличается от интерпретации лол |
Ответ: Альтернатива скриптовику.
Цитата:
Интерпретируемые программы, для которых, как правило, не применяется процесс компиляции и которые интерпретируются операционный системой или специальными программами-интерпретаторами, называются скриптами или «сценариями». Программа на IL это интерпретируемая программа. Создаем шаблон. вставляем туда наш скрипт(код) на c#. Компилируем в IL. Получаем сборку. Подключаем ее к нашему основному коду. С помощью него она и выполняется. Все... Перекомпилировать весь проект для этого не нужно. Компилируем отдельные сборки. И они автоматически распознаются нашим движком и выполняются. Разьве не скрипты? :) |
Ответ: Альтернатива скриптовику.
Цитата:
скрипты не надо компилировать, они блять интерпретируются |
Ответ: Альтернатива скриптовику.
Цитата:
Если бы мы писали сразу на IL компилировать бы совсем не нужно было. |
Ответ: Альтернатива скриптовику.
Цитата:
Лучше не упрямься, а лишний раз пересмотри вопрос. |
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
и вообще, пока не сделаешь скриптовый движок (без компиляции, средствами шарпа, без реализации виртмашины) на деле - балабол сделаешь - считай я слил жду и молчу |
Ответ: Альтернатива скриптовику.
Цитата:
И в чем я не прав? Если писать на IL, то компиляция не нужна и выполняются все пункты соответствия скриптам. Рефлексия тоже никуда не уходит. :) Цитата:
Чем рефлексия хуже то ? )) Почему код на C которые нужно компилировать это скрипты и никто не возражал, а код на C# компилируемый в IL и исполяемый на jit это не то? |
Ответ: Альтернатива скриптовику.
Цитата:
Есть .exe игры у пользователя (не у разработчика). Есть код скрипта написанный пользователем (не разработчиком). Если положить его в папку с игрой и он будет там чем-то управлять - это скриптовик. Если для добавления скрипта нужно компилить .exe заново - то это не скриптовик. |
Ответ: Альтернатива скриптовику.
с IL ты прав:) , но это промежуточный язык:) , не годный для разработке на нём.:)
с рефлексией:) опять бред какойто написал:) , я тебе выше написал что это.:) и ты пиши, :) балаболить все умеют:) - а на деле ничерта:) |
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
Ты упускаешь одно важное звено: Даже если подобное и было бы возможно через рефлексию, то пришлось бы делать такие же костыли с интерпретацией, а уже потом подключалась бы рефлексия. Это если на пальцах объяснять... |
Ответ: Альтернатива скриптовику.
Цитата:
шо ? какая-то гейская хуета не заменит аццкий оптимизатор нативного компилятора :crazy: [/trollmode] на самом деле я верю в llvm, но в cli не верю, слишком он громоздкий, а llvm вполне себе может компилировать C++ в javascript (clang -> llvm -> javascript code generation) ну и прочие романтические вещи |
Ответ: Альтернатива скриптовику.
Вообщем. Пример для XNA.
тут 3 файла. hero.dll script1.dll game.exe hero.dll это вспомогательная библиотека скомпилированная из кода ниже и содержащая класс персонажа с информацией о нем. Персонаж у нас это 2д квадрат 20 на 20. Информация это его положение и цвет. script1.dll это наш скрипт. Он создает одного персонажа и двигает его по окружности с радиусом 80. game.exe это наш скриптовый движок, который читает script1.dll с помощью рефлексии и выполняет соответственно. Компиляция первых двух библиотек производилась с помощью следующего кода: Смысл в том, что скриптовый движок знает только то, что в скрипте есть две функции - draw и update. Соотвественно он их и исполняет. А в них прописано создание объекта персонажа и его движение. Тоесть скрипт. Возможно из-за криво указанных XNA сборок при компиляции у вас ниче не запустица если их адресс не будит совпадать с моим. =) Без указания полного пути у меня так и не получилось. Можно компилировать код на c# из текстовых файлов в сборки IL в оперативную память. При запуске игры например. Автоматически. |
Ответ: Альтернатива скриптовику.
Раз не подходит LUA, AngleScript, TCL, REBOL то надо писать свой скриптовик под свои нужды.
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
radiobutton, ты с какого раза поймёшь, что суть скрипта в том, чтобы он выполнлся на лету (интерпретировался), а не компилировался. если ты не понимаешь таких очевидных вещей - |
Ответ: Альтернатива скриптовику.
Цитата:
у меня как выполняются? |
Ответ: Альтернатива скриптовику.
Цитата:
Скрипт в DLL - это хардкор. |
Ответ: Альтернатива скриптовику.
Цитата:
Вместо блокнота только нужно свое приложение небольшое написать. В котором будит таже кнопка сохранить. И тоже текстовое поле в котором можно будит вводить код. Когда будишь нажимать на сохранить код будит автоматически компилироваться в dll сборку. А можно вообще не компилировать. А хранить в зашифрованном виде c# код. И компилировать уже при запуске игры расшифровывая файлы. При этом скорость работы кода на IL в разы быстрее чем скорость работы ваших интерпритаторов. :) компиляция 1000 раз моего скрипта из прошлого примера занимает 23456 милисекунд. тоесть 23 милисекунды на скрипт. Имхо большая часть времени уходит на составление метаданных т.к. скрипт маленький. Теперь подумай сколько времени тебе нужно чтобы дотянуться мышкой в блокноте до кнопки сохранить? Единственное это не подходит для самосовершенствующихся приложений, которым необходимо переделывать свой код несколько сот раз в секунду. Но мы кажется говорим об играх. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
По существу: Иди проспись. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
radiobutton. То что ты предложил - по сути лишний геморрой. Проще сразу зашить сценарий в экзешник. |
Ответ: Альтернатива скриптовику.
Gector, IgorOK
зря вы на radiobutton накинулись. да, к кому угодно можно испытывать расовую неприязнь и да, есть некоторые тонкости в использовании рефлексии вместо полноценной скрипт системы, но ваши аргументы сами по себе унылы. какой нафиг блокнот? нет, серьёзно, скриптовать логику в блокноте? Это конфиг параметры в блокноте удобно править. А писать какой-никакой код - совсем неудобно. Иметь какую-либо тривиальную IDE в любом случае надо. Желательно что бы она была вшита в какой-нибудь редактор. А раз оно всё равно нужно, то чем плохо написать код и собрать его в длл средствами этой самопальной IDE? Компиляция? Ну это, господа, совсем не аргумент. Чем оно вас не устроило? Я понимаю, ничего хорошего в ребилде всего проекта нет (у меня например проекты билдятся от получаса до нескольких часов, правда это C++, Boost и куча куча других штук). Но уж скомпилять за полсекунды длл-ку со скриптовой логикой вполне себе допустимо. Аргументы не те. Придумайте что-нибудь по существенней. :) |
Ответ: Альтернатива скриптовику.
Цитата:
Насчёт "писать в блокноте" - согласен, а вот насчёт "чтобы что-то подправить нужна IDE" - нет. Желательно, чтобы скрипты можно было корёжить без IDE, на локальной машине тестера/друга/демонстрационном компьютере в комнате собраний совета директоров. Таскать с собой всегда и везде флешечку с тулчейном - не айс. Pre-runtime компиляция - ок, но тогда надо изворачиваться, если потребуется runtime-модификация скриптов (а это айс-какая фича, и вообще ускоряет разработку). Отсюда вывод: в общем случае интерпретация для скриптинга предпочтительнее. |
Ответ: Альтернатива скриптовику.
Цитата:
Для скриптовой сцены длл, для этого уровня длл и для того босса длл. Уж тем более для рпг - тысячи длл. Не сказал бы, что это очень удобно. |
Ответ: Альтернатива скриптовику.
Цитата:
|
Ответ: Альтернатива скриптовику.
>>чтобы что-то подправить нужна IDE" - нет
>>локальной машине тестера тестеру незачем лазать в скрипты. >>друга ему тем более. (если таки очень хочется, ничего сложного в установке самопальной легковесной IDE нету) >>демонстрационном компьютере в комнате собраний совета директоров если тебе на собрании инвесторов\директоров необходимо что-то доводить до ума - у меня для тебя плохие новости) хотя опять же, ничего страшного в легковесной тулзине нету. Ты как минимум потащишь туда проект. Ещё одну тулзину захватить - уж не надорвись, да. К тому же в девелоперской версии обычно всё равно всегда всё что нужно под рукой. и как бэ я не спорю, что скрипт машина предпочтительней. я просто к тому, что аргументы против рефлексии унылы. Цитата:
|
Ответ: Альтернатива скриптовику.
Цитата:
Тем более dll в .net это тот же .txt с кодом на IL и методанными. |
Ответ: Альтернатива скриптовику.
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 18:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot