You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 line
11KB

  1. <!DOCTYPE html>
  2. <html>
  3. <meta charset="utf-8">
  4. <head>
  5. <link rel="stylesheet" href="../../style.css">
  6. </head>
  7. <body>
  8. <script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
  9. <div id="header">
  10. <div>
  11. <strong id="title">Open Game Studio</strong>
  12. <div id="lang">
  13. <a href="../../en/news/index.html">EN</a>
  14. <a href="../../ru/news/index.html">RU</a>
  15. </div>
  16. </div>
  17. <div class="header2">
  18. <div class="menu">
  19. <a href="../../en/news/index.html">News</a>
  20. <a href="../../en/game/index.html">Games</a>
  21. <a href="../../en/tool/index.html">Tools</a>
  22. <a href="../../en/page/about.html">About</a>
  23. </div>
  24. <a class="discord" href="https://t.me/Tail_and_shadow">
  25. <img src="../../images/telegram.png"></img>
  26. </a>
  27. <div class="clear"></div>
  28. </div>
  29. </div>
  30. <center>
  31. <h1>News</h1>
  32. <div class="news_item">
  33. <h2 class="news_item_title">
  34. <a href="rethinking.html">Rethinking</a>
  35. </h2>
  36. <p class="news_item_date">
  37. 2024-08-12 00:00
  38. </p>
  39. <div class="news_item_contents">
  40. <p><img src="../../images/2024_rethinking.jpg" alt="Game" /></p>
  41. <p>When July started my initial plan was to make the instrument support Python to
  42. JavaScript code translation. However, this did not happen because tasks with
  43. higher priority emerged.</p>
  44. <p>Which task is more important than develpment of the instrument?
  45. Development of a game, of course! Now, let's go back to the beginning of
  46. July 2024…</p>
  47. <h1 id="gamejam">Gamejam</h1>
  48. <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.
  49. I participated in the jam to validate the instrument under development and. . .</p>
  50. </div>
  51. <div class="news_item_more">
  52. <a href="rethinking.html">Continue reading</a>
  53. </div>
  54. </div>
  55. <div class="news_item">
  56. <h2 class="news_item_title">
  57. <a href="memory-gui.html">"Memory" GUI</a>
  58. </h2>
  59. <p class="news_item_date">
  60. 2024-07-04 00:00
  61. </p>
  62. <div class="news_item_contents">
  63. <h1 id="memorygui">"Memory" GUI</h1>
  64. <p>In June I implemented GUI for "Memory" game in Python with the help of
  65. <a href="https://arcade.academy">Python Arcade</a>.</p>
  66. <p>While searching for the most convenient tool to create resources (assets), I found
  67. notebooks lined with graph paper to work the best:</p>
  68. <p><img src="../../images/2024_memory-gui_notebook.jpg" alt="Texture of a notebook" /></p>
  69. <p>To see the portable code architecture in real life, I participated in the 3-day long
  70. 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>
  71. <p>Here's how the customized version looks like (<a href="https://ims.cr5.space/app/p/4FvJS4fk/Вредные-продукты/about">Windows64 build</a>):. . .</p>
  72. </div>
  73. <div class="news_item_more">
  74. <a href="memory-gui.html">Continue reading</a>
  75. </div>
  76. </div>
  77. <div class="news_item">
  78. <h2 class="news_item_title">
  79. <a href="memory-text-ui.html">"Memory" text UI</a>
  80. </h2>
  81. <p class="news_item_date">
  82. 2024-06-14 00:00
  83. </p>
  84. <div class="news_item_contents">
  85. <h1 id="memorytextui">"Memory" text UI</h1>
  86. <p>In May I implemented text UI for "Memory" game in Python. And converted it to C++
  87. by the instrument under development.</p>
  88. <p>Game logic cycle implementation lead to the creation of a controller that manages
  89. context. Creating the controller in Python was straightforward. C++ version took
  90. 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.
  91. The instrument under development is limited to C++11 in order to support OpenWrt.</p>
  92. <p>Here's how much code I wrote (in lines):. . .</p>
  93. </div>
  94. <div class="news_item_more">
  95. <a href="memory-text-ui.html">Continue reading</a>
  96. </div>
  97. </div>
  98. <div class="news_item">
  99. <h2 class="news_item_title">
  100. <a href="memory-logic.html">"Memory" game logic</a>
  101. </h2>
  102. <p class="news_item_date">
  103. 2024-05-03 00:00
  104. </p>
  105. <div class="news_item_contents">
  106. <h1 id="memorygamelogic">"Memory" game logic</h1>
  107. <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>
  108. <p>Limited language model assumes the following architecture of two parts:</p>
  109. <ol>
  110. <li>state context</li>
  111. <li>pure functions without side effects working only with the context</li>
  112. </ol>
  113. <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>
  114. <p>```python
  115. class memory_Context:
  116. def <strong>init</strong>(self):
  117. self.hiddenItems = []. . .</p>
  118. </div>
  119. <div class="news_item_more">
  120. <a href="memory-logic.html">Continue reading</a>
  121. </div>
  122. </div>
  123. <div class="news_item">
  124. <h2 class="news_item_title">
  125. <a href="llm-first-py-cxx.html">The first example of a portable code</a>
  126. </h2>
  127. <p class="news_item_date">
  128. 2024-04-11 00:00
  129. </p>
  130. <div class="news_item_contents">
  131. <h1 id="supportedplatforms">Supported platforms</h1>
  132. <p>To verify code portability, I selected the following platforms and languages:</p>
  133. <ul>
  134. <li>C++: Linux, macOS, OpenWrt, Windows</li>
  135. <li>JavaScript: Chrome, Firefox, Safari</li>
  136. <li>Kotlin: Android</li>
  137. <li>Python: Linux, macOS, Windows</li>
  138. <li>Swift: iOS, macOS</li>
  139. </ul>
  140. <p>I created a simple "Hello World" example for each language to understand the basic requirements of each platform.</p>
  141. <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>
  142. </div>
  143. <div class="news_item_more">
  144. <a href="llm-first-py-cxx.html">Continue reading</a>
  145. </div>
  146. </div>
  147. <div class="news_item">
  148. <h2 class="news_item_title">
  149. <a href="bus-iOS.html">Шина-iOS</a>
  150. </h2>
  151. <p class="news_item_date">
  152. 2024-03-10 00:00
  153. </p>
  154. <div class="news_item_contents">
  155. <h1 id="thefirstbuspatternimplementationforios">The first Bus pattern implementation for iOS</h1>
  156. <p>I spent January and February making Bus pattern implementation in Swift for iOS.
  157. The end result looks nice to me.</p>
  158. <p>I have also done load testing. Turns out, the Bus is 92 times more expensive
  159. than a function call. Nonetheless, this doesn't mean the Bus is bad. On the
  160. contrary, the numbers highlight the Bus should be used in architectural
  161. glue code where it can save up to 30% of code</p>
  162. <p>This example demonstrates several states rendered through a single instance:. . .</p>
  163. </div>
  164. <div class="news_item_more">
  165. <a href="bus-iOS.html">Continue reading</a>
  166. </div>
  167. </div>
  168. <div class="news_item">
  169. <h2 class="news_item_title">
  170. <a href="bus-01.html">Bus-01</a>
  171. </h2>
  172. <p class="news_item_date">
  173. 2024-01-04 00:00
  174. </p>
  175. <div class="news_item_contents">
  176. <h1 id="onthewaytoportablecode">On the way to portable code</h1>
  177. <p>To gain code portability, we have to divide whole code into two parts:</p>
  178. <ul>
  179. <li>repeatable: logic</li>
  180. <li>unique: environment</li>
  181. </ul>
  182. <p>To simplify portable code construction, we want to be able to place any code -
  183. both repeatable and unique - without hierarchy requirements of operating
  184. systems. Bus design pattern seems to be the best option. The Bus makes all
  185. code chunks equal because they interact through the Bus only.</p>
  186. <h1 id="bus01">Bus-01</h1>
  187. <p>Currently we have:</p>
  188. <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>
  189. <p>. . .</p>
  190. </div>
  191. <div class="news_item_more">
  192. <a href="bus-01.html">Continue reading</a>
  193. </div>
  194. </div>
  195. <div class="news_item">
  196. <h2 class="news_item_title">
  197. <a href="rpg-ends.html">Revised project goals</a>
  198. </h2>
  199. <p class="news_item_date">
  200. 2023-12-25 00:00
  201. </p>
  202. <div class="news_item_contents">
  203. <h1 id="thedreamofanopensourcerpgisover">The dream of an open source RPG is over</h1>
  204. <p>In 2005 the Opensource Game Studio project started
  205. 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
  206. to create "the first competitive open free game".
  207. In 2011 right after releasing OGS Mahjong 0.7 we have already
  208. 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>
  209. <p>In 2011 we had a dream that we as a team would grow, which could decrease
  210. 540 years to someting reasonable. However today in the end of 2023 it's clear
  211. <strong>we are unable to create RPG</strong>.. . .</p>
  212. </div>
  213. <div class="news_item_more">
  214. <a href="rpg-ends.html">Continue reading</a>
  215. </div>
  216. </div>
  217. <div class="news_item">
  218. <h2 class="news_item_title">
  219. <a href="gitjs-intro.html">How I create browser applications inside browsers</a>
  220. </h2>
  221. <p class="news_item_date">
  222. 2021-01-28 00:00
  223. </p>
  224. <div class="news_item_contents">
  225. <p><img src="../../images/2021_gitjs-intro_снимок.jpg" alt="GitJS" /></p>
  226. <p>In this article Michael shares his experience of creating durable applications.</p>
  227. <p>In 2013 Canonical <a href="https://techcrunch.com/2013/08/22/edge-crowdfunding-fail">tried to crowdfund Ubuntu Edge smartphone</a>.
  228. Its main feature could be the ability to use the smartphone as a full-fledged
  229. PС. Unfortunatly, the crowdfunding campaign did not accumulate enough money,
  230. so a dream of having a universal device remained to be the dream.</p>
  231. <p>I've been searching for universality, too, on the software side,
  232. not the hardware one. Today I can confidently say I found the necessary. . .</p>
  233. </div>
  234. <div class="news_item_more">
  235. <a href="gitjs-intro.html">Continue reading</a>
  236. </div>
  237. </div>
  238. <p class="pagination_title">Page 1 of 8</p>
  239. <p>
  240. <a href="index2.html">Older »</a>
  241. </p>
  242. <div id="footer">
  243. The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>
  244. from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>.
  245. </div>
  246. </center>
  247. </body>
  248. </html>