Love2d: Простая компиляция приложений

Если вы работали с Love2d, возможно вы замечали что процесс сборки приложений не является особо увлекательным, требуя запуска командной строки и ручного ввода\вставки зависящих от имени проекта команд. Но это исправимо таким нехитрым однострочным batch скриптом:
copy /b love.exe+%1 "%~dpn1.exe"
Что тут происходит: Переданный как входной параметр файл (%1) конкатенируется с проигрывателем и записывается в новый файл, названный как "(имя файла).exe"
Как этим пользоваться:
  1. Создайте файл 'compile.bat' в папке с "проигрывателем" Love2d (обычно love.exe).
  2. Вставьте представленный выше код в него.
  3. Для сборки игры перетащите ее .love\.zip файл на compile.bat - приложение (собранная игра) появится в папке с ним, называясь соответственно входному файлу.
И это все. Довольно просто, не так ли?

GameMaker: Случайно прокручиваемые символы

Этот пример демонстрирует определенную вещь которую я хотел сделать на протяжении нескольких дней - скрипт для преобразования строк в набор меняющихся случайных символов.

Идея этого эффекта довольно проста - каждый изменяемый символ заменяется другим случайным (рисуемым) символом с такой же шириной (чтобы строка на выходе не меняла своей ширины, оставляя даже некоторый шанс угадать, что было написано изначально).

Для оптимизации процесса рисования кодом генерируется коллекция (ds_map) с информацией о ширине символов для каждого шрифта при первом использовании. Это делает преобразования довольно быстрым даже для GameMaker: Studio с его ограничением в 65000 символов на шрифт.

Программный интерфейс состоит всего из 3 функций, одна из которых - функция инициализации (должна быть вызвана до использования других), одна заполняет таблицу для заданного шрифта (на случай, если вы хотите сделать это вручную при запуске игры) и собственно функция text_rand(string, font), "преобразовывающая" предоставленную строку для заданного шрифта.

Этот пример может быть отдельно полезным для разного рода экспериментальных игр, а так же является довольно необычным способом цензуры текста.

Скачать GMK

GameMaker: Вид от 3-его лица в 3D

Этот довольно миловидный пример демонстрирует создание трехмерной игры с видом от третьего лица с помощью стандартных (d3d) функций GameMaker (так же включает в себя вращение персонажа и несколько других поленых вещей).
Описания и обьяснения ниже, Читать далее

GameMaker: Поле ввода

Есть множества случаев, в которых вам может понадобится дать пользователю возможность вводить текст привычным способом, принимая во внимания системные настройки и предоставляя возможность мелких изменений (таких как передвижение курсора по тексту). Такие случаи включают в себя чаты, консольные интерфейсы, поля ввода текста, и прочее. Этот пример покрывает большинство типичных потребностей для таких вещей довольно коротким (менее 70 строк) и понятным кодом. Он включает в себя следующие особенности:

  • Сохраняет текущий текст при потере фокуса окна. Если вам доводилось работать с вводом текста в GameMaker, возможно вы уже заметили это неприятное стандартное поведение.
  • Позволяет перемещать курсор по вводимой строке (кнопки влево / вправо / home / end)
  • Позволяет удалять символы после курсора с помощью Delete (почему я не вижу этого во многих играх?)
  • Может быть легко модифицирован для добавления дополнительных сочетаний клавиш и функций

Пример включает в себя непосредственное поле ввода и простой список, выводящий вводимые строки по нажатию Enter.

Скачать GMK

GameMaker: Jetpack платформер

Это один из моих более старых примеров, демонстрирующий "пиксельно чистое" передвижение и столкновения для платформера с реактивным ранцем. В качестве бонуса, пример включает в себя создание (псевдо-) частиц и высчитывание скорости столкновений с объектами.
Текущая версия дополнена комментариями (покрытие которых теперь близится к 100%) и подправлены некоторые сомнительные куски кода.
Так же на базе этого примера когда-то разрабатывалась игра.

Скачать GMK

GameMaker: Столкновения с 2D массивом


Внешний вид и внутреннее устройство

Этот пример демонстрирует организацию системы с информацией о уровне сохраненной в виде двухмерного массива (каждая ячейка хранит индекс блока) и организацию системы столкновений с уровнем этого вида.
Можно сказать, что это упрощенная версия сделанного мной ранее движка-примера "Terra". Другие отличия состоят в использовании массивов вместо структур данных, и совместимость с Lite версией для GameMaker <= 8.1. С использованием массивов уходит возможность создания бесконечных миров (ограничение двухмерных массивов - 32000х32000 ячеек), но конечному пользователю это все равно вряд ли понадобится.
Как приятное добавление для русской версии поста, пример теперь содержит более детальные объяснения, и они изложены на русском.

Скачать GMK

GameMaker: Соединяемые объекты


Я конечно не специалист по странным вертолетам, но, похоже, это - один из них.

Этот довольно полезный пример предоставляет систему для "соединения" объектов между собой, то есть "дочерние" объекты будут перемещаться относительно их "родителя" с учетом позиций и вращения.
В свою очередь к "дочерним" объектам можно прицеплять еще объекты, позволяя добавить потенциально бесконечное количество "уровней экземпляров", что будут перемещаться вместе.
Хорошими примерами применения таких систем являются игры с "модульной" техникой (танки, какие-либо корабли с орудиями на борту, прочее), и состоящие из множества фрагментов боссы.

Скачать GMK

Haxe/Neko: пример соединения клиент-сервер (чат)

В последнее время я искал примеры реализации соединений "клиент-сервер" для Haxe, но не мог найти ничего стоящего. Через некоторое время все таки удалось узнать что эти вещи реализуются посредством класса sys.net.Socket, и что непосредственно с ним никто не работал. Позже так же было выяснено, что в определенной степени этот класс должен отражать реализацию POSIX сокетов. Конечно это хорошо, но просто чтением man тут обойтись не удалось, так как в отличии от упомянутых, Haxe реализация использует исключения вместо возвращаемых значений. А исключения, в свою очередь, никто документировать не стал.

После некоторого количества экспериментов (так же известно как "метод тыка"), мною был найден полу-простой способ работы с "блокирующими" сокетами.

Читать далее