Информация

Обсуждало 3 человека

проблемы с созданием скриптового языка для движка

Логика и программирование
04 декабря 2011 в 20:36:39

Начал создавать текстовую рпг, но столкнулся с проблемой, для движка нужно создать скриптовый язык, но я никак не могу придумать как мне это сделать. Искал статьи, но они мало помогли. Кто-нибудь делал такое на ас3.0?

Обсуждение (вниз)

Не хватает только вашего мнения. Зарегистрируйтесь, чтобы написать!

08 декабря 2011 в 23:20:34

Если кому интересно, то вот, что на данный момент сделал http://zalil.ru/32231130
Конечно это туфта, три кружочка бегают по сцене, но надеюсь это превратится в что-то большее.

07 декабря 2011 в 21:14:03

А кто-нибудь работал со своим пространством имен? Я как человек начинающий, не очень много уделял времени этому пункту в руководстве для пользователя. А сейчас прочитал, и ничего не понял)) И хочу узнать, сможет ли это помочь в случае с парсингом своего скрипта с помощью Eval?

07 декабря 2011 в 19:03:48

Попытка не удалась)).

Еще немного поразбирав пример - http://eval.hurlant.com/, кое-что понял. С помощью парсера вревращаем текст с программой в байт-код, и затем класс ByteLoader загружает этот код как ролик SWF в память.
например, я в главном классе Main написал
var evaluator:Evaluator = new Evaluator var bytes:ByteArray = evaluator.eval(src);

где src - текст с скриптом, допустим "trace(this);" И уже при тестировании ролика, в окне вывода будет сообщение - "object global". Вызывать можно только статичные методы, когда вызываем публичные методы, вылетает ошибка. И поэтому никак не могу создать пример.

07 декабря 2011 в 12:24:48

Сегодня попытаюсь сделать простой пример с диалогом.

06 декабря 2011 в 20:40:16

Да я и не пытаюсь создать язык программирования. Вот поразбирал немного пример, что дал Дракула - http://eval.hurlant.com/ и хоть научился его запускать. Может через некоторое время прикручу этот скрипт к движку

05 декабря 2011 в 10:56:15

Ты не пытайся создать полноценный язык программирования, всё равно не создашь. Подгони команды под возможные условия игры. Команд вида КОМАНДА УСЛОВИЕ ДЕЙСТВИЕ вполне будет достаточно.
типа так:
IF monstrkil>5 GOTO 200
Парсинг уже будет весьма сложным. Это вообще дело непростое.

05 декабря 2011 в 10:18:26

sw_alex, спасибо за совет)) Но как я сказал, нужно что-то большее. Я сначала так и хотел сделать, но потом дошло, что такой вариант не подходит. Скрипт будет работать еще и с переменными. Допустим, создал диалог, и при выборе одного из вариантов запускается скрипт. Например,

Привет! Я выполнил квест!! {sc:1010}

И скрипт проверяет, что-нибудь
if(global.monstrKill >= 5) dialog.goto(200);

Примерно так.

05 декабря 2011 в 10:03:53

В принципе, тебе должен подойти последний пример. Разбиваешь строку на массив слов, и этот массив обрабатываешь как тебе надо.
типа if (words[0]=='COMMAND1') { /* Сделать что надо */ }

05 декабря 2011 в 10:00:59

А, т.е. тебе надо строки парсить? Тогда посмотри сюда для примера:
http://www.vin-web.ru/actionscript3/41-stroki-vo-flash.html

05 декабря 2011 в 09:51:00

Это не для игры, а для движка. В самой игре не нужно будет вводить команды.

05 декабря 2011 в 09:24:16

А ты ТОЧНО уверен, что стОит создавать что-то подобное? Ведь писать словами, что следует сделать - не самый интересный способ игры. Особенно в наше время. Может, лучше сделать выбор команд из нескольких возможных вариантов, ну типа меню.
А если всё-так хочется именно так, то советую взять пример с Cisco - у них если в командной строке нажимаешь "?", появляется список возможных команд. Очень удобно.
Лучше делать более сложный в реализации, но более удобный интерфейс, чем рожать нечто заведомо нежизнеспособное.

04 декабря 2011 в 22:17:01

ПО ходу, я буду долго изучать эти исходники, еще в добавок они не пашут на CS3. Придется, наверное, самому создавать, что-то подобное.

04 декабря 2011 в 21:27:39

Дракула, спасибо!!!)) Скачал, буду изучать исходники

04 декабря 2011 в 21:22:03

edapskov, я понимаю, но самый простой способ это парсер строк вида "buy x", "sum 10 20"

Glega, ну тогда вот http://eval.hurlant.com/

04 декабря 2011 в 21:17:48

Да, наверное, нужно что-то вроде парсера-интерпретатора

04 декабря 2011 в 21:15:50

Спасибо за совет)) Интересная статья, но нужно, что-то другое.

04 декабря 2011 в 21:13:27

Почему-то мне кажется, что человек хотел создать что-то вроде парсера-интерпретатора (не знаю, как точнее это назвать)...

04 декабря 2011 в 20:59:50

Насколько сложный нужен скриптовый язык? Единственный совет, который у меня есть в запасе - это идея игровой консоли:
http://www.ant-karlov.ru/igrovaya-konsol.html

А дальше уже твое творчество - пишем команды (переход от одного диалога к другому, покупка чего-то и т.д.)... Придумываем дерево и узлы, например (ну умнее было конечно все типизировать по классам):

var gameTree:Object = { node1: { text: "Привет. Нажми любую клавишу", command: "goto node2" }, node2: { text: "Купить что-то? 1 - да, 2 - нет, 3 - выйти", command: { 1: "buy x, goto node1", 2: "goto node1", 3: "exit" } } };

04 декабря 2011 в 20:49:39

Тоже интересно...
Fundux.ru v.3.0 © 2006-2021 AleXNoD
Портал русских флеш игр и flash мультов