<!DOCTYPE html> <head> <meta charset="utf-8" /> <!-- Set the viewport width to device width for mobile --> <meta name="viewport" content="width=device-width" /> <title>Opensource Game Studio - News</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> <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 <a class="button secondary small translation-button" href="http://opengamestudio.org/examples-and-dependencies-ru.html">ru</a> </h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-08-21-examples-and-dependencies.png"></p> <p>This article describes two new OpenSceneGraph cross-platform examples and the 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> </p> </article> <hr class="gradient"/> <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>2018-08 EDIT</strong>: the third example has been renamed to the fourth one due to the reasons described in the <a href="http://opengamestudio.org/examples-and-dependencies.html">next article</a>.</p> <p><strong>The third OpenSceneGraph cross-platform example</strong></p> <p>The third OpenSceneGraph cross-platform example explains how to implement …</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/example-driven-development.html">Read More</a> <hr class="gradient"/> </article> <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 <a class="button secondary small translation-button" href="http://opengamestudio.org/openscenegraph-examples-ru.html">ru</a> </h6><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> 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 …</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/openscenegraph-examples.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html"><h3 class="article-title">First techdemo of OGS Mahjong 2: Gameplay</h3></a> <h6 class="subheader" title="2018-02-16T00:00:00+03:00">Пт 16 февраля 2018 <a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-techdemo1-gameplay-ru.html">ru</a> </h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-02-16-mahjong-techdemo1-gameplay.png"></p> <p>We are glad to announce the release of the first technical demonstration of OGS Mahjong 2. The purpose of this release was to verify gameplay across supported platforms.</p> <p>Get techdemo for your platform:</p> <ul> <li>Run <a href="https://ogstudio.github.io/game-mahjong/versions/013/mjin-player.html">Web version</a> in your browser</li> <li>Get <a href="https://drive.google.com/open?id=1KW8IEN8Dpz8ODeg8BctVSJyzj9-AL9hR">Android version</a></li> <li>Get <a href="https://drive.google.com/open?id=1oj0-OXSmEatttzn86u2vgP9SRAIC0ozB">Windows version</a></li> <li>Get <a href="https://drive.google.com/open?id=1EX7kLIThLiMz9_W7VmBPySms3mlrF-i6">Linux version</a></li> <li>Get <a href="https://drive.google.com/open?id=1KWnvbHzan8MpMcZPG2QC-7KWoEYbqrM2">macOS …</a></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/mahjong-techdemo1-gameplay.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/mahjong-recreation-start.html"><h3 class="article-title">Mahjong recreation start</h3></a> <h6 class="subheader" title="2018-01-26T00:00:00+03:00">Пт 26 января 2018 <a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-recreation-start-ru.html">ru</a> </h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-01-26-mahjong-recreation-start.png"></p> <p>This article describes the start of Mahjong game recreation.</p> <p><strong>Plan</strong></p> <p>We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:</p> <ul> <li>Load single layout</li> <li>Place tiles in layout positions</li> <li>Distinguish tiles</li> <li>Implement selection</li> <li>Implement matching</li> </ul> <p>Just like any other plan, this one looked fine at …</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/mahjong-recreation-start.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/the-year-of-lessons.html"><h3 class="article-title">The year of lessons</h3></a> <h6 class="subheader" title="2017-12-31T22:00:00+03:00">Вс 31 декабря 2017 <a class="button secondary small translation-button" href="http://opengamestudio.org/the-year-of-lessons-ru.html">ru</a> </h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p> <p>So, the year 2017 is approaching its finale, the year's results have already been summed up. We're going to take a break from igniting the fireworks or preparation of the champagne so that we can designate our goal for the following year.</p> <p>As it may be clear from other articles …</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/the-year-of-lessons.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a> <h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017 <a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a> </h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p> <p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p> <p><strong>Brief history</strong></p> <p>Opensource Game Studio project is 12 years old now.</p> <p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</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/2017-summary.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a> <h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017 <a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a> </h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p> <p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward. For some time we've been tracking the development of the new breed of website engines - static site generators. It seems that this is the technology capable of …</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/back-to-the-static.html">Read More</a> <hr class="gradient"/> </article> <article> <a href="http://opengamestudio.org/mjin-world-birth.html"><h3 class="article-title">The birth of MJIN world</h3></a> <h6 class="subheader" title="2017-09-10T00:00:00+03:00">Вс 10 сентября 2017 <a class="button secondary small translation-button" href="http://opengamestudio.org/mjin-world-birth-ru.html">ru</a> </h6><p><img alt="The birth of MJIN world" src="http://opengamestudio.org/2017-09-mjin-world-birth.png"></p> <p>This article describes the birth of MJIN world in August 2017.</p> <p><strong>mjin-player</strong></p> <p>As you know, <a href="http://opengamestudio.org/scripting-research.html">we spent July to research scripting</a>. We found a solution that satisfies the following criteria. Scripts should:</p> <ol> <li>run unchanged on all supported platforms</li> <li>allow extending C++ code</li> </ol> <p>We have verified the second criterion by writing …</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/mjin-world-birth.html">Read More</a> <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> <p> <a href="http://opengamestudio.org/category/news2.html">Next »</a> </p> </div> </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>