ссылка на источник:scirraconstruct.ru Урок по созданию конфигурации параметров игры от Enginer
Часто в играх делают отдельный exe (отдельное приложение) для настройки параметров игры. Это делается потому что не всегда удобно запускать игру, после просмотра всех заставок лезть в опции и настраевать параметры. Некоторые игры, без предварительной настройки могут вообще не заработать, поэтому я решил создать в Scirra Construct отдельный модуль (приложение) для настройки игры.
Кратинький урок + исходник с небольшими комментариями!
1. Для начала определите сколько и какие именно настроки у вас будут. Затем для каждой настройки создайте глобальное значение. Я например создал всего 4 глобальных значения:
- Wide (для выбора режима монитора, 16:9 или 4:3).
- Resolution (для выбора на полный экрна или в окне).
- Sound (для включения и отключения звука).
- Music (для включения и отключения музыки). 2. Теперь создайте надписи с помощью обЪекта Text и события при которых когда кликаем на текст (условие On object clicked) то в этот момент задаем глобальное значение (set value). Например, для значения Wide можно не только написать текст 16:9 или 4:3, но и графически нарисовать 2 монитора, при клике на которые мы меняем глобальное знчение с 1 на 2 и наоборот.
Пример условий для изменения глобального значения wide при клике по тексту: 3. Теперь самое главное. Создайте текст (или кнопку) с надписью Сохранить. Тут уже в силу вступает обЪект INI. Сейчас в кратце опишу как с ним работать, и так. Для того чтобы прописать путь к INI файлу используйте действие Set INI File. Не забывайте, что в данном случае я создал специальную папку Data куда будет записыватся INI с именем settings.dll. Сам файл создавать не надо, когда вы пропшите путь и с помощью событий что-то туда запишите, то файл сам появится на вашем компьютере. Главное правильно прописать путь, для этого используйте выражение apppath+. Чтобы сохранить информацию в INI файл (в данном случае надо сохранить все 4 глобальных значения), в действии выберете команду Write value. Откроется окно, в поле Group и Item пишите туда что угодно, это не важно, а вот в поле Value уже надо писать одно из 4-х глобальных значений которые и будут потом считыватся при запуске игры.
обзор некоторых системных выражений (troyQ & KaMiKaZa)
Итак, небольшой разбор некоторых system expressions и того, что можно сделать с ними. Сразу говорю, это не полноценный обзор, просто решил поделится некоторыми интересными фишками. Начнем, пожалуй, с Lerp КОД: Lerp(a, b, x)
Линейная интерполяция, высчитывает a + x(b - a), или, если проще, значение, равное x% от диапазона от а до b. Еще проще: lerp(0, 100, 0.5) даст результат 50, lerp(25, 100, 0.3) даст 47.5 В чем польза: lerp отлично подходит для плавных изменений значений. Например, плавного следования одного спрайта за другим с эффектом декселерации: КОД: +always: lerp(Sprite.x, Sprite2.x, 1-0.1^timedelta) lerp(Sprite.y, Sprite2.y 1-0.1^timedelta)
Обратите внимание, что x мы прописываем как 1-0.x^timedelta. Это для того, чтобы исключить влияние FPS. 1-0.1^timedelta даст большую скорость передвижения, 1-0.5^timedelta более медленную.
Далее разберем Clamp КОД: Clamp(Значение, нижний предел, верхний предел)
Clamp служит для ограничения установки значения. Значение никогда не будет ниже нижнего предела и выше верхнего. Например: КОД: -> System: Set global variable 'value' to clamp(global('value')-global('value2'), 0, 100)
В результате переменная value всегда будет не ниже 0 и не выше 100, чему бы не равна была value2 Примеры. Ограниченное движение (невидимые стенки):
Ограничение изменения угла:
Abs КОД: abs(значение)
Возвращает абсолютное значение, иными словами - отрицательное значение станет положительным. Пример использования: можно использовать для определения абсолютной скорости объектов, использующих основанное на векторах поведение, когда движение влево или вверх задается отрицательным числом (Platform movement, 8 dir movement и т.д.). КОД: abs(Sprite[Platform].VectorX) - даст абсолютную скорость спрайта, независимо от того, вправо или влево он движется.
Sign КОД: sign(значение)
Возвращает 1 если значение больше нуля, возвращает 0 если значение равно 0 и возвращает -1 если значение ниже нуля. Допустим, у нас есть переменная "mov", которая должна быть равна 1, если объект движется по горизонтали, и равна 0 если стоит на месте. Делаем это одним просты действием: КОД: -> System: Set global variable 'mov' to abs(sign(Sprite[Platform].VectorX))
И, наконец, я расскажу о том, как воссоздать поведение Sine, но с большими возможностями с помощью sin и timer timer запускается вместе с приложением и отсчитывает время работы приложения. sin, помимо обычных геометрических расчетов с углами, позволяет создать синусоиду при взаимодействии с постоянно меняющимся значением. Итак, КОД: sin(timer)*x, или sin(timer/a)*x, или sin(timer*a)*x
Отличаются только скоростью. a - умножая или деля таймер на это значение мы меняем скорость синусоиды. x - Диапазон, аналог в поведении Sine - range
int (x).Округляет значение x. Пример: int (0,7) - на выходе получим значение 1. round (x). Отсекает дробную часть числа х. Пример:round (5,9) - на выходе получим значение 5. distance (x1, y1, x2, y2). Вычисляет расстояние между двумя координатами. Измеряется в пикселях. sqrt (x). Вычисляет значение квадратного корня из числаx.
Сообщение отредактировал FEARDEATH - Вторник, 29.11.2011, 13:35
Друзья, может я не в той теме пишу, но думаю стоит добавлять ссылку на источник, на сам сайт scirraconstruct.ru? Т.к. если вы читали, там внизу страницы написано, белым по зеленому
"Копирование материалов с сайта разрешается только при условии указания прямой и открытой для поисковых систем гиперссылки на ScirraConstruct.ru"
Думаю во избежании каких-то претензий, не трудно будет ссылочку давать. Может я излишне паникую конечно, не обессутьте.
Сообщение отредактировал Rafl - Среда, 30.11.2011, 10:59
Друзья, может я не в той теме пишу, но думаю стоит добавлять ссылку на источник, на сам сайт scirraconstruct.ru? Т.к. если вы читали, там внизу страницы написано, белым по зеленому
"Копирование материалов с сайта разрешается только при условии указания прямой и открытой для поисковых систем гиперссылки на ScirraConstruct.ru"
Думаю во избежании каких-то претензий, не трудно будет ссылочку давать. Может я излишне паникую конечно, не обессутьте. fear
Это относится к их собственным статьям, а к постам и уроками пользователей форума никакого отношения это не имеет. Ибо их писали пользователи...