Opensource Game Studiohttp://opengamestudio.org/2018-11-19T00:00:00+03:00Ideal games and game developement tools2018-11-19T00:00:00+03:002018-11-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-11-19:/ideal-gamedev.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"></p>
<p>In this article, we discuss how ideal video game and video game development
tool look like, in our opinion.</p>
<p><strong>Questions</strong></p>
<p>As you know, the <a href="http://opengamestudio.org/pages/about.html">goals of Opensource Game Studio</a> are:</p>
<ul>
<li>creation of free video game development tools</li>
<li>making video games with those tools</li>
<li>preparing video game development tutorials</li>
</ul>
<p>This time …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"></p>
<p>In this article, we discuss how ideal video game and video game development
tool look like, in our opinion.</p>
<p><strong>Questions</strong></p>
<p>As you know, the <a href="http://opengamestudio.org/pages/about.html">goals of Opensource Game Studio</a> are:</p>
<ul>
<li>creation of free video game development tools</li>
<li>making video games with those tools</li>
<li>preparing video game development tutorials</li>
</ul>
<p>This time we asked ourselves two simple questions:</p>
<ul>
<li>What is an ideal video game?</li>
<li>What is an ideal video game development tool?</li>
</ul>
<p>The best answers we could think of are below.</p>
<p><strong>Answer 1: A video game is ideal if it delivers maximum pleasure possible</strong></p>
<p>While content is probably the most important aspect to keep a player invested
into the game, the technical side is the transport to deliver that content.
There are quite a few technical problems that may damage otherwise excellent content of a game:</p>
<ul>
<li>insufficient accessibility: the game does not run on your hardware</li>
<li>insufficient optimization: the game is slow</li>
<li>critical bugs: the game crashes from time to time</li>
</ul>
<p>We work hard to make sure the games we create are accessible everywhere.
That's why we released
<a href="http://opengamestudio.org/mahjong-demo2.html">the second demonstration of OGS Mahjong 2</a> only for
the web: because you can run web version virtually anywhere.</p>
<p><strong>Answer 2: A video game development tool is ideal if it lets you create a video game of your dream in the shortest time possible</strong></p>
<p>Even though we put a lot of effort into sharing our knowledge through
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a>, we understand that those take a lot
of time to study. One can't possibly make even a simple video game like
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> without performing the following steps:</p>
<ul>
<li>configure the development environment</li>
<li>write code</li>
<li>build an application</li>
<li>debug the application</li>
<li>repeat <code>write-build-debug</code> steps as many times as necessary</li>
</ul>
<p>Writing code and debugging are probably the ultimate forms of input and output
of any software, so we can't escape those. However, there are ways to
completely remove (or at least significantly decrease) the need for
<code>development environment setup</code> and <code>build</code> steps. And this is what we are
going to do in the coming months.</p>
<p>Our goal for the coming months is to create a video game development tool that
would allow any programmer (or sufficiently skilled person) to create the
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> video game from scratch in an hour.</p>
<p>That's it for discussing how ideal video game and video game development tool
look like, in our opinion.</p>Идеальные игры и средства для их разработки2018-11-19T00:00:00+03:002018-11-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-11-19:/ideal-gamedev-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"></p>
<p>В этой статье мы обсудим, как выглядят идеальные видеоигра и инструмент для
разработки видеоигр, по нашему мнению.</p>
<p><strong>Вопросы</strong></p>
<p>Как вы знаете, <a href="http://opengamestudio.org/pages/about-ru.html">целями Opensource Game Studio</a> являются:</p>
<ul>
<li>создание бесплатных инструментов для разработки видеоигр</li>
<li>создание видеоигр с помощью этих инструментов</li>
<li>создание самоучителей по разработке видеоигр</li>
</ul>
<p>В этот раз мы решили задать себе …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"></p>
<p>В этой статье мы обсудим, как выглядят идеальные видеоигра и инструмент для
разработки видеоигр, по нашему мнению.</p>
<p><strong>Вопросы</strong></p>
<p>Как вы знаете, <a href="http://opengamestudio.org/pages/about-ru.html">целями Opensource Game Studio</a> являются:</p>
<ul>
<li>создание бесплатных инструментов для разработки видеоигр</li>
<li>создание видеоигр с помощью этих инструментов</li>
<li>создание самоучителей по разработке видеоигр</li>
</ul>
<p>В этот раз мы решили задать себе пару простых вопросов:</p>
<ul>
<li>Какова идеальная видеоигра?</li>
<li>Каков идеальный инструмент для разработки видеоигр?</li>
</ul>
<p>Ниже представлены наши ответы.</p>
<p><strong>Ответ 1: Видеоигра идеальна, если она доставляет максимально возможное удовольствие</strong></p>
<p>Несмотря на то, что содержание является, пожалуй, самой важной частью,
удерживающей человека в игре, техническая сторона является транспортом для
доставки этого содержания. Существует немало технических проблем, которые
могут полностью испортить впечатление даже от превосходного содержания:</p>
<ul>
<li>недостаточная доступность: игра не идёт на оборудовании человека</li>
<li>недостаточная оптимизация: игра тормозит</li>
<li>критичные ошибки: игра падает время от времени</li>
</ul>
<p>Мы тратим много сил, чтобы сделать наши игры доступными везде. Именно поэтому
мы выпустили <a href="http://opengamestudio.org/mahjong-demo2-ru.html">вторую демонстрацию OGS Mahjong 2</a> лишь для веба:
т.к. вы можете запустить веб-версию практически где угодно.</p>
<p><strong>Ответ 2: Инструмент для разработки видеоигр идеален, если он позволяет создать игру мечты в кратчайшие возможные сроки</strong></p>
<p>Несмотря на то, что мы тратим много усилий на то, чтобы делиться своими
знаниями с помощью <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">руководств</a> и <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">самоучителей</a>, мы осознаём,
что на работу с ними уходит много времени. Сейчас нельзя создать даже
простейшую <a href="https://en.wikipedia.org/wiki/Concentration_(game)">видеоигру на память</a> без выполнения следующих шагов:</p>
<ul>
<li>настроить окружение разработки</li>
<li>написать код</li>
<li>собрать приложение</li>
<li>отладить приложение</li>
<li>повторить шаги <code>написать-собрать-отладить</code> столько раз, сколько нужно</li>
</ul>
<p>Написание кода и отладка, пожалуй, являются конечными формами входа и
выхода любого программного обеспечения, поэтому мы их не избежим. Однако,
мы можем полностью избавиться от шагов (или хотя бы значительно сократить их)
<code>настройки окружения разработки</code> и <code>сборки</code>. Именно на это мы и потратим
ближайшие месяцы.</p>
<p>Наша цель на ближайшие месяцы состоит в том, чтобы создать такой инструмент
разработки видеоигр, чтобы любой программист (или достаточно квалифицированный
человек) мог создать <a href="https://en.wikipedia.org/wiki/Concentration_(game)">видеоигру на память</a> с нуля за час.</p>
<p>На этом мы заканчиваем обсуждение, как выглядят идеальные видеоигра и
инструмент для разработки видеоигр, по нашему мнению.</p>OGS Mahjong 2: Demo 22018-10-02T00:00:00+03:002018-10-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-10-02:/mahjong-demo2.html<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><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&layout=github://OGStudio/ogs-mahjong-components/data/cat.layout">http://ogstudio.github.io/ogs-mahjong?seed=0&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>OGS Mahjong 2: Demo 22018-10-02T00:00:00+03:002018-10-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-10-02:/mahjong-demo2-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-10-02-mahjong-demo2.png"></p>
<p>Мы рады сообщить о выпуске второй демонстрации OGS Mahjong 2. Её целью были
улучшение техники разработки и создание надёжной основы кроссплатформенной
разработки.</p>
<p><strong>Выпуск</strong></p>
<p>Запустите последний выпуск OGS Mahjong 2 в вашем браузере:
<a href="http://ogstudio.github.io/ogs-mahjong">http://ogstudio.github.io/ogs-mahjong</a></p>
<p>Рекомендуем запускать игру с параметром <code>seed</code> следующим образом:
<a href="http://ogstudio.github.io/ogs-mahjong?seed=0">http://ogstudio.github.io/ogs-mahjong …</a></p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-10-02-mahjong-demo2.png"></p>
<p>Мы рады сообщить о выпуске второй демонстрации OGS Mahjong 2. Её целью были
улучшение техники разработки и создание надёжной основы кроссплатформенной
разработки.</p>
<p><strong>Выпуск</strong></p>
<p>Запустите последний выпуск OGS Mahjong 2 в вашем браузере:
<a href="http://ogstudio.github.io/ogs-mahjong">http://ogstudio.github.io/ogs-mahjong</a></p>
<p>Рекомендуем запускать игру с параметром <code>seed</code> следующим образом:
<a href="http://ogstudio.github.io/ogs-mahjong?seed=0">http://ogstudio.github.io/ogs-mahjong?seed=0</a></p>
<p>Это позволяет вам играть в ту же самую раскладку после перезапуска.</p>
<p>Каждое значение зерна (seed) однозначно задаёт расположение фишек, так что
разные значения зерна дают разнообразие партий.</p>
<p><strong>Техника разработки и основа</strong></p>
<p>Во время разработки второй демонстрации мы перешли с обычной разработки на
<a href="http://opengamestudio.org/example-driven-development.html">разработку через создание примеров</a>. Это привело к
появлению трёх различных хранилищ для обеспечения разработки OGS Mahjong 2:</p>
<ul>
<li>Хранилище <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">кроссплатформенных примеров OpenSceneGraph</a> содержит основу вроде работы с ресурсами, создание графического окна и т.д.</li>
<li>Хранилище <a href="https://github.com/OGStudio/ogs-mahjong-components">компонент OGS Mahjong</a> содержит специфичную для Маджонга функциональность вроде разбора раскладки, сопоставления фишек и т.д.</li>
<li>Хранилище <a href="https://bitbucket.org/ogstudio-games/ogs-mahjong">OGS Mahjong</a> содержит снимок набора функциональностей <code>компонент OGS Mahjong</code>, которые определяют версию игры. Например, версия <code>Demo 2</code> почти полностью повторяет пример <a href="https://github.com/OGStudio/ogs-mahjong-components/tree/master/05.ColorfulStatus">05.ColorfulStatus</a> из <code>компонент OGS Mahjong</code>.</li>
</ul>
<p><strong>За пределами пасьянса Маджонг</strong></p>
<p>В дополнение к параметру <code>seed</code> вы можете указать игре использовать удалённую
раскладку, расположенную на GitHub:
<a href="http://ogstudio.github.io/ogs-mahjong?seed=0&layout=github://OGStudio/ogs-mahjong-components/data/cat.layout">http://ogstudio.github.io/ogs-mahjong?seed=0&layout=github://OGStudio/ogs-mahjong-components/data/cat.layout</a></p>
<p>Использование удалённых ресурсов открывает огромные возможности, т.к. позволяет
любому желающему создать раскладку на свой вкус и моментально её проверить.</p>
<p>Наш следующий шаг - это выделение игровой логики в виде ресурса.</p>Examples and dependencies2018-08-21T00:00:00+03:002018-08-21T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-08-21:/examples-and-dependencies.html<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 …</p><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>Примеры и зависимости2018-08-21T00:00:00+03:002018-08-21T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-08-21:/examples-and-dependencies-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-08-21-examples-and-dependencies.png"></p>
<p>Эта статья описывает два новых кросс-платформенных примера OpenSceneGraph
и изменение в работе с зависимостями.</p>
<p><strong>Примеры клиента HTTP и выбора узла сцены</strong></p>
<p>После окончания работы над <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">примером удалённой отладки</a> и
<a href="http://opengamestudio.org/example-driven-development.html">сообщения об этом</a> мы с удивлением обнаружили, что
безопасное соединение HTTPS между отлаживаемым приложением и брокером
отладки работало лишь в веб-версии …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-08-21-examples-and-dependencies.png"></p>
<p>Эта статья описывает два новых кросс-платформенных примера OpenSceneGraph
и изменение в работе с зависимостями.</p>
<p><strong>Примеры клиента HTTP и выбора узла сцены</strong></p>
<p>После окончания работы над <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">примером удалённой отладки</a> и
<a href="http://opengamestudio.org/example-driven-development.html">сообщения об этом</a> мы с удивлением обнаружили, что
безопасное соединение HTTPS между отлаживаемым приложением и брокером
отладки работало лишь в веб-версии примера. Десктопная и мобильная версии
работали лишь с помощью обычного соединения HTTP.</p>
<p>Т.к. текущая схема отладки не имеет авторизации, отладка по обычному соединению
HTTP не несёт никаких проблем. Однако, если мы хотим получить доступ к ресурсам,
расположенным на популярных сайтах вроде GitHub и BitBucket, мы обязаны
поддерживать HTTPS.</p>
<p>Необходимость поддержки HTTPS на каждой платформе побудила нас создать
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient">пример клиента HTTP</a>. Оказалось, что каждая платформа имеет
собственные правила по работе с HTTPS:</p>
<ul>
<li>веб (Emscripten) предоставляет Fetch API</li>
<li>десктоп может использовать Mongoose с OpenSSL</li>
<li>Android предоставляет HttpUrlConnection в языке Java</li>
<li>iOS предоставляет NSURLSession в языке Objective-C</li>
</ul>
<p>Необходимость поддержки разных языков на разных платформах привела к
созданию так называемого шаблона "хозяин-гость":</p>
<ul>
<li>гость (не привязан к платформе)<ul>
<li>имеет сетевое представление</li>
<li>используется кросс-платформенным кодом на C++</li>
</ul>
</li>
<li>хозяин (определённая платформа)<ul>
<li>опрашивает гостя на наличие ожидающих выполнение запросов</li>
<li>обрабатывает их</li>
<li>сообщает результат гостю</li>
</ul>
</li>
</ul>
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection">Пример выбора узла сцены</a> оказался простым и не создал особых проблем.</p>
<p><strong>Изменение в работе с зависимостями</strong></p>
<p>Больше года нам приходилось жить со следующими <a href="http://forum.openscenegraph.org/viewtopic.php?t=17443">недостатками</a>
сборки OpenSceneGraph официальными средствами:</p>
<ul>
<li>проблемы сборки под macOS ввиду использования определённых флагов сборки</li>
<li>обход механизмов проверки зависимостей для использования PNG на Android</li>
<li>принадлежность сборок iOS под симулятор и устройство к разным проектам Xcode</li>
<li>ожидания в 20-30 минут для сборки OpenSceneGraph</li>
</ul>
<p>Эти недостатки замедляли нас и усложняли разработку новых примеров. После того,
как мы десятый раз столкнулись с указанными проблемами в этом месяце, мы решили
исправить их раз и навсегда. Теперь мы собираем OpenSceneGraph как часть каждого
примера за 2-3 минуты без какой-либо магии. Также мы использовали этот подход
включения зависимости как части каждого примера для остальных библиотек вроде
Mongoose и libpng-android. </p>
<p>Теперь без этих препятствий мы можем разрабатывать быстрее. Это значительно
облегчит создание следующей технической демонстрации Mahjong 2!</p>
<p>На этом мы заканчиваем описание двух новых кросс-платформенных примеров
OpenSceneGraph и изменения в работе с зависимостями.</p>Example-driven development2018-06-27T00:00:00+03:002018-06-27T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-06-27:/example-driven-development.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>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><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
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.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>Разработка через создание примеров2018-06-27T00:00:00+03:002018-06-27T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-06-27:/example-driven-development-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png"></p>
<p>Эта статья описывает то, как создание третьего кросс-платформенного примера
OpenSceneGraph привело нас к разработке через создание примеров.</p>
<p><strong>ИЗМЕНЕНИЯ ОТ 2018-08</strong>: третий пример был переименован в четвёртый в связи
с причинами, изложенными в <a href="http://opengamestudio.org/examples-and-dependencies-ru.html">следующей статье</a>.</p>
<p><strong>Третий кросс-платформенный пример OpenSceneGraph</strong></p>
<p>Третий кросс-платформенный пример OpenSceneGraph содержит реализацию
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.RemoteDebugging">удалённой отладки, работающей на всех поддерживаемых …</a></p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png"></p>
<p>Эта статья описывает то, как создание третьего кросс-платформенного примера
OpenSceneGraph привело нас к разработке через создание примеров.</p>
<p><strong>ИЗМЕНЕНИЯ ОТ 2018-08</strong>: третий пример был переименован в четвёртый в связи
с причинами, изложенными в <a href="http://opengamestudio.org/examples-and-dependencies-ru.html">следующей статье</a>.</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>OpenSceneGraph cross-platform examples2018-04-20T00:00:00+03:002018-04-20T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-04-20:/openscenegraph-examples.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>
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><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 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>Кросс-платформенные примеры OpenSceneGraph2018-04-20T00:00:00+03:002018-04-20T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-04-20:/openscenegraph-examples-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png"></p>
<p>Эта статья резюмирует создание первых двух кросс-платформенных примеров
OpenSceneGraph.</p>
<p>К тому времени, как мы выпустили
<a href="http://opengamestudio.org/mahjong-techdemo1-gameplay-ru.html">первую техническую демонстрацию OGS Mahjong 2</a>, нас уже дожидался
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">запрос на описание работы с изображениями</a> в
OpenSceneGraph на Android. Сначала мы рассматривали возможность создания нового
самоучителя для <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенного руководства OpenSceneGraph</a>, но
позже мы оценили необходимые …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png"></p>
<p>Эта статья резюмирует создание первых двух кросс-платформенных примеров
OpenSceneGraph.</p>
<p>К тому времени, как мы выпустили
<a href="http://opengamestudio.org/mahjong-techdemo1-gameplay-ru.html">первую техническую демонстрацию OGS Mahjong 2</a>, нас уже дожидался
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">запрос на описание работы с изображениями</a> в
OpenSceneGraph на Android. Сначала мы рассматривали возможность создания нового
самоучителя для <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенного руководства OpenSceneGraph</a>, но
позже мы оценили необходимые трудозатраты и посчитали их излишними для
освещения такой небольшой темы (по сравнению с тем, что умеет средняя игра)
как загрузка изображений. Мы решили продолжить делиться нашими знаниями в виде
конкретных примеров. Так на свет появились
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">кросс-платформенные примеры OpenSceneGraph</a>.</p>
<p>Каждый пример:</p>
<ul>
<li>объясняет критически важный код для выполнения поставленной задачи</li>
<li>акцентирует внимание на нюансах, специфичных для каждой платформы</li>
<li>предоставляет реализации примера для десктопа, мобилок и веба</li>
<li>предоставляет сборку для веба, чтобы упростить оценку результата</li>
</ul>
<p>Первая пара примеров освещает следующие темы:</p>
<ul>
<li>Встраивание ресурсов в исполняемый файл: значительное упрощение работы с ресурсами на всех платформах</li>
<li>Использование изображений PNG с помощью плагинов PNG: описание требований, необходимых для сборки и использования плагинов PNG</li>
</ul>
<p>Мы будем и впредь добавлять новые примеры по мере продвижения нашей разработки OGS Mahjong 2.</p>
<p>На этом мы заканчиваем резюме о создании первых двух кросс-платформенных примеров OpenSceneGraph.</p>First techdemo of OGS Mahjong 2: Gameplay2018-02-16T00:00:00+03:002018-02-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-02-16:/mahjong-techdemo1-gameplay.html<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><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 version</a></li>
</ul>
<p>Notes:</p>
<ul>
<li>iOS version is not released because it cannot be easily shared outside AppStore.</li>
<li>Launch <code>run</code> script under Linux and macOS.</li>
<li>Linux version is only available in 64-bit variant.</li>
<li>macOS version should run on macOS Sierra or newer.</li>
</ul>
<p>That's it for now, have a nice testing!</p>Первая технодемка OGS Mahjong 2: Игровая механика2018-02-16T00:00:00+03:002018-02-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-02-16:/mahjong-techdemo1-gameplay-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-02-16-mahjong-techdemo1-gameplay.png"></p>
<p>Мы ради сообщить о выпуске первой технической демонастрации OGS Mahjong 2.
Её цель была в проверке игровой механики на всех поддерживаемых платформах.</p>
<p>Проверьте технодемку на своей платформе:</p>
<ul>
<li>Запустить <a href="https://ogstudio.github.io/game-mahjong/versions/013/mjin-player.html">версию для веба</a> в браузере</li>
<li>Получить <a href="https://drive.google.com/open?id=1KW8IEN8Dpz8ODeg8BctVSJyzj9-AL9hR">версию для Android</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1oj0-OXSmEatttzn86u2vgP9SRAIC0ozB">версию для Windows</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1EX7kLIThLiMz9_W7VmBPySms3mlrF-i6">версию для Linux</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1KWnvbHzan8MpMcZPG2QC-7KWoEYbqrM2">версию для macOS</a></li>
</ul>
<p>Замечания …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-02-16-mahjong-techdemo1-gameplay.png"></p>
<p>Мы ради сообщить о выпуске первой технической демонастрации OGS Mahjong 2.
Её цель была в проверке игровой механики на всех поддерживаемых платформах.</p>
<p>Проверьте технодемку на своей платформе:</p>
<ul>
<li>Запустить <a href="https://ogstudio.github.io/game-mahjong/versions/013/mjin-player.html">версию для веба</a> в браузере</li>
<li>Получить <a href="https://drive.google.com/open?id=1KW8IEN8Dpz8ODeg8BctVSJyzj9-AL9hR">версию для Android</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1oj0-OXSmEatttzn86u2vgP9SRAIC0ozB">версию для Windows</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1EX7kLIThLiMz9_W7VmBPySms3mlrF-i6">версию для Linux</a></li>
<li>Получить <a href="https://drive.google.com/open?id=1KWnvbHzan8MpMcZPG2QC-7KWoEYbqrM2">версию для macOS</a></li>
</ul>
<p>Замечания:</p>
<ul>
<li>Версия для iOS не выпущена, т.к. нет простого способа её распространения вне AppStore.</li>
<li>Запустите скрипт <code>run</code> в версиях для Linux и macOS.</li>
<li>Версия для Linux доступна лишь в 64-битном варианте.</li>
<li>Версия для macOS должна работать на macOS Sierra или новее.</li>
</ul>
<p>На сегодня это всё, хорошей проверки!</p>Mahjong recreation start2018-01-26T00:00:00+03:002018-01-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-01-26:/mahjong-recreation-start.html<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><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 first sight. However, once you get down to work, new details start to come out. This plan was no exception. Below are a few problems that came out during development.</p>
<p><strong>Problem №1: provide binary resources across supported platforms</strong></p>
<p>Mahjong is going to be available on desktop, mobile, and web. Each of these platforms has its constraints on accessing external files:</p>
<ul>
<li>Desktop can access almost any file</li>
<li>Android/iOS have limited access to file system</li>
<li>Web does not have any file system at all</li>
</ul>
<p>To provide a unified way for accessing resources, we decided to include them into final executable. This decision led to the birth of <strong>mjin-resource</strong> and <strong>mahjong-data</strong> projects.</p>
<p><a href="https://bitbucket.org/ogstudio/mjin-resource">mjin-resource</a>:</p>
<ul>
<li>converts binary files to C header files with the help of <strong>xxd</strong> utility</li>
<li>generates MJIN project that contains generated headers to be compiled into static library</li>
<li>provides C++ interface for accessing generated resources</li>
</ul>
<p><a href="https://bitbucket.org/ogstudio-games/mahjong-data">mahjong-data</a> is an example of such generated MJIN project that is referenced by <a href="https://bitbucket.org/ogstudio-games/mahjong">mahjong</a> project.</p>
<p><strong>Problem №2: load PNG images across supported platforms</strong></p>
<p>To load PNG, we use corresponding OpenSceneGraph plugin. We built it for desktop with no issues. Building for web (Emscripten) turned out to be more difficult: Emscripten provides its own version of <strong>libpng</strong>, which OpenSceneGraph build script can't detect. We had to work around several OpenSceneGraph checks to successfully build the plugin for Emscripten.
Building the plugin for Android and iOS is still waiting for us. Once we get PNG plugin working across supported platforms, we are going to publish a new tutorial for <a href="https://github.com/ogstudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> to cover PNG image loading. We already got a <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">request to describe image loading</a>.</p>
<p><strong>Development</strong></p>
<p><a href="http://opengamestudio.org/lets-go.html">As you know</a>, we published OpenSceneGraph cross-platform guide to make OpenSceneGraph community stronger. We value education, and we love to share our knowledge. That's why we decided to develop Mahjong in small reproducible chunks uniquely identified by internal versions. These versions are available in <a href="https://bitbucket.org/ogstudio-games/mahjong">mahjong repository</a>.</p>
<p>We also provide <a href="http://ogstudio.github.io/game-mahjong">version history and web releases of each internal version</a> for the following reasons:</p>
<ul>
<li>education: show how development looks like internally</li>
<li>accessibility: provide older versions for comparison</li>
</ul>
<p><strong>Current Mahjong game status</strong></p>
<p>As of the time of this writing, we have implemented tile selection. <a href="https://ogstudio.github.io/game-mahjong/versions/010/mjin-player.html">Try it in your browser!</a></p>
<p>Once we finish tile matching implementation, we are going to publish the intermediate result for all supported platforms.</p>
<p>That's it for describing the start of Mahjong game recreation.</p>Начало воссоздания Маджонга2018-01-26T00:00:00+03:002018-01-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2018-01-26:/mahjong-recreation-start-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2018-01-26-mahjong-recreation-start.png"></p>
<p>Эта статья описывает начало воссоздания игры Маджонг.</p>
<p><strong>План</strong></p>
<p>Мы начали воссоздание Маджонга с составления краткого плана реализации игровой механики с минимальной графикой:</p>
<ul>
<li>Загрузить раскладку</li>
<li>Поместить фишки в позиции раскладки</li>
<li>Различить фишки</li>
<li>Реализовать выбор фишек</li>
<li>Реализовать сравнение фишек</li>
</ul>
<p>Как и любой другой план, этот выглядел вполне адекватно на первый взгляд. Тем …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2018-01-26-mahjong-recreation-start.png"></p>
<p>Эта статья описывает начало воссоздания игры Маджонг.</p>
<p><strong>План</strong></p>
<p>Мы начали воссоздание Маджонга с составления краткого плана реализации игровой механики с минимальной графикой:</p>
<ul>
<li>Загрузить раскладку</li>
<li>Поместить фишки в позиции раскладки</li>
<li>Различить фишки</li>
<li>Реализовать выбор фишек</li>
<li>Реализовать сравнение фишек</li>
</ul>
<p>Как и любой другой план, этот выглядел вполне адекватно на первый взгляд. Тем не менее стоит начать разработку, как появляются новые детали. Этот план не был исключением. Ниже представлена пара проблем, вскрывшихся во время разработки.</p>
<p><strong>Проблема №1: предоставить бинарные ресурсы на поддерживаемых платформах</strong></p>
<p>Маджонг будет доступен для десктопа, мобилок и веба. Каждая платформа имеет ограничения на доступ к внешним файлам:</p>
<ul>
<li>Десктоп позволяет получить доступ почти к любому файлу</li>
<li>Мобилки имеют ограниченный доступ к файловой системе</li>
<li>Веб не имеет файловой системы</li>
</ul>
<p>Мы решили сделать единый способ доступа к ресурсам путём их встраивания в исполняемый файл. Это решение привело к рождению проектов <strong>mjin-resource</strong> и <strong>mahjong-data</strong>.</p>
<p>Проект <a href="https://bitbucket.org/ogstudio/mjin-resource">mjin-resource</a> служит для:</p>
<ul>
<li>перевода бинарных файлов в заголовочные файлы C с помощью утилиты <strong>xxd</strong></li>
<li>создания проекта MJIN, состоящего из сгенерированных заголовочных файлов, который собирается в статическую библиотеку</li>
<li>предоставления интерфейса C++ для работы с ресурсами</li>
</ul>
<p>Проект <a href="https://bitbucket.org/ogstudio-games/mahjong-data">mahjong-data</a> является примером подобного проекта MJIN, ресурсы из которого использует проект <a href="https://bitbucket.org/ogstudio-games/mahjong">mahjong</a>.</p>
<p><strong>Проблема №2: загрузка изображений PNG на поддерживаемых платформах</strong></p>
<p>Для загрузки PNG мы используем соответствующий плагин OpenSceneGraph. Мы собрали его без проблем для десктопа. Сборка же для веба (Emscripten) оказалась сложнее: Emscripten содержит собственную версию <strong>libpng</strong>, которую сборочный скрипт OpenSceneGraph не видит. Нам пришлось обойти несколько проверок OpenSceneGraph, чтобы успешно собрать плагин для Emscripten.
Сборка плагина под мобилки ещё ждёт нас впереди. Как только мы разберёмся с плагином PNG на всех поддерживаемых платформах, мы опубликуем информацию о его сборке в новом самоучителе для <a href="https://github.com/ogstudio/openscenegraph-cross-platform-guide">кросс-платформенного руководства OpenSceneGraph</a>. Нас уже <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">попросили это сделать</a>.</p>
<p><strong>Разработка</strong></p>
<p><a href="http://opengamestudio.org/lets-go-ru.html">Как вы знаете</a>, мы опубликовали кросс-платформенное руководство OpenSceneGraph для усиления сообщества OpenSceneGraph. Мы ценим обучение и любим делиться своими знаниями. Поэтому мы решили разрабатывать Маджонг небольшими воспроизводимыми частями, каждая из которых имеет уникальную внутреннюю версию. Эти версии доступны в <a href="https://bitbucket.org/ogstudio-games/mahjong">хранилище проекта mahjong</a>.</p>
<p>Мы также предоставляем <a href="http://ogstudio.github.io/game-mahjong">историю версий, каждая из которых сопровождается сборкой под веб</a>, для следующих целей:</p>
<ul>
<li>обучение: показать ход разработки изнутри</li>
<li>доступность: предоставить старые версии для сравнения</li>
</ul>
<p><strong>Текущее состояние игры Маджонг</strong></p>
<p>На момент написания этой статьи мы закончили реализацию выбора фишек. <a href="https://ogstudio.github.io/game-mahjong/versions/010/mjin-player.html">Проверьте в своём браузере!</a></p>
<p>После реализации сравнения фишек мы опубликуем промежуточный результат для всех поддерживаемых платформ.</p>
<p>На этом мы заканчиваем описание начала воссоздания игры Маджонг.</p>The year of lessons2017-12-31T22:00:00+03:002017-12-31T22:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-12-31:/the-year-of-lessons.html<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><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 on the site, half of our plans in 2017
were destined to be completed at least approximately as we assumed. The other
half was changed significantly.</p>
<p>During the year, people joined the team and left it. As a result, we meet the
end of the year with exactly the same team as 365 days ago. It made us think.
A lot. But We'll save the story for another time.</p>
<p>There will be exactly one goal for 2018. We will take all the results, and then
we will make a new mahjong game. We're already know how to make a mahjong
solitaire so we will begin with it. This time, it will be cross-platform.
We will definitely try to cover Windows, Linux, macOs, Web, and Android.
We can't promis anything about the iOS right now (although we'll see what
we can do).</p>
<p>There is no point in writing more than We want to say. We learned a lot for
this year, and we will try to apply all this knowledge to achieve more in the
next one. We wish everyone a Happy New Year. Stay tuned.</p>
<p>The Opensource Game Studio Team.</p>Год новых уроков2017-12-31T22:00:00+03:002017-12-31T22:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-12-31:/the-year-of-lessons-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p>
<p>Итак, 2017й год стремительно приближается к финалу, итоги года уже подведены,
так что в свободное от расчехления фейерверков и подготовки систем залпового
огня шампанским время мы обозначим свою цель в следующем году.</p>
<p>Как, наверное, понятно из других статей на сайте, примерно половине наших
планов в 2017 году было суждено осуществиться …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p>
<p>Итак, 2017й год стремительно приближается к финалу, итоги года уже подведены,
так что в свободное от расчехления фейерверков и подготовки систем залпового
огня шампанским время мы обозначим свою цель в следующем году.</p>
<p>Как, наверное, понятно из других статей на сайте, примерно половине наших
планов в 2017 году было суждено осуществиться хотя бы приблизительно так
как мы предполагали, остальные поменялись существенно.</p>
<p>В течение года люди приходили в команду, уходили из нее, в итоге конец года
мы встречаем с тем же составом что и 365 дней назад. Это заставило нас
задуматься, но о выводах как-нибудь в другой раз.</p>
<p>Цель на 2018й год у нас будет ровно одна. Мы возьмем все результаты своих
технологических поисков, и снова вернемся к маджонгу. Первым будет то,
что мы уже умеем делать и делали - пасьянс. На этот раз, он будет
кроссплатформенным. Точно постараемся охватить Windows, Linux, macOs, Web
и Android. На счет iOS пока ничего обещать не будем (хотя и зарекаться - тоже).</p>
<p>Наверное нет смысла писать больше чем хочется сказать. Мы многому научились за
этот год, и в следующем постараемся все это применить. Так что желаем всем
счастливого Нового Года и оставайтесь с нами.</p>
<p>Команда Opensource Game Studio.</p>2017 summary2017-11-22T00:00:00+03:002017-11-22T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-11-22:/2017-summary.html<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><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. Probably right after finishing Half-Life 2 or Morrowind. 99.99% of those who wanted to participate weathered during a couple of years leaving only the two of us: Michael (coding) and Ivan (the rest).
The project was in a constant turmoil because we had no clear purpose and discipline. Thus, we only got a handful of demonstrations during that period.</p>
<p><strong>2010.</strong> The first year for us to admit we failed big time. After accepting the failure, we have set Mahjong game as our initial target. We also realized that if we want the game out, we must work every day. We didn't get anywhere by working on weekends because they often collided with family time.</p>
<p><strong>2012, 2013.</strong> We released Mahjong 1.0 and Mahjong 1.1 correspondingly. We created a complete, polished game in 3-4 years after failing to provide anything of value during previous 5 years. To this date, Mahjong is the best and only game we released so far. We're still proud of it because it still feels great.</p>
<p><strong>2015.</strong> We showcased the first version of our game toolset. After releasing Mahjong, we decided to spend time on building toolset that would allow us to develop games faster.</p>
<p><strong>2016.</strong> We recreated Mahjong gameplay with our game toolset. However, we quickly realized that desktop only game toolset is a dead end. It led us to research mobile platforms.</p>
<p><strong>Last year</strong></p>
<p><strong>2016, October.</strong> We started mobile platforms' research by making simple straightforward OpenSceneGraph application run under Android.</p>
<p><strong>2017, January.</strong> We got the Android version working and started iOS and Web research.</p>
<p><strong>2017, February.</strong> We made the sample application work everywhere: desktop, mobile, web.</p>
<p>Researching mobile and web took us about five months. We spent that much time because there was no documentation on how to run OpenSceneGraph across platforms. We had to step in and create said documentation.</p>
<p><strong>2017, July.</strong> We published <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a>, which describes how to create a simple OpenSceneGraph application and make it run on desktop, mobile, and web. To this date, this is our most popular GitHub repository.</p>
<p><strong>2017, November.</strong> We published simple <a href="https://ogstudio.github.io/game-memory-colors/tutorial-5.3/mjin-player.html">Memory: Colors game</a> and the <a href="https://bitbucket.org/ogstudio-games/memory-colors">guide</a> on how to create the game from scratch. The game is powered by MJIN, our new cross-platform game toolset that we started this summer.</p>
<p>Currently MJIN toolset is in its infancy. MJIN needs a real game to flourish. That's why we are already working on cross-platform Mahjong. We'll do our best to make Mahjong faster this time.</p>Итоги 2017-го2017-11-22T00:00:00+03:002017-11-22T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-11-22:/2017-summary-ru.html<p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>Настало время сделать ревизию наших достижений в 2017 году и проверить, насколько они следуют основной цели проекта Opensource Game Studio.</p>
<p><strong>Краткая история</strong></p>
<p>Проекту Opensource Game Studio уже 12 лет.</p>
<p><strong>2005.</strong> Мы начали проект с <a href="https://unixforum.org/index.php?showtopic=9989">фанатичного призыва</a> к созданию самой лучшей игры. Видимо, сразу же после прохождения Half-Life 2 или Morrowind …</p><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>Настало время сделать ревизию наших достижений в 2017 году и проверить, насколько они следуют основной цели проекта Opensource Game Studio.</p>
<p><strong>Краткая история</strong></p>
<p>Проекту Opensource Game Studio уже 12 лет.</p>
<p><strong>2005.</strong> Мы начали проект с <a href="https://unixforum.org/index.php?showtopic=9989">фанатичного призыва</a> к созданию самой лучшей игры. Видимо, сразу же после прохождения Half-Life 2 или Morrowind. 99.99% тех, кто хотел участвовать, отвалились в течение первых двух лет. Остались лишь два человека: Михаил (программирование) и Иван (всё остальное). Проект находился в стадии постоянного беспорядка, т.к. у нас не было ни чёткой цели, ни дисциплины. Неудивительно, что за этот период мы можем похвастаться лишь небольшим набором сумбурных демонстраций.</p>
<p><strong>2010.</strong> Первый год признания нашего поражения. После принятия поражения мы поставили себе целью создать игру Маджонг. Мы также осознали, что для выпуска игры нам придётся работать каждый день. Работа по выходным не приносила результатов, т.к. она часто сталкивалась с необходимостью уделять время семье.</p>
<p><strong>2012, 2013.</strong> Мы выпустили версии 1.0 и 1.1 Маджонга соответственно. Мы создали полноценную отполированную игру за 3-4 года, тогда как до этого 5 лет не могли сделать ничего вразумительного. Маджонг до сих пор остаётся нашей лучшей и единственной выпущенной игрой. Мы всё ещё гордимся им, и нам всё ещё нравится в него играть.</p>
<p><strong>2015.</strong> Мы продемонстрировали первую версию нашего средства разработки. Мы приступили к его созданию сразу после выпуска Маджонга, т.к. решили сделать инструмент для экономии времени разработки следующих игр.</p>
<p><strong>2016.</strong> Мы воссоздали игровую механику Маджонга с помощью нашего инструмента. Тем не менее, к тому моменту мы осознали, что разработка лишь под настольные компьютеры нежизнеспособна. Это понимание подтолкнуло нас к изучению мобильных платформ.</p>
<p><strong>Последний год</strong></p>
<p><strong>2016, октябрь.</strong> Мы начали изучение мобильных платформ с создания простейшего приложения OpenSceneGraph, которое сможет работать на Android.</p>
<p><strong>2017, январь.</strong> Мы получили версию Android и начали изучение iOS с Вебом.</p>
<p><strong>2017, февраль.</strong> Мы запустили простейшее приложение везде: настольный компьютер, мобильные платформы, веб.</p>
<p>Изучение мобильных платформ и веба заняло у нас около пяти месяцев. Нам пришлось потратить это время по причине отсутствия какой-либо внятной документации по работе с OpenSceneGraph на разных платформах. После таких громадных трат времени мы решили сэкономить это время другим разработчикам и занялись созданием указанной документации.</p>
<p><strong>2017, июль.</strong> Мы опубликовали <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">инструкцию по работе с OpenSceneGraph на разных платформах</a>, которая рассказывает в деталях о создании простейшего приложения OpenSceneGraph и запуске его на настольных компьютерах, мобильных платформах и вебе. Эта инструкция является нашим самым популярным проектом на GitHub.</p>
<p><strong>2017, ноябрь.</strong> Мы выпустили простую <a href="https://ogstudio.github.io/game-memory-colors/tutorial-5.3/mjin-player.html">игру "Память: Цвета"</a> и <a href="https://bitbucket.org/ogstudio-games/memory-colors">инструкцию</a> по созданию этой игры с нуля. Игра создана с помощью MJIN, нашего нового инструмента для разработки игр, этому инструменту всего лишь несколько месяцев.</p>
<p>На текущий момент MJIN лишь начинает развитие. Этому инструменту нужна настоящая игра, чтобы расцвести. Поэтому мы уже работаем над Маджонгом, который будет радовать вас и на настольных компьютерах, и на мобильных платформах, и в вебе. На этот раз мы постараемся сделать Маджонг быстрее. </p>Back to the Static2017-10-16T00:00:00+03:002017-10-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-10-16:/back-to-the-static.html<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><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 changing past into future.</p>
<p>A static website is more straightforward, quicker and more secure. And with the help of generators, it is also as easy to manage, as the dynamic website.
So, we are starting our site anew with the help of the <a href="https://blog.getpelican.com/">Pelican</a>.
Right now it doesn't have all the content from our old site, but we'll add most of it soon.</p>Назад в Статику2017-10-16T00:00:00+03:002017-10-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-10-16:/back-to-the-static-ru.html<p><img alt="Назад в Статику" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>Мы используем Wordpress в качестве движка нашего сайта уже более семи лет. И теперь пришло время двигаться вперед. Или назад.
Некоторое время мы следили за разработкой нового поколения движков - генераторов статических сайтов.
Похоже, что это технология, способная превратить прошлое в будущее.</p>
<p>Статический веб-сайт проще, быстрее и безопаснее. И с помощью …</p><p><img alt="Назад в Статику" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>Мы используем Wordpress в качестве движка нашего сайта уже более семи лет. И теперь пришло время двигаться вперед. Или назад.
Некоторое время мы следили за разработкой нового поколения движков - генераторов статических сайтов.
Похоже, что это технология, способная превратить прошлое в будущее.</p>
<p>Статический веб-сайт проще, быстрее и безопаснее. И с помощью генераторов им настолько же легко управлять, как и динамическим веб-сайтом.
Так что мы начинаем наш сайт заново с помощью [Pelican] (https://blog.getpelican.com/).
Сейчас здесь нет всего контента с нашего старого сайта, но мы добавим его в ближайшее время.</p>The birth of MJIN world2017-09-10T00:00:00+03:002017-09-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-09-10:/mjin-world-birth.html<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><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 a sample application. The first criterion was taken for granted because it SHOULD be true.</p>
<p>At the time, we saw two ways to verify the first criterion:</p>
<ol>
<li>create one sample application for each platform to verify scripting only</li>
<li>create a single cross-platform application, which can run any code</li>
</ol>
<p>We chose the second approach because it is more beneficial in the long run. As you might have guessed, <a href="https://bitbucket.org/ogstudio/mjin-player">mjin-player</a> is that application.</p>
<p>mjin-player serves as a base for the rest of MJIN projects to make them run on all supported platforms. However, there's no magic trick to hide the projects from the platform, and there was no such intention. Instead, mjin-player provides a consistent set of rules how other MJIN projects should be structured to be able to run on all supported platforms.</p>
<p><strong>mjin-application</strong></p>
<p>This set of rules for MJIN projects is packaged into <a href="https://bitbucket.org/ogstudio/mjin-application">mjin-application</a>. mjin-application is a library that provides basic functionality every MJIN project would need and nothing more. For instance, mjin-application does not and will not contain scripting or any other specific functionality.</p>
<p><strong>MJIN world</strong></p>
<p>So what is <a href="https://bitbucket.org/ogstudio/mjin">MJIN world</a>? It's a set of projects that constitute our game development tools. mjin-player and mjin-application are the first bricks of the newly born MJIN world. A lot more to come. Stay tuned for the brighter MJIN future.</p>
<p>That's it for describing the birth of MJIN world in August 2017.</p>Рождение вселенной MJIN2017-09-10T00:00:00+03:002017-09-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-09-10:/mjin-world-birth-ru.html<p><img alt="Рождение вселенной MJIN" src="http://opengamestudio.org/2017-09-mjin-world-birth.png"></p>
<p>Эта статья описывает рождение вселенной MJIN в августе 2017.</p>
<p><strong>mjin-player</strong></p>
<p>Как вы знаете, <a href="http://opengamestudio.org/scripting-research-ru.html">в июле мы изучали скриптование</a>. Мы нашли решение, которое удовлетворяет следующим критериям. Скрипты должны:</p>
<ol>
<li>исполняться в исходном виде без изменений на всех поддерживаемых платформах</li>
<li>позволять расширять код C++</li>
</ol>
<p>Мы проверили второй критерий в рамках тестового приложения. В …</p><p><img alt="Рождение вселенной MJIN" src="http://opengamestudio.org/2017-09-mjin-world-birth.png"></p>
<p>Эта статья описывает рождение вселенной MJIN в августе 2017.</p>
<p><strong>mjin-player</strong></p>
<p>Как вы знаете, <a href="http://opengamestudio.org/scripting-research-ru.html">в июле мы изучали скриптование</a>. Мы нашли решение, которое удовлетворяет следующим критериям. Скрипты должны:</p>
<ol>
<li>исполняться в исходном виде без изменений на всех поддерживаемых платформах</li>
<li>позволять расширять код C++</li>
</ol>
<p>Мы проверили второй критерий в рамках тестового приложения. В первый критерий мы просто поверили, т.к. он ДОЛЖЕН быть верен.</p>
<p>В тот момент мы видели два варианта проверки первого критерия:</p>
<ol>
<li>создать по одному тестовому приложению под каждую платформу для проверки лишь этого критерия</li>
<li>создать одно кросс-платформенное приложение, которому можно скормить практически любой код</li>
</ol>
<p>Мы выбрали второй подход, т.к. он выгоднее в долгосрочной перспективе. Как вы уже догадались, <a href="https://bitbucket.org/ogstudio/mjin-player">mjin-player</a> является тем самым кросс-платформенным приложением.</p>
<p>mjin-player служит базой для остальных проектов MJIN, которая позволяет этим проектам работать на всех поддерживаемых платформах. Тем не менее, в mjin-player нет никакой магии, проекты никак не скрыты от деталей платформ, да и не было такой задачи. Вместо скрытия деталей платформы mjin-player предоставляет набор правил, которым должны удовлетворять проекты MJIN для работы на всех поддерживаемых платформах.</p>
<p><strong>mjin-application</strong></p>
<p>Этот набор правил представлен в виде <a href="https://bitbucket.org/ogstudio/mjin-application">mjin-application</a>. mjin-application является библиотекой с базовым функционалом, необходимым для каждого проекта MJIN, но не более. Например, mjin-application не содержит и никогда не будет содержать скриптования или подобного специфического функционала.</p>
<p><strong>Вселенная MJIN</strong></p>
<p>Так что же такое <a href="https://bitbucket.org/ogstudio/mjin">вселенная MJIN</a>? Это множество проектов, которые являются нашими средствами для разработки игр. mjin-player и mjin-application - первые кирпичики недавно появившейся вселенной MJIN. А будет их намного больше. Оставайтесь на связи, нас ждёт светлое будущее с MJIN.</p>
<p>На этом мы заканчиваем описание рождения вселенной MJIN в августе 2017.</p>Scripting research2017-08-16T00:00:00+03:002017-08-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-08-16:/scripting-research.html<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><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 C/C++ code and use it in dozens of languages like Python, Ruby, Lua, Java, C#, etc.. SWIG really helped us taste the beauty of platform-independent code. However, SWIG only works one way: from C/C++ to a target language. This means the main application must be in the target language, and C/C++ code can only be used as a library.</p>
<p>Having the main application in Python works fine for the desktop, but not so great for mobile and web, where C and C++ are the only natively supported cross-platform languages. There are projects like <a href="https://kivy.org">Kivy</a>, which allow you to develop cross-platform applications in Python, but they are not supported natively. This means it's a lot of headaches when Android and iOS APIs change.</p>
<p>Having the main application in C/C++ and the need to support scripting means that a scripting language should be interpreted by the application. This is what SWIG, Kivy, and similar projects are not meant to fulfill.</p>
<p><strong>Our secondary goal for using a scripting language was to allow to extend C++ code.</strong></p>
<p>OGS Editor 0.10 has some modules written in C++, and some in Python. The modules are equal from the perspective of the main application; it doesn't care what language the module is written in.</p>
<p>To achieve such flexibility, we introduced a so-called Environment. Each module would register the keys it responds to, and Environment would deliver corresponding messages.
Technically such behaviour is achieved by inheriting a base class and overriding its methods in both C++ and a scripting language.</p>
<p><strong>First, we evaluated Python for the role of cross-platform scripting language.</strong></p>
<p>Since we already used Python, we started to research the possibility to run Python code on every supported platform. The result was disappointing because CPython (the default Python implementation used on the desktop) does not mention mobile and web platforms. We only found some years old forks of CPython that were claimed to work either on Android or iOS. Such a disarray was not suitable for us.
We also had a look at <a href="http://pypy.org">PyPy</a>, another Python implementation. It also did not mention support for mobile and web platforms.</p>
<p>This was a clear indication that Python community doesn't care for mobile and web platforms. Or that nobody had time to provide the information about building Python on such platforms. Either way, it was not acceptable for us.</p>
<p><strong>Second, we evaluated <a href="http://wren.io">Wren</a> for the role of cross-platform scripting language.</strong></p>
<p>Wren was the first scripting language we stumbled upon in the long list of non-mainstream scripting languages.</p>
<p>Wren claimed to be small and easy to learn. Wren also claimed to be intended for embedding in applications. Ironically, the author <a href="http://wren.io/embedding-api.html">had no time to document how to do the embedding in the first place</a>. When <a href="https://github.com/munificent/wren/issues/465">we asked for the time estimates of publishing</a> the critical part of the documentation, <a href="https://github.com/munificent/wren/issues/402">we just got a reference to another issue</a> where the other guy was asking the same question half a year ago!</p>
<p>That's when we ended our relationship with Wren.</p>
<p><strong>Third, we evaluated <a href="http://chaiscript.com">Chai</a> for the role of cross-platform scripting language.</strong></p>
<p>Chai was in the long list of non-mainstream scripting languages, too. Chai was promising because it claimed to be specifically tailored for embedding in a C++ application.
We successfully managed to call a C++ function from inside Chai but failed to call a member function. <a href="http://discourse.chaiscript.com/t/cannot-call-a-function-that-accepts-a-string-and-a-vector/334">We asked for help</a>, but nobody replied.</p>
<p>We had to end our relationship with Chai.</p>
<p><strong>Fourth, we evaluated Lua for the role of cross-platform scripting language.</strong></p>
<p>Lua is the mainstream language for embedding. So we decided to try the obvious choice. Documentation looked promising, too. However, by the end of reading the <a href="https://www.lua.org/pil/24.html">C API</a> chapter we had no clue how to inherit a class inside Lua.</p>
<p>This led us to search for libraries that wrap Lua C API syntax into something more meaningful for C++. That's how we found <a href="http://sol2.rtfd.io">Sol2</a>. Just as before, the first attempt to call a C++ member function from Lua failed. But unlike before, we asked for help and <a href="https://github.com/ThePhD/sol2/issues/465">got the help</a>! This was a refreshing surprise for us.
Next, we tried to inherit a class in Lua and override the class methods. We failed, but <a href="https://github.com/ThePhD/sol2/issues/468">the author helped us out again</a>. In the end, we succeeded in inheriting a class and overriding its behaviour.</p>
<p>That's when we understood it's a start for a long and mutual relationship with Sol2/Lua.</p>
<p><strong>This search for a scripting language taught us one important lesson: people matter, not technologies.</strong></p>
<p>There are lots of scripting languages that look shiny on the outside but are dead. Why? Because some authors don't have time for users. In return, users don't have time for the authors' projects.</p>
<p>That's it for describing scripting research in July 2017.</p>Изучение скриптования2017-08-16T00:00:00+03:002017-08-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-08-16:/scripting-research-ru.html<p><img alt="Изучение скриптования" src="http://opengamestudio.org/2017-08-scripting-research.png"></p>
<p>Эта статья описывает изучение скриптования в июле 2017.</p>
<p><strong>Наша основная цель использования скриптового языка - это наличие платформо-независимого кода, выполняемого без изменений на каждой поддерживаемой платформе.</strong></p>
<p>Редактор 0.10 использует Python в качестве подобного кода с помощью <a href="http://swig.org/">SWIG</a>. SWIG позволяет использовать практически любой код C/C++ из языков вроде Python, Ruby …</p><p><img alt="Изучение скриптования" src="http://opengamestudio.org/2017-08-scripting-research.png"></p>
<p>Эта статья описывает изучение скриптования в июле 2017.</p>
<p><strong>Наша основная цель использования скриптового языка - это наличие платформо-независимого кода, выполняемого без изменений на каждой поддерживаемой платформе.</strong></p>
<p>Редактор 0.10 использует Python в качестве подобного кода с помощью <a href="http://swig.org/">SWIG</a>. SWIG позволяет использовать практически любой код C/C++ из языков вроде Python, Ruby, Lua, Java, C# и т.д.. SWIG помог нам впервые оценить прелесть платформо-независимого кода. К сожалению, SWIG работает лишь в одном направлении: из C/C++ в язык назначения. Это приводит к тому, что основное приложение должно быть написано на языке назначения, а код C/C++ может быть использован лишь в виде библиотеки.</p>
<p>Основное приложение на языке Python вполне подходит для десктопа, но не для мобилок и веба, где языки C и C++ являются единственными языками, поддерживаемыми нативно на каждой платформе. Конечно, существуют проекты вроде <a href="https://kivy.org">Kivy</a>, которые позволяет разрабатывать кросс-платформенные приложения на Python, но они не поддерживаются нативно. Отсутствие нативной поддержки выливается в огромную головную боль при изменении API у Android и iOS.</p>
<p>Необходимость в приложении на C/C++ и поддержке скриптов приводит к обязательному интерпретированию скриптового языка самим приложением. Это как раз то, что SWIG, Kivy и подобные проекты не позволяют сделать.</p>
<p><strong>Наша вторичная цель использования скриптового языка - это возможность расширения кода C++.</strong></p>
<p>Одни модули Редактора 0.10 написаны на C++, а другие на Python. С точки зрения основного приложения, все модули равны. Для приложения нет никакой разницы, на каком языке написан конкретный модуль.</p>
<p>Для достижения этой гибкости мы ввели так называемое Окружение (Environment). Каждый модуль регистрирует ключи (keys), на которые он отвечает, а Окружение доставляет соответствующие сообщения. Технически такое поведение можно достигнуть с помощью наследования базового класса и переопределения его методов как в C++, так и в скриптовом языке.</p>
<p><strong>Python был первым языком, который мы рассмотрели в качестве платформо-независимого скриптового языка.</strong></p>
<p>Т.к. мы уже использовали Python, то логично было начать изучение с него. Мы хотели проверить, можно ли запустить код Python на каждой поддерживаемой платформе. К сожалению, результаты были удручающими, т.к. документация CPython (реализация Python, используемая по умолчанию на десктопе) никак не упоминала ни мобилки, ни веб. Всё, что мы нашли, - это пара форков CPython лохматых годов, которые якобы работают либо на Android, либо на iOS. Такой раздрай нас не устроил.
Мы также рассмотрели <a href="http://pypy.org">PyPy</a>, ещё одну реализацию Python, но она тоже не содержала информации о мобилках и вебе.</p>
<p>Это было чётким сигналом об отсутствии интереса к мобилками и вебу со стороны сообщества Python. Либо об отсутствии времени даже на то, чтобы описать использование Python на данных платформах. В любом случае, такое положение вещей нас не устроило.</p>
<p><strong><a href="http://wren.io">Wren</a> был вторым языком, который мы рассмотрели в качестве платформо-независимого скриптового языка.</strong></p>
<p>Wren был первым языком из длинного списка малоизвестных скриптовых языков.</p>
<p>Wren преподносился как небольшой и простой язык. Согласно документации, основная цель Wren - это быть встроенным в приложение. По иронии судьбы, у автора <a href="http://wren.io/embedding-api.html">не было времени описать в документации встраивание Wren</a> в приложение. Когда мы <a href="https://github.com/munificent/wren/issues/465">спросили о сроках публикации</a> этой критически важной части документации, мы <a href="https://github.com/munificent/wren/issues/402">получили в ответ ссылку на тикет</a>, в котором другой человек спрашивал тот же самый вопрос полгода назад!</p>
<p>На этом мы закончили отношения с Wren.</p>
<p><strong><a href="http://chaiscript.com">Chai</a> был третьим языком, который мы рассмотрели в качестве платформо-независимого скриптового языка.</strong></p>
<p>Chai был в том же длинном списке малоизвестных скриптовых языков. Он преподносился как язык, специально предназначенный для встраивания в приложения C++. Мы без проблем вызвали функцию C++ из Chai, но нам не удалось вызвать метод класса. <a href="http://discourse.chaiscript.com/t/cannot-call-a-function-that-accepts-a-string-and-a-vector/334">Мы попросили о помощи</a>, но ответом была лишь тишина.</p>
<p>Нам пришлось завершить отношения с Chai.</p>
<p><strong>Lua был четвёртым языком, который мы рассмотрели в качестве платформо-независимого скриптового языка.</strong></p>
<p>Lua является популярным языком для встраивания. Мы решили попробовать очевидный вариант. Документация выглядела многообещающе, однако под конец чтения главы <a href="https://www.lua.org/pil/24.html">C API</a> у нас не было ни малейшего представления, как наследовать класс C++ в Lua.</p>
<p>Этот вопрос заставил нас найти библиотеку, которая смогла бы на него ответить: <a href="http://sol2.rtfd.io">Sol2</a>. Первая попытка вызвать функцию C++ из Lua провалилась. Правда, на этот раз наш вопрос был услышан, и <a href="https://github.com/ThePhD/sol2/issues/465">мы получили ответ</a>! Мы были сильно удивлены.
Далее мы попытались наследовать класс C++ в Lua, чтобы переопределить методы класса. Нам это не удалось с первого раза, но автор Sol2 <a href="https://github.com/ThePhD/sol2/issues/468">снова помог нам</a>.</p>
<p>В тот момент мы поняли, что это начало долгого и взаимовыгодного сотрудничества с Sol2/Lua.</p>
<p><strong>Поиск скриптового языка открыл для нас следующую истину: люди важнее технологий.</strong></p>
<p>Существует множество скриптовых языков, которые выглядят привлекательно на первый взгляд, но которые мертвы. Почему? Потому что у некоторых авторов нет времени на пользователей. В ответ пользователи предпочитают не тратить своё время на проекты подобных авторов.</p>
<p>На этом мы заканчиваем описание изучения скриптования в июле 2017.</p>OpenSceneGraph cross-platform guide2017-07-17T00:00:00+03:002017-07-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-07-17:/openscenegraph-cross-platform-guide.html<p><img alt="OpenSceneGraph guide" src="http://opengamestudio.org/2017-07-openscenegraph-guide.png"></p>
<p>This article summarizes the work we did to produce OpenSceneGraph cross-platform guide.</p>
<p>June marked the finish of <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> with the publishing of the last (initially planned) tutorial. The tutorial describes <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/1.10.SampleWeb">how to build and run sample OpenSceneGraph application in Web</a> using Emscripten.
In case you missed it, here's …</p><p><img alt="OpenSceneGraph guide" src="http://opengamestudio.org/2017-07-openscenegraph-guide.png"></p>
<p>This article summarizes the work we did to produce OpenSceneGraph cross-platform guide.</p>
<p>June marked the finish of <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> with the publishing of the last (initially planned) tutorial. The tutorial describes <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/1.10.SampleWeb">how to build and run sample OpenSceneGraph application in Web</a> using Emscripten.
In case you missed it, here's a <a href="https://ogstudio.github.io/openscenegraph-cross-platform-guide/">link to the final application</a>. Open it in your web browser.</p>
<p>We started to compose the guide in February when we successfully managed to render a simple model on mobile and web.
We spent 120 hours in five months to produce ten tutorials of the guide.</p>
<p>We have been doing OpenSceneGraph cross-platform guide for two main reasons:</p>
<ol>
<li>Keep OpenSceneGraph cross-platform knowledge in easily accessible and reproducible form</li>
<li>Share the knowledge with OpenSceneGraph community to make it stronger</li>
</ol>
<p>We believe we succeeded in both. Here's why:</p>
<ol>
<li>The guide repository has more <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/stargazers">stars</a> (aka "likes") than any other repository of ours</li>
<li>OpenSceneGraph project leader Robert Osfield said <a href="http://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg74815.html">"Great work"</a>, which means a lot</li>
<li>The guide already has <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues">two issues</a></li>
</ol>
<p>Reaching our goal of researching OpenSceneGraph cross-platform development and providing the knowledge back to the community just made us happier.</p>
<p>However, our journey does not stop here. Using the knowledge of the guide, we now continue to work on bringing our tools to support mobile and web, just as we <a href="http://opengamestudio.org/lang/en/news/2456">promised in January</a>.</p>
<p>That's it for summarizing the work we did to produce OpenSceneGraph cross-platform guide.</p>OpenSceneGraph cross-platform guide2017-07-17T00:00:00+03:002017-07-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-07-17:/openscenegraph-cross-platform-guide-ru.html<p><img alt="OpenSceneGraph guide" src="http://opengamestudio.org/2017-07-openscenegraph-guide.png"></p>
<p>Эта статья резюмирует создание кросс-платформенного руководства OpenSceneGraph.</p>
<p>Июнь ознаменовал собой окончание работы над <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенным руководством OpenSceneGraph</a>. Мы опубликовали последний самоучитель (из изначально запланированных). Этот самоучитель описывает <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/1.10.SampleWeb">сборку и запуск примера приложения OpenSceneGraph в вебе</a> с помощью Emscripten.
Если вы упустили этот самоучитель, то вот <a href="https://ogstudio.github.io/openscenegraph-cross-platform-guide/">ссылка на приложение</a> из него. Откройте …</p><p><img alt="OpenSceneGraph guide" src="http://opengamestudio.org/2017-07-openscenegraph-guide.png"></p>
<p>Эта статья резюмирует создание кросс-платформенного руководства OpenSceneGraph.</p>
<p>Июнь ознаменовал собой окончание работы над <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенным руководством OpenSceneGraph</a>. Мы опубликовали последний самоучитель (из изначально запланированных). Этот самоучитель описывает <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/1.10.SampleWeb">сборку и запуск примера приложения OpenSceneGraph в вебе</a> с помощью Emscripten.
Если вы упустили этот самоучитель, то вот <a href="https://ogstudio.github.io/openscenegraph-cross-platform-guide/">ссылка на приложение</a> из него. Откройте ссылку в веб-браузере.</p>
<p>Мы начали составление руководства в феврале, как только нам удалось отобразить простую модель на мобилках и вебе.
Мы потратили 120 часов за пять месяцев на составление десяти самоучителей этого руководства.</p>
<p>Создание кросс-платформенного руководства OpenSceneGraph преследовало две основные цели:</p>
<ol>
<li>Сохранить знания о кросс-платформенной работе с OpenSceneGraph в легкодоступной и воспроизводимой форме</li>
<li>Поделиться этим знанием с сообществом OpenSceneGraph и тем самым усилить сообщество</li>
</ol>
<p>Мы уверены в том, что нам удалось достичь обе цели. И вот почему:</p>
<ol>
<li>Хранилище руководства получило больше <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/stargazers">звёзд</a> (лайков), чем любое другое наше хранилище</li>
<li>Robert Osfield, лидер проекта OpenSceneGraph, оценил руководство как <a href="http://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg74815.html">"отличную работу"</a>; это значит для нас многое</li></li>
<li>У руководства уже есть <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues">два тикета</a></li>
</ol>
<p>В конце концов, мы просто рады тому факту, что изучили кросс-платформенную разработку с OpenSceneGraph и поделились этим знанием с сообществом.</p>
<p>Тем не менее, наше путешествие на этом не окончено. Используя знания руководства, мы продолжаем работу над тем, чтобы добавить в свои инструменты поддержку мобилок и веба, как мы <a href="http://opengamestudio.org/lang/ru/news/2456">обещали в январе</a>.</p>
<p>На этом мы заканчиваем резюме о создании кросс-платформенного руководства OpenSceneGraph.</p>iOS tutorial2017-06-08T10:00:00+03:002017-06-08T10:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-06-08:/ios-tutorial.html<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 up …</p><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 up with a hackish demo that works for one person, but it's hard to create a concise example that works for everyone.</p>
<h3>Native library</h3>
<p>The first question we had to answer was: should the sample application be part of Xcode project or be a separately built library?</p>
<p>We had to consider the following facts:</p>
<ol>
<li>Xcode project can use C++ directly (thanks to Objective-C++) without stuff like JNI<ul>
<li>There's no need for a separate library (+ application)</li>
<li>Creating a separate library is an additional work (- library)</li>
</ul>
</li>
<li>OpenSceneGraph builds libraries<ul>
<li>It's easier to use standard build process (+ library)</li>
<li>It's harder to create custom build process just for a single platform (- application)</li>
</ul>
</li>
<li>OpenSceneGraph uses CMake build system, which is not supported by Xcode<ul>
<li>Xcode project can't include CMake files (- application)</li>
<li>It's easy to create custom CMake file that includes OpenSceneGraph CMake file to build a single library (+ library)</li>
</ul>
</li>
<li>CMake can generate Xcode project<ul>
<li>It's possible to create a CMake file that builds both OpenSceneGraph and the sample application (+ application)</li>
<li>Xcode is the de-facto tool to create Xcode projects; it's easier to use standard build process (+ library)</li>
</ul>
</li>
</ol>
<p>After evaluating the pros and cons of each approach, we decided to turn the sample application into a library and include it in Xcode project. The downside of this approach is that simulator and real device builds need separate library builds.</p>
<h3>Refactoring</h3>
<p>The second question we had to answer was: should there be a single source code base for all platforms or several ones, one for each platform?</p>
<p>While doing Android tutorial we used single source code base because it worked fine for desktop and Android. As we started to work through iOS tutorial, it became apparent that particular features may or may not work on some platforms. For example, one feature may work on desktop and iOS, but not Android. Another feature may work on iOS and Android, but not desktop. Since we didn't want to pollute the code with #ifdefs, we started to put each platform combination into a separate file. The number of files grew rapidly. The files were reusable, but it became extremely hard to see the whole picture.</p>
<p>At this point, we realized there's the second question. We reminded ourselves that the main purpose of the sample source code is to teach how to do basic OpenSceneGraph things, not create a reusable library with API that is stable across several years.</p>
<p>That's when our home grown feature tool came into play. With its help, we separated the code into several parts, which in the end produce just two files for each platform:</p>
<ol>
<li>functions.h - contains reusable classless functions</li>
<li>main.h - contains the rest of the sample application code</li>
</ol>
<p>Their contents differ slightly for each platform, but it's easy to see the whole picture now.</p>
<p>That's it for describing problems we faced during the creation of iOS tutorial in May 2017.</p>Самоучитель iOS2017-06-08T10:00:00+03:002017-06-08T10:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-06-08:/ios-tutorial-ru.html<p><img alt="Самоучитель iOS" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png"></p>
<p>Эта статья описывает проблемы, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">В феврале</a> мы сумели отобразить простую модель под iOS за считанные дни. Это дало нам уверенность, что самоучитель для iOS мы сделаем столь же быстро. Тем не менее, реальность напомнила нам о простой …</p><p><img alt="Самоучитель iOS" src="http://opengamestudio.org/2017-06-08-ios-refactoring.png"></p>
<p>Эта статья описывает проблемы, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">В феврале</a> мы сумели отобразить простую модель под iOS за считанные дни. Это дало нам уверенность, что самоучитель для iOS мы сделаем столь же быстро. Тем не менее, реальность напомнила нам о простой вещи: быстро сделать можно лишь поделку на коленке, работающую только у самого разработчика; над логически связанным примером, работающим у всех, придётся попотеть.</p>
<h3>Нативная библиотека</h3>
<p>Прежде всего нам необходимо было ответить на следующий вопрос: "должен ли пример приложения быть частью проекта Xcode или отдельной библиотекой?"</p>
<p>Для принятия решения мы использовали следующие факты:</p>
<ol>
<li>Проект Xcode может напрямую использовать C++ (благодаря Objective-C++) без прослоек вроде JNI<ul>
<li>Отдельная библиотека не нужна (+ приложение)</li>
<li>Создание отдельной библиотеки - это дополнительная работа (- библиотека)</li>
</ul>
</li>
<li>OpenSceneGraph собирается в библиотеки<ul>
<li>Легче использовать стандартный процесс сборки (+ библиотека)</li>
<li>Создавать свой процесс сборки лишь для одной платформы сложно (- приложение)</li>
</ul>
</li>
<li>OpenSceneGraph использует систему сборки CMake, которая не поддерживается Xcode<ul>
<li>Проект Xcode не может включать файлы CMake (- приложение)</li>
<li>Свой файл CMake может с лёгкостью включить файл OpenSceneGraph CMake для сборки единой библиотеки (+ библиотека)</li>
</ul>
</li>
<li>CMake может генерировать проект Xcode<ul>
<li>Можно создать файл CMake, который будет собирать как OpenSceneGraph, так и пример приложения (+ приложение)</li>
<li>Xcode - это де-факто инструмент для создания проектов Xcode; легче использовать стандартный процесс сборки (+ библиотека)</li>
</ul>
</li>
</ol>
<p>Оценив плюсы и минусы обоих подходов, мы решили сделать библиотеку, которую можно включать в проект Xcode. Минусом данного подхода является то, что сборки приложения для симулятора и реального устройства используют разные сборки библиотеки.</p>
<h3>Рефакторинг</h3>
<p>Также нам пришлось ответить на ещё один вопрос: "использовать ли единую кодовую базу для всех платформ или несколько под каждую платформу?"</p>
<p>При создании самоучителя для Android мы использовали единую кодовую базу, т.к. она отлично работала для десктопа и Android. Когда мы начали работу над самоучителем iOS, стало ясно, что часть функционала либо работает, либо не работает на некоторых платформах. Например, один функционал может работать на десктопе и iOS, но не работать на Android. Другой функционал может работать на iOS и Android, но не работать на десктопе. Т.к. мы не хотели загрязнять код кучей #ifdef, мы решили помещать функционал, специфичный для конкретной платформы или нескольких платформ, в разные файлы. Это привело к резкому увеличению количества файлов. Такой подход хорошо подходил для повторного использования, но совершенно не годился для понимания общей картины.</p>
<p>В этот момент мы осознали необходимость ответа на второй вопрос. Мы напомнили себе, что главная цель примера приложения состоит в том, чтобы обучить базовым вещам OpenSceneGraph, а не создать повторно используемую библиотеку с API, который будет жить без изменений десятилетиями.</p>
<p>Для ответа на этот вопрос нам помог наш внутренний инструмент feature tool. С его помощью мы разделили код на несколько частей, который в итоге собирается ровно в два файла для каждой платформы:</p>
<ol>
<li>functions.h - содержит повторно используемые бесклассовые функции</li>
<li>main.h - содержит остальной код приложения</li>
</ol>
<p>Их содержимое несколько отличается для каждой из платформ, но наличие всего двух файлов позволяет увидеть общую картину.</p>
<p>На этом мы заканчиваем описание проблем, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>OpenSceneGraph sample2017-05-12T00:00:00+03:002017-05-12T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-05-12:/osg-sample.html<p><img alt="OSG sample" src="http://opengamestudio.org/2017-05_osg-sample.png"></p>
<p>This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.</p>
<p>Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard <strong>osgviewer</strong> tool. This time we worked on a <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide-application">sample OpenSceneGraph application …</a></p><p><img alt="OSG sample" src="http://opengamestudio.org/2017-05_osg-sample.png"></p>
<p>This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.</p>
<p>Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard <strong>osgviewer</strong> tool. This time we worked on a <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide-application">sample OpenSceneGraph application</a> that would run under Linux, macOS, Windows, and Android.</p>
<p>The application is very basic and has the following features:</p>
<ol>
<li>Render window creation</li>
<li>Model loading</li>
<li>Model rendering with simple GLSL shaders</li>
<li>Model motion with a mouse under Linux, macOS, Windows and a finger under Android</li>
</ol>
<p>Creating the tutorials for Linux, macOS, Windows was so easy and straightforward, that it only took us half a month. We spent the second half of the month creating Android tutorial.</p>
<p>Our <a href="http://opengamestudio.org/2016-october-recap.html">first successful Android build</a> last year included hacks and non-obvious steps to make OpenSceneGraph run under Android. This time we wanted a cleaner, faster, and cheaper approach.</p>
<p>The approach we ended up with requires just a few files and a few changes to the original Android Studio project (with C++ support) to make sample OpenSceneGraph application run under Android.</p>
<p>Here's a quick rundown of the files:</p>
<ol>
<li>GLES2 surface</li>
<li>Render activity to render to the surface</li>
<li>Native library Java interface</li>
<li>Native library C++ implementation</li>
<li>CMake file to build native library</li>
<li>Render activity layout</li>
<li>Model to display</li>
</ol>
<p>Here's a quick rundown of the project changes:</p>
<ol>
<li>Update Android manifest to use GLES2 and render activity</li>
<li>Reference native library's CMake file in the project's CMake file</li>
</ol>
<p>OpenSceneGraph documentation suggests building OpenSceneGraph outside Android Studio with CMake. However, this approach has the following limitations:</p>
<ol>
<li>You have to build OpenSceneGraph for each target architecture</li>
<li>You have to manually copy/reference built OpenSceneGraph libraries into Android Studio project</li>
</ol>
<p>Our approach includes building OpenSceneGraph for those target architectures that Android Studio project is built for. Also, OpenSceneGraph is already referenced, so no extra work is required: you just need to rebuild the project, and you're done.</p>
<p>That's it for describing the creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.</p>Приложение OpenSceneGraph2017-05-12T00:00:00+03:002017-05-12T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-05-12:/osg-sample-ru.html<p><img alt="OSG sample" src="http://opengamestudio.org/2017-05_osg-sample.png"></p>
<p>Эта статья описывает создание самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p>
<p>Предыдущие самоучители описывали установку OpenSceneGraph на Linux, macOS, Windows и отображение модели с помощью стандартного инструмента <strong>osgviewer</strong>. На этот раз результатом нашей работы стало <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide-application">приложение OpenSceneGraph</a>, которое работает на Linux, macOS, Windows …</p><p><img alt="OSG sample" src="http://opengamestudio.org/2017-05_osg-sample.png"></p>
<p>Эта статья описывает создание самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p>
<p>Предыдущие самоучители описывали установку OpenSceneGraph на Linux, macOS, Windows и отображение модели с помощью стандартного инструмента <strong>osgviewer</strong>. На этот раз результатом нашей работы стало <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide-application">приложение OpenSceneGraph</a>, которое работает на Linux, macOS, Windows и Android.</p>
<p>Приложение очень простое. Оно умеет следующее:</p>
<ol>
<li>Создание окна для отрисовки</li>
<li>Загрузка модели</li>
<li>Отрисовка модели с помощью простых шейдеров GLSL</li>
<li>Перемещение модели с помощью мыши на Linux, macOS, Windows и пальца на Android</li>
</ol>
<p>Создать самоучители для Linux, macOS, Windows было настолько простой и понятной задачей, что мы справились с ней за пару недель. Оставшуюся половину месяца мы потратили на создание самоучителя для Android.</p>
<p>Наша <a href="http://opengamestudio.org/2016-october-recap-ru.html">первая успешная сборка под Android</a> в прошлом году требовала множество неочивидных телодвижений. В этот раз мы хотели получить более чистый, быстрый и дешёвый подход.</p>
<p>Нам это удалось. В результате всё, что нужно для работы приложения OpenSceneGraph на Android, уместилось в набор из нескольких файлов и небольших изменений для стандартного проекта Android Studio (с поддержкой C++).</p>
<p>Краткий перечень файлов:</p>
<ol>
<li>Поверхность GLES2</li>
<li>Activity для отрисовки на этой поверхности</li>
<li>Интерфейс Java для нативной библиотеки</li>
<li>Реализация нативной библиотеки на C++</li>
<li>Файл CMake для сборки нативной библиотеки</li>
<li>Activity layout</li>
<li>Модель для отрисовки</li>
</ol>
<p>Краткий перечень изменений проекта:</p>
<ol>
<li>Обновление Android manifest для использования GLES2 и Activity</li>
<li>Использование файла CMake нативной библиотеки в проектном файле CMake</li>
</ol>
<p>Документация OpenSceneGraph предполагает сборку OpenSceneGraph вне Android Studio с помощью CMake. Такой подход имеет следующие ограничения:</p>
<ol>
<li>Ручная сборка OpenSceneGraph под каждую платформу</li>
<li>Ручное копирование собранных библиотек OpenSceneGraph в проект Android Studio</li>
</ol>
<p>Наш подход включает в себя сборку OpenSceneGraph для тех платформ, для которых собирается проект Android Studio. К тому же, OpenSceneGraph используется как часть проекта, поэтому нет никакой дополнительной рутины: достаточно просто пересобрать проект, и всё готово.</p>
<p>На этом мы заканчиваем описание создания самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p>It's all fine2017-04-07T00:00:00+03:002017-04-07T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-04-07:/its-all-fine.html<p><img alt="ItsAllFine" src="http://opengamestudio.org/2017-04_its-all-fine.png"></p>
<p>This article describes creation of the first four OpenSceneGraph tutorials in March 2017.</p>
<p>The <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/">first four OpenSceneGraph tutorials</a> explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.</p>
<p>The whole process of creating a single tutorial turned …</p><p><img alt="ItsAllFine" src="http://opengamestudio.org/2017-04_its-all-fine.png"></p>
<p>This article describes creation of the first four OpenSceneGraph tutorials in March 2017.</p>
<p>The <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/">first four OpenSceneGraph tutorials</a> explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.</p>
<p>The whole process of creating a single tutorial turned out to be pretty daunting because it includes several tasks:</p>
<ol>
<li>Record original video depicting one or more steps</li>
<li>Name the steps as clear as possible</li>
<li>Select the parts of the video that display the step</li>
<li>Remove the parts of the video that bare no value, e.g., waiting in the middle of compilation</li>
<li>Select a single frame to best represent current step, e.g., typing a specific command</li>
<li>Add a detailed description to article, why current step should have been taken</li>
<li>Proof-read the article</li>
<li>Correct typos and video timing</li>
<li>Review the whole video</li>
<li>Upload the video to YouTube with timestamps of steps for easier navigation</li>
</ol>
<p>Some of those tasks had to be repeated multiple times until the combination of video, text, and article was clear and logical.</p>
<p>Overall, it took us 30 hours to create the tutorials. The whole process gave us a lot of experience, which will help us in shaping learning materials for our technologies in the future. We don't know how they will look like exactly, but they will definitely be better.</p>
<p>That's it for describing creation of the first four OpenSceneGraph tutorials in March 2017.</p>Всё проходит хорошо2017-04-07T00:00:00+03:002017-04-07T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-04-07:/its-all-fine-ru.html<p><img alt="ItsAllFine" src="http://opengamestudio.org/2017-04_its-all-fine.png"></p>
<p>Эта статья рассказывает о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.</p>
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/">Первые четыре самоучителя OpenSceneGraph</a> объясняют, как создать модель куба в Blender и затем отобразить её на Linux, macOS или Windows с помощью osgviewer, стандартного инструмента OpenSceneGraph.</p>
<p>Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из …</p><p><img alt="ItsAllFine" src="http://opengamestudio.org/2017-04_its-all-fine.png"></p>
<p>Эта статья рассказывает о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.</p>
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/">Первые четыре самоучителя OpenSceneGraph</a> объясняют, как создать модель куба в Blender и затем отобразить её на Linux, macOS или Windows с помощью osgviewer, стандартного инструмента OpenSceneGraph.</p>
<p>Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:</p>
<ol>
<li>Записать видео с одним или более шагами</li>
<li>Назвать эти шаги как можно яснее</li>
<li>Выбрать те части видео, которые непосредственно показывают шаг</li>
<li>Убрать те части видео, которые не имеют значения, например, ожидание сборки</li>
<li>Выбрать один кадр, лучше всего передающий смысл этого шага, например, набор команды</li>
<li>Добавить детальное описание в статью, почему этот шаг был необходим</li>
<li>Перечитать статью</li>
<li>Поправить опечатки и монтаж видео</li>
<li>Пересмотреть полное видео</li>
<li>Загрузить видео на YouTube с временными отметками шагов для упрощения навигации</li>
</ol>
<p>Некоторые из этих задач приходилось повторять несколько раз до тех пор, пока комбинация видео, текста и статьи не получилась целостной.</p>
<p>Всего мы потратили 30 часов на создание самоучителей. В ходе их создания мы почерпнули много нового, что поможет нам улучшить обучающие материалы наших технологий в будущем. Сейчас мы ещё не в курсе, как именно эти материалы будут выглядеть, но они точно будут лучше.</p>
<p>На этом мы заканчиваем рассказ о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.</p>Let's go2017-03-16T00:00:00+03:002017-03-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-03-16:/lets-go.html<p><img alt="Let's go" src="http://opengamestudio.org/2017-03_lets-go.png"></p>
<p>In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.</p>
<p><strong>Rendering under iOS/Web</strong></p>
<p>To our surprise, we got a simple red cube rendered under <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> and <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Web</a> pretty fast: in early February. However, this is only the …</p><p><img alt="Let's go" src="http://opengamestudio.org/2017-03_lets-go.png"></p>
<p>In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.</p>
<p><strong>Rendering under iOS/Web</strong></p>
<p>To our surprise, we got a simple red cube rendered under <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> and <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Web</a> pretty fast: in early February. However, this is only the beginning of this year's challenge to support Android, iOS, and Web platforms. There's a long and bumpy road ahead of us as we need a lot more on each platform before we can claim a success: visual effects, Python scripting, data archives.</p>
<p>Since it took us about four months to get to mobile and web platforms, we decided to share our knowledge and help OpenSceneGraph community with a guide that shows how to use OpenSceneGraph on desktop, mobile, and web. We believe the more widespread OpenSceneGraph is, the stronger our technology becomes. As Isaac Newton said, "If I have seen further, it is by standing on the shoulders of giants." OpenSceneGraph is our giant.</p>
<p><strong>Tutorial tool</strong></p>
<p>Having conducted four live sessions before, it was clear the guide needs videos depicting every nuance. However, bare video alone is only good for showing what to do and not for explaining why do it in a certain way. That's why we decided to combine video with text in the forms of video subtitles and separate articles.</p>
<p>To combine text and video, we first tried <a href="http://openshotvideo.com">OpenShot</a>. It worked well, but we quickly saw its limitations:</p>
<ul>
<li>Too much time is spent on adjusting time frames and animations</li>
<li>Project file and original resources are hard to track with VCS</li>
</ul>
<p>Since OpenSceneGraph cross-platform guide would consist of several tutorials, we decided to automate the process. Brief research revealed a great multimedia framework called <a href="http://mltframework.org">MLT</a>, which powers OpenShot itself. With MLT we got our tutorial tool in no time.</p>
<p>Currently, the tutorial tool allows anyone to combine text and video using a simple text file like this:</p>
<div class="highlight"><pre><span></span>background bg.png
text 5 Let's install Blender
video 0:6 install_blender.mp4
text 5 Installing it with apt
video 6:26 install_blender.mp4
text 5 We're still installing it
video 26:56 install_blender.mp4
text 5 Congratulations! We just finished installing Blender
</pre></div>
<p>This is the actual script. See the final result <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/tutorial-tool">here</a>.</p>
<p>That's it for describing our progress in January and February of 2017: rendering under iOS/Web and the new tutorial tool.</p>Поехали2017-03-16T00:00:00+03:002017-03-16T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-03-16:/lets-go-ru.html<p><img alt="Let's go" src="http://opengamestudio.org/2017-03_lets-go.png"></p>
<p>В этой статье мы расскажем о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>
<p><strong>Отображение куба на iOS/Web</strong></p>
<p>К нашему удивлению, мы смогли отобразить простой красный куб на <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> и <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Веб</a> довольно быстро: в начале февраля. Тем не …</p><p><img alt="Let's go" src="http://opengamestudio.org/2017-03_lets-go.png"></p>
<p>В этой статье мы расскажем о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>
<p><strong>Отображение куба на iOS/Web</strong></p>
<p>К нашему удивлению, мы смогли отобразить простой красный куб на <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> и <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Веб</a> довольно быстро: в начале февраля. Тем не менее, это лишь начало поддержки платформ Android, iOS и Веб. Впереди нас ждёт тернистая дорога, т.к. нам предстоит сделать ещё много вещей, прежде чем мы сможем объявить о полноценной поддержке этих платформ: визуальные эффекты, скрипты Python, архивы данных.</p>
<p>Т.к. нам потребовалось четыре месяца для начала поддержки платформ Android, iOS и Веб, мы решили поделиться своими знаниями и помочь сообществу OpenSceneGraph. Мы напишем руководство по использованию OpenSceneGraph на ПК, мобилках и Вебе. Мы верим: чем более распространён OpenSceneGraph, тем сильнее наши собственные технологии. Как сказал Исаак Ньютон: "Если я видел дальше других, то потому, что стоял на плечах гигантов". OpenSceneGraph - наш гигант.</p>
<p><strong>Инструмент для создания самоучителей</strong></p>
<p>Имея за плечами опыт проведения четырёх прямых эфиров, нам стало ясно, что руководство по использованию OpenSceneGraph будет полезно лишь при наличии видео. Но голое видео способно отразить лишь то, что мы делаем, но не то, почему мы делаем именно это и именно так. Поэтому мы решили совместить видео с текстом в форме как субтитров к видео, так и отдельных статей.</p>
<p>Первую попытку совмещения видео с текстом мы начали с помощью <a href="http://openshotvideo.com">OpenShot</a>. Инструмент хороший, но с первого же дня использования стали очевидны следующие ограничения:</p>
<ul>
<li>Настройка моментов отображения текста и анимаций занимает много времени</li>
<li>Файл проекта и исходные ресурсы сложно положить в систему контроля версий</li>
</ul>
<p>Т.к. руководство по использованию OpenSceneGraph будет состоять из нескольких самоучителей, мы решили автоматизировать процесс. Быстрый поиск рассказал нам о существовании замечательного мультимедийного фреймворка <a href="http://mltframework.org">MLT</a>, который используется и в OpenShot. С помощью MLT мы быстро сделали свой инструмент для создания самоучителей.</p>
<p>На текущий момент наш инструмент позволяет совместить видео и текст с помощью простого текстового файла:</p>
<div class="highlight"><pre><span></span>background bg.png
text 5 Let's install Blender
video 0:6 install_blender.mp4
text 5 Installing it with apt
video 6:26 install_blender.mp4
text 5 We're still installing it
video 26:56 install_blender.mp4
text 5 Congratulations! We just finished installing Blender
</pre></div>
<p>Это реальный скрипт. Конечный результат можно увидеть <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/tutorial-tool">здесь</a>.</p>
<p>На этом мы заканчиваем рассказ о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>The year of challenges2017-01-25T00:00:00+03:002017-01-25T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-01-25:/the-year-of-challenges.html<p><img alt="The year of challenges" src="http://opengamestudio.org/2017-01_the-year-of-challenges.png"></p>
<p>This article describes our plans for 2017.</p>
<p>Our past plans suggested we would have Android platform support by this time. However, we have a long way to go, before we can declare Android support. See for yourself:</p>
<p><img alt="Android rendering" src="http://opengamestudio.org/2017-01_mjin-android-gles.png"></p>
<p>Some people would consider this a failure. We don't. We see a chance …</p><p><img alt="The year of challenges" src="http://opengamestudio.org/2017-01_the-year-of-challenges.png"></p>
<p>This article describes our plans for 2017.</p>
<p>Our past plans suggested we would have Android platform support by this time. However, we have a long way to go, before we can declare Android support. See for yourself:</p>
<p><img alt="Android rendering" src="http://opengamestudio.org/2017-01_mjin-android-gles.png"></p>
<p>Some people would consider this a failure. We don't. We see a chance to start low and jump high!</p>
<p>Having only worked with liberal and forgiving desktop environments, Android was a complete surprise for us. Android punished us for everything: memory, resources, graphics. The usual Android response was either a crash, or an empty screen.
At the same time, such a harsh environment highlighted weak spots in our technologies and helped us see where to go next.</p>
<p>This month we start working on iOS platform support, even though we have only scratched Android. Why? Because it's a lot easier to get those red cubes rendered on iOS without polishing Android first. We don't want to spend months polishing Android only to find out later we had to implement certain feature differently so that it works on all supported platforms.</p>
<p>And right after we get those cubes rendered on iOS, we start to work on bringing them to Web.</p>
<p><strong>You got it right: we challenge ourselves with support for Android, iOS, and Web this year.</strong></p>
<p>That's it for describing our plans for 2017.</p>Год испытаний2017-01-25T00:00:00+03:002017-01-25T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2017-01-25:/the-year-of-challenges-ru.html<p><img alt="The year of challenges" src="http://opengamestudio.org/2017-01_the-year-of-challenges.png"></p>
<p>Эта статья содержит наши планы на 2017 год.</p>
<p>Наши предыдущие планы предполагали, что сейчас у нас уже будет поддержка платформы Android. Тем не менее, у нас впереди ещё очень много работы, прежде чем мы сможем объявить о поддержке Android. Судите сами:</p>
<p><img alt="Android rendering" src="http://opengamestudio.org/2017-01_mjin-android-gles.png"></p>
<p>Кто-нибудь может посчитать это неудачей. Но не мы. Мы …</p><p><img alt="The year of challenges" src="http://opengamestudio.org/2017-01_the-year-of-challenges.png"></p>
<p>Эта статья содержит наши планы на 2017 год.</p>
<p>Наши предыдущие планы предполагали, что сейчас у нас уже будет поддержка платформы Android. Тем не менее, у нас впереди ещё очень много работы, прежде чем мы сможем объявить о поддержке Android. Судите сами:</p>
<p><img alt="Android rendering" src="http://opengamestudio.org/2017-01_mjin-android-gles.png"></p>
<p>Кто-нибудь может посчитать это неудачей. Но не мы. Мы видим шанс начать с низкого старта и прыгнуть высоко!</p>
<p>Т.к. ранее мы имели опыт работы лишь с либеральным и всё прощающим настольным ПК, Android стал для нас полной неожиданностью. На каждом шагу нас ожидало наказание за фривольное использование памяти, ресурсов, графики. Чаще всего в ответ на наши действия мы получали либо падение приложения, либо пустой экран.
С другой стороны, такие суровые условия высветили слабые места в наших технологиях и помогли увидеть, куда нам двигаться дальше.</p>
<p>В этом месяце мы начинаем работу над поддержкой платформы iOS, хотя мы лишь слегка коснулись платформы Android. Почему? Потому что намного проще отобразить эти красные кубы на iOS без предварительной полировки Android. Мы не хотим потратить месяцы на полировку Android лишь для того, чтобы позже узнать о том, что какой-либо функционал следовало делать иначе для его работы на всех поддерживаемых платформах.</p>
<p>Сразу после отображения этих кубов на iOS мы начнём работу над их отображением в Вебе.</p>
<p><strong>Всё верно: нашей целью в этом году является поддержка платформ Android, iOS и Веб.</strong></p>
<p>На этом мы заканчиваем описание наших планов на 2017 год.</p>Happy 20172016-12-31T00:00:00+03:002016-12-31T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-12-31:/2017-happy-new-year.html<p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on the engine and editor, haven't even started creating the actual game.</p>
<p>If you were monitoring our news during the year, you know that we held several live sessions, showing in the real time how to use our tools to create some simple games. Each session was a step in a long road to our goal. While preparing for these live sessions, we added necessary building blocks, that will be needed to create almost any game.</p>
<p>Future live sessions and technical previews will add even more, so at some point in future (i hope not very distant), we will have everything we need to sit down and build our planned game from these blocks.</p>
<p>So, the project isn't dead; the idea was not thrown away. But there is a lot of work to be done before we can start making the game, and there are only two of us, using our spare time.
So. You want our game to become a reality? Join us. Together we will rule the galaxy. Or just wait and see. We didn't stop several years ago. We won't stop now.
After all, there is only one way to create a fine tool (and it's our initial goal if you remember) - we need to use it ourselves.
We will. Stay tuned.</p>
<p>Happy 2017. Let it be simple.</p>Счастливого 2017-го2016-12-31T00:00:00+03:002016-12-31T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-12-31:/2017-happy-new-year-ru.html<p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Ну вот. Это был тяжелый год для всех в команде. И он почти закончен. Хвала окончанию старого! Хвала наступлению нового!</p>
<p>Может показаться, что наш прогресс застопорился. Три года назад мы объявили о начале нового проекта (двух, если быть точным), но до сих пор мы работаем над движком и редактором, даже …</p><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Ну вот. Это был тяжелый год для всех в команде. И он почти закончен. Хвала окончанию старого! Хвала наступлению нового!</p>
<p>Может показаться, что наш прогресс застопорился. Три года назад мы объявили о начале нового проекта (двух, если быть точным), но до сих пор мы работаем над движком и редактором, даже не начали делать ни Shuan, ни Mahjong 2.</p>
<p>Если вы следили за новостями в течение года, вы знаете что мы провели несколько "живых сессий", демонстрируя в реальном времени как можно использовать наш инструментарий для создания простой игры. Каждая сессия была шагом в долгом пути к нашей цели. В процессе подготовки к ним, мы добавляли важные элементы, которые будут необходимы для создания любой игры.</p>
<p>Будущие сессии и демонстрации добавят даже больше, так что в будущем (надеюсь не слишком отдаленном), у нас будет все необходимое для того чтобы просто сесть и собрать планируемую игру из этих элементов.</p>
<p>Так что проект не умер; идея не отброшена. Очень много работы предстоит сделать, прежде чем мы можем начать делать игру. И нас только двое, занимающихся всем этим в свое свободное время.
Итак, вы хотите, чтобы наша игра стала реальностью? Присоединяйтесь к нам. Вместе мы будем править галактикой. Или можете просто подождать. Мы не бросили все это несколько лет назад. Не станем и сейчас.
В конце концов, есть только один способ создать годный инструмент (а это наша первоначальная цель, если вы помните) - мы должны использовать его сами.
Мы будем. Следите за новостями.</p>
<p>Счастливого 2017-го. Пусть он будет простым.</p>November 2016 recap2016-12-15T00:00:00+03:002016-12-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-12-15:/2016-november-recap.html<p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<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 don't need UIQt …</p><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<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 don't 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++ one's.</p>
<p>We created a sample project consisting of the application, library, and plugin.
<strong>The application</strong> has been linked to the library and used it to load the plugin.
<strong>The library</strong> provided functions to register plugins and call their functions.
<strong>The plugin</strong> provided functions for the library and called library functions.</p>
<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>
<p>Android: provides Java Native Interface (JNI) to MJIN</p>
</li>
<li>
<p>Sound: provides access to OpenAL</p>
</li>
<li>
<p>UIQt: provides access to Qt UI</p>
</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, we're going to significantly restructure MJIN so that it suits as many platforms as possible.</p>
<p>That's it for describing the start of MJIN library separation into modules.</p>Ноябрь 2016 кратко2016-12-15T00:00:00+03:002016-12-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-12-15:/2016-november-recap-ru.html<p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>Эта статья описывает начало разделения библиотеки MJIN на модули.</p>
<p>Как только мы собрали OpenSceneGraph для Android, стало очевидно, что часть функционала MJIN не нужна на Android. Например, UIQt - это основа интерфейса Редактора. Раз Редактор - это приложение для ПК, то UIQt не нужен на Android.</p>
<p>Мы решили рассмотреть два подхода к …</p><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>Эта статья описывает начало разделения библиотеки MJIN на модули.</p>
<p>Как только мы собрали OpenSceneGraph для Android, стало очевидно, что часть функционала MJIN не нужна на Android. Например, UIQt - это основа интерфейса Редактора. Раз Редактор - это приложение для ПК, то UIQt не нужен на Android.</p>
<p>Мы решили рассмотреть два подхода к разделению MJIN на модули: во время сборки (build-time) и исполнения (run-time).
Разделение <strong>во время сборки</strong> означает гибкую систему настроек MJIN, что позволит собирать её различно под каждую платформу.
Разделение <strong>во время исполнения</strong> означает разделение MJIN на несколько небольших библиотек с последующим соединением во время исполнения, что позволит легко менять функционал без повторной сборки.</p>
<p><strong>Исследование разделения во время исполнения.</strong></p>
<p>Т.к. разделение во время исполнения имеет больше преимуществ, мы начали с этого подхода.
Самый простой способ достичь его заключался в использовании C API, т.к. правила C ABI намного проще правил C++ ABI.</p>
<p>Мы создали маленький проект, включающий в себя приложение, библиотеку и плагин.
<strong>Приложение</strong> было слинковано с библиотекой и использовало её для загрузки плагина.
<strong>Библиотека</strong> предоставляла функции для регистрации плагина и вызывала его функции.
<strong>Плагин</strong> предоставлял функции для библиотеки и вызывал её функции.</p>
<p>Исследование прошло на ура: проект работал в полном соответствии с нашими ожиданиями на Linux и Windows.
Тем не менее, т.к. MJIN на текущий момент является большой монолитной сущностью, мы отложили применение C API до окончания разделения во время сборки.</p>
<p><strong>Начало разделения во время сборки.</strong></p>
<p>Мы выделили следующие модули из MJIN:</p>
<ul>
<li>
<p>Android: предоставляет Java Native Interface (JNI) к MJIN</p>
</li>
<li>
<p>Sound: предоставляет доступ к OpenAL</p>
</li>
<li>
<p>UIQt: предоставляет доступ к Qt</p>
</li>
</ul>
<p>Модули Sound и UIQt на текущий момент статически линкуются в MJIN, тогда как модуль Android линкуется динамически из-за ограничений JNI.</p>
<p>В следующем году мы изменим структуру MJIN так, чтобы её можно было легче собрать под разные платформы.</p>
<p>На этом мы заканчиваем статью о начале разделения библиотеки MJIN на модули.</p>October 2016 recap2016-11-19T00:00:00+03:002016-11-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-11-19:/2016-october-recap.html<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 …</p><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>Октябрь 2016 кратко2016-11-19T00:00:00+03:002016-11-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-11-19:/2016-october-recap-ru.html<p><img alt="October recap" src="http://opengamestudio.org/2016-11-19_2016-october-recap.png"></p>
<p>Эта статья описывает, как мы потратили месяц на сборку OpenSceneGraph (OSG) под Android: первая попытка собрать OSG, поиск альтернатив OSG и успех в сборке OSG.</p>
<p><strong>Первая попытка собрать OSG.</strong></p>
<p>Не имея опыта разработки под Android, мы взяли последнюю версию Android Studio и начали проходить самоучители для начинающих.
Java далась легко …</p><p><img alt="October recap" src="http://opengamestudio.org/2016-11-19_2016-october-recap.png"></p>
<p>Эта статья описывает, как мы потратили месяц на сборку OpenSceneGraph (OSG) под Android: первая попытка собрать OSG, поиск альтернатив OSG и успех в сборке OSG.</p>
<p><strong>Первая попытка собрать OSG.</strong></p>
<p>Не имея опыта разработки под Android, мы взяли последнюю версию Android Studio и начали проходить самоучители для начинающих.
Java далась легко. Всё работало из коробки. Затем наступил черёд C++ и проблем.</p>
<p><strong>CMake. </strong>Android Studio для работы с C++ использует собственную версию CMake, которая конфликтует с системной. Для нас это было явным сигналом о необходимости подготовить отдельное окружение разработки специально под Android.</p>
<p><strong>KVM. </strong>Мы установили Ubuntu на VirtualBox. Всё шло замечательно до того момента, пока мы не запустили эмулятор Android. Оказалось, что VirtualBox не может запустить эмулятор, т.к. виртуальная машина не предоставляет виртуализацию внутри уже виртуализированного окружения.</p>
<p><strong>Chroot для Android. </strong>Вспомнив о положительном опыте работы с chroot для сборки OGS Editor, мы решили поместить окружение разработки Android в chroot. После небольших настроек мы сумели запустить эмулятор Android и собрать проект C++.</p>
<p><strong>OSG. </strong>К этому моменту мы считали, что собрать OSG не составит труда, но не тут-то было. Всё, что мы получили, - это падение.
Предположив, что мы ошиблись где-то при первой сборке, мы решили пересобрать OSG ещё раз. И снова получили ту же ошибку.
Поиск решения проблемы не дал результатов.
Никто не помог нам в списке рассылок OSG.</p>
<p>Мы были в отчаянии.</p>
<p><strong>Поиск альтернатив OSG.</strong></p>
<p>Раз сообщество OSG нам не помогло, мы решили поискать альтернативный открытый проект, который мог решить наши задачи на Android (и, возможно, на других платформах).</p>
<p>Такой проект мы нашли: <a href="http://babylonhx.gamestudiohx.com/">BabylonHX</a>. Домашняя страница выглядела замечательно: она отображала WebGL в фоне!
Промелькнула мысль, что мы наконец нашли алмаз. К сожалению, пример на домашней странице просто не работал.</p>
<p>Думаем, вы понимаете наши чувства на тот момент.</p>
<p><strong>Успех в сборке OSG.</strong></p>
<p>Мы осознали, что никто за нас не запустит OSG на Android. Нужно было сделать это самостоятельно.</p>
<p>Потеряв доверие к очень короткой <a href="http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/178-building-openscenegraph-for-android-3-4">документации OSG 3.4</a> по сборке для Android, мы решили использовать <a href="http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/44-building-openscenegraph-for-android-3-0-3-0-1">первоначальную документацию OSG 3.0</a>.
В ходе следования ей мы наткнулись на мёртвую ссылку, которая должна была содержать зависимости.
Поиск альтернативной ссылки вывел нас на <a href="https://xinyustudio.wordpress.com/2013/09/24/install-osg-for-android-on-ubuntu-13-04-step-by-step-tutorials/">самоучитель 2013 года</a> по сборке OSG 3.0 для Android.</p>
<p>После прохождения самоучителя мы наконец смогли запустить OSG под Android!
Тем не менее, был нюанс: используемые в самоучителе версии OSG и средств разработки Android были древними.
В течение нескольких дней мы постепенно довели версии OSG и средств разработки Android до последних.</p>
<p>В ходе этого обновления мы узнали о двух вещах, помешавших нам запустить OSG с первого раза:</p>
<ul>
<li>Изменение заголовков Android API в NDK r12</li>
<li>OSG работает под Android лишь в виде статической библиотеки</li>
</ul>
<p>На этом мы заканчиваем описание того, как мы потратили месяц на сборку OSG под Android: первая попытка собрать OSG, поиск альтернатив OSG и успех в сборке OSG.</p>Technology showcases2016-10-31T00:00:00+03:002016-10-31T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-31:/2016-tech-showcases.html<p><img alt="TechShowcases" src="http://opengamestudio.org/2016-10-31_tech-showcases.png"></p>
<p>In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.</p>
<p><strong>2015 and 2016: live sessions.</strong></p>
<p>As you know, we use live sessions to show the state of our technology and create a small functional game from scratch.
We have conducted …</p><p><img alt="TechShowcases" src="http://opengamestudio.org/2016-10-31_tech-showcases.png"></p>
<p>In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.</p>
<p><strong>2015 and 2016: live sessions.</strong></p>
<p>As you know, we use live sessions to show the state of our technology and create a small functional game from scratch.
We have conducted four live sessions in the past year, which gave birth to the following small games:
<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Created game</strong></th>
<th><strong>Live session date</strong></th>
</tr>
<tr>
<td>1</td>
<td>Whac-a-mole</td>
<td>November 2015</td>
</tr>
<tr>
<td>2</td>
<td>Rolling ball</td>
<td>February 2016</td>
</tr>
<tr>
<td>3</td>
<td>Domino</td>
<td>May 2016</td>
</tr>
<tr>
<td>4</td>
<td>Mahjong Solitaire</td>
<td>September 2016</td>
</tr>
</table></p>
<p>We spent four months to prepare for these live sessions.
It has been an extremely useful experience for us. However, 2017 will have only 2 live sessions.
Why? We want to spend more time on actual development!</p>
<p><strong>2017: live sessions + technical previews.</strong></p>
<p>Starting next year, we will be doing technical previews twice a year. A technical preview is another way to show the state of our technology, but without creating new games and conducting live sessions.</p>
<p>Here's an approximate schedule of technical previews and live sessions for 2017:
<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Month</strong></th>
<th><strong>Showcase type</strong></th>
<th><strong>Topic</strong></th>
</tr>
<tr>
<td>1</td>
<td>January</td>
<td>Technical preview</td>
<td>Android platform support</td>
</tr>
<tr>
<td>2</td>
<td>April</td>
<td>Live session</td>
<td>Android game creation</td>
</tr>
<tr>
<td>3</td>
<td>July</td>
<td>Technical preview</td>
<td>To be announced</td>
</tr>
<tr>
<td>4</td>
<td>October</td>
<td>Live session</td>
<td>To be announced</td>
</tr>
</table></p>
<p>That's it for taking another look at 2015-2016 live sessions' format and introducing the new showcase format for 2017.</p>Демонстрации технологий2016-10-31T00:00:00+03:002016-10-31T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-31:/2016-tech-showcases-ru.html<p><img alt="TechShowcases" src="http://opengamestudio.org/2016-10-31_tech-showcases.png"></p>
<p>Сегодня мы ещё раз взглянем на формат демонстраций в 2015-2016 годах, а также сообщим о новом формате 2017-го.</p>
<p><strong>2015 и 2016: демонстрации в прямом эфире.</strong></p>
<p>Как вы знаете, в ходе демонстраций мы в прямом эфире показываем состояние наших технологий и собираем небольшую работающую игру с нуля.
За прошедший год мы …</p><p><img alt="TechShowcases" src="http://opengamestudio.org/2016-10-31_tech-showcases.png"></p>
<p>Сегодня мы ещё раз взглянем на формат демонстраций в 2015-2016 годах, а также сообщим о новом формате 2017-го.</p>
<p><strong>2015 и 2016: демонстрации в прямом эфире.</strong></p>
<p>Как вы знаете, в ходе демонстраций мы в прямом эфире показываем состояние наших технологий и собираем небольшую работающую игру с нуля.
За прошедший год мы провели 4 демонстрации в прямом эфире, в ходе которых создали следующие небольшие игры:
<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Созданная игра</strong></th>
<th><strong>Дата демонстрации в прямом эфире</strong></th>
</tr>
<tr>
<td>1</td>
<td>Поймай крота</td>
<td>Ноябрь 2015</td>
</tr>
<tr>
<td>2</td>
<td>Катящийся мяч</td>
<td>Февраль 2016</td>
</tr>
<tr>
<td>3</td>
<td>Домино</td>
<td>Май 2016</td>
</tr>
<tr>
<td>4</td>
<td>Пасьянс Маджонг</td>
<td>Сентябрь 2016</td>
</tr>
</table></p>
<p>На подготовку ко всем 4-м демонстрациям у нас ушло 4 месяца.
Это был очень полезный для нас опыт. Тем не менее, в 2017-м году мы ограничимся лишь двумя такими демонстрациями.
Почему? Потому что мы будем тратить больше времени непосредственно на разработку!</p>
<p><strong>2017: демонстрации в прямом эфире + технические анонсы.</strong></p>
<p>Место двух демонстраций займут технические анонсы. Технический анонс - это тоже демонстрация прогресса наших технологий, но без создания игр в прямом эфире.</p>
<p>Примерный календарь технических анонсов и демонстраций на 2017-й год выглядит следующим образом:
<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Месяц</strong></th>
<th><strong>Вид демонстрации</strong></th>
<th><strong>Тема</strong></th>
</tr>
<tr>
<td>1</td>
<td>Январь</td>
<td>Технический анонс</td>
<td>Поддержка платформы Android</td>
</tr>
<tr>
<td>2</td>
<td>Апрель</td>
<td>Демонстрация в прямом эфире</td>
<td>Создание игры для Android</td>
</tr>
<tr>
<td>3</td>
<td>Июль</td>
<td>Технический анонс</td>
<td>Будет объявлено позднее</td>
</tr>
<tr>
<td>4</td>
<td>Октябрь</td>
<td>Демонстрация в прямом эфире</td>
<td>Будет объявлено позднее</td>
</tr>
</table></p>
<p>На этом мы заканчиваем рассказ о формате демонстраций в 2015-2016 годах, а также о новом формате 2017-го.</p>September 2016 recap2016-10-11T00:00:00+03:002016-10-11T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-11:/2016-september-recap.html<p><img alt="September recap" src="http://opengamestudio.org/2016-10-11_september-recap.png"></p>
<p>This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p>
<p>Even though live session takes only a few hours, we devote a whole month to prepare for it. Let's have a look at live session stages in detail.</p>
<ol>
<li>
<p><strong>Draft.</strong> Game creation for the first time …</p></li></ol><p><img alt="September recap" src="http://opengamestudio.org/2016-10-11_september-recap.png"></p>
<p>This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p>
<p>Even though live session takes only a few hours, we devote a whole month to prepare for it. Let's have a look at live session stages in detail.</p>
<ol>
<li>
<p><strong>Draft.</strong> Game creation for the first time.</p>
<p>Purposes:</p>
<ul>
<li>test our technologies and fix major bugs;</li>
<li>discover usability issues to fix in the next development iteration;</li>
<li>list exact steps to reproduce the game later;</li>
<li>create draft version of the game assets (models, textures, sounds, scripts).</li>
</ul>
<p>Upon stage completion, we announce live session date and show you the game preview.</p>
</li>
<li>
<p><strong>Rehearsal.</strong> Game recreation.</p>
<p>Purposes:</p>
<ul>
<li>make sure we have no major bugs left;</li>
<li>record the whole process of the game creation;</li>
<li>create final game assets.</li>
</ul>
<p>This is 99% the game we publish later.</p>
</li>
<li>
<p><strong>Live session.</strong> Reassembling the game live in front of you.</p>
<p>Purposes:</p>
<ul>
<li>show how easy it is to create a game;</li>
<li>walk you through nuances of game creation;</li>
<li>get feedback from you;</li>
<li>answer your questions.</li>
</ul>
<p>We take game assets from the rehearsal and use them to quickly reassemble the game in just a few hours.</p>
</li>
<li>
<p><strong>Publishing.</strong> The release of our technologies' last version, live session materials, and stand alone game.</p>
</li>
</ol>
<p>That's it for explaining September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p>Сентябрь 2016 кратко2016-10-11T00:00:00+03:002016-10-11T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-11:/2016-september-recap-ru.html<p><img alt="September recap" src="http://opengamestudio.org/2016-10-11_september-recap.png"></p>
<p>Эта статья описывает стадии по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>
<p>Несмотря на то, что сам прямой эфир длится лишь несколько часов, мы готовимся к нему целый месяц. Рассмотрим каждую стадию прямого эфира подробнее.</p>
<ol>
<li>
<p><strong>Черновик.</strong> Создание игры в первый раз.</p>
<p>Цели:</p>
<ul>
<li>проверить наши …</li></ul></li></ol><p><img alt="September recap" src="http://opengamestudio.org/2016-10-11_september-recap.png"></p>
<p>Эта статья описывает стадии по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>
<p>Несмотря на то, что сам прямой эфир длится лишь несколько часов, мы готовимся к нему целый месяц. Рассмотрим каждую стадию прямого эфира подробнее.</p>
<ol>
<li>
<p><strong>Черновик.</strong> Создание игры в первый раз.</p>
<p>Цели:</p>
<ul>
<li>проверить наши технологии и исправить основные ошибки;</li>
<li>узнать о неудобствах использования технологий, чтобы исправить их в следующей итерации разработки;</li>
<li>перечислить точные шаги для воссоздания игры позже;</li>
<li>создать черновой вариант ресурсов игры (модели, текстуры, звуки, скрипты).</li>
</ul>
<p>После завершения стадии мы объявляем о дате прямого эфира и показываем примерный вид игры.</p>
</li>
<li>
<p><strong>Репетиция.</strong> Повторное создание игры.</p>
<p>Цели:</p>
<ul>
<li>убедиться в отсутствии основных ошибок;</li>
<li>записать полный процесс создания игры;</li>
<li>создать финальный вариант ресурсов игры.</li>
</ul>
<p>Это 99% публикуемой позже игры.</p>
</li>
<li>
<p><strong>Прямой эфир.</strong> Воссоздание игры в прямом эфире.</p>
<p>Цели:</p>
<ul>
<li>показать простоту создания игр;</li>
<li>объяснить нюансы создания игр;</li>
<li>получить обратную связь от вас;</li>
<li>ответить на ваши вопросы.</li>
</ul>
<p>Мы используем ресурсы из репетиции, чтобы быстро воссоздать игру за считанные часы.</p>
</li>
<li>
<p><strong>Публикация.</strong> Выпуск последней версии наших технологий, материалов прямого эфира и самостоятельной игры.</p>
</li>
</ol>
<p>На этом мы заканчиваем описание стадий по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>OGS Editor 0.10 and live session materials2016-10-03T00:00:00+03:002016-10-03T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-03:/ogs-editor-0.10.html<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. Simply …</li></ul><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. Simply unpack the archive and launch the run script.</li>
<li><strong>Live session project</strong> <a href="https://github.com/OGStudio/mahjong-solitaire-livesession">is available at GitHub</a>.</li>
<li><strong>Live session recording</strong> <a href="https://youtu.be/g8Tyj_YH2Qc?list=PLWMTZqE4MAMJzBnXS9qU_ObWnzJuskI3F">is available at YouTube</a>. The video depicts the whole process of creating Mahjong Solitaire from scratch using <a href="https://github.com/OGStudio/mahjong-solitaire-rehearsal">rehearsal project</a> resources.</li>
</ul>OGS Editor 0.10 и материалы прямого эфира2016-10-03T00:00:00+03:002016-10-03T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-10-03:/ogs-editor-0.10-ru.html<p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png">
Внимание: мы не выпустим версию 0.10 для macOS из-за технических проблем с системой сборки. Поддержку macOS вернём к 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/">доступен на SourceForge</a>. Просто распакуйте архив и запустите скрипт run.</li>
<li><strong>Пасьянс маджонг</strong> тоже <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">доступен на SourceForge</a>. Просто распакуйте архив и запустите скрипт run.</li>
<li><strong>Проект прямого …</strong></li></ul><p><img alt="ogs-editor-0.10" src="http://opengamestudio.org/2016-10-03_ogs-editor-0.10.png">
Внимание: мы не выпустим версию 0.10 для macOS из-за технических проблем с системой сборки. Поддержку macOS вернём к 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/">доступен на SourceForge</a>. Просто распакуйте архив и запустите скрипт run.</li>
<li><strong>Пасьянс маджонг</strong> тоже <a href="https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/">доступен на SourceForge</a>. Просто распакуйте архив и запустите скрипт run.</li>
<li><strong>Проект прямого эфира</strong> <a href="https://github.com/OGStudio/mahjong-solitaire-livesession">доступен на GitHub</a>.</li>
<li><strong>Запись прямого эфира</strong> <a href="https://youtu.be/g8Tyj_YH2Qc?list=PLWMTZqE4MAMJzBnXS9qU_ObWnzJuskI3F">доступна на YouTube</a>. Видео содержит весь процесс создания пасьянса маджонг с использованием ресурсов <a href="https://github.com/OGStudio/mahjong-solitaire-rehearsal">проекта-репетиции</a>.</li>
</ul>A few words about live session yesterday2016-09-26T00:00:00+03:002016-09-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-26:/yesterdays-live-session-short-overview.html<iframe width="560" height="315" src="https://www.youtube.com/embed/_t8TGhSgJG4" frameborder="0" allowfullscreen></iframe>
<p>Mahjong Solitaire was successfully created, and it took less than 4 hours.
We will publish live session materials later this week.</p>
<p>Thank you for joining us.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/_t8TGhSgJG4" frameborder="0" allowfullscreen></iframe>
<p>Mahjong Solitaire was successfully created, and it took less than 4 hours.
We will publish live session materials later this week.</p>
<p>Thank you for joining us.</p>Пара слов о вчерашнем прямом эфире2016-09-26T00:00:00+03:002016-09-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-26:/yesterdays-live-session-short-overview-ru.html<iframe width="560" height="315" src="https://www.youtube.com/embed/_t8TGhSgJG4" frameborder="0" allowfullscreen></iframe>
<p>Создание пасьянса Маджонг прошло успешно, и заняло менее 4 часов.
Мы опубликуем материалы прямого эфира чуть позже на этой неделе.</p>
<p>Спасибо за участие.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/_t8TGhSgJG4" frameborder="0" allowfullscreen></iframe>
<p>Создание пасьянса Маджонг прошло успешно, и заняло менее 4 часов.
Мы опубликуем материалы прямого эфира чуть позже на этой неделе.</p>
<p>Спасибо за участие.</p>Live session is in 24 hours2016-09-24T00:00:00+03:002016-09-24T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-24:/september-live-session-announcement-tomorrow.html<iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Get ready for <a href="https://www.livecoding.tv/kornerr">live session</a>, it's about to happen in 24 hours!</p><iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Get ready for <a href="https://www.livecoding.tv/kornerr">live session</a>, it's about to happen in 24 hours!</p>Прямой эфир через 24 часа2016-09-24T00:00:00+03:002016-09-24T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-24:/september-live-session-announcement-tomorrow-ru.html<iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Приготовьтесь к <a href="https://www.livecoding.tv/kornerr">прямому эфиру</a>, он начнётся через 24 часа!</p><iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Приготовьтесь к <a href="https://www.livecoding.tv/kornerr">прямому эфиру</a>, он начнётся через 24 часа!</p>Live session: 25 September 20162016-09-17T00:00:00+03:002016-09-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-17:/september-live-session-announcement.html<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe>
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a>
It's time to create simple Mahjong solitaire game.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe>
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a>
It's time to create simple Mahjong solitaire game.</p>Прямой эфир: 25 сентября 20162016-09-17T00:00:00+03:002016-09-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-17:/september-live-session-announcement-ru.html<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe>
<p><a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio%3A+%D0%A1%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8C+2016&iso=20160925T13&p1=166&ah=2">25 сентября 2016 в 13:00 MSK</a> мы проведём <a href="https://www.livecoding.tv/kornerr">прямой эфир</a>.
Самое время создать простой пасьянс Маджонг</p><iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe>
<p><a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio%3A+%D0%A1%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8C+2016&iso=20160925T13&p1=166&ah=2">25 сентября 2016 в 13:00 MSK</a> мы проведём <a href="https://www.livecoding.tv/kornerr">прямой эфир</a>.
Самое время создать простой пасьянс Маджонг</p>August 2016 recap2016-09-03T00:00:00+03:002016-09-03T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-03:/2016-august-recap.html<p><img alt="2016-august-recap" src="http://opengamestudio.org/2016-09-03_august-recap.png"></p>
<p>This article explains the most important technical details about development in August: UIQt module, its refactoring, a new feature based development approach, and its benefits.</p>
<p><strong>UIQt module</strong> is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.</p>
<p>Here is a list …</p><p><img alt="2016-august-recap" src="http://opengamestudio.org/2016-09-03_august-recap.png"></p>
<p>This article explains the most important technical details about development in August: UIQt module, its refactoring, a new feature based development approach, and its benefits.</p>
<p><strong>UIQt module</strong> is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.</p>
<p>Here is a list of UIQt module components with their description and current code size:<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Component</strong></th>
<th><strong>Description</strong></th>
<th><strong>Size (B)</strong></th>
<th><strong>Size (%)</strong></th>
</tr>
<tr>
<td>1</td>
<td>UIQtAction</td>
<td>Actions (events) for menus</td>
<td>11224</td>
<td>9</td>
</tr>
<tr>
<td>2</td>
<td>UIQtAux</td>
<td>Initializes Qt and main window. Provides widget resolution by name to other components</td>
<td>15518</td>
<td>12</td>
</tr>
<tr>
<td>3</td>
<td>UIQtDock</td>
<td>Widget docks</td>
<td>5273</td>
<td>4</td>
</tr>
<tr>
<td>4</td>
<td>UIQtFileDialog</td>
<td>File selection dialogs</td>
<td>8960</td>
<td>7</td>
</tr>
<tr>
<td>5</td>
<td>UIQtMenu</td>
<td>Menus for main window and pop-ups (like node's add/copy/paste/delete menu)</td>
<td>4566</td>
<td>3</td>
</tr>
<tr>
<td>6</td>
<td>UIQtMenuBar</td>
<td>Menu bar for main window</td>
<td>4222</td>
<td>3</td>
</tr>
<tr>
<td>7</td>
<td>UIQtRunner</td>
<td>Allows to start QApplication</td>
<td>2450</td>
<td>2</td>
</tr>
<tr>
<td>8</td>
<td>UIQtThumbnailDialog</td>
<td>Dialog with thumbnail images</td>
<td>18615</td>
<td>14</td>
</tr>
<tr>
<td>9</td>
<td>UIQtToolBar</td>
<td>Tool bar for main window</td>
<td>4276</td>
<td>3</td>
</tr>
<tr>
<td>10</td>
<td>UIQtTree</td>
<td>Provides complex widgets like Scene tree and Property browser</td>
<td>51216</td>
<td>39</td>
</tr>
<tr>
<td>11</td>
<td>UIQtWidget</td>
<td>Common widget properties like focus and visibility</td>
<td>5465</td>
<td>4</td>
</tr>
</table></p>
<p><strong>UIQt module refactoring</strong> purpose was to replace old State API with new Environment API, which allows to achieve the same functionality with less code, i.e., makes development easier and faster.</p>
<p>Refactoring started in July and should have been done the same month. However, we only finished the work in August. Initial plan assumed 28 hours would be enough, but we spent 65 instead. We estimated planned time by relying on the number of public API calls of each component. That worked fine for small components, because the number of their public API calls was roughly equal to the number of their features, and features themselves were very small. However, it totally failed for UIQtTree, which contains 39% of UIQt module code, because there was no direct connection between public API and features.</p>
<p><strong>Feature based development approach</strong> was born as a result of UIQtTree refactoring struggle. Since Qt uses MVC, UIQtTree component consists of several classes. By the time UIQtTree could display and manage a hierarchy of items, the component was already 27K in size. We noticed UIQtTree started to require abnormal amount of development time even for tiny features. This was an obvious <a href="http://kornerr.blogspot.com/2012/04/complexity-conservation-law-complexity.html">quantitative complexity</a> manifestation.</p>
<p>We decided to separate UIQtTree into base part and additional ones. Base would only contain minimal code required by all features. Addition would contain specific feature code and could be safely modified. In the case of UIQtTree, item hierarchy display and modification is the minimal functionality, while item renaming is an addition.</p>
<p>Here is a list of current UIQtTree features:</p>
<table>
<tr>
<th>**№**</th>
<th>**Feature**</th>
<th>**Description**</th>
<th>**Size (B)**</th>
<th>**Size (%)**</th>
</tr>
<tr>
<td>1</td>
<td>Base</td>
<td>Allows to construct item hierarchy, modify it, and display it</td>
<td>26966</td>
<td>52</td>
</tr>
<tr>
<td>2</td>
<td>Item open state</td>
<td>Keeps track of collapsed/expanded item properties</td>
<td>3094</td>
<td>6</td>
</tr>
<tr>
<td>3</td>
<td>Item renaming</td>
<td>Allows to rename an item</td>
<td>3471</td>
<td>7</td>
</tr>
<tr>
<td>4</td>
<td>Item selection</td>
<td>Allows to get/set selected item</td>
<td>2338</td>
<td>5</td>
</tr>
<tr>
<td>5</td>
<td>Item value</td>
<td>Provides 2nd and the rest columns for items, used by Property browser</td>
<td>1307</td>
<td>3</td>
</tr>
<tr>
<td>6</td>
<td>Item value editing</td>
<td>Allows to edit item values with a default editor widget</td>
<td>1996</td>
<td>4</td>
</tr>
<tr>
<td>7</td>
<td>Item value editing with combobox</td>
<td>Provides combobox editor</td>
<td>5819</td>
<td>11</td>
</tr>
<tr>
<td>8</td>
<td>Item value editing with spinner</td>
<td>Provides spinbox editor</td>
<td>5290</td>
<td>10</td>
</tr>
<tr>
<td>9</td>
<td>Menu</td>
<td>Provides pop-up menu</td>
<td>1248</td>
<td>2</td>
</tr>
</table>
<p>Here's an example of UIQtTree Menu feature file: <a href="https://bitbucket.org/ogstudio-history/mjin/src/0c4cc3c3213f4687c0f3bd6a5426a6054cadd79b/f/TREE_MENU.cpp?at=Studio+0.10&fileviewer=file-view-default">TREE_MENU</a>.</p>
<p><strong>Benefits of the approach</strong> include:</p>
<ol>
<li>Faster code reading/understanding due to small size</li>
<li>Easier and safer modification due to isolated code</li>
</ol>
<p>There's a drawback, too: new approach requires learning.</p>
<p>That's it for the most important technical details about development in August: UIQt module, its refactoring, a new feature based development approach, and its benefits.</p>Август 2016 кратко2016-09-03T00:00:00+03:002016-09-03T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-09-03:/2016-august-recap-ru.html<p><img alt="2016-august-recap" src="http://opengamestudio.org/2016-09-03_august-recap.png"></p>
<p>Эта статья описывает самые важные технические детали разработки за август: модуль UIQt, его переработку, новый подход к разработке на основе функционала и его преимущества.</p>
<p><strong>Модуль UIQt</strong> - это коллекция компонент UI на основе Qt. Сейчас используем лишь для интерфейса редактора.</p>
<p>Список компонент модуля UIQt с описанием и размером кода:<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Компонента</strong></th>
<th><strong>Описание …</strong></th></tr></table></p><p><img alt="2016-august-recap" src="http://opengamestudio.org/2016-09-03_august-recap.png"></p>
<p>Эта статья описывает самые важные технические детали разработки за август: модуль UIQt, его переработку, новый подход к разработке на основе функционала и его преимущества.</p>
<p><strong>Модуль UIQt</strong> - это коллекция компонент UI на основе Qt. Сейчас используем лишь для интерфейса редактора.</p>
<p>Список компонент модуля UIQt с описанием и размером кода:<table>
<tr>
<th><strong>№</strong></th>
<th><strong>Компонента</strong></th>
<th><strong>Описание</strong></th>
<th><strong>Размер (Б)</strong></th>
<th><strong>Размер (%)</strong></th>
</tr>
<tr>
<td>1</td>
<td>UIQtAction</td>
<td>Действия (события) для меню</td>
<td>11224</td>
<td>9</td>
</tr>
<tr>
<td>2</td>
<td>UIQtAux</td>
<td>Инициализирует Qt и главное окно. Предоставляет поиск виджета по имени для других компонент</td>
<td>15518</td>
<td>12</td>
</tr>
<tr>
<td>3</td>
<td>UIQtDock</td>
<td>Виджет стыковки</td>
<td>5273</td>
<td>4</td>
</tr>
<tr>
<td>4</td>
<td>UIQtFileDialog</td>
<td>Диалог выбора файла</td>
<td>8960</td>
<td>7</td>
</tr>
<tr>
<td>5</td>
<td>UIQtMenu</td>
<td>Меню для главного окна и на ПКМ (вроде меню по добавлению/копированию/вставке/удалению узла)</td>
<td>4566</td>
<td>3</td>
</tr>
<tr>
<td>6</td>
<td>UIQtMenuBar</td>
<td>Панель меню для главного окна</td>
<td>4222</td>
<td>3</td>
</tr>
<tr>
<td>7</td>
<td>UIQtRunner</td>
<td>Позволяет запустить QApplication</td>
<td>2450</td>
<td>2</td>
</tr>
<tr>
<td>8</td>
<td>UIQtThumbnailDialog</td>
<td>Диалог с изображениями</td>
<td>18615</td>
<td>14</td>
</tr>
<tr>
<td>9</td>
<td>UIQtToolBar</td>
<td>Панель инструментов для главого окна</td>
<td>4276</td>
<td>3</td>
</tr>
<tr>
<td>10</td>
<td>UIQtTree</td>
<td>Предоставляет сложные виджеты вроде Дерева сцены и Редактора свойств</td>
<td>51216</td>
<td>39</td>
</tr>
<tr>
<td>11</td>
<td>UIQtWidget</td>
<td>Общие свойства виджетов вроде фокуса и видимости</td>
<td>5465</td>
<td>4</td>
</tr>
</table></p>
<p><strong>Мы переработали модуль UIQt</strong> для замены старого State API на новый Environment API, который позволяет делать то же самое лаконичнее, т.е. упрощает и ускоряет разработку.</p>
<p>Переработку начали в июле и должны были закончить в том же месяце. Тем не менеe, работы завершили лишь в августе. Начальный план предполагал, что 28 часов должно хватить, но мы потратили 65. Мы оценивали необходимое время на основе количества вызовов публичного API каждой компоненты. Это хорошо сработало для небольших компонент, т.к. число вызовов их публичного API было примерно равно количеству их функционала, а сам функционал был очень маленький. Однако такой подход полностью провалился для компонеты UIQtTree, составляющей 39% кода модуля UIQt, потому что не было прямой связи между публичным API и функционалом.</p>
<p><strong>Новый подход к разработке на основе функционала</strong> родился после решения проблем с переработкой UIQtTree. Т.к. Qt использует MVC, компонента UIQtTree состоит из нескольких классов. К тому моменту, когда UIQtTree могла отображать и управлять иерархией элементов, компонента уже имела размер в 27К. Мы заметили, что UIQtTree стала потреблять непомерное количество времени разработки даже для мелкого функционала. Это было явным проявлением <a href="http://rsdn.org/article/philosophy/Complexity.xml">количественной сложности</a>.</p>
<p>Мы решили разбить UIQtTree на базовую часть и дополнительные. База содержит лишь необходимый минимум кода. Дополнение содержит код, специфичный для данного функционала, и может быть безболезненно изменено. В случае UIQtTree, отображение и управление иерархией элементов - это минимальный функционал, а переименование элементов - это дополнение.</p>
<p>Текущий функционал UIQtTree состоит из следующих возможностей:</p>
<table>
<tr>
<th>**№**</th>
<th>**Функционал**</th>
<th>**Описание**</th>
<th>**Размер (Б)**</th>
<th>**Размер (%)**</th>
</tr>
<tr>
<td>1</td>
<td>Base</td>
<td>Создание, изменение, отображение иерархии элементов</td>
<td>26966</td>
<td>52</td>
</tr>
<tr>
<td>2</td>
<td>Item open state</td>
<td>Хранит состояние свойства скрыто/отображено элемента</td>
<td>3094</td>
<td>6</td>
</tr>
<tr>
<td>3</td>
<td>Item renaming</td>
<td>Переименование элемента</td>
<td>3471</td>
<td>7</td>
</tr>
<tr>
<td>4</td>
<td>Item selection</td>
<td>Получение/установка выбранного элемента</td>
<td>2338</td>
<td>5</td>
</tr>
<tr>
<td>5</td>
<td>Item value</td>
<td>Предоставляет второй и последующие столбцы для элементов, используется Редактором свойств</td>
<td>1307</td>
<td>3</td>
</tr>
<tr>
<td>6</td>
<td>Item value editing</td>
<td>Редактирование значений элемента с помощью стандартного виджета</td>
<td>1996</td>
<td>4</td>
</tr>
<tr>
<td>7</td>
<td>Item value editing with combobox</td>
<td>Редактирование значений элемента с помощью виджета combobox</td>
<td>5819</td>
<td>11</td>
</tr>
<tr>
<td>8</td>
<td>Item value editing with spinner</td>
<td>Редактирование значений элемента с помощью виджета spinbox</td>
<td>5290</td>
<td>10</td>
</tr>
<tr>
<td>9</td>
<td>Menu</td>
<td>Меню на ПКМ</td>
<td>1248</td>
<td>2</td>
</tr>
</table>
<p>Пример файла функционала Menu для UIQtTree: <a href="https://bitbucket.org/ogstudio-history/mjin/src/0c4cc3c3213f4687c0f3bd6a5426a6054cadd79b/f/TREE_MENU.cpp?at=Studio+0.10&fileviewer=file-view-default">TREE_MENU</a>.</p>
<p><strong>Преимущества подхода:</strong></p>
<ol>
<li>Более быстрое чтение/понимание благодаря небольшому размеру</li>
<li>Более простое и безболезненное изменение благодаря изолированному коду</li>
</ol>
<p>Есть и недостаток: новый подход требует изучения.</p>
<p>На этом мы заканчиваем описание самых важных технических деталей разработки за август: модуль UIQt, его переработку, новый подход к разработке на основе функционала и его преимущества.</p>We’re back to social networks2016-08-18T00:00:00+03:002016-08-18T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-08-18:/back-to-social-networks.html<p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p>Мы вернулись в социальные сети2016-08-18T00:00:00+03:002016-08-18T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-08-18:/back-to-social-networks-ru.html<p>Если вы подписаны на нашу группу в <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a> или <a href="https://new.vk.com/opengamestudo">VK</a>, вы заметили, что мы начали использовать её снова. Это не случайно: мы наконец созрели для вербального общения после 4 лет молчаливой разработки.</p>
<p>Подписывайтесь!</p><p>Если вы подписаны на нашу группу в <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a> или <a href="https://new.vk.com/opengamestudo">VK</a>, вы заметили, что мы начали использовать её снова. Это не случайно: мы наконец созрели для вербального общения после 4 лет молчаливой разработки.</p>
<p>Подписывайтесь!</p>Once Mahjong – always Mahjong2016-08-10T00:00:00+03:002016-08-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-08-10:/once-mahjong-always-mahjong.html<p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal: we released OGS Mahjong 1.0 in 2012. Even for a hobby project (we spend about 40 hours a month) it's too long.</p>
<p>Upon the game release we got it: <strong>Tools are means to save development time</strong>.</p>
<p>We spent 4 more years to develop them. Now is the time to prove they are worth every single day spent. How? We will <strong>recreate Mahjong solitaire mode</strong> in just a few hours!</p>
<p>Join our next live session in September.</p>Раз Маджонг – всегда Маджонг2016-08-10T00:00:00+03:002016-08-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-08-10:/once-mahjong-always-mahjong-ru.html<p>Мы начали проект Opensource Game Studio очень давно. Мы хотели дать сообществу свободного программного обеспечения средства для создания игр. Правда, тогда не было ясно, что они из себя должны представлять. Поэтому решили начать с малого: создать игру.</p>
<p>Мы потратили 3 года для достижения этой цели: выпуск OGS Mahjong 1.0 …</p><p>Мы начали проект Opensource Game Studio очень давно. Мы хотели дать сообществу свободного программного обеспечения средства для создания игр. Правда, тогда не было ясно, что они из себя должны представлять. Поэтому решили начать с малого: создать игру.</p>
<p>Мы потратили 3 года для достижения этой цели: выпуск OGS Mahjong 1.0 состоялся в 2012 году. Даже для хобби-проекта (мы тратим в среднем около 40 часов в месяц) это очень долго.</p>
<p>После выпуска игры до нас дошло: <strong>Средства для создания игр должны экономить время разработки</strong>.</p>
<p>Мы потратили ещё 4 года на их разработку. Пришло время доказать, что они стоят каждого затраченного дня. Как? Мы <strong>воссоздадим режим "пасьянс Маджонг"</strong> за считанные часы!</p>
<p>Присоединяйтесь к нашему следующему прямому эфиру в сентябре.</p>May 2016 live session materials2016-05-29T00:00:00+03:002016-05-29T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-05-29:/ogs-editor-0.9.html<iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe>
<p>This time we have shown how to create a simple Domino based game. Below you can find all materials related to the game creation.</p>
<ol>
<li>Editor 0.9 for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/49_2016-05-24_04-48-47_0.9.0/">is available at SourceForge</a>. Simply unpack it and launch the run script.</li>
<li>Domino project …</li></ol><iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe>
<p>This time we have shown how to create a simple Domino based game. Below you can find all materials related to the game creation.</p>
<ol>
<li>Editor 0.9 for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/49_2016-05-24_04-48-47_0.9.0/">is available at SourceForge</a>. Simply unpack it and launch the run script.</li>
<li>Domino project created during live session <a title="GitHub" href="https://github.com/OGStudio/domino-livesession">is available at GitHub</a>.</li>
<li>Domino rehearsal videos referenced during live session <a title="YouTube" href="https://www.youtube.com/playlist?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J">are available at YouTube</a></li>
<li>Domino rehearsal project referenced during live session <a title="GitHub" href="https://github.com/OGStudio/domino-rehearsal">is available at GitHub</a>.</li>
</ol>
<p>The next live session will be held in September 2016.</p>Материалы прямого эфира за май 20162016-05-29T00:00:00+03:002016-05-29T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-05-29:/ogs-editor-0.9-ru.html<iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe>
<p>В этот раз мы показали, как создать простую игру на основе Домино. Ниже приведены все материалы, связанные с созданием игры.</p>
<ol>
<li>Редактор 0.9 для Linux (на основе Debian), OS X (10.9+), Windows <a title="SourceForge" href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/49_2016-05-24_04-48-47_0.9.0/">доступен на SourceForge</a>. Просто распакуйте и запустите скрипт run.</li>
<li>Проект Домино, созданный во время прямого эфира <a title="GitHub" href="https://github.com/OGStudio/domino-livesession">доступен …</a></li></ol><iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe>
<p>В этот раз мы показали, как создать простую игру на основе Домино. Ниже приведены все материалы, связанные с созданием игры.</p>
<ol>
<li>Редактор 0.9 для Linux (на основе Debian), OS X (10.9+), Windows <a title="SourceForge" href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/49_2016-05-24_04-48-47_0.9.0/">доступен на SourceForge</a>. Просто распакуйте и запустите скрипт run.</li>
<li>Проект Домино, созданный во время прямого эфира <a title="GitHub" href="https://github.com/OGStudio/domino-livesession">доступен на GitHub</a>.</li>
<li>Видео репетиции создания игры, на которые есть ссылки в прямом эфире, <a title="YouTube" href="https://www.youtube.com/playlist?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J">доступны на YouTube</a></li>
<li>Проект Домино, созданный во время репетиции, <a title="GitHub" href="https://github.com/OGStudio/domino-rehearsal">доступен на GitHub</a>.</li>
</ol>Live session: 28 May 20162016-05-17T00:00:00+03:002016-05-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-05-17:/may-live-session-announcement.html<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+May+live+session&iso=20160528T12&p1=37&ah=3">28 May 2016 at 12:00 CEST</a>. Join us!</p><p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+May+live+session&iso=20160528T12&p1=37&ah=3">28 May 2016 at 12:00 CEST</a>. Join us!</p>Прямой эфир: 28 мая 20162016-05-17T00:00:00+03:002016-05-17T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-05-17:/may-live-session-announcement-ru.html<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9C%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio&iso=20160528T13&p1=166&ah=3">28 мая 2016 в 13:00 MSK</a>. Присоединяйтесь!</p><p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9C%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio&iso=20160528T13&p1=166&ah=3">28 мая 2016 в 13:00 MSK</a>. Присоединяйтесь!</p>May live session (Editor 0.9)2016-04-24T00:00:00+03:002016-04-24T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-04-24:/may-live-session-decision.html<p>As you know, the previously published roadmap assumed, that we would hold a live session in April and it would feature a ping-pong game created with Editor 0.9.</p>
<p>We have to admit, our abilities to plan are not yet good enough. That's why the next live session will take …</p><p>As you know, the previously published roadmap assumed, that we would hold a live session in April and it would feature a ping-pong game created with Editor 0.9.</p>
<p>We have to admit, our abilities to plan are not yet good enough. That's why the next live session will take place by the end of May. The exact date will be announced later.</p>
<p>Here's a short preview of the coming game:
<iframe width="560" height="315" src="https://www.youtube.com/embed/V3EvCVPc6kg" frameborder="0" allowfullscreen></iframe></p>Майский прямой эфир (Редактор 0.9)2016-04-24T00:00:00+03:002016-04-24T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-04-24:/may-live-session-decision-ru.html<p>Как вы знаете, ранее опубликованная дорожная карта предполагала, что в апреле будет прямой эфир, в котором с помощью Редактора 0.9 мы создадим игру пинг-понг.</p>
<p>Мы должны признать, что наши способности к планированию всё ещё недостаточно высоки, поэтому следующий прямой эфир состоится в конце мая. Точную дату мы объявим позже …</p><p>Как вы знаете, ранее опубликованная дорожная карта предполагала, что в апреле будет прямой эфир, в котором с помощью Редактора 0.9 мы создадим игру пинг-понг.</p>
<p>Мы должны признать, что наши способности к планированию всё ещё недостаточно высоки, поэтому следующий прямой эфир состоится в конце мая. Точную дату мы объявим позже.</p>
<p>Вот пара моментов из будущей игры:
<iframe width="560" height="315" src="https://www.youtube.com/embed/V3EvCVPc6kg" frameborder="0" allowfullscreen></iframe></p>"Rolling ball" live session videos and downloads2016-02-10T00:00:00+03:002016-02-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-02-10:/rolling-ball.html<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>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>, too.</p>
<p>"Rolling ball" project for the Editor <a title="GitHub" href="https://github.com/OGStudio/rollingBall.ogs/archive/master.zip">is available at GitHub</a>.</p>
<p>To open it in the Editor:</p>
<ul>
<li>replace slideDown.ogs with rollingBall.ogs you downloaded</li>
<li>rename rollingBall.ogs to slideDown.ogs</li>
</ul>
<p>Since live session took us so long, we decided to concentrate on polishing. Editor already has a lot of features, but their use is inconvenient. We will fix major obstacles for the next Editor release.</p>Запись прямого эфира "Катящийся мяч" и материалы2016-02-10T00:00:00+03:002016-02-10T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-02-10:/rolling-ball-ru.html<p>Т.к. мы провели 2 прямые трансляции для создания игры "Катящийся мяч", ниже вы можете увидеть 2 записи этого процесса на YouTube:</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>Игра "Катящийся мяч" для Linux (на основе Debian), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">доступна на SourceForge</a>.
Просто распакуйте и запустите скрипт 'run'.</p>
<p>Редактор 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">доступен тоже на …</a></p><p>Т.к. мы провели 2 прямые трансляции для создания игры "Катящийся мяч", ниже вы можете увидеть 2 записи этого процесса на YouTube:</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>Игра "Катящийся мяч" для Linux (на основе Debian), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">доступна на SourceForge</a>.
Просто распакуйте и запустите скрипт 'run'.</p>
<p>Редактор 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">доступен тоже на SourceForge</a>.</p>
<p>Проект "Катящийся мяч" для Редактора <a title="GitHub" href="https://github.com/OGStudio/rollingBall.ogs/archive/master.zip">доступен на GitHub</a>.</p>
<p>Чтобы открыть его в Редакторе:</p>
<ul>
<li>замените slideDown.ogs загруженным rollingBall.ogs</li>
<li>переименуйте rollingBall.ogs в slideDown.ogs</li>
</ul>
<p>Т.к. прямой эфир занял гораздо больше времени, чем мы планировали, мы решили сконцентрировать свои усилия на улучшении удобства редактора. Его возможности уже довольно обширны, но использовать их крайне неудобно. Наиболее серьезные из этих проблем мы планируем исправить в следующем релизе Редактора.</p>Game creation live session (part 2): 7 February 20162016-02-02T00:00:00+03:002016-02-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-02-02:/rolling-ball-live-session-pt2.html<p>Unfortunately, we have failed to finish creation of the simple "Rolling ball" game in 3 hours. That's why we will hold the second <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session%2C+part+2&iso=20160207T12&p1=37&ah=3">7 February 2016 at 12:00 CET</a>. Let's finish the game!</p><p>Unfortunately, we have failed to finish creation of the simple "Rolling ball" game in 3 hours. That's why we will hold the second <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session%2C+part+2&iso=20160207T12&p1=37&ah=3">7 February 2016 at 12:00 CET</a>. Let's finish the game!</p>Создание игры в прямом эфире (часть 2): 7 февраля 20162016-02-02T00:00:00+03:002016-02-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-02-02:/rolling-ball-live-session-pt2-ru.html<p>К сожалению, нам не удалось завершить создание простой игры "Катящийся мяч" за 3 часа. Поэтому вторая часть трансляции <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B%2C+%D1%87%D0%B0%D1%81%D1%82%D1%8C+2&iso=20160207T14&p1=166&ah=3">7 февраля 2016 в 14:00 MSK</a>. Давайте завершим игру!</p><p>К сожалению, нам не удалось завершить создание простой игры "Катящийся мяч" за 3 часа. Поэтому вторая часть трансляции <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B%2C+%D1%87%D0%B0%D1%81%D1%82%D1%8C+2&iso=20160207T14&p1=166&ah=3">7 февраля 2016 в 14:00 MSK</a>. Давайте завершим игру!</p>Game creation live session: 31 January 20162016-01-25T00:00:00+03:002016-01-25T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-01-25:/january-live-session-announcement.html<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p><p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p>Создание игры в прямом эфире: 31 января 20162016-01-25T00:00:00+03:002016-01-25T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-01-25:/january-live-session-announcement-ru.html<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B&iso=20160131T14&p1=166&ah=3">31 января 2016 в 14:00 MSK</a>. Присоединяйтесь!</p><p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B&iso=20160131T14&p1=166&ah=3">31 января 2016 в 14:00 MSK</a>. Присоединяйтесь!</p>SOON: Creating a simple game live (Editor 0.8)2016-01-21T00:00:00+03:002016-01-21T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-01-21:/january-live-session-decision.html<p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run.
The exact date and time is …</p><p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run.
The exact date and time is to be announced in the coming days. Stay tuned!</p>СКОРО: Создание простой игры в прямом эфире (Редактор 0.8)2016-01-21T00:00:00+03:002016-01-21T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2016-01-21:/january-live-session-decision-ru.html<p>Мы готовы предоставить вам Редактор 0.8 с Проигрывателем. Прямая трансляция будет проведена на <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> СКОРО. Мы покажем вам, как создать простую игру со звуком с нуля. И на этот раз она не будет требовать Редактора для работы.
Точную дату и время мы объявим в ближайшие дни. Оставайтесь на связи …</p><p>Мы готовы предоставить вам Редактор 0.8 с Проигрывателем. Прямая трансляция будет проведена на <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> СКОРО. Мы покажем вам, как создать простую игру со звуком с нуля. И на этот раз она не будет требовать Редактора для работы.
Точную дату и время мы объявим в ближайшие дни. Оставайтесь на связи!</p>Roadmap for 20162015-12-26T00:00:00+03:002015-12-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-12-26:/2016-roadmap.html<p>As you know, according to the <a href="http://opengamestudio.org/2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates.</p>
<p>Here's the revised …</p><p>As you know, according to the <a href="http://opengamestudio.org/2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates.</p>
<p>Here's the revised roadmap for the first half of 2016:</p>
<ol>
<li>Editor + Player 0.8.0 (January 2016): Sound system, Whac-a-mole game with sounds</li>
<li>Editor + Player 0.9.0 (April 2016): Networking system, simple ping pong game for 2 players over the net</li>
<li>Editor + Player 0.10.0 (July 2016): Polishing, "Shuan" prototype</li>
</ol>Дорожная карта 20162015-12-26T00:00:00+03:002015-12-26T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-12-26:/2016-roadmap-ru.html<p>Как вы знаете, согласно <a href="http://opengamestudio.org/2015-roadmap-ru.html">ранее опубликованной дорожной карте</a>, мы добавили звуковую систему. Тем не менее, мы решили пойти дальше и создать первую версию Проигрывателя. Мы хотели завершить его в декабре, но, к сожалению, изменение планов вылилось в изменение сроков.</p>
<p>Представляем вам обновлённую дорожную карту на первую половину 2016:</p>
<ol>
<li>Редактор + Проигрыватель …</li></ol><p>Как вы знаете, согласно <a href="http://opengamestudio.org/2015-roadmap-ru.html">ранее опубликованной дорожной карте</a>, мы добавили звуковую систему. Тем не менее, мы решили пойти дальше и создать первую версию Проигрывателя. Мы хотели завершить его в декабре, но, к сожалению, изменение планов вылилось в изменение сроков.</p>
<p>Представляем вам обновлённую дорожную карту на первую половину 2016:</p>
<ol>
<li>Редактор + Проигрыватель 0.8.0 (Январь 2016): Звуковая система, игра "Поймай крота" со звуком</li>
<li>Редактор + Проигрыватель 0.9.0 (Апрель 2016): Сетевая система, простая игра ping pong для двух игроков по сети</li>
<li>Редактор + Проигрыватель 0.10.0 (Июль 2016): Полировка, прототип игры "Шуан"</li>
</ol>Live session video and downloads2015-11-15T00:00:00+03:002015-11-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-15:/livesession-materials-editor-07.html<p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/</a></p>
<p>Download the editor archive, unpack, delete the wam.ogs folder, copy wam.ogs from the live session archive to the editor folder.</p>
<ul>
<li>in Windows - run the <code>run.bat</code> file.</li>
<li>in Linux and OSX - run the <code>run</code> file.</li>
</ul>Видеозапись живой сессии и материалы2015-11-15T00:00:00+03:002015-11-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-15:/livesession-materials-editor-07-ru.html<p>Если вы пропустили живую сессию, вы можете посмотреть ее здесь:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>Проект, созданный в ходе сессии, можно скачать здесь:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>Последняя версия редактора доступна здесь:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4 …</a></p><p>Если вы пропустили живую сессию, вы можете посмотреть ее здесь:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>Проект, созданный в ходе сессии, можно скачать здесь:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>Последняя версия редактора доступна здесь:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/</a></p>
<p>Скачайте редактор, разархивируйте, удалите папку wam.ogs из редактора, скопируйте папку wam.ogs из архива живой сессии в папку редактора.</p>
<ul>
<li>в Windows - запустите файл <code>run.bat</code>.</li>
<li>в Linux и OSX - запустите файл <code>run</code>.</li>
</ul>Creating a simple game live: 15 November 20152015-11-09T00:00:00+03:002015-11-09T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-09:/livesession-editor-07.html<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T12&p1=37&ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T12&p1=37&ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p>Создание простой игры в прямом эфире: 15 ноября 20152015-11-09T00:00:00+03:002015-11-09T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-09:/livesession-editor-07-ru.html<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a title="Локальное время" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T14&p1=166&ah=3">15 ноября 2015 в 14:00 MSK</a>. Присоединяйтесь!</p><p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a title="Локальное время" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T14&p1=166&ah=3">15 ноября 2015 в 14:00 MSK</a>. Присоединяйтесь!</p>SOON: Creating a simple game live (Editor 0.7)2015-11-02T00:00:00+03:002015-11-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-02:/soon-game-creation-editor-07.html<p>As we have promised, we are ready to give you Editor 0.7 which is capable of creating the complete test chamber. However, after recreating the test chamber ourselves, it became clear that:</p>
<ol>
<li>it takes more than 8 hours to recreate it (too long)</li>
<li>it's inappropriate to be presented in …</li></ol><p>As we have promised, we are ready to give you Editor 0.7 which is capable of creating the complete test chamber. However, after recreating the test chamber ourselves, it became clear that:</p>
<ol>
<li>it takes more than 8 hours to recreate it (too long)</li>
<li>it's inappropriate to be presented in the form of an article (too boring)</li>
</ol>
<p>Therefore we decided to hold a live session at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON to show you how to create a simple <a title="Whac-a-mole" href="http://google.com/search?q=whac+a+mole">whac-a-mole like game</a> from scratch.</p>
<p>Currently we are busy making final preparations, so we'll tell you the exact time and date this week. Stay tuned!</p>СКОРО: Создание простой игры в прямом эфире (Редактор 0.7)2015-11-02T00:00:00+03:002015-11-02T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-11-02:/soon-game-creation-editor-07-ru.html<p>Как и было обещано, мы готовы предоставить вам Редактор 0.7, с помощью которого можно создать тестовый цех. Тем не менее, после воссоздания цеха стало ясно, что:</p>
<ol>
<li>это занимает более 8 часов (слишком долго)</li>
<li>описание в виде статьи не подходит по формату (слишком скучно)</li>
</ol>
<p>Поэтому мы решили провести прямую трансляцию …</p><p>Как и было обещано, мы готовы предоставить вам Редактор 0.7, с помощью которого можно создать тестовый цех. Тем не менее, после воссоздания цеха стало ясно, что:</p>
<ol>
<li>это занимает более 8 часов (слишком долго)</li>
<li>описание в виде статьи не подходит по формату (слишком скучно)</li>
</ol>
<p>Поэтому мы решили провести прямую трансляцию на <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> СКОРО, чтобы показать, как создать простую <a title="Whac-a-mole" href="http://google.com/search?q=whac+a+mole">игру типа "поймай крота"</a> с нуля.</p>
<p>Сейчас мы заняты последними приготовлениями, поэтому точные дату и время мы сообщим на этой неделе. Оставайтесь на связи!</p>Desura no more, hello Humble Bundle Widget2015-07-23T00:00:00+03:002015-07-23T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-23:/bye-desura-hello-humblebundle.html<p>After the recent bankruptcy of Desura's parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site.</p>
<p>Here it …</p><p>After the recent bankruptcy of Desura's parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site.</p>
<p>Here it is:</p>
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"></iframe>
<p>We haven't received a single penny from Desura (due to the minimal cache out limitations), but if you bought the deluxe version from them and experiencing any problems with downloading it (right now we see no problems with that), send us a letter, tell your name on Desura, we'll figure something out.</p>Прощай, Desura. Здравствуй, Humble Bundle Widget2015-07-23T00:00:00+03:002015-07-23T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-23:/bye-desura-hello-humblebundle-ru.html<p>После недавнего банкротства родительской компании сервиса Desura мы пришли к выводу, что нам необходима новая площадка для распространения Deluxe-версии игры. Более современная, удобная, надежная.
Наш выбор пал на Humble Widget, благодаря которому вы можете приобрести Deluxe-версию игры прямо у нас на сайте.</p>
<p>Вот он:</p>
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"></iframe>
<p>К сожалению, мы не получили от …</p><p>После недавнего банкротства родительской компании сервиса Desura мы пришли к выводу, что нам необходима новая площадка для распространения Deluxe-версии игры. Более современная, удобная, надежная.
Наш выбор пал на Humble Widget, благодаря которому вы можете приобрести Deluxe-версию игры прямо у нас на сайте.</p>
<p>Вот он:</p>
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"></iframe>
<p>К сожалению, мы не получили от Desura ни копейки (из-за минимального порога вывода средств, которого мы не достигли), однако, если вы приобретали Deluxe-версию OGS Mahjong на Desura и испытываете проблемы с ее скачиванием (в настоящее время проблем не обнаружено), напишите нам, указав свое имя на Desura, и мы что-нибудь придумаем.</p>Test chamber for everyone (Editor 0.7.0)2015-07-22T00:00:00+03:002015-07-22T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-22:/test-chamber-for-everyone.html<p>As you know, the main goal of Editor 0.7.0 is the ability to create the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that …</p><p>As you know, the main goal of Editor 0.7.0 is the ability to create the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber!</p>
<p>We estimate to complete it in October.</p>Тестовый цех каждому (Редактор 0.7.0)2015-07-22T00:00:00+03:002015-07-22T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-22:/test-chamber-for-everyone-ru.html<p>Как вы знаете, основная цель Редактора 0.7.0 - это возможность создать <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a> с помощью него. Редактору не хватает системы Действий и исправления некоторых ошибок для этого. Помимо выпуска Редактора мы опубликуем подробную статью, описывающую создание тестового цеха, чтобы каждый мог создать себе свой тестовый цех!</p>
<p>Мы планируем завершить …</p><p>Как вы знаете, основная цель Редактора 0.7.0 - это возможность создать <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a> с помощью него. Редактору не хватает системы Действий и исправления некоторых ошибок для этого. Помимо выпуска Редактора мы опубликуем подробную статью, описывающую создание тестового цеха, чтобы каждый мог создать себе свой тестовый цех!</p>
<p>Мы планируем завершить его в Октябре.</p>Roadmap for 2015-20162015-07-19T00:00:00+03:002015-07-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-19:/2015-roadmap.html<p>As promised, we have come up with a list of milestones and their approximate dates for the coming year:</p>
<ol>
<li>Editor 0.7.0 (October 2015) - Actions' system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a></li>
<li>Editor 0.8.0 (December 2015) - Sound system</li>
<li>Editor 0.9.0 (February 2016) - Particles' system and minimal …</li></ol><p>As promised, we have come up with a list of milestones and their approximate dates for the coming year:</p>
<ol>
<li>Editor 0.7.0 (October 2015) - Actions' system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a></li>
<li>Editor 0.8.0 (December 2015) - Sound system</li>
<li>Editor 0.9.0 (February 2016) - Particles' system and minimal UI</li>
<li>Editor 0.10.0, Player 0.1.0 (April 2016) - Player to play what Editor produced: we create Shuan prototype with our engine</li>
<li>Editor 0.11.0, Player 0.2.0 (June 2016) - Networking: we create Classic 4-player Mahjong prototype</li>
</ol>
<p>These approximate dates presume one coder spends 40 hours a month. That's about 1 work week at full-time job. Not much, but that's the only time we have.</p>
<p>We will post more details about Editor 0.7.0 shortly: we need to decide what features deserve 80 hours of our time for the next 2 months.</p>Дорожная карта 2015-20162015-07-19T00:00:00+03:002015-07-19T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-07-19:/2015-roadmap-ru.html<p>Как и было обещано, мы составили список вех и их примерные даты на ближайший год:</p>
<ol>
<li>Редактор 0.7.0 (Октябрь 2015) - Система действий: мы воссоздаём <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a></li>
<li>Редактор 0.8.0 (Декабрь 2015) - Звуковая система</li>
<li>Редактор 0.9.0 (Февраль 2016) - Система частиц и минимальный интерфейс пользователя (UI)</li>
<li>Редактор 0 …</li></ol><p>Как и было обещано, мы составили список вех и их примерные даты на ближайший год:</p>
<ol>
<li>Редактор 0.7.0 (Октябрь 2015) - Система действий: мы воссоздаём <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a></li>
<li>Редактор 0.8.0 (Декабрь 2015) - Звуковая система</li>
<li>Редактор 0.9.0 (Февраль 2016) - Система частиц и минимальный интерфейс пользователя (UI)</li>
<li>Редактор 0.10.0, Проигрыватель 0.1.0 (Апрель 2016) - Проигрыватель воспроизводит созданное Редактором: мы создаём прототип Шуана на нашем движке</li>
<li>Редактор 0.11.0, Проигрыватель 0.2.0 (Июнь 2016) - Поддержка сети: мы создаём прототип классического Маджонга для 4-х игроков</li>
</ol>
<p>Эти примерные даты предполагают трату 40 часов в месяц одним программистом. Это около 1 рабочей недели. Не много, но это всё время, что у нас есть.</p>
<p>Мы сообщим больше деталей о Редакторе 0.7.0 чуть позже: нам нужно решить, какие возможности заслуживают 80 часов нашего времени в следующие 2 месяца.</p>Editor 0.6.02015-06-28T00:00:00+03:002015-06-28T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-06-28:/editor-06.html<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p>
<p>Editor 0.6.0 got the following new features:</p>
<ol>
<li>Camera and light node positioning</li>
<li>Node rotation along X axis</li>
<li>Node scripting support</li>
<li>Thumbnail dialog to preview models when editing scene node model properties</li>
<li>Node copying …</li></ol><p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p>
<p>Editor 0.6.0 got the following new features:</p>
<ol>
<li>Camera and light node positioning</li>
<li>Node rotation along X axis</li>
<li>Node scripting support</li>
<li>Thumbnail dialog to preview models when editing scene node model properties</li>
<li>Node copying and pasting</li>
<li>Node selection by LMB click in the scene</li>
<li>Window geometry and state restoration after restart</li>
</ol>
<p>We don't have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap.</p>Редактор 0.6.02015-06-28T00:00:00+03:002015-06-28T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-06-28:/editor-06-ru.html<p>Мы завершили работу над версией 0.6.0 редактора. Вы можете <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">увидеть 0.6.0 в действии здесь</a>. </p>
<p>Список новых возможностей Редактора 0.6.0:</p>
<ol>
<li>Позиционирование узлов с камерой и светом</li>
<li>Вращение узлов по оси X</li>
<li>Поддержка скриптов у узлов</li>
<li>Диалог для предпросмотра моделей при редактировании моделей у узла</li>
<li>Копирование …</li></ol><p>Мы завершили работу над версией 0.6.0 редактора. Вы можете <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">увидеть 0.6.0 в действии здесь</a>. </p>
<p>Список новых возможностей Редактора 0.6.0:</p>
<ol>
<li>Позиционирование узлов с камерой и светом</li>
<li>Вращение узлов по оси X</li>
<li>Поддержка скриптов у узлов</li>
<li>Диалог для предпросмотра моделей при редактировании моделей у узла</li>
<li>Копирование и вставка узлов</li>
<li>Выбор узла с помощью клика мышью в сцене</li>
<li>Восстановление позиции и состояния окна после перезапуска</li>
</ol>
<p>На текущий момент у нас нет даты завершения 0.7.0, потому что мы решили взять паузу и потратить некоторое время на составление дорожной карты для Shuan и Mahjong 2. Как только мы её закончим, мы расскажем и о возможностях 0.7.0, и о дате завершения 0.7.0, и о самой дорожной карте.</p>Editor 0.5.0 and plans for 0.6.02015-04-15T00:00:00+03:002015-04-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-04-15:/editor-06-roadmap.html<p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>. </p>
<p>Also, we have just started Editor 0.6.0 development.</p>
<p>Editor 0.6.0 planned features:</p>
<ol>
<li>Camera node editing</li>
<li>Light …</li></ol><p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>. </p>
<p>Also, we have just started Editor 0.6.0 development.</p>
<p>Editor 0.6.0 planned features:</p>
<ol>
<li>Camera node editing</li>
<li>Light node editing</li>
<li>Node rotation editing</li>
<li>Node scripting support</li>
<li>Thumbnail dialog to preview materials and models when editing scene node material and model properties</li>
<li>Copying and pasting of scene nodes</li>
<li>Scene node selection by clicking a mouse in the scene</li>
</ol>
<p>We estimate to complete it in August.</p>Редактор 0.5.0 и планы для 0.6.02015-04-15T00:00:00+03:002015-04-15T00:00:00+03:00Opensource Game Studiotag:opengamestudio.org,2015-04-15:/editor-06-roadmap-ru.html<p>Мы завершили работу над версией 0.5.0 редактора. Как было запланировано, эта версия содержит редактирование узлов сцены, браузер свойств, поддеркжу Qt5. Вы можете <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">увидеть 0.5.0 в действии здесь</a>. </p>
<p>Также мы только что начали разработку Редактора 0.6.0.</p>
<p>Запланированные возможности Редактора 0.6.0:</p>
<ol>
<li>Редактирование узлов с …</li></ol><p>Мы завершили работу над версией 0.5.0 редактора. Как было запланировано, эта версия содержит редактирование узлов сцены, браузер свойств, поддеркжу Qt5. Вы можете <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">увидеть 0.5.0 в действии здесь</a>. </p>
<p>Также мы только что начали разработку Редактора 0.6.0.</p>
<p>Запланированные возможности Редактора 0.6.0:</p>
<ol>
<li>Редактирование узлов с камерой</li>
<li>Редактирование узлов со светом</li>
<li>Редактирование вращения узлов</li>
<li>Поддержка скриптов у узлов</li>
<li>Диалог для предпросмотра моделей и материалов при редактировании моделей и материалов у узла</li>
<li>Копирование и вставка узлов</li>
<li>Выбор узла с помощью клика мышью в сцене</li>
</ol>
<p>Мы планируем завершить его в августе.</p>