Extended game mechanics for the client role-playing game

Project summary: The application represents both and network and server client for role-playing game in fantasy genre, like the Dungeons and Dragons game series. Game scripts are not specified in advance and the possibility of their implementation is quite extensive. During the game, players control individual characters, bunch into groups, interact with the outside world, resolve various conflicts, participate in battles and receive rewards.

The application can act as a game client, which connects to the game server, and directly as a server to which other clients connect. It is also possible to purchase various artifacts through the shop.

The project aim was to develop a new expandable system of game logic that allows to automate complicated calculations of characters interactions in the game. The system of characters interactions was revised, all static preset structures were replaced by generalized custom behavior. JavaScript is used for creating scripts. The implementation is performed by means of Java Nashorn.

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

Screenshots: 

Project features:

  • Legacy system. The application has been developed for 10 years and the old code was used in many cases, most of the libraries were outdated.
  • Importance of ensuring compatibility with older versions. It was necessary to provide backward compatibility with older versions of saved games. Also, old and new versions should be interrelated to the shop with paid content. This created a restriction on changes in the data model and game characters.
  • Application architecture. A complex application architecture that is difficult to allow for any extensions. The application architecture did not allow the separation of logical layers, often the processing logic was implemented directly in the user interface.
  • AWT Swing and JavaFX elements are mixed during the UI implementation. It caused considerable complexities when adding new elements.
  • Extensive game rules. One of the project goals is to add the ability to play in different game modes, using different versions of the rules. Its realization requires a deep understanding of the game logic and mechanics. Only one version of rules manual is about 600 pages long.

Project results:

  • Iterations were finished on time. New version of game was successfully realized.
  • All project requirements were fulfilled, despite frequent changes.

Company's achievements on the project:

  • REST API was implemented, which provides access to the game characters data viewing outside the client.
  • Application architecture was changed. Several subsystems were completely rewritten to allow them to expand in the future, refactoring was done, which allowed expanding game logic.
  • All elements of UI part of application were replaced with JavaFX.
  • An ability to create nonlinear algorithms of characters interaction was added both with the help of visual programming interface and in text form.

Testimonials:


Vadim Kastritsky, CEO, VironIT, Custom software development company, Minsk

The task of this project for JazzTeam members was rather complicated, that is the expansion of the game functionality, which included immersion in the existing for more than 10 years implementation. For development it was necessary to study and take into account the game rules, which are listed in a large six hundred page manual. The task is complex, and requires a serious architectural approach and high qualification of the developer. And JazzTeam members coped with it at the proper level.

I note that the working process of JazzTeam company fully corresponds to the spirit of Agile. The team actively offered solutions for implementation of complex technical issues and also warned in advance about possible risks. We are truly grateful to the staff of JazzTeam.