<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Software Engineering Fundamentals to Design Application for Modern Game Engines</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Viacheslav</forename><surname>Bezditnyi</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Igor Sikorsky Kyiv Polytechnic Institute</orgName>
								<address>
									<addrLine>Beresteiskyi Ave, 37</addrLine>
									<postCode>03056</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">Olena</forename><surname>Chebanyuk</surname></persName>
							<email>chebanyuk.olena@gmail.com</email>
							<affiliation key="aff1">
								<orgName type="institution">National Aviation University</orgName>
								<address>
									<addrLine>1, Liubomyra Huzara ave</addrLine>
									<postCode>03058</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Software Engineering Fundamentals to Design Application for Modern Game Engines</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">3720771E2D428D6FC882FD2BC9D87F5A</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T18:44+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Game Engine</term>
					<term>Design Patterns</term>
					<term>Unity</term>
					<term>Service-Oriented Architecture</term>
					<term>Theory of Categories</term>
					<term>Component-Oriented Architectural Style</term>
					<term>Service locator</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The article outlines a methodology for designing multimedia applications for game engines using a component-oriented architectural style. It highlights the importance of selecting the appropriate architectural pattern, considering the features of modern game engines such as Unity, Unreal Engine, and Godot Engine. Key challenges and issues in designing flexible and scalable architectures are addressed. The life cycle model of the user interaction session with the application is described, comprising three main stages: Bootstrap, GameLoop, and Dispose. The article emphasizes the significance of managing transient processes between life cycle states to ensure the application's proper functioning. To better organize service interactions, the mathematical framework of category theory and set theory is applied, allowing for clear definition and management of dependencies and relationships between components. The benefits of using category theory for modeling and managing data flows and dependencies in the system, particularly through functors and monads, are discussed. These methods facilitate the creation of adaptive and scalable systems that are easy to maintain and extend. The article provides practical recommendations for designing the architecture of game applications, considering the specifics of component-oriented and service-oriented architectural styles. It underscores the need for regular review and updates of the project architecture in response to changing requirements and operating conditions. A proposed methodology serves as a theoretical foundation for developing flexible architectures of multimedia applications, accounting for the specifics of component-oriented and service-oriented architectural styles and the functioning of game engines. The work includes examples of practical applications of the proposed theoretical approaches in real projects, demonstrating their effectiveness and applicability in various game development contexts. These examples feature concrete implementations of patterns, state management using the State Machine, and optimization of component interactions through Service Locator and Dependency Injection.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Earlier the approaches to design graphical applications used the same designing principles as designing of web and other types of applications <ref type="bibr" target="#b0">[1]</ref>.</p><p>Designing of multimedia applications require special approaches for interface designing. Classical Model-Driven Development methodologies needed to be adopted for development of applications that need component-oriented <ref type="bibr" target="#b1">[2]</ref>, service-oriented <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b3">4]</ref>, agent-oriented <ref type="bibr" target="#b4">[5]</ref>, and other architectural styles <ref type="bibr">[6.7]</ref>.</p><p>Also modern multimedia applications support complex UI, and usual software designing approaches based on UML diagrams cannot effectively reflect all the details of multimedia applications.</p><p>Special approaches, considering the peculiarities of different GameObject structures, various types of game scenes (2D, 2.5D, and 3D scenes), and the assessment of script quality attached to GameObjects, may be adopted for designing of multimedia applications <ref type="bibr" target="#b7">[8]</ref>. The same problem is actual for the designing of VR? AR, and mixed reality applications <ref type="bibr" target="#b8">[9]</ref>.</p><p>The modern game industry is constantly developing, offering more and more complex and innovative solutions in the creation of game applications. One of the key aspects of effective game development is choosing an architecture that provides flexibility, scalability, and ease of code maintenance. The basis of a game application is a game engine, which is an environment for developing and prototyping game applications with its own features and programming language. Among the popular game engines, Unity Engine, Unreal Engine, and Godot Engine are most often singled out (Fig. <ref type="figure" target="#fig_0">1</ref>) <ref type="bibr" target="#b9">[10]</ref>. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">First Challenges and Issues in Designing Flexible Architectures for Modern Game Engines</head><p>Designing the architecture of any application can pose certain challenges and problems, in particular:</p><p>1. Choosing an appropriate architectural pattern: Game engines do not impose strict restrictions on the architecture, which can lead to difficulties in choosing the optimal pattern. Common patterns such as MVC (Model-View-Controller), MVVM (Model-View-ViewModel) or ECS (Entity Component System) have their advantages and disadvantages depending on the project <ref type="bibr" target="#b10">[11]</ref>. 2. Initial architectural decisions can make it difficult to scale the project in the future. The wrong choice can lead to the need to rewrite the code when adding new functions <ref type="bibr" target="#b11">[12]</ref>. 3. Using the available functionality of game engines without a designed architecture and without using best practices leads to the creation of tightly coupled systems, which complicates their testing and refactoring <ref type="bibr" target="#b12">[13]</ref>. Using SOLID principles and design patterns such as Dependency Injection, Service Locator can help manage these dependencies. 4. An architecture that complicates testing can significantly increase development time.</p><p>Automated testing such as unit tests can be difficult to implement in Unity due to game engine dependencies <ref type="bibr" target="#b5">[6]</ref>. 5. Some architectural patterns can negatively affect performance, especially in projects with a large number of objects and components. Optimization and proper pattern selection are key to maintaining high performance.</p><p>Integration with external systems such as databases or web services can be difficult depending on the chosen architecture. It is important to plan these aspects in the early stages of development.</p><p>Different developers may have different approaches to architecture, which can make team collaboration difficult. It is important to establish clear standards and principles of architecture at the beginning of the project.</p><p>To solve these problems, it is important to spend time planning the architecture, regularly reviewing and updating it according to changes in the design, and taking into account the experiences and best practices of other developers.</p><p>Today, there are a large number of patterns and implementations of their combinations. In order to choose the most suitable architecture, it is suggested to consider what challenges developers have to deal with.</p><p>The first is getting dependencies from another class. This is usually solved by setting up relationships between components in the development environment, using the Singleton pattern, static fields, or events <ref type="bibr" target="#b13">[14]</ref>. The disadvantages of this approach become noticeable in the process of filling the project with objects and logic. An alternative is Dependency Injection (DI), which allows you to pass a reference to an object through a dependency injection mechanism <ref type="bibr" target="#b14">[15]</ref>.</p><p>Another challenge is maintaining the structure of the project, minimizing problems with the initialization order. For this, you need to clearly control the life cycle of the application, as well as game objects. The State pattern is suitable for defining life cycle stages, since each stage is a separate state of the application that we can enter and exit.</p><p>In addition to dependencies, developers often face the question of how to use the same functionality in different parts of the project? If the logic is global for all users and 100 users make requests to one service at the same time, then at best only a few will get the result. This problem is solved by the Service Locator pattern in combination with the State pattern to ensure sequential execution of requests in the order determined by the state <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b10">11,</ref><ref type="bibr" target="#b5">6</ref>].</p><p>Let's take a closer look at the states and description of the game cycle of the application.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Technologies Enhancing Gaming Application Functionality</head><p>For any application, such as an educational app or a game, the session life cycle typically follows this structure (see Figure <ref type="figure" target="#fig_1">2</ref>): Bootstrap is an entry point, a place where services, dependencies are initialized, resources necessary for launch are loaded.</p><p>GameLoop is directly the game process, interaction with the application, in which all game or business logic takes place.</p><p>Dispose is the state of the application before exiting, unloading resources, services, etc. The most critical points in this scheme (Fig. <ref type="figure" target="#fig_1">2</ref>) are between the states of the life cycle and can be called "transitional processes". This means, for example, the order of initialization of services, verification of obtaining dependencies, the order of unloading resources from memory. If these processes are left unchecked, we get incorrect program execution or even errors that block the execution process.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Bootstrap GameLoop Dispose</head><p>Transition processes</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Transition processes</head><p>For the correct operation of the application, we need to control these states, have a convenient mechanism for transition between them, have an initial entry point in which the necessary dependencies are initialized in a controlled manner using services. And access to the services themselves is implemented using Dependency Injection.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">A formal model of the gaming process, utilizing discrete mathematics principles</head><p>In order to interpret the game cycle into a mathematical model, it is possible to use the Theory of Category. Consider the main analogies:</p><p>• Objects and Morphisms: In category theory, systems and their interactions can be modeled using objects (components, services) and morphisms (functions that describe interactions between these objects). In the context of Unity, this can be used to define the relationships between various game components, such as the Service Locator, DI, Factory, and State Machine. • Functors and Monads: Functors (structures that map objects and morphisms of one category to another) and monads (a type of functor that allows sequentially combining operations) can be used to model and manage data flows and dependencies in a system. • Sets and Subsets: Game elements (objects, components) can be represented as sets, and their properties and characteristics as subsets. This allows you to clearly define and manage dependencies and relationships between components. • Operations on Sets: Operations such as union, intersection, and difference of sets can be used to describe interactions between components. For example, combining sets can represent the integration of different services into one system. Application in Unity: • Service Locator: This can be represented as a centralized system responsible for tracking and providing access to various services (objects), using the principles of category theory to manage dependencies. • Dependency Injection: This can be interpreted through set theory, where dependencies between objects are represented as relations between sets. • Factory Pattern: Used to create objects, which can be viewed through the lens of category theory, where a factory is a functor that maps parameters to objects. • State Machine: This can be modeled using set theory, where states are represented as sets and transitions are represented as relationships between them.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• Extended Application and Benefits:</head><p>• Scene Management: Category theory can manage scenes and transitions in Unity, treating each scene as an object and transitions as morphisms. • AI Systems: AI behaviors and decision-making processes can be modeled using functors and monads to manage state and behavior transitions. • Performance Optimization: By formalizing interactions and dependencies, category theory can help identify and optimize performance bottlenecks. • Scalability and Modularity: These theoretical approaches promote modularity and scalability, making it easier to update, test, and maintain the system. • Real-World Examples: For instance, consider a Unity project where the service locator pattern is used to manage audio, saving/loading, and networking services. Each service is an object, and interactions between services are morphisms. Using dependency injection, the audio service can be easily replaced without modifying the networking code.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Challenges and Considerations:</head><p>Complexity: Implementing these concepts can be complex and may require a steep learning curve for developers unfamiliar with category theory.</p><p>Tools and Libraries: Utilize libraries and tools that support functional programming and dependency injection to facilitate the implementation of these concepts.</p><p>Integration: Ensure these theoretical approaches integrate well with Unity's existing architecture and components.</p><p>By combining the theoretical approaches listed above, it is possible to develop a flexible and scalable system for Unity that optimizes the management of dependencies and data flows in complex projects. The formalism provided by category theory and set theory can help in designing robust and maintainable game architectures, enhancing both development and performance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Model of Game Application Functionality</head><p>States and state management are typically implemented using the Game State Machine pattern. A "State Machine" is a mathematical model used to describe the behavior of a system. It consists of a set of states, transitions and actions. A state represents a specific behavior or condition of a system, while a transition defines movement from one state to another. Actions associated with states or transitions represent the logic to be performed upon entering, exiting, or staying in a state <ref type="bibr" target="#b8">[9]</ref>.</p><p>Figure <ref type="figure" target="#fig_2">3</ref> shows the sequence of launching a software application (in particular, a game). The first step in implementing the State Machine is to define the states. Each state will be represented by a separate script (logic) that inherits from the IState interface, which declares 2 main methods: entering a certain state and exiting it.</p><p>The next step is to create a GameStateMachine class to manage state transitions and perform appropriate actions.</p><p>The GameStateMachine class can have different states (for example: `BootstrapState`, `LoadLevelState`, `LoadProgressState`, `GameLoopState`), which can be treated as objects in a category. The transition between states through the Enter() and ChangeState() methods can be analogous to morphisms that transform one object (state) into another.</p><p>One of the key aspects of category theory is the composition of morphisms, which in this case can be represented as a series of transitions between states. For example, going from</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>GameBootstrapper</head><p>Game GameStateMachine -Loading screen -SceneLoader ...</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>BootstrapState -Loading of initial level -Registration of services</head><p>LoadLevelState -Loading of a game level -Creating and loading game resources -Initialization of needed dependencies LoadProgressState `BootstrapState` to `LoadLevelState` and then to `GameLoopState`. The composition of these transitions (morphisms) creates a "path" through different states of the game.</p><p>In category theory, functors are mappings between categories. One can consider the interaction between different components of the system (for example, between `GameStateMachine` and specific states) as a functor-like relationship, where the behavior of one component determines the behavior of another.</p><p>A system of states can be considered as a category where states are objects and transitions between them are morphisms. Within a larger system (for example, the entire game), such a state system can be considered a subcategory.</p><p>In category theory, each object has an identical morphism that reflects the object in itself. This can be implemented as the ability of a state to remain unchanged if there is no transition to another state.</p><p>Consider the following formula <ref type="bibr" target="#b0">(1)</ref>, which describes the transition from BootstrapState to GameLoopState via LoadLevelState:</p><formula xml:id="formula_0">𝐿𝐿𝑆 = 𝐵𝑆 − −&gt; 𝐿𝑃𝑆 − −&gt; 𝐺𝐿𝑆 ,</formula><p>(1) This equation can be interpreted as a composition of two morphisms:</p><p>1. BootstrapState-&gt;LoadProgressState. This morphism corresponds to the transition from BootstrapState to LoadProgressState.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">LoadProgressState-&gt;GameLoopState This morphism corresponds to the transition from</head><p>LoadProgressState to GameLoopState.</p><p>The composition of these two morphisms gives the BootstrapState -&gt; GameLoopState morphism, which corresponds to a direct transition from BootstrapState to GameLoopState.</p><p>This example demonstrates how category theory can be used to describe and understand transitions between states in a system of game states.</p><p>This mathematical model is a simplified representation of the system of game states. A real system can be much more complex, with more states, transitions, and interactions.</p><p>Category theory provides a powerful toolkit for modeling and analyzing systems of states, but understanding and applying its concepts requires some knowledge of abstract mathematics.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Architecting Game Applications with Category Theory</head><p>Designing the structure of a service-oriented application (SOA, Service-Oriented Architecture) in Unity requires an understanding of both the basic principles of SOA and the specifics of Unity as a game engine. The main idea of SOA is to create modular, independent services that can be easily replaced, updated, or modified without affecting other parts of the system <ref type="bibr" target="#b9">[10]</ref>.</p><p>SOA defines a way to make software components reusable and interoperable through service interfaces. Services use common interface standards and an architectural pattern so that they can be quickly integrated into new applications. This relieves the task of the application developer who previously redesigned or duplicated existing functionality or had to know how to connect or ensure compatibility with existing functionality.</p><p>Each service in an SOA contains the code and data needed to perform a complete, discrete business function (such as checking a customer's creditworthiness, calculating a monthly loan payment, or processing a mortgage application). Service interfaces provide free communication, that is, they can be called almost without knowing how the service under them is implemented, which reduces the dependency between applications.</p><p>Below are the key considerations for SOA design in Unity:</p><p>• Definition of Services: Functional elements of the application can be separated as independent services. These can be, for example, the game save system, sound management, network interactions, advertising management, etc. • Service Interfaces: It is necessary to clearly define the interfaces for each service. This will allow replacing service implementations without the need to change the code that uses these services. • Dependency Checking and Dependency Injection: Using the Dependency Injection pattern will help manage dependencies between different services and components. This can be implemented through constructors, setters, or through special frameworks (Zenject <ref type="bibr" target="#b14">[15]</ref>, VContainer <ref type="bibr" target="#b15">[16]</ref>). • Projecting to the Service Manager: To manage services, it is necessary to create a central service manager (Service Locator), which will be responsible for initialization, storage, and access to various services in the application. • Design of Modular and Flexible Architecture: Each service must be designed so that it is selfsufficient and can function independently of other parts of the system. This will provide high flexibility and simplify testing and project development.</p><p>• Deployment and Updating of Services: Methods of deployment and updating of individual services should be able to update services without stopping the entire system. • Testing: Each service is designed taking into account the possibility of its testing.</p><p>Automated testing is a key element in maintaining high code quality and system stability. • In Unity, SOA can be implemented both with the help of built-in tools (for example, through MonoBehaviour components) and with the help of external libraries or frameworks. The main thing is to keep the focus on clearly defining the roles and responsibilities of each service, as well as on the flexibility and extensibility of the architecture.</p><p>Additional Considerations for SOA Design in Unity: </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7.">Creating test app based on recommended approach</head><p>First of all, we need to create two scenes: InitialScene -where we will manage the loading of the app, resolving dependencies, taking saves, and other preparing actions; MainScene (it can be level, menu, lobby scene whatever that can be after loading scene). The next step is to set up the DI container. In our case for Unity, we need to import the Zenject package. After importing we can set up Project Context, and Installers for every scene. This allows as then bind needed components and inject dependencies where we need them. Also, we need to add a SceneContext component for every scene and create and assign installers to this context. Inside these installers we can bind the Service locator to have access from any place, only need to define it with the [Inject] attribute.</p><p>Based on the previous explanations about categories Scenes are also objects and switching between them is a morphism. Switching contains a few steps (states) that we manage by StateMachine. That is why the state itself needs to contain two main methods (Fig. <ref type="figure" target="#fig_3">4</ref>) Enter() and Exit() something can happen when we go to the next state and if we exit we first need to clear memory, unsubscribe, and dispose. Sometimes we need additionally to have the ability to loop or update something inside the script for these purposes we can use other interfaces to extend our functionality. We defined states <ref type="bibr" target="#b16">[17]</ref> and separated needed logic for loading and play sessions (Fig. <ref type="figure" target="#fig_4">5</ref>). In the Bootstrap state we register all our services. Then go to the next scene through LoadLevelState. Usually, we have some stored data on the client or server, for this purpose, we can use LoadProgressState and load if exists or create new data if needed. To store data locally or on the server we can create a SaveData service and register it in the BootstrapState. Then every needed logic we as a service and use it from any place. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="8.">Conclusions</head><p>In the course of the study, the key provisions of the theory of categories were analyzed, which became the theoretical basis for the development of the application design methodology.</p><p>It was proposed to interpret the life cycle of the application as a set of states of the program, which go from one to another with the help of the "State Machine". The composition of these states can be represented as a composition of morphisms, a mapping of one state into another, which follows from the theory of categories.</p><p>The described interpretation enables a controlled scaling of the project architecture and improves the understanding of the execution of processes and logic in the application. New logic we can represent as a service and need only register it to use somewhere. This type of architecture allows us in a comfortable and faster way extend or change our logic, only by replacing the service. The next step for improvement will be to manage the realization of the services interface for example by Strategy pattern.</p><p>The proposed technique is a theoretical foundation for the development of flexible architectures of multimedia applications. It takes into account the specifics of component-oriented and serviceoriented architectural styles, as well as the peculiarities of the functioning of game engines.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: The most popular game engines in the world. Figure is taken from [1].</figDesc><graphic coords="2,79.81,208.74,433.29,191.64" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Model of the user interaction session life cycle with the application.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. Sequence of Actions to Launch an Application.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. UML Class Diagram to represent States.</figDesc><graphic coords="8,149.79,263.93,295.46,248.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 5 .</head><label>5</label><figDesc>Figure 5. Diagram of applications' states.</figDesc><graphic coords="9,72.04,72.04,451.00,289.45" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>•</head><label></label><figDesc>Performance Optimization: It's crucial to consider performance optimization when designing SOA in Unity. Profiling tools like Unity Profiler can help identify bottlenecks and ensure efficient memory and resource management. • Security: Secure communication between services, especially for network interactions, is essential. Implementing proper authentication and authorization mechanisms will help protect sensitive data. • Real-World Examples: Practical examples of SOA in Unity, such as case studies of successful implementations, can provide valuable insights and guidance. For instance, discussing a game that effectively uses SOA principles can illustrate the benefits and challenges faced during development. • Cloud Integration: Leveraging cloud services like AWS or Azure can enhance the scalability and flexibility of Unity applications. Cloud services can be used for hosting, data storage, and processing, enabling seamless scaling of services. • Service Versioning: Maintaining backward compatibility and managing updates through service versioning is vital to ensure that new updates do not disrupt existing functionality. • By incorporating these additional considerations, you can create a more comprehensive and robust guide for designing service-oriented applications in Unity.</figDesc><table /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Finding the shortest path in a graph and its visualization using C# and WPF</title>
		<author>
			<persName><forename type="first">R</forename><surname>Mavrevski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Traykov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Trenchev</surname></persName>
		</author>
		<idno type="DOI">10.11591/ijece.v10i2.pp2054-2059</idno>
	</analytic>
	<monogr>
		<title level="j">International Journal of Electrical and Computer Engineering (IJECE)</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="2054" to="2059" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Method of information obtaining from ontology on the basis of a natural language phrase analysis</title>
		<author>
			<persName><forename type="first">A</forename><surname>Litvin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Velychko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Kaverinsky</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CEUR Workshop Proceedings, CEUR-WS</title>
				<meeting><address><addrLine>Kyiv, Ukraine</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020">2020. 2020</date>
			<biblScope unit="page" from="323" to="330" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Advanced сommunication model with the voice сontrol and the increased security level</title>
		<author>
			<persName><forename type="first">S</forename><surname>Kulibaba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Popereshnyak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Shcheblanin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Kurchenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Mazur</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Cybersecurity Providing in Information and Telecommunication Systems</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<meeting><address><addrLine>Kyiv, Ukraine</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2022-10-13">2022. October 13, 2022. CPITS-2022</date>
			<biblScope unit="volume">3288</biblScope>
			<biblScope unit="page" from="64" to="72" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><surname>Ibm</surname></persName>
		</author>
		<ptr target="https://www.ibm.com/topics/soa" />
		<title level="m">What is service-oriented architecture (SOA)</title>
				<imprint>
			<date type="published" when="2024-04-03">3 April 2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Social Networks: Analysis, Algorithms and Their Implementation</title>
		<author>
			<persName><forename type="first">S</forename><surname>Popereshnyak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Yurchuk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">5th International Conference on Computational Linguistics and Intelligent Systems</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<meeting><address><addrLine>Kharkiv, Ukraine</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2021-04-22">2021. April 22-23, 2021</date>
			<biblScope unit="volume">2870</biblScope>
			<biblScope unit="page" from="811" to="821" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Mobile game development using Unity engine. Methodologies and intelligent systems for technology enhanced learning</title>
		<ptr target="https://www.researchgate.net/publication/373475694_Mobile_Game_Development_Using_Unity_Engine" />
	</analytic>
	<monogr>
		<title level="m">Workshops -13th International Conference</title>
				<imprint>
			<date type="published" when="2023-04-02">2023. 2 April 2024</date>
			<biblScope unit="page" from="129" to="138" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Natural Language-Driven Dialogue Systems for Support in Physical Medicine and Rehabilitation</title>
		<author>
			<persName><forename type="first">V</forename><surname>Kaverinsky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Malakhov</surname></persName>
		</author>
		<idno type="DOI">10.18489/sacj.v35i2.17444</idno>
		<ptr target="https://doi.org/10.18489/sacj.v35i2.17444" />
	</analytic>
	<monogr>
		<title level="j">South African Computer Journal</title>
		<imprint>
			<biblScope unit="volume">35</biblScope>
			<biblScope unit="issue">2</biblScope>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Approach to reuse of Unity game scenes</title>
		<author>
			<persName><forename type="first">O</forename><surname>Chebanyuk</surname></persName>
		</author>
		<idno type="DOI">10.1109/AEIS61544.2023.00009</idno>
	</analytic>
	<monogr>
		<title level="m">2023 International Conference on Advanced Enterprise Information System (AEIS)</title>
				<meeting><address><addrLine>London, United Kingdom</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">2023. 2023</date>
			<biblScope unit="page" from="11" to="15" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">The impact of virtual and augmented reality on the development of motor skills and coordination in children with special educational needs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Kolev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Trenchev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Traykov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Mavrevski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ivanov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">19th EAI International Conference on Computer Science and Education in Computer Science, CSECS 2023</title>
		<title level="s">Lecture Notes of the Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering (LNICST</title>
		<editor>
			<persName><forename type="first">T</forename><surname>Zlateva</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Tuparov</surname></persName>
		</editor>
		<meeting><address><addrLine>Boston, United States; Nature Switzerland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2023-06-28">2023. June 28-29, 2023</date>
			<biblScope unit="volume">514</biblScope>
			<biblScope unit="page" from="1" to="13" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">3D application development using Unity real-time platform</title>
		<author>
			<persName><forename type="first">K</forename><surname>Kishor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">K</forename><surname>Rai</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of Fourth Doctoral Symposium on Computational Intelligence</title>
				<meeting>Fourth Doctoral Symposium on Computational Intelligence</meeting>
		<imprint>
			<date type="published" when="2023">2023</date>
			<biblScope unit="page" from="665" to="675" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Using the game engine Unity efficiently in teaching: Development of a fully-automated webserver-based build pipeline</title>
		<author>
			<persName><forename type="first">P</forename><surname>Mosler</surname></persName>
		</author>
		<idno type="DOI">10.52842/conf.ecaade.2023.2.883</idno>
		<ptr target="https://doi.org/10.52842/conf.ecaade.2023.2.883" />
	</analytic>
	<monogr>
		<title level="m">eCAADe 2023: Digital Design Reconsidered</title>
				<meeting><address><addrLine>Graz, Austria</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023-09-22">2023. 20-22 September 2023. 5 April 2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">A New Approach to Automatic Ontology Generation from the Natural Language Texts with Complex Inflection Structures in the Dialogue Systems Development</title>
		<author>
			<persName><forename type="first">A</forename><surname>Litvin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Velychko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Kaverinsky</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CEUR Workshop Proceedings, CEUR-WS</title>
				<meeting><address><addrLine>Kyiv, Ukraine</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="172" to="185" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Automated System and Domain-Specific Language for Medical Data Collection and Processing</title>
		<author>
			<persName><forename type="first">O</forename><surname>Boiarskyi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Popereshnyak</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-82014-5_25</idno>
		<ptr target="https://doi.org/10.1007/978-3-030-82014-5_25" />
	</analytic>
	<monogr>
		<title level="m">Lecture Notes in Computational Intelligence and Decision Making. ISDMCI 2021</title>
		<title level="s">Lecture Notes on Data Engineering and Communications Technologies</title>
		<editor>
			<persName><forename type="first">S</forename><surname>Babichev</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">V</forename><surname>Lytvynenko</surname></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2022">2022</date>
			<biblScope unit="volume">77</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Mastering Unity: A Beginner&apos;s Guide (Mastering Computer Science</title>
		<author>
			<persName><forename type="first">S</forename><surname>Uzayr</surname></persName>
		</author>
		<author>
			<persName><surname>Bin</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2022">2022</date>
			<publisher>CRC Press</publisher>
		</imprint>
	</monogr>
	<note>1st ed</note>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<author>
			<persName><surname>Github</surname></persName>
		</author>
		<ptr target="https://github.com/modesttree/Zenject" />
		<title level="m">GitHub -modesttree/Zenject: Dependency injection framework for Unity3D</title>
				<imprint>
			<date type="published" when="2024-04-03">3 April 2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<author>
			<persName><surname>Vcontainer</surname></persName>
		</author>
		<ptr target="https://vcontainer.hadashikick.jp/" />
		<title level="m">About | VContainer</title>
				<imprint>
			<date type="published" when="2024-04-02">2 April 2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title/>
		<author>
			<persName><surname>Servicelocatorarchitecturepresentation</surname></persName>
		</author>
		<ptr target="https://youtu.be/nGHrLzqlVWg" />
		<imprint>
			<date type="published" when="2024-04-03">3 April 2024</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
