The subject of this article is the development of a behavior pattern with AI elements for an opponent bot in the single-player game Steal Tower. The essence of which is to collect resources to build a tower faster than opponents. To create the illusion that the same people are playing against the player, an imitation stochastic model based on the Monte Carlo method for Markov chains has been developed. Based on the results of its tests, balanced system parameters were determined, which are embedded in the behavioral pattern of the bot, which is implemented using the Enum AIStates enumeration consisting of five states: Idle (inactivity), GoTo (movement) and GoToWarehouse (return to the warehouse), Win (victory), Loose (scoring). Each of them has developed functions for the optimal behavior of the bot given in the article. So for the GoTo state, functions have been created that analyze the benefits of different types of behavior: steal or collect, or walk to the warehouse or to the tower.
Keywords: game intelligence, behavioral pattern, live world emulation, bot behavior scenario, state structure, Markov chains, Monte Carlo method, simulation model, Unity environment, C# language
A programming method based on the ESC pattern is presented. The relevance of the work is due to the fact that the object-oriented approach is one of the most popular and sought-after ways to develop an information product due to a huge regularly updated selection of various methods, templates and ways of its implementation. The most significant of them is Entity System Component (ESC). This method of implementing OOP allows you to make the software product flexible and extensible. The ESC pattern is based on the reactive programming method and divides the entire code architecture into three components: entity, system, component. The tool package that implements the ESC pattern is the ESC DOTS package, designed for the Unity3D environment. The built-in Jobs System package provides the ability to work with multi-threaded programming in Unity. This package distributes threads created at runtime into groups of a certain type, which have a strictly limited execution time. Thus, the task of enumerating an array of several hundred elements goes into a Temp type thread, which runs for one frame in Unity, and the enumeration of a million polygons of the Unity landscape is placed in a Persistent type thread, which has an unlimited time limit.
Keywords: object-oriented programming, Unity framework, ESC pattern, multi-threaded programming, reactive programming, extensible architecture, package manager
The algorithm and code listing of the developed self-learning chatbot are presented. Able to maintain a conversation with the user, switch to training mode in the absence of the necessary information, analyze the context of the conversation for "forbidden" words. The Trim function is used, which removes extraneous characters represented in the tr property. And also an additional option "Solve arithmetic problems" is implemented in case of a request from the user. When implementing the latter option, a recursive descent algorithm based on three nested recursive functions was used, while the binary tree is filled in. A function has been developed to divide the incoming string into tokens. The chatbot code is developed in C++/C# based on the principles of object-oriented programming with the development of classes.
Keywords: artificial intelligence, machine learning, voice assistant chatbot, learning mode, tokens, recursive descent, binary tree
The virtual simulator of the car inspector is considered. A distinctive feature of this project is that a visual programming editor was developed specifically for this simulator with a set of necessary functionality for developing other virtual simulators. The editor is designed for the Unity3D engine . The editor's functionality has been scaled and expanded, and new vertexes have been added to the developed system. The animation processing algorithm was used and new classes were created. The resulting vertexes are combined into a chain and their performance is checked.
Keywords: virtual simulator, visual programming editor, car inspector, Unity3D engine, Collider
Dynamic norms for random and directed mutations in a genetic algorithm for solving the problem of placing elements in an orthonormal lattice have been developed. The principle of these norms is borrowed from the method of imitation annealing. The probability of using random mutations decreases in accordance with the annealing temperature, and the probability of directional mutations increases from iteration to iteration when approaching the optimum.
Keywords: genetic algorithm, the task of placing the elements, the annealing method, random mutations, directed deterministic mutations