Files
ogs-site/ru/news/index2.html

243 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<link rel="stylesheet" href="../../style.css">
</head>
<body>
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
<div id="header">
<div class="header2">
<div class="menu">
<a href="../../ru/news/index.html">Новости</a>
<a href="../../ru/game/index.html">Игры</a>
<a href="../../ru/tool/index.html">Инструменты</a>
<a href="../../ru/page/about.html">О нас</a>
</div>
<div id="lang">
<a href="../../en/news/index2.html">EN</a>
<a href="../../ru/news/index2.html">RU</a>
</div>
<div class="clear"></div>
</div>
</div>
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="ht-sound.html">Звук и поиск нового курса</a>
</h2>
<p class="news_item_date">
2024-10-11 00:00
</p>
<div class="news_item_contents">
<h1 id="">Звук</h1>
<video controls width="700">
<source src="../../images/2024_sound.mp4" type="video/mp4"/>
</video>
<p>К середине сентября добавил поддержку звука, однако, на этом
проект двумерной приключенческой игры «Хвост и тень» остановился, т.к.
из проекта ушёл идейный вдохновитель Женя.</p>
<h1 id="-1">Поиск нового курса</h1>
<p>В сентябре я заметил падение интереса к проекту и со стороны подписчиков.
Объяснил я это себе тем, что результат функционально и графически не соответствует
ожиданиям аудитории.</p>
<p>Поэтому решил проверить пару вариантов оживления проекта:. . .</p>
</div>
<div class="news_item_more">
<a href="ht-sound.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="ht-scenes.html">Переключение сцен</a>
</h2>
<p class="news_item_date">
2024-09-06 00:00
</p>
<div class="news_item_contents">
<h1 id="">Август</h1>
<video controls width="700">
<source src="../../images/2024_scenes.mp4" type="video/mp4"/>
</video>
<p>В августе сделал переключение сцен, после чего стало возможно следующее:</p>
<ul>
<li>при нажатии в заставке кнопки «Начать игру» переходить к уровню с тремя этажами</li>
<li>при выборе двери переходить на другой этаж</li>
<li>при выборе телевизора переходить к переключению каналов</li>
<li>при переключении каналов менять изображение в телевизоре</li>
</ul>
<p>Таким образом, сцены хорошо решают вопросы как фокусирования на предметах,. . .</p>
</div>
<div class="news_item_more">
<a href="ht-scenes.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="rethinking.html">Переосмысление</a>
</h2>
<p class="news_item_date">
2024-08-12 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2024_rethinking.jpg" alt="Игра" /></p>
<p>По планам за июль я должен был доработать инструмент для трансляцию кода из
Python в JavaScript. Этого не произошло, потому что появились более
приоритетные задачи.</p>
<p>Какая задача может быть приоритетнее разработки инструмента? Разработка
игры, конечно же! Итак, возвращаемся в начало июля 2024-го года…</p>
<h1 id="">Геймджем</h1>
<p>В начале июля 2024-го года закончился трёхдневный геймджем от
<a href="https://dtf.ru/games/2783053-nachni-igru-ocenka-videorolikov">«Начни игру»</a>, в котором я участвовал. Целью моего участия в
геймджеме было как проверить свои игровые наработки в условиях,. . .</p>
</div>
<div class="news_item_more">
<a href="rethinking.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="memory-gui.html">Графический интерфейс «Памяти»</a>
</h2>
<p class="news_item_date">
2024-07-04 00:00
</p>
<div class="news_item_contents">
<h1 id="">Графический интерфейс «Памяти»</h1>
<p>В июне реализовал графический интерфейс игры «Память» на Python с помощью <a href="https://arcade.academy">Python Arcade</a>.</p>
<p>В ходе поиска наиболее удобного инструмента создания ресурсов (ассетов) остановился на
обычной тетрадке в клетку:</p>
<p><img src="../../images/2024_memory-gui_notebook.jpg" alt="Текстура в тетрадке" /></p>
<p>Для дополнительной проверки качества архитектуры портируемого кода участвовал в
трёхдневном геймджеме от <a href="https://dtf.ru/games/2783053-nachni-igru-ocenka-videorolikov">«Начни игру»</a> с игрой «Память», оформленной под
требования конкурса.</p>
<p>Выглядит итоговая игра следующим образом (<a href="https://ims.cr5.space/app/p/4FvJS4fk/Вредные-продукты/about">сборка Windows64</a>):. . .</p>
</div>
<div class="news_item_more">
<a href="memory-gui.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="memory-text-ui.html">Текстовый интерфейс «Памяти»</a>
</h2>
<p class="news_item_date">
2024-06-14 00:00
</p>
<div class="news_item_contents">
<h1 id="">Текстовый интерфейс «Памяти»</h1>
<p>В мае реализовал текстовый интерфейс игры «Память» на Python. В C++ перевёл инструментом.</p>
<p>Реализация логического игрового цикла привела к появлению контроллера, управляющего
контекстом. Создание контроллера на Python прошло без происшествий, а вот с версией
для C++ пришлось помучиться. Мучения были вызваны тем, что контроллер использует
<a href="https://en.cppreference.com/w/cpp/utility/any">std::any</a> из C++17, а инструмент ограничен C++11 с целью поддержки OpenWrt.</p>
<p>Что касается объёма кода, то картина получилась следующей (в строках):. . .</p>
</div>
<div class="news_item_more">
<a href="memory-text-ui.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="memory-logic.html">Игровая логика «Памяти»</a>
</h2>
<p class="news_item_date">
2024-05-03 00:00
</p>
<div class="news_item_contents">
<h1 id="">Игровая логика «Памяти»</h1>
<p>В апреле реализовал игровую логику игры «Память» на Python в виде модели ограниченного языка и успешно перевёл её инструментом в C++.</p>
<p>Модель ограниченного языка предполагает следующую архитектуру из двух частей:</p>
<ol>
<li>контекст состояния</li>
<li>чистые функции без побочных эффектов, работающие лишь с контекстом</li>
</ol>
<p>Контекст состояния игровой логики на Python получился следующим (<a href="https://git.opengamestudio.org/kornerr/research-portable-memory/src/commit/6fcd542daa6242c8c23dddb88d04cda74a730328/v3/memory_Context.h">C++</a>):</p>
<p>```python
class memory_Context:
def <strong>init</strong>(self):
self.hiddenItems = []
self.mismatchedItems = []. . .</p>
</div>
<div class="news_item_more">
<a href="memory-logic.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="llm-first-py-cxx.html">Первый пример портируемого кода</a>
</h2>
<p class="news_item_date">
2024-04-11 00:00
</p>
<div class="news_item_contents">
<h1 id="">Выбор платформ для портирования</h1>
<p>Для подтверждения портируемости кода я выбрал следующие платформы и языки:</p>
<ul>
<li>C++: Linux, macOS, OpenWrt, Windows</li>
<li>JavaScript: Chrome, Firefox, Safari</li>
<li>Kotlin: Android</li>
<li>Python: Linux, macOS, Windows</li>
<li>Swift: iOS, macOS</li>
</ul>
<p>На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ.</p>
<p>Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели.. . .</p>
</div>
<div class="news_item_more">
<a href="llm-first-py-cxx.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="bus-iOS.html">Шина-iOS</a>
</h2>
<p class="news_item_date">
2024-03-10 00:00
</p>
<div class="news_item_contents">
<h1 id="ios">Первая реализация Шины для iOS</h1>
<p>За январь и февраль довёл реализацию шаблона Шина на Swift до хорошего состояния
для iOS.</p>
<p>Провёл нагрузочное тестирование. Оказалось, что общение элементов
приложения через Шину примерно в 92 раза медленнее обычного вызова функции.
И это говорит не о том, что Шина плоха. Наоборот, это говорит о том, что
Шина должна использоваться в архитектурных склейках кода, что позволяет
сократить такой код примерно на 30%.</p>
<p>Так выглядит пример с использованием нескольких состояний, отображаемых. . .</p>
</div>
<div class="news_item_more">
<a href="bus-iOS.html">Читать далее</a>
</div>
</div><div class="news_item">
<h2 class="news_item_title">
<a href="bus-01.html">Шина-01</a>
</h2>
<p class="news_item_date">
2024-01-04 00:00
</p>
<div class="news_item_contents">
<h1 id="">На пути к портируемому коду</h1>
<p>Для достижения портируемости кода необходимо разделить весь код на две части:</p>
<ul>
<li>повторяющееся: логика</li>
<li>уникальное: взаимодействие с окружением</li>
</ul>
<p>Для упрощения конструирования портируемого кода нужна возможность размещать
любой код - и повторяющийся, и уникальный - без учёта иерархии конечной платформы.
Для этого лучше всего подходит шаблон проектирования «Шина». Шина все куски
кода делает равными, т.к. они взаимодействуют друг с другом через Шину.</p>
<h1 id="01">Шина-01</h1>
<p>На текущий момент получился следующий результат:. . .</p>
</div>
<div class="news_item_more">
<a href="bus-01.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 2 из 9</p>
<p>
<a href="index.html">« Новее</a>
<a href="index3.html">Старее »</a>
</p>
<div id="footer">
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
</div>
</center>
</body>
</html>