Game Maker - создание игр | HellRoom Games
Март 22, 2025, 18:35:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1] 2   Вниз
  Печать  
Автор Тема: О DLL, о gex и других непонятных словах  (Прочитано 51488 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Hummer
scio me nihil scire
GM Pro user
*

Репутация: 335
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Game Maker!За помощь новичкам!
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573


« : Февраль 05, 2011, 14:02:41 »

Приветствую читателей!
Автор статьи Hummer
Game Maker не ограничивается только встроенными функциями. Можно подключить достаточно много других интересных и полезных функций. Их можно подключить с помощью Lib'ов, DLL'ок и gex'ов.
Статья о либах уже есть. Поэтому разумно написать о Dll и gex.
DLL (Dynamic-Link Library) является одним из расширений GM. Их великое множество, но все они подключаются к ГМ одинаково.
1) Нужно чтобы Dll лежала в папке с игрой, либо находилась по известному вам пути.
Например моя DLL находится по адресу "resourses\dlls" и называется add.dll. Она будет просто складывать введёные числа Учтём это на будущее
2) В каждой DLL находятся своеобразные хранилища функций. Поэтому нам нужно уметь обращаться к ним.
3) Подключение библиотеки осуществляется при помощи функции
Код:
external_define(dll,name,calltype,restype,argnumb,arg1type,arg2type, ...)
Где dll - имя библиотеки (или адресс к ней)
name - имя "хранилища"
calltype - тип вызова
restype - тип выхода (ty_real - числовое значение, ty_string - строковое)
argnumb - количество аргументов в вызове функции(!), и затем они перечисляются.
В нашем примере будет выглядеть так (создадим скрипт add_init)
Код:
adding=external_define('resourses\dlls\add.dll', "add", dll_stdcall, ty_real, 2, ty_real, ty_real)
То есть мы загрузили нашу библиотеку, результат будет числом (сумма чисел есть число), 2 аргумента в вызове функции и каждый тоже будет числом. Эта функция возвращает индекс "хранилища", поэтому занесём его в переменную (adding).
Что дальше? А дальше мы должны использовать вызванное "хранилище".
Чтобы исполнить то, что должно случиться, заюзаем этот код.
Код:
external_call(id,arg1,arg2,...)
id - индекс, вызванного "хранилища", и аргументы через запятую.
Напишем новый скрипт do_add (выполнить сложение)
Код:
return external_call(adding, argument0, argument1)
Вот и всё по части dll. Теперь создадим объект. В событии Create напишем
Код:
add_init()
Значит мы загрузили "хранилище".
В событии Press <Space> пишем
Код:
num1=get_integer('Ваше первое число', 0)
num2=get_integer('Ваше второе число', 0)
itog=do_add(num1, num2)
show_message(string(num1)+' + '+string(num2)+' = '+string(itog))//выводим результат
Вот и всё. Не страшно? Пример прилагается.
Итог 1: Скачивая dll для GM проследите, чтоб обязательно был пример со скриптами по его использованию! Иначе вы никак не сможете его заюзать
Итог 2: То dll, которое мы рассмотрели является примитивным. Совет используйте только нужные dll'ки, без которых действительно не обойтись, поскольку выемка и исполнение функций может сильно отразиться на fps игры, и производительность спадёт.
Итог-совет 3: в событии завершения игры воспользуйтесь функцией
Код:
external_free(dll)//выгружает dll с указаным именем

Переходим к gex'ам. С ними намного проще. Гексы (джексы, gex) это просто пакеты новых функций. Достаточно загрузить их.
Вот алгоритм действий
1. Если вы ещё не загружали скачанную gex, то
а) нажмите на зелёный плюсик на панели инструментов.
б) Нажмите кнопку
в) найдите и выберите ваш файл (.gex)
г) Выберите его из нового списка доступных пакетов и нажмите синюю стрелку (подключение) и ОК

2 Если же вы этот пакет загружали, то выполните только пункт г)
Всё! Также можно посмотреть список доступных функций и переменный (из пакета)
Скрипты->Показать расширенные функции/переменные. Теперь это обычный код)
Также проконтролируйте, чтобы был пример по функциям, или хотя бы справка.

Поздравляю, ваш лексикон пополнен двумя новыми словами! Теперь вам их бояться нечего! Удачи в игрострое!

Полезно почитать
http://forum.hellroom.ru/index.php/topic,3173.0.html - Статья о либ-библиотеках. (Автор VeGaS)
http://forum.hellroom.ru/index.php/board,26.0.html - подраздел с dll библиотеками
http://forum.hellroom.ru/index.php/board,23.0.html - подраздел расширениями (.gex)

* Пример.rar (16.45 Кб - загружено 790 раз.)
« Последнее редактирование: Май 13, 2011, 16:01:16 от Hummer » Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL
VeGaS
«Старожил форума»
******

Репутация: 270
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]3 место за игру: AntiZombie (Конкурс Золотые Руки)1 место: Звание лучшего дизайнера (Февраль 2011)За добавление полезных программ!
API: GameMaker Studio Standard
Сообщений: 2018



« Ответ #1 : Февраль 05, 2011, 14:06:10 »

о, моя статья о lib
Записан
Hummer
scio me nihil scire
GM Pro user
*

Репутация: 335
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Game Maker!За помощь новичкам!
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573


« Ответ #2 : Февраль 05, 2011, 14:07:12 »

о, моя статья о lib
Дак да, ты тоже внёс вклад)
Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL
VeGaS
«Старожил форума»
******

Репутация: 270
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]3 место за игру: AntiZombie (Конкурс Золотые Руки)1 место: Звание лучшего дизайнера (Февраль 2011)За добавление полезных программ!
API: GameMaker Studio Standard
Сообщений: 2018



« Ответ #3 : Февраль 05, 2011, 14:09:43 »

о, моя статья о lib
Дак да, ты тоже внёс вклад)

Тебе + за статью.
Записан
Hummer
scio me nihil scire
GM Pro user
*

Репутация: 335
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Game Maker!За помощь новичкам!
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573


« Ответ #4 : Февраль 05, 2011, 14:10:24 »

Спс, думаю статья будет полезна уже не новичкам, но ещё не профи)

Добавлено: Февраль 05, 2011, 14:10:54
Кстати dll в примере я сам написал на С++  ;D
Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL
VeGaS
«Старожил форума»
******

Репутация: 270
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]3 место за игру: AntiZombie (Конкурс Золотые Руки)1 место: Звание лучшего дизайнера (Февраль 2011)За добавление полезных программ!
API: GameMaker Studio Standard
Сообщений: 2018



« Ответ #5 : Февраль 05, 2011, 14:13:32 »

круто
Записан
Drane
GM Pro user
*

Репутация: 39
Offline Offline

Пол: Мужской
Награды:
За постоянность!
API: GameMaker Studio 2
Сообщений: 177


WWW
« Ответ #6 : Февраль 05, 2011, 14:30:32 »

Спс, думаю статья будет полезна уже не новичкам, но ещё не профи)

Добавлено: Февраль 05, 2011, 14:10:54
Кстати dll в примере я сам написал на С++  ;D

Я например не силен в гм но всё кроме кодов узнал сразу же после установки. (а о дллках еще раньше)
Записан
Alcatraz
Flight Dream Studio
«Старожил форума»
******

Репутация: 392
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Unity 3D3 место в конкурсе: Адекватные игры #2 [Стимпанк]2 место за игру: Dead Night (Конкурс Золотые Руки)...
API: Unity 3D
Деятельность: C#, C++, UNITY3D
Сообщений: 3392


http://vk.com/alcatraz_rus


WWW
« Ответ #7 : Февраль 05, 2011, 16:47:56 »

круто, молодец, новичкам очень понадобиться, (плюс постаил давно!) Уважуха ;)
Записан

Alessandro
Посетитель
**

Репутация: 0
Offline Offline

API: 8.0 Pro
Сообщений: 28


« Ответ #8 : Февраль 06, 2011, 05:15:18 »

класс.. ;)
Записан
bog
Новичок
*

Репутация: 0
Offline Offline

API: 8.0 Pro
Сообщений: 3


« Ответ #9 : Апрель 01, 2011, 20:29:14 »

Что если файла(.gex) нет в списке? Куда их "кидать"?
Записан
Hummer
scio me nihil scire
GM Pro user
*

Репутация: 335
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Game Maker!За помощь новичкам!
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573


« Ответ #10 : Апрель 01, 2011, 20:32:20 »

Читай пункт 1 а) б) в) г)
Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL
VeGaS
«Старожил форума»
******

Репутация: 270
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]3 место за игру: AntiZombie (Конкурс Золотые Руки)1 место: Звание лучшего дизайнера (Февраль 2011)За добавление полезных программ!
API: GameMaker Studio Standard
Сообщений: 2018



« Ответ #11 : Май 13, 2011, 15:42:11 »

А почему статься в разделе DLLs? Тут же не только про DLL. Мне кажется можно просто в Статьи/уроки.
Записан
depict
GM Pro user
*

Репутация: 116
Offline Offline

Пол: Мужской
Награды:
За постоянность! [10 дней на форуме]
API: GameMaker 8.1 Standard
Сообщений: 450


Наведу на мысль. За последствия не отвечаю :)


« Ответ #12 : Июнь 27, 2011, 15:36:24 »

кто нибудь знает как можно это сделать на delphi

« Последнее редактирование: Июль 08, 2011, 14:27:55 от depict » Записан

ivan akulichev
Пользователь
***

Репутация: 2
Offline Offline

Пол: Мужской
API: GameMaker HTML5
Деятельность: Delphi, создание 2d игр, Action Script 2.0. GML. JRPG...GML (4)
Сообщений: 99


Programming - THE WAY I AM


WWW
« Ответ #13 : Март 30, 2012, 20:20:32 »

Если ты знаешь c++ то можно...где-то в настройках дельфи...Зайди туда, найди настройки языка програмирования...и выюери C++
Записан

MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #14 : Март 30, 2012, 20:25:20 »

Цитировать
Июнь 27, 2011, 15:36:24 Автор: depict

 
Записан

Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.116 секунд. Запросов: 35.