Add 2018-10-02 OGS Mahjong 2: Demo 2 article

This commit is contained in:
2018-10-02 13:39:03 +03:00
parent 5b77ee9c98
commit d3e62c912f
24 changed files with 890 additions and 395 deletions

View File

@@ -47,6 +47,51 @@
<article>
<a href="http://opengamestudio.org/mahjong-demo2.html"><h3 class="article-title">OGS Mahjong 2: Demo 2</h3></a>
<h6 class="subheader" title="2018-10-02T00:00:00+03:00">Вт 02 октября 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-demo2-ru.html">ru</a>
</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-10-02-mahjong-demo2.png"></p>
<p>We are glad to announce the release of the second demonstration of OGS Mahjong 2.
The purposes of this release were to refine our development techniques and
build a solid cross-platform foundation.</p>
<p><strong>Release</strong></p>
<p>Run the latest version of OGS Mahjong 2 in your web browser:
<a href="http://ogstudio.github.io/ogs-mahjong">http://ogstudio.github.io/ogs-mahjong</a></p>
<p>You are encouraged to run the game with <code>seed</code> parameter like this:
<a href="http://ogstudio.github.io/ogs-mahjong?seed=0">http://ogstudio.github.io/ogs-mahjong?seed=0</a></p>
<p>This allows you to play the same layout each time you launch the game.</p>
<p>Each seed uniquely identifies the placement of tiles. Thus, different seeds
give you a different experience.</p>
<p><strong>Development techniques and foundation</strong></p>
<p>During the second demonstration development, we switched from standard
development to <a href="http://opengamestudio.org/example-driven-development.html">example-driven one</a>. This resulted in the
creation of three distinct repositories to back the development of OGS Mahjong 2:</p>
<ul>
<li><a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> repository provides cross-platform foundation like resource handling, render window setup, etc.</li>
<li><a href="https://github.com/OGStudio/ogs-mahjong-components">OGS Mahjong components</a> repository provides Mahjong specific functionality like parsing layout, matching tiles, etc.</li>
<li><a href="https://bitbucket.org/ogstudio-games/ogs-mahjong">OGS Mahjong</a> repository contains snapshots of <code>OGS Mahjong components</code> features that comprise specific game version. E.g., <code>Demo 2</code> version is almost identical to <a href="https://github.com/OGStudio/ogs-mahjong-components/tree/master/05.ColorfulStatus">05.ColorfulStatus</a> example of <code>OGS Mahjong components</code>.</li>
</ul>
<p><strong>Beyond Mahjong solitaire</strong></p>
<p>In addition to <code>seed</code> parameter, you can let the game use remote layout hosted at GitHub:
<a href="http://ogstudio.github.io/ogs-mahjong?seed=0&amp;layout=github://OGStudio/ogs-mahjong-components/data/cat.layout">http://ogstudio.github.io/ogs-mahjong?seed=0&amp;layout=github://OGStudio/ogs-mahjong-components/data/cat.layout</a></p>
<p>Utilizing remote resources is an extremely powerful approach allowing anyone
to create a layout of his/her choice and see the layout in action instantly.</p>
<p>Our next step is to turn game logic into a resource, too.</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/examples-and-dependencies.html"><h3 class="article-title">Examples and dependencies</h3></a>
<h6 class="subheader" title="2018-08-21T00:00:00+03:00">Вт 21 августа 2018
@@ -58,66 +103,14 @@ change in handling dependencies.</p>
<p><strong>Examples of HTTP client and node selection</strong></p>
<p>Once we finished working on <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">the remote debugging example</a> and
<a href="http://opengamestudio.org/example-driven-development.html">reported its completion</a>, we were surprised by the fact
that secure HTTP connection between a debugged application and debug broker
was only working in the web version of the example. Desktop and mobile versions
only worked with insecure HTTP.</p>
<p>Since current debug scheme has no authentication, insecure debugging over HTTP
doesn't really hurt. However, if we want to access resources located at popular
sites like GitHub and BitBucket, we have to support secure HTTP.</p>
<p>The need to support HTTPS on each platform spurred us to create
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient">HTTP client example</a>. Turned out, each platform had its own
preferred way of doing secure HTTP:</p>
<ul>
<li>web (Emscripten) provides Fetch API</li>
<li>desktop is fine with Mongoose and OpenSSL</li>
<li>Android provides HttpUrlConnection in Java</li>
<li>iOS provides NSURLSession in Objective-C</li>
</ul>
<p>The need to support different languages on different platforms resulted
in the creation of so-called 'host-guest' pattern:</p>
<ul>
<li>guest (platform agnostic)<ul>
<li>provides networking representation</li>
<li>used by cross-platform C++ code</li>
</ul>
</li>
<li>host (specific platform)<ul>
<li>polls guest for pending requests</li>
<li>processes them</li>
<li>reports results back to the guest</li>
</ul>
</li>
</ul>
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection">Node selection example</a> was straightforward and caused no troubles.</p>
<p><strong>The change in handling dependencies</strong></p>
<p>For over a year we had to deal with the following
<a href="http://forum.openscenegraph.org/viewtopic.php?t=17443">shortcomings</a> when building OpenSceneGraph across platforms
using conventional methods:</p>
<ul>
<li>macOS builds failing due to certain compile flags we use</li>
<li>hacking PNG plugin safety guards to have PNG support under Android</li>
<li>iOS simulator and device builds of the same example being in separate Xcode projects</li>
<li>OpenSceneGraph taking 20-30 minutes to build</li>
</ul>
<p>These shortcomings were slowing us down and complicating the development of
new examples. Upon hitting these problems ten more times this month we decided
it was time to solve them once and for all. Now OpenSceneGraph is built as part
of each example in 2-3 minutes, and there's no more dependency magic involved.
We took the same approach of building dependencies as part of each example to
other external libraries like Mongoose and libpng-android, too.</p>
<p>With these obstacles out of the way, we can now iterate faster. Just in time
for the next technical demonstration of Mahjong 2!</p>
<p>That's it for describing two new OpenSceneGraph cross-platform examples and
the change in handling dependencies.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
that secure HTTP connection between a debugged application and debug </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/examples-and-dependencies.html">Read More</a>
<hr class="gradient"/>
</article>
@@ -308,26 +301,6 @@ It seems that this is the technology capable of …</p><p class="subheader">Cate
<hr class="gradient"/>
</article>
<article>
<a href="http://opengamestudio.org/scripting-research.html"><h3 class="article-title">Scripting research</h3></a>
<h6 class="subheader" title="2017-08-16T00:00:00+03:00">Ср 16 августа 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/scripting-research-ru.html">ru</a>
</h6><p><img alt="Scripting research" src="http://opengamestudio.org/2017-08-scripting-research.png"></p>
<p>This article describes scripting research in July 2017.</p>
<p><strong>Our first goal of using a scripting language was to have a platform-independent code that runs unchanged on every supported platform.</strong></p>
<p>OGS Editor 0.10 supports Python for such a code thanks to <a href="http://swig.org/">SWIG</a>. SWIG provides a way to wrap almost any …</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/scripting-research.html">Read More</a>
<hr class="gradient"/>
</article>
<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 1 of 5</h6>