Files
ogs-site/ru/news/index.html
Михаил Капелько 5321a9a1c4 Статья за май | May article
2024-05-03 14:56:30 +03:00

246 lines
15 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>
<strong id="title">Open Game Studio</strong>
<div id="lang">
<a href="../../en/news/index.html">EN</a>
<a href="../../ru/news/index.html">RU</a>
</div>
</div>
<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>
<a class="discord" href="https://discord.gg/3A6THQabNf">
<img src="../../images/discord.png"></img>
</a>
<div class="clear"></div>
</div>
</div>
<center>
<h1>Новости</h1>
<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>
<div class="news_item">
<h2 class="news_item_title">
<a href="rpg-ends.html">Изменение целей проекта</a>
</h2>
<p class="news_item_date">
2023-12-25 00:00
</p>
<div class="news_item_contents">
<h1 id="">Конец мечты об открытой РПГ</h1>
<p>В далёком 2005-м году проект Opensource Game Studio
<a href="https://unixforum.org/viewtopic.php?t=9989">начался под названием Opensource RPG</a>, т.к. целью было
создание «первой открытой конкуретноспособной бесплатной игры».
В чуть менее далёком 2011-м после выпуска OGS Mahjong 0.7 мы уже подсчитывали,
что для создания РПГ <a href="https://gamedev.ru/community/ogs/articles/?id=6383">в одиночку потребуется 540 лет</a>.</p>
<p>В том 2011-м у нас теплилась надежда об увеличении команды, что могло
бы уменьшить этот срок. Однако, сегодня в конце 2023-го очевидно,
что <strong>создать РПГ в одиночку невозможно</strong>.. . .</p>
</div>
<div class="news_item_more">
<a href="rpg-ends.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="gitjs-intro.html">Как я создаю приложения для браузера прямо в браузере</a>
</h2>
<p class="news_item_date">
2021-01-28 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2021_gitjs-intro_снимок.jpg" alt="GitJS" /></p>
<p>В этой статье Михаил поделится опытом создания доступных долговечных приложений.</p>
<p>В 2013 году компания Canonical <a href="https://habr.com/ru/post/187480">пыталась собрать средства на выпуск смартфона
Ubuntu Edge</a>. Особенностью продукта должна была стать возможность
преобразовывать смартфон в полноценный ПК. Увы, необходимую сумму собрать не
удалось, поэтому мечта создать универсальное устройство так и осталась мечтой.</p>
<p>Со своей стороны я давно искал универсальность со стороны программного
обеспечения, не железа. Сегодня с уверенностью могу сказать, что нашёл. . .</p>
</div>
<div class="news_item_more">
<a href="gitjs-intro.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="git-budget.html">Почему я сделал личный проект учёта трат на Git+JS</a>
</h2>
<p class="news_item_date">
2020-05-03 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2020-05-06_гит-бюджет_снимок.png" alt="ГитБюджет" /></p>
<p>В этой статье Михаил поделится опытом использования Git+JS.</p>
<p>Здравствуйте, господа, в этой статье я поделюсь опытом создания приложения учёта трат, в частности отвечу на следующие вопросы:</p>
<ol>
<li>Зачем мне приложение учёта трат?</li>
<li>Почему это личный проект?</li>
<li>Почему проект на Git+JS?</li>
</ol>
<p><strong>1. Зачем мне приложение учёта трат?</strong></p>
<p>Как и многие другие люди я давно хотел стать богатым и практиковать <a href="https://успешный-успех.рф">успешный успех</a>. Одной из рекомендаций в таких случаях часто выступает предложение вести собственный бюджет, чем я и занялся несколько лет назад. Скажу сразу, что ведение бюджета не сделало меня богатым и успешным, а своё материальное положение я улучшил обычным переездом в Москву.. . .</p>
</div>
<div class="news_item_more">
<a href="git-budget.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="teaching-to-program-2019.html">Обучение программированию 2019, или в поисках идеальной программы: Последовательность</a>
</h2>
<p class="news_item_date">
2020-02-12 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2020-02-11_teaching-to-program-2019_screenshot.png" alt="МУРОМ" /></p>
<p>В этой статье Михаил расскажет об обучении ребят программированию в 2019-м году.</p>
<p><strong>Предисловие</strong></p>
<p>Осенью 2019-го я в третий раз участвовал в курсе обучения ребят 10-15 лет программированию в качестве одного из преподавателей. Наши курсы проходили с середины сентября по середину декабря. Каждое занятие было в субботу с 10:00 до 12:00. Подробнее о структуре каждого урока и деталях создаваемой на курсе игры можно узнать из <a href="teaching-kids-to-program.html">статьи за 2018-й год</a>.</p>
<p>Лично для себя я выделил две основные цели, к которым иду с помощью курсов:. . .</p>
</div>
<div class="news_item_more">
<a href="teaching-to-program-2019.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Минусы и плюсы начинания с начала</a>
</h2>
<p class="news_item_date">
2020-01-01 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2020-01-01-ny.jpg" alt="Happy 2020" /></p>
<p>Любой, кто следит за нашим прогрессом достаточно долго, может сказать, что мы много раз перезапускали разработку с нуля.</p>
<p>Еще до выпуска <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a> мы несколько раз меняли технологии "под капотом". После релиза мы неоднократно делали это снова, отбрасывая уже готовые решения.
Может показаться, что сейчас у нас меньше готового, чем перед выходом <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>. Это правда, но не совсем.</p>
<p>Когда вышел <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>, у нас была приятно выглядящая (на тот момент) игра с открытым исходным кодом, которая работала под Windows и Linux. С некоторой удачей и усилием в нее можно поиграть и сегодня, но уже не "из коробки".. . .</p>
</div>
<div class="news_item_more">
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 1 из 7</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>