@@ -0,0 +1,131 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/game/index.html">EN</a> | |||
<a href="../../ru/game/index.html">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>Games</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-mahjong-1.html">OGS Mahjong 1</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
<iframe width="720" height="405" src="https://www.youtube.com/embed/XdOzD_Hc2lQ" frameborder="0" allowfullscreen></iframe> | |||
<p>Mahjong solitaire and shisen-sho game with nice 3D graphics and relaxing soundtrack.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ogs-mahjong-1.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong.html">Mahjong 2 (in development)</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/ogs-mahjong-2-screenshot.png" alt="Mahjong screenshot" /></p> | |||
<p>Remake of OGS Mahjong 1 that runs inside your web browser. <a href="http://opengamestudio.org/mahjong">Try it now!</a></p> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,106 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/game/PSKOV_INDEX_URL">EN</a> | |||
<a href="../../ru/game/PSKOV_INDEX_URL">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>Games</h1> | |||
PSKOV_PREVIEWS | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,111 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/game/PSKOV_ITEM_URL">EN</a> | |||
<a href="../../ru/game/PSKOV_ITEM_URL">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>In the games...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
PSKOV_ITEM_CONTENTS | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,112 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/game/mahjong.html">EN</a> | |||
<a href="../../ru/game/mahjong.html">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>In the games...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong.html">Mahjong 2 (in development)</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/ogs-mahjong-2-screenshot.png" alt="Mahjong screenshot" /></p> | |||
<p>Remake of OGS Mahjong 1 that runs inside your web browser. <a href="http://opengamestudio.org/mahjong">Try it now!</a></p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,10 @@ | |||
Title: Mahjong 2 (in development) | |||
Slug: mahjong | |||
Lang: en | |||
![Mahjong screenshot][mahjong-screenshot] | |||
Remake of OGS Mahjong 1 that runs inside your web browser. [Try it now!][mahjong] | |||
[mahjong-screenshot]: ../../images/ogs-mahjong-2-screenshot.png | |||
[mahjong]: http://opengamestudio.org/mahjong |
@@ -0,0 +1,144 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/game/ogs-mahjong-1.html">EN</a> | |||
<a href="../../ru/game/ogs-mahjong-1.html">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>In the games...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-mahjong-1.html">OGS Mahjong 1</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
<iframe width="720" height="405" src="https://www.youtube.com/embed/XdOzD_Hc2lQ" frameborder="0" allowfullscreen></iframe> | |||
<p>Mahjong solitaire and shisen-sho game with nice 3D graphics and relaxing soundtrack.</p> | |||
<p><strong>Features</strong></p> | |||
<ul> | |||
<li>3 game modes: Mahjong Solitaire, Shisen-sho and Shisen-sho with gravity.</li> | |||
<li>More than 150 layouts. Layouts format is compatible with KMahjongg.</li> | |||
<li>Support for multiple tilesets.</li> | |||
<li>4 themes: "Classic", "Neo-classic", "Flowers", "Distros".</li> | |||
<li>Support for background scenes.</li> | |||
<li>3 scenes: "Room", "Room Lite" and "Inside the computer".</li> | |||
<li>Save and load.</li> | |||
<li>Hints and shuffle.</li> | |||
<li>Unlimited number of undos.</li> | |||
<li>Camera animations and dynamic camera (cursor tracking).</li> | |||
<li>Layers highlighting.</li> | |||
<li>6 languages: Russian, English, German, French, Spanish and Hindi.</li> | |||
<li>Online leaderboard.</li> | |||
<li>Adapting the game settings to your computer configuration during the first game launch.</li> | |||
</ul> | |||
<p><strong>Basic version</strong></p> | |||
<ul> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-windows32.exe/download" title="Download ogs-mahjong-1.1.0-windows32.exe">For Windows (exe)</a> (40 MB)</li> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-windows32.exe/download" title="Download ogs-mahjong-1.1.0-full-windows32.exe">For Windows, with editor and additional music (exe)</a> (123 MB)</li> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-linux64.tar.lzma/download" title="Download ogs-mahjong-1.1.0-linux64.tar.lzma">For Linux64 (tar.lzma)</a> (37 MB)</li> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-linux64.tar.lzma/download" title="Download ogs-mahjong-1.1.0-full-linux64.tar.lzma">For Linux64, with editor and additional music (tar.lzma)</a> (110 MB)</li> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-linux32.tar.lzma/download" title="Download ogs-mahjong-1.1.0-linux32.tar.lzma">For Linux32 (tar.lzma)</a> (37 MB)</li> | |||
<li><a href="http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-linux32.tar.lzma/download" title="Download ogs-mahjong-1.1.0-full-linux32.tar.lzma">For Linux32, with editor and additional music (tar.lzma)</a> (110 MB)</li> | |||
</ul> | |||
<p><strong>Deluxe version</strong></p> | |||
<p>If you like our work, you can support us by buying the Deluxe version. | |||
It will help us keep the things running and, maybe, hire some freelance | |||
artists to make our future games a bit better.</p> | |||
<p><strong>OGS Mahjong Deluxe</strong> contains two additional tilesets: "Eastern" and "Sport".</p> | |||
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="720" height="500" style="border: none;" scrolling="no" frameborder="0"></iframe> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,43 @@ | |||
Title: OGS Mahjong 1 | |||
Slug: ogs-mahjong-1 | |||
Lang: en | |||
<iframe width="720" height="405" src="https://www.youtube.com/embed/XdOzD_Hc2lQ" frameborder="0" allowfullscreen></iframe> | |||
Mahjong solitaire and shisen-sho game with nice 3D graphics and relaxing soundtrack. | |||
**Features** | |||
* 3 game modes: Mahjong Solitaire, Shisen-sho and Shisen-sho with gravity. | |||
* More than 150 layouts. Layouts format is compatible with KMahjongg. | |||
* Support for multiple tilesets. | |||
* 4 themes: "Classic", "Neo-classic", "Flowers", "Distros". | |||
* Support for background scenes. | |||
* 3 scenes: "Room", "Room Lite" and "Inside the computer". | |||
* Save and load. | |||
* Hints and shuffle. | |||
* Unlimited number of undos. | |||
* Camera animations and dynamic camera (cursor tracking). | |||
* Layers highlighting. | |||
* 6 languages: Russian, English, German, French, Spanish and Hindi. | |||
* Online leaderboard. | |||
* Adapting the game settings to your computer configuration during the first game launch. | |||
**Basic version** | |||
- [For Windows (exe)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-windows32.exe/download "Download ogs-mahjong-1.1.0-windows32.exe") (40 MB) | |||
- [For Windows, with editor and additional music (exe)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-windows32.exe/download "Download ogs-mahjong-1.1.0-full-windows32.exe") (123 MB) | |||
- [For Linux64 (tar.lzma)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-linux64.tar.lzma/download "Download ogs-mahjong-1.1.0-linux64.tar.lzma") (37 MB) | |||
- [For Linux64, with editor and additional music (tar.lzma)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-linux64.tar.lzma/download "Download ogs-mahjong-1.1.0-full-linux64.tar.lzma") (110 MB) | |||
- [For Linux32 (tar.lzma)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-1.1.0-linux32.tar.lzma/download "Download ogs-mahjong-1.1.0-linux32.tar.lzma") (37 MB) | |||
- [For Linux32, with editor and additional music (tar.lzma)](http://sourceforge.net/projects/osrpgcreation/files/Mahjong/1.1.0/ogs-mahjong-full-1.1.0-linux32.tar.lzma/download "Download ogs-mahjong-1.1.0-full-linux32.tar.lzma") (110 MB) | |||
**Deluxe version** | |||
If you like our work, you can support us by buying the Deluxe version. | |||
It will help us keep the things running and, maybe, hire some freelance | |||
artists to make our future games a bit better. | |||
**OGS Mahjong Deluxe** contains two additional tilesets: "Eastern" and "Sport". | |||
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="720" height="500" style="border: none;" scrolling="no" frameborder="0"></iframe> |
@@ -0,0 +1,4 @@ | |||
<p class="pagination_title">Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p> | |||
<p> | |||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a> | |||
</p> |
@@ -0,0 +1,4 @@ | |||
<p class="pagination_title">Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p> | |||
<p> | |||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a> | |||
</p> |
@@ -0,0 +1,5 @@ | |||
<p class="pagination_title">Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p> | |||
<p> | |||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a> | |||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a> | |||
</p> |
@@ -0,0 +1,11 @@ | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a> | |||
</h2> | |||
<div class="news_item_contents"> | |||
PSKOV_PREVIEW | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="PSKOV_ITEM_URL">Continue reading</a> | |||
</div> | |||
</div> |
@@ -0,0 +1,13 @@ | |||
Title: And another year has passed | |||
Date: 2014-12-31 12:00 | |||
Category: News | |||
Slug: 2014-another-year-passed | |||
Lang: en | |||
Hello! | |||
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][exaggerated-expectations]. | |||
[exaggerated-expectations]: exaggerated-expectations.html |
@@ -0,0 +1,15 @@ | |||
Title: User survey ends today | |||
Date: 2014-12-31 11:00 | |||
Category: News | |||
Slug: user-servey-finish-promise | |||
Lang: en | |||
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. |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,31 +80,37 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2014-another-year-passed.html">EN</a> | |||
<a href="../../en/news/2014-another-year-passed.html">EN</a> | |||
<a href="../../ru/news/2014-another-year-passed.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2014-another-year-passed.html">And another year has passed</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 12:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Hello!</p> | |||
<p>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.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2014-another-year-passed.html">And another year has passed</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 12:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Hello!</p> | |||
<p>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.</p> | |||
<p>But our work continues. And you can find out some details in the new <a href="exaggerated-expectations.html">article from our programmer Michael Kapelko</a>.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,11 @@ | |||
Title: Editor roadmap for 0.4.0 | |||
Date: 2015-01-13 00:00 | |||
Category: News | |||
Slug: editor-0.4.0-plans | |||
Lang: en | |||
The development of Editor 0.3.0 showed us, that usage of custom GUI was not a perfect idea. A few months ago, custom GUI seemed as a simpler way to do things, but it turned out to lack many little features, that are crucial if you're planning to make a convenient tool. | |||
In the end, we decided to do what we wanted to do in the first place - to use Qt library as the GUI library for our editor. | |||
So, we'll rewrite the Editor with Qt interface and a little bit refreshed project concept in mind. We plan to release the editor with new GUI and a set of basic features like loading and saving projects in May. |
@@ -0,0 +1,19 @@ | |||
Title: Editor 0.4.0 and plans for 0.5.0 | |||
Date: 2015-03-07 00:00 | |||
Category: News | |||
Slug: editor-0.4.0-and-0.5.0-plans | |||
Lang: en | |||
We completed Editor 0.4.0 in January. As it was planned, it only contains basic abilities to open and save a project. The major goal was to make MJIN, Python and Qt work together (we were unable to use PyQt or PySide due to technical difficulties). | |||
You can <a title="Editor 0.4.0" href="http://youtu.be/3cqiTIjWwA8" target="_blank">see 0.4.0 in action here</a>. | |||
We started Editor 0.5.0 development in February. It's 45% ready at the moment. | |||
Editor 0.5.0 planned features: | |||
1. Scene node tree editing | |||
1. Property browser with nodes' position and model editing | |||
1. Qt5 support for the sake of easy building on various Linux distributions | |||
We estimate to complete it in April. |
@@ -0,0 +1,22 @@ | |||
Title: Editor 0.5.0 and plans for 0.6.0 | |||
Date: 2015-04-15 00:00 | |||
Category: News | |||
Slug: editor-06-roadmap | |||
Lang: en | |||
We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>. | |||
Also, we have just started Editor 0.6.0 development. | |||
Editor 0.6.0 planned features: | |||
1. Camera node editing | |||
1. Light node editing | |||
1. Node rotation editing | |||
1. Node scripting support | |||
1. Thumbnail dialog to preview materials and models when editing scene node material and model properties | |||
1. Copying and pasting of scene nodes | |||
1. Scene node selection by clicking a mouse in the scene | |||
We estimate to complete it in August. |
@@ -0,0 +1,20 @@ | |||
Title: Editor 0.6.0 | |||
Date: 2015-06-28 00:00 | |||
Category: News | |||
Slug: editor-06 | |||
Lang: en | |||
We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. | |||
Editor 0.6.0 got the following new features: | |||
1. Camera and light node positioning | |||
1. Node rotation along X axis | |||
1. Node scripting support | |||
1. Thumbnail dialog to preview models when editing scene node model properties | |||
1. Node copying and pasting | |||
1. Node selection by LMB click in the scene | |||
1. Window geometry and state restoration after restart | |||
We don't have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap. |
@@ -0,0 +1,18 @@ | |||
Title: Roadmap for 2015-2016 | |||
Date: 2015-07-19 00:00 | |||
Category: News | |||
Slug: 2015-roadmap | |||
Lang: en | |||
As promised, we have come up with a list of milestones and their approximate dates for the coming year: | |||
1. Editor 0.7.0 (October 2015) - Actions' system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> | |||
1. Editor 0.8.0 (December 2015) - Sound system | |||
1. Editor 0.9.0 (February 2016) - Particles' system and minimal UI | |||
1. Editor 0.10.0, Player 0.1.0 (April 2016) - Player to play what Editor produced: we create Shuan prototype with our engine | |||
1. Editor 0.11.0, Player 0.2.0 (June 2016) - Networking: we create Classic 4-player Mahjong prototype | |||
These approximate dates presume one coder spends 40 hours a month. That's about 1 work week at full-time job. Not much, but that's the only time we have. | |||
We will post more details about Editor 0.7.0 shortly: we need to decide what features deserve 80 hours of our time for the next 2 months. |
@@ -0,0 +1,10 @@ | |||
Title: Test chamber for everyone (Editor 0.7.0) | |||
Date: 2015-07-22 00:00 | |||
Category: News | |||
Slug: test-chamber-for-everyone | |||
Lang: en | |||
As you know, the main goal of Editor 0.7.0 is the ability to create the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber! | |||
We estimate to complete it in October. |
@@ -0,0 +1,14 @@ | |||
Title: Desura no more, hello Humble Bundle Widget | |||
Date: 2015-07-23 00:00 | |||
Category: News | |||
Slug: bye-desura-hello-humblebundle | |||
Lang: en | |||
After the recent bankruptcy of Desura's parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site. | |||
Here it is: | |||
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"></iframe> | |||
We haven't received a single penny from Desura (due to the minimal cache out limitations), but if you bought the deluxe version from them and experiencing any problems with downloading it (right now we see no problems with that), send us a letter, tell your name on Desura, we'll figure something out. |
@@ -0,0 +1,15 @@ | |||
Title: SOON: Creating a simple game live (Editor 0.7) | |||
Date: 2015-11-02 00:00 | |||
Category: News | |||
Slug: soon-game-creation-editor-07 | |||
Lang: en | |||
As we have promised, we are ready to give you Editor 0.7 which is capable of creating the complete test chamber. However, after recreating the test chamber ourselves, it became clear that: | |||
1. it takes more than 8 hours to recreate it (too long) | |||
1. it's inappropriate to be presented in the form of an article (too boring) | |||
Therefore we decided to hold a live session at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON to show you how to create a simple <a title="Whac-a-mole" href="http://google.com/search?q=whac+a+mole">whac-a-mole like game</a> from scratch. | |||
Currently we are busy making final preparations, so we'll tell you the exact time and date this week. Stay tuned! |
@@ -0,0 +1,7 @@ | |||
Title: Creating a simple game live: 15 November 2015 | |||
Date: 2015-11-09 00:00 | |||
Category: News | |||
Slug: livesession-editor-07 | |||
Lang: en | |||
We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T12&p1=37&ah=3">15 November 2015 at 12:00 CET</a>. Join us! |
@@ -0,0 +1,21 @@ | |||
Title: Live session video and downloads | |||
Date: 2015-11-15 00:00 | |||
Category: News | |||
Slug: livesession-materials-editor-07 | |||
Lang: en | |||
If you missed the live session, you can watch it here: | |||
[https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/](https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/) | |||
You can download the resulting project here: | |||
[https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip](https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip) | |||
The latest editor can be found here: | |||
[http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/](http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/) | |||
Download the editor archive, unpack, delete the wam.ogs folder, copy wam.ogs from the live session archive to the editor folder. | |||
* in Windows - run the `run.bat` file. | |||
* in Linux and OSX - run the `run` file. | |||
@@ -0,0 +1,15 @@ | |||
Title: Roadmap for 2016 | |||
Date: 2015-12-26 00:00 | |||
Category: News | |||
Slug: 2016-roadmap | |||
Lang: en | |||
As you know, according to the [previously published roadmap][roadmap-2015-2016], we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates. | |||
Here's the revised roadmap for the first half of 2016: | |||
1. Editor + Player 0.8.0 (January 2016): Sound system, Whac-a-mole game with sounds | |||
1. Editor + Player 0.9.0 (April 2016): Networking system, simple ping pong game for 2 players over the net | |||
1. Editor + Player 0.10.0 (July 2016): Polishing, "Shuan" prototype | |||
[roadmap-2015-2016]: 2015-roadmap.html |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,38 +80,44 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2015-roadmap.html">EN</a> | |||
<a href="../../en/news/2015-roadmap.html">EN</a> | |||
<a href="../../ru/news/2015-roadmap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2015-roadmap.html">Roadmap for 2015-2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As promised, we have come up with a list of milestones and their approximate dates for the coming year:</p> | |||
<ol type="1"> | |||
<li>Editor 0.7.0 (October 2015) - Actions’ system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a></li> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2015-roadmap.html">Roadmap for 2015-2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As promised, we have come up with a list of milestones and their approximate dates for the coming year:</p> | |||
<ol> | |||
<li>Editor 0.7.0 (October 2015) - Actions' system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a></li> | |||
<li>Editor 0.8.0 (December 2015) - Sound system</li> | |||
<li>Editor 0.9.0 (February 2016) - Particles’ system and minimal UI</li> | |||
<li>Editor 0.9.0 (February 2016) - Particles' system and minimal UI</li> | |||
<li>Editor 0.10.0, Player 0.1.0 (April 2016) - Player to play what Editor produced: we create Shuan prototype with our engine</li> | |||
<li>Editor 0.11.0, Player 0.2.0 (June 2016) - Networking: we create Classic 4-player Mahjong prototype</li> | |||
</ol> | |||
<p>These approximate dates presume one coder spends 40 hours a month. That’s about 1 work week at full-time job. Not much, but that’s the only time we have.</p> | |||
<p>These approximate dates presume one coder spends 40 hours a month. That's about 1 work week at full-time job. Not much, but that's the only time we have.</p> | |||
<p>We will post more details about Editor 0.7.0 shortly: we need to decide what features deserve 80 hours of our time for the next 2 months.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,9 @@ | |||
Title: SOON: Creating a simple game live (Editor 0.8) | |||
Date: 2016-01-21 00:00 | |||
Category: News | |||
Slug: january-live-session-decision | |||
Lang: en | |||
We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run. | |||
The exact date and time is to be announced in the coming days. Stay tuned! |
@@ -0,0 +1,7 @@ | |||
Title: Game creation live session: 31 January 2016 | |||
Date: 2016-01-25 00:00 | |||
Category: News | |||
Slug: january-live-session-announcement | |||
Lang: en | |||
We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us! |
@@ -0,0 +1,9 @@ | |||
Title: Game creation live session (part 2): 7 February 2016 | |||
Date: 2016-02-02 00:00 | |||
Category: News | |||
Slug: rolling-ball-live-session-pt2 | |||
Lang: en | |||
Unfortunately, we have failed to finish creation of the simple "Rolling ball" game in 3 hours. That's why we will hold the second <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session%2C+part+2&iso=20160207T12&p1=37&ah=3">7 February 2016 at 12:00 CET</a>. | |||
Let's finish the game! |
@@ -0,0 +1,27 @@ | |||
Title: "Rolling ball" live session videos and downloads | |||
Date: 2016-02-10 00:00 | |||
Category: News | |||
Slug: rolling-ball | |||
Lang: en | |||
Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process: | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen></iframe> | |||
"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Games/RollingBall/">is available at SourceForge</a>. | |||
Simply unpack it and launch the run script. | |||
Editor 0.8 <a title="SourceForge" href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/46_2016-01-30_22-20-41_0.8.0/">is available at SourceForge</a>, too. | |||
"Rolling ball" project for the Editor <a title="GitHub" href="https://github.com/OGStudio/rollingBall.ogs/archive/master.zip">is available at GitHub</a>. | |||
To open it in the Editor: | |||
* replace slideDown.ogs with rollingBall.ogs you downloaded | |||
* rename rollingBall.ogs to slideDown.ogs | |||
Since live session took us so long, we decided to concentrate on polishing. Editor already has a lot of features, but their use is inconvenient. We will fix major obstacles for the next Editor release. |
@@ -0,0 +1,12 @@ | |||
Title: May live session (Editor 0.9) | |||
Date: 2016-04-24 00:00 | |||
Category: News | |||
Slug: may-live-session-decision | |||
Lang: en | |||
As you know, the previously published roadmap assumed, that we would hold a live session in April and it would feature a ping-pong game created with Editor 0.9. | |||
We have to admit, our abilities to plan are not yet good enough. That's why the next live session will take place by the end of May. The exact date will be announced later. | |||
Here's a short preview of the coming game: | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/V3EvCVPc6kg" frameborder="0" allowfullscreen></iframe> |
@@ -0,0 +1,7 @@ | |||
Title: Live session: 28 May 2016 | |||
Date: 2016-05-17 00:00 | |||
Category: News | |||
Slug: may-live-session-announcement | |||
Lang: en | |||
We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+May+live+session&iso=20160528T12&p1=37&ah=3">28 May 2016 at 12:00 CEST</a>. Join us! |
@@ -0,0 +1,14 @@ | |||
Title: May 2016 live session materials | |||
Date: 2016-05-29 00:00 | |||
Category: News | |||
Slug: ogs-editor-0.9 | |||
Lang: en | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe> | |||
This time we have shown how to create a simple Domino based game. Below you can find all materials related to the game creation. | |||
1. Editor 0.9 for Linux (Debian based), OS X (10.9+), Windows <a title="SourceForge" href="https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/49_2016-05-24_04-48-47_0.9.0/">is available at SourceForge</a>. Simply unpack it and launch the run script. | |||
2. Domino project created during live session <a title="GitHub" href="https://github.com/OGStudio/domino-livesession">is available at GitHub</a>. | |||
3. Domino rehearsal videos referenced during live session <a title="YouTube" href="https://www.youtube.com/playlist?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J">are available at YouTube</a> | |||
The next live session will be held in September 2016. |
@@ -0,0 +1,15 @@ | |||
Title: Once Mahjong – always Mahjong | |||
Date: 2016-08-10 00:00 | |||
Category: News | |||
Slug: once-mahjong-always-mahjong | |||
Lang: en | |||
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: we released OGS Mahjong 1.0 in 2012. Even for a hobby project (we spend about 40 hours a month) it's too long. | |||
Upon the game release we got it: **Tools are means to save development time**. | |||
We spent 4 more years to develop them. Now is the time to prove they are worth every single day spent. How? We will **recreate Mahjong solitaire mode** in just a few hours! | |||
Join our next live session in September. |
@@ -0,0 +1,9 @@ | |||
Title: We’re back to social networks | |||
Date: 2016-08-18 00:00 | |||
Category: News | |||
Slug: back-to-social-networks | |||
Lang: en | |||
If you follow us on [Facebook](https://www.facebook.com/groups/162611230470183/), [Twitter](https://twitter.com/OpenGameStudio), or [VK](https://new.vk.com/opengamestudo) 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. | |||
Follow us to stay up-to-date! |
@@ -0,0 +1,196 @@ | |||
Title: August 2016 recap | |||
Date: 2016-09-03 00:00 | |||
Category: News | |||
Slug: 2016-august-recap | |||
Lang: en | |||
![OGS Editor with a spherical scene node][screenshot] | |||
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:<table> | |||
<tr> | |||
<th>**№**</th> | |||
<th>**Component**</th> | |||
<th>**Description**</th> | |||
<th>**Size (B)**</th> | |||
<th>**Size (%)**</th> | |||
</tr> | |||
<tr> | |||
<td>1</td> | |||
<td>UIQtAction</td> | |||
<td>Actions (events) for menus</td> | |||
<td>11224</td> | |||
<td>9</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td>UIQtAux</td> | |||
<td>Initializes Qt and main window. Provides widget resolution by name to other components</td> | |||
<td>15518</td> | |||
<td>12</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td>UIQtDock</td> | |||
<td>Widget docks</td> | |||
<td>5273</td> | |||
<td>4</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td>UIQtFileDialog</td> | |||
<td>File selection dialogs</td> | |||
<td>8960</td> | |||
<td>7</td> | |||
</tr> | |||
<tr> | |||
<td>5</td> | |||
<td>UIQtMenu</td> | |||
<td>Menus for main window and pop-ups (like node's add/copy/paste/delete menu)</td> | |||
<td>4566</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td>6</td> | |||
<td>UIQtMenuBar</td> | |||
<td>Menu bar for main window</td> | |||
<td>4222</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td>7</td> | |||
<td>UIQtRunner</td> | |||
<td>Allows to start QApplication</td> | |||
<td>2450</td> | |||
<td>2</td> | |||
</tr> | |||
<tr> | |||
<td>8</td> | |||
<td>UIQtThumbnailDialog</td> | |||
<td>Dialog with thumbnail images</td> | |||
<td>18615</td> | |||
<td>14</td> | |||
</tr> | |||
<tr> | |||
<td>9</td> | |||
<td>UIQtToolBar</td> | |||
<td>Tool bar for main window</td> | |||
<td>4276</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td>10</td> | |||
<td>UIQtTree</td> | |||
<td>Provides complex widgets like Scene tree and Property browser</td> | |||
<td>51216</td> | |||
<td>39</td> | |||
</tr> | |||
<tr> | |||
<td>11</td> | |||
<td>UIQtWidget</td> | |||
<td>Common widget properties like focus and visibility</td> | |||
<td>5465</td> | |||
<td>4</td> | |||
</tr> | |||
</table> | |||
**UIQt module refactoring** purpose was to replace old State API with new Environment API, which allows to achieve the same functionality with less code, i.e., makes development easier and faster. | |||
Refactoring started in July and should have been done the same month. However, we only finished the work in August. Initial plan assumed 28 hours would be enough, but we spent 65 instead. We estimated planned time by relying on the number of public API calls of each component. That worked fine for small components, because the number of their public API calls was roughly equal to the number of their features, and features themselves were very small. However, it totally failed for UIQtTree, which contains 39% of UIQt module code, because there was no direct connection between public API and features. | |||
**Feature based development approach** was born as a result of UIQtTree refactoring struggle. Since Qt uses MVC, UIQtTree component consists of several classes. By the time UIQtTree could display and manage a hierarchy of items, the component was already 27K in size. We noticed UIQtTree started to require abnormal amount of development time even for tiny features. This was an obvious [quantitative complexity](http://kornerr.blogspot.com/2012/04/complexity-conservation-law-complexity.html) manifestation. | |||
We decided to separate UIQtTree into base part and additional ones. Base would only contain minimal code required by all features. Addition would contain specific feature code and could be safely modified. In the case of UIQtTree, item hierarchy display and modification is the minimal functionality, while item renaming is an addition. | |||
Here is a list of current UIQtTree features: | |||
<table> | |||
<tr> | |||
<th>**№**</th> | |||
<th>**Feature**</th> | |||
<th>**Description**</th> | |||
<th>**Size (B)**</th> | |||
<th>**Size (%)**</th> | |||
</tr> | |||
<tr> | |||
<td>1</td> | |||
<td>Base</td> | |||
<td>Allows to construct item hierarchy, modify it, and display it</td> | |||
<td>26966</td> | |||
<td>52</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td>Item open state</td> | |||
<td>Keeps track of collapsed/expanded item properties</td> | |||
<td>3094</td> | |||
<td>6</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td>Item renaming</td> | |||
<td>Allows to rename an item</td> | |||
<td>3471</td> | |||
<td>7</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td>Item selection</td> | |||
<td>Allows to get/set selected item</td> | |||
<td>2338</td> | |||
<td>5</td> | |||
</tr> | |||
<tr> | |||
<td>5</td> | |||
<td>Item value</td> | |||
<td>Provides 2nd and the rest columns for items, used by Property browser</td> | |||
<td>1307</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td>6</td> | |||
<td>Item value editing</td> | |||
<td>Allows to edit item values with a default editor widget</td> | |||
<td>1996</td> | |||
<td>4</td> | |||
</tr> | |||
<tr> | |||
<td>7</td> | |||
<td>Item value editing with combobox</td> | |||
<td>Provides combobox editor</td> | |||
<td>5819</td> | |||
<td>11</td> | |||
</tr> | |||
<tr> | |||
<td>8</td> | |||
<td>Item value editing with spinner</td> | |||
<td>Provides spinbox editor</td> | |||
<td>5290</td> | |||
<td>10</td> | |||
</tr> | |||
<tr> | |||
<td>9</td> | |||
<td>Menu</td> | |||
<td>Provides pop-up menu</td> | |||
<td>1248</td> | |||
<td>2</td> | |||
</tr> | |||
</table> | |||
Here's an example of UIQtTree Menu feature file: [TREE_MENU](https://bitbucket.org/ogstudio-history/mjin-pre-pre/src/0c4cc3c3213f4687c0f3bd6a5426a6054cadd79b/f/TREE_MENU.cpp?at=Studio+0.10&fileviewer=file-view-default). | |||
**Benefits of the approach** include: | |||
1. Faster code reading/understanding due to small size | |||
1. Easier and safer modification due to isolated code | |||
There's a drawback, too: new approach requires learning. | |||
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. | |||
[screenshot]: ../../images/2016-09-03_august-recap.png |
@@ -0,0 +1,9 @@ | |||
Title: Live session: 25 September 2016 | |||
Date: 2016-09-17 00:00 | |||
Category: News | |||
Slug: september-live-session-announcement | |||
Lang: en | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
We will hold [live session](https://www.livecoding.tv/kornerr) on [25 September 2016 at 12:00 CEST](http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2) | |||
It's time to create simple Mahjong solitaire game. |
@@ -0,0 +1,8 @@ | |||
Title: Live session is in 24 hours | |||
Date: 2016-09-24 00:00 | |||
Category: News | |||
Slug: september-live-session-announcement-tomorrow | |||
Lang: en | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe> | |||
Get ready for [live session](https://www.livecoding.tv/kornerr), it's about to happen in 24 hours! |
@@ -0,0 +1,12 @@ | |||
Title: A few words about live session yesterday | |||
Date: 2016-09-26 00:00 | |||
Category: News | |||
Slug: yesterdays-live-session-short-overview | |||
Lang: en | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/_t8TGhSgJG4" frameborder="0" allowfullscreen></iframe> | |||
Mahjong Solitaire was successfully created, and it took less than 4 hours. | |||
We will publish live session materials later this week. | |||
Thank you for joining us. |
@@ -0,0 +1,16 @@ | |||
Title: OGS Editor 0.10 and live session materials | |||
Date: 2016-10-03 00:00 | |||
Category: News | |||
Slug: ogs-editor-0.10 | |||
Lang: en | |||
![OGS Editor with Mahjong game][screenshot] | |||
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. | |||
* **OGS Editor 0.10** [is available at SourceForge](https://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/51_2016-10-01_06-39-48_0.10.0/). Simply unpack the archive and launch the run script. | |||
* **Mahjong Solitaire game** [is available at SourceForge](https://sourceforge.net/projects/osrpgcreation/files/Games/MahjongSolitaire/), too. Simply unpack the archive and launch the run script. | |||
* **Live session project** [is available at GitHub](https://github.com/OGStudio/mahjong-solitaire-livesession). | |||
* **Live session recording** [is available at YouTube](https://youtu.be/g8Tyj_YH2Qc?list=PLWMTZqE4MAMJzBnXS9qU_ObWnzJuskI3F). The video depicts the whole process of creating Mahjong Solitaire from scratch. | |||
[screenshot]: ../../images/2016-10-03_ogs-editor-0.10.png |
@@ -0,0 +1,50 @@ | |||
Title: September 2016 recap | |||
Date: 2016-10-11 00:00 | |||
Category: News | |||
Slug: 2016-september-recap | |||
Lang: en | |||
![Mahjong created during live session][screenshot] | |||
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. | |||
Purposes: | |||
* test our technologies and fix major bugs; | |||
* discover usability issues to fix in the next development iteration; | |||
* list exact steps to reproduce the game later; | |||
* create draft version of the game assets (models, textures, sounds, scripts). | |||
Upon stage completion, we announce live session date and show you the game preview. | |||
1. **Rehearsal.** Game recreation. | |||
Purposes: | |||
* make sure we have no major bugs left; | |||
* record the whole process of the game creation; | |||
* create final game assets. | |||
This is 99% the game we publish later. | |||
1. **Live session.** Reassembling the game live in front of you. | |||
Purposes: | |||
* show how easy it is to create a game; | |||
* walk you through nuances of game creation; | |||
* get feedback from you; | |||
* answer your questions. | |||
We take game assets from the rehearsal and use them to quickly reassemble the game in just a few hours. | |||
1. **Publishing.** The release of our technologies' last version, live session materials, and stand alone game. | |||
That's it for explaining September 2016 live session stages: draft, rehearsal, live session itself, and publishing. | |||
[screenshot]: ../../images/2016-10-11_september-recap.png |
@@ -0,0 +1,85 @@ | |||
Title: Technology showcases | |||
Date: 2016-10-31 00:00 | |||
Category: News | |||
Slug: 2016-tech-showcases | |||
Lang: en | |||
![Feature file in the background][screenshot] | |||
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 four live sessions in the past year, which gave birth to the following small games: | |||
<table> | |||
<tr> | |||
<th>**№**</th> | |||
<th>**Created game**</th> | |||
<th>**Live session date**</th> | |||
</tr> | |||
<tr> | |||
<td>1</td> | |||
<td>Whac-a-mole</td> | |||
<td>November 2015</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td>Rolling ball</td> | |||
<td>February 2016</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td>Domino</td> | |||
<td>May 2016</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td>Mahjong Solitaire</td> | |||
<td>September 2016</td> | |||
</tr> | |||
</table> | |||
We spent four months to prepare for these live sessions. It has been an extremely useful experience for us. However, 2017 will have only 2 live sessions. Why? We want to spend more time on actual development! | |||
**2017: live sessions + technical previews.** | |||
Starting next year, we will be doing technical previews twice a year. A technical preview is another way to show the state of our technology, but without creating new games and conducting live sessions. | |||
Here's an approximate schedule of technical previews and live sessions for 2017: | |||
<table> | |||
<tr> | |||
<th>**№**</th> | |||
<th>**Month**</th> | |||
<th>**Showcase type**</th> | |||
<th>**Topic**</th> | |||
</tr> | |||
<tr> | |||
<td>1</td> | |||
<td>January</td> | |||
<td>Technical preview</td> | |||
<td>Android platform support</td> | |||
</tr> | |||
<tr> | |||
<td>2</td> | |||
<td>April</td> | |||
<td>Live session</td> | |||
<td>Android game creation</td> | |||
</tr> | |||
<tr> | |||
<td>3</td> | |||
<td>July</td> | |||
<td>Technical preview</td> | |||
<td>To be announced</td> | |||
</tr> | |||
<tr> | |||
<td>4</td> | |||
<td>October</td> | |||
<td>Live session</td> | |||
<td>To be announced</td> | |||
</tr> | |||
</table> | |||
That's it for taking another look at 2015-2016 live sessions' format and introducing the new showcase format for 2017. | |||
[screenshot]: ../../images/2016-10-31_tech-showcases.png |
@@ -0,0 +1,54 @@ | |||
Title: October 2016 recap | |||
Date: 2016-11-19 00:00 | |||
Category: News | |||
Slug: 2016-october-recap | |||
Lang: en | |||
![Gaining Android support was like climbing a mountain for us][screenshot] | |||
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. We passed Java part pretty fast. Everything worked out of the box. Then came C++ part and related problems. | |||
**CMake. **To work with C++, Android Studio uses custom CMake, which conflicts with the system one. This was a clear indication that we had to set up a separate development environment specifically for Android. | |||
**KVM. **We got Ubuntu under VirtualBox installed. All went fine until we tried to use Android Emulator. Turned out, VirtualBox could not run Android Emulator, because a virtual machine cannot provide kernel virtualization inside already virtualized environment. | |||
**Chroot for Android. **Since we had a successful experience with chroot to build OGS Editor before, we decided to place Android development environment into chroot. With minor tweaking, we could finally run Android Emulator and build C++ project. | |||
**OSG. **Building OSG seemed like a piece of cake at the time. However, all we got was a crash. Thinking that we got it wrong the first time, we tried to rebuild OSG once again. And the same crash again. | |||
Searching for the problem did not reveal any hint. | |||
Nobody helped us at the OSG mailing list. | |||
We were in despair. | |||
**The search for OSG alternatives.** | |||
Since OSG community did not help us, we decided to search for an alternative open source project to fit our Android needs (and may be more). | |||
And we found it: [BabylonHX](http://babylonhx.gamestudiohx.com/). The home page looked awesome: it rendered WebGL in the background! We thought we finally found the gem we were looking for. However, the example on the home page simply did not work. | |||
You can probably understand our feelings at the time. | |||
**The success in building OSG.** | |||
We realized nobody would make OSG work under Android for us. We had to do it ourselves. | |||
Since [OSG 3.4 document](http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/178-building-openscenegraph-for-android-3-4) on building for Android was very short, we no longer trusted it and headed to [original OSG 3.0 document](http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/44-building-openscenegraph-for-android-3-0-3-0-1). While following it, we faced a dead link to third party dependencies. The search for an alternative download link lead us to a [2013 tutorial](https://xinyustudio.wordpress.com/2013/09/24/install-osg-for-android-on-ubuntu-13-04-step-by-step-tutorials/) on building OSG 3.0 for Android. | |||
After following the tutorial, we finally got OSG to run under Android! But there was a nuance: both OSG and Android tools used in the tutorial were ancient. In a few days, we gradually updated both OSG and Android tools to their latest versions. | |||
During the update process, we learned two things that prevented us from having OSG to work in the first place: | |||
* Android API headers changed in NDK r12 | |||
* OSG only works as a static library under Android | |||
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. | |||
[screenshot]: ../../images/2016-11-19_2016-october-recap.png | |||
@@ -0,0 +1,47 @@ | |||
Title: November 2016 recap | |||
Date: 2016-12-15 00:00 | |||
Category: News | |||
Slug: 2016-november-recap | |||
Lang: en | |||
![Construction of a building][screenshot] | |||
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. | |||
**Build-time** separation means MJIN becomes highly configurable and each platform gets specifically tailored MJIN build. | |||
**Run-time** separation means MJIN is divided into smaller libraries that are connected at run-time, which makes it easy to change functionality without rebuilding. | |||
**Run-time separation research.** | |||
Since run-time separation has more benefits, we started researching it first. The easiest way to achieve it was to use C API, because C ABI rules are much simpler than C++ one's. | |||
We created a sample project consisting of the application, library, and plugin: | |||
* **The application** has been linked to the library and used it to load the plugin. | |||
* **The library** provided functions to register plugins and call their functions. | |||
* **The plugin** provided functions for the library and called library functions. | |||
The research was successful: the sample project worked correctly under Linux and Windows. However, since MJIN is currently a single large entity, we postponed C API application until we finish build-time separation. | |||
**Build-time separation start.** | |||
We extracted the following modules from MJIN: | |||
* Android: provides Java Native Interface (JNI) to MJIN | |||
* Sound: provides access to OpenAL | |||
* UIQt: provides access to Qt UI | |||
Sound and UIQt modules are currently statically linked into MJIN library, while Android module is already a separate library due to JNI requirements. | |||
In the coming year, we're going to significantly restructure MJIN so that it suits as many platforms as possible. | |||
That's it for describing the start of MJIN library separation into modules. | |||
[screenshot]: ../../images/2016-12-15_2016-november-recap.png |
@@ -0,0 +1,24 @@ | |||
Title: Happy 2017 | |||
Date: 2016-12-31 00:00 | |||
Category: News | |||
Slug: 2017-happy-new-year | |||
Lang: en | |||
![Christmas tree][screenshot] | |||
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. | |||
Future live sessions and technical previews will add even more, so at some point in future (i hope not very distant), we will have everything we need to sit down and build our planned game from these blocks. | |||
So, the project isn't dead; the idea was not thrown away. But there is a lot of work to be done before we can start making the game, and there are only two of us, using our spare time. | |||
So. You want our game to become a reality? Join us. Together we will rule the galaxy. Or just wait and see. We didn't stop several years ago. We won't stop now. | |||
After all, there is only one way to create a fine tool (and it's our initial goal if you remember) - we need to use it ourselves. | |||
We will. Stay tuned. | |||
Happy 2017. Let it be simple. | |||
[screenshot]: ../../images/2016-12-31_happy-new-year.png |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,237 +80,116 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-august-recap.html">EN</a> | |||
<a href="../../en/news/2016-august-recap.html">EN</a> | |||
<a href="../../ru/news/2016-august-recap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">August 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-09-03_august-recap.png" alt="OGS Editor with a spherical scene node" /><figcaption>OGS Editor with a spherical scene node</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">August 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-09-03_august-recap.png" alt="OGS Editor with a spherical scene node" /></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> | |||
Here is a list of UIQt module components with their description and current code size: | |||
<table> | |||
<p>Here is a list of UIQt module components with their description and current code size:<table> | |||
<tr> | |||
<th> | |||
<strong>№</strong> | |||
</th> | |||
<th> | |||
<strong>Component</strong> | |||
</th> | |||
<th> | |||
<strong>Description</strong> | |||
</th> | |||
<th> | |||
<strong>Size (B)</strong> | |||
</th> | |||
<th> | |||
<strong>Size (%)</strong> | |||
</th> | |||
<th><strong>№</strong></th> | |||
<th><strong>Component</strong></th> | |||
<th><strong>Description</strong></th> | |||
<th><strong>Size (B)</strong></th> | |||
<th><strong>Size (%)</strong></th> | |||
</tr> | |||
<tr> | |||
<td> | |||
1 | |||
</td> | |||
<td> | |||
UIQtAction | |||
</td> | |||
<td> | |||
Actions (events) for menus | |||
</td> | |||
<td> | |||
11224 | |||
</td> | |||
<td> | |||
9 | |||
</td> | |||
<td>1</td> | |||
<td>UIQtAction</td> | |||
<td>Actions (events) for menus</td> | |||
<td>11224</td> | |||
<td>9</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
2 | |||
</td> | |||
<td> | |||
UIQtAux | |||
</td> | |||
<td> | |||
Initializes Qt and main window. Provides widget resolution by name to other components | |||
</td> | |||
<td> | |||
15518 | |||
</td> | |||
<td> | |||
12 | |||
</td> | |||
<td>2</td> | |||
<td>UIQtAux</td> | |||
<td>Initializes Qt and main window. Provides widget resolution by name to other components</td> | |||
<td>15518</td> | |||
<td>12</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
3 | |||
</td> | |||
<td> | |||
UIQtDock | |||
</td> | |||
<td> | |||
Widget docks | |||
</td> | |||
<td> | |||
5273 | |||
</td> | |||
<td> | |||
4 | |||
</td> | |||
<td>3</td> | |||
<td>UIQtDock</td> | |||
<td>Widget docks</td> | |||
<td>5273</td> | |||
<td>4</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
4 | |||
</td> | |||
<td> | |||
UIQtFileDialog | |||
</td> | |||
<td> | |||
File selection dialogs | |||
</td> | |||
<td> | |||
8960 | |||
</td> | |||
<td> | |||
7 | |||
</td> | |||
<td>4</td> | |||
<td>UIQtFileDialog</td> | |||
<td>File selection dialogs</td> | |||
<td>8960</td> | |||
<td>7</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
5 | |||
</td> | |||
<td> | |||
UIQtMenu | |||
</td> | |||
<td> | |||
Menus for main window and pop-ups (like node’s add/copy/paste/delete menu) | |||
</td> | |||
<td> | |||
4566 | |||
</td> | |||
<td> | |||
3 | |||
</td> | |||
<td>5</td> | |||
<td>UIQtMenu</td> | |||
<td>Menus for main window and pop-ups (like node's add/copy/paste/delete menu)</td> | |||
<td>4566</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
6 | |||
</td> | |||
<td> | |||
UIQtMenuBar | |||
</td> | |||
<td> | |||
Menu bar for main window | |||
</td> | |||
<td> | |||
4222 | |||
</td> | |||
<td> | |||
3 | |||
</td> | |||
<td>6</td> | |||
<td>UIQtMenuBar</td> | |||
<td>Menu bar for main window</td> | |||
<td>4222</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
7 | |||
</td> | |||
<td> | |||
UIQtRunner | |||
</td> | |||
<td> | |||
Allows to start QApplication | |||
</td> | |||
<td> | |||
2450 | |||
</td> | |||
<td> | |||
2 | |||
</td> | |||
<td>7</td> | |||
<td>UIQtRunner</td> | |||
<td>Allows to start QApplication</td> | |||
<td>2450</td> | |||
<td>2</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
8 | |||
</td> | |||
<td> | |||
UIQtThumbnailDialog | |||
</td> | |||
<td> | |||
Dialog with thumbnail images | |||
</td> | |||
<td> | |||
18615 | |||
</td> | |||
<td> | |||
14 | |||
</td> | |||
<td>8</td> | |||
<td>UIQtThumbnailDialog</td> | |||
<td>Dialog with thumbnail images</td> | |||
<td>18615</td> | |||
<td>14</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
9 | |||
</td> | |||
<td> | |||
UIQtToolBar | |||
</td> | |||
<td> | |||
Tool bar for main window | |||
</td> | |||
<td> | |||
4276 | |||
</td> | |||
<td> | |||
3 | |||
</td> | |||
<td>9</td> | |||
<td>UIQtToolBar</td> | |||
<td>Tool bar for main window</td> | |||
<td>4276</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
10 | |||
</td> | |||
<td> | |||
UIQtTree | |||
</td> | |||
<td> | |||
Provides complex widgets like Scene tree and Property browser | |||
</td> | |||
<td> | |||
51216 | |||
</td> | |||
<td> | |||
39 | |||
</td> | |||
<td>10</td> | |||
<td>UIQtTree</td> | |||
<td>Provides complex widgets like Scene tree and Property browser</td> | |||
<td>51216</td> | |||
<td>39</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
11 | |||
</td> | |||
<td> | |||
UIQtWidget | |||
</td> | |||
<td> | |||
Common widget properties like focus and visibility | |||
</td> | |||
<td> | |||
5465 | |||
</td> | |||
<td> | |||
4 | |||
</td> | |||
<td>11</td> | |||
<td>UIQtWidget</td> | |||
<td>Common widget properties like focus and visibility</td> | |||
<td>5465</td> | |||
<td>4</td> | |||
</tr> | |||
</table> | |||
</table></p> | |||
<p><strong>UIQt module refactoring</strong> purpose was to replace old State API with new Environment API, which allows to achieve the same functionality with less code, i.e., makes development easier and faster.</p> | |||
<p>Refactoring started in July and should have been done the same month. However, we only finished the work in August. Initial plan assumed 28 hours would be enough, but we spent 65 instead. We estimated planned time by relying on the number of public API calls of each component. That worked fine for small components, because the number of their public API calls was roughly equal to the number of their features, and features themselves were very small. However, it totally failed for UIQtTree, which contains 39% of UIQt module code, because there was no direct connection between public API and features.</p> | |||
<p><strong>Feature based development approach</strong> was born as a result of UIQtTree refactoring struggle. Since Qt uses MVC, UIQtTree component consists of several classes. By the time UIQtTree could display and manage a hierarchy of items, the component was already 27K in size. We noticed UIQtTree started to require abnormal amount of development time even for tiny features. This was an obvious <a href="http://kornerr.blogspot.com/2012/04/complexity-conservation-law-complexity.html">quantitative complexity</a> manifestation.</p> | |||
@@ -326,187 +197,91 @@ Common widget properties like focus and visibility | |||
<p>Here is a list of current UIQtTree features:</p> | |||
<table> | |||
<tr> | |||
<th> | |||
<strong>№</strong> | |||
</th> | |||
<th> | |||
<strong>Feature</strong> | |||
</th> | |||
<th> | |||
<strong>Description</strong> | |||
</th> | |||
<th> | |||
<strong>Size (B)</strong> | |||
</th> | |||
<th> | |||
<strong>Size (%)</strong> | |||
</th> | |||
<th>**№**</th> | |||
<th>**Feature**</th> | |||
<th>**Description**</th> | |||
<th>**Size (B)**</th> | |||
<th>**Size (%)**</th> | |||
</tr> | |||
<tr> | |||
<td> | |||
1 | |||
</td> | |||
<td> | |||
Base | |||
</td> | |||
<td> | |||
Allows to construct item hierarchy, modify it, and display it | |||
</td> | |||
<td> | |||
26966 | |||
</td> | |||
<td> | |||
52 | |||
</td> | |||
<td>1</td> | |||
<td>Base</td> | |||
<td>Allows to construct item hierarchy, modify it, and display it</td> | |||
<td>26966</td> | |||
<td>52</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
2 | |||
</td> | |||
<td> | |||
Item open state | |||
</td> | |||
<td> | |||
Keeps track of collapsed/expanded item properties | |||
</td> | |||
<td> | |||
3094 | |||
</td> | |||
<td> | |||
6 | |||
</td> | |||
<td>2</td> | |||
<td>Item open state</td> | |||
<td>Keeps track of collapsed/expanded item properties</td> | |||
<td>3094</td> | |||
<td>6</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
3 | |||
</td> | |||
<td> | |||
Item renaming | |||
</td> | |||
<td> | |||
Allows to rename an item | |||
</td> | |||
<td> | |||
3471 | |||
</td> | |||
<td> | |||
7 | |||
</td> | |||
<td>3</td> | |||
<td>Item renaming</td> | |||
<td>Allows to rename an item</td> | |||
<td>3471</td> | |||
<td>7</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
4 | |||
</td> | |||
<td> | |||
Item selection | |||
</td> | |||
<td> | |||
Allows to get/set selected item | |||
</td> | |||
<td> | |||
2338 | |||
</td> | |||
<td> | |||
5 | |||
</td> | |||
<td>4</td> | |||
<td>Item selection</td> | |||
<td>Allows to get/set selected item</td> | |||
<td>2338</td> | |||
<td>5</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
5 | |||
</td> | |||
<td> | |||
Item value | |||
</td> | |||
<td> | |||
Provides 2nd and the rest columns for items, used by Property browser | |||
</td> | |||
<td> | |||
1307 | |||
</td> | |||
<td> | |||
3 | |||
</td> | |||
<td>5</td> | |||
<td>Item value</td> | |||
<td>Provides 2nd and the rest columns for items, used by Property browser</td> | |||
<td>1307</td> | |||
<td>3</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
6 | |||
</td> | |||
<td> | |||
Item value editing | |||
</td> | |||
<td> | |||
Allows to edit item values with a default editor widget | |||
</td> | |||
<td> | |||
1996 | |||
</td> | |||
<td> | |||
4 | |||
</td> | |||
<td>6</td> | |||
<td>Item value editing</td> | |||
<td>Allows to edit item values with a default editor widget</td> | |||
<td>1996</td> | |||
<td>4</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
7 | |||
</td> | |||
<td> | |||
Item value editing with combobox | |||
</td> | |||
<td> | |||
Provides combobox editor | |||
</td> | |||
<td> | |||
5819 | |||
</td> | |||
<td> | |||
11 | |||
</td> | |||
<td>7</td> | |||
<td>Item value editing with combobox</td> | |||
<td>Provides combobox editor</td> | |||
<td>5819</td> | |||
<td>11</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
8 | |||
</td> | |||
<td> | |||
Item value editing with spinner | |||
</td> | |||
<td> | |||
Provides spinbox editor | |||
</td> | |||
<td> | |||
5290 | |||
</td> | |||
<td> | |||
10 | |||
</td> | |||
<td>8</td> | |||
<td>Item value editing with spinner</td> | |||
<td>Provides spinbox editor</td> | |||
<td>5290</td> | |||
<td>10</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
9 | |||
</td> | |||
<td> | |||
Menu | |||
</td> | |||
<td> | |||
Provides pop-up menu | |||
</td> | |||
<td> | |||
1248 | |||
</td> | |||
<td> | |||
2 | |||
</td> | |||
<td>9</td> | |||
<td>Menu</td> | |||
<td>Provides pop-up menu</td> | |||
<td>1248</td> | |||
<td>2</td> | |||
</tr> | |||
</table> | |||
<p>Here’s an example of UIQtTree Menu feature file: <a href="https://bitbucket.org/ogstudio-history/mjin-pre-pre/src/0c4cc3c3213f4687c0f3bd6a5426a6054cadd79b/f/TREE_MENU.cpp?at=Studio+0.10&fileviewer=file-view-default">TREE_MENU</a>.</p> | |||
<p>Here's an example of UIQtTree Menu feature file: <a href="https://bitbucket.org/ogstudio-history/mjin-pre-pre/src/0c4cc3c3213f4687c0f3bd6a5426a6054cadd79b/f/TREE_MENU.cpp?at=Studio+0.10&fileviewer=file-view-default">TREE_MENU</a>.</p> | |||
<p><strong>Benefits of the approach</strong> include:</p> | |||
<ol type="1"> | |||
<ol> | |||
<li>Faster code reading/understanding due to small size</li> | |||
<li>Easier and safer modification due to isolated code</li> | |||
</ol> | |||
<p>There’s a drawback, too: new approach requires learning.</p> | |||
<p>That’s it for the most important technical details about development in August: UIQt module, its refactoring, a new feature based development approach, and its benefits.</p> | |||
</div> | |||
<p>There's a drawback, too: new approach requires learning.</p> | |||
<p>That's it for the most important technical details about development in August: UIQt module, its refactoring, a new feature based development approach, and its benefits.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,33 +80,35 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-november-recap.html">EN</a> | |||
<a href="../../en/news/2016-november-recap.html">EN</a> | |||
<a href="../../ru/news/2016-november-recap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-november-recap.html">November 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-12-15_2016-november-recap.png" alt="Construction of a building" /><figcaption>Construction of a building</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-november-recap.html">November 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-12-15_2016-november-recap.png" alt="Construction of a building" /></p> | |||
<p>This article describes the start of MJIN library separation into modules.</p> | |||
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don’t need UIQt for Android.</p> | |||
<p>We decided to have a look at two approaches to separate MJIN into modules: build-time separation and run-time one. <strong>Build-time</strong> separation means MJIN becomes highly configurable and each platform gets specifically tailored MJIN build. <strong>Run-time</strong> separation means MJIN is divided into smaller libraries that are connected at run-time, which makes it easy to change functionality without rebuilding.</p> | |||
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt for Android.</p> | |||
<p>We decided to have a look at two approaches to separate MJIN into modules: build-time separation and run-time one. | |||
<strong>Build-time</strong> separation means MJIN becomes highly configurable and each platform gets specifically tailored MJIN build. | |||
<strong>Run-time</strong> separation means MJIN is divided into smaller libraries that are connected at run-time, which makes it easy to change functionality without rebuilding.</p> | |||
<p><strong>Run-time separation research.</strong></p> | |||
<p>Since run-time separation has more benefits, we started researching it first. The easiest way to achieve it was to use C API, because C ABI rules are much simpler than C++ one’s.</p> | |||
<p>Since run-time separation has more benefits, we started researching it first. The easiest way to achieve it was to use C API, because C ABI rules are much simpler than C++ one's.</p> | |||
<p>We created a sample project consisting of the application, library, and plugin:</p> | |||
<ul> | |||
<li><strong>The application</strong> has been linked to the library and used it to load the plugin.</li> | |||
@@ -130,11 +124,15 @@ | |||
<li>UIQt: provides access to Qt UI</li> | |||
</ul> | |||
<p>Sound and UIQt modules are currently statically linked into MJIN library, while Android module is already a separate library due to JNI requirements.</p> | |||
<p>In the coming year, 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> | |||
</div> | |||
<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> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,35 +80,37 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-october-recap.html">EN</a> | |||
<a href="../../en/news/2016-october-recap.html">EN</a> | |||
<a href="../../ru/news/2016-october-recap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-october-recap.html">October 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-11-19_2016-october-recap.png" alt="Gaining Android support was like climbing a mountain for us" /><figcaption>Gaining Android support was like climbing a mountain for us</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-october-recap.html">October 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-11-19_2016-october-recap.png" alt="Gaining Android support was like climbing a mountain for us" /></p> | |||
<p>This article describes how we spent a month building OpenSceneGraph (OSG) for Android: the first attempt to build OSG, the search for OSG alternatives, and the success in building OSG.</p> | |||
<p><strong>First attempt to build OSG.</strong></p> | |||
<p>Having no prior knowledge of Android development, we grabbed the latest Android Studio and started doing beginner tutorials. We passed Java part pretty fast. Everything worked out of the box. Then came C++ part and related problems.</p> | |||
<p><strong>CMake. </strong>To work with C++, Android Studio uses custom CMake, which conflicts with the system one. This was a clear indication that we had to set up a separate development environment specifically for Android.</p> | |||
<p><strong>KVM. </strong>We got Ubuntu under VirtualBox installed. All went fine until we tried to use Android Emulator. Turned out, VirtualBox could not run Android Emulator, because a virtual machine cannot provide kernel virtualization inside already virtualized environment.</p> | |||
<p><strong>Chroot for Android. </strong>Since we had a successful experience with chroot to build OGS Editor before, we decided to place Android development environment into chroot. With minor tweaking, we could finally run Android Emulator and build C++ project.</p> | |||
<p><strong>OSG. </strong>Building OSG seemed like a piece of cake at the time. However, all we got was a crash. Thinking that we got it wrong the first time, we tried to rebuild OSG once again. And the same crash again. Searching for the problem did not reveal any hint. Nobody helped us at the OSG mailing list.</p> | |||
<p>**CMake. **To work with C++, Android Studio uses custom CMake, which conflicts with the system one. This was a clear indication that we had to set up a separate development environment specifically for Android.</p> | |||
<p>**KVM. **We got Ubuntu under VirtualBox installed. All went fine until we tried to use Android Emulator. Turned out, VirtualBox could not run Android Emulator, because a virtual machine cannot provide kernel virtualization inside already virtualized environment.</p> | |||
<p>**Chroot for Android. **Since we had a successful experience with chroot to build OGS Editor before, we decided to place Android development environment into chroot. With minor tweaking, we could finally run Android Emulator and build C++ project.</p> | |||
<p>**OSG. **Building OSG seemed like a piece of cake at the time. However, all we got was a crash. Thinking that we got it wrong the first time, we tried to rebuild OSG once again. And the same crash again. | |||
Searching for the problem did not reveal any hint. | |||
Nobody helped us at the OSG mailing list.</p> | |||
<p>We were in despair.</p> | |||
<p><strong>The search for OSG alternatives.</strong></p> | |||
<p>Since OSG community did not help us, we decided to search for an alternative open source project to fit our Android needs (and may be more).</p> | |||
@@ -131,10 +125,14 @@ | |||
<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> | |||
</div> | |||
<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> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,35 +80,41 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-roadmap.html">EN</a> | |||
<a href="../../en/news/2016-roadmap.html">EN</a> | |||
<a href="../../ru/news/2016-roadmap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-roadmap.html">Roadmap for 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-12-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, according to the <a href="2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates.</p> | |||
<p>Here’s the revised roadmap for the first half of 2016:</p> | |||
<ol type="1"> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-roadmap.html">Roadmap for 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-12-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, according to the <a href="2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates.</p> | |||
<p>Here's the revised roadmap for the first half of 2016:</p> | |||
<ol> | |||
<li>Editor + Player 0.8.0 (January 2016): Sound system, Whac-a-mole game with sounds</li> | |||
<li>Editor + Player 0.9.0 (April 2016): Networking system, simple ping pong game for 2 players over the net</li> | |||
<li>Editor + Player 0.10.0 (July 2016): Polishing, “Shuan” prototype</li> | |||
<li>Editor + Player 0.10.0 (July 2016): Polishing, "Shuan" prototype</li> | |||
</ol> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,47 +80,45 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-september-recap.html">EN</a> | |||
<a href="../../en/news/2016-september-recap.html">EN</a> | |||
<a href="../../ru/news/2016-september-recap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-september-recap.html">September 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-11 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-10-11_september-recap.png" alt="Mahjong created during live session" /><figcaption>Mahjong created during live session</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-september-recap.html">September 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-11 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-10-11_september-recap.png" alt="Mahjong created during live session" /></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 type="1"> | |||
<p>Even though live session takes only a few hours, we devote a whole month to prepare for it. Let's have a look at live session stages in detail.</p> | |||
<ol> | |||
<li><p><strong>Draft.</strong> Game creation for the first time.</p> | |||
<p>Purposes:</p> | |||
<ul> | |||
<li>test our technologies and fix major bugs;</li> | |||
<li>discover usability issues to fix in the next development iteration;</li> | |||
<li>list exact steps to reproduce the game later;</li> | |||
<li>create draft version of the game assets (models, textures, sounds, scripts).</li> | |||
</ul> | |||
<li>create draft version of the game assets (models, textures, sounds, scripts).</li></ul> | |||
<p>Upon stage completion, we announce live session date and show you the game preview.</p></li> | |||
<li><p><strong>Rehearsal.</strong> Game recreation.</p> | |||
<p>Purposes:</p> | |||
<ul> | |||
<li>make sure we have no major bugs left;</li> | |||
<li>record the whole process of the game creation;</li> | |||
<li>create final game assets.</li> | |||
</ul> | |||
<li>create final game assets.</li></ul> | |||
<p>This is 99% the game we publish later.</p></li> | |||
<li><p><strong>Live session.</strong> Reassembling the game live in front of you.</p> | |||
<p>Purposes:</p> | |||
@@ -136,15 +126,18 @@ | |||
<li>show how easy it is to create a game;</li> | |||
<li>walk you through nuances of game creation;</li> | |||
<li>get feedback from you;</li> | |||
<li>answer your questions.</li> | |||
</ul> | |||
<li>answer your questions.</li></ul> | |||
<p>We take game assets from the rehearsal and use them to quickly reassemble the game in just a few hours.</p></li> | |||
<li><p><strong>Publishing.</strong> The release of our technologies’ last version, live session materials, and stand alone game.</p></li> | |||
<li><p><strong>Publishing.</strong> The release of our technologies' last version, live session materials, and stand alone game.</p></li> | |||
</ol> | |||
<p>That’s it for explaining September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p> | |||
</div> | |||
<p>That's it for explaining September 2016 live session stages: draft, rehearsal, live session itself, and publishing.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,168 +80,102 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2016-tech-showcases.html">EN</a> | |||
<a href="../../en/news/2016-tech-showcases.html">EN</a> | |||
<a href="../../ru/news/2016-tech-showcases.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-tech-showcases.html">Technology showcases</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-10-31_tech-showcases.png" alt="Feature file in the background" /><figcaption>Feature file in the background</figcaption> | |||
</figure> | |||
<p>In this article, we take another look at 2015-2016 live sessions’ format and introduce a new showcase format for 2017.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-tech-showcases.html">Technology showcases</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-10-31_tech-showcases.png" alt="Feature file in the background" /></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> | |||
As you know, we use live sessions to show the state of our technology and create a small functional game from scratch. We have conducted four live sessions in the past year, which gave birth to the following small games: | |||
<p>As you know, we use live sessions to show the state of our technology and create a small functional game from scratch. We have conducted four live sessions in the past year, which gave birth to the following small games:</p> | |||
<table> | |||
<tr> | |||
<th> | |||
<strong>№</strong> | |||
</th> | |||
<th> | |||
<strong>Created game</strong> | |||
</th> | |||
<th> | |||
<strong>Live session date</strong> | |||
</th> | |||
<th>**№**</th> | |||
<th>**Created game**</th> | |||
<th>**Live session date**</th> | |||
</tr> | |||
<tr> | |||
<td> | |||
1 | |||
</td> | |||
<td> | |||
Whac-a-mole | |||
</td> | |||
<td> | |||
November 2015 | |||
</td> | |||
<td>1</td> | |||
<td>Whac-a-mole</td> | |||
<td>November 2015</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
2 | |||
</td> | |||
<td> | |||
Rolling ball | |||
</td> | |||
<td> | |||
February 2016 | |||
</td> | |||
<td>2</td> | |||
<td>Rolling ball</td> | |||
<td>February 2016</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
3 | |||
</td> | |||
<td> | |||
Domino | |||
</td> | |||
<td> | |||
May 2016 | |||
</td> | |||
<td>3</td> | |||
<td>Domino</td> | |||
<td>May 2016</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
4 | |||
</td> | |||
<td> | |||
Mahjong Solitaire | |||
</td> | |||
<td> | |||
September 2016 | |||
</td> | |||
<td>4</td> | |||
<td>Mahjong Solitaire</td> | |||
<td>September 2016</td> | |||
</tr> | |||
</table> | |||
<p>We spent four months to prepare for these live sessions. It has been an extremely useful experience for us. However, 2017 will have only 2 live sessions. Why? We want to spend more time on actual development!</p> | |||
<p><strong>2017: live sessions + technical previews.</strong></p> | |||
<p>Starting next year, we will be doing technical previews twice a year. A technical preview is another way to show the state of our technology, but without creating new games and conducting live sessions.</p> | |||
Here’s an approximate schedule of technical previews and live sessions for 2017: | |||
<p>Here's an approximate schedule of technical previews and live sessions for 2017:</p> | |||
<table> | |||
<tr> | |||
<th> | |||
<strong>№</strong> | |||
</th> | |||
<th> | |||
<strong>Month</strong> | |||
</th> | |||
<th> | |||
<strong>Showcase type</strong> | |||
</th> | |||
<th> | |||
<strong>Topic</strong> | |||
</th> | |||
<th>**№**</th> | |||
<th>**Month**</th> | |||
<th>**Showcase type**</th> | |||
<th>**Topic**</th> | |||
</tr> | |||
<tr> | |||
<td> | |||
1 | |||
</td> | |||
<td> | |||
January | |||
</td> | |||
<td> | |||
Technical preview | |||
</td> | |||
<td> | |||
Android platform support | |||
</td> | |||
<td>1</td> | |||
<td>January</td> | |||
<td>Technical preview</td> | |||
<td>Android platform support</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
2 | |||
</td> | |||
<td> | |||
April | |||
</td> | |||
<td> | |||
Live session | |||
</td> | |||
<td> | |||
Android game creation | |||
</td> | |||
<td>2</td> | |||
<td>April</td> | |||
<td>Live session</td> | |||
<td>Android game creation</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
3 | |||
</td> | |||
<td> | |||
July | |||
</td> | |||
<td> | |||
Technical preview | |||
</td> | |||
<td> | |||
To be announced | |||
</td> | |||
<td>3</td> | |||
<td>July</td> | |||
<td>Technical preview</td> | |||
<td>To be announced</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
4 | |||
</td> | |||
<td> | |||
October | |||
</td> | |||
<td> | |||
Live session | |||
</td> | |||
<td> | |||
To be announced | |||
</td> | |||
<td>4</td> | |||
<td>October</td> | |||
<td>Live session</td> | |||
<td>To be announced</td> | |||
</tr> | |||
</table> | |||
<p>That’s it for taking another look at 2015-2016 live sessions’ format and introducing the new showcase format for 2017.</p> | |||
</div> | |||
<p>That's it for taking another look at 2015-2016 live sessions' format and introducing the new showcase format for 2017.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,31 @@ | |||
Title: The year of challenges | |||
Date: 2017-01-25 00:00 | |||
Category: News | |||
Slug: the-year-of-challenges | |||
Lang: en | |||
![Rocket launch at Baikonur][screenshot] | |||
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: | |||
![Rendering cubes on Android][android-rendering] | |||
Some people would consider this a failure. We don't. We see a chance to start low and jump high! | |||
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. | |||
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. | |||
And right after we get those cubes rendered on iOS, we start to work on bringing them to Web. | |||
**You got it right: we challenge ourselves with support for Android, iOS, and Web this year.** | |||
That's it for describing our plans for 2017. | |||
[screenshot]: ../../images/2017-01_the-year-of-challenges.png | |||
[android-rendering]: ../../images/2017-01_mjin-android-gles.png | |||
@@ -0,0 +1,48 @@ | |||
Title: Let's go | |||
Date: 2017-03-16 00:00 | |||
Category: News | |||
Slug: lets-go | |||
Lang: en | |||
![Gagarin's words][screenshot] | |||
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](https://twitter.com/OpenGameStudio/status/826816343433498627) and [Web](https://twitter.com/OpenGameStudio/status/829731986264698881) 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. | |||
Since it took us about four months to get to mobile and web platforms, we decided to share our knowledge and help OpenSceneGraph community with a guide that shows how to use OpenSceneGraph on desktop, mobile, and web. We believe the more widespread OpenSceneGraph is, the stronger our technology becomes. As Isaac Newton said, "If I have seen further, it is by standing on the shoulders of giants." OpenSceneGraph is our giant. | |||
**Tutorial tool** | |||
Having conducted four live sessions before, it was clear the guide needs videos depicting every nuance. However, bare video alone is only good for showing what to do and not for explaining why do it in a certain way. That's why we decided to combine video with text in the forms of video subtitles and separate articles. | |||
To combine text and video, we first tried [OpenShot](http://openshotvideo.com). It worked well, but we quickly saw its limitations: | |||
* Too much time is spent on adjusting time frames and animations | |||
* Project file and original resources are hard to track with VCS | |||
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](http://mltframework.org), 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 | |||
text 5 Let's install Blender | |||
video 0:6 install_blender.mp4 | |||
text 5 Installing it with apt | |||
video 6:26 install_blender.mp4 | |||
text 5 We're still installing it | |||
video 26:56 install_blender.mp4 | |||
text 5 Congratulations! We just finished installing Blender | |||
``` | |||
This is the actual script. See the final result [here](https://github.com/ogstudio/tutorial-tool). | |||
That's it for describing our progress in January and February of 2017: rendering under iOS/Web and the new tutorial tool. | |||
[screenshot]: ../../images/2017-03_lets-go.png |
@@ -0,0 +1,35 @@ | |||
Title: It's all fine | |||
Date: 2017-04-07 00:00 | |||
Category: News | |||
Slug: its-all-fine | |||
Lang: en | |||
![Flight of a rocket][screenshot] | |||
This article describes creation of the first four OpenSceneGraph tutorials in March 2017. | |||
The [first four OpenSceneGraph tutorials](https://github.com/OGStudio/openscenegraph-cross-platform-guide/) 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: | |||
1. Record original video depicting one or more steps | |||
1. Name the steps as clear as possible | |||
1. Select the parts of the video that display the step | |||
1. Remove the parts of the video that bare no value, e.g., waiting in the middle of compilation | |||
1. Select a single frame to best represent current step, e.g., typing a specific command | |||
1. Add a detailed description to article, why current step should have been taken | |||
1. Proof-read the article | |||
1. Correct typos and video timing | |||
1. Review the whole video | |||
1. Upload the video to YouTube with timestamps of steps for easier navigation | |||
Some of those tasks had to be repeated multiple times until the combination of video, text, and article was clear and logical. | |||
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. | |||
That's it for describing creation of the first four OpenSceneGraph tutorials in March 2017. | |||
[screenshot]: ../../images/2017-04_its-all-fine.png |
@@ -0,0 +1,60 @@ | |||
Title: OpenSceneGraph sample | |||
Date: 2017-05-12 00:00 | |||
Category: News | |||
Slug: osg-sample | |||
Lang: en | |||
![Rocket in the distance][screenshot] | |||
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](https://github.com/OGStudio/openscenegraph-cross-platform-guide-application) that would run under Linux, macOS, Windows, and Android. | |||
The application is very basic and has the following features: | |||
1. Render window creation | |||
1. Model loading | |||
1. Model rendering with simple GLSL shaders | |||
1. Model motion with a mouse under Linux, macOS, Windows and a finger under Android | |||
Creating the tutorials for Linux, macOS, Windows was so easy and straightforward, that it only took us half a month. We spent the second half of the month creating Android tutorial. | |||
Our [first successful Android build][oct16_article] last year included hacks and non-obvious steps to make OpenSceneGraph run under Android. This time we wanted a cleaner, faster, and cheaper approach. | |||
The approach we ended up with requires just a few files and a few changes to the original Android Studio project (with C++ support) to make sample OpenSceneGraph application run under Android. | |||
Here's a quick rundown of the files: | |||
1. GLES2 surface | |||
1. Render activity to render to the surface | |||
1. Native library Java interface | |||
1. Native library C++ implementation | |||
1. CMake file to build native library | |||
1. Render activity layout | |||
1. Model to display | |||
Here's a quick rundown of the project changes: | |||
1. Update Android manifest to use GLES2 and render activity | |||
1. Reference native library's CMake file in the project's CMake file | |||
OpenSceneGraph documentation suggests building OpenSceneGraph outside Android Studio with CMake. However, this approach has the following limitations: | |||
1. You have to build OpenSceneGraph for each target architecture | |||
1. You have to manually copy/reference built OpenSceneGraph libraries into Android Studio project | |||
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. | |||
That's it for describing the creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017. | |||
[screenshot]: ../../images/2017-05_osg-sample.png | |||
[oct16_article]: 2016-october-recap.html |
@@ -0,0 +1,50 @@ | |||
Title: iOS tutorial | |||
Date: 2017-06-08 10:00 | |||
Category: News | |||
Slug: ios-tutorial | |||
Lang: en | |||
![Earth and a rocket](../../images/2017-06-08-ios-refactoring.png) | |||
This article describes problems we faced during the creation of iOS tutorial in May 2017. | |||
[This February](https://twitter.com/OpenGameStudio/status/826816343433498627) 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** | |||
The first question we had to answer was: should the sample application be part of Xcode project or be a separately built library? | |||
We had to consider the following facts: | |||
1. Xcode project can use C++ directly (thanks to Objective-C++) without stuff like JNI | |||
* There's no need for a separate library (+ application) | |||
* Creating a separate library is an additional work (- library) | |||
1. OpenSceneGraph builds libraries | |||
* It's easier to use standard build process (+ library) | |||
* It's harder to create custom build process just for a single platform (- application) | |||
1. OpenSceneGraph uses CMake build system, which is not supported by Xcode | |||
* Xcode project can't include CMake files (- application) | |||
* It's easy to create custom CMake file that includes OpenSceneGraph CMake file to build a single library (+ library) | |||
1. CMake can generate Xcode project | |||
* It's possible to create a CMake file that builds both OpenSceneGraph and the sample application (+ application) | |||
* Xcode is the de-facto tool to create Xcode projects; it's easier to use standard build process (+ library) | |||
After evaluating the pros and cons of each approach, we decided to turn the sample application into a library and include it in Xcode project. The downside of this approach is that simulator and real device builds need separate library builds. | |||
**Refactoring** | |||
The second question we had to answer was: should there be a single source code base for all platforms or several ones, one for each platform? | |||
While doing Android tutorial we used single source code base because it worked fine for desktop and Android. As we started to work through iOS tutorial, it became apparent that particular features may or may not work on some platforms. For example, one feature may work on desktop and iOS, but not Android. Another feature may work on iOS and Android, but not desktop. Since we didn't want to pollute the code with #ifdefs, we started to put each platform combination into a separate file. The number of files grew rapidly. The files were reusable, but it became extremely hard to see the whole picture. | |||
At this point, we realized there's the second question. We reminded ourselves that the main purpose of the sample source code is to teach how to do basic OpenSceneGraph things, not create a reusable library with API that is stable across several years. | |||
That's when our home grown feature tool came into play. With its help, we separated the code into several parts, which in the end produce just two files for each platform: | |||
1. functions.h - contains reusable classless functions | |||
1. main.h - contains the rest of the sample application code | |||
Their contents differ slightly for each platform, but it's easy to see the whole picture now. | |||
That's it for describing problems we faced during the creation of iOS tutorial in May 2017. | |||
@@ -0,0 +1,31 @@ | |||
Title: OpenSceneGraph cross-platform guide | |||
Date: 2017-07-17 00:00 | |||
Category: News | |||
Slug: openscenegraph-cross-platform-guide | |||
Lang: en | |||
![OpenSceneGraph sample application in desktop and mobile](../../images/2017-07-openscenegraph-guide.png) | |||
This article summarizes the work we did to produce OpenSceneGraph cross-platform guide. | |||
June marked the finish of [OpenSceneGraph cross-platform guide](https://github.com/OGStudio/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](https://github.com/OGStudio/openscenegraph-cross-platform-guide/tree/master/1.10.SampleWeb) using Emscripten. | |||
In case you missed it, here's a [link to the final application](https://ogstudio.github.io/openscenegraph-cross-platform-guide/). Open it in your web browser. | |||
We started to compose the guide in February when we successfully managed to render a simple model on mobile and web. We spent 120 hours in five months to produce ten tutorials of the guide. | |||
We have been doing OpenSceneGraph cross-platform guide for two main reasons: | |||
1. Keep OpenSceneGraph cross-platform knowledge in easily accessible and reproducible form | |||
1. Share the knowledge with OpenSceneGraph community to make it stronger | |||
We believe we succeeded in both. Here's why: | |||
1. The guide repository has more [stars](https://github.com/OGStudio/openscenegraph-cross-platform-guide/stargazers) (aka "likes") than any other repository of ours | |||
1. OpenSceneGraph project leader Robert Osfield said ["Great work"](http://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg74815.html), which means a lot | |||
1. The guide already has [two issues](https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues) | |||
Reaching our goal of researching OpenSceneGraph cross-platform development and providing the knowledge back to the community just made us happier. | |||
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 [promised in January](the-year-of-challenges.html). | |||
That's it for summarizing the work we did to produce OpenSceneGraph cross-platform guide. |
@@ -0,0 +1,62 @@ | |||
Title: Scripting research | |||
Date: 2017-08-16 00:00 | |||
Category: News | |||
Slug: scripting-research | |||
Lang: en | |||
![Textbook with a text](../../images/2017-08-scripting-research.png) | |||
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](http://swig.org/). 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. | |||
Having the main application in Python works fine for the desktop, but not so great for mobile and web, where C and C++ are the only natively supported cross-platform languages. There are projects like [Kivy](https://kivy.org), which allow you to develop cross-platform applications in Python, but they are not supported natively. This means it's a lot of headaches when Android and iOS APIs change. | |||
Having the main application in C/C++ and the need to support scripting means that a scripting language should be interpreted by the application. This is what SWIG, Kivy, and similar projects are not meant to fulfill. | |||
**Our secondary goal for using a scripting language was to allow to extend C++ code.** | |||
OGS Editor 0.10 has some modules written in C++, and some in Python. The modules are equal from the perspective of the main application; it doesn't care what language the module is written in. | |||
To achieve such flexibility, we introduced a so-called Environment. Each module would register the keys it responds to, and Environment would deliver corresponding messages. | |||
Technically such behaviour is achieved by inheriting a base class and overriding its methods in both C++ and a scripting language. | |||
**First, we evaluated Python for the role of cross-platform scripting language.** | |||
Since we already used Python, we started to research the possibility to run Python code on every supported platform. The result was disappointing because CPython (the default Python implementation used on the desktop) does not mention mobile and web platforms. We only found some years old forks of CPython that were claimed to work either on Android or iOS. Such a disarray was not suitable for us. | |||
We also had a look at [PyPy](http://pypy.org), another Python implementation. It also did not mention support for mobile and web platforms. | |||
This was a clear indication that Python community doesn't care for mobile and web platforms. Or that nobody had time to provide the information about building Python on such platforms. Either way, it was not acceptable for us. | |||
**Second, we evaluated [Wren](http://wren.io) for the role of cross-platform scripting language.** | |||
Wren was the first scripting language we stumbled upon in the long list of non-mainstream scripting languages. | |||
Wren claimed to be small and easy to learn. Wren also claimed to be intended for embedding in applications. Ironically, the author [had no time to document how to do the embedding in the first place](http://wren.io/embedding-api.html). When [we asked for the time estimates of publishing](https://github.com/munificent/wren/issues/465) the critical part of the documentation, [we just got a reference to another issue](https://github.com/munificent/wren/issues/402) where the other guy was asking the same question half a year ago! | |||
That's when we ended our relationship with Wren. | |||
**Third, we evaluated [Chai](http://chaiscript.com) for the role of cross-platform scripting language.** | |||
Chai was in the long list of non-mainstream scripting languages, too. Chai was promising because it claimed to be specifically tailored for embedding in a C++ application. | |||
We successfully managed to call a C++ function from inside Chai but failed to call a member function. [We asked for help](http://discourse.chaiscript.com/t/cannot-call-a-function-that-accepts-a-string-and-a-vector/334), but nobody replied. | |||
We had to end our relationship with Chai. | |||
**Fourth, we evaluated Lua for the role of cross-platform scripting language.** | |||
Lua is the mainstream language for embedding. So we decided to try the obvious choice. Documentation looked promising, too. However, by the end of reading the [C API](https://www.lua.org/pil/24.html) chapter we had no clue how to inherit a class inside Lua. | |||
This led us to search for libraries that wrap Lua C API syntax into something more meaningful for C++. That's how we found [Sol2](http://sol2.rtfd.io). Just as before, the first attempt to call a C++ member function from Lua failed. But unlike before, we asked for help and [got the help](https://github.com/ThePhD/sol2/issues/465)! This was a refreshing surprise for us. | |||
Next, we tried to inherit a class in Lua and override the class methods. We failed, but [the author helped us out again](https://github.com/ThePhD/sol2/issues/468). In the end, we succeeded in inheriting a class and overriding its behaviour. | |||
That's when we understood it's a start for a long and mutual relationship with Sol2/Lua. | |||
**This search for a scripting language taught us one important lesson: people matter, not technologies.** | |||
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. | |||
That's it for describing scripting research in July 2017. | |||
@@ -0,0 +1,38 @@ | |||
Title: The birth of MJIN world | |||
Date: 2017-09-10 00:00 | |||
Category: News | |||
Slug: mjin-world-birth | |||
Lang: en | |||
![An explosion giving birth to something new](../../images/2017-09-mjin-world-birth.png) | |||
This article describes the birth of MJIN world in August 2017. | |||
**mjin-player** | |||
As you know, [we spent July to research scripting](scripting-research.html). We found a solution that satisfies the following criteria. Scripts should: | |||
1. run unchanged on all supported platforms | |||
1. allow extending C++ code | |||
We have verified the second criterion by writing a sample application. The first criterion was taken for granted because it SHOULD be true. | |||
At the time, we saw two ways to verify the first criterion: | |||
1. create one sample application for each platform to verify scripting only | |||
1. create a single cross-platform application, which can run any code | |||
We chose the second approach because it is more beneficial in the long run. As you might have guessed, [mjin-player](https://bitbucket.org/ogstudio/mjin-player) is that application. | |||
mjin-player serves as a base for the rest of MJIN projects to make them run on all supported platforms. However, there's no magic trick to hide the projects from the platform, and there was no such intention. Instead, mjin-player provides a consistent set of rules how other MJIN projects should be structured to be able to run on all supported platforms. | |||
**mjin-application** | |||
This set of rules for MJIN projects is packaged into [mjin-application](https://bitbucket.org/ogstudio/mjin-application). 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. | |||
**MJIN world** | |||
So what is [MJIN world](https://bitbucket.org/ogstudio/mjin)? 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. | |||
That's it for describing the birth of MJIN world in August 2017. | |||
@@ -0,0 +1,13 @@ | |||
Title: Back to the Static | |||
Date: 2017-10-16 00:00 | |||
Category: News | |||
Slug: back-to-the-static | |||
Lang: en | |||
![Static and dynamic unite](../../images/2017-10-16-back-to-the-static.png) | |||
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. | |||
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 [Pelican](https://blog.getpelican.com/). | |||
Right now it doesn't have all the content from our old site, but we'll add most of it soon. |
@@ -0,0 +1,45 @@ | |||
Title: 2017 summary | |||
Date: 2017-11-22 00:00 | |||
Category: News | |||
Slug: 2017-summary | |||
Lang: en | |||
![Memory game in the background][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][fanatic_call] to create the best game ever. Probably right after finishing Half-Life 2 or Morrowind. 99.99% of those who wanted to participate weathered during a couple of years leaving only the two of us: Michael (coding) and Ivan (the rest). The project was in a constant turmoil because we had no clear purpose and discipline. Thus, we only got a handful of demonstrations during that period. | |||
**2010.** The first year for us to admit we failed big time. After accepting the failure, we have set Mahjong game as our initial target. We also realized that if we want the game out, we must work every day. We didn't get anywhere by working on weekends because they often collided with family time. | |||
**2012, 2013.** We released Mahjong 1.0 and Mahjong 1.1 correspondingly. We created a complete, polished game in 3-4 years after failing to provide anything of value during previous 5 years. To this date, Mahjong is the best and only game we released so far. We're still proud of it because it still feels great. | |||
**2015.** We showcased the first version of our game toolset. After releasing Mahjong, we decided to spend time on building toolset that would allow us to develop games faster. | |||
**2016.** We recreated Mahjong gameplay with our game toolset. However, we quickly realized that desktop only game toolset is a dead end. It led us to research mobile platforms. | |||
**Last year** | |||
**2016, October.** We started mobile platforms' research by making simple straightforward OpenSceneGraph application run under Android. | |||
**2017, January.** We got the Android version working and started iOS and Web research. | |||
**2017, February.** We made the sample application work everywhere: desktop, mobile, web. | |||
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. | |||
**2017, July.** We published [OpenSceneGraph cross-platform guide][osgcp_guide], 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. | |||
**2017, November.** We published simple [Memory: Colors game][memory-colors] and the [guide][memory-colors-guide] 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. | |||
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. | |||
[screenshot]: ../../images/2017-11-22-2017-summary.png | |||
[fanatic_call]: https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/ | |||
[osgcp_guide]: https://github.com/OGStudio/openscenegraph-cross-platform-guide | |||
[memory-colors]: https://ogstudio.github.io/game-memory-colors/tutorial-5.3/mjin-player.html | |||
[memory-colors-guide]: https://bitbucket.org/ogstudio-games/memory-colors |
@@ -0,0 +1,19 @@ | |||
Title: The year of lessons | |||
Date: 2017-12-31 22:00 | |||
Category: News | |||
Slug: the-year-of-lessons | |||
Lang: en | |||
![Sparkler](../../images/2017-12-31-celebration.jpg) | |||
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. |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,37 +80,44 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2017-happy-new-year.html">EN</a> | |||
<a href="../../en/news/2017-happy-new-year.html">EN</a> | |||
<a href="../../ru/news/2017-happy-new-year.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Happy 2017</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-12-31_happy-new-year.png" alt="Christmas tree" /><figcaption>Christmas tree</figcaption> | |||
</figure> | |||
<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> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Happy 2017</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-12-31_happy-new-year.png" alt="Christmas tree" /></p> | |||
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p> | |||
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on the engine and editor, haven't even started creating the actual game.</p> | |||
<p>If you were monitoring our news during the year, you know that we held several live sessions, showing in the real time how to use our tools to create some simple games. Each session was a step in a long road to our goal. While preparing for these live sessions, we added necessary building blocks, that will be needed to create almost any game.</p> | |||
<p>Future live sessions and technical previews will add even more, so at some point in future (i hope not very distant), we will have everything we need to sit down and build our planned game from these blocks.</p> | |||
<p>So, the project isn’t dead; the idea was not thrown away. But there is a lot of work to be done before we can start making the game, and there are only two of us, using our spare time. So. You want our game to become a reality? Join us. Together we will rule the galaxy. Or just wait and see. We didn’t stop several years ago. We won’t stop now. After all, there is only one way to create a fine tool (and it’s our initial goal if you remember) - we need to use it ourselves. We will. Stay tuned.</p> | |||
<p>So, the project isn't dead; the idea was not thrown away. But there is a lot of work to be done before we can start making the game, and there are only two of us, using our spare time. | |||
So. You want our game to become a reality? Join us. Together we will rule the galaxy. Or just wait and see. We didn't stop several years ago. We won't stop now. | |||
After all, there is only one way to create a fine tool (and it's our initial goal if you remember) - we need to use it ourselves. | |||
We will. Stay tuned.</p> | |||
<p>Happy 2017. Let it be simple.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,47 +80,51 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2017-summary.html">EN</a> | |||
<a href="../../en/news/2017-summary.html">EN</a> | |||
<a href="../../ru/news/2017-summary.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /><figcaption>Memory game in the background</figcaption> | |||
</figure> | |||
<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> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /></p> | |||
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p> | |||
<p><strong>Brief history</strong></p> | |||
<p>Opensource Game Studio project is 12 years old now.</p> | |||
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever. Probably right after finishing Half-Life 2 or Morrowind. 99.99% of those who wanted to participate weathered during a couple of years leaving only the two of us: Michael (coding) and Ivan (the rest). The project was in a constant turmoil because we had no clear purpose and discipline. Thus, we only got a handful of demonstrations during that period.</p> | |||
<p><strong>2010.</strong> The first year for us to admit we failed big time. After accepting the failure, we have set Mahjong game as our initial target. We also realized that if we want the game out, we must work every day. We didn’t get anywhere by working on weekends because they often collided with family time.</p> | |||
<p><strong>2012, 2013.</strong> We released Mahjong 1.0 and Mahjong 1.1 correspondingly. We created a complete, polished game in 3-4 years after failing to provide anything of value during previous 5 years. To this date, Mahjong is the best and only game we released so far. We’re still proud of it because it still feels great.</p> | |||
<p><strong>2010.</strong> The first year for us to admit we failed big time. After accepting the failure, we have set Mahjong game as our initial target. We also realized that if we want the game out, we must work every day. We didn't get anywhere by working on weekends because they often collided with family time.</p> | |||
<p><strong>2012, 2013.</strong> We released Mahjong 1.0 and Mahjong 1.1 correspondingly. We created a complete, polished game in 3-4 years after failing to provide anything of value during previous 5 years. To this date, Mahjong is the best and only game we released so far. We're still proud of it because it still feels great.</p> | |||
<p><strong>2015.</strong> We showcased the first version of our game toolset. After releasing Mahjong, we decided to spend time on building toolset that would allow us to develop games faster.</p> | |||
<p><strong>2016.</strong> We recreated Mahjong gameplay with our game toolset. However, we quickly realized that desktop only game toolset is a dead end. It led us to research mobile platforms.</p> | |||
<p><strong>Last year</strong></p> | |||
<p><strong>2016, October.</strong> We started mobile platforms’ research by making simple straightforward OpenSceneGraph application run under Android.</p> | |||
<p><strong>2016, October.</strong> We started mobile platforms' research by making simple straightforward OpenSceneGraph application run under Android.</p> | |||
<p><strong>2017, January.</strong> We got the Android version working and started iOS and Web research.</p> | |||
<p><strong>2017, February.</strong> We made the sample application work everywhere: desktop, mobile, web.</p> | |||
<p>Researching mobile and web took us about five months. We spent that much time because there was no documentation on how to run OpenSceneGraph across platforms. We had to step in and create said documentation.</p> | |||
<p><strong>2017, July.</strong> We published <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a>, which describes how to create a simple OpenSceneGraph application and make it run on desktop, mobile, and web. To this date, this is our most popular GitHub repository.</p> | |||
<p><strong>2017, November.</strong> We published simple <a href="https://ogstudio.github.io/game-memory-colors/tutorial-5.3/mjin-player.html">Memory: Colors game</a> and the <a href="https://bitbucket.org/ogstudio-games/memory-colors">guide</a> on how to create the game from scratch. The game is powered by MJIN, our new cross-platform game toolset that we started this summer.</p> | |||
<p>Currently MJIN toolset is in its infancy. MJIN needs a real game to flourish. That’s why we are already working on cross-platform Mahjong. We’ll do our best to make Mahjong faster this time.</p> | |||
</div> | |||
<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> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,75 @@ | |||
Title: Mahjong recreation start | |||
Date: 2018-01-26 00:00 | |||
Category: News | |||
Slug: mahjong-recreation-start | |||
Lang: en | |||
![Spherical tiles in a Mahjong layout][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][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][mahjong-data] is an example of such generated MJIN project that is referenced by [mahjong][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][osgcp_guide] to cover PNG image loading. We already got a [request to describe image loading][img_loading_issue]. | |||
**Development** | |||
[As you know][lets-go], 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][mahjong]. | |||
We also provide [version history and web releases of each internal version][web-releases] 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!][mahjong-version-tile-selection] | |||
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. | |||
[screenshot]: ../../images/2018-01-26-mahjong-recreation-start.png | |||
[mjin-resource]: https://bitbucket.org/ogstudio/mjin-resource | |||
[mahjong]: https://bitbucket.org/ogstudio-games/ogs-mahjong | |||
[mahjong-data]: https://bitbucket.org/ogstudio-games/mahjong-data | |||
[osgcp_guide]: https://github.com/ogstudio/openscenegraph-cross-platform-guide | |||
[img_loading_issue]: https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4 | |||
[lets-go]: lets-go.html | |||
[web-releases]: http://ogstudio.github.io/game-mahjong | |||
[mahjong-version-tile-selection]: https://ogstudio.github.io/game-mahjong/versions/010/mjin-player.html | |||
@@ -0,0 +1,36 @@ | |||
Title: First techdemo of OGS Mahjong 2: Gameplay | |||
Date: 2018-02-16 00:00 | |||
Category: News | |||
Slug: mahjong-techdemo1-gameplay | |||
Lang: en | |||
![End of a Mahjong party][screenshot] | |||
We are glad to announce the release of the first technical demonstration of OGS Mahjong 2. The purpose of this release was to verify gameplay across supported platforms. | |||
Get techdemo for your platform: | |||
* Run [Web version][tech-demo-1-web] in your browser | |||
* Get [Android version][tech-demo-1-android] | |||
* Get [Windows version][tech-demo-1-windows] | |||
* Get [Linux version][tech-demo-1-linux] | |||
* Get [macOS version][tech-demo-1-macos] | |||
Notes: | |||
* iOS version is not released because it cannot be easily shared outside AppStore. | |||
* Launch `run` script under Linux and macOS. | |||
* Linux version is only available in 64-bit variant. | |||
* macOS version should run on macOS Sierra or newer. | |||
That's it for now, have a nice testing! | |||
[screenshot]: ../../images/2018-02-16-mahjong-techdemo1-gameplay.png | |||
[tech-demo-1-web]: https://ogstudio.github.io/game-mahjong/versions/013/mjin-player.html | |||
[tech-demo-1-android]: https://drive.google.com/open?id=1KW8IEN8Dpz8ODeg8BctVSJyzj9-AL9hR | |||
[tech-demo-1-windows]: https://drive.google.com/open?id=1oj0-OXSmEatttzn86u2vgP9SRAIC0ozB | |||
[tech-demo-1-linux]: https://drive.google.com/open?id=1EX7kLIThLiMz9_W7VmBPySms3mlrF-i6 | |||
[tech-demo-1-macos]: https://drive.google.com/open?id=1KWnvbHzan8MpMcZPG2QC-7KWoEYbqrM2 | |||
@@ -0,0 +1,36 @@ | |||
Title: OpenSceneGraph cross-platform examples | |||
Date: 2018-04-20 00:00 | |||
Category: News | |||
Slug: openscenegraph-examples | |||
Lang: en | |||
![iOS Simulator renders a cube][screenshot] | |||
This article summarizes the work we did to produce the first two cross-platform OpenSceneGraph examples. | |||
By the time [the first technology demonstration of OGS Mahjong 2][tech-demo-1] has been released, we've already had [issue request][android-image-issue] (to explain how to load images with OpenSceneGraph on Android) hanging for some time. We considered creating a new tutorial for [OpenSceneGraph cross-platform guide][osgcpg] at first. However, we realized that it's time-consuming and excessive for such a tiny topic (compared to what an average game has) as image loading. We decided to continue sharing our knowledge in the form of concrete examples. That's how [OpenSceneGraph cross-platform examples][osgcpe] were born. | |||
Each example: | |||
* explains crucial code necessary to perform a specific task | |||
* accents platform-specific nuances | |||
* provides implementations to cover desktop, mobile, and web platforms | |||
* provides a web build to showcase results | |||
The first two examples cover the following topics: | |||
* Embed resource into executable: this greatly simplifies resource handling across platforms | |||
* Use PNG images with PNG plugins: this explains the requirements necessary to build and use PNG plugins | |||
We will be adding new examples as we proceed with OGS Mahjong 2 development. | |||
That's it for summarizing the work we did to produce the first two cross-platform OpenSceneGraph examples. | |||
[screenshot]: ../../images/2018-04-20-openscenegraph-examples.png | |||
[tech-demo-1]: mahjong-techdemo1-gameplay.html | |||
[android-image-issue]: https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4 | |||
[osgcpg]: https://github.com/OGStudio/openscenegraph-cross-platform-guide | |||
[osgcpe]: https://github.com/OGStudio/openscenegraph-cross-platform-examples | |||
@@ -0,0 +1,51 @@ | |||
Title: Example-driven development | |||
Date: 2018-06-27 00:00 | |||
Category: News | |||
Slug: example-driven-development | |||
Lang: en | |||
![Debug broker][screenshot] | |||
This article explains how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development. | |||
**2018-08 EDIT**: the third example has been renamed to the fourth one due to the reasons described in the [next article][article-2018-august]. | |||
**The third OpenSceneGraph cross-platform example** | |||
The third OpenSceneGraph cross-platform example explains how to implement [remote debugging across platforms][osgcpe-04]. This example is less about OpenSceneGraph and more about different platforms. | |||
Remote anything nowadays assumes the use of HTTP(s) over TCP/IP. Thus, the first idea was to embed HTTP server into an application and let HTTP clients interact with the server. | |||
However, serving HTTP across all platforms is complicated: | |||
* desktops have firewalls | |||
* mobiles have restrictions on background processes | |||
* web browsers are HTTP clients by design | |||
That's why we decided to create a mediator between debugged application and UI. [Debug broker][debug-broker], a small Node.js application, became that mediator. Debug broker uses no external dependencies, so it's easy to run virtually anywhere. Also, since debug broker is a server application, you can configure it once and use it for any number of applications. | |||
Both [debug UI][debug-ui] and [debug broker][debug-broker] use JavaScript because we wanted these tools to be accessible from anywhere with no prior installation. This decision limited us to web browser solution. Providing any sort of desktop application would incur additional installation and maintenance effort, which would only complicate the tools. | |||
**Example-driven development establishment** | |||
Once the third example was implemented, we realized how important and beneficial it is to develop new features outside the main project: | |||
* the main project is freed from excessive commit noise | |||
* a new feature is publicly shared for everyone to learn, criticize, and improve | |||
When we publicly share our knowledge: | |||
* we must create documentation for everyone (including ourselves later) to understand what's going on | |||
* we must not use hacks because that would break your trust in us | |||
From now on, all new features like input handling, Mahjong layout loading, resource caching, etc. are going to be first implemented as examples. We call this example-driven development. | |||
That's it for explaining how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development. | |||
[screenshot]: ../../images/2018-06-27-example-driven-development.png | |||
[article-2018-august]: examples-and-dependencies.html | |||
[osgcpe-04]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging | |||
[debug-broker]: https://github.com/OGStudio/debug-broker | |||
[debug-ui]: https://github.com/OGStudio/debug-ui | |||
@@ -0,0 +1,59 @@ | |||
Title: Examples and dependencies | |||
Date: 2018-08-21 00:00 | |||
Category: News | |||
Slug: examples-and-dependencies | |||
Lang: en | |||
![Cloud][screenshot] | |||
This article describes two new OpenSceneGraph cross-platform examples and the change in handling dependencies. | |||
**Examples of HTTP client and node selection** | |||
Once we finished working on [the remote debugging example][osgcpe-04] and [reported its completion][article-2018-june], we were surprised by the fact that secure HTTP connection between a debugged application and debug broker was only working in the web version of the example. Desktop and mobile versions only worked with insecure HTTP. | |||
Since current debug scheme has no authentication, insecure debugging over HTTP doesn't really hurt. However, if we want to access resources located at popular sites like GitHub and BitBucket, we have to support secure HTTP. | |||
The need to support HTTPS on each platform spurred us to create [HTTP client example][osgcpe-03]. Turned out, each platform had its own preferred way of doing secure HTTP: | |||
* web (Emscripten) provides Fetch API | |||
* desktop is fine with Mongoose and OpenSSL | |||
* Android provides HttpUrlConnection in Java | |||
* iOS provides NSURLSession in Objective-C | |||
The need to support different languages on different platforms resulted in the creation of so-called 'host-guest' pattern: | |||
* guest (platform agnostic) | |||
* provides networking representation | |||
* used by cross-platform C++ code | |||
* host (specific platform) | |||
* polls guest for pending requests | |||
* processes them | |||
* reports results back to the guest | |||
[Node selection example][osgcpe-05] was straightforward and caused no troubles. | |||
**The change in handling dependencies** | |||
For over a year we had to deal with the following [shortcomings][osg-shortcomings] when building OpenSceneGraph across platforms using conventional methods: | |||
* macOS builds failing due to certain compile flags we use | |||
* hacking PNG plugin safety guards to have PNG support under Android | |||
* iOS simulator and device builds of the same example being in separate Xcode projects | |||
* OpenSceneGraph taking 20-30 minutes to build | |||
These shortcomings were slowing us down and complicating the development of new examples. Upon hitting these problems ten more times this month we decided it was time to solve them once and for all. Now OpenSceneGraph is built as part of each example in 2-3 minutes, and there's no more dependency magic involved. We took the same approach of building dependencies as part of each example to other external libraries like Mongoose and libpng-android, too. | |||
With these obstacles out of the way, we can now iterate faster. Just in time for the next technical demonstration of Mahjong 2! | |||
That's it for describing two new OpenSceneGraph cross-platform examples and the change in handling dependencies. | |||
[screenshot]: ../../images/2018-08-21-examples-and-dependencies.png | |||
[article-2018-june]: example-driven-development.html | |||
[osgcpe-03]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient | |||
[osgcpe-04]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging | |||
[osgcpe-05]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection | |||
[osg-shortcomings]: http://forum.openscenegraph.org/viewtopic.php?t=17443 |
@@ -0,0 +1,43 @@ | |||
Title: OGS Mahjong 2: Demo 2 | |||
Date: 2018-10-02 00:00 | |||
Category: News | |||
Slug: mahjong-demo2 | |||
Lang: en | |||
![Start of a Mahjong party][screenshot] | |||
We are glad to announce the release of the second demonstration of OGS Mahjong 2. The purposes of this release were to refine our development techniques and build a solid cross-platform foundation. | |||
**Release** | |||
Run the latest version of OGS Mahjong 2 in your web browser: [http://ogstudio.github.io/ogs-mahjong](http://ogstudio.github.io/ogs-mahjong) | |||
You are encouraged to run the game with `seed` parameter like this: [http://ogstudio.github.io/ogs-mahjong?seed=0](http://ogstudio.github.io/ogs-mahjong?seed=0) | |||
This allows you to play the same layout each time you launch the game. | |||
Each seed uniquely identifies the placement of tiles. Thus, different seeds give you a different experience. | |||
**Development techniques and foundation** | |||
During the second demonstration development, we switched from standard development to [example-driven one][article-2018-june]. This resulted in the creation of three distinct repositories to back the development of OGS Mahjong 2: | |||
* [OpenSceneGraph cross-platform examples][osgcpe] repository provides cross-platform foundation like resource handling, render window setup, etc. | |||
* [OGS Mahjong components][omc] repository provides Mahjong specific functionality like parsing layout, matching tiles, etc. | |||
* [OGS Mahjong][ogs-mahjong] repository contains snapshots of `OGS Mahjong components` features that comprise specific game version. E.g., `Demo 2` version is almost identical to [05.ColorfulStatus][omc-05] example of `OGS Mahjong components`. | |||
**Beyond Mahjong solitaire** | |||
In addition to `seed` parameter, you can let the game use remote layout hosted at GitHub: [http://ogstudio.github.io/ogs-mahjong?seed=0&layout=github://OGStudio/ogs-mahjong-components/data/cat.layout](http://ogstudio.github.io/ogs-mahjong?seed=0&layout=github://OGStudio/ogs-mahjong-components/data/cat.layout) | |||
Utilizing remote resources is an extremely powerful approach allowing anyone to create a layout of his/her choice and see the layout in action instantly. | |||
Our next step is to turn game logic into a resource, too. | |||
[screenshot]: ../../images/2018-10-02-mahjong-demo2.png | |||
[article-2018-june]: example-driven-development.html | |||
[osgcpe]: https://github.com/OGStudio/openscenegraph-cross-platform-examples | |||
[omc]: https://github.com/OGStudio/ogs-mahjong-components | |||
[ogs-mahjong]: https://bitbucket.org/ogstudio-games/ogs-mahjong | |||
[omc-05]: https://github.com/OGStudio/ogs-mahjong-components/tree/master/05.ColorfulStatus |
@@ -0,0 +1,60 @@ | |||
Title: Ideal games and game development tools | |||
Date: 2018-11-19 00:00 | |||
Category: News | |||
Slug: ideal-gamedev | |||
Lang: en | |||
![A man without and with tools][screenshot] | |||
In this article, we discuss how ideal video game and video game development tool look like, in our opinion. | |||
**Questions** | |||
As you know, the [goals of Opensource Game Studio][ogs-goals] are: | |||
* creation of free video game development tools | |||
* making video games with those tools | |||
* preparing video game development tutorials | |||
This time we asked ourselves two simple questions: | |||
* What is an ideal video game? | |||
* What is an ideal video game development tool? | |||
The best answers we could think of are below. | |||
**Answer 1: A video game is ideal if it delivers maximum pleasure possible** | |||
While content is probably the most important aspect to keep a player invested into the game, the technical side is the transport to deliver that content. There are quite a few technical problems that may damage otherwise excellent content of a game: | |||
* insufficient accessibility: the game does not run on your hardware | |||
* insufficient optimization: the game is slow | |||
* critical bugs: the game crashes from time to time | |||
We work hard to make sure the games we create are accessible everywhere. That's why we released | |||
[the second demonstration of OGS Mahjong 2][mahjong-demo2] only for the web: because you can run web version virtually anywhere. | |||
**Answer 2: A video game development tool is ideal if it lets you create a video game of your dream in the shortest time possible** | |||
Even though we put a lot of effort into sharing our knowledge through [guides][osgcpg] and [tutorials][osgcpe], we understand that those take a lot of time to study. One can't possibly make even a simple video game like [Memory][concentration] without performing the following steps: | |||
* configure the development environment | |||
* write code | |||
* build an application | |||
* debug the application | |||
* repeat `write-build-debug` steps as many times as necessary | |||
Writing code and debugging are probably the ultimate forms of input and output of any software, so we can't escape those. However, there are ways to completely remove (or at least significantly decrease) the need for `development environment setup` and `build` steps. And this is what we are going to do in the coming months. | |||
Our goal for the coming months is to create a video game development tool that would allow any programmer (or sufficiently skilled person) to create the [Memory][concentration] video game from scratch in an hour. | |||
That's it for discussing how ideal video game and video game development tool look like, in our opinion. | |||
[screenshot]: ../../images/2018-11-19-ideal-gamedev.png | |||
[ogs-goals]: ../../en/page/about.html | |||
[mahjong-demo2]: mahjong-demo2.html | |||
[osgcpg]: https://github.com/OGStudio/openscenegraph-cross-platform-guide | |||
[osgcpe]: https://github.com/OGStudio/openscenegraph-cross-platform-examples | |||
[concentration]: https://en.wikipedia.org/wiki/Concentration_(game) |
@@ -0,0 +1,19 @@ | |||
Title: Year of rethinking | |||
Date: 2019-01-01 0:01 | |||
Category: News | |||
Slug: 2019-year-of-rethinking | |||
Lang: en | |||
![Sparkler](../../images/2017-12-31-celebration.jpg) | |||
It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew. | |||
As a result of all these changes, we came to the end of the year 2018 without a tool, but with a clear understanding of what tool are we making. | |||
There are plenty of fine game development tools out there. Some of them are even open source. We spent plenty of time trying them, and some are quite good. | |||
We can't, and we don't want to compete with them. Our targets are maximal accessibility and simplicity. Our goal is to make a tool suitable for teaching children, but powerful enough to be used for prototyping. To use any powerful development tool, you need a PC or a laptop. We want to make the toolset, that can be used anywhere. We already made some steps in this direction, and we will continue this course. | |||
So, we're beginning a new year without precise plans, but with clear knowledge of our goal instead. Let's wait and see if this approach works better. | |||
Happy New Year to all of you! See you soon! |
@@ -0,0 +1,250 @@ | |||
Title: Teaching kids to program | |||
Date: 2019-02-04 00:00 | |||
Category: News | |||
Slug: teaching-kids-to-program | |||
Lang: en | |||
![Students and teachers][screenshot] | |||
In this article, Michael shares his experience of teaching kids to program. | |||
Here's what he covers: | |||
- organization of the learning process | |||
- learning plan | |||
- memory game | |||
- development tools | |||
- lessons | |||
- results and plans | |||
**Organization of the learning process** | |||
The learning process is conducted as part of corporate social responsibility: a company provides a room with equipment and connects employees that want to try themselves in the role of teachers with employees that want their kids educated. All this is done voluntarily. | |||
Potential teachers are divided into groups so that each group contains three teachers: experienced one and two novice ones. Such a group of three teachers leads a group of students. Students are divided into groups by age and skills. | |||
I participated in the program as a teacher for the second time in 2018. The kids were around ten years old. Our group was active from October to December of 2018 each Saturday, 10:00-12:00. Using my position as a teacher, I've also brought my wife in as a student. | |||
**Learning plan** | |||
The first time I participated in the program, our group taught kids rather mindlessly: we were coming up with simple tasks to explain different operators. By the end of the course we had nothing concrete to evaluate, analyze, and share. | |||
This second time I decided we are going to create a memory game with kids. I decided to consider the course successful if by the end of the course each kid would be able to create a simple memory game from scratch in an hour. | |||
To achieve that, we were recreating the same game from scratch each lesson. I'd like to stress that we did not use personal accounts to save progress. Our task was to save the skill of game creation in the head, not a PC. | |||
**Memory game** | |||
Let's see what the memory game is. | |||
**1)** In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones. | |||
![Cards face up][all-cards-face-up] | |||
As you can see, we only have two cards with a cat, only two cards with a dog, etc.. | |||
**2)** At the start we shuffle the cards and place them with their faces down. | |||
![Cards face down][all-cards-face-down] | |||
**3)** The first game player turns a pair of cards. | |||
![A pair of cards][first-pair] | |||
**4)** If the cards differ they are once again turned face down. | |||
![Cards face down][all-cards-face-down] | |||
**5)** The next player turns another pair of cards. | |||
![Second pair of cards][second-pair] | |||
**6)** If the cards are the same, they are removed from the field. | |||
![A pair of matching cards has been removed][remove-pair] | |||
The goal of the game is to remove all cards from the field. There's no competition here so the game can be played alone. | |||
From one hand, the memory game is rather simple. From the other hand, the game implementation requires essential functionality each more or less complex game has: | |||
- creation of items | |||
- arrangement of items | |||
- selection of items | |||
- comparison of items | |||
- removal of matching items | |||
**Development tools** | |||
We used Scratch as our development tool. [Scratch][scratch] is a great tool to teach kids to program because each action, each operation is represented graphically. | |||
For example, you can rotate a cat 360 degrees in 1 second using the following script: | |||
![Script][cat-script] | |||
Here's how it looks like in action: | |||
![Animation][cat-animation] | |||
I'd like to stress that Scratch is a rather successful solution to represent code graphically. For example, a paid solution by SAP uses similar concept of cubes to program logic: | |||
![SAP UI][sap-ui] | |||
Users can only input values into predefined fields. If users want more functionality they have to resort to scripts. | |||
Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution. | |||
**The first lesson** | |||
The first lesson was introductory, we didn't use PCs. | |||
The plan was to: | |||
1. Meet | |||
2. Play the memory game with cards | |||
3. Learn the concept of algorithm | |||
4. Detail the game's algorithm | |||
5. Analyze the lesson | |||
**1)** Meeting | |||
Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member. | |||
The first team member tells his name and why he decided to take the course. The second team member and the rest first repeat the name and the story of each previous team member before telling their own names and stories. | |||
Here's how it looks like: | |||
1. John: "My name is John, I am going to study Scratch because my father forces me to" | |||
2. Alex: "This is John, he's doing Scratch because his father wants him to do it. My name is Alex, and this is my fourth year with Scratch" | |||
3. Ann: "That's John, his parents force him to do Scratch. This is Alex, he's a Scratch veteran. And I'm Ann, a novice teacher, so I'm going to learn together with you all" | |||
Such a format of meeting has the following objectives: | |||
- Getting to know each other | |||
- Each team member should know other team members by name | |||
- Common space | |||
- Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games | |||
- Equality | |||
- Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy | |||
- Attention | |||
- Each team member should listen carefully to be able to correctly repeat what others said | |||
- Feedback | |||
- Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them | |||
- Fun | |||
- Memorization problems produce lots of laughter | |||
**2)** Memory game with cards | |||
1. Take 8 pairs of the same cards from two decks of cards | |||
2. Place the cards in 4 x 4 grid, faces down | |||
3. Students stand up around single table | |||
4. Each student, one by one, turns a pair of cards | |||
- If cards match, they are taken off the field | |||
- If cards differ, they are once again turned face down | |||
Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm. | |||
After a couple of parties it's time to find out what algorithm is. | |||
**3)** The concept of algorithm | |||
1. Ask students first, hear them out to find out their level | |||
2. Correct what students say if they were close to an expected answer | |||
3. Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one | |||
Students like to go to blackboard and write, so we ask each student to come and write a single step of the algorithm at a time. The most active student should execute the algorithm by following it strictly. | |||
**4)** The algorithm of the game | |||
Ask students to compose the game's algorithm. Again, let students come to the blackboard and add one step of the algorithm at a time. Once the algorithm is ready, play the game with cards once again. Now, each student should say the algorithm's step he executes. | |||
Here's how it looks like: | |||
1. John: "Place 16 cards faces down" | |||
2. Alex: "Turn a pair of cards" | |||
3. Paul: "If the cards differ, turn them faces down again" | |||
4. Dan: "Turn another pair of cards" | |||
5. Mike: "If the cards match, take them off the field" | |||
**5)** Analyze the lesson | |||
That's it for the first lesson. Teachers finally have time to discuss the lesson: discuss the kids, approaches to shy and active kids, plan next lessons. | |||
We had the following decisions: | |||
1. Arrange students so that active ones sit next to shy ones as "active-shy-active-shy-etc" so that we don't end up with two groups of shy and active students at different sides of a room, which would hamper productivity. | |||
2. Only accept accurate answers from students because active students like to wriggle, which hampers discipline. | |||
**The second and the third lessons** | |||
We were beginning each lesson with the same meeting: we would stand up in a circle, tell our names and what we did. Those who did nothing should have said why. Just as before, everyone should first repeat what previous team members said. | |||
We spent the second lesson to create requirements for an item of the playfield and then create the item in Scratch. This was moderately successful. | |||
We spent the third lesson trying to create 16 items and arrange them in 4x4 grid. We failed miserably because we could not explain coordinate system to students. It became apparent that lesson plans were only plans, reality had its own demands. | |||
We saw two ways to approach the problem: | |||
1. Keep on studying the coordinate system risking not to get the game done by the end of the course | |||
2. Change the game requirements so that coordinate system is not necessary | |||
We went the second way because, after all, we're not a school, our goal was to teach kids to create the game, i.e., use skills in practice, not theory. That's why we replaced 4x4 grid with a circle of 16 items. | |||
This solution sparkled a few thoughts in my head: | |||
1. One can often find a simpler path to solve an issue | |||
2. This path is simpler to understand, albeit less flexible | |||
3. One can go the harder path to increase flexibility much later when it becomes absolutely necessary | |||
4. Simplification moves one closer to the goal, complexification moves one in the opposite direction | |||
**The fourth and the rest of the lessons** | |||
The fourth lesson marked the end of coming up with requirements in class because doing so started to take too much time. We chose practice over theory once again to meet the deadline. This time all requirements were conducted before the lesson. Still, nobody read them. | |||
We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them. | |||
We started recreating complete game from scratch on the sixth lesson. Each time students were recreating complete game faster and faster. On the eighth lesson we introduced a leaderboard to track how fast each student recreates a specific part of the game. | |||
**The last lesson** | |||
When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours. | |||
Here's the leaderboard of the last lesson (names are hidden): | |||
![Leaderboard][leaderboard] | |||
The leaderboard is in Russian, here are the captions translated: | |||
- Name | |||
- Circle of items | |||
- Selection of pairs | |||
- Hide all | |||
- Hide a pair | |||
Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour. | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/WlA193S3SPY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |||
<br/> | |||
**Results and plans** | |||
The results surpassed my expectations: | |||
- three students made it in an hour or faster | |||
- two students made it in an hour and a half or faster | |||
This year I plan on doing another round of the memory game recreation. However, I'm going to replace Scratch with Opensource Game Studio tools: the students will use Lua, Git, and GitHub Pages. | |||
That's it for sharing Michael's experience of teaching kids to program. | |||
[screenshot]: ../../images/2019-02-04_teaching-kids-to-program-team.png | |||
[all-cards-face-up]: ../../images/2019-02-04_teaching-kids-to-program-all-cards-face-up.png | |||
[all-cards-face-down]: ../../images/2019-02-04_teaching-kids-to-program-all-cards-face-down.png | |||
[first-pair]: ../../images/2019-02-04_teaching-kids-to-program-first-pair.png | |||
[second-pair]: ../../images/2019-02-04_teaching-kids-to-program-second-pair.png | |||
[remove-pair]: ../../images/2019-02-04_teaching-kids-to-program-remove-pair.png | |||
[scratch]: https://scratch.mit.edu/ | |||
[cat-script]: ../../images/2019-02-04_teaching-kids-to-program-cat-script.png | |||
[cat-animation]: ../../images/2019-02-04_teaching-kids-to-program-cat-animation.gif | |||
[sap-ui]: ../../images/2019-02-04_teaching-kids-to-program-sap-ui.png | |||
[leaderboard]: ../../images/2019-02-04_teaching-kids-to-program-leaderboard.png |
@@ -0,0 +1,55 @@ | |||
Title: Defending availability | |||
Date: 2019-04-16 00:00 | |||
Category: News | |||
Slug: defending-availability | |||
Lang: en | |||
![Altai's Katun river][screenshot] | |||
In this article, we describe the beginning of our efforts to protect ourselves from third-party solutions. | |||
Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan. | |||
There are two main reasons why we changed third-party solutions: | |||
* Change in our needs | |||
* Solution shutdown | |||
The shutdown of [Google Code][google-code] in 2016 was the first time we experienced the deadly business hand. We were using SVN, Mercurial, and Google issue tracker. We were forced to let all of them go. | |||
We transferred our source code into both [BitBucket][bitbucket] and [GitHub][github] because we didn't want to put all eggs into one basket. We became wiser thanks to Google Code shutdown experience. | |||
Issue tracking had a different fate. At first, we used Bugzilla to manager our issues. However, Bugzilla was so inconvenient that we dropped it in favor of Google Sheets. To this date, we use Google Sheets to plan and log our work on the project. We also use Google Docs to write this very news and review it before publishing. | |||
The shutdown of [goo.gl][goo-gl] (URL shortener) in 2019 was the second time we experienced that same deadly business hand. We were using goo.gl to shorten Google Docs URLs internally. Not really big damage was done, however, this only proved that third-party solutions are not ours, but theirs. | |||
Microsoft [acquired GitHub][github-acquisition] in 2018. So far (April 2019) Microsoft is doing a really good job by empowering GitHub with the [release of GitPod][gitpod] to allow developers to build GitHub projects in a single click. However, Microsoft is also known for shutting down [Codeplex][codeplex] in 2017. | |||
This short track of shutdowns and acquisitions in the course of the past four years highlights the business' main objective: making profits. Personally, we have no problem with that objective. It's really hard to live in the 21st century without earning money. We are no exception to this, we pay bills, too. However, a much more humane option would be to let the source code go into the wild, to let interested developers continue the development of those solutions if they want to. Though, this would lead to even more competition with the business itself, something the business tries to avoid at all costs. | |||
We are no business, we make no profits off our tools. Our goals are only to create tools and let them go into the wild, so you can use them. Currently, we use GitHub to host some of our [tutorials][tutorials] and [guides][guides]. Now imagine that two years from now Microsoft decides to decommission GitHub. Why? Maybe because [people gradually migrate][migration] from GitHub to GitLab. | |||
How are we to protect ourselves from the deadly business hand? We consolidate our tools, tutorials, and games into this very site. The first step, now complete, was to create a static site generator to generate this very site. | |||
So far the generated site has the following functionality: | |||
* news that span multiple pages | |||
* standalone pages | |||
* sitewide language selection | |||
We will make the site even more convenient during this year. Stay tuned! | |||
That's it for describing the beginning of our efforts to protect ourselves from third-party solutions. | |||
[screenshot]: ../../images/2019-04-16_defending-availability.jpg | |||
[google-code]: https://code.google.com/archive/ | |||
[bitbucket]: https://bitbucket.org/ogstudio/ | |||
[github]: https://github.com/ogstudio/ | |||
[goo-gl]: https://developers.googleblog.com/2018/03/transitioning-google-url-shortener.html | |||
[github-acquisition]: https://github.blog/2018-10-26-github-and-microsoft/ | |||
[gitpod]: https://www.gitpod.io/blog/gitpod-launch/ | |||
[codeplex]: https://devblogs.microsoft.com/bharry/shutting-down-codeplex/ | |||
[tutorials]: https://github.com/OGStudio/openscenegraph-cross-platform-examples | |||
[guides]: https://github.com/OGStudio/openscenegraph-cross-platform-guide | |||
[migration]: https://hackernoon.com/git-wars-why-im-switching-to-gitlab-e471f5e8be2c |
@@ -0,0 +1,83 @@ | |||
Title: On the way to durable applications | |||
Date: 2019-08-05 00:00 | |||
Category: News | |||
Slug: on-the-way-to-durable-applications | |||
Lang: en | |||
![Pskov's veche][screenshot] | |||
This article describes our first durable application for desktop PCs: PSKOV static site generator. | |||
**Durability** | |||
A durable application is an application that functions without a single change on operating systems released in years 2010-2030. In other words, a durable application has backward compatibility of 10 years and has the stability to run for 10 years. Actually, [PSKOV][pskov] runs even under Windows 2000, so PSKOV has backward compatibility of 19 years. | |||
From technical side, PSKOV is a single HTML file with layout (HTML), styles (CSS), and code (JavaScript) packed inside. PSKOV runs strictly inside a web browser without connecting to any server. | |||
Such an implementation gives PSKOV the following features: | |||
* it can be copied without restrictions | |||
* it can be hosted anywhere | |||
* it can run locally | |||
* it can operate without Internet | |||
We can't guarantee stability for 10 years because we can't control the future. However, the history of HTML, CSS, and JavaScript evolution tells us these technologies are developed with maximum backward compatibility. First, new JavaScript features leave older ones still working. Second, web browser developers are interested in making their web browsers work with as many web sites as possible. For example, [<center> tag][center-tag], being declared deprecated in 2014, still works as expected 5 years since, in 2019. | |||
At the same time, each web browser application has a serious restriction called sandbox, a deceptive name for a cage. The cage prevents access to both local file system of users and almost any Internet resource without its owner's explicit permission (CORS). As a result, the application can only communicate with users either through the distinct server, or by offering files to download manually. Downloading files one by one or as an archive is inconvenient, that's why nowadays server oriented approach reigns the world. We'll touch problems of that approach in a moment. | |||
To free PSKOV from the cage, [LFSA][lfsa] was created, a tiny Python script that needs to be run manually while PSKOV is running. LFSA allows PSKOV to access the user’s local file system. Python was selected because Linux and macOS have Python installed by default, and users can easily install Python on Windows (even Windows 2000). | |||
**Track record** | |||
PSKOV has been successfully used to create the following small sites: | |||
* [open game studio project site][ogs] | |||
* [PSKOV itself][pskov] | |||
* [LFSA][lfsa] | |||
* [example of a simple blog][pskov-sample] | |||
Now let's see why PSKOV was created as a durable application for web browsers. | |||
**Reason №1: collect and keep knowledge in an accessible form** | |||
We have been creating convenient game development tools for several years now. So far the collected knowledge was represented by [native applications][ogs-mahjong-1] for desktop PCs, [education articles][osgcpg] for related technologies, and [showcase videos][showcase]. Such forms of the collected knowledge are basically dead: | |||
* few would download an unknown application | |||
* few would watch some videos | |||
* even fewer would read some articles | |||
In many ways, this death is due to inaccessibility: one has to make an unknown amount of effort to achieve an unknown result. Hardly anyone would have interest in this. A web browser application, potentially accessible anywhere, is a totally different deal: you only need to make a known effort, click a link, to achieve an unknown result. The history of conducting [twitter revolutions][twitter-revolutions] proves that almost anyone can open a link and "like" the change of a "bloody regime". | |||
**Reason №2: rule by people** | |||
Nowadays any Internet activity is performed by the means of services that almost always belong to some company: [messages][msg], [maps][map], [search][search], [music][music], [source code][src], etc. Such power usurpation leads to [shutdowns][shutdown-01] of [services][shutdown-02] that their owning companies deem unprofitable. They usually do it without any consent with those users who brought life to these services in the first place. | |||
Other times companies simply block competing browsers from accessing their service, as it was recently the [case with the web version of Skype][skype-block]. Luckily there are people who don’t agree with such politics. Thanks to them, [unlocking tools][skype-free] appear. | |||
As for me, I deem such a way of handling things as inappropriate. However, savage business is not the only one to blame here; average users, every one of us is guilty, too. You may argue that users have no choice, that someone else (government, aliens, underline what you like) made this world unfair. Some people even blame government/aliens directly and believe that without them, life would be amazing. However, human history [tells us a different story][story]: "**the state** is not some enemy horde that occupied the society, but that which **grows out of society and mirrors it**". | |||
Being part of the people, we decided to start with ourselves and use our power for the best: create applications that we need in such a way to make them usable and accessible to everyone everywhere. PSKOV is the first attempt, which already exceeded our expectations. Sure, PSKOV has limitations like LFSA and unencrypted HTTP; there's a lot to do to increase the accessibility of PSKOV, however, we're ready to dare anyone: current PSKOV version will keep functioning for 10 years to come without any maintenance. | |||
That's it for describing our first durable application for desktop PCs: PSKOV static site generator. | |||
[screenshot]: ../../images/2019-08-05_on-the-way-to-durable-applications.jpg | |||
[pskov]: http://opengamestudio.org/pskov | |||
[center-tag]: https://www.w3schools.com/tags/tag_center.asp | |||
[lfsa]: http://opengamestudio.org/lfsa | |||
[ogs]: http://opengamestudio.org | |||
[pskov-sample]: http://opengamestudio.org/pskov/sample/03.Blog/en/blog/index.html | |||
[ogs-mahjong-1]: ../game/ogs-mahjong-1.html | |||
[osgcpg]: https://github.com/OGStudio/openscenegraph-cross-platform-guide | |||
[showcase]: https://youtu.be/_t8TGhSgJG4 | |||
[twitter-revolutions]: https://en.wikipedia.org/wiki/Twitter_Revolution | |||
[msg]: http://twitter.com | |||
[map]: http://2gis.ru | |||
[search]: http://google.com | |||
[music]: http://music.yandex.ru | |||
[src]: http://github.com | |||
[shutdown-01]: https://techcrunch.com/2015/03/13/google-kills-off-google-code/ | |||
[shutdown-02]: https://www.reddit.com/r/sysadmin/comments/62orq9/codeplex_shutting_down_and_fosshub_is_sad/ | |||
[skype-block]: https://www.reddit.com/r/firefox/comments/aw1umv/skype_web_is_now_blocked_in_firefox/ | |||
[skype-free]: https://addons.mozilla.org/ru/firefox/addon/firefox-web-skype/ | |||
[story]: https://translate.google.com/translate?sl=ru&tl=en&u=https%3A%2F%2Fria.ru%2F20190723%2F1556775012.html |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,37 +80,41 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="2019-year-of-rethinking.html">EN</a> | |||
<a href="../../en/news/2019-year-of-rethinking.html">EN</a> | |||
<a href="../../ru/news/2019-year-of-rethinking.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /><figcaption>Sparkler</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /></p> | |||
<p>It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew.</p> | |||
<p>As a result of all these changes, we came to the end of the year 2018 without a tool, but with a clear understanding of what tool are we making.</p> | |||
<p>There are plenty of fine game development tools out there. Some of them are even open source. We spent plenty of time trying them, and some are quite good.</p> | |||
<p>We can’t, and we don’t want to compete with them. Our targets are maximal accessibility and simplicity. Our goal is to make a tool suitable for teaching children, but powerful enough to be used for prototyping. To use any powerful development tool, you need a PC or a laptop. We want to make the toolset, that can be used anywhere. We already made some steps in this direction, and we will continue this course.</p> | |||
<p>So, we’re beginning a new year without precise plans, but with clear knowledge of our goal instead. Let’s wait and see if this approach works better.</p> | |||
<p>We can't, and we don't want to compete with them. Our targets are maximal accessibility and simplicity. Our goal is to make a tool suitable for teaching children, but powerful enough to be used for prototyping. To use any powerful development tool, you need a PC or a laptop. We want to make the toolset, that can be used anywhere. We already made some steps in this direction, and we will continue this course.</p> | |||
<p>So, we're beginning a new year without precise plans, but with clear knowledge of our goal instead. Let's wait and see if this approach works better.</p> | |||
<p>Happy New Year to all of you! See you soon!</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,30 +80,36 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="back-to-social-networks.html">EN</a> | |||
<a href="../../en/news/back-to-social-networks.html">EN</a> | |||
<a href="../../ru/news/back-to-social-networks.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-social-networks.html">We’re back to social networks</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-18 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-social-networks.html">We’re back to social networks</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-18 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,34 +80,38 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="back-to-the-static.html">EN</a> | |||
<a href="../../en/news/back-to-the-static.html">EN</a> | |||
<a href="../../ru/news/back-to-the-static.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Back to the Static</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-10-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-10-16-back-to-the-static.png" alt="Static and dynamic unite" /><figcaption>Static and dynamic unite</figcaption> | |||
</figure> | |||
<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> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Back to the Static</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-10-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-10-16-back-to-the-static.png" alt="Static and dynamic unite" /></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>.</p> | |||
<p>Right now it doesn’t have all the content from our old site, but we’ll add most of it soon.</p> | |||
</div> | |||
<p>Right now it doesn't have all the content from our old site, but we'll add most of it soon.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,33 +80,38 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="bye-desura-hello-humblebundle.html">EN</a> | |||
<a href="../../en/news/bye-desura-hello-humblebundle.html">EN</a> | |||
<a href="../../ru/news/bye-desura-hello-humblebundle.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="bye-desura-hello-humblebundle.html">Desura no more, hello Humble Bundle Widget</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-23 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>After the recent bankruptcy of Desura’s parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="bye-desura-hello-humblebundle.html">Desura no more, hello Humble Bundle Widget</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-23 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>After the recent bankruptcy of Desura's parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site.</p> | |||
<p>Here it is:</p> | |||
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"> | |||
</iframe> | |||
<p>We haven’t received a single penny from Desura (due to the minimal cache out limitations), but if you bought the deluxe version from them and experiencing any problems with downloading it (right now we see no problems with that), send us a letter, tell your name on Desura, we’ll figure something out.</p> | |||
</div> | |||
<iframe src="https://www.humblebundle.com/widget/v2/product/ogsmahjong/ySGF3h34?theme=transparent-light" width="526" height="325" style="border: none;" scrolling="no" frameborder="0"></iframe> | |||
<p>We haven't received a single penny from Desura (due to the minimal cache out limitations), but if you bought the deluxe version from them and experiencing any problems with downloading it (right now we see no problems with that), send us a letter, tell your name on Desura, we'll figure something out.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,28 +80,28 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="defending-availability.html">EN</a> | |||
<a href="../../en/news/defending-availability.html">EN</a> | |||
<a href="../../ru/news/defending-availability.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="defending-availability.html">Defending availability</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-04-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2019-04-16_defending-availability.jpg" alt="Altai’s Katun river" /><figcaption>Altai’s Katun river</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="defending-availability.html">Defending availability</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-04-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2019-04-16_defending-availability.jpg" alt="Altai's Katun river" /></p> | |||
<p>In this article, we describe the beginning of our efforts to protect ourselves from third-party solutions.</p> | |||
<p>Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan.</p> | |||
<p>There are two main reasons why we changed third-party solutions:</p> | |||
@@ -118,11 +110,11 @@ | |||
<li>Solution shutdown</li> | |||
</ul> | |||
<p>The shutdown of <a href="https://code.google.com/archive/">Google Code</a> in 2016 was the first time we experienced the deadly business hand. We were using SVN, Mercurial, and Google issue tracker. We were forced to let all of them go.</p> | |||
<p>We transferred our source code into both <a href="https://bitbucket.org/ogstudio/">BitBucket</a> and <a href="https://github.com/ogstudio/">GitHub</a> because we didn’t want to put all eggs into one basket. We became wiser thanks to Google Code shutdown experience.</p> | |||
<p>We transferred our source code into both <a href="https://bitbucket.org/ogstudio/">BitBucket</a> and <a href="https://github.com/ogstudio/">GitHub</a> because we didn't want to put all eggs into one basket. We became wiser thanks to Google Code shutdown experience.</p> | |||
<p>Issue tracking had a different fate. At first, we used Bugzilla to manager our issues. However, Bugzilla was so inconvenient that we dropped it in favor of Google Sheets. To this date, we use Google Sheets to plan and log our work on the project. We also use Google Docs to write this very news and review it before publishing.</p> | |||
<p>The shutdown of <a href="https://developers.googleblog.com/2018/03/transitioning-google-url-shortener.html">goo.gl</a> (URL shortener) in 2019 was the second time we experienced that same deadly business hand. We were using goo.gl to shorten Google Docs URLs internally. Not really big damage was done, however, this only proved that third-party solutions are not ours, but theirs.</p> | |||
<p>Microsoft <a href="https://github.blog/2018-10-26-github-and-microsoft/">acquired GitHub</a> in 2018. So far (April 2019) Microsoft is doing a really good job by empowering GitHub with the <a href="https://www.gitpod.io/blog/gitpod-launch/">release of GitPod</a> to allow developers to build GitHub projects in a single click. However, Microsoft is also known for shutting down <a href="https://devblogs.microsoft.com/bharry/shutting-down-codeplex/">Codeplex</a> in 2017.</p> | |||
<p>This short track of shutdowns and acquisitions in the course of the past four years highlights the business’ main objective: making profits. Personally, we have no problem with that objective. It’s really hard to live in the 21st century without earning money. We are no exception to this, we pay bills, too. However, a much more humane option would be to let the source code go into the wild, to let interested developers continue the development of those solutions if they want to. Though, this would lead to even more competition with the business itself, something the business tries to avoid at all costs.</p> | |||
<p>This short track of shutdowns and acquisitions in the course of the past four years highlights the business' main objective: making profits. Personally, we have no problem with that objective. It's really hard to live in the 21st century without earning money. We are no exception to this, we pay bills, too. However, a much more humane option would be to let the source code go into the wild, to let interested developers continue the development of those solutions if they want to. Though, this would lead to even more competition with the business itself, something the business tries to avoid at all costs.</p> | |||
<p>We are no business, we make no profits off our tools. Our goals are only to create tools and let them go into the wild, so you can use them. Currently, we use GitHub to host some of our <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a>. Now imagine that two years from now Microsoft decides to decommission GitHub. Why? Maybe because <a href="https://hackernoon.com/git-wars-why-im-switching-to-gitlab-e471f5e8be2c">people gradually migrate</a> from GitHub to GitLab.</p> | |||
<p>How are we to protect ourselves from the deadly business hand? We consolidate our tools, tutorials, and games into this very site. The first step, now complete, was to create a static site generator to generate this very site.</p> | |||
<p>So far the generated site has the following functionality:</p> | |||
@@ -132,10 +124,14 @@ | |||
<li>sitewide language selection</li> | |||
</ul> | |||
<p>We will make the site even more convenient during this year. Stay tuned!</p> | |||
<p>That’s it for describing the beginning of our efforts to protect ourselves from third-party solutions.</p> | |||
</div> | |||
<p>That's it for describing the beginning of our efforts to protect ourselves from third-party solutions.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,38 +80,44 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">EN</a> | |||
<a href="../../en/news/editor-0.4.0-and-0.5.0-plans.html">EN</a> | |||
<a href="../../ru/news/editor-0.4.0-and-0.5.0-plans.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Editor 0.4.0 and plans for 0.5.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-03-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.4.0 in January. As it was planned, it only contains basic abilities to open and save a project. The major goal was to make MJIN, Python and Qt work together (we were unable to use PyQt or PySide due to technical difficulties).</p> | |||
<p>You can <a title="Editor 0.4.0" href="http://youtu.be/3cqiTIjWwA8" target="_blank">see 0.4.0 in action here</a>.</p> | |||
<p>We started Editor 0.5.0 development in February. It’s 45% ready at the moment.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Editor 0.4.0 and plans for 0.5.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-03-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.4.0 in January. As it was planned, it only contains basic abilities to open and save a project. The major goal was to make MJIN, Python and Qt work together (we were unable to use PyQt or PySide due to technical difficulties).</p> | |||
<p>You can <a title="Editor 0.4.0" href="http://youtu.be/3cqiTIjWwA8" target="_blank">see 0.4.0 in action here</a>. </p> | |||
<p>We started Editor 0.5.0 development in February. It's 45% ready at the moment.</p> | |||
<p>Editor 0.5.0 planned features:</p> | |||
<ol type="1"> | |||
<ol> | |||
<li>Scene node tree editing</li> | |||
<li>Property browser with nodes’ position and model editing</li> | |||
<li>Property browser with nodes' position and model editing</li> | |||
<li>Qt5 support for the sake of easy building on various Linux distributions</li> | |||
</ol> | |||
<p>We estimate to complete it in April.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,31 +80,37 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="editor-0.4.0-plans.html">EN</a> | |||
<a href="../../en/news/editor-0.4.0-plans.html">EN</a> | |||
<a href="../../ru/news/editor-0.4.0-plans.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-plans.html">Editor roadmap for 0.4.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-01-13 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>The development of Editor 0.3.0 showed us, that usage of custom GUI was not a perfect idea. A few months ago, custom GUI seemed as a simpler way to do things, but it turned out to lack many little features, that are crucial if you’re planning to make a convenient tool.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-plans.html">Editor roadmap for 0.4.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-01-13 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>The development of Editor 0.3.0 showed us, that usage of custom GUI was not a perfect idea. A few months ago, custom GUI seemed as a simpler way to do things, but it turned out to lack many little features, that are crucial if you're planning to make a convenient tool.</p> | |||
<p>In the end, we decided to do what we wanted to do in the first place - to use Qt library as the GUI library for our editor.</p> | |||
<p>So, we’ll rewrite the Editor with Qt interface and a little bit refreshed project concept in mind. We plan to release the editor with new GUI and a set of basic features like loading and saving projects in May.</p> | |||
</div> | |||
<p>So, we'll rewrite the Editor with Qt interface and a little bit refreshed project concept in mind. We plan to release the editor with new GUI and a set of basic features like loading and saving projects in May.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,29 +80,31 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="editor-06-roadmap.html">EN</a> | |||
<a href="../../en/news/editor-06-roadmap.html">EN</a> | |||
<a href="../../ru/news/editor-06-roadmap.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Editor 0.5.0 and plans for 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-04-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Editor 0.5.0 and plans for 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-04-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>. </p> | |||
<p>Also, we have just started Editor 0.6.0 development.</p> | |||
<p>Editor 0.6.0 planned features:</p> | |||
<ol type="1"> | |||
<ol> | |||
<li>Camera node editing</li> | |||
<li>Light node editing</li> | |||
<li>Node rotation editing</li> | |||
@@ -120,9 +114,13 @@ | |||
<li>Scene node selection by clicking a mouse in the scene</li> | |||
</ol> | |||
<p>We estimate to complete it in August.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,28 +80,30 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="editor-06.html">EN</a> | |||
<a href="../../en/news/editor-06.html">EN</a> | |||
<a href="../../ru/news/editor-06.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p> | |||
<p>Editor 0.6.0 got the following new features:</p> | |||
<ol type="1"> | |||
<ol> | |||
<li>Camera and light node positioning</li> | |||
<li>Node rotation along X axis</li> | |||
<li>Node scripting support</li> | |||
@@ -118,10 +112,14 @@ | |||
<li>Node selection by LMB click in the scene</li> | |||
<li>Window geometry and state restoration after restart</li> | |||
</ol> | |||
<p>We don’t have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap.</p> | |||
</div> | |||
<p>We don't have 0.7.0 completion date at the moment, because we decided to take some time to set up a roadmap for Shuan and Mahjong 2. Once done, we will share 0.7.0 completion date and its feature list along with the roadmap.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,28 +80,28 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="example-driven-development.html">EN</a> | |||
<a href="../../en/news/example-driven-development.html">EN</a> | |||
<a href="../../ru/news/example-driven-development.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="example-driven-development.html">Example-driven development</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-06-27 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-06-27-example-driven-development.png" alt="Debug broker" /><figcaption>Debug broker</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="example-driven-development.html">Example-driven development</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-06-27 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-06-27-example-driven-development.png" alt="Debug broker" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development.</p> | |||
<p><strong>2018-08 EDIT</strong>: the third example has been renamed to the fourth one due to the reasons described in the <a href="examples-and-dependencies.html">next article</a>.</p> | |||
<p><strong>The third OpenSceneGraph cross-platform example</strong></p> | |||
@@ -121,7 +113,7 @@ | |||
<li>mobiles have restrictions on background processes</li> | |||
<li>web browsers are HTTP clients by design</li> | |||
</ul> | |||
<p>That’s why we decided to create a mediator between debugged application and UI. <a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. Debug broker uses no external dependencies, so it’s easy to run virtually anywhere. Also, since debug broker is a server application, you can configure it once and use it for any number of applications.</p> | |||
<p>That's why we decided to create a mediator between debugged application and UI. <a href="https://github.com/OGStudio/debug-broker">Debug broker</a>, a small Node.js application, became that mediator. Debug broker uses no external dependencies, so it's easy to run virtually anywhere. Also, since debug broker is a server application, you can configure it once and use it for any number of applications.</p> | |||
<p>Both <a href="https://github.com/OGStudio/debug-ui">debug UI</a> and <a href="https://github.com/OGStudio/debug-broker">debug broker</a> use JavaScript because we wanted these tools to be accessible from anywhere with no prior installation. This decision limited us to web browser solution. Providing any sort of desktop application would incur additional installation and maintenance effort, which would only complicate the tools.</p> | |||
<p><strong>Example-driven development establishment</strong></p> | |||
<p>Once the third example was implemented, we realized how important and beneficial it is to develop new features outside the main project:</p> | |||
@@ -131,14 +123,18 @@ | |||
</ul> | |||
<p>When we publicly share our knowledge:</p> | |||
<ul> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what’s going on</li> | |||
<li>we must create documentation for everyone (including ourselves later) to understand what's going on</li> | |||
<li>we must not use hacks because that would break your trust in us</li> | |||
</ul> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, resource caching, etc. are going to be first implemented as examples. We call this example-driven development.</p> | |||
<p>That’s it for explaining how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development.</p> | |||
</div> | |||
<p>From now on, all new features like input handling, Mahjong layout loading, resource caching, etc. are going to be first implemented as examples. We call this example-driven development.</p> | |||
<p>That's it for explaining how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,32 +80,32 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="examples-and-dependencies.html">EN</a> | |||
<a href="../../en/news/examples-and-dependencies.html">EN</a> | |||
<a href="../../ru/news/examples-and-dependencies.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="examples-and-dependencies.html">Examples and dependencies</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-08-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-08-21-examples-and-dependencies.png" alt="Cloud" /><figcaption>Cloud</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="examples-and-dependencies.html">Examples and dependencies</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-08-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-08-21-examples-and-dependencies.png" alt="Cloud" /></p> | |||
<p>This article describes two new OpenSceneGraph cross-platform examples and the change in handling dependencies.</p> | |||
<p><strong>Examples of HTTP client and node selection</strong></p> | |||
<p>Once we finished working on <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">the remote debugging example</a> and <a href="example-driven-development.html">reported its completion</a>, we were surprised by the fact that secure HTTP connection between a debugged application and debug broker was only working in the web version of the example. Desktop and mobile versions only worked with insecure HTTP.</p> | |||
<p>Since current debug scheme has no authentication, insecure debugging over HTTP doesn’t really hurt. However, if we want to access resources located at popular sites like GitHub and BitBucket, we have to support secure HTTP.</p> | |||
<p>Since current debug scheme has no authentication, insecure debugging over HTTP doesn't really hurt. However, if we want to access resources located at popular sites like GitHub and BitBucket, we have to support secure HTTP.</p> | |||
<p>The need to support HTTPS on each platform spurred us to create <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient">HTTP client example</a>. Turned out, each platform had its own preferred way of doing secure HTTP:</p> | |||
<ul> | |||
<li>web (Emscripten) provides Fetch API</li> | |||
@@ -121,19 +113,15 @@ | |||
<li>Android provides HttpUrlConnection in Java</li> | |||
<li>iOS provides NSURLSession in Objective-C</li> | |||
</ul> | |||
<p>The need to support different languages on different platforms resulted in the creation of so-called ‘host-guest’ pattern:</p> | |||
<ul> | |||
<li>guest (platform agnostic) | |||
<p>The need to support different languages on different platforms resulted in the creation of so-called 'host-guest' pattern:</p> | |||
<ul> | |||
<li>guest (platform agnostic)<ul> | |||
<li>provides networking representation</li> | |||
<li>used by cross-platform C++ code</li> | |||
</ul></li> | |||
<li>host (specific platform) | |||
<ul> | |||
<li>used by cross-platform C++ code</li></ul></li> | |||
<li>host (specific platform)<ul> | |||
<li>polls guest for pending requests</li> | |||
<li>processes them</li> | |||
<li>reports results back to the guest</li> | |||
</ul></li> | |||
<li>reports results back to the guest</li></ul></li> | |||
</ul> | |||
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection">Node selection example</a> was straightforward and caused no troubles.</p> | |||
<p><strong>The change in handling dependencies</strong></p> | |||
@@ -144,12 +132,16 @@ | |||
<li>iOS simulator and device builds of the same example being in separate Xcode projects</li> | |||
<li>OpenSceneGraph taking 20-30 minutes to build</li> | |||
</ul> | |||
<p>These shortcomings were slowing us down and complicating the development of new examples. Upon hitting these problems ten more times this month we decided it was time to solve them once and for all. Now OpenSceneGraph is built as part of each example in 2-3 minutes, and there’s no more dependency magic involved. We took the same approach of building dependencies as part of each example to other external libraries like Mongoose and libpng-android, too.</p> | |||
<p>These shortcomings were slowing us down and complicating the development of new examples. Upon hitting these problems ten more times this month we decided it was time to solve them once and for all. Now OpenSceneGraph is built as part of each example in 2-3 minutes, and there's no more dependency magic involved. We took the same approach of building dependencies as part of each example to other external libraries like Mongoose and libpng-android, too.</p> | |||
<p>With these obstacles out of the way, we can now iterate faster. Just in time for the next technical demonstration of Mahjong 2!</p> | |||
<p>That’s it for describing two new OpenSceneGraph cross-platform examples and the change in handling dependencies.</p> | |||
</div> | |||
<p>That's it for describing two new OpenSceneGraph cross-platform examples and the change in handling dependencies.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,28 +80,28 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="ideal-gamedev.html">EN</a> | |||
<a href="../../en/news/ideal-gamedev.html">EN</a> | |||
<a href="../../ru/news/ideal-gamedev.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Ideal games and game development tools</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-11-19-ideal-gamedev.png" alt="A man without and with tools" /><figcaption>A man without and with tools</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Ideal games and game development tools</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-11-19-ideal-gamedev.png" alt="A man without and with tools" /></p> | |||
<p>In this article, we discuss how ideal video game and video game development tool look like, in our opinion.</p> | |||
<p><strong>Questions</strong></p> | |||
<p>As you know, the <a href="../../en/page/about.html">goals of Opensource Game Studio</a> are:</p> | |||
@@ -131,9 +123,10 @@ | |||
<li>insufficient optimization: the game is slow</li> | |||
<li>critical bugs: the game crashes from time to time</li> | |||
</ul> | |||
<p>We work hard to make sure the games we create are accessible everywhere. That’s why we released <a href="mahjong-demo2.html">the second demonstration of OGS Mahjong 2</a> only for the web: because you can run web version virtually anywhere.</p> | |||
<p>We work hard to make sure the games we create are accessible everywhere. That's why we released | |||
<a href="mahjong-demo2.html">the second demonstration of OGS Mahjong 2</a> only for the web: because you can run web version virtually anywhere.</p> | |||
<p><strong>Answer 2: A video game development tool is ideal if it lets you create a video game of your dream in the shortest time possible</strong></p> | |||
<p>Even though we put a lot of effort into sharing our knowledge through <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a>, we understand that those take a lot of time to study. One can’t possibly make even a simple video game like <a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> without performing the following steps:</p> | |||
<p>Even though we put a lot of effort into sharing our knowledge through <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a>, we understand that those take a lot of time to study. One can't possibly make even a simple video game like <a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> without performing the following steps:</p> | |||
<ul> | |||
<li>configure the development environment</li> | |||
<li>write code</li> | |||
@@ -141,12 +134,16 @@ | |||
<li>debug the application</li> | |||
<li>repeat <code>write-build-debug</code> steps as many times as necessary</li> | |||
</ul> | |||
<p>Writing code and debugging are probably the ultimate forms of input and output of any software, so we can’t escape those. However, there are ways to completely remove (or at least significantly decrease) the need for <code>development environment setup</code> and <code>build</code> steps. And this is what we are going to do in the coming months.</p> | |||
<p>Writing code and debugging are probably the ultimate forms of input and output of any software, so we can't escape those. However, there are ways to completely remove (or at least significantly decrease) the need for <code>development environment setup</code> and <code>build</code> steps. And this is what we are going to do in the coming months.</p> | |||
<p>Our goal for the coming months is to create a video game development tool that would allow any programmer (or sufficiently skilled person) to create the <a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> video game from scratch in an hour.</p> | |||
<p>That’s it for discussing how ideal video game and video game development tool look like, in our opinion.</p> | |||
</div> | |||
<p>That's it for discussing how ideal video game and video game development tool look like, in our opinion.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,211 +80,182 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index.html">EN</a> | |||
<a href="../../en/news/index.html">EN</a> | |||
<a href="../../ru/news/index.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="defending-availability.html">Defending availability</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-04-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2019-04-16_defending-availability.jpg" alt="Altai’s Katun river" /><figcaption>Altai’s Katun river</figcaption> | |||
</figure> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="on-the-way-to-durable-applications.html">On the way to durable applications</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-08-05 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2019-08-05_on-the-way-to-durable-applications.jpg" alt="Pskov's veche" /></p> | |||
<p>This article describes our first durable application for desktop PCs: PSKOV static site generator.</p> | |||
<p><strong>Durability</strong></p> | |||
<p>A durable application is an application that functions without a single change on operating systems released in years 2010-2030. In other words, a durable application has backward compatibility of 10 years and has the stability to run for 10 years. Actually, <a href="http://opengamestudio.org/pskov">PSKOV</a> runs even under Windows 2000, so PSKOV has backward compatibility of 19 years.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="on-the-way-to-durable-applications.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="defending-availability.html">Defending availability</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-04-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2019-04-16_defending-availability.jpg" alt="Altai's Katun river" /></p> | |||
<p>In this article, we describe the beginning of our efforts to protect ourselves from third-party solutions.</p> | |||
<p>Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="defending-availability.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="teaching-kids-to-program.html">Teaching kids to program</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-02-04 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2019-02-04_teaching-kids-to-program-team.png" alt="Students and teachers" /><figcaption>Students and teachers</figcaption> | |||
</figure> | |||
<p>Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="defending-availability.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="teaching-kids-to-program.html">Teaching kids to program</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-02-04 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2019-02-04_teaching-kids-to-program-team.png" alt="Students and teachers" /></p> | |||
<p>In this article, Michael shares his experience of teaching kids to program.</p> | |||
<p>Here’s what he covers:</p> | |||
<p>Here's what he covers:</p> | |||
<ul> | |||
<li>organization of the learning process</li> | |||
<li>learning plan</li> | |||
<li>memory game</li> | |||
<li>development tools</li> | |||
<li>lessons</li> | |||
<li>results and plans …</li> | |||
<li>memory game. . .</li> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="teaching-kids-to-program.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /><figcaption>Sparkler</figcaption> | |||
</figure> | |||
<p>It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Ideal games and game development tools</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-11-19-ideal-gamedev.png" alt="A man without and with tools" /><figcaption>A man without and with tools</figcaption> | |||
</figure> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="teaching-kids-to-program.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2019-year-of-rethinking.html">Year of rethinking</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2019-01-01 0:01 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /></p> | |||
<p>It was a year of reimagining and rethinking. As some of you may remember, we started this project to make a game development tool. During the years, the idea evolved from one form to another, sometimes the changes were significant, other times we threw away all the code and started anew.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2019-year-of-rethinking.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ideal-gamedev.html">Ideal games and game development tools</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-11-19-ideal-gamedev.png" alt="A man without and with tools" /></p> | |||
<p>In this article, we discuss how ideal video game and video game development tool look like, in our opinion.</p> | |||
<p><strong>Questions</strong></p> | |||
<p>As you know, the <a href="../../en/page/about.html">goals of Opensource Game Studio</a> are:</p> | |||
<ul> | |||
<li>creation of free video game development tools …</li> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ideal-gamedev.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-demo2.html">OGS Mahjong 2: Demo 2</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-10-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-10-02-mahjong-demo2.png" alt="Start of a Mahjong party" /><figcaption>Start of a Mahjong party</figcaption> | |||
</figure> | |||
<p>We are glad to announce the release of the second demonstration of OGS Mahjong 2. The purposes of this release were to refine our development techniques and build a solid cross-platform foundation.</p> | |||
<p><strong>Release</strong> …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-demo2.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="examples-and-dependencies.html">Examples and dependencies</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-08-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-08-21-examples-and-dependencies.png" alt="Cloud" /><figcaption>Cloud</figcaption> | |||
</figure> | |||
<p>As you know, the <a href="../../en/page/about.html">goals of Opensource Game Studio</a> are:. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ideal-gamedev.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-demo2.html">OGS Mahjong 2: Demo 2</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-10-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-10-02-mahjong-demo2.png" alt="Start of a Mahjong party" /></p> | |||
<p>We are glad to announce the release of the second demonstration of OGS Mahjong 2. The purposes of this release were to refine our development techniques and build a solid cross-platform foundation.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-demo2.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="examples-and-dependencies.html">Examples and dependencies</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-08-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-08-21-examples-and-dependencies.png" alt="Cloud" /></p> | |||
<p>This article describes two new OpenSceneGraph cross-platform examples and the change in handling dependencies.</p> | |||
<p><strong>Examples of HTTP client and node selection</strong></p> | |||
<p>Once we finished working on <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">the remote debugging example</a> and <a href="example-driven-development.html">reported its completion</a>, we were surprised by the fact that secure HTTP connection between a debugged application and debug broker was only working in the web version of the example. Desktop and mobile versions only worked with insecure HTTP. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="examples-and-dependencies.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="example-driven-development.html">Example-driven development</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-06-27 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-06-27-example-driven-development.png" alt="Debug broker" /><figcaption>Debug broker</figcaption> | |||
</figure> | |||
<p>Once we finished working on <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">the remote debugging example</a> and <a href="example-driven-development.html">reported its completion</a>, we were surprised by the fact that secure HTTP connection between a debugged application and debug broker was only working in the web version of the example. Desktop and mobile versions only worked with insecure HTTP.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="examples-and-dependencies.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="example-driven-development.html">Example-driven development</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-06-27 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-06-27-example-driven-development.png" alt="Debug broker" /></p> | |||
<p>This article explains how the third OpenSceneGraph cross-platform example opened our eyes to example-driven development.</p> | |||
<p><strong>2018-08 EDIT</strong>: the third example has been renamed to the fourth one due to the reasons described in the <a href="examples-and-dependencies.html">next article</a>. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="example-driven-development.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="openscenegraph-examples.html">OpenSceneGraph cross-platform examples</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-04-20 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-04-20-openscenegraph-examples.png" alt="iOS Simulator renders a cube" /><figcaption>iOS Simulator renders a cube</figcaption> | |||
</figure> | |||
<p><strong>2018-08 EDIT</strong>: the third example has been renamed to the fourth one due to the reasons described in the <a href="examples-and-dependencies.html">next article</a>.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="example-driven-development.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="openscenegraph-examples.html">OpenSceneGraph cross-platform examples</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-04-20 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-04-20-openscenegraph-examples.png" alt="iOS Simulator renders a cube" /></p> | |||
<p>This article summarizes the work we did to produce the first two cross-platform OpenSceneGraph examples.</p> | |||
<p>By the time <a href="mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> has been released, we’ve already had <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">issue request</a> (to explain how to load images with OpenSceneGraph on Android) hanging for some time. We considered creating a new tutorial for <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> at first. However, we realized that it’s time-consuming and excessive for such a tiny topic (compared to what an average game has) as image loading. We decided to continue sharing our knowledge in the form of concrete examples. That’s how <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> were born. …</p> | |||
<p>By the time <a href="mahjong-techdemo1-gameplay.html">the first technology demonstration of OGS Mahjong 2</a> has been released, we've already had <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">issue request</a> (to explain how to load images with OpenSceneGraph on Android) hanging for some time. We considered creating a new tutorial for <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">OpenSceneGraph cross-platform guide</a> at first. However, we realized that it's time-consuming and excessive for such a tiny topic (compared to what an average game has) as image loading. We decided to continue sharing our knowledge in the form of concrete examples. That's how <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">OpenSceneGraph cross-platform examples</a> were born.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="openscenegraph-examples.html">Continue reading</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="openscenegraph-examples.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-techdemo1-gameplay.html">First techdemo of OGS Mahjong 2: Gameplay</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-02-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-02-16-mahjong-techdemo1-gameplay.png" alt="End of a Mahjong party" /><figcaption>End of a Mahjong party</figcaption> | |||
</figure> | |||
<p>We are glad to announce the release of the first technical demonstration of OGS Mahjong 2. The purpose of this release was to verify gameplay across supported platforms.</p> | |||
<p>Get techdemo for your platform:</p> | |||
<ul> | |||
<li>Run <a href="https://ogstudio.github.io/game-mahjong/versions/013/mjin-player.html">Web version</a> in your browser …</li> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-techdemo1-gameplay.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 1 of 6</p> | |||
<p class="pagination_title">Page 1 of 6</p> | |||
<p> | |||
<a href="index2.html">Older »</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,107 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/news/PSKOV_INDEX_URL">EN</a> | |||
<a href="../../ru/news/PSKOV_INDEX_URL">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>News</h1> | |||
PSKOV_PREVIEWS | |||
PSKOV_PAGINATION | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,201 +80,176 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index2.html">EN</a> | |||
<a href="../../en/news/index2.html">EN</a> | |||
<a href="../../ru/news/index2.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-recreation-start.html">Mahjong recreation start</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-01-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2018-01-26-mahjong-recreation-start.png" alt="Spherical tiles in a Mahjong layout" /><figcaption>Spherical tiles in a Mahjong layout</figcaption> | |||
</figure> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-techdemo1-gameplay.html">First techdemo of OGS Mahjong 2: Gameplay</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-02-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-02-16-mahjong-techdemo1-gameplay.png" alt="End of a Mahjong party" /></p> | |||
<p>We are glad to announce the release of the first technical demonstration of OGS Mahjong 2. The purpose of this release was to verify gameplay across supported platforms.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-techdemo1-gameplay.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mahjong-recreation-start.html">Mahjong recreation start</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2018-01-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2018-01-26-mahjong-recreation-start.png" alt="Spherical tiles in a Mahjong layout" /></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> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-recreation-start.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-lessons.html">The year of lessons</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-12-31 22:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /><figcaption>Sparkler</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-lessons.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /><figcaption>Memory game in the background</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Back to the Static</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-10-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-10-16-back-to-the-static.png" alt="Static and dynamic unite" /><figcaption>Static and dynamic unite</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="back-to-the-static.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mjin-world-birth.html">The birth of MJIN world</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-09-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-09-mjin-world-birth.png" alt="An explosion giving birth to something new" /><figcaption>An explosion giving birth to something new</figcaption> | |||
</figure> | |||
<p>We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mahjong-recreation-start.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-lessons.html">The year of lessons</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-12-31 22:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Sparkler" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-lessons.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-summary.html">2017 summary</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-11-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-11-22-2017-summary.png" alt="Memory game in the background" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-summary.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-the-static.html">Back to the Static</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-10-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-10-16-back-to-the-static.png" alt="Static and dynamic unite" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="back-to-the-static.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="mjin-world-birth.html">The birth of MJIN world</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-09-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-09-mjin-world-birth.png" alt="An explosion giving birth to something new" /></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="scripting-research.html">we spent July to research scripting</a>. We found a solution that satisfies the following criteria. Scripts should: …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mjin-world-birth.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="scripting-research.html">Scripting research</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-08-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-08-scripting-research.png" alt="Textbook with a text" /><figcaption>Textbook with a text</figcaption> | |||
</figure> | |||
<p>As you know, <a href="scripting-research.html">we spent July to research scripting</a>. We found a solution that satisfies the following criteria. Scripts should:. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="mjin-world-birth.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="scripting-research.html">Scripting research</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-08-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-08-scripting-research.png" alt="Textbook with a text" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="scripting-research.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="openscenegraph-cross-platform-guide.html">OpenSceneGraph cross-platform guide</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-07-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-07-openscenegraph-guide.png" alt="OpenSceneGraph sample application in desktop and mobile" /><figcaption>OpenSceneGraph sample application in desktop and mobile</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="scripting-research.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="openscenegraph-cross-platform-guide.html">OpenSceneGraph cross-platform guide</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-07-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-07-openscenegraph-guide.png" alt="OpenSceneGraph sample application in desktop and mobile" /></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. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="openscenegraph-cross-platform-guide.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ios-tutorial.html">iOS tutorial</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-06-08 10:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-06-08-ios-refactoring.png" alt="Earth and a rocket" /><figcaption>Earth and a rocket</figcaption> | |||
</figure> | |||
<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.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="openscenegraph-cross-platform-guide.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ios-tutorial.html">iOS tutorial</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-06-08 10:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-06-08-ios-refactoring.png" alt="Earth and a rocket" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ios-tutorial.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="osg-sample.html">OpenSceneGraph sample</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-05-12 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-05_osg-sample.png" alt="Rocket in the distance" /><figcaption>Rocket in the distance</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="osg-sample.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ios-tutorial.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 2 of 6</p> | |||
<p class="pagination_title">Page 2 of 6</p> | |||
<p> | |||
<a href="index.html">« Newer</a> | |||
<a href="index3.html">Older »</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,200 +80,177 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index3.html">EN</a> | |||
<a href="../../en/news/index3.html">EN</a> | |||
<a href="../../ru/news/index3.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<center> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="its-all-fine.html">It's all fine</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-04-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-04_its-all-fine.png" alt="Flight of a rocket" /><figcaption>Flight of a rocket</figcaption> | |||
</figure> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="osg-sample.html">OpenSceneGraph sample</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-05-12 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-05_osg-sample.png" alt="Rocket in the distance" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="osg-sample.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="its-all-fine.html">It's all fine</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-04-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-04_its-all-fine.png" alt="Flight of a rocket" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="its-all-fine.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="lets-go.html">Let's go</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-03-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-03_lets-go.png" alt="Gagarin’s words" /><figcaption>Gagarin’s words</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="its-all-fine.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="lets-go.html">Let's go</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-03-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-03_lets-go.png" alt="Gagarin's words" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="lets-go.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">The year of challenges</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-01_the-year-of-challenges.png" alt="Rocket launch at Baikonur" /><figcaption>Rocket launch at Baikonur</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="lets-go.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="the-year-of-challenges.html">The year of challenges</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-01_the-year-of-challenges.png" alt="Rocket launch at Baikonur" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Happy 2017</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-12-31_happy-new-year.png" alt="Christmas tree" /><figcaption>Christmas tree</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-happy-new-year.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-november-recap.html">November 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-12-15_2016-november-recap.png" alt="Construction of a building" /><figcaption>Construction of a building</figcaption> | |||
</figure> | |||
<p>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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="the-year-of-challenges.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2017-happy-new-year.html">Happy 2017</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-12-31_happy-new-year.png" alt="Christmas tree" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2017-happy-new-year.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-november-recap.html">November 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-12-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-12-15_2016-november-recap.png" alt="Construction of a building" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-november-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-october-recap.html">October 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-11-19_2016-october-recap.png" alt="Gaining Android support was like climbing a mountain for us" /><figcaption>Gaining Android support was like climbing a mountain for us</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-october-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-tech-showcases.html">Technology showcases</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-10-31_tech-showcases.png" alt="Feature file in the background" /><figcaption>Feature file in the background</figcaption> | |||
</figure> | |||
<p>In this article, we take another look at 2015-2016 live sessions’ format and introduce a new showcase format for 2017.</p> | |||
<p><strong>2015 and 2016: live sessions.</strong></p> | |||
<p>As you know, we use live sessions to show the state of our technology and create a small functional game from scratch. We have conducted four live sessions in the past year, which gave birth to the following small games: …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-tech-showcases.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-september-recap.html">September 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-11 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-10-11_september-recap.png" alt="Mahjong created during live session" /><figcaption>Mahjong created during live session</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-november-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-october-recap.html">October 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-11-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-11-19_2016-october-recap.png" alt="Gaining Android support was like climbing a mountain for us" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-october-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-tech-showcases.html">Technology showcases</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-31 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-10-31_tech-showcases.png" alt="Feature file in the background" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-tech-showcases.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-september-recap.html">September 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-11 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-10-11_september-recap.png" alt="Mahjong created during live session" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-september-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-editor-0.10.html">OGS Editor 0.10 and live session materials</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-10-03_ogs-editor-0.10.png" alt="OGS Editor with Mahjong game" /><figcaption>OGS Editor with Mahjong game</figcaption> | |||
</figure> | |||
<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> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ogs-editor-0.10.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-september-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 3 of 6</p> | |||
<p class="pagination_title">Page 3 of 6</p> | |||
<p> | |||
<a href="index2.html">« Newer</a> | |||
<a href="index4.html">Older »</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,176 +80,169 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index4.html">EN</a> | |||
<a href="../../en/news/index4.html">EN</a> | |||
<a href="../../ru/news/index4.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="yesterdays-live-session-short-overview.html">A few words about live session yesterday</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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.</p> | |||
<p>We will publish live session materials later this week. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="yesterdays-live-session-short-overview.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement-tomorrow.html">Live session is in 24 hours</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-24 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement-tomorrow.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Live session: 25 September 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen> | |||
</iframe> | |||
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a> …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">August 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2016-09-03_august-recap.png" alt="OGS Editor with a spherical scene node" /><figcaption>OGS Editor with a spherical scene node</figcaption> | |||
</figure> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-august-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-social-networks.html">We’re back to social networks</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-18 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="back-to-social-networks.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="once-mahjong-always-mahjong.html">Once Mahjong – always Mahjong</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="once-mahjong-always-mahjong.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-editor-0.9.html">May 2016 live session materials</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-05-29 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen> | |||
</iframe> | |||
<p>This time we have shown how to create a simple Domino based game. Below you can find all materials related to the game creation. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ogs-editor-0.9.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="may-live-session-announcement.html">Live session: 28 May 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-05-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We’re glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+May+live+session&iso=20160528T12&p1=37&ah=3">28 May 2016 at 12:00 CEST</a>. Join us! …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="may-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="may-live-session-decision.html">May live session (Editor 0.9)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-04-24 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, the previously published roadmap assumed, that we would hold a live session in April and it would feature a ping-pong game created with Editor 0.9.</p> | |||
<p>We have to admit, our abilities to plan are not yet good enough. That’s why the next live session will take place by the end of May. The exact date will be announced later. …</p> | |||
<center> | |||
<h1>News</h1> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="may-live-session-decision.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-editor-0.10.html">OGS Editor 0.10 and live session materials</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-10-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-10-03_ogs-editor-0.10.png" alt="OGS Editor with Mahjong game" /></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> | |||
</ul> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ogs-editor-0.10.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="yesterdays-live-session-short-overview.html">A few words about live session yesterday</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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. | |||
. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="yesterdays-live-session-short-overview.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement-tomorrow.html">Live session is in 24 hours</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-24 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement-tomorrow.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="september-live-session-announcement.html">Live session: 25 September 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y5hOGKcQ8wA" frameborder="0" allowfullscreen></iframe> | |||
<p>We will hold <a href="https://www.livecoding.tv/kornerr">live session</a> on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+September+2016+live+session&iso=20160925T12&p1=37&ah=2">25 September 2016 at 12:00 CEST</a>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="september-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-august-recap.html">August 2016 recap</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-09-03 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2016-09-03_august-recap.png" alt="OGS Editor with a spherical scene node" /></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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-august-recap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="back-to-social-networks.html">We’re back to social networks</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-18 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="back-to-social-networks.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="once-mahjong-always-mahjong.html">Once Mahjong – always Mahjong</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-08-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<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> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="once-mahjong-always-mahjong.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ogs-editor-0.9.html">May 2016 live session materials</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-05-29 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/8gHYOkMRoos?list=PLWMTZqE4MAMKp3wP1N63xbdhdgfKi-d-J" frameborder="0" allowfullscreen></iframe> | |||
<p>This time we have shown how to create a simple Domino based game. Below you can find all materials related to the game creation.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="ogs-editor-0.9.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="may-live-session-announcement.html">Live session: 28 May 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-05-17 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio+May+live+session&iso=20160528T12&p1=37&ah=3">28 May 2016 at 12:00 CEST</a>. Join us!. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="may-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 4 of 6</p> | |||
<p class="pagination_title">Page 4 of 6</p> | |||
<p> | |||
<a href="index3.html">« Newer</a> | |||
<a href="index5.html">Older »</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,171 +80,166 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index5.html">EN</a> | |||
<a href="../../en/news/index5.html">EN</a> | |||
<a href="../../ru/news/index5.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="rolling-ball.html">"Rolling ball" live session videos and downloads</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-02-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Since we held 2 live sessions to create “Rolling ball” game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen> | |||
</iframe> | |||
<iframe width="560" height="315" src="http://www.youtube.com/embed/851IlFT7y18" frameborder="0" allowfullscreen> | |||
</iframe> | |||
<p>…</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="rolling-ball.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="rolling-ball-live-session-pt2.html">Game creation live session (part 2): 7 February 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-02-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Unfortunately, we have failed to finish creation of the simple “Rolling ball” game in 3 hours. That’s why we will hold the second <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session%2C+part+2&iso=20160207T12&p1=37&ah=3">7 February 2016 at 12:00 CET</a>. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="rolling-ball-live-session-pt2.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We’re glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us! …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">SOON: Creating a simple game live (Editor 0.8)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-decision.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-roadmap.html">Roadmap for 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-12-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, according to the <a href="2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="livesession-materials-editor-07.html">Live session video and downloads</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>If you missed the live session, you can watch it here: <a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p> | |||
<p>You can download the resulting project here: …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="livesession-materials-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="livesession-editor-07.html">Creating a simple game live: 15 November 2015</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-09 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We’re glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T12&p1=37&ah=3">15 November 2015 at 12:00 CET</a>. Join us! …</p> | |||
<center> | |||
<h1>News</h1> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="livesession-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="soon-game-creation-editor-07.html">SOON: Creating a simple game live (Editor 0.7)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="may-live-session-decision.html">May live session (Editor 0.9)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-04-24 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, the previously published roadmap assumed, that we would hold a live session in April and it would feature a ping-pong game created with Editor 0.9.</p> | |||
<p>We have to admit, our abilities to plan are not yet good enough. That's why the next live session will take place by the end of May. The exact date will be announced later.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="may-live-session-decision.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="rolling-ball.html">"Rolling ball" live session videos and downloads</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-02-10 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:</p> | |||
<iframe width="560" height="315" src="https://www.youtube.com/embed/70Jny1xJxK8" frameborder="0" allowfullscreen></iframe> | |||
<p>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="rolling-ball.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="rolling-ball-live-session-pt2.html">Game creation live session (part 2): 7 February 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-02-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Unfortunately, we have failed to finish creation of the simple "Rolling ball" game in 3 hours. That's why we will hold the second <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session%2C+part+2&iso=20160207T12&p1=37&ah=3">7 February 2016 at 12:00 CET</a>.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="rolling-ball-live-session-pt2.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-announcement.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">SOON: Creating a simple game live (Editor 0.8)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="january-live-session-decision.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2016-roadmap.html">Roadmap for 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-12-26 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, according to the <a href="2015-roadmap.html">previously published roadmap</a>, we now have sound system in place. However, we decided to go further and implement the first version of Player. We wanted to get it done by December, but, unfortunately, more work resulted in the change of dates.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2016-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="livesession-materials-editor-07.html">Live session video and downloads</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>If you missed the live session, you can watch it here: | |||
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a>. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="livesession-materials-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="livesession-editor-07.html">Creating a simple game live: 15 November 2015</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-09 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Whac-a-mole+game+from+scratch+live&iso=20151115T12&p1=37&ah=3">15 November 2015 at 12:00 CET</a>. Join us!. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="livesession-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="soon-game-creation-editor-07.html">SOON: Creating a simple game live (Editor 0.7)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-11-02 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As we have promised, we are ready to give you Editor 0.7 which is capable of creating the complete test chamber. However, after recreating the test chamber ourselves, it became clear that:</p> | |||
<ol type="1"> | |||
<li>it takes more than 8 hours to recreate it (too long)</li> | |||
<li>it’s inappropriate to be presented in the form of an article (too boring) …</li> | |||
<ol> | |||
<li>it takes more than 8 hours to recreate it (too long). . .</li> | |||
</ol> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="soon-game-creation-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="soon-game-creation-editor-07.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="bye-desura-hello-humblebundle.html">Desura no more, hello Humble Bundle Widget</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-23 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>After the recent bankruptcy of Desura’s parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="bye-desura-hello-humblebundle.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 5 of 6</p> | |||
<p class="pagination_title">Page 5 of 6</p> | |||
<p> | |||
<a href="index4.html">« Newer</a> | |||
<a href="index6.html">Older »</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,155 +80,166 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="index6.html">EN</a> | |||
<a href="../../en/news/index6.html">EN</a> | |||
<a href="../../ru/news/index6.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>News</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="test-chamber-for-everyone.html">Test chamber for everyone (Editor 0.7.0)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, the main goal of Editor 0.7.0 is the ability to create the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> with it. It needs Actions’ system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber! …</p> | |||
<center> | |||
<h1>News</h1> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="test-chamber-for-everyone.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2015-roadmap.html">Roadmap for 2015-2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="bye-desura-hello-humblebundle.html">Desura no more, hello Humble Bundle Widget</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-23 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>After the recent bankruptcy of Desura's parent company, we decided, that we need a new place for our Deluxe version. Something better, more modern and more trustworthy. We have chosen the Humble Widget, with which you can buy the deluxe version of the game without leaving our site.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="bye-desura-hello-humblebundle.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="test-chamber-for-everyone.html">Test chamber for everyone (Editor 0.7.0)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-22 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As you know, the main goal of Editor 0.7.0 is the ability to create the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber!. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="test-chamber-for-everyone.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2015-roadmap.html">Roadmap for 2015-2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-07-19 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>As promised, we have come up with a list of milestones and their approximate dates for the coming year:</p> | |||
<ol type="1"> | |||
<li>Editor 0.7.0 (October 2015) - Actions’ system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a> …</li> | |||
<ol> | |||
<li>Editor 0.7.0 (October 2015) - Actions' system: we recreate the <a title="Test chamber" href="https://youtu.be/9_6seUWcPbU" target="_blank">test chamber</a>. . .</li> | |||
</ol> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2015-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>.</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2015-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06.html">Editor 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-06-28 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.6.0. You can <a title="Editor 0.6.0" href="https://youtu.be/q85GcC6l4Tw" target="_blank">see 0.6.0 in action here</a>. </p> | |||
<p>Editor 0.6.0 got the following new features:</p> | |||
<ol type="1"> | |||
<li>Camera and light node positioning</li> | |||
<li>Node rotation along X axis …</li> | |||
<ol> | |||
<li>Camera and light node positioning. . .</li> | |||
</ol> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Editor 0.5.0 and plans for 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-04-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>.</p> | |||
<p>Also, we have just started Editor 0.6.0 development. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Editor 0.4.0 and plans for 0.5.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-03-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.4.0 in January. As it was planned, it only contains basic abilities to open and save a project. The major goal was to make MJIN, Python and Qt work together (we were unable to use PyQt or PySide due to technical difficulties). …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-plans.html">Editor roadmap for 0.4.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-01-13 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>The development of Editor 0.3.0 showed us, that usage of custom GUI was not a perfect idea. A few months ago, custom GUI seemed as a simpler way to do things, but it turned out to lack many little features, that are crucial if you’re planning to make a convenient tool. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-0.4.0-plans.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2014-another-year-passed.html">And another year has passed</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 12:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-06-roadmap.html">Editor 0.5.0 and plans for 0.6.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-04-15 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.5.0. As it was planned, it has scene node tree editing, property browser, and Qt5 support. You can <a title="Editor 0.5.0" href="https://youtu.be/Vb2Q6IuQDbo" target="_blank">see 0.5.0 in action here</a>. . . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-06-roadmap.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Editor 0.4.0 and plans for 0.5.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-03-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We completed Editor 0.4.0 in January. As it was planned, it only contains basic abilities to open and save a project. The major goal was to make MJIN, Python and Qt work together (we were unable to use PyQt or PySide due to technical difficulties).. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-0.4.0-and-0.5.0-plans.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="editor-0.4.0-plans.html">Editor roadmap for 0.4.0</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2015-01-13 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>The development of Editor 0.3.0 showed us, that usage of custom GUI was not a perfect idea. A few months ago, custom GUI seemed as a simpler way to do things, but it turned out to lack many little features, that are crucial if you're planning to make a convenient tool.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="editor-0.4.0-plans.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="user-servey-finish-promise.html">User survey ends today</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 11:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>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.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="user-servey-finish-promise.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="2014-another-year-passed.html">And another year has passed</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 12:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>Hello!</p> | |||
<p>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. …</p> | |||
<p>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.. . .</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2014-another-year-passed.html">Continue reading</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="2014-another-year-passed.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="user-servey-finish-promise.html">User survey ends today</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2014-12-31 11:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>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. …</p> | |||
</div> | |||
<div class="news_item_more"> | |||
<a href="user-servey-finish-promise.html">Continue reading</a> | |||
</div> | |||
</div> | |||
<p class="pagination_title">Page 6 of 6</p> | |||
<p class="pagination_title">Page 6 of 6</p> | |||
<p> | |||
<a href="index5.html">« Newer</a> | |||
</p> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,70 +80,66 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="ios-tutorial.html">EN</a> | |||
<a href="../../en/news/ios-tutorial.html">EN</a> | |||
<a href="../../ru/news/ios-tutorial.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ios-tutorial.html">iOS tutorial</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-06-08 10:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-06-08-ios-refactoring.png" alt="Earth and a rocket" /><figcaption>Earth and a rocket</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="ios-tutorial.html">iOS tutorial</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-06-08 10:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-06-08-ios-refactoring.png" alt="Earth and a rocket" /></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> | |||
<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> | |||
<p><strong>Native library</strong></p> | |||
<p>The first question we had to answer was: should the sample application be part of Xcode project or be a separately built library?</p> | |||
<p>We had to consider the following facts:</p> | |||
<ol type="1"> | |||
<li>Xcode project can use C++ directly (thanks to Objective-C++) without stuff like JNI | |||
<ul> | |||
<li>There’s no need for a separate library (+ application)</li> | |||
<li>Creating a separate library is an additional work (- library)</li> | |||
</ul></li> | |||
<li>OpenSceneGraph builds libraries | |||
<ul> | |||
<li>It’s easier to use standard build process (+ library)</li> | |||
<li>It’s harder to create custom build process just for a single platform (- application)</li> | |||
</ul></li> | |||
<li>OpenSceneGraph uses CMake build system, which is not supported by Xcode | |||
<ul> | |||
<li>Xcode project can’t include CMake files (- application)</li> | |||
<li>It’s easy to create custom CMake file that includes OpenSceneGraph CMake file to build a single library (+ library)</li> | |||
</ul></li> | |||
<li>CMake can generate Xcode project | |||
<ul> | |||
<li>It’s possible to create a CMake file that builds both OpenSceneGraph and the sample application (+ application)</li> | |||
<li>Xcode is the de-facto tool to create Xcode projects; it’s easier to use standard build process (+ library)</li> | |||
</ul></li> | |||
<ol> | |||
<li>Xcode project can use C++ directly (thanks to Objective-C++) without stuff like JNI<ul> | |||
<li>There's no need for a separate library (+ application)</li> | |||
<li>Creating a separate library is an additional work (- library)</li></ul></li> | |||
<li>OpenSceneGraph builds libraries<ul> | |||
<li>It's easier to use standard build process (+ library)</li> | |||
<li>It's harder to create custom build process just for a single platform (- application)</li></ul></li> | |||
<li>OpenSceneGraph uses CMake build system, which is not supported by Xcode<ul> | |||
<li>Xcode project can't include CMake files (- application)</li> | |||
<li>It's easy to create custom CMake file that includes OpenSceneGraph CMake file to build a single library (+ library)</li></ul></li> | |||
<li>CMake can generate Xcode project<ul> | |||
<li>It's possible to create a CMake file that builds both OpenSceneGraph and the sample application (+ application)</li> | |||
<li>Xcode is the de-facto tool to create Xcode projects; it's easier to use standard build process (+ library)</li></ul></li> | |||
</ol> | |||
<p>After evaluating the pros and cons of each approach, we decided to turn the sample application into a library and include it in Xcode project. The downside of this approach is that simulator and real device builds need separate library builds.</p> | |||
<p><strong>Refactoring</strong></p> | |||
<p>The second question we had to answer was: should there be a single source code base for all platforms or several ones, one for each platform?</p> | |||
<p>While doing Android tutorial we used single source code base because it worked fine for desktop and Android. As we started to work through iOS tutorial, it became apparent that particular features may or may not work on some platforms. For example, one feature may work on desktop and iOS, but not Android. Another feature may work on iOS and Android, but not desktop. Since we didn’t want to pollute the code with #ifdefs, we started to put each platform combination into a separate file. The number of files grew rapidly. The files were reusable, but it became extremely hard to see the whole picture.</p> | |||
<p>At this point, we realized there’s the second question. We reminded ourselves that the main purpose of the sample source code is to teach how to do basic OpenSceneGraph things, not create a reusable library with API that is stable across several years.</p> | |||
<p>That’s when our home grown feature tool came into play. With its help, we separated the code into several parts, which in the end produce just two files for each platform:</p> | |||
<ol type="1"> | |||
<p>While doing Android tutorial we used single source code base because it worked fine for desktop and Android. As we started to work through iOS tutorial, it became apparent that particular features may or may not work on some platforms. For example, one feature may work on desktop and iOS, but not Android. Another feature may work on iOS and Android, but not desktop. Since we didn't want to pollute the code with #ifdefs, we started to put each platform combination into a separate file. The number of files grew rapidly. The files were reusable, but it became extremely hard to see the whole picture.</p> | |||
<p>At this point, we realized there's the second question. We reminded ourselves that the main purpose of the sample source code is to teach how to do basic OpenSceneGraph things, not create a reusable library with API that is stable across several years.</p> | |||
<p>That's when our home grown feature tool came into play. With its help, we separated the code into several parts, which in the end produce just two files for each platform:</p> | |||
<ol> | |||
<li>functions.h - contains reusable classless functions</li> | |||
<li>main.h - contains the rest of the sample application code</li> | |||
</ol> | |||
<p>Their contents differ slightly for each platform, but it’s easy to see the whole picture now.</p> | |||
<p>That’s it for describing problems we faced during the creation of iOS tutorial in May 2017.</p> | |||
</div> | |||
<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> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -0,0 +1,114 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<meta charset="utf-8"> | |||
<head> | |||
<style> | |||
#header | |||
{ | |||
background: #2BA6E3; | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
width: 720px; | |||
padding: 1em; | |||
margin-top: 2em; | |||
margin-bottom: 2em; | |||
border: 1px solid #E0E0E0; | |||
text-align: left; | |||
} | |||
.news_item_contents | |||
{ | |||
color: #444; | |||
line-height: 1.5em; | |||
} | |||
.news_item_date | |||
{ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
} | |||
code, pre | |||
{ | |||
font-family: monospace, serif; | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
padding: 0.5em; | |||
margin-top: 0.5em; | |||
margin-bottom: 0.5em; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="../../en/news/PSKOV_ITEM_URL">EN</a> | |||
<a href="../../ru/news/PSKOV_ITEM_URL">RU</a> | |||
</div> | |||
</div> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
PSKOV_ITEM_DATE | |||
</p> | |||
<div class="news_item_contents"> | |||
PSKOV_ITEM_CONTENTS | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,32 +80,32 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="its-all-fine.html">EN</a> | |||
<a href="../../en/news/its-all-fine.html">EN</a> | |||
<a href="../../ru/news/its-all-fine.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="its-all-fine.html">It's all fine</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-04-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-04_its-all-fine.png" alt="Flight of a rocket" /><figcaption>Flight of a rocket</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="its-all-fine.html">It's all fine</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-04-07 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-04_its-all-fine.png" alt="Flight of a rocket" /></p> | |||
<p>This article describes creation of the first four OpenSceneGraph tutorials in March 2017.</p> | |||
<p>The <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/">first four OpenSceneGraph tutorials</a> explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.</p> | |||
<p>The whole process of creating a single tutorial turned out to be pretty daunting because it includes several tasks:</p> | |||
<ol type="1"> | |||
<ol> | |||
<li>Record original video depicting one or more steps</li> | |||
<li>Name the steps as clear as possible</li> | |||
<li>Select the parts of the video that display the step</li> | |||
@@ -126,11 +118,15 @@ | |||
<li>Upload the video to YouTube with timestamps of steps for easier navigation</li> | |||
</ol> | |||
<p>Some of those tasks had to be repeated multiple times until the combination of video, text, and article was clear and logical.</p> | |||
<p>Overall, it took us 30 hours to create the tutorials. The whole process gave us a lot of experience, which will help us in shaping learning materials for our technologies in the future. We don’t know how they will look like exactly, but they will definitely be better.</p> | |||
<p>That’s it for describing creation of the first four OpenSceneGraph tutorials in March 2017.</p> | |||
</div> | |||
<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> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,29 +80,35 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="january-live-session-announcement.html">EN</a> | |||
<a href="../../en/news/january-live-session-announcement.html">EN</a> | |||
<a href="../../ru/news/january-live-session-announcement.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We’re glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p> | |||
</div> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-announcement.html">Game creation live session: 31 January 2016</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-25 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We're glad to annouce that the <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> session will take place on <a title="Local time" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+Game+creation+live+session&iso=20160131T12&p1=37&ah=3">31 January 2016 at 12:00 CET</a>. Join us!</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,30 +80,36 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="january-live-session-decision.html">EN</a> | |||
<a href="../../en/news/january-live-session-decision.html">EN</a> | |||
<a href="../../ru/news/january-live-session-decision.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">SOON: Creating a simple game live (Editor 0.8)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run.</p> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="january-live-session-decision.html">SOON: Creating a simple game live (Editor 0.8)</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2016-01-21 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p>We are ready to present Editor 0.8 with Player. The live session will be held at <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> SOON. We will show you how to create a simple game with sounds from scratch. And this time it will not need an Editor to run.</p> | |||
<p>The exact date and time is to be announced in the coming days. Stay tuned!</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |
@@ -9,13 +9,18 @@ | |||
padding: 0.7em; | |||
text-align: left; | |||
} | |||
#header a | |||
{ | |||
color: white; | |||
text-decoration: none; | |||
padding: 0.5em 1em 0.5em 1em; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
.news_item | |||
{ | |||
background: #FFFFFF; | |||
@@ -36,6 +41,11 @@ | |||
margin-bottom: 2em; | |||
color: #aaa; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
body | |||
{ | |||
background: #FAFAFA; | |||
@@ -46,38 +56,20 @@ | |||
font-size: 1em; | |||
color: #7f0a0c; | |||
} | |||
figure | |||
{ | |||
margin: 0px; | |||
padding: 0px; | |||
} | |||
img | |||
{ | |||
width: 720px; | |||
} | |||
html | |||
{ | |||
font-family: sans-serif; | |||
} | |||
a | |||
{ | |||
color: #3A91CB; | |||
text-decoration: none; | |||
} | |||
#lang | |||
{ | |||
float: right; | |||
} | |||
figcaption | |||
{ | |||
color: #aaa; | |||
} | |||
table | |||
{ | |||
border-collapse: collapse; | |||
} | |||
table, th, td | |||
{ | |||
border: 1px solid #aaa; | |||
@@ -88,34 +80,34 @@ | |||
</style> | |||
</head> | |||
<body> | |||
<center> | |||
<div id="header"> | |||
<strong id="title">Open Game Studio</strong> | |||
<a href="../../en/news/index.html">News</a> | |||
<a href="../../en/page/games.html">Games</a> | |||
<a href="../../en/game/index.html">Games</a> | |||
<a href="../../en/tool/index.html">Tools</a> | |||
<a href="../../en/page/about.html">About</a> | |||
<div id="lang"> | |||
<a href="lets-go.html">EN</a> | |||
<a href="../../en/news/lets-go.html">EN</a> | |||
<a href="../../ru/news/lets-go.html">RU</a> | |||
</div> | |||
</div> | |||
<h1>In the news</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="lets-go.html">Let's go</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-03-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<figure> | |||
<img src="../../images/2017-03_lets-go.png" alt="Gagarin’s words" /><figcaption>Gagarin’s words</figcaption> | |||
</figure> | |||
<center> | |||
<h1>In the news...</h1> | |||
<div class="news_item"> | |||
<h2 class="news_item_title"> | |||
<a href="lets-go.html">Let's go</a> | |||
</h2> | |||
<p class="news_item_date"> | |||
2017-03-16 00:00 | |||
</p> | |||
<div class="news_item_contents"> | |||
<p><img src="../../images/2017-03_lets-go.png" alt="Gagarin's words" /></p> | |||
<p>In this article we describe our progress in January and February of 2017: rendering under iOS/Web and a new tutorial tool.</p> | |||
<p><strong>Rendering under iOS/Web</strong></p> | |||
<p>To our surprise, we got a simple red cube rendered under <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> and <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Web</a> pretty fast: in early February. However, this is only the beginning of this year’s challenge to support Android, iOS, and Web platforms. There’s a long and bumpy road ahead of us as we need a lot more on each platform before we can claim a success: visual effects, Python scripting, data archives.</p> | |||
<p>Since it took us about four months to get to mobile and web platforms, we decided to share our knowledge and help OpenSceneGraph community with a guide that shows how to use OpenSceneGraph on desktop, mobile, and web. We believe the more widespread OpenSceneGraph is, the stronger our technology becomes. As Isaac Newton said, “If I have seen further, it is by standing on the shoulders of giants.” OpenSceneGraph is our giant.</p> | |||
<p>To our surprise, we got a simple red cube rendered under <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> and <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Web</a> pretty fast: in early February. However, this is only the beginning of this year's challenge to support Android, iOS, and Web platforms. There's a long and bumpy road ahead of us as we need a lot more on each platform before we can claim a success: visual effects, Python scripting, data archives.</p> | |||
<p>Since it took us about four months to get to mobile and web platforms, we decided to share our knowledge and help OpenSceneGraph community with a guide that shows how to use OpenSceneGraph on desktop, mobile, and web. We believe the more widespread OpenSceneGraph is, the stronger our technology becomes. As Isaac Newton said, "If I have seen further, it is by standing on the shoulders of giants." OpenSceneGraph is our giant.</p> | |||
<p><strong>Tutorial tool</strong></p> | |||
<p>Having conducted four live sessions before, it was clear the guide needs videos depicting every nuance. However, bare video alone is only good for showing what to do and not for explaining why do it in a certain way. That’s why we decided to combine video with text in the forms of video subtitles and separate articles.</p> | |||
<p>Having conducted four live sessions before, it was clear the guide needs videos depicting every nuance. However, bare video alone is only good for showing what to do and not for explaining why do it in a certain way. That's why we decided to combine video with text in the forms of video subtitles and separate articles.</p> | |||
<p>To combine text and video, we first tried <a href="http://openshotvideo.com">OpenShot</a>. It worked well, but we quickly saw its limitations:</p> | |||
<ul> | |||
<li>Too much time is spent on adjusting time frames and animations</li> | |||
@@ -124,18 +116,23 @@ | |||
<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> | |||
<pre><code>background bg.png | |||
text 5 Let's install Blender | |||
text 5 Let's install Blender | |||
video 0:6 install_blender.mp4 | |||
text 5 Installing it with apt | |||
video 6:26 install_blender.mp4 | |||
text 5 We're still installing it | |||
text 5 We're still installing it | |||
video 26:56 install_blender.mp4 | |||
text 5 Congratulations! We just finished installing Blender</code></pre> | |||
text 5 Congratulations! We just finished installing Blender | |||
</code></pre> | |||
<p>This is the actual script. See the final result <a href="https://github.com/ogstudio/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> | |||
</div> | |||
<p>That's it for describing our progress in January and February of 2017: rendering under iOS/Web and the new tutorial tool.</p> | |||
</div> | |||
</div> | |||
<div id="footer"> | |||
The site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a> | |||
from <a href="http://github.com/ogstudio/site-opengamestudio">this source code</a>. | |||
The site is hosted by <a href="https://pages.github.com">GitHub Pages</a>. | |||
</div> | |||
</center> | |||
</body> | |||
</html> |