ДжазТим — надежный технологический партнер

Agile разработка ПО на Java

Реализация расширяемой игровой механики для клиента ролевой игры

Описание проекта

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

Целью проекта была разработка новой расширяемой системы игровой логики, которая позволяет автоматизировать сложные расчеты взаимодействия персонажей в игре. Была переработана система игровых взаимодействий персонажей, все статичные предустановленные конструкции заменены обобщенным настраиваемым поведением. Для создания скриптов используется JavaScript. Выполнение производится средствами Java Nashorn.

Технологии

Java, Spring, JavaFX, Swing, Jackson, Jetty, Log4j, HTML, XML, JSON, Nashorn API, JS, Git.

Скриншоты

Особенности проекта

  • Legacy system. Приложение разрабатывалось на протяжении 10 лет, в большинстве случаев использовался старый код, множество библиотек было устаревшими.
  • Необходимость обеспечения совместимости с более старыми версиями. Нужно было обеспечить обратную совместимость с предыдущими версиями сохраненных игр. Также старая и новая версии должны были быть взаимоувязаны с магазином, содержащим платный контент. Это создало ограничение на изменения в модели данных и игровых персонажей.
  • Архитектура приложения. Сложная архитектура приложения, трудно допускающая какие-либо расширения. Архитектура приложения не допускала возможности разделения на логические слои, часто логика обработки осуществлялась непосредственно в пользовательском интерфейсе.
  • AWT Swing и JavaFX элементы смешиваются в реализации пользовательского интерфейса. Это создавало значительные трудности при добавлении новых элементов.
  • Обширные правила игры. Одна из целей проекта — добавить возможность играть в различных режимах игры, используя различные версии правил. Реализация этого требует глубокого понимания логики и механики игры. Мануал правил только одной версии правил игры занимает около 600 страниц.

Результат проекта

  • Новая версия игры была успешно реализована. Заказчик остался доволен результатом.
  • Все требования проекта выполнены, несмотря на частые изменения.

Достижения компании на проекте

  • Было реализовано REST API, которое предоставляет доступ к просмотру данных игровых персонажей извне клиента.
  • Изменена архитектура приложения. Несколько подсистем были полностью переписаны, чтобы дать им возможность расширяться в будущем, сделан рефакторинг, который позволил расширять игровую логику.
  • Все элементы UI части приложения были заменены на JavaFX.
  • Была добавлена возможность создания пользователями нелинейных алгоритмов взаимодействия персонажей как с помощью интерфейса для визуального программирования, так и в текстовом виде.

Отзыв клиента

Вадим Кастрицкий Вадим Кастрицкий, заместитель директора, VironIT, компания по разработке программного обеспечения, Минск, Беларусь

Задача команды ДжазТим на этом проекте была довольно сложной — расширение функционала игры, которое включало в себя погружение в существующую уже на протяжении более 10 лет реализацию. Для разработки необходимо было изучить и учесть правила игры, которые отображены в большом шестисотстраничном мануале. Задача комплексная, требующая серьезного архитектурного подхода и высокой квалификации разработчика. И команда ДжазТим справилась с ней на должном уровне. Хочу отметить, что работа компании ДжазТим всецело соответствует духу Agile. Команда активно предлагала свои решения реализации сложных технических моментов, а также заранее предупреждала о возможных рисках. Мы полностью довольны сотрудничеством с ДжазТим.

Свяжитесь с нами, чтобы обсудить Ваш IT-проект

    Имя *

    Название компании

    Email *

    Телефон

    Чем мы можем Вам помочь? *

    * – Обязательные поля для заполнения