|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <!DOCTYPE html>
- <head>
- <meta charset="utf-8" />
- <!-- Set the viewport width to device width for mobile -->
- <meta name="viewport" content="width=device-width" />
-
- <title>October 2016 recap</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/2016-october-recap.html" rel="bookmark"
- title="Permalink to October 2016 recap">October 2016 recap</a></h3>
- </header>
-
- <h6 class="subheader" title="2016-11-19T00:00:00+03:00">Сб 19 Ноябрь 2016
- <a class="button secondary small translation-button" href="http://opengamestudio.org/2016-october-recap-ru.html">ru</a>
-
- </h6> <p><img alt="October recap" src="http://opengamestudio.org/2016-11-19_2016-october-recap.png" /></p>
- <p>This article describes how we spent a month building OpenSceneGraph (OSG) for Android: the first attempt to build OSG, the search for OSG alternatives, and the success in building OSG.</p>
- <p><strong>First attempt to build OSG.</strong></p>
- <p>Having no prior knowledge of Android development, we grabbed the latest Android Studio and started doing beginner tutorials.
- We passed Java part pretty fast. Everything worked out of the box. Then came C++ part and related problems.</p>
- <p><strong>CMake. </strong>To work with C++, Android Studio uses custom CMake, which conflicts with the system one. This was a clear indication that we had to set up a separate development environment specifically for Android.</p>
- <p><strong>KVM. </strong>We got Ubuntu under VirtualBox installed. All went fine until we tried to use Android Emulator. Turned out, VirtualBox could not run Android Emulator, because a virtual machine cannot provide kernel virtualization inside already virtualized environment.</p>
- <p><strong>Chroot for Android. </strong>Since we had a successful experience with chroot to build OGS Editor before, we decided to place Android development environment into chroot. With minor tweaking, we could finally run Android Emulator and build C++ project.</p>
- <p><strong>OSG. </strong>Building OSG seemed like a piece of cake at the time. However, all we got was a crash. Thinking that we got it wrong the first time, we tried to rebuild OSG once again. And the same crash again.
- Searching for the problem did not reveal any hint.
- Nobody helped us at the OSG mailing list.</p>
- <p>We were in despair.</p>
- <p><strong>The search for OSG alternatives.</strong></p>
- <p>Since OSG community did not help us, we decided to search for an alternative open source project to fit our Android needs (and may be more).</p>
- <p>And we found it: <a href="http://babylonhx.gamestudiohx.com/">BabylonHX</a>. The home page looked awesome: it rendered WebGL in the background!
- We thought we finally found the gem we were looking for. However, the example on the home page simply did not work.</p>
- <p>You can probably understand our feelings at the time.</p>
- <p><strong>The success in building OSG.</strong></p>
- <p>We realized nobody would make OSG work under Android for us. We had to do it ourselves.</p>
- <p>Since <a href="http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/178-building-openscenegraph-for-android-3-4">OSG 3.4 document</a> on building for Android was very short, we no longer trusted it and headed to <a href="http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/44-building-openscenegraph-for-android-3-0-3-0-1">original OSG 3.0 document</a>.
- While following it, we faced a dead link to third party dependencies.
- The search for an alternative download link lead us to a <a href="https://xinyustudio.wordpress.com/2013/09/24/install-osg-for-android-on-ubuntu-13-04-step-by-step-tutorials/">2013 tutorial</a> on building OSG 3.0 for Android.</p>
- <p>After following the tutorial, we finally got OSG to run under Android!
- But there was a nuance: both OSG and Android tools used in the tutorial were ancient.
- In a few days, we gradually updated both OSG and Android tools to their latest versions.</p>
- <p>During the update process, we learned two things that prevented us from having OSG to work in the first place:</p>
- <ul>
- <li>Android API headers changed in NDK r12</li>
- <li>OSG only works as a static library under Android</li>
- </ul>
- <p>That's it for describing how we spent the month building OSG for Android: the first attempt to build OSG, the search for OSG alternatives, and the success in building OSG.</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>
|