|
- <!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="../../en/news/index.html">News</a>
- <a href="../../en/game/index.html">Games</a>
- <a href="../../en/tool/index.html">Tools</a>
- <a href="../../en/page/about.html">About</a>
- </div>
- <a class="discord" href="https://t.me/Tail_and_shadow">
- <img src="../../images/telegram.png"></img>
- </a>
- <div class="clear"></div>
- </div>
- </div>
- <center>
- <h1>News</h1>
-
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="rethinking.html">Rethinking</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="Game" /></p>
- <p>When July started my initial plan was to make the instrument support Python to
- JavaScript code translation. However, this did not happen because tasks with
- higher priority emerged.</p>
- <p>Which task is more important than develpment of the instrument?
- Development of a game, of course! Now, let's go back to the beginning of
- July 2024…</p>
- <h1 id="gamejam">Gamejam</h1>
- <p><a href="https://dtf.ru/games/2783053-nachni-igru-ocenka-videorolikov">"Start the game"</a> 3-day gamejam finished in the beginning of July 2024.
- I participated in the jam to validate the instrument under development and. . .</p>
- </div>
- <div class="news_item_more">
- <a href="rethinking.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="memory-gui.html">"Memory" GUI</a>
- </h2>
- <p class="news_item_date">
- 2024-07-04 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="memorygui">"Memory" GUI</h1>
- <p>In June I implemented GUI for "Memory" game in Python with the help of
- <a href="https://arcade.academy">Python Arcade</a>.</p>
- <p>While searching for the most convenient tool to create resources (assets), I found
- notebooks lined with graph paper to work the best:</p>
- <p><img src="../../images/2024_memory-gui_notebook.jpg" alt="Texture of a notebook" /></p>
- <p>To see the portable code architecture in real life, I participated in the 3-day long
- gamejam of <a href="https://dtf.ru/games/2783053-nachni-igru-ocenka-videorolikov">"Start the game"</a>. "Memory" game was used with a customized look to satisfy jam requirements.</p>
- <p>Here's how the customized version looks like (<a href="https://ims.cr5.space/app/p/4FvJS4fk/Вредные-продукты/about">Windows64 build</a>):. . .</p>
- </div>
- <div class="news_item_more">
- <a href="memory-gui.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="memory-text-ui.html">"Memory" text UI</a>
- </h2>
- <p class="news_item_date">
- 2024-06-14 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="memorytextui">"Memory" text UI</h1>
- <p>In May I implemented text UI for "Memory" game in Python. And converted it to C++
- by the instrument under development.</p>
- <p>Game logic cycle implementation lead to the creation of a controller that manages
- context. Creating the controller in Python was straightforward. C++ version took
- some time, because the controller needs <a href="https://en.cppreference.com/w/cpp/utility/any">std::any</a>, which is part of C++17.
- The instrument under development is limited to C++11 in order to support OpenWrt.</p>
- <p>Here's how much code I wrote (in lines):. . .</p>
- </div>
- <div class="news_item_more">
- <a href="memory-text-ui.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="memory-logic.html">"Memory" game logic</a>
- </h2>
- <p class="news_item_date">
- 2024-05-03 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="memorygamelogic">"Memory" game logic</h1>
- <p>In April I implemented "Memory" game logic in Python as limited language model and successfully converted the code to C++ by the instrument under development.</p>
- <p>Limited language model assumes the following architecture of two parts:</p>
- <ol>
- <li>state context</li>
- <li>pure functions without side effects working only with the context</li>
- </ol>
- <p>Game logic state context in Python currently looks like this (<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 = []. . .</p>
- </div>
- <div class="news_item_more">
- <a href="memory-logic.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="llm-first-py-cxx.html">The first example of a portable code</a>
- </h2>
- <p class="news_item_date">
- 2024-04-11 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="supportedplatforms">Supported platforms</h1>
- <p>To verify code portability, I selected the following platforms and languages:</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>I created a simple "Hello World" example for each language to understand the basic requirements of each platform.</p>
- <p>By the way, OpenWrt turned out the most complex platform to create "Hello World" for, because my TP-Link TL-MR3020 r1 router is considered obsolete since 2018. I had to use the old 17.01.7 firmware, which took about three weeks.. . .</p>
- </div>
- <div class="news_item_more">
- <a href="llm-first-py-cxx.html">Continue reading</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="thefirstbuspatternimplementationforios">The first Bus pattern implementation for iOS</h1>
- <p>I spent January and February making Bus pattern implementation in Swift for iOS.
- The end result looks nice to me.</p>
- <p>I have also done load testing. Turns out, the Bus is 92 times more expensive
- than a function call. Nonetheless, this doesn't mean the Bus is bad. On the
- contrary, the numbers highlight the Bus should be used in architectural
- glue code where it can save up to 30% of code</p>
- <p>This example demonstrates several states rendered through a single instance:. . .</p>
- </div>
- <div class="news_item_more">
- <a href="bus-iOS.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="bus-01.html">Bus-01</a>
- </h2>
- <p class="news_item_date">
- 2024-01-04 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="onthewaytoportablecode">On the way to portable code</h1>
- <p>To gain code portability, we have to divide whole code into two parts:</p>
- <ul>
- <li>repeatable: logic</li>
- <li>unique: environment</li>
- </ul>
- <p>To simplify portable code construction, we want to be able to place any code -
- both repeatable and unique - without hierarchy requirements of operating
- systems. Bus design pattern seems to be the best option. The Bus makes all
- code chunks equal because they interact through the Bus only.</p>
- <h1 id="bus01">Bus-01</h1>
- <p>Currently we have:</p>
- <iframe width="560" height="315" src="https://www.youtube.com/embed/XAlIlG9tVL4?si=5HYRDkNuYE0zeoyo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
- <p>. . .</p>
- </div>
- <div class="news_item_more">
- <a href="bus-01.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="rpg-ends.html">Revised project goals</a>
- </h2>
- <p class="news_item_date">
- 2023-12-25 00:00
- </p>
- <div class="news_item_contents">
- <h1 id="thedreamofanopensourcerpgisover">The dream of an open source RPG is over</h1>
- <p>In 2005 the Opensource Game Studio project started
- under the name of the <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">Opensource RPG</a>, because we wanted
- to create "the first competitive open free game".
- In 2011 right after releasing OGS Mahjong 0.7 we have already
- had the numbers that it would take us <a href="https://gamedev.ru/community/ogs/articles/?id=6383">540 years to create RPG</a>.</p>
- <p>In 2011 we had a dream that we as a team would grow, which could decrease
- 540 years to someting reasonable. However today in the end of 2023 it's clear
- <strong>we are unable to create RPG</strong>.. . .</p>
- </div>
- <div class="news_item_more">
- <a href="rpg-ends.html">Continue reading</a>
- </div>
- </div>
- <div class="news_item">
- <h2 class="news_item_title">
- <a href="gitjs-intro.html">How I create browser applications inside browsers</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>In this article Michael shares his experience of creating durable applications.</p>
- <p>In 2013 Canonical <a href="https://techcrunch.com/2013/08/22/edge-crowdfunding-fail">tried to crowdfund Ubuntu Edge smartphone</a>.
- Its main feature could be the ability to use the smartphone as a full-fledged
- PС. Unfortunatly, the crowdfunding campaign did not accumulate enough money,
- so a dream of having a universal device remained to be the dream.</p>
- <p>I've been searching for universality, too, on the software side,
- not the hardware one. Today I can confidently say I found the necessary. . .</p>
- </div>
- <div class="news_item_more">
- <a href="gitjs-intro.html">Continue reading</a>
- </div>
- </div>
-
- <p class="pagination_title">Page 1 of 8</p>
- <p>
- <a href="index2.html">Older »</a>
- </p>
-
-
- <div id="footer">
- The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>
- from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>.
- </div>
- </center>
- </body>
- </html>
|