<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE article PUBLIC "-//NLM/DTD JATS (Z39.96) Journal Publishing DTD v1.2 20120330//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
    <!--<?xml-stylesheet type="text/xsl" href="article.xsl">-->
<article xmlns:ns0="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.2" xml:lang="en">
	<front>
		<journal-meta>
			<journal-id journal-id-type="issn">2303-9868</journal-id>
			<journal-id journal-id-type="eissn">2227-6017</journal-id>
			<journal-title-group>
				<journal-title>Международный научно-исследовательский журнал</journal-title>
			</journal-title-group>
			<issn pub-type="epub">2303-9868</issn>
			<publisher>
				<publisher-name>ООО Цифра</publisher-name>
			</publisher>
		</journal-meta>
		<article-meta>
			<article-id pub-id-type="doi">10.60797/IRJ.2025.162.140</article-id>
			<article-categories>
				<subj-group>
					<subject>Brief communication</subject>
				</subj-group>
			</article-categories>
			<title-group>
				<article-title>Разработка обучающей 3D-среды для формирования практических навыков конфигурации локальных сетей</article-title>
			</title-group>
			<contrib-group>
				<contrib contrib-type="author" corresp="yes">
					<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-4662-185X</contrib-id>
					<contrib-id contrib-id-type="rinc">https://elibrary.ru/author_profile.asp?id=109997</contrib-id>
					<contrib-id contrib-id-type="rid">https://publons.com/researcher/P-4966-2015</contrib-id>
					<name>
						<surname>Белашова</surname>
						<given-names>Елена Семеновна</given-names>
					</name>
					<email>bel_lena@mail.ru</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
				<contrib contrib-type="author">
					<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-0858-0575</contrib-id>
					<contrib-id contrib-id-type="rinc">https://elibrary.ru/author_profile.asp?id=838067</contrib-id>
					<name>
						<surname>Кремлева</surname>
						<given-names>Эльмира Шамильевна</given-names>
					</name>
					<email>e-smile29.04@mail.ru</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
				<contrib contrib-type="author">
					<name>
						<surname>Гашигуллин</surname>
						<given-names>Данил Айратович</given-names>
					</name>
					<email>gashigullin44@gmail.com</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
				<contrib contrib-type="author">
					<name>
						<surname>Маршалова</surname>
						<given-names>Ирина Николаевна</given-names>
					</name>
					<email>marshlovai@mail.ru</email>
					<xref ref-type="aff" rid="aff-2">2</xref>
				</contrib>
			</contrib-group>
			<aff id="aff-1">
				<label>1</label>
				<institution>Казанский национальный исследовательский технический университет им. А.Н. Туполева – КАИ</institution>
			</aff>
			<aff id="aff-2">
				<label>2</label>
				<institution>Основная общеобразовательная школа №17 имени Героя Советского Союза Н.А. Катина</institution>
			</aff>
			<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2025-12-17">
				<day>17</day>
				<month>12</month>
				<year>2025</year>
			</pub-date>
			<pub-date pub-type="collection">
				<year>2025</year>
			</pub-date>
			<volume>19</volume>
			<issue>162</issue>
			<fpage>1</fpage>
			<lpage>19</lpage>
			<history>
				<date date-type="received" iso-8601-date="2025-08-18">
					<day>18</day>
					<month>08</month>
					<year>2025</year>
				</date>
				<date date-type="accepted" iso-8601-date="2025-10-06">
					<day>06</day>
					<month>10</month>
					<year>2025</year>
				</date>
			</history>
			<permissions>
				<copyright-statement>Copyright: &amp;#x00A9; 2022 The Author(s)</copyright-statement>
				<copyright-year>2022</copyright-year>
				<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
					<license-p>
						This is an open-access article distributed under the terms of the Creative Commons Attribution 4.0 International License (CC-BY 4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited. See 
						<uri xlink:href="http://creativecommons.org/licenses/by/4.0/">http://creativecommons.org/licenses/by/4.0/</uri>
					</license-p>
					.
				</license>
			</permissions>
			<self-uri xlink:href="https://research-journal.org/archive/12-162-2025-december/10.60797/IRJ.2025.162.140"/>
			<abstract>
				<p>В статье рассматривается разработка интерактивной трехмерной платформы, направленной на обучение построению и конфигурации локальных сетей с применением игровых технологий. Использование игрового движка Unity позволило создать гибкую модульную среду, сочетающую наглядность визуализации, элементы геймификации и практико-ориентированный подход. Разработанное решение предоставляет возможность пошагового освоения теоретических знаний и практических умений, обеспечивает вовлечение пользователей и формирует устойчивые навыки работы с сетевой инфраструктурой. Практическая значимость платформы заключается в возможности её применения в образовательных учреждениях, корпоративной подготовке специалистов и самостоятельном онлайн-обучении. Представленные технические решения демонстрируют перспективность интеграции игровых технологий в процесс преподавания информационно-технологических дисциплин.</p>
			</abstract>
			<kwd-group>
				<kwd>интерактивное обучение</kwd>
				<kwd> 3D-платформа</kwd>
				<kwd> локальные сети</kwd>
				<kwd> геймификация</kwd>
				<kwd> Unity</kwd>
				<kwd> образовательные технологии</kwd>
				<kwd> сетевые симуляторы</kwd>
				<kwd> практическое обучение</kwd>
				<kwd> компьютерные сети</kwd>
				<kwd> визуализация</kwd>
				<kwd> игровые механики</kwd>
				<kwd> цифровое образование</kwd>
			</kwd-group>
		</article-meta>
	</front>
	<body>
		<sec>
			<title>HTML-content</title>
			<p>1. Введение</p>
			<p>В современном образовательном пространстве наблюдается устойчивый рост интереса к интерактивным технологиям, способным упростить освоение сложных дисциплин. Одной из таких дисциплин является построение и конфигурирование локальных сетей, играющих важную роль в деятельности современных организаций и предприятий. Однако традиционные средства обучения часто оказываются недостаточно эффективными для студентов, особенно в условиях формирования клипового мышления, когда внимание человека удерживается лишь на короткий промежуток времени и восприятие информации носит поверхностный характер. В связи с этим актуальным становится внедрение геймифицированных подходов, которые позволяют компенсировать указанные ограничения и повышают мотивацию обучающихся </p>
			<p>[1]</p>
			<p>Интерактивная трехмерная платформа представляет собой средство обучения, в котором сложные абстрактные концепции сетевого взаимодействия преобразуются в наглядные визуальные образы. Такой подход способствует реализации принципа наглядности и обеспечивает возможность поэтапного освоения материала с постепенным усложнением заданий. В результате учащиеся не только лучше понимают теоретические основы сетевых технологий, но и получают практический опыт работы с виртуальными объектами, моделирующими реальные элементы сетевой инфраструктуры. Образовательный эффект усиливается благодаря элементам игры, включающим систему вознаграждений и уровней, что стимулирует интерес и поддерживает высокий уровень вовлеченности.</p>
			<p>Для реализации подобной платформы был выбран игровой движок Unity, который предоставляет широкий спектр возможностей для создания трехмерных образовательных сред. Его применение обусловлено кроссплатформенностью, развитой экосистемой и активным сообществом разработчиков, наличием инструментов для работы с трехмерной графикой, поддержкой сетевых режимов, а также оптимизацией рабочего процесса и экономической эффективностью. Использование Unity позволяет создавать модульное программное обеспечение, расширяемое за счет добавления новых заданий и сценариев, что делает проект перспективным как в образовательной, так и в профессиональной сфере </p>
			<p>[2]</p>
			<p>В отличие от существующих решений </p>
			<p>[3][4][5][6]</p>
			<p>Практическая ценность разработанного программного обеспечения заключается в его многофункциональности. Оно может быть интегрировано в лабораторные работы для студентов информационно-технологических специальностей, использоваться в корпоративной подготовке сетевых администраторов, а также применяться в формате самостоятельного онлайн-обучения. Техническим результатом проекта является создание открытого программного продукта с модульной архитектурой, позволяющей преподавателям и специалистам адаптировать платформу под конкретные образовательные цели и расширять ее возможности. Таким образом, интерактивная трехмерная платформа становится эффективным инструментом для подготовки квалифицированных специалистов в области сетевых технологий, объединяя в себе теоретическую основу, практическую направленность и современные игровые подходы к обучению.</p>
			<p>2. Анализ существующих аналогов приложения</p>
			<p>В настоящее время для симуляции работы локальных сетей и для обучения другим IT-технологиям уже используются геймифицированные решения. Ниже рассмотрены три наиболее подходящих решений, которые можно взять как отправную точку при разработке интерактивного симулятора освоения локальных сетей.</p>
			<p>Cisco Packet Tracer — это профессиональный сетевой симулятор от компании Cisco. Его широко применяют в учебных заведениях </p>
			<p>[7]</p>
			<p>Ключевыми возможностями данного приложения являются следующие:</p>
			<p>1) поддержка всех сетевых протоколов TCP/IP;</p>
			<p>2) режим работы в реальном времени или в режиме симуляции, что позволяет анализировать обмен данными пошагово;</p>
			<p>3) кроссплатформенность;</p>
			<p>4) визуализация передачи пакетов и подробных лог взаимодействия протоколов.</p>
			<p>Из преимуществ данного приложения можно выделить следующие:</p>
			<p>1) оно позволяет обучающимся моделировать сложные сетевые конфигурации без физического оборудования;</p>
			<p>2) служит хорошей площадкой для практики командной строки и отладки реальных сценариев.</p>
			<p>Недостатки Cisco Packet Tracer:</p>
			<p>1) ориентирован на оборудование Cisco;</p>
			<p>2) в приложении полностью отсутствуют игровые механики, что может снизить пользовательской вовлеченности и мотивации;</p>
			<p>3) отсутствие интуитивно понятного интерфейса.</p>
			<fig id="F1">
				<label>Figure 1</label>
				<caption>
					<p>Интерфейс приложения Cisco Packet Tracer</p>
				</caption>
				<alt-text>Интерфейс приложения Cisco Packet Tracer</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/8161afd4-820d-4fe5-9ea7-277da4d00179.png"/>
			</fig>
			<p>Cisco Packet Tracer имеет ряд ограничений для новичков. Во-первых, минимальные возможности визуализации сетевых механизмов в трехмерном пространстве затрудняют изучение физической топологии сетей. Во-вторых, отсутствие пошагового обучения с помощью геймификации делает самообучение менее мотивирующим. В-третьих, достаточно сложный интерфейс настройки оборудований затрудняет использование приложения. Инструмент по-прежнему остается полезным при подготовке к сертификации Cisco CCNA, поскольку он точно имитирует поведение реального оборудования. Такие особенности выводят это приложение на идеальный уровень для продвинутых пользователей и создают барьеры для обучения неподготовленных новичков.[8]</p>
			<p>Из ключевых особенности данной игры можно выделить:</p>
			<p>1) реалистичная командная строка;</p>
			<p>2) интересная сюжетная линия;</p>
			<p>3) поддержка пользовательских сценариев.</p>
			<p>Преимущества:</p>
			<p>1) учёт логики работы консоли и базовых утилит Unix;</p>
			<p>2) сюжет повышает интерес и мотивацию.</p>
			<p>Недостатки:</p>
			<p>1) требует определённых навыков работы с командной строкой;</p>
			<p>2) минимальная визуализация;</p>
			<p>3) недостаток ощущения окружения из-за отсутствия 3D визуализации;</p>
			<fig id="F2">
				<label>Figure 2</label>
				<caption>
					<p>Интерфейс игры Hacknet</p>
				</caption>
				<alt-text>Интерфейс игры Hacknet</alt-text>
				<graphic ns0:href="/media/images/2025-12-18/b239582d-d34e-4562-86f2-9c54cdccfce4.png"/>
			</fig>
			<p>4) отсутствует обучение локальным сетям.[9]</p>
			<p>Ключевые особенности данной игры такие:</p>
			<p>1) визуальное программирование с помощью блок-схем;</p>
			<p>2) пошаговое введение в методы классификации, нейросети и обработку данных;</p>
			<p>3) кастомизация рабочего интерфейса;</p>
			<p>4) геймификация с юмором.</p>
			<p>Из преимуществ данной видеоигры можно выделить:</p>
			<p>1) доступность для пользователей без технических навыков;</p>
			<p>2) интуитивная визуализация сложных алгоритмов.</p>
			<p>Недостатки заключаются в следующем:</p>
			<p>1) отсутствие изучение локальных сетей;</p>
			<fig id="F3">
				<label>Figure 3</label>
				<caption>
					<p>Интерфейс игры while True: learn()</p>
				</caption>
				<alt-text>Интерфейс игры while True: learn()</alt-text>
				<graphic ns0:href="/media/images/2025-12-18/2e92c052-7724-41e2-9838-2ed569001399.png"/>
			</fig>
			<p>2) поверхностный охват тем.</p>
			<p>1) реалистичную симуляцию сетей из Cisco Packet Tracer;</p>
			<p>2) геймифицированный подход из Hacknet;</p>
			<p>3) визуальное и интуитивное обучение из while True: learn().</p>
			<p>3. Проектирование платформы</p>
			<p>Современный мир игровых технологий имеет обширное множество игровых движков. Некоторые из них пользуются популярностью, а некоторые почти неизвестны. Игровые индустрии либо используют готовые игровые движки для своих игр, либо создают собственные. Так австралийская команда разработчиков для своей очень популярной 2D видеоигры использовали готовый движок Unity. А американская организация Rockstar для своих игр создавали свой отдельный движок — RAGE Engine, что требует больших затрат ресурсов, но позволяет полностью контролировать технологию </p>
			<p>[10][11]</p>
			<p>В видеоиграх очень большую роль играет выбранный игровой движок. Как отмечает автор множества книг про программирование А.Н. Баланов, игровой движок — это программное обеспечение, которое облегчает процесс разработки видеоигр, содержащий обширный набор готовых инструментов, библиотек и ресурсов для создания игровых приложений </p>
			<p>[12][13]</p>
			<p>1) графический рендеринг;</p>
			<p>2) физический движок;</p>
			<p>3) аудиосистема;</p>
			<p>4) анимации;</p>
			<p>5) средства программирования.</p>
			<p>Индустрия разработки видеоигр сегодня предлагает широкий спектр готовых игровых движков. Каждый из них обладает своими уникальными характеристиками. Разработчики выбирают среду создания видеоигр исходя из нескольких критериев своего проекта.</p>
			<p>Для разработки своей игры был выбран игровой движок Unity 6. Unity является одной из самых популярных игровых движков в индустрии. Выбор обусловлен следующими факторами:</p>
			<p>1) кроссплатформенность;</p>
			<p>2) интегрированная среда разработки:</p>
			<p>− интуитивный редактор с визуальным построением сцен;</p>
			<p>− встроенные системы;</p>
			<p>− графические конвейеры.</p>
			<p>3) экосистема Asset Store, содержащая готовые модели игровых элементов, плагины для программирования, инструменты UI;</p>
			<p>4) язык программирования C#.</p>
			<p>Для создания пользовательского интерфейса в проекте используется UI Toolkit — встроенная в Unity технология на основе UI Document и USS (Unity Style Sheets) </p>
			<p>[14][15]</p>
			<p>1) оптимизация производительности:</p>
			<p>− работает быстрее Canvas, так как не требует постоянного перестроения интерфейса;</p>
			<p>− использует декларативный подход, аналогичный веб-разработке, что снижает нагрузку на CPU.</p>
			<p>2) Гибкость и масшатбируемость:</p>
			<p>− поддержка стилей USS, что позволяет легко менять внешний вид элементов без правки кода;</p>
			<p>− возможность динамической генерации UI через C#;</p>
			<p>− адаптация под разные разрешения экрана.</p>
			<p>Для реализации плавной и адаптируемой анимации и переходов в проекте используется пакет DOTween. Он обладает следующими особенностями:</p>
			<p>1. Производительность:</p>
			<p>− оптимизированная Tween-система, работающая быстрее стандартного Unity Lerp;</p>
			<p>− поддержка пулинга анимаций, что снижает нагрузку на Garbage Collector.</p>
			<p>2. Простота использования:</p>
			<p>− читаемый синтаксис (методы записываются цепочкой);</p>
			<p>− автоматическая обработка прерывания анимаций.</p>
			<p>3. Богатый функционал:</p>
			<p>− поддержка сложных кривых;</p>
			<p>− анимация UI-элементов;</p>
			<p>− возможность последовательных и параллельных анимаций.</p>
			<p>4. Работает на всех платформах.</p>
			<p>Игрок, заходя в игру, попадает в главное меню (рис. 4). В главном меню отображается название игры и кнопки. В зависимости от нажатой кнопки игрок может перейти к изучению материала либо к экрану выбора задания.</p>
			<fig id="F4">
				<label>Figure 4</label>
				<caption>
					<p>Главное меню</p>
				</caption>
				<alt-text>Главное меню</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/a939193b-d6c5-4915-9b61-9c459efa6af0.png"/>
			</fig>
			<p>1) главное меню;</p>
			<p>2) изучение материала;</p>
			<p>3) выбор задания (рис. 6);</p>
			<p>4) игровой процесс;</p>
			<p>5) конец задания.</p>
			<p>Начальное игровое состояние — главное меню. Оно начинается с момента входа в игру. В нем игроку предоставлены возможности перейти к экрану изучения материала, перейти к экрану выбора задания. На главном экраны находятся несколько элементов интерфейса, такие как кнопка начала игры, кнопка выбора задания, кнопка выхода из игры, название игры. При взаимодействии с кнопками игрок переходит в следующее состояние.</p>
			<p>В состоянии изучении материала на интерфейсе игрока появляется большая табличка с текстом и картинками. Игрок может листать содержимое, изучая теоретический материал, способы взаимодействия с устройствами и командами для их конфигурации. Игрок из данного состояния может вернуться в главное меню, либо перейти в состояние выбора задания.</p>
			<p>В состоянии выбора задания у игрока появляется возможность перейти к конкретному заданию. Задания отображены таблицей. Кнопка с заданием перемещает пользователя в игровую зону данного задания. В кнопке с заданием находится текст, в котором написан номер задания.</p>
			<p>Игровой процесс состоит из пространства, на котором расставлены игровые элементы. Среди них есть компьютеры и маршрутизаторы. Пользователь узнает о содержании задания из текстовой таблички, находящейся на стене. Затем пользователь настраивает устройства и выполняет задание, после чего игра переходит в следующее состояние.</p>
			<p>В состоянии конца задания игрок видит перед собой текст об успешном выполнении задания. На экране также представлена кнопка для возвращения в исходное состояние – главное меню.</p>
			<fig id="F5">
				<label>Figure 5</label>
				<caption>
					<p>Диаграмма состояний игрока</p>
				</caption>
				<alt-text>Диаграмма состояний игрока</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/f6dde248-4e15-4f98-b2e6-6f6702c728f5.png"/>
			</fig>
			<fig id="F6">
				<label>Figure 6</label>
				<caption>
					<p>Экран выбора задания</p>
				</caption>
				<alt-text>Экран выбора задания</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/91ac4f30-1a01-4180-aa51-cbfa37b36cb3.png"/>
			</fig>
			<p>Благодаря визуализации игрового процесса с помощью игровых состояний можно упростить наглядное понимание взаимодействия пользователя с миром приложения. В дальнейшем систему можно расширить, добавив дополнительные состояния, такие как настройки игры, достижения или многопользовательский режим, что сделает игровой процесс еще более разнообразным и вовлекающим.</p>
			<p>4. Программная реализация</p>
			<p>Одним из основных составляющих видеоигр является игровой персонаж (рис. 7). Игровой персонаж представляет пользователя в пространстве игры, управляется пользователем с помощью системы ввода и взаимодействует с окружением через физический движок.</p>
			<fig id="F7">
				<label>Figure 7</label>
				<caption>
					<p>Игровой персонаж</p>
				</caption>
				<alt-text>Игровой персонаж</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/d9d2328f-5373-4ee9-a4ef-b7311505b4ed.png"/>
			</fig>
			<fig id="F8">
				<label>Figure 8</label>
				<caption>
					<p>Настройка компонентов Mesh Filter и Mesh Renderer</p>
				</caption>
				<alt-text>Настройка компонентов Mesh Filter и Mesh Renderer</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/06ef1146-8656-4125-a178-5974e99ac891.png"/>
			</fig>
			<p>Для реализации игрового персонажа необходимо создать его 3D вид, а затем добавить на него необходимые компоненты. В данном проекте пользователь не видит персонажа, поэтому для него не нужны анимации и особый человеческий полигон. Исходя из этого можно упростить создание визуализации игрового персонажа [16], [17].Для того, чтобы дать персонажу любой вид, необходимо подключить к объекту в Unity определенные компоненты. Выбор 3D модели происходит в компоненте Mesh Filter. Для персонажа данной видеоигры была выбрана фигура Capsule. Таким образом, персонаж приобретает свою собственную 3D фигуру, но он пока не виден на сцене проекта. Для отображения используется другой компонент  Mesh Renderer [18], [19]. В нем есть поле, отвечающее за материал данной 3D фигуры. С помощью него был сделан желтый цвет игрового персонажа. Настройка этих двух компонентов представлена на рисунке 9.</p>
			<fig id="F9">
				<label>Figure 9</label>
				<caption>
					<p>Настройка компонента PlayerMovement</p>
				</caption>
				<alt-text>Настройка компонента PlayerMovement</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/23396335-ab5b-4bfc-981c-a50baa22e5a6.png"/>
			</fig>
			<p>Добавления визуализации мало для полноценного создания персонажа игрока. Без внедрения физики в игрового персонажа он будет всего лишь статическим игровым объектом. Для того, чтобы игрок мог передвигаться и прыгать в пространстве, в Unity существуют специальные физические компоненты. В данном проекте использованы Rigidbody и CapsuleCollider. Rigidbody отвечает за физические свойства объекта, например гравитация, а CapsuleCollider отвечает за границу соприкосновения игрока с пространством. Перемещение персонажа реализовано в классе PlayerMovement (рис. 10).</p>
			<p>Начальное состояние, в котором может находиться игрок — это состояние ходьбы (листинг 1). В этом состоянии игрока передвигается с минимальной скоростью, пока не столкнется с другим объектом. В методе Update вызывается MovePlayer(), в котором считывается нажатие пользователем клавиш WASD. Считывание клавиш происходит благодаря классу Input и методу GetAxis-Raw(string axisName). Этот метод отличается от GetAxis(string axisName) тем, что в нем отсутствует сглаживание движения, из-за чего после прекращения нажатия клавиши игрок немного продолжал своё движение. Чтобы считывать именно клавиши клавиатура необходимо указать в переменной axisName оси Horizontal и Vertical. Оптимизация перемещения персонажа в игровом пространстве достигается с помощью следующих факторов:</p>
			<p>1) минимальные вычисления в Update();</p>
			<p>2) отсутствие физических расчетов через Rigidbody для простых сцен;</p>
			<p>3) подготовка к легкому расширению (бег, усталость и т.д.).</p>
			<p>Листинг 1 — Реализация ходьбы персонажа в классе PlayerMovement</p>
			<p>При нажатии клавиши Shift игрок переходил в следующее состояние под названием бег (листинг 2). При активации этого состояния вызывается метод SprintEnable(), который вызывает SetSprint(bool state) со значением true. Когда пользователь перестает нажимать клавишу, вызывается метод SprintDisable(), который вызывает SetSprint(bool state) со значением false. В зависимости от передаваемого bool значения, скорость игрока меняется либо на значение скорости при беге, либо на значение скорости при ходьбе.</p>
			<p>Листинг 2 – Реализация бега персонажа в классе PlayerMovement</p>
			<p>Также игрок может находиться в состоянии прыжка. Данное состояние вызывается нажатием клавиши Space либо при ходьбе, либо при беге. Данное состояние реализуется в методе Jump() при помощи компонента Rigidbody и метода AddForce(). Этот метод запускает объект в указанном направлении с указанной силой. Чтобы игрок не имел возможности прыгать бесконечное количество раз, преодолевая верхнюю границу игрового пространства, метод Jump переключает флаг _isJumpingAllowed в значение false, чтобы нажатия на клавишу Space больше на считывались. Чтобы переключить этот флаг обратно в значение true, был реализован метод bool IsGrounded. Он использует физику объекта, запуская луч задаваемой длины от игрока по направлению вниз. Если луч задевает объект, то метод IsGrounded возвращает значение true, возвращая флаг в исходное состояние.</p>
			<p>В видеоиграх при создании игрового объекта также добавляют ему возможность осматриваться вокруг себя. Для реализации этого функционала необходимо добавить камеру к объекту персонажа. Движение камеры реализовано в методе LookAround() (листинг 3), который вызывается из метода Update. Этот метод считывает перемещение курсора на экране с помощью метод Input.GetAxisRaw(string axisName). Если для перемещения персонажа необходимо было писать оси Horizontal и Vertical, то в данном случае необходимо указывать оси Mouse X и Mouse Y. Затем после считывания значение перемещения умножается на значение чувствительности мыши, задаваемой в инспекторе Unity, и на значение разности времени Time.deltaTime </p>
			<p>[20]</p>
			<p>Листинг 3 – Реализация вращения камеры в классе PlayerMovement</p>
			<fig id="F10">
				<label>Figure 10</label>
				<caption>
					<p>Переменные и функции класса PlayerInterfaceManager</p>
				</caption>
				<alt-text>Переменные и функции класса PlayerInterfaceManager</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/ac2994ff-4d9c-41ba-83d6-ddfb1321e805.png"/>
			</fig>
			<p>Игровой персонаж, перемещаясь по полю может взаимодействовать с различными устройствами, чтобы выполнять задания. С целью интуитивного понимания игрового процесса, был реализован пользовательский интерфейс в классе PlayerInterfaceManager. Интерфейс реализован с помощью встроенного в Unity редактора UI Toolkit. Этот мощный инструмент схож с HTML и CSS. Пользовательский интерфейс содержит в себе небольшую табличку, в которой пишется текст. Табличка может адаптироваться под текст, чтобы отступ между текстом оставался постоянным, а значит случаев, когда текст выходит за рамки таблички возникать не будет. Данный класс содержит в себе публичные функции для взаимодействия с интерфейсом. С помощью функций можно выключить или включить интерфейс, задать текст в табличке, убрать часть текста или убрать его целиком. Переменные и функции класса PlayerInterfaceManager можно посмотреть на рисунке 11.</p>
			<p>Листинг 4 – Присвоение значений визуальным элементам интерфейса</p>
			<p>Для добавления текста в табличку другие классы обращаются к методу SetHoverBoxText(string text), передавая значение, которое необходимо вставить в нее. Перед добавлением переданного текста метод проверяет, не дублируется ли он в уже существующем тексте. В случае нахождения дубликатов метод завершает работу, не добавив переданной переменной text. Полный код данного метода можно посмотреть в листинге 5.</p>
			<p>Листинг 5 – Метод SetHoverBoxText(string text)</p>
			<p>Помимо добавления текста, другие классы могут и убрать текст, используя метод RemoveHoverBoxTextClean(string textToRemove). Этот метод использует регулярные выражения для точного удаления. Благодаря регулярным выражениям в тексте не остается лишних переносов строки и символов. Реализация метода удаления текста показана в листинге 6.</p>
			<p>Листинг 6 – Метод RemoveHoverBoxTextClean(string textToRemove)</p>
			<fig id="F11">
				<label>Figure 11</label>
				<caption>
					<p>Зависимость классов интерфейса и движения от PlayerController</p>
				</caption>
				<alt-text>Зависимость классов интерфейса и движения от PlayerController</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/27c5b80a-3c0e-473b-b40a-de0c073d0118.png"/>
			</fig>
			<fig id="F12">
				<label>Figure 12</label>
				<caption>
					<p>Переменные и методы класса PlayerController</p>
				</caption>
				<alt-text>Переменные и методы класса PlayerController</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/46106543-d8e4-4465-a512-68d75c7086fc.png"/>
			</fig>
			<p>Реализованные классы управления игровым персонажем и пользовательским интерфейсом управляются главным классом (рис. 12). Класс PlayerController представляет собой главный мозг и переключатель состояний персонажа. В нем содержится большое количество переменных, слушателей и методов (рис. 13).</p>
			<p>Начальным состоянием является AbleToMove. Исходя из названия можно понять, что это состояние, в котором игрок может свободно перемещаться, не находясь в процессе взаимодействия с окружающими устройствами. Находясь в этом состоянии в методе stateListener() вызываются следующие функции:</p>
			<p>1) разрешение движения персонажа;</p>
			<p>2) выключение интерфейса маршрутизатора;</p>
			<p>3) выключение интерфейса компьютера;</p>
			<p>4) блокировка позиции курсора;</p>
			<p>5) установка спрятанного режима видимости курсора;</p>
			<p>6) удаление из интерфейса пользователя строк, которые могли остаться после взаимодействия с устройствами.</p>
			<fig id="F13">
				<label>Figure 13</label>
				<caption>
					<p>Демонстрация пользовательского интерфейса и игрового пространства в режиме подключения устройств к маршрутизатору</p>
				</caption>
				<alt-text>Демонстрация пользовательского интерфейса и игрового пространства в режиме подключения устройств к маршрутизатору</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/56cd4862-6947-4c1e-89d2-387d976def89.png"/>
			</fig>
			<p>В состоянии AbleToMove пользователь может перейти в 3 различных состояния. Первым из них является подключение и отключение устройств к маршрутизатору  AssigningRouter (рис. 14). При активации этого метода маршрутизатор, с которым взаимодействовал игрок загорается зеленым цветом, а подключенные устройства загораются синим. В этом режиме ставится блокировка на переход в режим конфигурации устройств. В нем разрешено только подключение и отключение устройств к выбранному маршрутизатору.</p>
			<p>Для считывания нажатий на компьютерную мышь используется метод checkClicks, вызываемый в Update. Этот метод создает луч, исходящий от игрока по направлению центра экрана. При столкновении данного луча с объектом сначала проверяется флаг _routerAssigningModeComputerClicksOnly. Этот флаг принимает значение true в рассматриваемом состоянии AssigningRouter. С помощью данного флага, при нажатии на левую кнопку мыши, проверяются только объекты, тэг которых либо ComputerAccessZone, либо RouterAssignZone. Все остальные объект пропускаются. Это было сделано для того, чтобы назначать текущему маршрутизатору компьютеры и другие маршрутизаторы. Из состояния AssigningRouter можно перейти только в состояние AbleToMove при помощи нажатия на клавишу Escape.</p>
			<p>Пользователь для настройки устройств в локальной сети взаимодействует с ними. Одно из устройств, с которым взаимодействует игрок – это компьютер. Чтобы с начать его настройку необходимо нажать левую кнопку мыши. Сам игрок перейдет в состояние настройки компьютера под названием UsingComputer. В момент перехода в данное состояние метод stateListener() выполняет следующие команды:</p>
			<p>1) остановка движения игрока;</p>
			<p>2) перевод курсора в видимый режим</p>
			<p>3) отключение блокировки позиции курсора;</p>
			<p>4) отключение режима задания устройств маршрутизатору</p>
			<p>5) установка таблички подсказок в видимый режим;</p>
			<p>6) удаление из таблички подсказок лишних текстов;</p>
			<p>7) добавление в табличку подсказок инструкцию выхода из данного состояния.</p>
			<p>Как и было сказано ранее в рассматриваемом состоянии пользовал находится в режиме настройки компьютера. В нем игрок не может перемещаться, прыгать и взаимодействовать с другими объектами и устройствами данного игрового пространства. Пользователь может только взаимодействовать с интерфейсом компьютера.</p>
			<p>Похожим состоянием на UsingComputer является UsingRouter. В нем метод stateListener() выполняет те же функции, но вместо интерфейса компьютера взаимодействует с интерфейсом маршрутизатора. Пользователь из данных двух состояний может перейти обратно в состояние AbleToMove нажав кнопку, указанную в табличке подсказок в левом нижнем угле экрана. Таким образом, система состояний UsingComputer и UsingRouter обеспечивает последовательное взаимодействие пользователя с сетевым оборудованием, исключая возможность случайных действий вне текущего интерфейса настройки.</p>
			<fig id="F14">
				<label>Figure 14</label>
				<caption>
					<p>Пример настройки компонента ComputerController</p>
				</caption>
				<alt-text>Пример настройки компонента ComputerController</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/b0945949-22ba-4c62-953c-512c7439218e.png"/>
			</fig>
			<p>Одним из ключевых устройств данного проекта, с которым может взаимодействовать игрок  компьютер. Основной класс, который отвечает за установленные параметры для сети, за интерфейс и остальное, что связано именно с конкретным компьютером, называется ComputerController. Данный класс добавляется в качестве компонента к объекту компьютера на сцене. Пример настройки данного компонента представлен на рисунке 15.</p>
			<p>Следующая секция отвечает за камеру, которая включается при переходе в состояния UsingComputer. Чтобы включить камеру, пользователь должен нажать на компьютер. После нажатия в ComputerController вызывается метод, который считывает изначальную позицию камеры игрока, перемещает камеру компьютера в данную позицию, а затем благодаря пакету DOTween плавно пе-ремещает активную камеру к компьютеру, создавая эффект приближения.</p>
			<p>Секции State и StartParameters отвечают за установку начальных значений. Переменная currentState отвечает за состояния компьютера и может быть равна значению «включен» либо «выключен». За включение и выключение компьютера отвечает кнопка, находящаяся на интерфейсе компьютера в правой нижней части его экрана.</p>
			<fig id="F15">
				<label>Figure 15</label>
				<caption>
					<p>Пример интерфейса компьютера</p>
				</caption>
				<alt-text>Пример интерфейса компьютера</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/164a0af1-6290-44d6-98cd-4395887d4738.png"/>
			</fig>
			<p>У каждого компьютера есть своя зона, при нажатии на которую пользователь подключается к его интерфейсу. Данная зона отмечена тэгом ComputerAccessZone. После нажатия на данную зону игрок переходит в состояние UsingComputer, камера перемещается ближе к компьютеру, а когда действие закончится, включается интерфейс. Пример интерфейса компьютера представлен на рисунке 16.</p>
			<p>1) кнопка включения или выключения компьютера: первый элемент, с которым может взаимодействовать пользователь, изменяющий текущее состояние на обратное, то есть с состояния «включен» компьютер переходит в «выключен» и наоборот;</p>
			<p>2) текущее состояния, указывающее включен или выключен в данный момент компьютер;</p>
			<p>3) IP-адрес: данное поле указывает установленный в текущий момент адрес в сети данного компьютера;</p>
			<p>4) консоль вывода: в этой консоли выводится ответ обработчика команд;</p>
			<p>5) консоль ввода: второй элемент интерфейса компьютера, с которым может взаимодействовать пользователь (в данном поле игрок вводит команды).</p>
			<p>Класс ComputerController также содержит в себе методы, которые необходимы для выполнения условий задания. Одним из главных факторов выполнения задания — команда ping. В данном классе за это действие отвечает метод TryPing(string ip). Данный метод имеет тип значения bool. Если компьютер не подключен ни к одному маршрутизатору или компьютер не имеет своего собственного IP-адреса в сети, то метод возвращает значение false. При подключенном маршрутизаторе и наличии своего адреса, метод начинает проверку наличия переданного IP-адреса в подключенном роутере. После проверки возвращается значение true или false в зависимости от полученного значения проверки доступности.</p>
			<p>За интерфейс компьютера отвечает класс PCInterfaceManager. Данный класс содержит в себе большое количество методов и проверок, которые необходимы для обеспечения правильности выполнения работы команд, действий и других взаимодействий с ним. Запуск интерфейса происходит из метода SetupInterface(), находящемся в классе ComputerController. Этот метод вызывает SetAndActivateInterface(ComputerController cc), передавая себя в качестве аргумента. Суть данного метода заключается в следующем:</p>
			<p>1) переменным, отвечающим за визуальные элементы, задаются соответствующие элементы интерфейса;</p>
			<p>2) переменной, отвечающей за хранение текущего используемого компьютера, задается текущий компьютер;</p>
			<p>3) текущей консоли вывода задается хранящаяся в классе ComputerController история консоли компьютера;</p>
			<p>4) кнопке включения и выключения задается функция, которая выполняет соответствующую функцию;</p>
			<p>5) на событие нажатия клавиши Enter при использовании консоли ввода задается функция, отвечающая за обработку введенных пользователем команд.</p>
			<p>Главным обработчиком команд, вводимых в компьютерный интерфейс, является класс PCInterfaceManager. Всего есть две команды, которые можно ввести в консоль:</p>
			<p>1) set-ip;</p>
			<p>2) ping.</p>
			<p>После подтверждения команды, она разделяется на части, используя в качестве разделителя пробел. В текущую консоль вывода выводится запись User, а рядом прописывается введенная команда. Дальнейшая проверка не начинается, если введенная строка пустая.</p>
			<p>Первая команда отвечает за установку IP-адреса используемому компьютеру. Чтобы задать этот адрес, необходимо написать данную команду, а рядом прописать желаемый адрес для компьютера. Перед установкой проверяется разрешение изменения адреса компьютера. На компьютере можно включить флаг, который заблокирует доступ изменению его адреса. Это необходимо для заданий, где адрес либо задан изначально и не должен изменяться, либо где адрес задается другим способом. Если проверка разрешения вернула успешный результат, проверяется было ли введено две части. Если проверка не прошла, в консоль выводится сообщение, которое информирует о неправильном вводе, показывая формат корректного ввода команды. При успешном прохождения каждой проверки вызывается метод SetIpAddress(string ip) в PCInterfaceManager. Адрес обязан быть в корректном формате виде *.*.*.*, где звезда означает любое число от 0 до 255 включительно. Если всё введено верно, то текущему компьютеру задается адрес, соответствующее сообщение выводится в консоль.</p>
			<p>Вторая команда проверяет доступность передаваемого адреса компьютера. Команда ping проверяется аналогично команде set-ip, но в ней нет проверки разрешения замены IP-адреса компьютера в виду отсутствия необходимости в этом. При прохождении проверок корректности ввода команды вызывается метод Ping(string ip). Код данного метода представлен в листинге 7.</p>
			<p>Листинг 7 – Работа метода проверки доступности компьютера</p>
			<p>Данный метод изначально проверяет доступность компьютера, сохраняя конечный результат. В зависимости от результата выводится либо задержка соединения, либо ответ о недоступности адресата. Также есть зависимость от IP-адреса. Если адрес адресата совпадает с адресом отправителя, то задержка равно нулю, иначе 32 мс.</p>
			<p>Следующим ключевым устройством в локальной сети данной видеоигры является маршрутизатор. Маршрутизаторы используются для подключения компьютеров к одной сети. Также маршрутизаторы могут объединять несколько подсетей, образуя одну большую.</p>
			<fig id="F16">
				<label>Figure 16</label>
				<caption>
					<p>Пример настройки класса RouterController</p>
				</caption>
				<alt-text>Пример настройки класса RouterController</alt-text>
				<graphic ns0:href="/media/images/2025-10-10/92ccd2fa-d215-4553-b669-d2fd8e47b4b1.png"/>
			</fig>
			<p>В данной игре маршрутизатор реализован как сложная система, состоящая из трёх ключевых взаимосвязанных классов. Два из этих классов добавляются в объект маршрутизатора в качестве компонентов. Основным классом, отвечающий за хранение ключевых параметров для маршрутизатора является класс RouterController (рис. 17).</p>
			<p>Для маршрутизатора реализованы следующие настройки:</p>
			<p>1) IP-адрес: данная переменная отвечает за установленный адрес данного маршрутизатора в подсети;</p>
			<p>2) Mask: эта переменная устанавливает маску, с помощью которой проверяется принадлежность введенного IP-адреса к подсети;</p>
			<p>3) Enable RIP: флаг включение RIP отвечает за автоматическую настройку и обновление таблицы маршрутизаций;</p>
			<p>4) RIP Interval: значение данной переменной устанавливает временной промежуток, прохождение которого вызывает метод для обновления таблицы маршрутизаций.</p>
			<p>Для того чтобы пользователь взаимодействовал с маршрутизатором помимо режима, когда он может подключать или отключать от него устройства, был реализован интерфейс, с которым игрок может взаимодействовать. Управлением этого интерфейса занимается класс RouterInterfaceManager. Его задача заключается в обработке команд пользователя и выводе информации на экран. Метод, включающий данный интерфейс, вызывается из RouterController.</p>
			<p>5. Заключение</p>
			<p>Разработанная интерактивная 3D-платформа демонстрирует высокий потенциал в области обучения построению и конфигурации локальных сетей, объединяя в себе современные игровые механики, визуализацию и практико-ориентированный подход. Использование геймификации и трехмерной среды позволяет преодолеть ограниченность традиционных методик, делая процесс обучения наглядным, увлекательным и мотивирующим. Платформа обеспечивает не только постепенное освоение теоретического материала, но и формирование устойчивых практических навыков, необходимых для будущей профессиональной деятельности.</p>
			<p>Практическая значимость решения заключается в его универсальности: продукт может применяться как в образовательных учреждениях при подготовке студентов технических специальностей, так и в системе корпоративного обучения, а также в формате самостоятельного онлайн-образования. Модульная архитектура и гибкость реализации открывают возможности для дальнейшего расширения функционала, интеграции новых сценариев и адаптации под конкретные цели.</p>
			<p>Перспективы развития проекта связаны с внедрением многопользовательского режима, который позволит реализовать сетевые взаимодействия между несколькими участниками в реальном времени, расширением набора учебных заданий и уровней сложности, а также использованием технологий виртуальной и дополненной реальности для усиления эффекта погружения. Существенным направлением совершенствования может стать интеграция интеллектуальных подсказок и автоматизированной оценки действий пользователей на основе методов искусственного интеллекта, что повысит персонализацию и эффективность образовательного процесса. В долгосрочной перспективе подобные системы способны трансформировать практику преподавания сетевых технологий, обеспечив баланс между теорией, практикой и игровыми элементами, что будет способствовать подготовке специалистов нового поколения, ориентированных на работу в цифровой среде.</p>
		</sec>
		<sec sec-type="supplementary-material">
			<title>Additional File</title>
			<p>The additional file for this article can be found as follows:</p>
			<supplementary-material xmlns:xlink="http://www.w3.org/1999/xlink" id="S1" xlink:href="https://doi.org/10.5334/cpsy.78.s1">
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://research-journal.org/media/articles/21114.docx">21114.docx</inline-supplementary-material>]-->
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://research-journal.org/media/articles/21114.pdf">21114.pdf</inline-supplementary-material>]-->
				<label>Online Supplementary Material</label>
				<caption>
					<p>
						Further description of analytic pipeline and patient demographic information. DOI:
						<italic>
							<uri>https://doi.org/10.60797/IRJ.2025.162.140</uri>
						</italic>
					</p>
				</caption>
			</supplementary-material>
		</sec>
	</body>
	<back>
		<ack>
			<title>Acknowledgements</title>
			<p/>
		</ack>
		<sec>
			<title>Competing Interests</title>
			<p/>
		</sec>
		<ref-list>
			<ref id="B1">
				<label>1</label>
				<mixed-citation publication-type="confproc">Джанхуватова З.С. Повышение эффективности обучения в рамках проблемы «клипового мышления» и познавательно-творческой деятельности студентов / З.С. Джанхуватова, Г.Н. Арстанова // Известия Балтийской государственной академии рыбопромыслового флота: психолого-педагогические науки. — 2018. — № 4 (46). — С. 85–89.</mixed-citation>
			</ref>
			<ref id="B2">
				<label>2</label>
				<mixed-citation publication-type="confproc">Ларченко Ю.Г. Игровые технологии в дополнительном профессиональном образовании / Ю.Г. Ларченко // Современные исследования социальных проблем. — 2015. — № 1 (21). — С. 195–200.</mixed-citation>
			</ref>
			<ref id="B3">
				<label>3</label>
				<mixed-citation publication-type="confproc">Армеев Д.В. Виртуальный доступ к обучающим средам / Д.В. Армеев, В.И. Гужов // Открытое и дистанционное образование. — 2008. — № 4 (32). — С. 34–36.</mixed-citation>
			</ref>
			<ref id="B4">
				<label>4</label>
				<mixed-citation publication-type="confproc">Свиридов А.П. Методика обучения и интерпретации нейронной сети для компьютерного контроля знаний / А.П. Свиридов, А.М. Титов // Нейрокомпьютеры: разработка, применение. — 2009. — № 8. — С. 63–68.</mixed-citation>
			</ref>
			<ref id="B5">
				<label>5</label>
				<mixed-citation publication-type="confproc">Бойко А.В. Возможности локальной компьютерной сети в организации индивидуализированного обучения / А.В. Бойко, А.В. Боронин // Педагогический университетский вестник Алтая. — 2001. — № 1. — С. 124–127.</mixed-citation>
			</ref>
			<ref id="B6">
				<label>6</label>
				<mixed-citation publication-type="confproc">Гамула Д.С. Цифровой двойник лабораторного стенда по изучению автоматических регуляторов и типовых законов регулирования / Д.С. Гамула, М.Ю. Перухин, Р.Ф. Гибадуллин // Международный научно-исследовательский журнал. — 2024. — № 10 (148). — DOI: 10.60797/IRJ.2024.148.151.</mixed-citation>
			</ref>
			<ref id="B7">
				<label>7</label>
				<mixed-citation publication-type="confproc">Ренев Р.О. Виртуальные локальные сети и маршрутизация между ними / Р.О. Ренев // Спецтехника и связь. — 2012. — № 3. — С. 41–44.</mixed-citation>
			</ref>
			<ref id="B8">
				<label>8</label>
				<mixed-citation publication-type="confproc">Яремчук С. Файловые системы пространства пользователя / С. Яремчук // Системный администратор. — 2005. — № 6 (31). — С. 40–43.</mixed-citation>
			</ref>
			<ref id="B9">
				<label>9</label>
				<mixed-citation publication-type="confproc">Боровиков А.В. Компьютеризация образования / А.В. Боровиков, А.Э. Назиров // Современное образование: содержание, технологии, качество. — 2009. — Т. 1. — С. 77–79.</mixed-citation>
			</ref>
			<ref id="B10">
				<label>10</label>
				<mixed-citation publication-type="confproc">Лазарева О.Ю. Обзор современных игровых движков / О.Ю. Лазарева, А.В. Санина // Вестник Воронежского института высоких технологий. — 2018. — № 4 (27). — С. 29–32.</mixed-citation>
			</ref>
			<ref id="B11">
				<label>11</label>
				<mixed-citation publication-type="confproc">Кушнир Н.В. Базовое программное обеспечение разработки компьютерных видеоигр. Игровые движки / Н.В. Кушнир, К.А. Будников, С.Э. Ирхин [и др.] // Электронный сетевой политематический журнал «Научные труды КубГТУ». — 2020. — № 2. — С. 11–24.</mixed-citation>
			</ref>
			<ref id="B12">
				<label>12</label>
				<mixed-citation publication-type="confproc">Данилюк М.Д. Разработка видеоигр: проблемы современных исследований / М.Д. Данилюк, Ю.Ф. Шпаковский // Труды БГТУ. Серия 4: Принт- и медиатехнологии. — 2017. — № 1 (195). — С. 118–122.</mixed-citation>
			</ref>
			<ref id="B13">
				<label>13</label>
				<mixed-citation publication-type="confproc">Саносян Р.А. Комплексный подход к разработке видеоигр: от концепции до реализации / Р.А. Саносян, А.Л. Титова, А.П. Куцый // Молодая наука Сибири. — 2024. — № 3 (25). — С. 79–82.</mixed-citation>
			</ref>
			<ref id="B14">
				<label>14</label>
				<mixed-citation publication-type="confproc">Андреева Е.Г. Обзор методов проектирования пользовательского интерфейса / Е.Г. Андреева // Молодежный научно-технический вестник. — 2016. — № 10. — С. 28.</mixed-citation>
			</ref>
			<ref id="B15">
				<label>15</label>
				<mixed-citation publication-type="confproc">Иванов А.В. Компьютерная графика и процесс проектирования / А.В. Иванов, Л.В. Ремонтова, Е.Ю. Юдина [et al.] // Современные информационные технологии. — 2004. — № S2. — С. 260–261.</mixed-citation>
			</ref>
			<ref id="B16">
				<label>16</label>
				<mixed-citation publication-type="confproc">Шавтикова Л.М. Применение компьютерного моделирования при создании персонажей / Л.М. Шавтикова, А.В. Левченко // Тенденции развития науки и образования. — 2021. — № 80-3. — С. 6–8. — DOI: 10.18411/trnio-12-2021-108.</mixed-citation>
			</ref>
			<ref id="B17">
				<label>17</label>
				<mixed-citation publication-type="confproc">Корнейчук А.В. Разработка и анимация трехмерной модели персонажа для компьютерной игры / А.В. Корнейчук, Е.А. Глибко, М.А. Максимова // Теория и практика дизайна. — 2016. — № 10. — С. 70–77.</mixed-citation>
			</ref>
			<ref id="B18">
				<label>18</label>
				<mixed-citation publication-type="confproc">Батчаева З.Б. 3D моделирование / З.Б. Батчаева, М.Х. Чомаева // Тенденции развития науки и образования. — 2022. — № 90-3. — С. 78–80. — DOI: 10.18411/trnio-10-2022-122.</mixed-citation>
			</ref>
			<ref id="B19">
				<label>19</label>
				<mixed-citation publication-type="confproc">Шорохов В.Д. 3D графика в проектировании / В.Д. Шорохов, Д.В. Гулякин // Тенденции развития науки и образования. — 2023. — № 102-6. — С. 175–179. — DOI: 10.18411/trnio-10-2023-358.</mixed-citation>
			</ref>
			<ref id="B20">
				<label>20</label>
				<mixed-citation publication-type="confproc">Русанова Я.М. Некоторые проблемы визуализации трехмерных сцен в реальном времени / Я.М. Русанова, М.И. Чердынцева // Прикладная информатика. — 2008. — № 6 (18). — С. 78–86.</mixed-citation>
			</ref>
		</ref-list>
	</back>
	<fundings/>
</article>