257 lines
11 KiB
HTML
257 lines
11 KiB
HTML
<!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="ht-scenes.html">Switching scenes</a>
|
|
</h2>
|
|
<p class="news_item_date">
|
|
2024-09-06 00:00
|
|
</p>
|
|
<div class="news_item_contents">
|
|
<h1 id="august">August</h1>
|
|
<video controls width="700">
|
|
<source src="../../images/2024_scenes.mp4" type="video/mp4"/>
|
|
</video>
|
|
<p>In August I implemented scene switching, which allowed me to do the following:</p>
|
|
<ul>
|
|
<li>pressing "Start the game" button in the splash screen takes the player to a level with three floors</li>
|
|
<li>selecting a door takes the player to another floor</li>
|
|
<li>selecting a TV set focuses the player on the TV set with a remote control</li>
|
|
<li>switching TV channels results in different images being shown</li>
|
|
</ul>
|
|
<p>Thus, scenes are good both for focusing on items and moving the player around.. . .</p>
|
|
</div>
|
|
<div class="news_item_more">
|
|
<a href="ht-scenes.html">Continue reading</a>
|
|
</div>
|
|
</div>
|
|
<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>
|
|
|
|
<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>
|