Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

266 строки
10KB

  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 class="header2">
  11. <div class="menu">
  12. <a href="../../en/news/index.html">News</a>
  13. <a href="../../en/game/index.html">Games</a>
  14. <a href="../../en/tool/index.html">Tools</a>
  15. <a href="../../en/page/about.html">About</a>
  16. </div>
  17. <div id="lang">
  18. <a href="../../en/news/index.html">EN</a>
  19. <a href="../../ru/news/index.html">RU</a>
  20. </div>
  21. <div class="clear"></div>
  22. </div>
  23. </div>
  24. <center>
  25. <h1>News</h1>
  26. <div class="news_item">
  27. <h2 class="news_item_title">
  28. <a href="pskov-again.html">Back to the development of "PSKOV"</a>
  29. </h2>
  30. <p class="news_item_date">
  31. 2024-11-14 00:00
  32. </p>
  33. <div class="news_item_contents">
  34. <p><img src="../../images/2024_lha-path.gif" alt="lha" /></p>
  35. <h1 id="pskovtoday">"PSKOV" today</h1>
  36. <p>Now, we have an old "PSKOV" version and we need an improved one.</p>
  37. <p>First, we should recall what "PSKOV" consists of:</p>
  38. <ol>
  39. <li>The <a href="https://opengamestudio.org/pskov/en/pskov_1.0.0.html">generator</a> itself in the form of HTML page with JavaScript</li>
  40. <li>Helper <a href="https://opengamestudio.org/lfsa/en/index.html">Python script</a> to save generated files to disk</li>
  41. </ol>
  42. <p>Helper script is used to bypass web page restriction to access
  43. local file system.</p>
  44. <p>The script itself is a tiny web server with the following commands:</p>
  45. <table>
  46. <thead>
  47. <tr>
  48. <th>№</th>
  49. <th>Command</th>
  50. <th>Details</th>
  51. </tr>
  52. </thead>
  53. <tbody>
  54. <tr>
  55. <td>1</td>
  56. <td><code>GET /path</code></td>
  57. <td>Get current working directory path</td>
  58. </tr>
  59. </tbody>
  60. </table>
  61. </div>
  62. <div class="news_item_more">
  63. <a href="pskov-again.html">Continue reading</a>
  64. </div>
  65. </div>
  66. <div class="news_item">
  67. <h2 class="news_item_title">
  68. <a href="ht-sound.html">Sound support and the search for a new direction</a>
  69. </h2>
  70. <p class="news_item_date">
  71. 2024-10-11 00:00
  72. </p>
  73. <div class="news_item_contents">
  74. <h1 id="soundsupport">Sound support</h1>
  75. <video controls width="700">
  76. <source src="../../images/2024_sound.mp4" type="video/mp4"/>
  77. </video>
  78. <p>In September I implemented sound support. However, this was the last
  79. work for "Tail and Shadow" project, because the project's story writer -
  80. Eugene - left.</p>
  81. <h1 id="thesearchforanewdirection">The search for a new direction</h1>
  82. <p>In September I also noticed the loss of interest in the project by the
  83. audience. I linked this to the fact that the project's functional and
  84. graphical results did not match that of the audience.. . .</p>
  85. </div>
  86. <div class="news_item_more">
  87. <a href="ht-sound.html">Continue reading</a>
  88. </div>
  89. </div>
  90. <div class="news_item">
  91. <h2 class="news_item_title">
  92. <a href="ht-scenes.html">Switching scenes</a>
  93. </h2>
  94. <p class="news_item_date">
  95. 2024-09-06 00:00
  96. </p>
  97. <div class="news_item_contents">
  98. <h1 id="august">August</h1>
  99. <video controls width="700">
  100. <source src="../../images/2024_scenes.mp4" type="video/mp4"/>
  101. </video>
  102. <p>In August I implemented scene switching, which allowed me to do the following:</p>
  103. <ul>
  104. <li>pressing "Start the game" button in the splash screen takes the player to a level with three floors</li>
  105. <li>selecting a door takes the player to another floor</li>
  106. <li>selecting a TV set focuses the player on the TV set with a remote control</li>
  107. <li>switching TV channels results in different images being shown</li>
  108. </ul>
  109. <p>Thus, scenes are good both for focusing on items and moving the player around.. . .</p>
  110. </div>
  111. <div class="news_item_more">
  112. <a href="ht-scenes.html">Continue reading</a>
  113. </div>
  114. </div>
  115. <div class="news_item">
  116. <h2 class="news_item_title">
  117. <a href="rethinking.html">Rethinking</a>
  118. </h2>
  119. <p class="news_item_date">
  120. 2024-08-12 00:00
  121. </p>
  122. <div class="news_item_contents">
  123. <p><img src="../../images/2024_rethinking.jpg" alt="Game" /></p>
  124. <p>When July started my initial plan was to make the instrument support Python to
  125. JavaScript code translation. However, this did not happen because tasks with
  126. higher priority emerged.</p>
  127. <p>Which task is more important than develpment of the instrument?
  128. Development of a game, of course! Now, let's go back to the beginning of
  129. July 2024…</p>
  130. <h1 id="gamejam">Gamejam</h1>
  131. <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.
  132. I participated in the jam to validate the instrument under development and. . .</p>
  133. </div>
  134. <div class="news_item_more">
  135. <a href="rethinking.html">Continue reading</a>
  136. </div>
  137. </div>
  138. <div class="news_item">
  139. <h2 class="news_item_title">
  140. <a href="memory-gui.html">"Memory" GUI</a>
  141. </h2>
  142. <p class="news_item_date">
  143. 2024-07-04 00:00
  144. </p>
  145. <div class="news_item_contents">
  146. <h1 id="memorygui">"Memory" GUI</h1>
  147. <p>In June I implemented GUI for "Memory" game in Python with the help of
  148. <a href="https://arcade.academy">Python Arcade</a>.</p>
  149. <p>While searching for the most convenient tool to create resources (assets), I found
  150. notebooks lined with graph paper to work the best:</p>
  151. <p><img src="../../images/2024_memory-gui_notebook.jpg" alt="Texture of a notebook" /></p>
  152. <p>To see the portable code architecture in real life, I participated in the 3-day long
  153. 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>
  154. <p>Here's how the customized version looks like (<a href="https://ims.cr5.space/app/p/4FvJS4fk/Вредные-продукты/about">Windows64 build</a>):. . .</p>
  155. </div>
  156. <div class="news_item_more">
  157. <a href="memory-gui.html">Continue reading</a>
  158. </div>
  159. </div>
  160. <div class="news_item">
  161. <h2 class="news_item_title">
  162. <a href="memory-text-ui.html">"Memory" text UI</a>
  163. </h2>
  164. <p class="news_item_date">
  165. 2024-06-14 00:00
  166. </p>
  167. <div class="news_item_contents">
  168. <h1 id="memorytextui">"Memory" text UI</h1>
  169. <p>In May I implemented text UI for "Memory" game in Python. And converted it to C++
  170. by the instrument under development.</p>
  171. <p>Game logic cycle implementation lead to the creation of a controller that manages
  172. context. Creating the controller in Python was straightforward. C++ version took
  173. 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.
  174. The instrument under development is limited to C++11 in order to support OpenWrt.</p>
  175. <p>Here's how much code I wrote (in lines):. . .</p>
  176. </div>
  177. <div class="news_item_more">
  178. <a href="memory-text-ui.html">Continue reading</a>
  179. </div>
  180. </div>
  181. <div class="news_item">
  182. <h2 class="news_item_title">
  183. <a href="memory-logic.html">"Memory" game logic</a>
  184. </h2>
  185. <p class="news_item_date">
  186. 2024-05-03 00:00
  187. </p>
  188. <div class="news_item_contents">
  189. <h1 id="memorygamelogic">"Memory" game logic</h1>
  190. <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>
  191. <p>Limited language model assumes the following architecture of two parts:</p>
  192. <ol>
  193. <li>state context</li>
  194. <li>pure functions without side effects working only with the context</li>
  195. </ol>
  196. <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>
  197. <p>```python
  198. class memory_Context:
  199. def <strong>init</strong>(self):
  200. self.hiddenItems = []. . .</p>
  201. </div>
  202. <div class="news_item_more">
  203. <a href="memory-logic.html">Continue reading</a>
  204. </div>
  205. </div>
  206. <div class="news_item">
  207. <h2 class="news_item_title">
  208. <a href="llm-first-py-cxx.html">The first example of a portable code</a>
  209. </h2>
  210. <p class="news_item_date">
  211. 2024-04-11 00:00
  212. </p>
  213. <div class="news_item_contents">
  214. <h1 id="supportedplatforms">Supported platforms</h1>
  215. <p>To verify code portability, I selected the following platforms and languages:</p>
  216. <ul>
  217. <li>C++: Linux, macOS, OpenWrt, Windows</li>
  218. <li>JavaScript: Chrome, Firefox, Safari</li>
  219. <li>Kotlin: Android</li>
  220. <li>Python: Linux, macOS, Windows</li>
  221. <li>Swift: iOS, macOS</li>
  222. </ul>
  223. <p>I created a simple "Hello World" example for each language to understand the basic requirements of each platform.</p>
  224. <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>
  225. </div>
  226. <div class="news_item_more">
  227. <a href="llm-first-py-cxx.html">Continue reading</a>
  228. </div>
  229. </div>
  230. <div class="news_item">
  231. <h2 class="news_item_title">
  232. <a href="bus-iOS.html">Шина-iOS</a>
  233. </h2>
  234. <p class="news_item_date">
  235. 2024-03-10 00:00
  236. </p>
  237. <div class="news_item_contents">
  238. <h1 id="thefirstbuspatternimplementationforios">The first Bus pattern implementation for iOS</h1>
  239. <p>I spent January and February making Bus pattern implementation in Swift for iOS.
  240. The end result looks nice to me.</p>
  241. <p>I have also done load testing. Turns out, the Bus is 92 times more expensive
  242. than a function call. Nonetheless, this doesn't mean the Bus is bad. On the
  243. contrary, the numbers highlight the Bus should be used in architectural
  244. glue code where it can save up to 30% of code</p>
  245. <p>This example demonstrates several states rendered through a single instance:. . .</p>
  246. </div>
  247. <div class="news_item_more">
  248. <a href="bus-iOS.html">Continue reading</a>
  249. </div>
  250. </div>
  251. <p class="pagination_title">Page 1 of 8</p>
  252. <p>
  253. <a href="index2.html">Older »</a>
  254. </p>
  255. <div id="footer">
  256. The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>
  257. from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>.
  258. </div>
  259. </center>
  260. </body>
  261. </html>