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