Архив рубрики: GameMaker
GameMaker: «шифр» замен
Функциональная часть состоит из единственной функцией string_subst(string, from, to), принцип действия которой описан в первом параграфе. Если длины обоих "алфавитов" равны, и они не содержат повторяющихся символов, вывод функции может быть "расшифрован" повторным ее запуском с зашифрованным текстом в качестве строки, и алфавитами "наоборот" (первый вместо второго и второй вместо первого). Пример:
var asrc, adst, source, encr, decr; asrc = "0123456789"; // входной "алфавит" adst = "3456789012"; // выходной "алфавит" source = "51;"; // исходный текст encr = string_subst(source, asrc, adst); // "зашифрованный" текст show_message(encr); // Покажет "84;" decr = string_subst(encr, adst, asrc); // "расшифрованный" текст show_message(decr); // Покажет "51;"Приведенный пример демонстрирует как шифрование, так и расшифровку. А так же включает в себя миловидный интерфейс.
GameMaker: Случайно прокручиваемые символы
Этот пример демонстрирует определенную вещь которую я хотел сделать на протяжении нескольких дней - скрипт для преобразования строк в набор меняющихся случайных символов.
Идея этого эффекта довольно проста - каждый изменяемый символ заменяется другим случайным (рисуемым) символом с такой же шириной (чтобы строка на выходе не меняла своей ширины, оставляя даже некоторый шанс угадать, что было написано изначально).
Для оптимизации процесса рисования кодом генерируется коллекция (ds_map) с информацией о ширине символов для каждого шрифта при первом использовании. Это делает преобразования довольно быстрым даже для GameMaker: Studio с его ограничением в 65000 символов на шрифт.
Программный интерфейс состоит всего из 3 функций, одна из которых - функция инициализации (должна быть вызвана до использования других), одна заполняет таблицу для заданного шрифта (на случай, если вы хотите сделать это вручную при запуске игры) и собственно функция text_rand(string, font), "преобразовывающая" предоставленную строку для заданного шрифта.
Этот пример может быть отдельно полезным для разного рода экспериментальных игр, а так же является довольно необычным способом цензуры текста.
GameMaker: Вид от 3-его лица в 3D
Описания и обьяснения ниже, Читать далее
GameMaker: Поле ввода
Есть множества случаев, в которых вам может понадобится дать пользователю возможность вводить текст привычным способом, принимая во внимания системные настройки и предоставляя возможность мелких изменений (таких как передвижение курсора по тексту). Такие случаи включают в себя чаты, консольные интерфейсы, поля ввода текста, и прочее. Этот пример покрывает большинство типичных потребностей для таких вещей довольно коротким (менее 70 строк) и понятным кодом. Он включает в себя следующие особенности:
- Сохраняет текущий текст при потере фокуса окна. Если вам доводилось работать с вводом текста в GameMaker, возможно вы уже заметили это неприятное стандартное поведение.
- Позволяет перемещать курсор по вводимой строке (кнопки влево / вправо / home / end)
- Позволяет удалять символы после курсора с помощью Delete (почему я не вижу этого во многих играх?)
- Может быть легко модифицирован для добавления дополнительных сочетаний клавиш и функций
Пример включает в себя непосредственное поле ввода и простой список, выводящий вводимые строки по нажатию Enter.
GameMaker: Jetpack платформер
Текущая версия дополнена комментариями (покрытие которых теперь близится к 100%) и подправлены некоторые сомнительные куски кода.
Так же на базе этого примера когда-то разрабатывалась игра.
GameMaker: Столкновения с 2D массивом
Внешний вид и внутреннее устройство
Можно сказать, что это упрощенная версия сделанного мной ранее движка-примера "Terra". Другие отличия состоят в использовании массивов вместо структур данных, и совместимость с Lite версией для GameMaker <= 8.1. С использованием массивов уходит возможность создания бесконечных миров (ограничение двухмерных массивов - 32000х32000 ячеек), но конечному пользователю это все равно вряд ли понадобится.
Как приятное добавление для русской версии поста, пример теперь содержит более детальные объяснения, и они изложены на русском.
GameMaker: Соединяемые объекты
Я конечно не специалист по странным вертолетам, но, похоже, это - один из них.
В свою очередь к "дочерним" объектам можно прицеплять еще объекты, позволяя добавить потенциально бесконечное количество "уровней экземпляров", что будут перемещаться вместе.
Хорошими примерами применения таких систем являются игры с "модульной" техникой (танки, какие-либо корабли с орудиями на борту, прочее), и состоящие из множества фрагментов боссы.