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

254 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/index.html">EN</a>
<a href="../../ru/news/index.html">RU</a>
</div>
<div class="clear"></div>
</div>
</div>
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="lha-jvm-macos.html">Первая рабочая версия Local Host Access</a>
</h2>
<p class="news_item_date">
2024-12-09 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2024_web-test.jpg" alt="web-test" /></p>
<h1 id="localhostaccess">Local Host Access</h1>
<p>Крошечный веб-сервер Local Host Access (<strong>LHA</strong>) готов заменить
Local File System Access (<strong>LFSA</strong>) на JVM и macOS: я сгенерировал
эту статью с помощью LHA на macOS. Таким образом, Kotlin оказался
хорошим языком для кросс-платформенной разработки, правда, с небольшим
ограничением.</p>
<p>Это небольшое ограничение состоит в том, что 99% разработки Kotlin приходится
на JVM. Остальные 99% - на так называемый Kotlin Native для работы с iOS,
Linux, macOS и Windows. Таким образом, если кому-либо понадобится что-либо. . .</p>
</div>
<div class="news_item_more">
<a href="lha-jvm-macos.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="pskov-again.html">Возвращение к разработке «ПСКОВа»</a>
</h2>
<p class="news_item_date">
2024-11-14 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2024_lha-path.gif" alt="lha" /></p>
<h1 id="">«ПСКОВ» сегодня</h1>
<p>Итак, у нас есть старая версия «ПСКОВа», а нам нужна новая с улучшенными
характеристиками.</p>
<p>Первым делом стоит вспомнить, из чего состоит «ПСКОВ»:</p>
<ol>
<li>Непосредственно <a href="https://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">генератор</a> в виде веб-страницы на HTML + JavaScript</li>
<li>Вспомогательный <a href="https://opengamestudio.org/lfsa/ru/index.html">скрипт Python</a> для сохранения генерируемых файлов на диске</li>
</ol>
<p>Вспомогательный скрипт нужен по одной причине: веб-страницам запрещено общаться
с локальной файловой системой по соображениям безопасности.</p>
<p>Скрипт представляет из себя крошечный веб-сервер со следующими командами:. . .</p>
</div>
<div class="news_item_more">
<a href="pskov-again.html">Читать далее</a>
</div>
</div>
<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>
<p class="pagination_title">Страница 1 из 8</p>
<p>
<a href="index2.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>