Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 23.02.2012, 18:22   #1
MidGard
AnyKey`щик
 
Регистрация: 27.08.2009
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

Не клянчу рыбу, прошу удочку! Подскажите куда копать. Хочу попробовать реализовать возможность дописывания плагинов к основной проге. Ну что-то похожее было в Морровинде, скачиваешь новый файл со своим медиа, к примеру остров, он появляется в игре. Или, грубо, тачки реализованы в виде отдельных файлов, не просто набор поликов и текстур, а полноценный механизм, то есть кусок програмного кода. Закинул файл в нужную папку - новая тачка появилась в игре. Или расширение функций перса, ну к примеру летающий ранец - как отдельный файл, найти его в игре можно только если этот файл лежит в определённой папке, но без него перс в принципе не летает.
Возлагал надежды на Include filename$ но он даже по условию не работает. Как я это ваще вижу: некая функция сканирует определённую директорию на наличие там определённых файлов. Появился новый файл - кусок кода, и функция встраивает этот кусок в тело программы, видимо в основной цикл или... не знаю вобщем. И всё, и вот в игре появились птицы, или по небу кроме солнца побежала ещё и луна со всей реальной периодичностью. Или периодически стали происходить землетрясения, или помимо гоночных тачек появился эксковатор. Такая вот загогулина... Это вообще возможно силами одного Блица сделать? Доп. условие в том что ничего кроме бейсика я не знаю, ни в С++, ни в паскаль лезть не хотелось бы.
Заранее всем благодарен.
__________________
Изобретаю велосипеды, наступаю на старые грабли, хожу нехоженными тропами
(Offline)
 
Ответить с цитированием
Старый 23.02.2012, 21:27   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

Плагины реализуются через загрузки внешних библиотек. Которые должны реализовывать определенный интерфейс, благодаря которому возможны вызовы заранее не известного кода.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (22.12.2012)
Старый 23.02.2012, 22:05   #3
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

вроде есть луа под блицем - гугли
(Offline)
 
Ответить с цитированием
Старый 23.02.2012, 23:16   #4
MidGard
AnyKey`щик
 
Регистрация: 27.08.2009
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

Э-м-м-м... Ну а вот такой ход, что скажете: основная прога сканирует директорию, находит новый файл .exe, дале ExecFile( file$ ) и постоянно слушает определённый порт. Вторая прога по тому самому порту по протоколу ТСР дует данные, координаты вертексов, текстуры, анимацию и т.д. При этом слушает порт-ответку основной проги, при чём внешне это выглядит как работа "демона", то есть никак, прога себя не проявляет вообще, просто вычисляет и дует в порт данные. Эдакое подобие клиент-серверной связки наоборот. А первая прога работает с 3D, визуализирует, управляет вычислениями второй, и в конце даёт команду на самозакрытие. Сойдёт за плагин?
__________________
Изобретаю велосипеды, наступаю на старые грабли, хожу нехоженными тропами
(Offline)
 
Ответить с цитированием
Старый 23.02.2012, 23:19   #5
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

Это не плагин. Плагин это дополнительная библиотека, подключаемая по заранее согласованному интерфейсу. Программа работает с ней как со своими собственными функциями.
__________________
(Offline)
 
Ответить с цитированием
Старый 23.02.2012, 23:54   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

Небольшое описание что в моём представлении может быть плагином:
Предположим есть приложение, редактор уровней. Само приложение имеет открытый API - набор функций, которые в плагинах можно использовать. Например через эти функции можно получить доступ к определённому объекту в мире, его параметрам, и манипулировать им (ну это самые простые примеры). Также API имеет интерфейс по работе с GUI редактора (создавать окошки, кнопочки и т.п.).
Далее этот API доступен в виде библиотеки.
Каждый плагин имеет две функции Load и Unload.
При включении приложения (или другом событии), для каждого плагина вызывается Load функция, и при закрытии Unload соответственно.

Далее пример плагина - чтобы имел кнопку с удалением всех объектов определённого типа. В функции Load мы создаём панельку, и пихаем её куданить в редакторе, это проделываем через GUI API предоставленным редактором. Далее пишем уже логику для своего созданного GUI, в нашем случае одна кнопка, при нажатии на которую, используя API, мы найдём все объекты например типа "персонаж", и удалим их снова используя API.

Получается что подключая этот плагин, он создаст панельку с кнопкой, которая будет удалять определённого типа объекты со сцены мира в редакторе.

Пример простейший. Но думаю понятен достаточно.

Говоря о Blitz3D, не заморачивайся. Я рекомендую даже и не пытаться начинать что-то делать такого рода на блице - ты потратишь в пустую кучу времени, а результат если и будет, то весьма скудный.
Такие вещи проще делать на OOP языках, напримерв .Net такое сделать вообще сказка, и намного сложнее, хотя бы основываясь возможности использования объектов между ассемблями (библиотека содержит не тупо список функций, а полноценные классы и т.п.), также есть рефлекция - это для плагинов ваще сказка.

В общем, на Blitz3D, не советую заморачиваться о таких вещах, он убог.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Dzirt (24.02.2012), HolyDel (24.02.2012), Mr_F_ (24.02.2012)
Старый 12.06.2012, 14:07   #7
Черный крыс
 
Сообщений: n/a
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

На блитце сделать поддержку плагинов - очень даже можно. Смотри в сторону функции CallDLL.

Ну а так, я считаю более универсальным способом плагиностроя - это подгрузка скриптов. Например нечто похожее есть в 3DMax под названием MaxScript, но Lua ИМХО - лучше, в нем есть оператор require который позволяет динамически перегрузитиь скрипт, все изменения в скрипте немедленно вступают в силу.

Последний раз редактировалось Черный крыс, 12.06.2012 в 19:37.
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ant0N (13.06.2012)
Старый 28.11.2012, 04:49   #8
sd.vegastudio
Оператор ЭВМ
 
Регистрация: 09.05.2009
Адрес: Киев, Украина
Сообщений: 45
Написано 6 полезных сообщений
(для 25 пользователей)
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

В Blitz3D не имеет смысла открытая архитектура - это имхо - извращение, и ничего не даст - в древности сам этим заморачивался но понял пототом, что у каждого языка свое назначение, время и возможности.
(Offline)
 
Ответить с цитированием
Старый 16.12.2012, 12:58   #9
Черный крыс
 
Сообщений: n/a
Ответ: Как реализовать открытую архитектуру? (плагины, расширения и т.п.)

При включении приложения (или другом событии), для каждого плагина вызывается Load функция, и при закрытии Unload соответственно.
AttachProcess() \ DetachProcess()
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com