User survey ends today

About a year ago, we started the user survey, in order to find out what do you think of the Open Source in general and about our project in particular.
Today we’re closing this survey. It took time, but we’ve got plenty of answers. Thank you for that.

We’ll share our thought about the results of the survey in one of the future articles.

After the survey, every one of you has got the code. With this code, you’ll be able to access the alpha test of the OGS Mahjong 2, as soon as we’ll be ready to start it (i can’t promise anything, but we’re planning to do it in 2015).
Also, you’ll be able to choose between the deluxe version of OGS Mahjong 2 and the deluxe version of Shuan, as soon as we’ll be ready to release these games.

We wish you all a Happy New Year. Thank you for being with us. See you next year.

P.S. If you have lost your code – write us a letter, we’ll figure something out.

Posted in News, Projects | Comments Off on User survey ends today

And another year has passed


So, this year comes to the end. There were very little publications from us during this year. We haven’t stopped working, but right now our work is in the phase, when we have nothing to show. And the spare time of the team members is rarely more then 30-40 hours a month.

But our work continues. And you can find out some details in the new article from our programmer Michael Kapelko.

Posted in News, Projects | Tagged | Comments Off on And another year has passed

Exaggerated expectations

One always has exaggerated ideas about what one doesn’t know.
– Albert Camus

Hello. I’m Michael Kapelko, Opensource Game Studio team programmer.
This is an annual article describing our successes and failures this year.

2014 marked our lowest public activity ever: we have posted only once until now. We were caught into many unforeseen changes, “had nothing serious to show off”, and kept on working until another year has just passed by.


As you know, we expected to achieve the following this year:

  1. Completion of:
    • Actions
    • Deferred shading pipeline
    • Dictionary state API
  2. First playable versions of:
    • Mahjong 2
    • Shuan

We have successfully completed work on Actions to the state of our needs. This includes shaking a held object while it’s being moved, crane lamps’ blinking in the test chamber.
We have successfully completed work on Deferred shading pipeline. Here’s a list of screenshots and videos of the progress:

We have also successfully completed several unexpected issues.

State API (formerly “dictionary state API”) gave birth to the concept of Component and Extensions. Its idea is to have a Component which can do very little or almost nothing at all, and add functionality to it with the help of Extensions. The approach proved to be extremely useful in mitigating the consequences of ever growing code base due to strict functionality separation among Extensions. Also, dynamic nature of State API allowed us to add functionality without breaking ABI (critical requirement for libraries).

The need to manage our ever growing functionality resulted in the emergence of OGS Editor. Here’s a list of videos of the progress:

Unfortunately, we haven’t touched Mahjong 2 and Shuan at all, because we have not foreseen the emergence of many issues like Components and Extensions, OGS Editor, etc..

Last year I claimed we would transition our workflow from logging to planning, but these were only my expectations. They failed, as is with all expectations that are not planned.


The approach of unplanned expectations ended in November.

During 3 days I (along with several of fellow co-workers at my fulltime job) have been taught the basics of project management (teaching has been conducted by TechnoConsult-Management). The provided information was invaluable.

Shortly after that I stopped the work I’ve been doing on Editor 0.2.0: implementation of scene editing. I’ve created a detailed plan for achieving scene editing in Editor. All work has been planned in advance and confirmed by our team. No additional, i.e. unforeseen/unplanned work was allowed except for critical issues like fixing crashes.
The result was astounding. I finished all the planned work (and released Editor 0.3.0) before the time ran out.

I must note the plan was not perfect. Some issues were vaguely described, and the result turned out to be as vague. I had to cut some corners and introduce temporary solutions to such issues. After finishing the planned work, it became clear what I missed last time. Those vague issues have been clarified and made their way into the next Editor iteration which, again, have been strictly described and confirmed by the team.

Currently we are working on creating detailed plans for the next 3-4 months. Starting January 2015, we will be posting plans, their estimated (not expected!) completion dates and results regularly.

Posted in Team Blog | Comments Off on Exaggerated expectations

Our work continues

Hi there!
It’s been a while, since we wrote anything here. Yeah, we know it’s bad, but last 3 months were very busy for everyone of us, leaving very little spare time. And we’re trying to use this time to improve the game engine instead of creating something we can show right now.
We decided to concentrate all our efforts in developing a simple, but reliable toolset, which will help us in the development of OGS Mahjong 2 and Shuan.
If you follow Michael’s YouTube channel, you’ve already seen some simple videos of our material and action systems.
I want to tell a bit more about them. Continue reading

Posted in Engine, News, Projects | Tagged , | Comments Off on Our work continues

We wish you a happy new year!

Year 2013 is coming to an end (and for some it has already ended). We sincerely wish you all the best in 2014.
We know that we’re quite rarely posting something on the site, and we’re trying to improve the situation, but neither of us has great amount of spare time, and we want to use that time to work on Shuan and OGS Mahjong 2.
Nevertheless, we’ll try to post news more often in 2014. In the meantime, our programmer Michael Kapelko wrote a short article for you about the results of 2013.
Posted in News, Site | Tagged | Comments Off on We wish you a happy new year!

From logging to planning

Hello. I’m Michael Kapelko, Opensource Game Studio team programmer.
I want to tell you of our progress in 2013.

Imperfect decision

In the previous article I talked about OGRE and OIS flaws that were threatening the future of our project. This time, I want to start with acknowledging that I made one big imperfect decision myself: I decided to switch to OpenSceneGraph as soon as possible.
We had a number of MJIN API rewrites this year. By deferring the switch to OpenSceneGraph to the point when we have more or less stable API I could have saved at least a month of calendar time (about 40 hours of pure time).
MJIN1 was a real mess when OGS Mahjong 1.0 has been released. Cleaning up and the switch to OpenSceneGraph resulted in MJIN2 which solved many problems MJIN1 had like hiding dependencies and stabilizing both API and ABI. But this resulted in a lot of code duplication.
By the end of the year the new so-called “dictionary state API” concept was born which promises to remove most of the duplication and simplify error handling.
The usual API that you are used to consists of hundreds of classes and methods. The ABI stabilization approach we took requires almost twice more classes and methods. For the team of our size this is simply impossible to handle.
Dictionary state API only leaves you with the most important classes which can be called components or systems like Actions, Pipeline, Scene. You don’t have direct access to their children, you can only setup a dictionary to describe them. Dictionary is a simple associative array of key-value pairs. Basically, if you want a Scene to have a SceneNode child at (0, 15, 0) position you create a dictionary with an entry like “node.position=0 15 0” and pass it to the Scene. This comes with a bit of performance penalty (compared to normal function calls), but removes the need for child classes altogether (and thus a lot of boilerplate code).


As you remember, we were going to use Python for quick iterations of new code. Unfortunately, due to above API changes that happened mostly in C++ we didn’t have a chance to try Python for more than just one component – Actions. Still, Python proved to be faster to iterate than C++.
Actions component allows you to specify changes for properties of game objects and sequence them into larger actions to achieve complex logic without writing much code. Here’s a simple example (only a tip of the iceberg) of what you can do with Actions.

Task management

Due to outdated mercurial hosted by Google Code we had to move our mercurial repositories to Bitbucket. Outdated software at Google Code is just one sign of the service decay. Since it’s not uncommon for Google to shutdown unpopular services, we decided not to wait until it’s over and migrate to MantisBT for task tracking. So far so good.
To mitigate the impacts of hasty decisions, we also decided to start planning. The shift from logging to planning is ongoing and is quite hard to fully implement, but several things have been done with planning which proved to be useful for progress estimation, for making sure every team member understands where we are heading.
Just as logging opened our eyes on how hard things were to do, planning promises to open our eyes on how to achieve those hard things faster and with less manpower.

Short 2013 summary

These are the major things we did this year:

  • OGS Mahjong 1.1 with online leaderboard.
  • OGS Mahjong 2 draft.
  • Actions draft.
  • Deferred shading pipeline draft with support for the following techniques out of the box:
    • soft shadow mapping;
    • normal mapping;
    • cube mapping;
    • glow mapping.
  • Dictionary state API.

Unfortunately, I don’t have information how much time each team member spent this year, because we have not yet implemented all the necessary things to gather such statistics for everybody. Nonetheless, I have calculated that I spent 563 hours this year to solve 230 issues. That’s about 4 months worth of full time job, or about 1.5 hours each day during the year.

Plans for 2014

Completion of:

  • Actions.
  • Deferred shading pipeline.
  • Dictionary state API.

First playable versions of:

  • Shuan. Arcade shoot ’em up game which will use MJIN2 to its maximum.
  • Mahjong 2 which will finally support the long awaited classic mode.
Posted in Team Blog | Tagged , | Comments Off on From logging to planning

New issue tracker and wiki

Since the beginning of our work on OGS Mahjong, we were using Google Code Issue Tracker as our main tasktracker and Wiki-engine. We can say, that it is a well-done and usable service, but the further development of our project demands for significant changes, so we have decided to switch to another tasktracker.
After carefully examine the alternatives, we’ve chosen the MantisBT. Also, with the new tracker, we’ve got a full-functional Wiki, which we’re going to fill with usefull and interesting information.
Posted in News, Site | Tagged | Comments Off on New issue tracker and wiki

A little demonstration of the actions system in MJIN2

You can see the source code here

Posted in Engine | Tagged , | Comments Off on A little demonstration of the actions system in MJIN2

OGS Mahjong 1.1 is ready

Finaly, all tasks we planned to do are completed, and we’re ready to release the new version of OGS Mahjong. We’ve already posted the list of changes earlier:
  • Online leaderboard
  • Hindi translation (thanks to Abhijeet Pokhriyal)
Also, we’ve fixed some crashes in linux version.

As far as we can say, this is the last release of OGS Mahjong 1. We decided, that this is the best time for us to stop all work on this game. Right now, we’re working hard to bring you OGS Mahjong 2 and Shuan as soon as possible. Unfortunately, it can’t be very soon.

Continue reading

Posted in Mahjong, Projects | Tagged , , , | Comments Off on OGS Mahjong 1.1 is ready

The release candidate of the new OGS Mahjong version

The release candidate of the new OGS Mahjong version is now available.
As the previous, this version’s main feature is the online scoreboard.
Unfortunately, the only participants of the previous test were ourselves.
If you’re interested in new version of OGS Mahjong, we’re asking you to take your part in this testing and fill the empty scoreboard with your results.
All game results from the last test has been deleted, but we will not clear the board after this one. So, you don’t have to worry about losing your results.

Continue reading

Posted in Mahjong | Tagged , , | Comments Off on The release candidate of the new OGS Mahjong version