LINUX.ORG.RU

AnandamideAPI — визуальный скриптовый язык и платформа расширений для программ на Qt

 anandamide, , flowgraph,


1

3

AnandamideAPI — библиотека с открытым исходным кодом, позволяющая запускать визуальные скрипты, представляемые в форме блок-схем. Этот «язык программирования» был разработан для упрощения реализации игровой логики в сфере разработки игр, но в итоге нашел применение в качестве расширяемой системы инструментов для коммерческой САПР.

Проект состоит из двух частей:

Библиотека может быть использована как скриптовая система для создания несложной логики инструментов различных редакторов. Благодаря тому, что скрипты дают возможность подключения динамических библиотек и файлов форм Qt (*.ui), AnandamideAPI можно использовать для создания системы плагинов приложения.

Для дальнейшего развития проекту требуются пользователи!

>>> Репозиторий проекта на GitHub



Проверено: Shaman007 ()
Последнее исправление: Psych218 (всего исправлений: 11)
Ответ на: комментарий от anonymous

Нет, не единственный. Flowcode, NoFlo, PureData, Max/MSP и так далее.

anonymous
()
Ответ на: комментарий от VladimirP

Анандамид - это эндогенный каннабинол. Гормон.

federk
()
		/// \todo Пиздецк как need
		template <typename T>
		class CheckUnify <T *> {
			public:
				bool check(const Variable *v) {

:)

sasha1024
()
Ответ на: комментарий от sasha1024

Источники вдохновения были разные: Unreal Blueprint, к примеру. Я тогда занимался разработкой игр, и такое было модно.

EvilSpirit
() автор топика

Сразу вижу незначительный design flaw.

У Вас в блоке общий набор output'ов, которые могут читаться из любого другого блока, прицепленного к его event'ам*. Однако в общем случае это не так. Если взять, например, следующую функцию с колбеками:

void funcWithCallbacks(void (*callback1)(t1 p1, t2 p2), void (*callback2)(t1 p1, t3 p3, t4 p4));
-- то становится очевидно, что она разным колбекам передаёт разный набор данных (хотя часть совпадает). Так же и у Вас — output'ы стоило бы сгруппировать по event'ам.

Аналогично с action'ами (input'ами). Блок с несколькими action'ами можно сравнить с перегружаемой функцией:

void overloadedFunc(t1 p1, t2 p2, t3 p3);
void overloadedFunc(t2 p2, t4 p4, t5 p5);
Т.е. input'ы стоило бы сгруппировать по action'ам.

Было: https://raw.githubusercontent.com/sasha2048/test/master/untitled2.png
Стало: https://raw.githubusercontent.com/sasha2048/test/master/untitled3.png

* — кстати, я заметил, что output'ы блока у Вас могут читаться не только из блоков, привязанных к его event'ам, но, похоже, вообще из любого блока. По-моему, это ошибка (по-моему, output'ы блока должны мочь читать только блоки, следующие за ним в цепочке связей event→action).

sasha1024
()
Ответ на: комментарий от sasha1024

она разным колбекам передаёт разный набор данных (хотя часть совпадает). Так же и у Вас — output'ы стоило бы сгруппировать по event'ам.

Да, возможно это было бы полезно.

Аналогично с action'ами (input'ами). Блок с несколькими action'ами можно сравнить с перегружаемой функцией:

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

кстати, я заметил, что output'ы блока у Вас могут читаться не только из блоков, привязанных к его event'ам, но, похоже, вообще из любого блока. По-моему, это ошибка (по-моему, output'ы блока должны мочь читать только блоки, следующие за ним в цепочке связей event→action).

Здесь ничего странного нет. Рельзультат работы блока можно использовать несколько раз и в нескольких местах. Еще есть блоки, у которых не обязательно, чтобы через них проходил поток выполнения: они предоставляют данные при запросе output.

EvilSpirit
() автор топика
Ответ на: либ от anonymous

Эта библиотека еще ни кому не пригодилась. А вообще, библиотеки для миддлваре пишут как хотят, а если есть необходимость - делают си-интерфейс.

EvilSpirit
() автор топика
Ответ на: либ от anonymous

многопоточность

namespace Anandamide {
	const char *format(const char *fmt, ...) {
		static char	text[4096];
		va_list	ap;
		va_start(ap, fmt);
		vsnprintf(text, 4096, fmt, ap);
		va_end(ap);
		return text;
}

Про многопоточность не слышалось. Так то неплохой XML редактор получился.

anonymous
()
Ответ на: комментарий от EvilSpirit

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

Ну, согласитесь же, что в блоках For и ForWait инпуты from и count нужны только для экшна start (но не next/break).

Просто я неудачную аналогию привёл, это не перегружаемые функции, это скорее колбеки, передаваемые в колбеки:

void forWait(int from, int count, void (*loop)(int index, void (*next)(), void (*break)()), void (*end)(int index));

Off-topic: А зачем вообще в блоках For/ForWait экшн break? Нельзя ли просто не возвращать стрелку в цикл? Или это просто чтобы меньше путаницы в результирующей картинке получалось (мол, так как из end уже стрелка настроена куда надо, то чтоб юзер не вел вторую туда же)?

И, кстати, получается, что next и break имеет смысл вызывать только в потомках loop (но не в тех, кто ни разу не был в цикле). Получается тогда вообще так: https://raw.githubusercontent.com/sasha2048/test/master/untitled5.png

Еще есть блоки, у которых не обязательно, чтобы через них проходил поток выполнения: они предоставляют данные при запросе output.

Не уверен, что это правильно. Так очень сложно проконтроллировать, чтобы не было undefined value: как программно, так и аналитически. Кстати, предлагаю отделить потоки данных от потоков выполнения как-то так: https://raw.githubusercontent.com/sasha2048/test/master/untitled4.png

sasha1024
()
Ответ на: комментарий от sasha1024

потоки

предлагаю отделить потоки данных от потоков выполнения как-то так

Это невозможно, это же обычный XML однопоточный редактор.

anonymous
()
Ответ на: потоки от anonymous

Как-то я протупил — при чём тут XML? (Когда говорил «отделить потоки данных от потоков выполнения», я имел в виду показывать их разными типами стрелочек.)

sasha1024
()
Ответ на: комментарий от sasha1024

XML

Как-то я протупил — причём тут XML?

Сначала редактируется XML. Затем сохраняется XML. Загружается XML. Запускается XML.

Если стрелки не выровнены на один уровень то может наступить крэш программы или программа не работает как нужно. Рэйс по моему это называется.

anonymous
()
Ответ на: XML от anonymous

Честно говоря, не вижу никакого смысла в том, что Вы говорите. Какая разница, в каком формате гранится программа?

sasha1024
()
Ответ на: комментарий от sasha1024

формат

в каком формате

Ворд в .DOC Этот в .XML Мне нравятся сплайны симпатичные. Лет 10 ушло наверно на этот редактор. Пока никаких идей о применении.

anonymous
()
Ответ на: многопоточность от anonymous

Ну вот для этого и нужны пользователи, чтобы указывать на подобные ошибки и недочеты. Многопоточность была просто не нужна. Поэтому там нужно кое-что править, чтобы она поддерживалась. Там есть некоторое количество legacy от движка Nutmeg. Надо понимать, что это старый проект(первое упоминание)

EvilSpirit
() автор топика
Ответ на: комментарий от sasha1024

Гениально

Нравится красивый и граммотный дизайн. Можете работать вместе надо созданием качественного языка для дизайнеров игр.

anonymous
()
Ответ на: комментарий от sasha1024

Да, так интереснее выглядит, можно переделать визуализацию. Создай ишью с картинками на гитхабе, чтобы не потерялось.

EvilSpirit
() автор топика
Ответ на: комментарий от EvilSpirit

Blue Print

Этот XML редактор ничего общего с Unreal BluePrint не имеет. Для дизайнеров игр не подходит. Может лет 30 назад мог кого заинтересовать. Сейчас этот XML редактор похож на лабораторную работу студента за полгода. На что ушло 13 лет неизвестно.

anonymous
()
Ответ на: Blue Print от anonymous

Твой троллинг похож на троллинг пятиклассника, на что ушли остальные годы твоей жизни, неизвестно.

EvilSpirit
() автор топика
Ответ на: комментарий от EvilSpirit

XML Editor

Так всё таки продолжаешь думать что этот XML редактор имеет что то общее или похожее на Unreal Blue Print и удобнее дизайнерам игр чем первоклассный качественный реально работающий популярный BluePrint.

anonymous
()
30 августа 2016 г.
Ответ на: В мусорку от anonymous

Если твой мозг в твоем возрасте работает как в 13 лет, то уже и не заработает нормально.

EvilSpirit
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.