@@ -39,8 +39,9 @@ To publish new content: | |||
pelican -s publishconf.py | |||
``` | |||
* upload it to GitHub with the following command: | |||
* upload it to GitHub with the following commands: | |||
``` | |||
git add . | |||
git push | |||
``` | |||
@@ -49,6 +49,10 @@ | |||
<table class="table-archive"> | |||
<tbody> | |||
<tr> | |||
<td>Ср 27 Июнь 2018</td> | |||
<td><a href='example-driven-development.html'>Example-driven development</a></td> | |||
</tr> | |||
<tr> | |||
<td>Пт 20 Апрель 2018</td> | |||
<td><a href='openscenegraph-examples.html'>OpenSceneGraph cross-platform examples</a></td> | |||
@@ -47,6 +47,67 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/example-driven-development.html"><h3 class="article-title">Example-driven development</h3></a> | |||
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 Июнь 2018 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development-ru.html">ru</a> | |||
</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<hr class="gradient"/> | |||
<article> | |||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a> | |||
<h6 class="subheader" title="2018-04-20T00:00:00+03:00">Пт 20 Апрель 2018 | |||
@@ -58,35 +119,14 @@ cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> | |||
has been released, we've already had <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">issue request</a> | |||
(to explain how to load images with OpenSceneGraph on Android) hanging for some | |||
time. We considered creating a new tutorial for | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> at first. However, we realized | |||
that it's time-consuming and excessive for such a tiny topic (compared to | |||
what an average game has) as image loading. We decided to continue sharing our | |||
knowledge in the form of concrete examples. That's how | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> were born.</p> | |||
<p>Each example:</p> | |||
<ul> | |||
<li>explains crucial code necessary to perform a specific task</li> | |||
<li>accents platform-specific nuances</li> | |||
<li>provides implementations to cover desktop, mobile, and web platforms</li> | |||
<li>provides a web build to showcase results</li> | |||
</ul> | |||
<p>The first two examples cover the following topics:</p> | |||
<ul> | |||
<li>Embed resource into executable: this greatly simplifies resource handling across platforms</li> | |||
<li>Use PNG images with PNG plugins: this explains the requirements necessary to build and use PNG plugins</li> | |||
</ul> | |||
<p>We will be adding new examples as we proceed with OGS Mahjong 2 development.</p> | |||
<p>That's it for summarizing the work we did to produce the first two cross-platform OpenSceneGraph examples.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
@@ -271,25 +311,6 @@ In case you missed it, here ...</p><p class="subheader">Category: <a href="http: | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 1 of 4</h6> | |||
@@ -48,6 +48,25 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a> | |||
<h6 class="subheader" title="2017-05-12T00:00:00+03:00">Пт 12 Май 2017 | |||
@@ -226,27 +245,6 @@ We have conducted ...</p><p class="subheader">Category: <a href="http://opengame | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 2 of 4</h6> | |||
@@ -48,6 +48,27 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/yesterdays-live-session-short-overview.html"><h3 class="article-title">A few words about live session yesterday</h3></a> | |||
<h6 class="subheader" title="2016-09-26T00:00:00+03:00">Пн 26 Сентябрь 2016 | |||
@@ -218,30 +239,6 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 3 of 4</h6> | |||
@@ -48,6 +48,30 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball-live-session-pt2.html"><h3 class="article-title">Game creation live session (part 2): 7 February 2016</h3></a> | |||
<h6 class="subheader" title="2016-02-02T00:00:00+03:00">Вт 02 Февраль 2016 | |||
@@ -47,6 +47,67 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/example-driven-development.html"><h3 class="article-title">Example-driven development</h3></a> | |||
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 Июнь 2018 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development-ru.html">ru</a> | |||
</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<hr class="gradient"/> | |||
<article> | |||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a> | |||
<h6 class="subheader" title="2018-04-20T00:00:00+03:00">Пт 20 Апрель 2018 | |||
@@ -58,35 +119,14 @@ cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> | |||
has been released, we've already had <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">issue request</a> | |||
(to explain how to load images with OpenSceneGraph on Android) hanging for some | |||
time. We considered creating a new tutorial for | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> at first. However, we realized | |||
that it's time-consuming and excessive for such a tiny topic (compared to | |||
what an average game has) as image loading. We decided to continue sharing our | |||
knowledge in the form of concrete examples. That's how | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> were born.</p> | |||
<p>Each example:</p> | |||
<ul> | |||
<li>explains crucial code necessary to perform a specific task</li> | |||
<li>accents platform-specific nuances</li> | |||
<li>provides implementations to cover desktop, mobile, and web platforms</li> | |||
<li>provides a web build to showcase results</li> | |||
</ul> | |||
<p>The first two examples cover the following topics:</p> | |||
<ul> | |||
<li>Embed resource into executable: this greatly simplifies resource handling across platforms</li> | |||
<li>Use PNG images with PNG plugins: this explains the requirements necessary to build and use PNG plugins</li> | |||
</ul> | |||
<p>We will be adding new examples as we proceed with OGS Mahjong 2 development.</p> | |||
<p>That's it for summarizing the work we did to produce the first two cross-platform OpenSceneGraph examples.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
@@ -271,25 +311,6 @@ In case you missed it, here ...</p><p class="subheader">Category: <a href="http: | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 1 of 4</h6> | |||
@@ -48,6 +48,25 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a> | |||
<h6 class="subheader" title="2017-05-12T00:00:00+03:00">Пт 12 Май 2017 | |||
@@ -226,27 +245,6 @@ We have conducted ...</p><p class="subheader">Category: <a href="http://opengame | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 2 of 4</h6> | |||
@@ -48,6 +48,27 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/yesterdays-live-session-short-overview.html"><h3 class="article-title">A few words about live session yesterday</h3></a> | |||
<h6 class="subheader" title="2016-09-26T00:00:00+03:00">Пн 26 Сентябрь 2016 | |||
@@ -218,30 +239,6 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 3 of 4</h6> | |||
@@ -48,6 +48,30 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball-live-session-pt2.html"><h3 class="article-title">Game creation live session (part 2): 7 February 2016</h3></a> | |||
<h6 class="subheader" title="2016-02-02T00:00:00+03:00">Вт 02 Февраль 2016 | |||
@@ -0,0 +1,174 @@ | |||
<!DOCTYPE html> | |||
<head> | |||
<meta charset="utf-8" /> | |||
<!-- Set the viewport width to device width for mobile --> | |||
<meta name="viewport" content="width=device-width" /> | |||
<title>Разработка через создание примеров</title> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" /> | |||
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script> | |||
<!-- So Firefox can bookmark->"abo this site" --> | |||
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml"> | |||
</head> | |||
<body> | |||
<!-- Nav Bar --> | |||
<nav> | |||
<!-- Show menu items and pages --> | |||
<div class="row"> | |||
<div class="large-12 columns top-bar"> | |||
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1> | |||
</div> | |||
</div> | |||
<div class="row top-menu"> | |||
<div class="large-12 columns"> | |||
<a href="/pages/projects.html" class="menu-button secondary">Projects</a> | |||
<a href="/pages/about.html" class="menu-button secondary">About</a> | |||
</div> | |||
</div> | |||
</nav> | |||
<!-- End Nav --> | |||
<!-- Main Page Content and Sidebar --> | |||
<div class="row"> | |||
<!-- Main Blog Content --> | |||
<div class="large-9 columns"> | |||
<article> | |||
<header> | |||
<h3 class="article-title"><a href="http://opengamestudio.org/example-driven-development-ru.html" rel="bookmark" | |||
title="Permalink to Разработка через создание примеров">Разработка через создание примеров</a></h3> | |||
</header> | |||
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 Июнь 2018 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development.html">en</a> | |||
</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>Эта статья описывает то, как создание третьего кросс-платформенного примера | |||
OpenSceneGraph привело нас к разработке через создание примеров.</p> | |||
<p><strong>Третий кросс-платформенный пример OpenSceneGraph</strong></p> | |||
<p>Третий кросс-платформенный пример OpenSceneGraph содержит реализацию | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">удалённой отладки, работающей на всех поддерживаемых платформах</a>. | |||
Этот пример относится не столько к OpenSceneGraph, сколько к поддержке | |||
различных платформ.</p> | |||
<p>Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх | |||
TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера | |||
HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером. | |||
Однако, раздача HTTP на различных платформах имеет свои сложности:</p> | |||
<ul> | |||
<li>на десктопах есть межсетевые экраны (firewalls)</li> | |||
<li>на мобилках есть ограничения по работе фоновых процессов</li> | |||
<li>веб-браузеры являются клиентами HTTP по дизайну</li> | |||
</ul> | |||
<p>Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым | |||
приложением и пользовательским интерфейсом отладки. | |||
<a href="https://github.com/OGStudio/debug-broker">Брокер отладки</a>, небольшое приложение Node.js, стало тем самым | |||
посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко | |||
использовать практически везде. Благодаря тому, что брокер отладки - это | |||
серверное приложение, его достаточно настроить лишь раз и использовать для | |||
любого количества приложений.</p> | |||
<p>И <a href="https://github.com/OGStudio/debug-ui">пользовательский интерфейс отладки</a>, | |||
и <a href="https://github.com/OGStudio/debug-broker">брокер отладки</a> используют JavaScript, т.к. мы хотели сделать | |||
эти инструменты максимально доступными без предварительной установки. Данное | |||
решение привело нас к реализации инструментов именно для веб-браузеров. | |||
Десктопное приложение потребовало бы дополнительных усилий на установку и | |||
поддержку, что лишь усложнило бы работу с инструментами.</p> | |||
<p><strong>Разработка через создание примеров</strong></p> | |||
<p>После создания третьего примера мы осознали важность и достоинства разработки | |||
новых функций вне основного проекта:</p> | |||
<ul> | |||
<li>освобождение основного проекта от шума изменений (commit noise)</li> | |||
<li>публичное освещение новой функции приглашает всех к её изучению, критике и улучшению</li> | |||
</ul> | |||
<p>Когда мы делимся нашими знаниями:</p> | |||
<ul> | |||
<li>мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже)</li> | |||
<li>мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации</li> | |||
</ul> | |||
<p>С этого момента все новые функции вроде обработки ввода, загрузки раскладок | |||
Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде | |||
примеров. Мы называем этот подход разработкой через создание примеров.</p> | |||
<p>На этом мы заканчиваем описание того, как создание третьего | |||
кросс-платформенного примера OpenSceneGraph привело нас к разработке через | |||
создание примеров.</p> | |||
<p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
</div> | |||
<!-- End Main Content --> | |||
<!-- Sidebar --> | |||
<aside class="large-3 columns"> | |||
<!--k | |||
<h5 class="sidebar-title">Site</h5> | |||
<ul class="side-nav"> | |||
<li><a href="http://opengamestudio.org/archives.html">Archives</a> | |||
<li><a href="http://opengamestudio.org/tags.html">Tags</a> | |||
<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li> | |||
</ul> | |||
<h5 class="sidebar-title">Categories</h5> | |||
<ul class="side-nav"> | |||
<li><a href="http://opengamestudio.org/category/news.html">News</a></li> | |||
</ul> | |||
--> | |||
<h5 class="sidebar-title">Ads</h5> | |||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> | |||
<!-- ogs2 --> | |||
<ins class="adsbygoogle" | |||
style="display:block" | |||
data-ad-client="ca-pub-4473792248813084" | |||
data-ad-slot="9024247127" | |||
data-ad-format="auto"></ins> | |||
<script> | |||
(adsbygoogle = window.adsbygoogle || []).push({}); | |||
</script> | |||
</aside> <!-- End Sidebar --> | |||
</div> <!-- End Main Content and Sidebar --> | |||
<!-- Footer --> | |||
<footer class="row"> | |||
<div class="large-12 columns"> | |||
<hr /> | |||
<div class="row"> | |||
<div class="large-7 columns"> | |||
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<script type="text/javascript"> | |||
var _gaq = _gaq || []; | |||
_gaq.push(['_setAccount', 'UA-3773114-1']); | |||
_gaq.push(['_trackPageview']); | |||
(function() { | |||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; | |||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | |||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); | |||
})(); | |||
</script> | |||
</footer> |
@@ -0,0 +1,169 @@ | |||
<!DOCTYPE html> | |||
<head> | |||
<meta charset="utf-8" /> | |||
<!-- Set the viewport width to device width for mobile --> | |||
<meta name="viewport" content="width=device-width" /> | |||
<title>Example-driven development</title> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" /> | |||
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" /> | |||
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script> | |||
<!-- So Firefox can bookmark->"abo this site" --> | |||
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml"> | |||
</head> | |||
<body> | |||
<!-- Nav Bar --> | |||
<nav> | |||
<!-- Show menu items and pages --> | |||
<div class="row"> | |||
<div class="large-12 columns top-bar"> | |||
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1> | |||
</div> | |||
</div> | |||
<div class="row top-menu"> | |||
<div class="large-12 columns"> | |||
<a href="/pages/projects.html" class="menu-button secondary">Projects</a> | |||
<a href="/pages/about.html" class="menu-button secondary">About</a> | |||
</div> | |||
</div> | |||
</nav> | |||
<!-- End Nav --> | |||
<!-- Main Page Content and Sidebar --> | |||
<div class="row"> | |||
<!-- Main Blog Content --> | |||
<div class="large-9 columns"> | |||
<article> | |||
<header> | |||
<h3 class="article-title"><a href="http://opengamestudio.org/example-driven-development.html" rel="bookmark" | |||
title="Permalink to Example-driven development">Example-driven development</a></h3> | |||
</header> | |||
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 Июнь 2018 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development-ru.html">ru</a> | |||
</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
</div> | |||
<!-- End Main Content --> | |||
<!-- Sidebar --> | |||
<aside class="large-3 columns"> | |||
<!--k | |||
<h5 class="sidebar-title">Site</h5> | |||
<ul class="side-nav"> | |||
<li><a href="http://opengamestudio.org/archives.html">Archives</a> | |||
<li><a href="http://opengamestudio.org/tags.html">Tags</a> | |||
<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li> | |||
</ul> | |||
<h5 class="sidebar-title">Categories</h5> | |||
<ul class="side-nav"> | |||
<li><a href="http://opengamestudio.org/category/news.html">News</a></li> | |||
</ul> | |||
--> | |||
<h5 class="sidebar-title">Ads</h5> | |||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> | |||
<!-- ogs2 --> | |||
<ins class="adsbygoogle" | |||
style="display:block" | |||
data-ad-client="ca-pub-4473792248813084" | |||
data-ad-slot="9024247127" | |||
data-ad-format="auto"></ins> | |||
<script> | |||
(adsbygoogle = window.adsbygoogle || []).push({}); | |||
</script> | |||
</aside> <!-- End Sidebar --> | |||
</div> <!-- End Main Content and Sidebar --> | |||
<!-- Footer --> | |||
<footer class="row"> | |||
<div class="large-12 columns"> | |||
<hr /> | |||
<div class="row"> | |||
<div class="large-7 columns"> | |||
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<script type="text/javascript"> | |||
var _gaq = _gaq || []; | |||
_gaq.push(['_setAccount', 'UA-3773114-1']); | |||
_gaq.push(['_trackPageview']); | |||
(function() { | |||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; | |||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | |||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); | |||
})(); | |||
</script> | |||
</footer> |
@@ -1,5 +1,94 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/all.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-04-20T00:00:00+03:00</updated><entry><title>OpenSceneGraph cross-platform examples</title><link href="http://opengamestudio.org/openscenegraph-examples.html" rel="alternate"></link><updated>2018-04-20T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-04-20:openscenegraph-examples.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /></p> | |||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/all.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-06-27T00:00:00+03:00</updated><entry><title>Example-driven development</title><link href="http://opengamestudio.org/example-driven-development.html" rel="alternate"></link><updated>2018-06-27T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-06-27:example-driven-development.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p></summary></entry><entry><title>Разработка через создание примеров</title><link href="http://opengamestudio.org/example-driven-development-ru.html" rel="alternate"></link><updated>2018-06-27T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-06-27:example-driven-development-ru.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>Эта статья описывает то, как создание третьего кросс-платформенного примера | |||
OpenSceneGraph привело нас к разработке через создание примеров.</p> | |||
<p><strong>Третий кросс-платформенный пример OpenSceneGraph</strong></p> | |||
<p>Третий кросс-платформенный пример OpenSceneGraph содержит реализацию | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">удалённой отладки, работающей на всех поддерживаемых платформах</a>. | |||
Этот пример относится не столько к OpenSceneGraph, сколько к поддержке | |||
различных платформ.</p> | |||
<p>Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх | |||
TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера | |||
HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером. | |||
Однако, раздача HTTP на различных платформах имеет свои сложности:</p> | |||
<ul> | |||
<li>на десктопах есть межсетевые экраны (firewalls)</li> | |||
<li>на мобилках есть ограничения по работе фоновых процессов</li> | |||
<li>веб-браузеры являются клиентами HTTP по дизайну</li> | |||
</ul> | |||
<p>Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым | |||
приложением и пользовательским интерфейсом отладки. | |||
<a href="https://github.com/OGStudio/debug-broker">Брокер отладки</a>, небольшое приложение Node.js, стало тем самым | |||
посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко | |||
использовать практически везде. Благодаря тому, что брокер отладки - это | |||
серверное приложение, его достаточно настроить лишь раз и использовать для | |||
любого количества приложений.</p> | |||
<p>И <a href="https://github.com/OGStudio/debug-ui">пользовательский интерфейс отладки</a>, | |||
и <a href="https://github.com/OGStudio/debug-broker">брокер отладки</a> используют JavaScript, т.к. мы хотели сделать | |||
эти инструменты максимально доступными без предварительной установки. Данное | |||
решение привело нас к реализации инструментов именно для веб-браузеров. | |||
Десктопное приложение потребовало бы дополнительных усилий на установку и | |||
поддержку, что лишь усложнило бы работу с инструментами.</p> | |||
<p><strong>Разработка через создание примеров</strong></p> | |||
<p>После создания третьего примера мы осознали важность и достоинства разработки | |||
новых функций вне основного проекта:</p> | |||
<ul> | |||
<li>освобождение основного проекта от шума изменений (commit noise)</li> | |||
<li>публичное освещение новой функции приглашает всех к её изучению, критике и улучшению</li> | |||
</ul> | |||
<p>Когда мы делимся нашими знаниями:</p> | |||
<ul> | |||
<li>мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже)</li> | |||
<li>мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации</li> | |||
</ul> | |||
<p>С этого момента все новые функции вроде обработки ввода, загрузки раскладок | |||
Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде | |||
примеров. Мы называем этот подход разработкой через создание примеров.</p> | |||
<p>На этом мы заканчиваем описание того, как создание третьего | |||
кросс-платформенного примера OpenSceneGraph привело нас к разработке через | |||
создание примеров.</p></summary></entry><entry><title>OpenSceneGraph cross-platform examples</title><link href="http://opengamestudio.org/openscenegraph-examples.html" rel="alternate"></link><updated>2018-04-20T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-04-20:openscenegraph-examples.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /></p> | |||
<p>This article summarizes the work we did to produce the first two | |||
cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> | |||
@@ -1,5 +1,47 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/news.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-04-20T00:00:00+03:00</updated><entry><title>OpenSceneGraph cross-platform examples</title><link href="http://opengamestudio.org/openscenegraph-examples.html" rel="alternate"></link><updated>2018-04-20T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-04-20:openscenegraph-examples.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /></p> | |||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/news.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-06-27T00:00:00+03:00</updated><entry><title>Example-driven development</title><link href="http://opengamestudio.org/example-driven-development.html" rel="alternate"></link><updated>2018-06-27T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-06-27:example-driven-development.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p></summary></entry><entry><title>OpenSceneGraph cross-platform examples</title><link href="http://opengamestudio.org/openscenegraph-examples.html" rel="alternate"></link><updated>2018-04-20T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-04-20:openscenegraph-examples.html</id><summary type="html"><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /></p> | |||
<p>This article summarizes the work we did to produce the first two | |||
cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> | |||
@@ -47,6 +47,67 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/example-driven-development.html"><h3 class="article-title">Example-driven development</h3></a> | |||
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 Июнь 2018 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development-ru.html">ru</a> | |||
</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
<p>The third OpenSceneGraph cross-platform example explains how to implement | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">remote debugging across platforms</a>. This example is less about | |||
OpenSceneGraph and more about different platforms.</p> | |||
<p>Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated:</p> | |||
<ul> | |||
<li>desktops have firewalls</li> | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That's why we decided to create a mediator between debugged application and UI. | |||
<a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project:</p> | |||
<ul> | |||
<li>the main project is freed from excessive commit noise</li> | |||
<li>a new feature is publicly shared for everyone to learn, criticize, and improve</li> | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<hr class="gradient"/> | |||
<article> | |||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a> | |||
<h6 class="subheader" title="2018-04-20T00:00:00+03:00">Пт 20 Апрель 2018 | |||
@@ -58,35 +119,14 @@ cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> | |||
has been released, we've already had <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">issue request</a> | |||
(to explain how to load images with OpenSceneGraph on Android) hanging for some | |||
time. We considered creating a new tutorial for | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> at first. However, we realized | |||
that it's time-consuming and excessive for such a tiny topic (compared to | |||
what an average game has) as image loading. We decided to continue sharing our | |||
knowledge in the form of concrete examples. That's how | |||
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> were born.</p> | |||
<p>Each example:</p> | |||
<ul> | |||
<li>explains crucial code necessary to perform a specific task</li> | |||
<li>accents platform-specific nuances</li> | |||
<li>provides implementations to cover desktop, mobile, and web platforms</li> | |||
<li>provides a web build to showcase results</li> | |||
</ul> | |||
<p>The first two examples cover the following topics:</p> | |||
<ul> | |||
<li>Embed resource into executable: this greatly simplifies resource handling across platforms</li> | |||
<li>Use PNG images with PNG plugins: this explains the requirements necessary to build and use PNG plugins</li> | |||
</ul> | |||
<p>We will be adding new examples as we proceed with OGS Mahjong 2 development.</p> | |||
<p>That's it for summarizing the work we did to produce the first two cross-platform OpenSceneGraph examples.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
</article> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
@@ -271,25 +311,6 @@ In case you missed it, here ...</p><p class="subheader">Category: <a href="http: | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 1 of 4</h6> | |||
@@ -48,6 +48,25 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ios-tutorial.html"><h3 class="article-title">iOS tutorial</h3></a> | |||
<h6 class="subheader" title="2017-06-08T10:00:00+03:00">Чт 08 Июнь 2017 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ios-tutorial-ru.html">ru</a> | |||
</h6><p><img alt="iOS tutorial" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png" /></p> | |||
<p>This article describes problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">This February</a> we managed to get simple model rendered under iOS in just a few days. We expected to finish iOS tutorial in no time. However, the reality reminded us: it's easy to come ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ios-tutorial.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a> | |||
<h6 class="subheader" title="2017-05-12T00:00:00+03:00">Пт 12 Май 2017 | |||
@@ -226,27 +245,6 @@ We have conducted ...</p><p class="subheader">Category: <a href="http://opengame | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 2 of 4</h6> | |||
@@ -48,6 +48,27 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/ogs-editor-0.10.html"><h3 class="article-title">OGS Editor 0.10 and live session materials</h3></a> | |||
<h6 class="subheader" title="2016-10-03T00:00:00+03:00">Пн 03 Октябрь 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/ogs-editor-0.10-ru.html">ru</a> | |||
</h6><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png" /></p> | |||
<p>Note: we won't release 0.10 for macOS due to technical difficulties with the build system. macOS support will be back for 0.11.</p> | |||
<ul> | |||
<li><strong>OGS Editor 0.10</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/">is available at SourceForge</a>. Simply unpack the archive and launch the run script.</li> | |||
<li><strong>Mahjong Solitaire game</strong> <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">is available at SourceForge</a>, too ...</li></ul><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/ogs-editor-0.10.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/yesterdays-live-session-short-overview.html"><h3 class="article-title">A few words about live session yesterday</h3></a> | |||
<h6 class="subheader" title="2016-09-26T00:00:00+03:00">Пн 26 Сентябрь 2016 | |||
@@ -218,30 +239,6 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<!-- /#posts-list --> | |||
<div class="pagination-centered"> | |||
<h6 class="subheader">Page 3 of 4</h6> | |||
@@ -48,6 +48,30 @@ | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball.html"><h3 class="article-title">"Rolling ball" live session videos and downloads</h3></a> | |||
<h6 class="subheader" title="2016-02-10T00:00:00+03:00">Ср 10 Февраль 2016 | |||
<a class="button secondary small translation-button" href="http://opengamestudio.org/rolling-ball-ru.html">ru</a> | |||
</h6><p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
<p>"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script.</p> | |||
<p>Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge ...</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a> | |||
</p> | |||
<a class="button radius secondary small right" href="http://opengamestudio.org/rolling-ball.html">Read More</a> | |||
<hr class="gradient"/> | |||
</article> | |||
<article> | |||
<a href="http://opengamestudio.org/rolling-ball-live-session-pt2.html"><h3 class="article-title">Game creation live session (part 2): 7 February 2016</h3></a> | |||
<h6 class="subheader" title="2016-02-02T00:00:00+03:00">Вт 02 Февраль 2016 | |||
@@ -0,0 +1,70 @@ | |||
Title: Разработка через создание примеров | |||
Date: 2018-06-27 00:00 | |||
Category: News | |||
Slug: example-driven-development | |||
Lang: ru | |||
![Screenshot][screenshot] | |||
Эта статья описывает то, как создание третьего кросс-платформенного примера | |||
OpenSceneGraph привело нас к разработке через создание примеров. | |||
**Третий кросс-платформенный пример OpenSceneGraph** | |||
Третий кросс-платформенный пример OpenSceneGraph содержит реализацию | |||
[удалённой отладки, работающей на всех поддерживаемых платформах][osgcpe-03]. | |||
Этот пример относится не столько к OpenSceneGraph, сколько к поддержке | |||
различных платформ. | |||
Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх | |||
TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера | |||
HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером. | |||
Однако, раздача HTTP на различных платформах имеет свои сложности: | |||
* на десктопах есть межсетевые экраны (firewalls) | |||
* на мобилках есть ограничения по работе фоновых процессов | |||
* веб-браузеры являются клиентами HTTP по дизайну | |||
Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым | |||
приложением и пользовательским интерфейсом отладки. | |||
[Брокер отладки][debug-broker], небольшое приложение Node.js, стало тем самым | |||
посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко | |||
использовать практически везде. Благодаря тому, что брокер отладки - это | |||
серверное приложение, его достаточно настроить лишь раз и использовать для | |||
любого количества приложений. | |||
И [пользовательский интерфейс отладки][debug-ui], | |||
и [брокер отладки][debug-broker] используют JavaScript, т.к. мы хотели сделать | |||
эти инструменты максимально доступными без предварительной установки. Данное | |||
решение привело нас к реализации инструментов именно для веб-браузеров. | |||
Десктопное приложение потребовало бы дополнительных усилий на установку и | |||
поддержку, что лишь усложнило бы работу с инструментами. | |||
**Разработка через создание примеров** | |||
После создания третьего примера мы осознали важность и достоинства разработки | |||
новых функций вне основного проекта: | |||
* освобождение основного проекта от шума изменений (commit noise) | |||
* публичное освещение новой функции приглашает всех к её изучению, критике и улучшению | |||
Когда мы делимся нашими знаниями: | |||
* мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже) | |||
* мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации | |||
С этого момента все новые функции вроде обработки ввода, загрузки раскладок | |||
Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде | |||
примеров. Мы называем этот подход разработкой через создание примеров. | |||
На этом мы заканчиваем описание того, как создание третьего | |||
кросс-платформенного примера OpenSceneGraph привело нас к разработке через | |||
создание примеров. | |||
[screenshot]: {attach}/images/2018-06-27-example-driven-development.png | |||
[osgcpe-03]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging | |||
[debug-broker]: https://github.com/OGStudio/debug-broker | |||
[debug-ui]: https://github.com/OGStudio/debug-ui | |||
@@ -0,0 +1,64 @@ | |||
Title: Example-driven development | |||
Date: 2018-06-27 00:00 | |||
Category: News | |||
Slug: example-driven-development | |||
Lang: en | |||
![Screenshot][screenshot] | |||
This article explains how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development. | |||
**The third OpenSceneGraph cross-platform example** | |||
The third OpenSceneGraph cross-platform example explains how to implement | |||
[remote debugging across platforms][osgcpe-03]. This example is less about | |||
OpenSceneGraph and more about different platforms. | |||
Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the | |||
first idea was to embed HTTP server into an application and let HTTP clients | |||
interact with the server. However, serving HTTP across all platforms is | |||
complicated: | |||
* desktops have firewalls | |||
* mobiles have restrictions on background processes | |||
* web browsers are HTTP clients by design | |||
That's why we decided to create a mediator between debugged application and UI. | |||
[Debug broker][debug-broker], a small Node.js application, became that mediator. | |||
Debug broker uses no external dependencies, so it's easy to run virtually | |||
anywhere. Also, since debug broker is a server application, you can configure | |||
it once and use it for any number of applications. | |||
Both [debug UI][debug-ui] and [debug broker][debug-broker] use JavaScript | |||
because we wanted these tools to be accessible from anywhere with no prior | |||
installation. This decision limited us to web browser solution. Providing | |||
any sort of desktop application would incur additional installation and | |||
maintenance effort, which would only complicate the tools. | |||
**Example-driven development establishment** | |||
Once the third example was implemented, we realized how important and | |||
beneficial it is to develop new features outside the main project: | |||
* the main project is freed from excessive commit noise | |||
* a new feature is publicly shared for everyone to learn, criticize, and improve | |||
When we publicly share our knowledge: | |||
* we must create documentation for everyone (including ourselves later) to understand what's going on | |||
* we must not use hacks because that would break your trust in us | |||
From now on, all new features like input handling, Mahjong layout loading, | |||
resource caching, etc. are going to be first implemented as examples. | |||
We call this example-driven development. | |||
That's it for explaining how the third OpenSceneGraph cross-platform example | |||
opened our eyes to example-driven development. | |||
[screenshot]: {attach}/images/2018-06-27-example-driven-development.png | |||
[osgcpe-03]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging | |||
[debug-broker]: https://github.com/OGStudio/debug-broker | |||
[debug-ui]: https://github.com/OGStudio/debug-ui | |||