@@ -0,0 +1,51 @@ | |||
Title: Back to the development of "PSKOV" | |||
Date: 2024-11-14 00:00 | |||
Category: News | |||
Slug: pskov-again | |||
Lang: en | |||
![lha][lha] | |||
# "PSKOV" today | |||
Now, we have an old "PSKOV" version and we need an improved one. | |||
First, we should recall what "PSKOV" consists of: | |||
1. The [generator][pskov-en] itself in the form of HTML page with JavaScript | |||
1. Helper [Python script][lfsa-en] to save generated files to disk | |||
Helper script is used to bypass web page restriction to access | |||
local file system. | |||
The script itself is a tiny web server with the following commands: | |||
| № | Command | Details | | |||
|---|---|---| | |||
| 1 | `GET /path` | Get current working directory path | | |||
| 2 | `POST /list` | Get a list of files in the requested directory | | |||
| 3 | `POST /read` | Get file's contents | | |||
| 4 | `POST /write` | Write file's contents | | |||
# "PSKOV" tomorrow | |||
Thus, the simplest way to get back to "PSKOV" development is to rewrite the | |||
helper script. I decided to replace Python with Kotlin because: | |||
1. Kotlin can be compiled for desktop, mobile, and web | |||
1. Kotlin is strictly typed | |||
These two factors simplify future work with portable code. | |||
As of now, I have `GET /path` implemented for JVM, macOS, and Windows (image | |||
in the beginning). | |||
# November | |||
I plan to implement the following commands in November: | |||
* `POST /list` | |||
* `POST /read` | |||
[lha]: ../../images/2024_lha-path.gif | |||
[pskov-en]: https://opengamestudio.org/pskov/en/pskov_1.0.0.html | |||
[lfsa-en]: https://opengamestudio.org/lfsa/en/index.html |
@@ -24,6 +24,46 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="pskov-again.html">Back to the development of "PSKOV"</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2024-11-14 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2024_lha-path.gif" alt="lha" /></p> | |||
<h1 id="pskovtoday">"PSKOV" today</h1> | |||
<p>Now, we have an old "PSKOV" version and we need an improved one.</p> | |||
<p>First, we should recall what "PSKOV" consists of:</p> | |||
<ol> | |||
<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> | |||
<li>Helper <a href="https://opengamestudio.org/lfsa/en/index.html">Python script</a> to save generated files to disk</li> | |||
</ol> | |||
<p>Helper script is used to bypass web page restriction to access | |||
local file system.</p> | |||
<p>The script itself is a tiny web server with the following commands:</p> | |||
<table> | |||
<thead> | |||
<tr> | |||
<th>№</th> | |||
<th>Command</th> | |||
<th>Details</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<tr> | |||
<td>1</td> | |||
<td><code>GET /path</code></td> | |||
<td>Get current working directory path</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="pskov-again.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ht-sound.html">Sound support and the search for a new direction</a> | |||
@@ -209,33 +249,6 @@ glue code where it can save up to 30% of code</p> | |||
<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> | |||
<p class="pagination_title">Page 1 of 8</p> | |||
<p> | |||
@@ -24,6 +24,33 @@ | |||
<center> | |||
<h1>News</h1> | |||
<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> | |||
@@ -185,23 +212,6 @@ It seems that right now we have less completed features than before the release | |||
<a href="teaching-kids-to-program.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /></p> | |||
<p>It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew.</p> | |||
<p>As a result of all these changes, we came to the end of the year 2018 without a tool, but with a clear understanding of what tool are we making.</p> | |||
<p>There are plenty of fine game development tools out there. Some of them are even open source. We spent plenty of time trying them, and some are quite good.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 2 of 8</p> | |||
<p> | |||
@@ -24,6 +24,23 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /></p> | |||
<p>It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew.</p> | |||
<p>As a result of all these changes, we came to the end of the year 2018 without a tool, but with a clear understanding of what tool are we making.</p> | |||
<p>There are plenty of fine game development tools out there. Some of them are even open source. We spent plenty of time trying them, and some are quite good.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Ideal games and game development tools</a> | |||
@@ -189,24 +206,6 @@ | |||
<a href="the-year-of-lessons.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /></p> | |||
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p> | |||
<p><strong>Brief history</strong></p> | |||
<p>Opensource Game Studio project is 12 years old now.</p> | |||
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever. Probably right after finishing Half-Life 2 or Morrowind. 99.99% of those who wanted to participate weathered during a couple of years leaving only the two of us: Michael (coding) and Ivan (the rest). The project was in a constant turmoil because we had no clear purpose and discipline. Thus, we only got a handful of demonstrations during that period.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 3 of 8</p> | |||
<p> | |||
@@ -24,6 +24,24 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /></p> | |||
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p> | |||
<p><strong>Brief history</strong></p> | |||
<p>Opensource Game Studio project is 12 years old now.</p> | |||
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever. Probably right after finishing Half-Life 2 or Morrowind. 99.99% of those who wanted to participate weathered during a couple of years leaving only the two of us: Michael (coding) and Ivan (the rest). The project was in a constant turmoil because we had no clear purpose and discipline. Thus, we only got a handful of demonstrations during that period.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Back to the Static</a> | |||
@@ -164,25 +182,6 @@ | |||
<a href="lets-go.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">The year of challenges</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-01_the-year-of-challenges.png" alt="Rocket launch at Baikonur" /></p> | |||
<p>This article describes our plans for 2017.</p> | |||
<p>Our past plans suggested we would have Android platform support by this time. However, we have a long way to go, before we can declare Android support. See for yourself:</p> | |||
<p><img src="../../images/2017-01_mjin-android-gles.png" alt="Rendering cubes on Android" /></p> | |||
<p>Some people would consider this a failure. We don't. We see a chance to start low and jump high!</p> | |||
<p>Having only worked with liberal and forgiving desktop environments, Android was a complete surprise for us. Android punished us for everything: memory, resources, graphics. The usual Android response was either a crash, or an empty screen.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 4 of 8</p> | |||
<p> | |||
@@ -24,6 +24,25 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">The year of challenges</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-01_the-year-of-challenges.png" alt="Rocket launch at Baikonur" /></p> | |||
<p>This article describes our plans for 2017.</p> | |||
<p>Our past plans suggested we would have Android platform support by this time. However, we have a long way to go, before we can declare Android support. See for yourself:</p> | |||
<p><img src="../../images/2017-01_mjin-android-gles.png" alt="Rendering cubes on Android" /></p> | |||
<p>Some people would consider this a failure. We don't. We see a chance to start low and jump high!</p> | |||
<p>Having only worked with liberal and forgiving desktop environments, Android was a complete surprise for us. Android punished us for everything: memory, resources, graphics. The usual Android response was either a crash, or an empty screen.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Happy 2017</a> | |||
@@ -175,23 +194,6 @@ | |||
<a href="september-live-session-announcement-tomorrow.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Live session: 25 September 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a> | |||
It's time to create simple Mahjong solitaire game.</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 5 of 8</p> | |||
<p> | |||
@@ -24,6 +24,23 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Live session: 25 September 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a> | |||
It's time to create simple Mahjong solitaire game.</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">August 2016 recap</a> | |||
@@ -162,21 +179,6 @@ | |||
<a href="rolling-ball-live-session-pt2.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 6 of 8</p> | |||
<p> | |||
@@ -24,6 +24,21 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">SOON: Creating a simple game live (Editor 0.8)</a> | |||
@@ -165,31 +180,6 @@ | |||
<a href="2015-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p> | |||
<p>Editor 0.6.0 got the following new features:</p> | |||
<ol> | |||
<li>Camera and light node positioning</li> | |||
<li>Node rotation along X axis</li> | |||
<li>Node scripting support</li> | |||
<li>Thumbnail dialog to preview models when editing scene node model properties</li> | |||
<li>Node copying and pasting</li> | |||
<li>Node selection by LMB click in the scene</li> | |||
<li>Window geometry and state restoration after restart</li> | |||
</ol> | |||
<p>We don't have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 7 of 8</p> | |||
<p> | |||
@@ -24,6 +24,31 @@ | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p> | |||
<p>Editor 0.6.0 got the following new features:</p> | |||
<ol> | |||
<li>Camera and light node positioning</li> | |||
<li>Node rotation along X axis</li> | |||
<li>Node scripting support</li> | |||
<li>Thumbnail dialog to preview models when editing scene node model properties</li> | |||
<li>Node copying and pasting</li> | |||
<li>Node selection by LMB click in the scene</li> | |||
<li>Window geometry and state restoration after restart</li> | |||
</ol> | |||
<p>We don't have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Editor 0.5.0 and plans for 0.6.0</a> | |||
@@ -0,0 +1,114 @@ | |||
<!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 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> | |||
<div id="lang"> | |||
<a href="../../en/news/pskov-again.html">EN</a> | |||
<a href="../../ru/news/pskov-again.html">RU</a> | |||
</div> | |||
<div class="clear"></div> | |||
</div> | |||
</div> | |||
<h3 class="left_item_title">In the news...</h3> | |||
<center> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="pskov-again.html">Back to the development of "PSKOV"</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2024-11-14 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2024_lha-path.gif" alt="lha" /></p> | |||
<h1 id="pskovtoday">"PSKOV" today</h1> | |||
<p>Now, we have an old "PSKOV" version and we need an improved one.</p> | |||
<p>First, we should recall what "PSKOV" consists of:</p> | |||
<ol> | |||
<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> | |||
<li>Helper <a href="https://opengamestudio.org/lfsa/en/index.html">Python script</a> to save generated files to disk</li> | |||
</ol> | |||
<p>Helper script is used to bypass web page restriction to access | |||
local file system.</p> | |||
<p>The script itself is a tiny web server with the following commands:</p> | |||
<table> | |||
<thead> | |||
<tr> | |||
<th>№</th> | |||
<th>Command</th> | |||
<th>Details</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<tr> | |||
<td>1</td> | |||
<td><code>GET /path</code></td> | |||
<td>Get current working directory path</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td><code>POST /list</code></td> | |||
<td>Get a list of files in the requested directory</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td><code>POST /read</code></td> | |||
<td>Get file's contents</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td><code>POST /write</code></td> | |||
<td>Write file's contents</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
<h1 id="pskovtomorrow">"PSKOV" tomorrow</h1> | |||
<p>Thus, the simplest way to get back to "PSKOV" development is to rewrite the | |||
helper script. I decided to replace Python with Kotlin because:</p> | |||
<ol> | |||
<li>Kotlin can be compiled for desktop, mobile, and web</li> | |||
<li>Kotlin is strictly typed</li> | |||
</ol> | |||
<p>These two factors simplify future work with portable code.</p> | |||
<p>As of now, I have <code>GET /path</code> implemented for JVM, macOS, and Windows (image | |||
in the beginning).</p> | |||
<h1 id="november">November</h1> | |||
<p>I plan to implement the following commands in November:</p> | |||
<ul> | |||
<li><code>POST /list</code></li> | |||
<li><code>POST /read</code></li> | |||
</ul> | |||
</div> | |||
</div> | |||
<div id="disqus_thread"></div> | |||
<script> | |||
var disqus_config = function () { | |||
this.page.url = "https://opengamestudio.org/en/news/pskov-again.html"; | |||
this.page.identifier = "pskov-again.html"; | |||
}; | |||
(function() { // DON'T EDIT BELOW THIS LINE | |||
var d = document, s = d.createElement('script'); | |||
s.src = 'https://opengamestudio.disqus.com/embed.js'; | |||
s.setAttribute('data-timestamp', +new Date()); | |||
(d.head || d.body).appendChild(s); | |||
})(); | |||
</script> | |||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> | |||
<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> |
@@ -0,0 +1,53 @@ | |||
Title: Возвращение к разработке «ПСКОВа» | |||
Date: 2024-11-14 00:00 | |||
Category: News | |||
Slug: pskov-again | |||
Lang: ru | |||
![lha][lha] | |||
# «ПСКОВ» сегодня | |||
Итак, у нас есть старая версия «ПСКОВа», а нам нужна новая с улучшенными | |||
характеристиками. | |||
Первым делом стоит вспомнить, из чего состоит «ПСКОВ»: | |||
1. Непосредственно [генератор][pskov-ru] в виде веб-страницы на HTML + JavaScript | |||
1. Вспомогательный [скрипт Python][lfsa-ru] для сохранения генерируемых файлов на диске | |||
Вспомогательный скрипт нужен по одной причине: веб-страницам запрещено общаться | |||
с локальной файловой системой по соображениям безопасности. | |||
Скрипт представляет из себя крошечный веб-сервер со следующими командами: | |||
| № | Команда | Детали | | |||
|---|---|---| | |||
| 1 | `GET /path` | Получение пути к текущей рабочей директории | | |||
| 2 | `POST /list` | Получение списка файлов переданного в теле запроса пути | | |||
| 3 | `POST /read` | Получение содержимого файла | | |||
| 4 | `POST /write` | Запись содержимого файла | | |||
# «ПСКОВ» завтра | |||
Самым простым способ вернуться к разработке «ПСКОВа», таким образом, является | |||
перераработка вспомогательного скрипта. На замену Python я выбрал Kotlin | |||
по двум причинам: | |||
1. Kotlin можно скомпилировать под десктоп, мобилки и веб | |||
1. Kotlin имеет строгую типизацию | |||
Оба этих фактора упрощают в будущем работу c портируемым кодом. | |||
Что касается переработки, то на текущий момент готова команда `GET /path` | |||
на платформах JVM, macOS и Windows (изображение в начале). | |||
# Ноябрь | |||
В ноябре я планирую реализовать две команды: | |||
* `POST /list` | |||
* `POST /read` | |||
[lha]: ../../images/2024_lha-path.gif | |||
[pskov-ru]: https://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html | |||
[lfsa-ru]: https://opengamestudio.org/lfsa/ru/index.html |
@@ -24,6 +24,31 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="pskov-again.html">Возвращение к разработке «ПСКОВа»</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2024-11-14 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2024_lha-path.gif" alt="lha" /></p> | |||
<h1 id="">«ПСКОВ» сегодня</h1> | |||
<p>Итак, у нас есть старая версия «ПСКОВа», а нам нужна новая с улучшенными | |||
характеристиками.</p> | |||
<p>Первым делом стоит вспомнить, из чего состоит «ПСКОВ»:</p> | |||
<ol> | |||
<li>Непосредственно <a href="https://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">генератор</a> в виде веб-страницы на HTML + JavaScript</li> | |||
<li>Вспомогательный <a href="https://opengamestudio.org/lfsa/ru/index.html">скрипт Python</a> для сохранения генерируемых файлов на диске</li> | |||
</ol> | |||
<p>Вспомогательный скрипт нужен по одной причине: веб-страницам запрещено общаться | |||
с локальной файловой системой по соображениям безопасности.</p> | |||
<p>Скрипт представляет из себя крошечный веб-сервер со следующими командами:. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="pskov-again.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ht-sound.html">Звук и поиск нового курса</a> | |||
@@ -211,31 +236,6 @@ class memory_Context: | |||
<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> | |||
<p class="pagination_title">Страница 1 из 8</p> | |||
<p> | |||
@@ -24,6 +24,31 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<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> | |||
@@ -185,22 +210,6 @@ Ubuntu Edge</a>. Особенностью продукта должна была | |||
<a href="teaching-kids-to-program.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Год переосмысления</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Бенгальский огонь" /></p> | |||
<p>Этот год во-многом стал для нас годом переосмысления и определенности. Как некоторые из вас помнят, мы начинали этот проект, для создания среды для разработки игр. В течение многих лет идея развивалась от одной формы к другой, иногда изменения были значительными, в других случаях мы отбрасывали весь код и начинали заново.</p> | |||
<p>В результате всех этих изменений мы подошли к концу 2018 года без готового инструмента, но с четким пониманием того, что за инструмент мы создаем.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 2 из 8</p> | |||
<p> | |||
@@ -24,6 +24,22 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Год переосмысления</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Бенгальский огонь" /></p> | |||
<p>Этот год во-многом стал для нас годом переосмысления и определенности. Как некоторые из вас помнят, мы начинали этот проект, для создания среды для разработки игр. В течение многих лет идея развивалась от одной формы к другой, иногда изменения были значительными, в других случаях мы отбрасывали весь код и начинали заново.</p> | |||
<p>В результате всех этих изменений мы подошли к концу 2018 года без готового инструмента, но с четким пониманием того, что за инструмент мы создаем.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Идеальные игры и средства для их разработки</a> | |||
@@ -186,24 +202,6 @@ | |||
<a href="the-year-of-lessons.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">Итоги 2017-го</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Игра на память в фоне" /></p> | |||
<p>Настало время сделать ревизию наших достижений в 2017 году и проверить, насколько они следуют основной цели проекта Opensource Game Studio.</p> | |||
<p><strong>Краткая история</strong></p> | |||
<p>Проекту Opensource Game Studio уже 12 лет.</p> | |||
<p><strong>2005.</strong> Мы начали проект с <a href="https://unixforum.org/index.php?showtopic=9989">фанатичного призыва</a> к созданию самой лучшей игры. Видимо, сразу же после прохождения Half-Life 2 или Morrowind. 99.99% тех, кто хотел участвовать, отвалились в течение первых двух лет. Остались лишь два человека: Михаил (программирование) и Иван (всё остальное). Проект находился в стадии постоянного беспорядка, т.к. у нас не было ни чёткой цели, ни дисциплины. Неудивительно, что за этот период мы можем похвастаться лишь небольшим набором сумбурных демонстраций.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 3 из 8</p> | |||
<p> | |||
@@ -24,6 +24,24 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">Итоги 2017-го</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Игра на память в фоне" /></p> | |||
<p>Настало время сделать ревизию наших достижений в 2017 году и проверить, насколько они следуют основной цели проекта Opensource Game Studio.</p> | |||
<p><strong>Краткая история</strong></p> | |||
<p>Проекту Opensource Game Studio уже 12 лет.</p> | |||
<p><strong>2005.</strong> Мы начали проект с <a href="https://unixforum.org/index.php?showtopic=9989">фанатичного призыва</a> к созданию самой лучшей игры. Видимо, сразу же после прохождения Half-Life 2 или Morrowind. 99.99% тех, кто хотел участвовать, отвалились в течение первых двух лет. Остались лишь два человека: Михаил (программирование) и Иван (всё остальное). Проект находился в стадии постоянного беспорядка, т.к. у нас не было ни чёткой цели, ни дисциплины. Неудивительно, что за этот период мы можем похвастаться лишь небольшим набором сумбурных демонстраций.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Назад в Статику</a> | |||
@@ -164,25 +182,6 @@ | |||
<a href="lets-go.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">Год испытаний</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-01_the-year-of-challenges.png" alt="Запуск ракеты на Байконуре" /></p> | |||
<p>Эта статья содержит наши планы на 2017 год.</p> | |||
<p>Наши предыдущие планы предполагали, что сейчас у нас уже будет поддержка платформы Android. Тем не менее, у нас впереди ещё очень много работы, прежде чем мы сможем объявить о поддержке Android. Судите сами:</p> | |||
<p><img src="../../images/2017-01_mjin-android-gles.png" alt="Отображение кубов на Android" /></p> | |||
<p>Кто-нибудь может посчитать это неудачей. Но не мы. Мы видим шанс начать с низкого старта и прыгнуть высоко!</p> | |||
<p>Т.к. ранее мы имели опыт работы лишь с либеральным и всё прощающим настольным ПК, Android стал для нас полной неожиданностью. На каждом шагу нас ожидало наказание за фривольное использование памяти, ресурсов, графики. Чаще всего в ответ на наши действия мы получали либо падение приложения, либо пустой экран.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 4 из 8</p> | |||
<p> | |||
@@ -24,6 +24,25 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">Год испытаний</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-01_the-year-of-challenges.png" alt="Запуск ракеты на Байконуре" /></p> | |||
<p>Эта статья содержит наши планы на 2017 год.</p> | |||
<p>Наши предыдущие планы предполагали, что сейчас у нас уже будет поддержка платформы Android. Тем не менее, у нас впереди ещё очень много работы, прежде чем мы сможем объявить о поддержке Android. Судите сами:</p> | |||
<p><img src="../../images/2017-01_mjin-android-gles.png" alt="Отображение кубов на Android" /></p> | |||
<p>Кто-нибудь может посчитать это неудачей. Но не мы. Мы видим шанс начать с низкого старта и прыгнуть высоко!</p> | |||
<p>Т.к. ранее мы имели опыт работы лишь с либеральным и всё прощающим настольным ПК, Android стал для нас полной неожиданностью. На каждом шагу нас ожидало наказание за фривольное использование памяти, ресурсов, графики. Чаще всего в ответ на наши действия мы получали либо падение приложения, либо пустой экран.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Счастливого 2017-го</a> | |||
@@ -174,23 +193,6 @@ | |||
<a href="september-live-session-announcement-tomorrow.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Прямой эфир: 25 сентября 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
<p><a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio%3A+%D0%A1%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8C+2016&iso=20160925T13&p1=166&ah=2">25 сентября 2016 в 13:00 MSK</a> мы проведём <a href="https://www.livecoding.tv/kornerr">прямой эфир</a>. | |||
Самое время создать простой пасьянс Маджонг</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 5 из 8</p> | |||
<p> | |||
@@ -24,6 +24,23 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Прямой эфир: 25 сентября 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
<p><a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio%3A+%D0%A1%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8C+2016&iso=20160925T13&p1=166&ah=2">25 сентября 2016 в 13:00 MSK</a> мы проведём <a href="https://www.livecoding.tv/kornerr">прямой эфир</a>. | |||
Самое время создать простой пасьянс Маджонг</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">Август 2016 кратко</a> | |||
@@ -160,21 +177,6 @@ | |||
<a href="rolling-ball-live-session-pt2.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Создание игры в прямом эфире: 31 января 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B&iso=20160131T14&p1=166&ah=3">31 января 2016 в 14:00 MSK</a>. Присоединяйтесь!</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 6 из 8</p> | |||
<p> | |||
@@ -24,6 +24,21 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Создание игры в прямом эфире: 31 января 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B&iso=20160131T14&p1=166&ah=3">31 января 2016 в 14:00 MSK</a>. Присоединяйтесь!</p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">СКОРО: Создание простой игры в прямом эфире (Редактор 0.8)</a> | |||
@@ -166,30 +181,6 @@ | |||
<a href="2015-roadmap.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Редактор 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Мы завершили работу над версией 0.6.0 редактора. Вы можете <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">увидеть 0.6.0 в действии здесь</a>. </p> | |||
<p>Список новых возможностей Редактора 0.6.0:</p> | |||
<ol> | |||
<li>Позиционирование узлов с камерой и светом</li> | |||
<li>Вращение узлов по оси X</li> | |||
<li>Поддержка скриптов у узлов</li> | |||
<li>Диалог для предпросмотра моделей при редактировании моделей у узла</li> | |||
<li>Копирование и вставка узлов</li> | |||
<li>Выбор узла с помощью клика мышью в сцене</li> | |||
<li>Восстановление позиции и состояния окна после перезапуска. . .</li> | |||
</ol> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Страница 7 из 8</p> | |||
<p> | |||
@@ -24,6 +24,30 @@ | |||
<center> | |||
<h1>Новости</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Редактор 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Мы завершили работу над версией 0.6.0 редактора. Вы можете <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">увидеть 0.6.0 в действии здесь</a>. </p> | |||
<p>Список новых возможностей Редактора 0.6.0:</p> | |||
<ol> | |||
<li>Позиционирование узлов с камерой и светом</li> | |||
<li>Вращение узлов по оси X</li> | |||
<li>Поддержка скриптов у узлов</li> | |||
<li>Диалог для предпросмотра моделей при редактировании моделей у узла</li> | |||
<li>Копирование и вставка узлов</li> | |||
<li>Выбор узла с помощью клика мышью в сцене</li> | |||
<li>Восстановление позиции и состояния окна после перезапуска. . .</li> | |||
</ol> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Читать далее</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Редактор 0.5.0 и планы для 0.6.0</a> | |||
@@ -0,0 +1,116 @@ | |||
<!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 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> | |||
<div id="lang"> | |||
<a href="../../en/news/pskov-again.html">EN</a> | |||
<a href="../../ru/news/pskov-again.html">RU</a> | |||
</div> | |||
<div class="clear"></div> | |||
</div> | |||
</div> | |||
<h3 class="left_item_title">В новостях...</h3> | |||
<center> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="pskov-again.html">Возвращение к разработке «ПСКОВа»</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2024-11-14 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2024_lha-path.gif" alt="lha" /></p> | |||
<h1 id="">«ПСКОВ» сегодня</h1> | |||
<p>Итак, у нас есть старая версия «ПСКОВа», а нам нужна новая с улучшенными | |||
характеристиками.</p> | |||
<p>Первым делом стоит вспомнить, из чего состоит «ПСКОВ»:</p> | |||
<ol> | |||
<li>Непосредственно <a href="https://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">генератор</a> в виде веб-страницы на HTML + JavaScript</li> | |||
<li>Вспомогательный <a href="https://opengamestudio.org/lfsa/ru/index.html">скрипт Python</a> для сохранения генерируемых файлов на диске</li> | |||
</ol> | |||
<p>Вспомогательный скрипт нужен по одной причине: веб-страницам запрещено общаться | |||
с локальной файловой системой по соображениям безопасности.</p> | |||
<p>Скрипт представляет из себя крошечный веб-сервер со следующими командами:</p> | |||
<table> | |||
<thead> | |||
<tr> | |||
<th>№</th> | |||
<th>Команда</th> | |||
<th>Детали</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<tr> | |||
<td>1</td> | |||
<td><code>GET /path</code></td> | |||
<td>Получение пути к текущей рабочей директории</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td><code>POST /list</code></td> | |||
<td>Получение списка файлов переданного в теле запроса пути</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td><code>POST /read</code></td> | |||
<td>Получение содержимого файла</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td><code>POST /write</code></td> | |||
<td>Запись содержимого файла</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
<h1 id="-1">«ПСКОВ» завтра</h1> | |||
<p>Самым простым способ вернуться к разработке «ПСКОВа», таким образом, является | |||
перераработка вспомогательного скрипта. На замену Python я выбрал Kotlin | |||
по двум причинам:</p> | |||
<ol> | |||
<li>Kotlin можно скомпилировать под десктоп, мобилки и веб</li> | |||
<li>Kotlin имеет строгую типизацию</li> | |||
</ol> | |||
<p>Оба этих фактора упрощают в будущем работу c портируемым кодом.</p> | |||
<p>Что касается переработки, то на текущий момент готова команда <code>GET /path</code> | |||
на платформах JVM, macOS и Windows (изображение в начале).</p> | |||
<h1 id="-2">Ноябрь</h1> | |||
<p>В ноябре я планирую реализовать две команды:</p> | |||
<ul> | |||
<li><code>POST /list</code></li> | |||
<li><code>POST /read</code></li> | |||
</ul> | |||
</div> | |||
</div> | |||
<div id="disqus_thread"></div> | |||
<script> | |||
var disqus_config = function () { | |||
this.page.url = "https://opengamestudio.org/ru/news/pskov-again.html"; | |||
this.page.identifier = "pskov-again.html"; | |||
}; | |||
(function() { // DON'T EDIT BELOW THIS LINE | |||
var d = document, s = d.createElement('script'); | |||
s.src = 'https://opengamestudio.disqus.com/embed.js'; | |||
s.setAttribute('data-timestamp', +new Date()); | |||
(d.head || d.body).appendChild(s); | |||
})(); | |||
</script> | |||
<noscript>Пожалуйста, включите JavaScript для просмотра <a href="https://disqus.com/?ref_noscript">комментариев на платформе Disqus.</a></noscript> | |||
<div id="footer"> | |||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a> | |||
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |