Ранняя альфа-версия игры Galaxy Boom mini, декабрь 2017: Скачать (8mb)

6 ноября 2019

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

Мы перевели статью, о которой писали ранее, и начали думать над реализацией хронологического метода программирования в Delphi. Для этого нам понадобилось разработать свой метод хранения значений хронологических типов данных. Согласно статье, хронология представляет собой набор элементов — состояний, каждое из которых содержит значение и временную метку. Временная метка для всех хронологических типов данных представлена как целое число — время с момента запуска программы в мс. А значения для каждого хронологического типа могут быть разными, от простых целых чисел, до сложных структур.

Поэтому мы сделали запись типа TTimelineState — состояние хронологического значения, — содержащую два поля: «value: TValue» и «time: Cardinal». Тип данных TValue дал возможность хранить в этом поле значения любого типа, что обеспечило нам реализацию любых хронологических типов. Далее нужно было решить, как структурировать хранимые значения — все состояния должны храниться в каком-то массиве или списке. Выбор варианта хранения во многом зависел от требований доступа к этим данным. Согласно описанным в статье принципам, эти требования можно сформулировать так:

  • Запись значений по абсолютному времени
  • Считывание значений по относительному времени (текущее время со смещением)
  • Считывание ближайших предыдущих и ближайших следующих значений по абсолютному времени
- 15 -
28 августа 2019

Приветствую тебя, мой безмолвный читатель. Рад сообщить, что процесс разработки игры доведен до первой обозначенной нами контрольной точки. Прошло каких-то несколько месяцев, и вот уже мы имеем возможность двигать по экрану первый квадратик. Это, несомненно, успех. Такого результата можно было бы достичь намного раньше, если бы перед нами не встала необходимость разработки крупных модулей UI, ECS и Perfect Engine, работу над которыми мы планировали проводить значительно позднее. Однако, их наличие необходимо для реализации заготовки крупного проекта, чем на данный момент и является наша тестовая программа.

В этом сообщении я опишу структуру проекта, а ниже, по традиции, выложу ссылку на саму программу.

Состав игры

Графический движок Perfect Engine

Основные моменты, касающиеся новой версии графического движка Perfect Engine, уже были описаны в одном из сообщений выше. Конечно, за это время в нем произошло много структурных изменений (например, было введено понятие «Слой»), но здесь я коснусь этого вопроса поверхностно, надеясь в будущем посвятить описанию движка отдельное сообщение.

- 14 -
20 августа 2019: Иллюстрация «Позитрон»

Основным персонажем вселенной Galaxy Boom, несомненно, всегда являлся Луч — маленький робот, по воле случая ставший центром большой войны, чье предназначение раскрывается по ходу глобального сюжета, и чей вклад в финал общей истории, поистине, неоценим.

Теперь же мы рады представить новую историю — второстепенную, но не менее важную для мира Galaxy Boom — историю нашего нового персонажа, Позитрона, повествующую о защите космических платформ от первых нападений войск Бета. Позитрон — робот, пытающийся найти свое предназначение, определить, кем он является и как может послужить силам Альфа в борьбе с общим врагом. Неизгладимое впечатление на этого персонажа произвела его краткая встреча с Лучом во время одной битвы, благодаря которой ему стали открываться некоторые необычные свойства окружающих его предметов.

Подробнее о персонаже и об иллюстрации

- 13 -
14 июля 2019

Со времени последнего сообщения прошло довольно много времени, в течение которого работа над проектом не прекращалась. В систему графического интерфейса за этот период было внесено много изменений, а некоторые основополагающие моменты и вовсе были полностью переосмыслены. В основном, все изменения коснулись библиотеки графического интерфейса, именно над ней и велась работка в последние месяцы.

Серьезному структурному изменению подвергся механизм работы со сценами. Если раньше существовали такие понятия как «Текущая сцена» и «Главная сцена», то теперь они упразднены, и на смену им пришел механизм состояний. Состояние — это набор сцен, которые включаются при его активации. Необходимость реализации такого подхода обусловлена недостаточностью вывода единовременно только одной сцены для реализации всех игровых ситуаций. Например, когда надо одновременно вывести на экран игровой интерфейс и интерфейс меню паузы — при старом подходе с одной активной сценой при активации меню паузы пропадут все элементы интерфейса с игровой сцены.

- 12 -
14 мая 2019

Пришлось на некоторое время отлучиться от основного проекта, чтобы завершить другой, тоже крупный, которым занимались чуть более, чем полтора года. Завершили удачно, и теперь свободны, можем полностью (насколько позволяет работа) посвятить себя разработке игры.

Но и по текущему проекту тоже было внесено немало доработок. Я не буду описывать их все, так как сейчас мы готовим крупное обновление для этого блога, в котором будет описана структура вообще всего проекта вместе со схемами — все, что есть на данный момент, и этого уже достаточно. Хотя, на вид все очень просто — квадратик бегает по экрану и стреляет в другой квадратик, который стоит на месте. Казалось бы, работы на день, но, вместе с тем, есть очень широкий функционал, который уже сейчас позволяет быстро реализовать довольно сложные вещи: Р — Расширяемость.

- 11 -