Browse Source

Publish 2018-06-27 Example-driven development article

dev
parent
commit
8f5eb01ee4
22 changed files with 1000 additions and 267 deletions
  1. BIN
      2018-06-27-example-driven-development.png
  2. +2
    -1
      README.md
  3. +4
    -0
      archives.html
  4. +64
    -43
      author/opensource-game-studio.html
  5. +19
    -21
      author/opensource-game-studio2.html
  6. +21
    -24
      author/opensource-game-studio3.html
  7. +24
    -0
      author/opensource-game-studio4.html
  8. +64
    -43
      category/news.html
  9. +19
    -21
      category/news2.html
  10. +21
    -24
      category/news3.html
  11. +24
    -0
      category/news4.html
  12. +174
    -0
      example-driven-development-ru.html
  13. +169
    -0
      example-driven-development.html
  14. +90
    -1
      feeds/all.atom.xml
  15. +43
    -1
      feeds/news.atom.xml
  16. +64
    -43
      index.html
  17. +19
    -21
      index2.html
  18. +21
    -24
      index3.html
  19. +24
    -0
      index4.html
  20. +70
    -0
      pelican/content/articles/2018-06-27-example-driven-development-ru.md
  21. +64
    -0
      pelican/content/articles/2018-06-27-example-driven-development.md
  22. BIN
      pelican/content/images/2018-06-27-example-driven-development.png

BIN
2018-06-27-example-driven-development.png View File

Before After
Width: 1024  |  Height: 768  |  Size: 93KB

+ 2
- 1
README.md View File

@@ -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
```



+ 4
- 0
archives.html View File

@@ -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>


+ 64
- 43
author/opensource-game-studio.html View File

@@ -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>


+ 19
- 21
author/opensource-game-studio2.html View File

@@ -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>


+ 21
- 24
author/opensource-game-studio3.html View File

@@ -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>


+ 24
- 0
author/opensource-game-studio4.html View File

@@ -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


+ 64
- 43
category/news.html View File

@@ -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>


+ 19
- 21
category/news2.html View File

@@ -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>


+ 21
- 24
category/news3.html View File

@@ -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>


+ 24
- 0
category/news4.html View File

@@ -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


+ 174
- 0
example-driven-development-ru.html View File

@@ -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>

+ 169
- 0
example-driven-development.html View File

@@ -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>

+ 90
- 1
feeds/all.atom.xml View File

@@ -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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /&gt;&lt;/p&gt;
<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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /&gt;&lt;/p&gt;
&lt;p&gt;This article explains how the third OpenSceneGraph cross-platform example
opened our eyes to example-driven development.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The third OpenSceneGraph cross-platform example&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The third OpenSceneGraph cross-platform example explains how to implement
&lt;a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging"&gt;remote debugging across platforms&lt;/a&gt;. This example is less about
OpenSceneGraph and more about different platforms.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;desktops have firewalls&lt;/li&gt;
&lt;li&gt;mobiles have restrictions on background processes&lt;/li&gt;
&lt;li&gt;web browsers are HTTP clients by design&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's why we decided to create a mediator between debugged application and UI.
&lt;a href="https://github.com/OGStudio/debug-broker"&gt;Debug broker&lt;/a&gt;, 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.&lt;/p&gt;
&lt;p&gt;Both &lt;a href="https://github.com/OGStudio/debug-ui"&gt;debug UI&lt;/a&gt; and &lt;a href="https://github.com/OGStudio/debug-broker"&gt;debug broker&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example-driven development establishment&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once the third example was implemented, we realized how important and
beneficial it is to develop new features outside the main project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the main project is freed from excessive commit noise&lt;/li&gt;
&lt;li&gt;a new feature is publicly shared for everyone to learn, criticize, and improve&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When we publicly share our knowledge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we must create documentation for everyone (including ourselves later) to understand what's going on&lt;/li&gt;
&lt;li&gt;we must not use hacks because that would break your trust in us&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;That's it for explaining how the third OpenSceneGraph cross-platform example
opened our eyes to example-driven development.&lt;/p&gt;</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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /&gt;&lt;/p&gt;
&lt;p&gt;Эта статья описывает то, как создание третьего кросс-платформенного примера
OpenSceneGraph привело нас к разработке через создание примеров.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Третий кросс-платформенный пример OpenSceneGraph&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Третий кросс-платформенный пример OpenSceneGraph содержит реализацию
&lt;a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging"&gt;удалённой отладки, работающей на всех поддерживаемых платформах&lt;/a&gt;.
Этот пример относится не столько к OpenSceneGraph, сколько к поддержке
различных платформ.&lt;/p&gt;
&lt;p&gt;Удалённое взаимодействие ныне предполагает использование HTTP(s) поверх
TCP/IP. Таким образом, первая идея реализации подразумевала встраивание сервера
HTTP в приложение, чтобы клиенты HTTP могли взаимодействовать с этим сервером.
Однако, раздача HTTP на различных платформах имеет свои сложности:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;на десктопах есть межсетевые экраны (firewalls)&lt;/li&gt;
&lt;li&gt;на мобилках есть ограничения по работе фоновых процессов&lt;/li&gt;
&lt;li&gt;веб-браузеры являются клиентами HTTP по дизайну&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Эти ограничения подтолкнули нас к созданию посредника между отлаживаемым
приложением и пользовательским интерфейсом отладки.
&lt;a href="https://github.com/OGStudio/debug-broker"&gt;Брокер отладки&lt;/a&gt;, небольшое приложение Node.js, стало тем самым
посредником. Брокер отладки не имеет внешних зависимостей, поэтому его легко
использовать практически везде. Благодаря тому, что брокер отладки - это
серверное приложение, его достаточно настроить лишь раз и использовать для
любого количества приложений.&lt;/p&gt;
&lt;p&gt;И &lt;a href="https://github.com/OGStudio/debug-ui"&gt;пользовательский интерфейс отладки&lt;/a&gt;,
и &lt;a href="https://github.com/OGStudio/debug-broker"&gt;брокер отладки&lt;/a&gt; используют JavaScript, т.к. мы хотели сделать
эти инструменты максимально доступными без предварительной установки. Данное
решение привело нас к реализации инструментов именно для веб-браузеров.
Десктопное приложение потребовало бы дополнительных усилий на установку и
поддержку, что лишь усложнило бы работу с инструментами.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Разработка через создание примеров&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;После создания третьего примера мы осознали важность и достоинства разработки
новых функций вне основного проекта:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;освобождение основного проекта от шума изменений (commit noise)&lt;/li&gt;
&lt;li&gt;публичное освещение новой функции приглашает всех к её изучению, критике и улучшению&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Когда мы делимся нашими знаниями:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;мы обязаны создавать документацию, объясняющую происходящее (в том числе для нас самих позже)&lt;/li&gt;
&lt;li&gt;мы обязаны сторониться непродуманных решений, т.к. они повредят нашей репутации&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;С этого момента все новые функции вроде обработки ввода, загрузки раскладок
Маджонга, кэширования ресурсов и т.п. мы будем сначала реализовывать в виде
примеров. Мы называем этот подход разработкой через создание примеров.&lt;/p&gt;
&lt;p&gt;На этом мы заканчиваем описание того, как создание третьего
кросс-платформенного примера OpenSceneGraph привело нас к разработке через
создание примеров.&lt;/p&gt;</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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /&gt;&lt;/p&gt;
&lt;p&gt;This article summarizes the work we did to produce the first two
cross-platform OpenSceneGraph examples.&lt;/p&gt;
&lt;p&gt;By the time &lt;a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html"&gt;the first technology demonstration of OGS Mahjong 2&lt;/a&gt;


+ 43
- 1
feeds/news.atom.xml View File

@@ -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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /&gt;&lt;/p&gt;
<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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png" /&gt;&lt;/p&gt;
&lt;p&gt;This article explains how the third OpenSceneGraph cross-platform example
opened our eyes to example-driven development.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The third OpenSceneGraph cross-platform example&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The third OpenSceneGraph cross-platform example explains how to implement
&lt;a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging"&gt;remote debugging across platforms&lt;/a&gt;. This example is less about
OpenSceneGraph and more about different platforms.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;desktops have firewalls&lt;/li&gt;
&lt;li&gt;mobiles have restrictions on background processes&lt;/li&gt;
&lt;li&gt;web browsers are HTTP clients by design&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's why we decided to create a mediator between debugged application and UI.
&lt;a href="https://github.com/OGStudio/debug-broker"&gt;Debug broker&lt;/a&gt;, 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.&lt;/p&gt;
&lt;p&gt;Both &lt;a href="https://github.com/OGStudio/debug-ui"&gt;debug UI&lt;/a&gt; and &lt;a href="https://github.com/OGStudio/debug-broker"&gt;debug broker&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example-driven development establishment&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once the third example was implemented, we realized how important and
beneficial it is to develop new features outside the main project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the main project is freed from excessive commit noise&lt;/li&gt;
&lt;li&gt;a new feature is publicly shared for everyone to learn, criticize, and improve&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When we publicly share our knowledge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we must create documentation for everyone (including ourselves later) to understand what's going on&lt;/li&gt;
&lt;li&gt;we must not use hacks because that would break your trust in us&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;That's it for explaining how the third OpenSceneGraph cross-platform example
opened our eyes to example-driven development.&lt;/p&gt;</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">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png" /&gt;&lt;/p&gt;
&lt;p&gt;This article summarizes the work we did to produce the first two
cross-platform OpenSceneGraph examples.&lt;/p&gt;
&lt;p&gt;By the time &lt;a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html"&gt;the first technology demonstration of OGS Mahjong 2&lt;/a&gt;


+ 64
- 43
index.html View File

@@ -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>


+ 19
- 21
index2.html View File

@@ -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>


+ 21
- 24
index3.html View File

@@ -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>


+ 24
- 0
index4.html View File

@@ -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


+ 70
- 0
pelican/content/articles/2018-06-27-example-driven-development-ru.md View File

@@ -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


+ 64
- 0
pelican/content/articles/2018-06-27-example-driven-development.md View File

@@ -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


BIN
pelican/content/images/2018-06-27-example-driven-development.png View File

Before After
Width: 1024  |  Height: 768  |  Size: 93KB

Loading…
Cancel
Save