XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > StarCraft (только чтение)> StarCraft I
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
MacroTriggers - язык написания триггеров
Недвано я начал свой проект по созданию языка MacroTriggers (MT) для задания последовательности триггеров. Язык специально разрабатывается для более удобного копирования однотипных триггеров. Если вы пишете триггеры на нём, то вам не понадобится копировать в ручную сотни триггеров, необходимо лишь указать как они должны быть раскопированы. Тех, кто заинтересовался разработкой, отсылаю на оригинальный форум проекта на Warbox и тему на SEN. Так же можете задавать вопросы прямо здесь.
Старый 19.05.2008, 10:10
kvaDrug

offline
Опыт: 1,601
Активность:
Круто! Класс. А зачем это надо? В СК1 триггеры очень примитивные. А это точно для СК1?
Старый 03.06.2008, 01:12
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Точно, точно для СК1 :) Триггеры хоть и примитивные, но когда их мно-о-ого, писать и сопровождать становится очень неудобно! Некоторые триггерные системы требуют многократного копирования триггера с минимальными изменениями. Копировать вручную (пусть даже и с использованием продвинутого текстового редактора) каждый раз накладно, к тому же, если надо что-либо изменить, менять обычно приходится во всех триггерах, которые копировались.
Старый 03.06.2008, 12:27
sagittarius

offline
Опыт: 9,981
Активность:
А я то думал продвинутое тригерное управление Макро АИ. :(
А то что ты написал сделать совсем не проблема.
нужно иметь;
  • интерпретатор tgr
  • IDE оболочку
  • компилятор (который будет разбирать участки кода и собирать это все)
  • база уже существующих тригеров (спецэффектов), аля семплы в виде визуальных компонентов.
  • редактор семплов, онлайн поддержка и распространение семплов.
  • база юнитов игры, автоматическое и ДИНАМИЧЕСКОЕ вычисление ненужных счетчиков и ИХ использование для внутренних просчетов для некоторых семплов.
  • шаблоны для типов карт - уже наборы связанных и настроенных семплов.
  • Мастера динамического изменения. (ну к примеру в карте система опыта и на уровень нужно было 100/150/250/.... (и так 100 уровней) опыта, но оказалось по балансу нужно сделать 120/170/220/.... (и так 100 уровней) )
наверно все сказал.
Если это реализовать, то триггерная часть в СК станет легкой прогулкой и останется только править Террайн, статы юнитам, наводить красоты.
п.с. Жаль я свою разработку забросил уже как год.
Старый 04.06.2008, 20:43
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Цитата:
п.с. Жаль я свою разработку забросил уже как год.

Да, жаль :( Я у тебя, кажется, спрашивал тогда, но так и не смог понять, что ты разрабатывал. Тогда ты вроде говорил что-то об объектном языке...

Цитата:
А я то думал продвинутое тригерное управление Макро АИ. :(

Отнюдь, на АИ я не специализируюсь. Это скорее уж по твоей части. :)

Что-то я тебя не понимаю, о чём ты? Для чего нужно иметь перечисленные вещи? Интерпретатор tgr (я так понимаю, ты имеешь в виду trg файлы (секцию)?) мне совсем не нужен, ведь моя программа преобразует один текст в другой. Да и другие вещи мне не понятны... Иметь стандартные шаблоны триггеров для разных ситуаций, конечно, хорошо, но это уже дело десятое, потому что всё равно шаблонов на все случаи жизни не напасёшься. Обычно люди предпочитают писать свои триггеры, чем пользоваться чужими, поэтому лучше предоставить инструмент для удобного написания, вместо шаблонов...

Я, кажется, начинаю понимать... Да, иметь такие вещи было бы, безусловно, не плохо! Но их нет. Осталось всего навсего всё это написать :) Говорю сразу, я - пас. У меня нету столько времени, сил и желания что бы заниматься грандиозными проектами вроде этого, однако я написал, что мог написать. Надеюсь, это может быть кому-нибудь полезно. И вообще, кому какое дело, сложно это написать или не сложно? Сложность это понятие субъективное, - кому-то сложно, а кому-то просто, но самое главное, что бы полезно было!
Старый 05.06.2008, 00:50
sagittarius

offline
Опыт: 9,981
Активность:
Видел к примеру Визуал Студию ?
Она работает к примеру с языком Си , но машина понимает только ассемблер.
Вот что-то такое сделать и для старки. Старик понимает только тригеры, но писать можно будет на Си.
Визуальные компоненты - это уже надстройка над Си.
А шаблоны надстройка над визуальными компонентами.
Если бы мне кто-то скинул доку по форматам кодирования карт + тригеров в СК. Я мог бы дописать 1 и 2 уровень надстройки. При условии наличия времени.
Еще одно важное. Нужны доки как и где хранятся в карте локации.
После написания Си--Триг компилятора, нужна IDE оболочка. А дальше каждій пишет свою библиотеку компонентов и ВСЕ пашет.
Старый 06.06.2008, 01:53
Worm
Просто Червь
offline
Опыт: 3,221
Активность:
Да, конечно, видел Visual Studio, всётаки не в каменном веке живём :)
Понятно. Всё правильно говоришь. Однако, написание IDE оболочек с удобным пользовательским интерфейсом дело непростое (лично для меня по крайней мере, так как у меня нет особого навыка программирования под Windows). Для меня легче написать компилятор (возможно звучит парадоксально), чем удобный пользовательский интерфейс. Вообще, обычно, написание хорошоего (удобного, функционального, красивого и т.д.) пользовательского интерфейса задача непростая.
Написав компилятор, я не стал писать свой редактор для языка, а пошёл по другому пути. Перед тем как делать что-то новое, всегда надо посмотреть нельзя-ли использовать что-то уже сделанное другими. В моём случае, в качестве "IDE" для моего языка подходит редактор Notepad, с его многочисленными возможностями, начиная с подсветки синтаксиса и сворачивания блоков текста и заканчивая удобными утилитами по работе с самим текстом. Там даже есть возможности по автозавершению функций и слов. Да, конечно, специализированная IDE может быть заточена лучше под конкретный язык, но пока (на этапе разработки языка) вполне хватает NP.
Да, я не против, если кто-то возмётся за написание такой IDE для MacroTriggers! Я даже был бы очень рад! Sagittarius, если бы ты взялся сделать что-нибудь подобное, это вполне могло бы стать нашим общим проектом. Более того, есть возможность написать такую IDE как самостоятельный плагин к SCMD2. Так что, если есть желание...
Хочу сказать пару слов по поводу Си-подобного языка для программирования триггеров. Дело в том, что триггеры - вещь очень специфическая. Sagittaruius, как ты представляешь себе программирование триггеров на языке общего назначения? Хотя бы сам принцип такого программирования, не говоря уже об эффективности его реализации (ведь ты знаешь, что в картах очень ограниченные ресурсы, както: локации, переключатели, юниты, строки и так далее). Дело в том, что сама работа триггеров очень специфична и коренным образом отличается от работы компьютера - триггеры подчиняются событийному механизму событие-реакция (условия-действия). Так что здесь нужен особый язык программирования, не похожий на языки общего назначения такие как Си, Java, Паскаль. Пока я не вижу удобной абстракции над самими триггерами, которую можно было бы положить в основу такого языка.
Что я вижу, так это то, что многие триггерные системы требуют копирования триггеров с соответствующими изменениями по определённым правилам. Так же я вижу, что многие объекты (счётчики убйств, локации, переключатели) часто используются как различные сущности в разных триггерныз подсистемах. Отсюда, и просто из соображений иметь полное описание всех объектов, тем или иным образом использующихся в триггерах, пришло соображение об их именовании - введении переменных обозначающих эти объекты. Всегда удобнее поменять, скажем, название юнита в одном месте чем менять его в кажом месте по всем триггерам. Я разрабатывал язык Макро Триггеров с целью учесть эти вещи. Таким образом, если проводить аналогию с обычным программированием, то MacroTriggers относится к обычным триггерам так же как Макро Ассемблер отностися к обычному Ассемблеру или, даже, Машинному Языку. То есть он предоставляет удобные возможности по организации триггеров (или, в аналогии, машинных команд для виртуальной машины SC).
Что касается устройства карт. Я думаю ты знаешь, что карты scm/scx - это mpq архивы содержащие звуки и chk файл, собственно, хранящий всю информацию о карте. Формат chk файла давно известен, однако нет никакой "официальной" документации по нему, так как его разгадывали такие же фаны старкрафта как и мы с тобой. Более того, сейчас уже почти весь старкрафт (как исполняемая программа) разобран по кусочкам, на SENе есть люди которые знают наизусть всю память старкрафта :) У них в туториалах (а так же на wiki оставшейся от maplantis) можно найти всю инфу по формату chk.
Только я не понимаю зачем эта инфа нужна IDE оболочке. Скорее такой инфой должен пользоваться компилятор, что бы записать скомпилированные триггеры в карту. И опять же, здесь я, для начала, пошёл по более простому пути. Я не стал разбираться с форматом chk и mpq архивами, а просто заставил компилятор генерировать текст на языке триггеров SCMD, который потом можно вставить в карту через соответствующий редактор. Компилирование триггеров в trg файлы, а затем и в саму карту - следующая задача. Однако, сначала я должен закончить с синтаксисом и функциональностью самого языка, там остались некоторые моменты.
PS Хотя, да, ты прав, кое-какой инфой про локации и, возможно, некоторые другие ресурсы IDE болочка должна обладать.

Отредактировано Worm, 06.06.2008 в 14:51.
Старый 06.06.2008, 14:42
kvaDrug

offline
Опыт: 1,601
Активность:
Перепишите нафиг код старкрафа
Старый 11.06.2008, 02:25
sagittarius

offline
Опыт: 9,981
Активность:
Не выйдет по многим причинам.
  • Копирайты, нельзя будет выпустить это чудо.
  • у меня есть не все исходники.
  • много гемора.
Старый 12.06.2008, 23:11

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:56.