Publish 2018-06-27 Example-driven development article
This commit is contained in:
BIN
2018-06-27-example-driven-development.png
Normal file
BIN
2018-06-27-example-driven-development.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
@@ -39,8 +39,9 @@ To publish new content:
|
|||||||
pelican -s publishconf.py
|
pelican -s publishconf.py
|
||||||
```
|
```
|
||||||
|
|
||||||
* upload it to GitHub with the following command:
|
* upload it to GitHub with the following commands:
|
||||||
```
|
```
|
||||||
|
git add .
|
||||||
git push
|
git push
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,10 @@
|
|||||||
|
|
||||||
<table class="table-archive">
|
<table class="table-archive">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Ср 27 Июнь 2018</td>
|
||||||
|
<td><a href='example-driven-development.html'>Example-driven development</a></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Пт 20 Апрель 2018</td>
|
<td>Пт 20 Апрель 2018</td>
|
||||||
<td><a href='openscenegraph-examples.html'>OpenSceneGraph cross-platform examples</a></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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a>
|
<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
|
<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>
|
<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>
|
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
|
(to explain how to load images with OpenSceneGraph on Android) hanging for some
|
||||||
time. We considered creating a new tutorial for
|
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
|
||||||
<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>
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
</article>
|
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a>
|
||||||
|
|
||||||
|
|
||||||
<hr class="gradient"/>
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 1 of 4</h6>
|
<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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 2 of 4</h6>
|
<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>
|
<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>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 3 of 4</h6>
|
<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>
|
<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>
|
<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
|
<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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a>
|
<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
|
<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>
|
<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>
|
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
|
(to explain how to load images with OpenSceneGraph on Android) hanging for some
|
||||||
time. We considered creating a new tutorial for
|
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
|
||||||
<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>
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
</article>
|
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a>
|
||||||
|
|
||||||
|
|
||||||
<hr class="gradient"/>
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 1 of 4</h6>
|
<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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 2 of 4</h6>
|
<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>
|
<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>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 3 of 4</h6>
|
<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>
|
<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>
|
<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
|
<h6 class="subheader" title="2016-02-02T00:00:00+03:00">Вт 02 Февраль 2016
|
||||||
|
|||||||
174
example-driven-development-ru.html
Normal file
174
example-driven-development-ru.html
Normal 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
example-driven-development.html
Normal file
169
example-driven-development.html
Normal 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>
|
||||||
@@ -1,5 +1,94 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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
|
<p>This article summarizes the work we did to produce the first two
|
||||||
cross-platform OpenSceneGraph examples.</p>
|
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>
|
<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"?>
|
<?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
|
<p>This article summarizes the work we did to produce the first two
|
||||||
cross-platform OpenSceneGraph examples.</p>
|
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>
|
<p>By the time <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a>
|
||||||
|
|||||||
107
index.html
107
index.html
@@ -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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a>
|
<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
|
<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>
|
<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>
|
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
|
(to explain how to load images with OpenSceneGraph on Android) hanging for some
|
||||||
time. We considered creating a new tutorial for
|
time. We ...</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
|
||||||
<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>
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
</article>
|
<a class="button radius secondary small right" href="http://opengamestudio.org/openscenegraph-examples.html">Read More</a>
|
||||||
|
|
||||||
|
|
||||||
<hr class="gradient"/>
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 1 of 4</h6>
|
<h6 class="subheader">Page 1 of 4</h6>
|
||||||
|
|||||||
40
index2.html
40
index2.html
@@ -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>
|
<article>
|
||||||
<a href="http://opengamestudio.org/osg-sample.html"><h3 class="article-title">OpenSceneGraph sample</h3></a>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 2 of 4</h6>
|
<h6 class="subheader">Page 2 of 4</h6>
|
||||||
|
|||||||
45
index3.html
45
index3.html
@@ -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>
|
<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>
|
<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
|
<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"/>
|
<hr class="gradient"/>
|
||||||
</article>
|
</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 -->
|
<!-- /#posts-list -->
|
||||||
<div class="pagination-centered">
|
<div class="pagination-centered">
|
||||||
<h6 class="subheader">Page 3 of 4</h6>
|
<h6 class="subheader">Page 3 of 4</h6>
|
||||||
|
|||||||
24
index4.html
24
index4.html
@@ -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>
|
<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>
|
<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
|
<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
|
||||||
|
|
||||||
BIN
pelican/content/images/2018-06-27-example-driven-development.png
Normal file
BIN
pelican/content/images/2018-06-27-example-driven-development.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
Reference in New Issue
Block a user