Case Study included: Zuma Level Designer
The customer owns the Zuma game engine, which accepts level configurations in a specific data format.
Writing level configurations manually is relatively complex, so the goal is to develop an application that would allow for easier configuration of levels.
Levels and their configurations can be accessed in Zuma Level Examples.
By analyzing the customer's description, the following characteristics have been identified: Product scope is final and the problem falls into the Precise Assignments category.
The chosen development approach is the Waterfall development approach, since it is the most reasonable choice when both the problem and solution are clearly known (without the need for continuous feedback).
Having a clear goal that is to be achieved with the software solution, and having chosen a development approach, the requirements and offer can be prepared.
Usually, in cooperation with the customer, both are combined into one document, which serves both as the specification and for legal obligations.
An example of this document can be accessed in the Zuma Level Designer Offer.
The Level Designer needs to have a GUI, to be utilized with a mouse for drawing and a keyboard for inserting level parameters.
The Level Designer is intended for use by a single user on a single PC.
Tools that are practical for building user interfaces are a good choice. This includes all popular libraries and frameworks for desktop application and web single-page application development.
The decision has been made to utilize the React library, based on the requirements and the development team's expertise.
To start with the technical solution, the code architecture should be chosen. The goal is to apply general conventions and rules that best fit the requirement.
For individual components, the MVVM pattern is chosen.
In the integration part, a one-way hierarchy is achieved, with the App component utilizing the LevelBuilder component, and the LevelBuilder component utilizing the CanvasLevelBuilder.
The responsibilities include JSON processing, processing basic input level data, and managing canvas-drawn level data, respectively.
Besides the general requirements found in all web projects, sometimes there are project-specific functionalities needed. General code patterns do not necessarily fit these.
In this project, that is the 'canvas drawing' section, particularly tunnel calculation. Tunnels can be opened and closed only on paths, which separates them from all other elements.
An abstraction named 'tools' is incorporated, and only pure functions are utilized.
Apart from various automated tests for units such as tunnel calculations, a final manual test is performed.
One of the level designs that is tested is shown in the image.
In the applied test, the following can be observed:
The visible area is correctly matched.
All tunnels are oriented correctly.
Paths and platforms are correctly rendered.
Balls are correctly generated.
With decisions which Software Development option will be utilized, and which business problems will be solved, requirements are prepared.
Some programming languages, frameworks and tools are more suited to certain problem domains than others.
Software solution is built, configured and integrated in this phase.
The final step is testing the integrated solution to make sure it works correctly and that the business improvement goal is achieved.
Follow the software development process described in a case study on the development of 'Generating Checksum Valid Credit Card Numbers'.
Read about all topics, from understanding the benefits of software and its areas of usage to software planning and development.
Explore the technical aspects of software development on our blog. It offers insights into various coding techniques.
Let us know if we can improve the description for your business case, and if you are interested in exploring cooperation options for your project.
Check out the business offers, services, and pricing models we have, and explore opportunities to take your business to the next level.