Files
ogs-site/en/news/2016-november-recap.html

141 lines
5.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<style>
#header
{
background: #2BA6E3;
padding: 0.7em;
text-align: left;
}
#header a
{
color: white;
text-decoration: none;
padding: 0.5em 1em 0.5em 1em;
}
.news_item
{
background: #FFFFFF;
width: 720px;
padding: 1em;
margin-top: 2em;
margin-bottom: 2em;
border: 1px solid #E0E0E0;
text-align: left;
}
.news_item_contents
{
color: #444;
line-height: 1.5em;
}
.news_item_date
{
margin-bottom: 2em;
color: #aaa;
}
body
{
background: #FAFAFA;
}
code, pre
{
font-family: monospace, serif;
font-size: 1em;
color: #7f0a0c;
}
figure
{
margin: 0px;
padding: 0px;
}
img
{
width: 720px;
}
html
{
font-family: sans-serif;
}
a
{
color: #3A91CB;
text-decoration: none;
}
#lang
{
float: right;
}
figcaption
{
color: #aaa;
}
table
{
border-collapse: collapse;
}
table, th, td
{
border: 1px solid #aaa;
padding: 0.5em;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
</style>
</head>
<body>
<center>
<div id="header">
<a href="../../en/news/index.html">News</a>
<a href="../../en/page/games.html">Games</a>
<a href="../../en/page/about.html">About</a>
<div id="lang">
<a href="2016-november-recap.html">EN</a>
<a href="../../ru/news/2016-november-recap.html">RU</a>
</div>
</div>
<h1>In the news</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="2016-november-recap.html">November 2016 recap</a>
</h2>
<p class="news_item_date">
2016-12-15 00:00
</p>
<div class="news_item_contents">
<figure>
<img src="../../images/2016-12-15_2016-november-recap.png" alt="Construction of a building" /><figcaption>Construction of a building</figcaption>
</figure>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we dont need UIQt for Android.</p>
<p>We decided to have a look at two approaches to separate MJIN into modules: build-time separation and run-time one. <strong>Build-time</strong> separation means MJIN becomes highly configurable and each platform gets specifically tailored MJIN build. <strong>Run-time</strong> separation means MJIN is divided into smaller libraries that are connected at run-time, which makes it easy to change functionality without rebuilding.</p>
<p><strong>Run-time separation research.</strong></p>
<p>Since run-time separation has more benefits, we started researching it first. The easiest way to achieve it was to use C API, because C ABI rules are much simpler than C++ ones.</p>
<p>We created a sample project consisting of the application, library, and plugin:</p>
<ul>
<li><strong>The application</strong> has been linked to the library and used it to load the plugin.</li>
<li><strong>The library</strong> provided functions to register plugins and call their functions.</li>
<li><strong>The plugin</strong> provided functions for the library and called library functions.</li>
</ul>
<p>The research was successful: the sample project worked correctly under Linux and Windows. However, since MJIN is currently a single large entity, we postponed C API application until we finish build-time separation.</p>
<p><strong>Build-time separation start.</strong></p>
<p>We extracted the following modules from MJIN:</p>
<ul>
<li>Android: provides Java Native Interface (JNI) to MJIN</li>
<li>Sound: provides access to OpenAL</li>
<li>UIQt: provides access to Qt UI</li>
</ul>
<p>Sound and UIQt modules are currently statically linked into MJIN library, while Android module is already a separate library due to JNI requirements.</p>
<p>In the coming year, were going to significantly restructure MJIN so that it suits as many platforms as possible.</p>
<p>Thats it for describing the start of MJIN library separation into modules.</p>
</div>
</div>
</center>
</body>
</html>