From c0741d4384301e32dc446b41da150359a7af24aa Mon Sep 17 00:00:00 2001 From: Michael Kapelko Date: Fri, 26 Jan 2018 11:52:05 +0300 Subject: [PATCH] Add 'Mahjong recreation start' article --- 2016-august-recap-ru.html | 4 +- 2016-august-recap.html | 4 +- 2016-november-recap-ru.html | 4 +- 2016-november-recap.html | 4 +- 2016-october-recap-ru.html | 4 +- 2016-october-recap.html | 4 +- 2016-september-recap-ru.html | 4 +- 2016-september-recap.html | 4 +- 2016-tech-showcases-ru.html | 4 +- 2016-tech-showcases.html | 4 +- 2017-happy-new-year-ru.html | 4 +- 2017-happy-new-year.html | 4 +- 2017-summary-ru.html | 4 +- 2017-summary.html | 4 +- 2018-01-26-mahjong-recreation-start.png | Bin 0 -> 258036 bytes README.md | 2 +- archives.html | 50 +-- author/opensource-game-studio.html | 154 ++++---- author/opensource-game-studio2.html | 88 ++--- author/opensource-game-studio3.html | 32 +- back-to-social-networks-ru.html | 2 +- back-to-social-networks.html | 2 +- back-to-the-static-ru.html | 4 +- back-to-the-static.html | 4 +- category/news.html | 154 ++++---- category/news2.html | 88 ++--- category/news3.html | 32 +- feeds/all.atom.xml | 341 +++++++----------- feeds/news.atom.xml | 166 ++++----- index.html | 154 ++++---- index2.html | 88 ++--- index3.html | 32 +- ios-tutorial-ru.html | 4 +- ios-tutorial.html | 4 +- its-all-fine-ru.html | 4 +- its-all-fine.html | 4 +- lets-go-ru.html | 6 +- lets-go.html | 6 +- mahjong-recreation-start-ru.html | 167 +++++++++ mahjong-recreation-start.html | 167 +++++++++ mjin-world-birth-ru.html | 4 +- mjin-world-birth.html | 4 +- ogs-editor-0.10-ru.html | 4 +- ogs-editor-0.10.html | 4 +- once-mahjong-always-mahjong-ru.html | 2 +- once-mahjong-always-mahjong.html | 2 +- openscenegraph-cross-platform-guide-ru.html | 4 +- openscenegraph-cross-platform-guide.html | 4 +- osg-sample-ru.html | 4 +- osg-sample.html | 4 +- .../2018-01-26-mahjong-recreation-start-ru.md | 72 ++++ .../2018-01-26-mahjong-recreation-start.md | 74 ++++ .../2018-01-26-mahjong-recreation-start.png | Bin 0 -> 258036 bytes scripting-research-ru.html | 4 +- scripting-research.html | 4 +- september-live-session-announcement-ru.html | 2 +- ...live-session-announcement-tomorrow-ru.html | 2 +- ...er-live-session-announcement-tomorrow.html | 2 +- september-live-session-announcement.html | 2 +- the-year-of-challenges-ru.html | 6 +- the-year-of-challenges.html | 6 +- the-year-of-lessons-ru.html | 4 +- the-year-of-lessons.html | 4 +- ...erdays-live-session-short-overview-ru.html | 2 +- yesterdays-live-session-short-overview.html | 2 +- 65 files changed, 1265 insertions(+), 768 deletions(-) create mode 100644 2018-01-26-mahjong-recreation-start.png create mode 100644 mahjong-recreation-start-ru.html create mode 100644 mahjong-recreation-start.html create mode 100644 pelican/content/articles/2018-01-26-mahjong-recreation-start-ru.md create mode 100644 pelican/content/articles/2018-01-26-mahjong-recreation-start.md create mode 100644 pelican/content/images/2018-01-26-mahjong-recreation-start.png diff --git a/2016-august-recap-ru.html b/2016-august-recap-ru.html index 10fe51b..06e3937 100644 --- a/2016-august-recap-ru.html +++ b/2016-august-recap-ru.html @@ -50,10 +50,10 @@ title="Permalink to Август 2016 кратко">Август 2016 кратко -
Sat 03 September 2016 +
Сб 03 Сентябрь 2016 en -

2016-august-recap

+

2016-august-recap

Эта статья описывает самые важные технические детали разработки за август: модуль UIQt, его переработку, новый подход к разработке на основе функционала и его преимущества.

Модуль UIQt - это коллекция компонент UI на основе Qt. Сейчас используем лишь для интерфейса редактора.

Список компонент модуля UIQt с описанием и размером кода: diff --git a/2016-august-recap.html b/2016-august-recap.html index c8199c5..0a0ddb1 100644 --- a/2016-august-recap.html +++ b/2016-august-recap.html @@ -50,10 +50,10 @@ title="Permalink to August 2016 recap">August 2016 recap -
Sat 03 September 2016 +
Сб 03 Сентябрь 2016 ru -

2016-august-recap

+

2016-august-recap

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.

UIQt module is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.

Here is a list of UIQt module components with their description and current code size:

diff --git a/2016-november-recap-ru.html b/2016-november-recap-ru.html index d6a06b5..b70c4b8 100644 --- a/2016-november-recap-ru.html +++ b/2016-november-recap-ru.html @@ -50,10 +50,10 @@ title="Permalink to Ноябрь 2016 кратко">Ноябрь 2016 кратко -
Thu 15 December 2016 +
Чт 15 Декабрь 2016 en -

November recap

+

November recap

Эта статья описывает начало разделения библиотеки MJIN на модули.

Как только мы собрали OpenSceneGraph для Android, стало очевидно, что часть функционала MJIN не нужна на Android. Например, UIQt - это основа интерфейса Редактора. Раз Редактор - это приложение для ПК, то UIQt не нужен на Android.

Мы решили рассмотреть два подхода к разделению MJIN на модули: во время сборки (build-time) и исполнения (run-time). diff --git a/2016-november-recap.html b/2016-november-recap.html index 7a56996..df0dfa0 100644 --- a/2016-november-recap.html +++ b/2016-november-recap.html @@ -50,10 +50,10 @@ title="Permalink to November 2016 recap">November 2016 recap -

Thu 15 December 2016 +
Чт 15 Декабрь 2016 ru -

November recap

+

November recap

This article describes the start of MJIN library separation into modules.

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.

We decided to have a look at two approaches to separate MJIN into modules: build-time separation and run-time one. diff --git a/2016-october-recap-ru.html b/2016-october-recap-ru.html index fef4e8e..7c4ed14 100644 --- a/2016-october-recap-ru.html +++ b/2016-october-recap-ru.html @@ -50,10 +50,10 @@ title="Permalink to Октябрь 2016 кратко">Октябрь 2016 кратко -

Sat 19 November 2016 +
Сб 19 Ноябрь 2016 en -

October recap

+

October recap

Эта статья описывает, как мы потратили месяц на сборку OpenSceneGraph (OSG) под Android: первая попытка собрать OSG, поиск альтернатив OSG и успех в сборке OSG.

Первая попытка собрать OSG.

Не имея опыта разработки под Android, мы взяли последнюю версию Android Studio и начали проходить самоучители для начинающих. diff --git a/2016-october-recap.html b/2016-october-recap.html index f10b9d1..7018851 100644 --- a/2016-october-recap.html +++ b/2016-october-recap.html @@ -50,10 +50,10 @@ title="Permalink to October 2016 recap">October 2016 recap -

Sat 19 November 2016 +
Сб 19 Ноябрь 2016 ru -

October recap

+

October recap

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.

First attempt to build OSG.

Having no prior knowledge of Android development, we grabbed the latest Android Studio and started doing beginner tutorials. diff --git a/2016-september-recap-ru.html b/2016-september-recap-ru.html index d5a1016..20f6a86 100644 --- a/2016-september-recap-ru.html +++ b/2016-september-recap-ru.html @@ -50,10 +50,10 @@ title="Permalink to Сентябрь 2016 кратко">Сентябрь 2016 кратко -

Tue 11 October 2016 +
Вт 11 Октябрь 2016 en -

September recap

+

September recap

Эта статья описывает стадии по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.

Несмотря на то, что сам прямой эфир длится лишь несколько часов, мы готовимся к нему целый месяц. Рассмотрим каждую стадию прямого эфира подробнее.

    diff --git a/2016-september-recap.html b/2016-september-recap.html index 23bde43..9231938 100644 --- a/2016-september-recap.html +++ b/2016-september-recap.html @@ -50,10 +50,10 @@ title="Permalink to September 2016 recap">September 2016 recap -
    Tue 11 October 2016 +
    Вт 11 Октябрь 2016 ru -

    September recap

    +

    September recap

    This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.

    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.

      diff --git a/2016-tech-showcases-ru.html b/2016-tech-showcases-ru.html index f23140a..bbcda31 100644 --- a/2016-tech-showcases-ru.html +++ b/2016-tech-showcases-ru.html @@ -50,10 +50,10 @@ title="Permalink to Демонстрации технологий">Демонстрации технологий -
      Mon 31 October 2016 +
      Пн 31 Октябрь 2016 en -

      TechShowcases

      +

      TechShowcases

      Сегодня мы ещё раз взглянем на формат демонстраций в 2015-2016 годах, а также сообщим о новом формате 2017-го.

      2015 и 2016: демонстрации в прямом эфире.

      Как вы знаете, в ходе демонстраций мы в прямом эфире показываем состояние наших технологий и собираем небольшую работающую игру с нуля. diff --git a/2016-tech-showcases.html b/2016-tech-showcases.html index b6c635e..48d13f2 100644 --- a/2016-tech-showcases.html +++ b/2016-tech-showcases.html @@ -50,10 +50,10 @@ title="Permalink to Technology showcases">Technology showcases -

      Mon 31 October 2016 +
      Пн 31 Октябрь 2016 ru -

      TechShowcases

      +

      TechShowcases

      In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.

      2015 and 2016: live sessions.

      As you know, we use live sessions to show the state of our technology and create a small functional game from scratch. diff --git a/2017-happy-new-year-ru.html b/2017-happy-new-year-ru.html index 937905c..ee664c9 100644 --- a/2017-happy-new-year-ru.html +++ b/2017-happy-new-year-ru.html @@ -50,10 +50,10 @@ title="Permalink to Счастливого 2017-го">Счастливого 2017-го -

      Sat 31 December 2016 +
      Сб 31 Декабрь 2016 en -

      Happy new year

      +

      Happy new year

      Ну вот. Это был тяжелый год для всех в команде. И он почти закончен. Хвала окончанию старого! Хвала наступлению нового!

      Может показаться, что наш прогресс застопорился. Три года назад мы объявили о начале нового проекта (двух, если быть точным), но до сих пор мы работаем над движком и редактором, даже не начали делать ни Shuan, ни Mahjong 2.

      Если вы следили за новостями в течение года, вы знаете что мы провели несколько "живых сессий", демонстрируя в реальном времени как можно использовать наш инструментарий для создания простой игры. Каждая сессия была шагом в долгом пути к нашей цели. В процессе подготовки к ним, мы добавляли важные элементы, которые будут необходимы для создания любой игры.

      diff --git a/2017-happy-new-year.html b/2017-happy-new-year.html index fc6d293..2f0e80f 100644 --- a/2017-happy-new-year.html +++ b/2017-happy-new-year.html @@ -50,10 +50,10 @@ title="Permalink to Happy 2017">Happy 2017 -
      Sat 31 December 2016 +
      Сб 31 Декабрь 2016 ru -

      Happy new year

      +

      Happy new year

      Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!

      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.

      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.

      diff --git a/2017-summary-ru.html b/2017-summary-ru.html index c55dfe8..76f6aaa 100644 --- a/2017-summary-ru.html +++ b/2017-summary-ru.html @@ -50,10 +50,10 @@ title="Permalink to Итоги 2017-го">Итоги 2017-го -
      Wed 22 November 2017 +
      Ср 22 Ноябрь 2017 en -

      Screenshot

      +

      Screenshot

      Настало время сделать ревизию наших достижений в 2017 году и проверить, насколько они следуют основной цели проекта Opensource Game Studio.

      Краткая история

      Проекту Opensource Game Studio уже 12 лет.

      diff --git a/2017-summary.html b/2017-summary.html index 6ebc665..c32dbd9 100644 --- a/2017-summary.html +++ b/2017-summary.html @@ -50,10 +50,10 @@ title="Permalink to 2017 summary">2017 summary -
      Wed 22 November 2017 +
      Ср 22 Ноябрь 2017 ru -

      Screenshot

      +

      Screenshot

      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.

      Brief history

      Opensource Game Studio project is 12 years old now.

      diff --git a/2018-01-26-mahjong-recreation-start.png b/2018-01-26-mahjong-recreation-start.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc58c0934c1fdb50fc7d0f16b68487c5a1b6816 GIT binary patch literal 258036 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

      VT+D&rT;hk>>cx!gxN9Hh!03;Y#W|#Tt*(@0 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 R2ksgI0#8>zmvv4FO#t~j)~o;k literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 7bd1bd0..9cf26e9 100644 --- a/README.md +++ b/README.md @@ -42,5 +42,5 @@ The preview should now be available at `git push` The publich site should now be available at -[http://ogstudio.github.io](http://ogstudio.github.io). +[http://kaisd.github.io/ogs-site](http://kaisd.github.io/ogs-site). diff --git a/archives.html b/archives.html index ed57f34..bbf72b3 100644 --- a/archives.html +++ b/archives.html @@ -50,95 +50,99 @@

- + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/author/opensource-game-studio.html b/author/opensource-game-studio.html index 0764865..1ab4bea 100644 --- a/author/opensource-game-studio.html +++ b/author/opensource-game-studio.html @@ -47,55 +47,97 @@ +
+

Mahjong recreation start

+
Пт 26 Январь 2018 + ru + +

Screenshot

+

This article describes the start of Mahjong game recreation.

+

Plan

+

We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

+
    +
  • Load single layout
  • +
  • Place tiles in layout positions
  • +
  • Distinguish tiles
  • +
  • Implement selection
  • +
  • Implement matching
  • +
+

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.

+

Problem №1: provide binary resources across supported platforms

+

Mahjong is going to be available on desktop, mobile, and web. Each of these platforms has its constraints on accessing external files:

+
    +
  • Desktop can access almost any file
  • +
  • Android/iOS have limited access to file system
  • +
  • Web does not have any file system at all
  • +
+

To provide a unified way for accessing resources, we decided to include them into final executable. This decision led to the birth of mjin-resource and mahjong-data projects.

+

mjin-resource:

+
    +
  • converts binary files to C header files with the help of xxd utility
  • +
  • generates MJIN project that contains generated headers to be compiled into static library
  • +
  • provides C++ interface for accessing generated resources
  • +
+

mahjong-data is an example of such generated MJIN project that is referenced by mahjong project.

+

Problem №2: load PNG images across supported platforms

+

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 libpng, 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 OpenSceneGraph cross-platform guide to cover PNG image loading. We already got a request to describe image loading.

+

Development

+

As you know, 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 mahjong repository.

+

We also provide version history and web releases of each internal version for the following reasons:

+
    +
  • education: show how development looks like internally
  • +
  • accessibility: provide older versions for comparison
  • +
+

Current Mahjong game status

+

As of the time of this writing, we have implemented tile selection. Try it in your browser!

+

Once we finish tile matching implementation, we are going to publish the intermediate result for all supported platforms.

+

That's it for describing the start of Mahjong game recreation.

Category: News + +

+ + +
+ + +
+ + + + +

The year of lessons

-
Sun 31 December 2017 +
Вс 31 Декабрь 2017 ru -

Screenshot

+

Screenshot

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.

-

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.

-

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.

-

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).

-

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.

-

The Opensource Game Studio Team.

Category: News +

As it may be clear from ...

Category: News

-
- - + Read More
- +

2017 summary

-
Wed 22 November 2017 +
Ср 22 Ноябрь 2017 ru -

Screenshot

+

Screenshot

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.

Brief history

Opensource Game Studio project is 12 years old now.

-

2005. We started the project with a fanatic call to create the best game ever …

Category: News +

2005. We started the project with a fanatic call to create the best game ...

Category: News

@@ -109,13 +151,13 @@ next one. We wish everyone a Happy New Year. Stay tuned.

Back to the Static

-
Mon 16 October 2017 +
Пн 16 Октябрь 2017 ru -

Back to the Static

+

Back to the Static

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 …

Category: News +It seems that this is the technology ...

Category: News

@@ -129,10 +171,10 @@ It seems that this is the technology capable of …

Cate

The birth of MJIN world

-
Sun 10 September 2017 +
Вс 10 Сентябрь 2017 ru -

The birth of MJIN world

+

The birth of MJIN world

This article describes the birth of MJIN world in August 2017.

mjin-player

As you know, we spent July to research scripting. We found a solution that satisfies the following criteria. Scripts should:

@@ -140,7 +182,7 @@ It seems that this is the technology capable of …

Cate

  • run unchanged on all supported platforms
  • allow extending C++ code
  • -

    We have verified the second criterion by writing …

    Category: News +

    We have verified the second criterion by writing ...

    Category: News

    @@ -154,13 +196,13 @@ It seems that this is the technology capable of …

    Cate

    Scripting research

    -
    Wed 16 August 2017 +
    Ср 16 Август 2017 ru -

    Scripting research

    +

    Scripting research

    This article describes scripting research in July 2017.

    Our first goal of using a scripting language was to have a platform-independent code that runs unchanged on every supported platform.

    -

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any …

    Category: News +

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any ...

    Category: News

    @@ -174,13 +216,13 @@ It seems that this is the technology capable of …

    Cate

    OpenSceneGraph cross-platform guide

    -
    Mon 17 July 2017 +
    Пн 17 Июль 2017 ru -

    OpenSceneGraph guide

    +

    OpenSceneGraph guide

    This article summarizes the work we did to produce OpenSceneGraph cross-platform guide.

    June marked the finish of OpenSceneGraph cross-platform guide with the publishing of the last (initially planned) tutorial. The tutorial describes how to build and run sample OpenSceneGraph application in Web using Emscripten. -In case you missed it, here's …

    Category: News +In case you missed it, here ...

    Category: News

    @@ -194,12 +236,12 @@ In case you missed it, here's …

    Category:

    iOS tutorial

    -
    Thu 08 June 2017 +
    Чт 08 Июнь 2017 ru -

    iOS tutorial

    +

    iOS tutorial

    This article describes problems we faced during the creation of iOS tutorial in May 2017.

    -

    This February 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 …

    Category: News +

    This February 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 ...

    Category: News

    @@ -213,12 +255,12 @@ In case you missed it, here's …

    Category:

    OpenSceneGraph sample

    -
    Fri 12 May 2017 +
    Пт 12 Май 2017 ru -

    OSG sample

    +

    OSG sample

    This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.

    -

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application …

    Category: News +

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application ...

    Category: News

    @@ -232,13 +274,13 @@ In case you missed it, here's …

    Category:

    It's all fine

    -
    Fri 07 April 2017 +
    Пт 07 Апрель 2017 ru -

    ItsAllFine

    +

    ItsAllFine

    This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

    The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

    -

    The whole process of creating a single tutorial turned …

    Category: News +

    The whole process of creating a single tutorial turned ...

    Category: News

    @@ -247,26 +289,6 @@ In case you missed it, here's …

    Category:

    - - - -
    -

    Let's go

    -
    Thu 16 March 2017 - ru - -

    Let's go

    -

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    -

    Rendering under iOS/Web

    -

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the …

    Category: News - -

    - - - Read More -
    -
    -
    Page 1 of 3
    diff --git a/author/opensource-game-studio2.html b/author/opensource-game-studio2.html index 9ee081d..0fb0ce3 100644 --- a/author/opensource-game-studio2.html +++ b/author/opensource-game-studio2.html @@ -48,16 +48,36 @@ +
    +

    Let's go

    +
    Чт 16 Март 2017 + ru + +

    Let's go

    +

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    +

    Rendering under iOS/Web

    +

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the ...

    Category: News + +

    + + + Read More +
    +
    + + + +

    The year of challenges

    -
    Wed 25 January 2017 +
    Ср 25 Январь 2017 ru -

    The year of challenges

    +

    The year of challenges

    This article describes our plans for 2017.

    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:

    -

    Android rendering

    -

    Some people would consider this a failure. We don't. We see a chance …

    Category: News +

    Android rendering

    +

    Some people would consider this a failure. We don't. We see a ...

    Category: News

    @@ -71,12 +91,12 @@

    Happy 2017

    -
    Sat 31 December 2016 +
    Сб 31 Декабрь 2016 ru -

    Happy new year

    +

    Happy new year

    Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -90,12 +110,12 @@

    November 2016 recap

    -
    Thu 15 December 2016 +
    Чт 15 Декабрь 2016 ru -

    November recap

    +

    November recap

    This article describes the start of MJIN library separation into modules.

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -109,13 +129,13 @@

    October 2016 recap

    -
    Sat 19 November 2016 +
    Сб 19 Ноябрь 2016 ru -

    October recap

    +

    October recap

    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.

    First attempt to build OSG.

    -

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started …

    Category: News +

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started ...

    Category: News

    @@ -129,14 +149,14 @@

    Technology showcases

    -
    Mon 31 October 2016 +
    Пн 31 Октябрь 2016 ru -

    TechShowcases

    +

    TechShowcases

    In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.

    2015 and 2016: live sessions.

    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 …

    Category: News +We have conducted ...

    Category: News

    @@ -150,15 +170,15 @@ We have conducted …

    Category:

    September 2016 recap

    -
    Tue 11 October 2016 +
    Вт 11 Октябрь 2016 ru -

    September recap

    +

    September recap

    This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.

    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.

    1. -

      Draft. Game creation for the first time …

    Category: News +

    Draft. Game creation for the first ...

    Category: News

    @@ -172,14 +192,14 @@ We have conducted …

    Category:

    OGS Editor 0.10 and live session materials

    -
    Mon 03 October 2016 +
    Пн 03 Октябрь 2016 ru -

    ogs-editor-0.10

    +

    ogs-editor-0.10

    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.

    Category: News +

  • Mahjong Solitaire game is available at SourceForge, too ...
  • Category: News

    @@ -193,7 +213,7 @@ We have conducted …

    Category:

    A few words about live session yesterday

    -
    Mon 26 September 2016 +
    Пн 26 Сентябрь 2016 ru
    @@ -214,7 +234,7 @@ We will publish live session materials later this week.

    Live session is in 24 hours

    -
    Sat 24 September 2016 +
    Сб 24 Сентябрь 2016 ru
    @@ -228,26 +248,6 @@ We will publish live session materials later this week.


    - - - - -
    Page 2 of 3
    diff --git a/author/opensource-game-studio3.html b/author/opensource-game-studio3.html index 8fbfdc1..a8441c6 100644 --- a/author/opensource-game-studio3.html +++ b/author/opensource-game-studio3.html @@ -48,15 +48,35 @@ + + + + +

    August 2016 recap

    -
    Sat 03 September 2016 +
    Сб 03 Сентябрь 2016 ru -

    2016-august-recap

    +

    2016-august-recap

    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.

    UIQt module is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.

    -

    Here is a list …

    Category: News +

    Here is a list ...

    Category: News

    @@ -70,7 +90,7 @@

    We’re back to social networks

    -
    Thu 18 August 2016 +
    Чт 18 Август 2016 ru

    If you follow us on Facebook, Twitter, or VK 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.

    @@ -88,11 +108,11 @@

    Once Mahjong – always Mahjong

    -
    Wed 10 August 2016 +
    Ср 10 Август 2016 ru

    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.

    -

    It took us 3 years to reach the first goal …

    Category: News +

    It took us 3 years to reach the first goal ...

    Category: News

    diff --git a/back-to-social-networks-ru.html b/back-to-social-networks-ru.html index eeb04d9..f86d1a6 100644 --- a/back-to-social-networks-ru.html +++ b/back-to-social-networks-ru.html @@ -50,7 +50,7 @@ title="Permalink to Мы вернулись в социальные сети">Мы вернулись в социальные сети -
    Thu 18 August 2016 +
    Чт 18 Август 2016 en

    Если вы подписаны на нашу группу в Facebook, Twitter или VK, вы заметили, что мы начали использовать её снова. Это не случайно: мы наконец созрели для вербального общения после 4 лет молчаливой разработки.

    diff --git a/back-to-social-networks.html b/back-to-social-networks.html index 268eaa5..363a90d 100644 --- a/back-to-social-networks.html +++ b/back-to-social-networks.html @@ -50,7 +50,7 @@ title="Permalink to We’re back to social networks">We’re back to social networks -
    Thu 18 August 2016 +
    Чт 18 Август 2016 ru

    If you follow us on Facebook, Twitter, or VK 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.

    diff --git a/back-to-the-static-ru.html b/back-to-the-static-ru.html index 273e19c..9aa79df 100644 --- a/back-to-the-static-ru.html +++ b/back-to-the-static-ru.html @@ -50,10 +50,10 @@ title="Permalink to Назад в Статику">Назад в Статику -
    Mon 16 October 2017 +
    Пн 16 Октябрь 2017 en -

    Назад в Статику

    +

    Назад в Статику

    Мы используем Wordpress в качестве движка нашего сайта уже более семи лет. И теперь пришло время двигаться вперед. Или назад. Некоторое время мы следили за разработкой нового поколения движков - генераторов статических сайтов. Похоже, что это технология, способная превратить прошлое в будущее.

    diff --git a/back-to-the-static.html b/back-to-the-static.html index 8fb17df..8306dde 100644 --- a/back-to-the-static.html +++ b/back-to-the-static.html @@ -50,10 +50,10 @@ title="Permalink to Back to the Static">Back to the Static -
    Mon 16 October 2017 +
    Пн 16 Октябрь 2017 ru -

    Back to the Static

    +

    Back to the Static

    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.

    diff --git a/category/news.html b/category/news.html index 4efeed6..13fd4cd 100644 --- a/category/news.html +++ b/category/news.html @@ -47,55 +47,97 @@ +
    +

    Mahjong recreation start

    +
    Пт 26 Январь 2018 + ru + +

    Screenshot

    +

    This article describes the start of Mahjong game recreation.

    +

    Plan

    +

    We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

    +
      +
    • Load single layout
    • +
    • Place tiles in layout positions
    • +
    • Distinguish tiles
    • +
    • Implement selection
    • +
    • Implement matching
    • +
    +

    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.

    +

    Problem №1: provide binary resources across supported platforms

    +

    Mahjong is going to be available on desktop, mobile, and web. Each of these platforms has its constraints on accessing external files:

    +
      +
    • Desktop can access almost any file
    • +
    • Android/iOS have limited access to file system
    • +
    • Web does not have any file system at all
    • +
    +

    To provide a unified way for accessing resources, we decided to include them into final executable. This decision led to the birth of mjin-resource and mahjong-data projects.

    +

    mjin-resource:

    +
      +
    • converts binary files to C header files with the help of xxd utility
    • +
    • generates MJIN project that contains generated headers to be compiled into static library
    • +
    • provides C++ interface for accessing generated resources
    • +
    +

    mahjong-data is an example of such generated MJIN project that is referenced by mahjong project.

    +

    Problem №2: load PNG images across supported platforms

    +

    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 libpng, 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 OpenSceneGraph cross-platform guide to cover PNG image loading. We already got a request to describe image loading.

    +

    Development

    +

    As you know, 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 mahjong repository.

    +

    We also provide version history and web releases of each internal version for the following reasons:

    +
      +
    • education: show how development looks like internally
    • +
    • accessibility: provide older versions for comparison
    • +
    +

    Current Mahjong game status

    +

    As of the time of this writing, we have implemented tile selection. Try it in your browser!

    +

    Once we finish tile matching implementation, we are going to publish the intermediate result for all supported platforms.

    +

    That's it for describing the start of Mahjong game recreation.

    Category: News + +

    + + +
    + + +
    + + + + +

    The year of lessons

    -
    Sun 31 December 2017 +
    Вс 31 Декабрь 2017 ru -

    Screenshot

    +

    Screenshot

    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.

    -

    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.

    -

    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.

    -

    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).

    -

    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.

    -

    The Opensource Game Studio Team.

    Category: News +

    As it may be clear from ...

    Category: News

    -
    - - + Read More
    - +

    2017 summary

    -
    Wed 22 November 2017 +
    Ср 22 Ноябрь 2017 ru -

    Screenshot

    +

    Screenshot

    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.

    Brief history

    Opensource Game Studio project is 12 years old now.

    -

    2005. We started the project with a fanatic call to create the best game ever …

    Category: News +

    2005. We started the project with a fanatic call to create the best game ...

    Category: News

    @@ -109,13 +151,13 @@ next one. We wish everyone a Happy New Year. Stay tuned.

    Back to the Static

    -
    Mon 16 October 2017 +
    Пн 16 Октябрь 2017 ru -

    Back to the Static

    +

    Back to the Static

    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 …

    Category: News +It seems that this is the technology ...

    Category: News

    @@ -129,10 +171,10 @@ It seems that this is the technology capable of …

    Cate

    The birth of MJIN world

    -
    Sun 10 September 2017 +
    Вс 10 Сентябрь 2017 ru -

    The birth of MJIN world

    +

    The birth of MJIN world

    This article describes the birth of MJIN world in August 2017.

    mjin-player

    As you know, we spent July to research scripting. We found a solution that satisfies the following criteria. Scripts should:

    @@ -140,7 +182,7 @@ It seems that this is the technology capable of …

    Cate

  • run unchanged on all supported platforms
  • allow extending C++ code
  • -

    We have verified the second criterion by writing …

    Category: News +

    We have verified the second criterion by writing ...

    Category: News

    @@ -154,13 +196,13 @@ It seems that this is the technology capable of …

    Cate

    Scripting research

    -
    Wed 16 August 2017 +
    Ср 16 Август 2017 ru -

    Scripting research

    +

    Scripting research

    This article describes scripting research in July 2017.

    Our first goal of using a scripting language was to have a platform-independent code that runs unchanged on every supported platform.

    -

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any …

    Category: News +

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any ...

    Category: News

    @@ -174,13 +216,13 @@ It seems that this is the technology capable of …

    Cate

    OpenSceneGraph cross-platform guide

    -
    Mon 17 July 2017 +
    Пн 17 Июль 2017 ru -

    OpenSceneGraph guide

    +

    OpenSceneGraph guide

    This article summarizes the work we did to produce OpenSceneGraph cross-platform guide.

    June marked the finish of OpenSceneGraph cross-platform guide with the publishing of the last (initially planned) tutorial. The tutorial describes how to build and run sample OpenSceneGraph application in Web using Emscripten. -In case you missed it, here's …

    Category: News +In case you missed it, here ...

    Category: News

    @@ -194,12 +236,12 @@ In case you missed it, here's …

    Category:

    iOS tutorial

    -
    Thu 08 June 2017 +
    Чт 08 Июнь 2017 ru -

    iOS tutorial

    +

    iOS tutorial

    This article describes problems we faced during the creation of iOS tutorial in May 2017.

    -

    This February 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 …

    Category: News +

    This February 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 ...

    Category: News

    @@ -213,12 +255,12 @@ In case you missed it, here's …

    Category:

    OpenSceneGraph sample

    -
    Fri 12 May 2017 +
    Пт 12 Май 2017 ru -

    OSG sample

    +

    OSG sample

    This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.

    -

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application …

    Category: News +

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application ...

    Category: News

    @@ -232,13 +274,13 @@ In case you missed it, here's …

    Category:

    It's all fine

    -
    Fri 07 April 2017 +
    Пт 07 Апрель 2017 ru -

    ItsAllFine

    +

    ItsAllFine

    This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

    The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

    -

    The whole process of creating a single tutorial turned …

    Category: News +

    The whole process of creating a single tutorial turned ...

    Category: News

    @@ -247,26 +289,6 @@ In case you missed it, here's …

    Category:

    - - - -
    -

    Let's go

    -
    Thu 16 March 2017 - ru - -

    Let's go

    -

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    -

    Rendering under iOS/Web

    -

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the …

    Category: News - -

    - - - Read More -
    -
    -
    Page 1 of 3
    diff --git a/category/news2.html b/category/news2.html index 7f87f09..dccf79f 100644 --- a/category/news2.html +++ b/category/news2.html @@ -48,16 +48,36 @@ +
    +

    Let's go

    +
    Чт 16 Март 2017 + ru + +

    Let's go

    +

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    +

    Rendering under iOS/Web

    +

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the ...

    Category: News + +

    + + + Read More +
    +
    + + + +

    The year of challenges

    -
    Wed 25 January 2017 +
    Ср 25 Январь 2017 ru -

    The year of challenges

    +

    The year of challenges

    This article describes our plans for 2017.

    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:

    -

    Android rendering

    -

    Some people would consider this a failure. We don't. We see a chance …

    Category: News +

    Android rendering

    +

    Some people would consider this a failure. We don't. We see a ...

    Category: News

    @@ -71,12 +91,12 @@

    Happy 2017

    -
    Sat 31 December 2016 +
    Сб 31 Декабрь 2016 ru -

    Happy new year

    +

    Happy new year

    Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -90,12 +110,12 @@

    November 2016 recap

    -
    Thu 15 December 2016 +
    Чт 15 Декабрь 2016 ru -

    November recap

    +

    November recap

    This article describes the start of MJIN library separation into modules.

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -109,13 +129,13 @@

    October 2016 recap

    -
    Sat 19 November 2016 +
    Сб 19 Ноябрь 2016 ru -

    October recap

    +

    October recap

    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.

    First attempt to build OSG.

    -

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started …

    Category: News +

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started ...

    Category: News

    @@ -129,14 +149,14 @@

    Technology showcases

    -
    Mon 31 October 2016 +
    Пн 31 Октябрь 2016 ru -

    TechShowcases

    +

    TechShowcases

    In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.

    2015 and 2016: live sessions.

    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 …

    Category: News +We have conducted ...

    Category: News

    @@ -150,15 +170,15 @@ We have conducted …

    Category:

    September 2016 recap

    -
    Tue 11 October 2016 +
    Вт 11 Октябрь 2016 ru -

    September recap

    +

    September recap

    This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.

    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.

    1. -

      Draft. Game creation for the first time …

    Category: News +

    Draft. Game creation for the first ...

    Category: News

    @@ -172,14 +192,14 @@ We have conducted …

    Category:

    OGS Editor 0.10 and live session materials

    -
    Mon 03 October 2016 +
    Пн 03 Октябрь 2016 ru -

    ogs-editor-0.10

    +

    ogs-editor-0.10

    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.

    Category: News +

  • Mahjong Solitaire game is available at SourceForge, too ...
  • Category: News

    @@ -193,7 +213,7 @@ We have conducted …

    Category:

    A few words about live session yesterday

    -
    Mon 26 September 2016 +
    Пн 26 Сентябрь 2016 ru
    @@ -214,7 +234,7 @@ We will publish live session materials later this week.

    Live session is in 24 hours

    -
    Sat 24 September 2016 +
    Сб 24 Сентябрь 2016 ru
    @@ -228,26 +248,6 @@ We will publish live session materials later this week.


    - - - - -
    Page 2 of 3
    diff --git a/category/news3.html b/category/news3.html index 9219945..6078fa8 100644 --- a/category/news3.html +++ b/category/news3.html @@ -48,15 +48,35 @@ + + + + +

    August 2016 recap

    -
    Sat 03 September 2016 +
    Сб 03 Сентябрь 2016 ru -

    2016-august-recap

    +

    2016-august-recap

    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.

    UIQt module is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.

    -

    Here is a list …

    Category: News +

    Here is a list ...

    Category: News

    @@ -70,7 +90,7 @@

    We’re back to social networks

    -
    Thu 18 August 2016 +
    Чт 18 Август 2016 ru

    If you follow us on Facebook, Twitter, or VK 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.

    @@ -88,11 +108,11 @@

    Once Mahjong – always Mahjong

    -
    Wed 10 August 2016 +
    Ср 10 Август 2016 ru

    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.

    -

    It took us 3 years to reach the first goal …

    Category: News +

    It took us 3 years to reach the first goal ...

    Category: News

    diff --git a/feeds/all.atom.xml b/feeds/all.atom.xml index 1c3a112..b10a962 100644 --- a/feeds/all.atom.xml +++ b/feeds/all.atom.xml @@ -1,10 +1,85 @@ -Opensource Game Studiohttp://opengamestudio.org/2017-12-31T22:00:00+03:00The 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> +Opensource Game Studiohttp://opengamestudio.org/2018-01-26T00:00:00+03:00Mahjong recreation start2018-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 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: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><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: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 @@ -24,12 +99,7 @@ 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>The Opensource Game Studio Team.</p>Год новых уроков2017-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> @@ -47,11 +117,7 @@ next one. We wish everyone a Happy New Year. Stay tuned.</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>Команда Opensource Game Studio.</p>2017 summary2017-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> @@ -68,11 +134,7 @@ The project was in a constant turmoil because we had no clear purpose and discip <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>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: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> @@ -88,34 +150,19 @@ The project was in a constant turmoil because we had no clear purpose and discip <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>На текущий момент MJIN лишь начинает развитие. Этому инструменту нужна настоящая игра, чтобы расцвести. Поэтому мы уже работаем над Маджонгом, который будет радовать вас и на настольных компьютерах, и на мобильных платформах, и в вебе. На этот раз мы постараемся сделать Маджонг быстрее. </p>Back to the Static2017-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 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> +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: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>Статический веб-сайт проще, быстрее и безопаснее. И с помощью генераторов им настолько же легко управлять, как и динамическим веб-сайтом. Так что мы начинаем наш сайт заново с помощью [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>The birth of MJIN world2017-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> @@ -135,15 +182,7 @@ Right now it doesn't have all the content from our old site, but we'll add most <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>That's it for describing the birth of MJIN world in August 2017.</p>Рождение вселенной MJIN2017-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> @@ -163,10 +202,7 @@ Right now it doesn't have all the content from our old site, but we'll add most <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>На этом мы заканчиваем описание рождения вселенной MJIN в августе 2017.</p>Scripting research2017-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 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> @@ -195,10 +231,7 @@ Next, we tried to inherit a class in Lua and override the class methods. We fail <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>That's it for describing scripting research in July 2017.</p>Изучение скриптования2017-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, Lua, Java, C# и т.д.. SWIG помог нам впервые оценить прелесть платформо-независимого кода. К сожалению, SWIG работает лишь в одном направлении: из C/C++ в язык назначения. Это приводит к тому, что основное приложение должно быть написано на языке назначения, а код C/C++ может быть использован лишь в виде библиотеки.</p> @@ -225,10 +258,7 @@ Next, we tried to inherit a class in Lua and override the class methods. We fail <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>На этом мы заканчиваем описание изучения скриптования в июле 2017.</p>OpenSceneGraph cross-platform guide2017-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 a <a href="https://ogstudio.github.io/openscenegraph-cross-platform-guide/">link to the final application</a>. Open it in your web browser.</p> @@ -247,10 +277,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>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: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> @@ -269,9 +296,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>На этом мы заканчиваем резюме о создании кросс-платформенного руководства OpenSceneGraph.</p>iOS tutorial2017-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 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> @@ -310,9 +335,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>That's it for describing problems we faced during the creation of iOS tutorial in May 2017.</p>Самоучитель iOS2017-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> <h3>Нативная библиотека</h3> @@ -351,9 +374,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>На этом мы заканчиваем описание проблем, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>OpenSceneGraph sample2017-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> that would run under Linux, macOS, Windows, and Android.</p> <p>The application is very basic and has the following features:</p> @@ -387,9 +408,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>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: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 и Android.</p> <p>Приложение очень простое. Оно умеет следующее:</p> @@ -423,10 +442,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>На этом мы заканчиваем описание создания самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p>It's all fine2017-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 out to be pretty daunting because it includes several tasks:</p> @@ -444,10 +460,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>That's it for describing creation of the first four OpenSceneGraph tutorials in March 2017.</p>Всё проходит хорошо2017-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> @@ -465,10 +478,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>На этом мы заканчиваем рассказ о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.</p>Let's go2017-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 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> @@ -482,7 +492,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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 +<div class="highlight"><pre>background bg.png text 5 Let&#39;s install Blender video 0:6 install_blender.mp4 text 5 Installing it with apt @@ -494,10 +504,7 @@ text 5 Congratulations! We just finished installing Blender <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>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: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> довольно быстро: в начале февраля. Тем не менее, это лишь начало поддержки платформ Android, iOS и Веб. Впереди нас ждёт тернистая дорога, т.к. нам предстоит сделать ещё много вещей, прежде чем мы сможем объявить о полноценной поддержке этих платформ: визуальные эффекты, скрипты Python, архивы данных.</p> @@ -511,7 +518,7 @@ text 5 Congratulations! We just finished installing Blender </ul> <p>Т.к. руководство по использованию OpenSceneGraph будет состоять из нескольких самоучителей, мы решили автоматизировать процесс. Быстрый поиск рассказал нам о существовании замечательного мультимедийного фреймворка <a href="http://mltframework.org">MLT</a>, который используется и в OpenShot. С помощью MLT мы быстро сделали свой инструмент для создания самоучителей.</p> <p>На текущий момент наш инструмент позволяет совместить видео и текст с помощью простого текстового файла:</p> -<div class="highlight"><pre><span></span>background bg.png +<div class="highlight"><pre>background bg.png text 5 Let&#39;s install Blender video 0:6 install_blender.mp4 text 5 Installing it with apt @@ -523,37 +530,27 @@ text 5 Congratulations! We just finished installing Blender <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>На этом мы заканчиваем рассказ о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>The year of challenges2017-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><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>That's it for describing our plans for 2017.</p>Год испытаний2017-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><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>На этом мы заканчиваем описание наших планов на 2017 год.</p>Happy 20172016-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 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> @@ -562,9 +559,7 @@ At the same time, such a harsh environment highlighted weak spots in our technol 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>Happy 2017. Let it be simple.</p>Счастливого 2017-го2016-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>Может показаться, что наш прогресс застопорился. Три года назад мы объявили о начале нового проекта (двух, если быть точным), но до сих пор мы работаем над движком и редактором, даже не начали делать ни Shuan, ни Mahjong 2.</p> <p>Если вы следили за новостями в течение года, вы знаете что мы провели несколько "живых сессий", демонстрируя в реальном времени как можно использовать наш инструментарий для создания простой игры. Каждая сессия была шагом в долгом пути к нашей цели. В процессе подготовки к ним, мы добавляли важные элементы, которые будут необходимы для создания любой игры.</p> @@ -573,9 +568,7 @@ We will. Stay tuned.</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>Счастливого 2017-го. Пусть он будет простым.</p>November 2016 recap2016-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 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. @@ -604,10 +597,7 @@ The easiest way to achieve it was to use C API, because C ABI rules are much sim </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>That's it for describing the start of MJIN library separation into modules.</p>Ноябрь 2016 кратко2016-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>Мы решили рассмотреть два подхода к разделению MJIN на модули: во время сборки (build-time) и исполнения (run-time). @@ -637,10 +627,7 @@ The easiest way to achieve it was to use C API, because C ABI rules are much sim </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>На этом мы заканчиваем статью о начале разделения библиотеки MJIN на модули.</p>October 2016 recap2016-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 doing beginner tutorials. @@ -670,11 +657,7 @@ In a few days, we gradually updated both OSG and Android tools to their latest v <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>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: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 и начали проходить самоучители для начинающих. @@ -705,11 +688,7 @@ Java далась легко. Всё работало из коробки. За <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>На этом мы заканчиваем описание того, как мы потратили месяц на сборку OSG под Android: первая попытка собрать OSG, поиск альтернатив OSG и успех в сборке OSG.</p>Technology showcases2016-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. @@ -779,11 +758,7 @@ Why? We want to spend more time on actual development!</p> <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>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: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>Как вы знаете, в ходе демонстраций мы в прямом эфире показываем состояние наших технологий и собираем небольшую работающую игру с нуля. @@ -853,12 +828,7 @@ Why? We want to spend more time on actual development!</p> <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>На этом мы заканчиваем рассказ о формате демонстраций в 2015-2016 годах, а также о новом формате 2017-го.</p>September 2016 recap2016-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> @@ -898,15 +868,7 @@ Why? We want to spend more time on actual development!</p> <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>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: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> @@ -946,69 +908,39 @@ Why? We want to spend more time on actual development!</p> <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>На этом мы заканчиваем описание стадий по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>OGS Editor 0.10 and live session materials2016-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 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"> +</ul>OGS Editor 0.10 и материалы прямого эфира2016-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> <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> +</ul>A few words about live session yesterday2016-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>Пара слов о вчерашнем прямом эфире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>Thank you for joining us.</p>Пара слов о вчерашнем прямом эфире2016-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>Спасибо за участие.</p>Live session is in 24 hours2016-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>Создание пасьянса Маджонг прошло успешно, и заняло менее 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>Прямой эфир через 24 часа2016-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>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&amp;iso=20160925T12&amp;p1=37&amp;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>Приготовьтесь к <a href="https://www.livecoding.tv/kornerr">прямому эфиру</a>, он начнётся через 24 часа!</p>Live session: 25 September 20162016-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&amp;iso=20160925T12&amp;p1=37&amp;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&amp;iso=20160925T13&amp;p1=166&amp;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> +It's time to create simple Mahjong solitaire game.</p>Прямой эфир: 25 сентября 20162016-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&amp;iso=20160925T13&amp;p1=166&amp;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>August 2016 recap2016-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 of UIQt module components with their description and current code size:<table> @@ -1182,14 +1114,7 @@ It's time to create simple Mahjong solitaire game.</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>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: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> @@ -1363,18 +1288,14 @@ It's time to create simple Mahjong solitaire game.</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>На этом мы заканчиваем описание самых важных технических деталей разработки за август: модуль UIQt, его переработку, новый подход к разработке на основе функционала и его преимущества.</p>We’re back to social networks2016-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>Мы вернулись в социальные сети2016-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>Once Mahjong – always Mahjong2016-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: 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>Join our next live session in September.</p>Раз Маджонг – всегда Маджонг2016-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 состоялся в 2012 году. Даже для хобби-проекта (мы тратим в среднем около 40 часов в месяц) это очень долго.</p> <p>После выпуска игры до нас дошло: <strong>Средства для создания игр должны экономить время разработки</strong>.</p> <p>Мы потратили ещё 4 года на их разработку. Пришло время доказать, что они стоят каждого затраченного дня. Как? Мы <strong>воссоздадим режим "пасьянс Маджонг"</strong> за считанные часы!</p> -<p>Присоединяйтесь к нашему следующему прямому эфиру в сентябре.</p> \ No newline at end of file +<p>Присоединяйтесь к нашему следующему прямому эфиру в сентябре.</p> \ No newline at end of file diff --git a/feeds/news.atom.xml b/feeds/news.atom.xml index 1e1d8e2..7d89d83 100644 --- a/feeds/news.atom.xml +++ b/feeds/news.atom.xml @@ -1,10 +1,45 @@ -Opensource Game Studio - Newshttp://opengamestudio.org/2017-12-31T22:00:00+03:00The 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> +Opensource Game Studiohttp://opengamestudio.org/2018-01-26T00:00:00+03:00Mahjong recreation start2018-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 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>The year of lessons2017-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 @@ -24,11 +59,7 @@ 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 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>The Opensource Game Studio Team.</p>2017 summary2017-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> @@ -45,24 +76,13 @@ The project was in a constant turmoil because we had no clear purpose and discip <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>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>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>Back to the Static2017-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 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>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> +Right now it doesn't have all the content from our old site, but we'll add most of it soon.</p>The birth of MJIN world2017-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> @@ -82,10 +102,7 @@ Right now it doesn't have all the content from our old site, but we'll add most <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>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>That's it for describing the birth of MJIN world in August 2017.</p>Scripting research2017-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 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> @@ -114,10 +131,7 @@ Next, we tried to inherit a class in Lua and override the class methods. We fail <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>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>That's it for describing scripting research in July 2017.</p>OpenSceneGraph cross-platform guide2017-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 a <a href="https://ogstudio.github.io/openscenegraph-cross-platform-guide/">link to the final application</a>. Open it in your web browser.</p> @@ -136,9 +150,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>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>That's it for summarizing the work we did to produce OpenSceneGraph cross-platform guide.</p>iOS tutorial2017-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 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> @@ -177,9 +189,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>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>That's it for describing problems we faced during the creation of iOS tutorial in May 2017.</p>OpenSceneGraph sample2017-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> that would run under Linux, macOS, Windows, and Android.</p> <p>The application is very basic and has the following features:</p> @@ -213,10 +223,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g <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>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>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>It's all fine2017-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 out to be pretty daunting because it includes several tasks:</p> @@ -234,10 +241,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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>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>That's it for describing creation of the first four OpenSceneGraph tutorials in March 2017.</p>Let's go2017-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 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> @@ -251,7 +255,7 @@ We spent 120 hours in five months to produce ten tutorials of the guide.</p&g </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 +<div class="highlight"><pre>background bg.png text 5 Let&#39;s install Blender video 0:6 install_blender.mp4 text 5 Installing it with apt @@ -263,23 +267,17 @@ text 5 Congratulations! We just finished installing Blender <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>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>That's it for describing our progress in January and February of 2017: rendering under iOS/Web and the new tutorial tool.</p>The year of challenges2017-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><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>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>That's it for describing our plans for 2017.</p>Happy 20172016-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 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> @@ -288,9 +286,7 @@ At the same time, such a harsh environment highlighted weak spots in our technol 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>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>Happy 2017. Let it be simple.</p>November 2016 recap2016-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 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. @@ -319,10 +315,7 @@ The easiest way to achieve it was to use C API, because C ABI rules are much sim </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>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>That's it for describing the start of MJIN library separation into modules.</p>October 2016 recap2016-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 doing beginner tutorials. @@ -352,11 +345,7 @@ In a few days, we gradually updated both OSG and Android tools to their latest v <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>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>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>Technology showcases2016-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. @@ -426,12 +415,7 @@ Why? We want to spend more time on actual development!</p> <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>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>That's it for taking another look at 2015-2016 live sessions' format and introducing the new showcase format for 2017.</p>September 2016 recap2016-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> @@ -471,39 +455,23 @@ Why? We want to spend more time on actual development!</p> <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>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>That's it for explaining September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p>OGS Editor 0.10 and live session materials2016-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 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>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> +</ul>A few words about live session yesterday2016-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>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>Thank you for joining us.</p>Live session is in 24 hours2016-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>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>Get ready for <a href="https://www.livecoding.tv/kornerr">live session</a>, it's about to happen in 24 hours!</p>Live session: 25 September 20162016-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&amp;iso=20160925T12&amp;p1=37&amp;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&amp;iso=20160925T12&amp;p1=37&amp;ah=2">25 September 2016 at 12:00 CEST</a> -It's time to create simple Mahjong solitaire game.</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> +It's time to create simple Mahjong solitaire game.</p>August 2016 recap2016-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 of UIQt module components with their description and current code size:<table> @@ -677,11 +645,9 @@ It's time to create simple Mahjong solitaire game.</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>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>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>We’re back to social networks2016-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>Once Mahjong – always Mahjong2016-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: 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> \ No newline at end of file +<p>Join our next live session in September.</p> \ No newline at end of file diff --git a/index.html b/index.html index 661b983..d26567a 100644 --- a/index.html +++ b/index.html @@ -47,55 +47,97 @@ +
    +

    Mahjong recreation start

    +
    Пт 26 Январь 2018 + ru + +

    Screenshot

    +

    This article describes the start of Mahjong game recreation.

    +

    Plan

    +

    We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

    +
      +
    • Load single layout
    • +
    • Place tiles in layout positions
    • +
    • Distinguish tiles
    • +
    • Implement selection
    • +
    • Implement matching
    • +
    +

    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.

    +

    Problem №1: provide binary resources across supported platforms

    +

    Mahjong is going to be available on desktop, mobile, and web. Each of these platforms has its constraints on accessing external files:

    +
      +
    • Desktop can access almost any file
    • +
    • Android/iOS have limited access to file system
    • +
    • Web does not have any file system at all
    • +
    +

    To provide a unified way for accessing resources, we decided to include them into final executable. This decision led to the birth of mjin-resource and mahjong-data projects.

    +

    mjin-resource:

    +
      +
    • converts binary files to C header files with the help of xxd utility
    • +
    • generates MJIN project that contains generated headers to be compiled into static library
    • +
    • provides C++ interface for accessing generated resources
    • +
    +

    mahjong-data is an example of such generated MJIN project that is referenced by mahjong project.

    +

    Problem №2: load PNG images across supported platforms

    +

    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 libpng, 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 OpenSceneGraph cross-platform guide to cover PNG image loading. We already got a request to describe image loading.

    +

    Development

    +

    As you know, 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 mahjong repository.

    +

    We also provide version history and web releases of each internal version for the following reasons:

    +
      +
    • education: show how development looks like internally
    • +
    • accessibility: provide older versions for comparison
    • +
    +

    Current Mahjong game status

    +

    As of the time of this writing, we have implemented tile selection. Try it in your browser!

    +

    Once we finish tile matching implementation, we are going to publish the intermediate result for all supported platforms.

    +

    That's it for describing the start of Mahjong game recreation.

    Category: News + +

    + + +
    + + +
    + + + + +

    The year of lessons

    -
    Sun 31 December 2017 +
    Вс 31 Декабрь 2017 ru -

    Screenshot

    +

    Screenshot

    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.

    -

    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.

    -

    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.

    -

    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).

    -

    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.

    -

    The Opensource Game Studio Team.

    Category: News +

    As it may be clear from ...

    Category: News

    -
    - - + Read More
    - +

    2017 summary

    -
    Wed 22 November 2017 +
    Ср 22 Ноябрь 2017 ru -

    Screenshot

    +

    Screenshot

    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.

    Brief history

    Opensource Game Studio project is 12 years old now.

    -

    2005. We started the project with a fanatic call to create the best game ever …

    Category: News +

    2005. We started the project with a fanatic call to create the best game ...

    Category: News

    @@ -109,13 +151,13 @@ next one. We wish everyone a Happy New Year. Stay tuned.

    Back to the Static

    -
    Mon 16 October 2017 +
    Пн 16 Октябрь 2017 ru -

    Back to the Static

    +

    Back to the Static

    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 …

    Category: News +It seems that this is the technology ...

    Category: News

    @@ -129,10 +171,10 @@ It seems that this is the technology capable of …

    Cate

    The birth of MJIN world

    -
    Sun 10 September 2017 +
    Вс 10 Сентябрь 2017 ru -

    The birth of MJIN world

    +

    The birth of MJIN world

    This article describes the birth of MJIN world in August 2017.

    mjin-player

    As you know, we spent July to research scripting. We found a solution that satisfies the following criteria. Scripts should:

    @@ -140,7 +182,7 @@ It seems that this is the technology capable of …

    Cate

  • run unchanged on all supported platforms
  • allow extending C++ code
  • -

    We have verified the second criterion by writing …

    Category: News +

    We have verified the second criterion by writing ...

    Category: News

    @@ -154,13 +196,13 @@ It seems that this is the technology capable of …

    Cate

    Scripting research

    -
    Wed 16 August 2017 +
    Ср 16 Август 2017 ru -

    Scripting research

    +

    Scripting research

    This article describes scripting research in July 2017.

    Our first goal of using a scripting language was to have a platform-independent code that runs unchanged on every supported platform.

    -

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any …

    Category: News +

    OGS Editor 0.10 supports Python for such a code thanks to SWIG. SWIG provides a way to wrap almost any ...

    Category: News

    @@ -174,13 +216,13 @@ It seems that this is the technology capable of …

    Cate

    OpenSceneGraph cross-platform guide

    -
    Mon 17 July 2017 +
    Пн 17 Июль 2017 ru -

    OpenSceneGraph guide

    +

    OpenSceneGraph guide

    This article summarizes the work we did to produce OpenSceneGraph cross-platform guide.

    June marked the finish of OpenSceneGraph cross-platform guide with the publishing of the last (initially planned) tutorial. The tutorial describes how to build and run sample OpenSceneGraph application in Web using Emscripten. -In case you missed it, here's …

    Category: News +In case you missed it, here ...

    Category: News

    @@ -194,12 +236,12 @@ In case you missed it, here's …

    Category:

    iOS tutorial

    -
    Thu 08 June 2017 +
    Чт 08 Июнь 2017 ru -

    iOS tutorial

    +

    iOS tutorial

    This article describes problems we faced during the creation of iOS tutorial in May 2017.

    -

    This February 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 …

    Category: News +

    This February 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 ...

    Category: News

    @@ -213,12 +255,12 @@ In case you missed it, here's …

    Category:

    OpenSceneGraph sample

    -
    Fri 12 May 2017 +
    Пт 12 Май 2017 ru -

    OSG sample

    +

    OSG sample

    This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.

    -

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application …

    Category: News +

    Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application ...

    Category: News

    @@ -232,13 +274,13 @@ In case you missed it, here's …

    Category:

    It's all fine

    -
    Fri 07 April 2017 +
    Пт 07 Апрель 2017 ru -

    ItsAllFine

    +

    ItsAllFine

    This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

    The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

    -

    The whole process of creating a single tutorial turned …

    Category: News +

    The whole process of creating a single tutorial turned ...

    Category: News

    @@ -247,26 +289,6 @@ In case you missed it, here's …

    Category:

    - - - -
    -

    Let's go

    -
    Thu 16 March 2017 - ru - -

    Let's go

    -

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    -

    Rendering under iOS/Web

    -

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the …

    Category: News - -

    - - - Read More -
    -
    -
    Page 1 of 3
    diff --git a/index2.html b/index2.html index 5468831..5aa3fcb 100644 --- a/index2.html +++ b/index2.html @@ -48,16 +48,36 @@ +
    +

    Let's go

    +
    Чт 16 Март 2017 + ru + +

    Let's go

    +

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    +

    Rendering under iOS/Web

    +

    To our surprise, we got a simple red cube rendered under iOS and Web pretty fast: in early February. However, this is only the ...

    Category: News + +

    + + + Read More +
    +
    + + + +

    The year of challenges

    -
    Wed 25 January 2017 +
    Ср 25 Январь 2017 ru -

    The year of challenges

    +

    The year of challenges

    This article describes our plans for 2017.

    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:

    -

    Android rendering

    -

    Some people would consider this a failure. We don't. We see a chance …

    Category: News +

    Android rendering

    +

    Some people would consider this a failure. We don't. We see a ...

    Category: News

    @@ -71,12 +91,12 @@

    Happy 2017

    -
    Sat 31 December 2016 +
    Сб 31 Декабрь 2016 ru -

    Happy new year

    +

    Happy new year

    Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -90,12 +110,12 @@

    November 2016 recap

    -
    Thu 15 December 2016 +
    Чт 15 Декабрь 2016 ru -

    November recap

    +

    November recap

    This article describes the start of MJIN library separation into modules.

    -

    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 …

    Category: News +

    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 ...

    Category: News

    @@ -109,13 +129,13 @@

    October 2016 recap

    -
    Sat 19 November 2016 +
    Сб 19 Ноябрь 2016 ru -

    October recap

    +

    October recap

    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.

    First attempt to build OSG.

    -

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started …

    Category: News +

    Having no prior knowledge of Android development, we grabbed the latest Android Studio and started ...

    Category: News

    @@ -129,14 +149,14 @@

    Technology showcases

    -
    Mon 31 October 2016 +
    Пн 31 Октябрь 2016 ru -

    TechShowcases

    +

    TechShowcases

    In this article, we take another look at 2015-2016 live sessions' format and introduce a new showcase format for 2017.

    2015 and 2016: live sessions.

    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 …

    Category: News +We have conducted ...

    Category: News

    @@ -150,15 +170,15 @@ We have conducted …

    Category:

    September 2016 recap

    -
    Tue 11 October 2016 +
    Вт 11 Октябрь 2016 ru -

    September recap

    +

    September recap

    This article explains September 2016 live session stages: draft, rehearsal, live session itself, and publishing.

    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.

    1. -

      Draft. Game creation for the first time …

    Category: News +

    Draft. Game creation for the first ...

    Category: News

    @@ -172,14 +192,14 @@ We have conducted …

    Category:

    OGS Editor 0.10 and live session materials

    -
    Mon 03 October 2016 +
    Пн 03 Октябрь 2016 ru -

    ogs-editor-0.10

    +

    ogs-editor-0.10

    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.

    Category: News +

  • Mahjong Solitaire game is available at SourceForge, too ...
  • Category: News

    @@ -193,7 +213,7 @@ We have conducted …

    Category:

    A few words about live session yesterday

    -
    Mon 26 September 2016 +
    Пн 26 Сентябрь 2016 ru
    @@ -214,7 +234,7 @@ We will publish live session materials later this week.

    Live session is in 24 hours

    -
    Sat 24 September 2016 +
    Сб 24 Сентябрь 2016 ru
    @@ -228,26 +248,6 @@ We will publish live session materials later this week.


    - - - - -
    Page 2 of 3
    diff --git a/index3.html b/index3.html index 1640f16..7cb1aee 100644 --- a/index3.html +++ b/index3.html @@ -48,15 +48,35 @@ + + + + +

    August 2016 recap

    -
    Sat 03 September 2016 +
    Сб 03 Сентябрь 2016 ru -

    2016-august-recap

    +

    2016-august-recap

    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.

    UIQt module is a collection of UI components backed by Qt. We only use it for Editor UI at the moment.

    -

    Here is a list …

    Category: News +

    Here is a list ...

    Category: News

    @@ -70,7 +90,7 @@

    We’re back to social networks

    -
    Thu 18 August 2016 +
    Чт 18 Август 2016 ru

    If you follow us on Facebook, Twitter, or VK 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.

    @@ -88,11 +108,11 @@

    Once Mahjong – always Mahjong

    -
    Wed 10 August 2016 +
    Ср 10 Август 2016 ru

    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.

    -

    It took us 3 years to reach the first goal …

    Category: News +

    It took us 3 years to reach the first goal ...

    Category: News

    diff --git a/ios-tutorial-ru.html b/ios-tutorial-ru.html index fcff72e..22c163b 100644 --- a/ios-tutorial-ru.html +++ b/ios-tutorial-ru.html @@ -50,10 +50,10 @@ title="Permalink to Самоучитель iOS">Самоучитель iOS -
    Thu 08 June 2017 +
    Чт 08 Июнь 2017 en -

    Самоучитель iOS

    +

    Самоучитель iOS

    Эта статья описывает проблемы, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.

    В феврале мы сумели отобразить простую модель под iOS за считанные дни. Это дало нам уверенность, что самоучитель для iOS мы сделаем столь же быстро. Тем не менее, реальность напомнила нам о простой вещи: быстро сделать можно лишь поделку на коленке, работающую только у самого разработчика; над логически связанным примером, работающим у всех, придётся попотеть.

    Нативная библиотека

    diff --git a/ios-tutorial.html b/ios-tutorial.html index 5d63792..1c63a16 100644 --- a/ios-tutorial.html +++ b/ios-tutorial.html @@ -50,10 +50,10 @@ title="Permalink to iOS tutorial">iOS tutorial -
    Thu 08 June 2017 +
    Чт 08 Июнь 2017 ru -

    iOS tutorial

    +

    iOS tutorial

    This article describes problems we faced during the creation of iOS tutorial in May 2017.

    This February 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.

    Native library

    diff --git a/its-all-fine-ru.html b/its-all-fine-ru.html index 6f29873..718bd25 100644 --- a/its-all-fine-ru.html +++ b/its-all-fine-ru.html @@ -50,10 +50,10 @@ title="Permalink to Всё проходит хорошо">Всё проходит хорошо -
    Fri 07 April 2017 +
    Пт 07 Апрель 2017 en -

    ItsAllFine

    +

    ItsAllFine

    Эта статья рассказывает о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.

    Первые четыре самоучителя OpenSceneGraph объясняют, как создать модель куба в Blender и затем отобразить её на Linux, macOS или Windows с помощью osgviewer, стандартного инструмента OpenSceneGraph.

    Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:

    diff --git a/its-all-fine.html b/its-all-fine.html index da6c936..d817e4d 100644 --- a/its-all-fine.html +++ b/its-all-fine.html @@ -50,10 +50,10 @@ title="Permalink to It's all fine">It's all fine -
    Fri 07 April 2017 +
    Пт 07 Апрель 2017 ru -

    ItsAllFine

    +

    ItsAllFine

    This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

    The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

    The whole process of creating a single tutorial turned out to be pretty daunting because it includes several tasks:

    diff --git a/lets-go-ru.html b/lets-go-ru.html index 23c872a..e9b7567 100644 --- a/lets-go-ru.html +++ b/lets-go-ru.html @@ -50,10 +50,10 @@ title="Permalink to Поехали">Поехали -
    Thu 16 March 2017 +
    Чт 16 Март 2017 en -

    Let's go

    +

    Let's go

    В этой статье мы расскажем о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.

    Отображение куба на iOS/Web

    К нашему удивлению, мы смогли отобразить простой красный куб на iOS и Веб довольно быстро: в начале февраля. Тем не менее, это лишь начало поддержки платформ Android, iOS и Веб. Впереди нас ждёт тернистая дорога, т.к. нам предстоит сделать ещё много вещей, прежде чем мы сможем объявить о полноценной поддержке этих платформ: визуальные эффекты, скрипты Python, архивы данных.

    @@ -67,7 +67,7 @@

    Т.к. руководство по использованию OpenSceneGraph будет состоять из нескольких самоучителей, мы решили автоматизировать процесс. Быстрый поиск рассказал нам о существовании замечательного мультимедийного фреймворка MLT, который используется и в OpenShot. С помощью MLT мы быстро сделали свой инструмент для создания самоучителей.

    На текущий момент наш инструмент позволяет совместить видео и текст с помощью простого текстового файла:

    -
    background bg.png
    +
    background bg.png
     text 5 Let's install Blender
     video 0:6 install_blender.mp4
     text 5 Installing it with apt
    diff --git a/lets-go.html b/lets-go.html
    index f462056..b96d31d 100644
    --- a/lets-go.html
    +++ b/lets-go.html
    @@ -50,10 +50,10 @@
             title="Permalink to Let's go">Let's go
         
     
    -
    Thu 16 March 2017 +
    Чт 16 Март 2017 ru -

    Let's go

    +

    Let's go

    In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.

    Rendering under iOS/Web

    To our surprise, we got a simple red cube rendered under iOS and Web 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.

    @@ -67,7 +67,7 @@

    Since OpenSceneGraph cross-platform guide would consist of several tutorials, we decided to automate the process. Brief research revealed a great multimedia framework called MLT, which powers OpenShot itself. With MLT we got our tutorial tool in no time.

    Currently, the tutorial tool allows anyone to combine text and video using a simple text file like this:

    -
    background bg.png
    +
    background bg.png
     text 5 Let's install Blender
     video 0:6 install_blender.mp4
     text 5 Installing it with apt
    diff --git a/mahjong-recreation-start-ru.html b/mahjong-recreation-start-ru.html
    new file mode 100644
    index 0000000..e2564d1
    --- /dev/null
    +++ b/mahjong-recreation-start-ru.html
    @@ -0,0 +1,167 @@
    +
    +
    +    
    +    
    +    
    +
    +    Начало воссоздания Маджонга
    +
    +    
    +    
    +    
    +    	
    +    
    +
    +    
    +        
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    Начало воссоздания Маджонга

    +
    + +
    Пт 26 Январь 2018 + en + +

    Screenshot

    +

    Эта статья описывает начало воссоздания игры Маджонг.

    +

    План

    +

    Мы начали воссоздание Маджонга с составления краткого плана реализации игровой механики с минимальной графикой:

    +
      +
    • Загрузить раскладку
    • +
    • Поместить фишки в позиции раскладки
    • +
    • Различить фишки
    • +
    • Реализовать выбор фишек
    • +
    • Реализовать сравнение фишек
    • +
    +

    Как и любой другой план, этот выглядел вполне адекватно на первый взгляд. Тем не менее стоит начать разработку, как появляются новые детали. Этот план не был исключением. Ниже представлена пара проблем, вскрывшихся во время разработки.

    +

    Проблема №1: предоставить бинарные ресурсы на поддерживаемых платформах

    +

    Маджонг будет доступен для десктопа, мобилок и веба. Каждая платформа имеет ограничения на доступ к внешним файлам:

    +
      +
    • Десктоп позволяет получить доступ почти к любому файлу
    • +
    • Мобилки имеют ограниченный доступ к файловой системе
    • +
    • Веб не имеет файловой системы
    • +
    +

    Мы решили сделать единый способ доступа к ресурсам путём их встраивания в исполняемый файл. Это решение привело к рождению проектов mjin-resource и mahjong-data.

    +

    Проект mjin-resource служит для:

    +
      +
    • перевода бинарных файлов в заголовочные файлы C с помощью утилиты xxd
    • +
    • создания проекта MJIN, состоящего из сгенерированных заголовочных файлов, который собирается в статическую библиотеку
    • +
    • предоставления интерфейса C++ для работы с ресурсами
    • +
    +

    Проект mahjong-data является примером подобного проекта MJIN, ресурсы из которого использует проект mahjong.

    +

    Проблема №2: загрузка изображений PNG на поддерживаемых платформах

    +

    Для загрузки PNG мы используем соответствующий плагин OpenSceneGraph. Мы собрали его без проблем для десктопа. Сборка же для веба (Emscripten) оказалась сложнее: Emscripten содержит собственную версию libpng, которую сборочный скрипт OpenSceneGraph не видит. Нам пришлось обойти несколько проверок OpenSceneGraph, чтобы успешно собрать плагин для Emscripten. +Сборка плагина под мобилки ещё ждёт нас впереди. Как только мы разберёмся с плагином PNG на всех поддерживаемых платформах, мы опубликуем информацию о его сборке в новом самоучителе для кросс-платформенного руководства OpenSceneGraph. Нас уже попросили это сделать.

    +

    Разработка

    +

    Как вы знаете, мы опубликовали кросс-платформенное руководство OpenSceneGraph для усиления сообщества OpenSceneGraph. Мы ценим обучение и любим делиться своими знаниями. Поэтому мы решили разрабатывать Маджонг небольшими воспроизводимыми частями, каждая из которых имеет уникальную внутреннюю версию. Эти версии доступны в хранилище проекта mahjong.

    +

    Мы также предоставляем историю версий, каждая из которых сопровождается сборкой под веб, для следующих целей:

    +
      +
    • обучение: показать ход разработки изнутри
    • +
    • доступность: предоставить старые версии для сравнения
    • +
    +

    Текущее состояние игры Маджонг

    +

    На момент написания этой статьи мы закончили реализацию выбора фишек. Проверьте в своём браузере!

    +

    После реализации сравнения фишек мы опубликуем промежуточный результат для всех поддерживаемых платформ.

    +

    На этом мы заканчиваем описание начала воссоздания игры Маджонг.

    +

    Category: News + +

    + + + +
    +
    + + + + + +
    + + + +
    +
    +
    +
    +
    +

    Proudly powered by Pelican, which takes great advantage of Python.

    +
    +
    +
    + +
    \ No newline at end of file diff --git a/mahjong-recreation-start.html b/mahjong-recreation-start.html new file mode 100644 index 0000000..ad0a07f --- /dev/null +++ b/mahjong-recreation-start.html @@ -0,0 +1,167 @@ + + + + + + + Mahjong recreation start + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +

    Mahjong recreation start

    +
    + +
    Пт 26 Январь 2018 + ru + +

    Screenshot

    +

    This article describes the start of Mahjong game recreation.

    +

    Plan

    +

    We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

    +
      +
    • Load single layout
    • +
    • Place tiles in layout positions
    • +
    • Distinguish tiles
    • +
    • Implement selection
    • +
    • Implement matching
    • +
    +

    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.

    +

    Problem №1: provide binary resources across supported platforms

    +

    Mahjong is going to be available on desktop, mobile, and web. Each of these platforms has its constraints on accessing external files:

    +
      +
    • Desktop can access almost any file
    • +
    • Android/iOS have limited access to file system
    • +
    • Web does not have any file system at all
    • +
    +

    To provide a unified way for accessing resources, we decided to include them into final executable. This decision led to the birth of mjin-resource and mahjong-data projects.

    +

    mjin-resource:

    +
      +
    • converts binary files to C header files with the help of xxd utility
    • +
    • generates MJIN project that contains generated headers to be compiled into static library
    • +
    • provides C++ interface for accessing generated resources
    • +
    +

    mahjong-data is an example of such generated MJIN project that is referenced by mahjong project.

    +

    Problem №2: load PNG images across supported platforms

    +

    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 libpng, 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 OpenSceneGraph cross-platform guide to cover PNG image loading. We already got a request to describe image loading.

    +

    Development

    +

    As you know, 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 mahjong repository.

    +

    We also provide version history and web releases of each internal version for the following reasons:

    +
      +
    • education: show how development looks like internally
    • +
    • accessibility: provide older versions for comparison
    • +
    +

    Current Mahjong game status

    +

    As of the time of this writing, we have implemented tile selection. Try it in your browser!

    +

    Once we finish tile matching implementation, we are going to publish the intermediate result for all supported platforms.

    +

    That's it for describing the start of Mahjong game recreation.

    +

    Category: News + +

    + + + +
    +
    + + + + + +
    + + + +
    +
    +
    +
    +
    +

    Proudly powered by Pelican, which takes great advantage of Python.

    +
    +
    +
    + +
    \ No newline at end of file diff --git a/mjin-world-birth-ru.html b/mjin-world-birth-ru.html index 1c068d6..7935ed3 100644 --- a/mjin-world-birth-ru.html +++ b/mjin-world-birth-ru.html @@ -50,10 +50,10 @@ title="Permalink to Рождение вселенной MJIN">Рождение вселенной MJIN -
    Sun 10 September 2017 +
    Вс 10 Сентябрь 2017 en -

    Рождение вселенной MJIN

    +

    Рождение вселенной MJIN

    Эта статья описывает рождение вселенной MJIN в августе 2017.

    mjin-player

    Как вы знаете, в июле мы изучали скриптование. Мы нашли решение, которое удовлетворяет следующим критериям. Скрипты должны:

    diff --git a/mjin-world-birth.html b/mjin-world-birth.html index eae9931..4af8dd4 100644 --- a/mjin-world-birth.html +++ b/mjin-world-birth.html @@ -50,10 +50,10 @@ title="Permalink to The birth of MJIN world">The birth of MJIN world -
    Sun 10 September 2017 +
    Вс 10 Сентябрь 2017 ru -

    The birth of MJIN world

    +

    The birth of MJIN world

    This article describes the birth of MJIN world in August 2017.

    mjin-player

    As you know, we spent July to research scripting. We found a solution that satisfies the following criteria. Scripts should:

    diff --git a/ogs-editor-0.10-ru.html b/ogs-editor-0.10-ru.html index bf869c9..edc759a 100644 --- a/ogs-editor-0.10-ru.html +++ b/ogs-editor-0.10-ru.html @@ -50,10 +50,10 @@ title="Permalink to OGS Editor 0.10 и материалы прямого эфира">OGS Editor 0.10 и материалы прямого эфира -
    Mon 03 October 2016 +
    Пн 03 Октябрь 2016 en -

    ogs-editor-0.10 +

    ogs-editor-0.10 Внимание: мы не выпустим версию 0.10 для macOS из-за технических проблем с системой сборки. Поддержку macOS вернём к 0.11.

    Sun 31 December 2017Пт 26 Январь 2018Mahjong recreation start
    Вс 31 Декабрь 2017 The year of lessons
    Wed 22 November 2017Ср 22 Ноябрь 2017 2017 summary
    Mon 16 October 2017Пн 16 Октябрь 2017 Back to the Static
    Sun 10 September 2017Вс 10 Сентябрь 2017 The birth of MJIN world
    Wed 16 August 2017Ср 16 Август 2017 Scripting research
    Mon 17 July 2017Пн 17 Июль 2017 OpenSceneGraph cross-platform guide
    Thu 08 June 2017Чт 08 Июнь 2017 iOS tutorial
    Fri 12 May 2017Пт 12 Май 2017 OpenSceneGraph sample
    Fri 07 April 2017Пт 07 Апрель 2017 It's all fine
    Thu 16 March 2017Чт 16 Март 2017 Let's go
    Wed 25 January 2017Ср 25 Январь 2017 The year of challenges
    Sat 31 December 2016Сб 31 Декабрь 2016 Happy 2017
    Thu 15 December 2016Чт 15 Декабрь 2016 November 2016 recap
    Sat 19 November 2016Сб 19 Ноябрь 2016 October 2016 recap
    Mon 31 October 2016Пн 31 Октябрь 2016 Technology showcases
    Tue 11 October 2016Вт 11 Октябрь 2016 September 2016 recap
    Mon 03 October 2016Пн 03 Октябрь 2016 OGS Editor 0.10 and live session materials
    Mon 26 September 2016Пн 26 Сентябрь 2016 A few words about live session yesterday
    Sat 24 September 2016Сб 24 Сентябрь 2016 Live session is in 24 hours
    Sat 17 September 2016Сб 17 Сентябрь 2016 Live session: 25 September 2016
    Sat 03 September 2016Сб 03 Сентябрь 2016 August 2016 recap
    Thu 18 August 2016Чт 18 Август 2016 We’re back to social networks
    Wed 10 August 2016Ср 10 Август 2016 Once Mahjong – always Mahjong