SOLID principies usage in video game development based on UNITY game engine

DOI: 10.31673/2412-4338.2020.017987

Authors

  • О. А. Дібрівний, (Dibrivniy O. A.) State University of Telecommunications, Kyiv
  • В. В. Гребенюк, (Grebenyuk V. V.) State University of Telecommunications, Kyiv
  • П. О. Кравчук, (Kravchuk P. O.) State University of Telecommunications, Kyiv
  • О. В. Сеньков, (Senkov O. V.) State University of Telecommunications, Kyiv
  • О. А. Кільменінов, (Kilmeninov O. A.) The National Defense University of Ukraine named Ivan Chernyakhovsky, Kyiv

Abstract

Today, the global video gaming industry is in its prime. With the launch of a variety of video game platforms such as Steam, Google Play, Apple Store, and free game engines such as Unity and Unreal Engine, the threshold for gaming devs for beginners and students has dropped significantly, especially when it comes to the mobile gaming market. With minimal time and effort, using all the power of the above mentioned game engines, the process of developing a full-fledged video game can take up to several months or even weeks. However, novice developers, and often programmers with experience, in the pursuit of rapid development significantly complicate the process of further support and development of their game projects. One way of avoiding this development is to use the principles of SOLID when designing a game application.
This article focuses on reviewing the software architecture of the Unity game engine and the ability to implement SOLID principles to optimize the architecture, and to facilitate the continued support and modification of such applications. The correspondence of the main components of the UNITY game engine with the Single Responsibility Principle is considered, as well as the peculiarities of class building when managing this principle. The main features of the usage of the open/closed principle and its influence on the process of further modernization of software architectures are identified. Architectural solutions for the use of the Liskov substitution principle and the Interface Segregation Principle are proposed. The basic requirements for abstractions when working with the principle of dependency inversion are examined.
A general skeleton for the construction of game architectures is proposed, taking into account the SOLID program principle based on a game application in the rpg genre, with the implementation of individual game mechanics. Also was suggested the game architecture, based on the SOLID principle, which will simplify the process of upgrading and supporting game applications developed on the basis of the UNITY game engine.

Keywords: OOP С#, OOP java, SOLID, UNITY, game development, programing principles, programing patterns.

References
1. Martin C. R. (2010) “Design Principles and Design Patterns.”, e-sourse – [access mode]: https://objectmentor.booked.net/
2. Martin C. Robert, Martin M.(2006) “Agile Principles, Patterns, and Practices in C#.” Prentice Hall.
3. Martin C. Robert. (2017) “Clean Architecture: A Craftsman's Guide to Software Structure and Design” Prentice Hall.
4. Baron D. (2019) “Hands-On Game Development Patterns with Unity 2019: Create engaging games by using industry-standard design patterns with C#” Packt Publishing.
5. Nystrom R. (2014) “Game Programming Patterns” Genever Benning, 2014.

Published

2020-08-03

Issue

Section

Articles