瀏覽代碼

Publish 2019-02 'Teaching kids to program' article

master
父節點
當前提交
cee5f32abc
共有 36 個文件被更改,包括 2822 次插入685 次删除
  1. 二進制
      2019-02-04_teaching-kids-to-program-all-cards-face-down.png
  2. 二進制
      2019-02-04_teaching-kids-to-program-all-cards-face-up.png
  3. 二進制
      2019-02-04_teaching-kids-to-program-cat-animation.gif
  4. 二進制
      2019-02-04_teaching-kids-to-program-cat-script-ru.png
  5. 二進制
      2019-02-04_teaching-kids-to-program-cat-script.png
  6. 二進制
      2019-02-04_teaching-kids-to-program-first-pair.png
  7. 二進制
      2019-02-04_teaching-kids-to-program-leaderboard.png
  8. 二進制
      2019-02-04_teaching-kids-to-program-remove-pair.png
  9. 二進制
      2019-02-04_teaching-kids-to-program-sap-ui.png
  10. 二進制
      2019-02-04_teaching-kids-to-program-second-pair.png
  11. 二進制
      2019-02-04_teaching-kids-to-program-team.png
  12. +1
    -1
      2019-year-of-rethinking-ru.html
  13. +1
    -1
      2019-year-of-rethinking.html
  14. +8
    -0
      archives.html
  15. +221
    -87
      author/opensource-game-studio.html
  16. +42
    -39
      author/opensource-game-studio2.html
  17. +39
    -37
      author/opensource-game-studio3.html
  18. +37
    -40
      author/opensource-game-studio4.html
  19. +41
    -40
      author/opensource-game-studio5.html
  20. +161
    -0
      author/opensource-game-studio6.html
  21. +221
    -87
      category/news.html
  22. +42
    -39
      category/news2.html
  23. +39
    -37
      category/news3.html
  24. +37
    -40
      category/news4.html
  25. +41
    -40
      category/news5.html
  26. +161
    -0
      category/news6.html
  27. +392
    -1
      feeds/all.atom.xml
  28. +200
    -1
      feeds/news.atom.xml
  29. +210
    -39
      index.html
  30. +42
    -39
      index2.html
  31. +39
    -37
      index3.html
  32. +37
    -40
      index4.html
  33. +41
    -40
      index5.html
  34. +161
    -0
      index6.html
  35. +300
    -0
      teaching-kids-to-program-ru.html
  36. +308
    -0
      teaching-kids-to-program.html

二進制
2019-02-04_teaching-kids-to-program-all-cards-face-down.png 查看文件

Before After
Width: 1000  |  Height: 641  |  Size: 832KB

二進制
2019-02-04_teaching-kids-to-program-all-cards-face-up.png 查看文件

Before After
Width: 1000  |  Height: 641  |  Size: 564KB

二進制
2019-02-04_teaching-kids-to-program-cat-animation.gif 查看文件

Before After
Width: 640  |  Height: 430  |  Size: 1.5MB

二進制
2019-02-04_teaching-kids-to-program-cat-script-ru.png 查看文件

Before After
Width: 485  |  Height: 346  |  Size: 15KB

二進制
2019-02-04_teaching-kids-to-program-cat-script.png 查看文件

Before After
Width: 445  |  Height: 365  |  Size: 17KB

二進制
2019-02-04_teaching-kids-to-program-first-pair.png 查看文件

Before After
Width: 1000  |  Height: 641  |  Size: 774KB

二進制
2019-02-04_teaching-kids-to-program-leaderboard.png 查看文件

Before After
Width: 1280  |  Height: 960  |  Size: 1.4MB

二進制
2019-02-04_teaching-kids-to-program-remove-pair.png 查看文件

Before After
Width: 1000  |  Height: 641  |  Size: 719KB

二進制
2019-02-04_teaching-kids-to-program-sap-ui.png 查看文件

Before After
Width: 1004  |  Height: 714  |  Size: 103KB

二進制
2019-02-04_teaching-kids-to-program-second-pair.png 查看文件

Before After
Width: 1000  |  Height: 641  |  Size: 769KB

二進制
2019-02-04_teaching-kids-to-program-team.png 查看文件

Before After
Width: 1024  |  Height: 768  |  Size: 217KB

+ 1
- 1
2019-year-of-rethinking-ru.html 查看文件

@@ -51,7 +51,7 @@
title="Permalink to Год переосмысления">Год переосмысления</a></h3>
</header>

<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Tue 01 January 2019
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Вт 01 января 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking.html">en</a>

</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p>


+ 1
- 1
2019-year-of-rethinking.html 查看文件

@@ -51,7 +51,7 @@
title="Permalink to Year of rethinking">Year of rethinking</a></h3>
</header>

<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Tue 01 January 2019
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Вт 01 января 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking-ru.html">ru</a>

</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p>


+ 8
- 0
archives.html 查看文件

@@ -50,6 +50,14 @@

<table class="table-archive">
<tbody>
<tr>
<td>Пн 04 февраля 2019</td>
<td><a href='teaching-kids-to-program.html'>Teaching kids to program</a></td>
</tr>
<tr>
<td>Вт 01 января 2019</td>
<td><a href='2019-year-of-rethinking.html'>Year of rethinking</a></td>
</tr>
<tr>
<td>Пн 19 ноября 2018</td>
<td><a href='ideal-gamedev.html'>Ideal games and game development tools</a></td>


+ 221
- 87
author/opensource-game-studio.html 查看文件

@@ -48,6 +48,223 @@

<article>
<a href="http://opengamestudio.org/teaching-kids-to-program.html"><h3 class="article-title">Teaching kids to program</h3></a>
<h6 class="subheader" title="2019-02-04T00:00:00+03:00">Пн 04 февраля 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/teaching-kids-to-program-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"></p>
<p>In this article, Michael shares his experience of teaching kids to program.</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>
</ul>
<p><strong>Organization of the learning process</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Learning plan</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Memory game</strong></p>
<p>Let's see what the memory game is.</p>
<p><strong>1)</strong> In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"></p>
<p>As you can see, we only have two cards with a cat, only two cards with a dog, etc..</p>
<p><strong>2)</strong> At the start we shuffle the cards and place them with their faces down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>3)</strong> The first game player turns a pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"></p>
<p><strong>4)</strong> If the cards differ they are once again turned face down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>5)</strong> The next player turns another pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"></p>
<p><strong>6)</strong> If the cards are the same, they are removed from the field.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"></p>
<p>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.</p>
<p>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:</p>
<ul>
<li>creation of items</li>
<li>arrangement of items</li>
<li>selection of items</li>
<li>comparison of items</li>
<li>removal of matching items</li>
</ul>
<p><strong>Development tools</strong></p>
<p>We used Scratch as our development tool. <a href="https://scratch.mit.edu/">Scratch</a> is a great tool to teach kids to program because each action, each operation is represented graphically.</p>
<p>For example, you can rotate a cat 360 degrees in 1 second using the following script:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"></p>
<p>Here's how it looks like in action:</p>
<p><img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"></p>
<p>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:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"></p>
<p>Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.</p>
<p>Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.</p>
<p><strong>The first lesson</strong></p>
<p>The first lesson was introductory, we didn't use PCs.</p>
<p>The plan was to:</p>
<ol>
<li>Meet</li>
<li>Play the memory game with cards</li>
<li>Learn the concept of algorithm</li>
<li>Detail the game's algorithm</li>
<li>Analyze the lesson</li>
</ol>
<p><strong>1)</strong> Meeting</p>
<p>Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "My name is John, I am going to study Scratch because my father forces me to"</li>
<li>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"</li>
<li>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"</li>
</ol>
<p>Such a format of meeting has the following objectives:</p>
<ul>
<li>Getting to know each other<ul>
<li>Each team member should know other team members by name</li>
</ul>
</li>
<li>Common space<ul>
<li>Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games</li>
</ul>
</li>
<li>Equality<ul>
<li>Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy</li>
</ul>
</li>
<li>Attention<ul>
<li>Each team member should listen carefully to be able to correctly repeat what others said</li>
</ul>
</li>
<li>Feedback<ul>
<li>Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them</li>
</ul>
</li>
<li>Fun<ul>
<li>Memorization problems produce lots of laughter</li>
</ul>
</li>
</ul>
<p><strong>2)</strong> Memory game with cards</p>
<ol>
<li>Take 8 pairs of the same cards from two decks of cards</li>
<li>Place the cards in 4 x 4 grid, faces down</li>
<li>Students stand up around single table</li>
<li>Each student, one by one, turns a pair of cards<ul>
<li>If cards match, they are taken off the field</li>
<li>If cards differ, they are once again turned face down</li>
</ul>
</li>
</ol>
<p>Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.</p>
<p>After a couple of parties it's time to find out what algorithm is.</p>
<p><strong>3)</strong> The concept of algorithm</p>
<ol>
<li>Ask students first, hear them out to find out their level</li>
<li>Correct what students say if they were close to an expected answer</li>
<li>Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one</li>
</ol>
<p>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.</p>
<p><strong>4)</strong> The algorithm of the game</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "Place 16 cards faces down"</li>
<li>Alex: "Turn a pair of cards"</li>
<li>Paul: "If the cards differ, turn them faces down again"</li>
<li>Dan: "Turn another pair of cards"</li>
<li>Mike: "If the cards match, take them off the field"</li>
</ol>
<p><strong>5)</strong> Analyze the lesson</p>
<p>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.</p>
<p>We had the following decisions:</p>
<ol>
<li>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.</li>
<li>Only accept accurate answers from students because active students like to wriggle, which hampers discipline.</li>
</ol>
<p><strong>The second and the third lessons</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>We saw two ways to approach the problem:</p>
<ol>
<li>Keep on studying the coordinate system risking not to get the game done by the end of the course</li>
<li>Change the game requirements so that coordinate system is not necessary</li>
</ol>
<p>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.</p>
<p>This solution sparkled a few thoughts in my head:</p>
<ol>
<li>One can often find a simpler path to solve an issue</li>
<li>This path is simpler to understand, albeit less flexible</li>
<li>One can go the harder path to increase flexibility much later when it becomes absolutely necessary</li>
<li>Simplification moves one closer to the goal, complexification moves one in the opposite direction</li>
</ol>
<p><strong>The fourth and the rest of the lessons</strong></p>
<p>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.</p>
<p>We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.</p>
<p>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.</p>
<p><strong>The last lesson</strong></p>
<p>When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.</p>
<p>Here's the leaderboard of the last lesson (names are hidden):</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"></p>
<p>The leaderboard is in Russian, here are the captions translated:</p>
<ul>
<li>Name</li>
<li>Circle of items</li>
<li>Selection of pairs</li>
<li>Hide all</li>
<li>Hide a pair</li>
</ul>
<p>Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.</p>
<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>

<p><br/></p>
<p><strong>Results and plans</strong></p>
<p>The results surpassed my expectations:</p>
<ul>
<li>three students made it in an hour or faster</li>
<li>two students made it in an hour and a half or faster</li>
</ul>
<p>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.</p>
<p>That's it for sharing Michael's experience of teaching kids to program.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


</article>


<hr class="gradient"/>




<article>
<a href="http://opengamestudio.org/2019-year-of-rethinking.html"><h3 class="article-title">Year of rethinking</h3></a>
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Вт 01 января 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2019-year-of-rethinking.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ideal-gamedev.html"><h3 class="article-title">Ideal games and game development tools</h3></a>
<h6 class="subheader" title="2018-11-19T00:00:00+03:00">Пн 19 ноября 2018
@@ -63,56 +280,14 @@ tool look like, in our opinion.</p>
<li>making video games with those tools</li>
<li>preparing video game development tutorials</li>
</ul>
<p>This time we asked ourselves two simple questions:</p>
<ul>
<li>What is an ideal video game?</li>
<li>What is an ideal video game development tool?</li>
</ul>
<p>The best answers we could think of are below.</p>
<p><strong>Answer 1: A video game is ideal if it delivers maximum pleasure possible</strong></p>
<p>While content is probably the most important aspect to keep a player invested
into the game, the technical side is the transport to deliver that content.
There are quite a few technical problems that may damage otherwise excellent content of a game:</p>
<ul>
<li>insufficient accessibility: the game does not run on your hardware</li>
<li>insufficient optimization: the game is slow</li>
<li>critical bugs: the game crashes from time to time</li>
</ul>
<p>We work hard to make sure the games we create are accessible everywhere.
That's why we released
<a href="http://opengamestudio.org/mahjong-demo2.html">the second demonstration of OGS Mahjong 2</a> only for
the web: because you can run web version virtually anywhere.</p>
<p><strong>Answer 2: A video game development tool is ideal if it lets you create a video game of your dream in the shortest time possible</strong></p>
<p>Even though we put a lot of effort into sharing our knowledge through
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a>, we understand that those take a lot
of time to study. One can't possibly make even a simple video game like
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> without performing the following steps:</p>
<ul>
<li>configure the development environment</li>
<li>write code</li>
<li>build an application</li>
<li>debug the application</li>
<li>repeat <code>write-build-debug</code> steps as many times as necessary</li>
</ul>
<p>Writing code and debugging are probably the ultimate forms of input and output
of any software, so we can't escape those. However, there are ways to
completely remove (or at least significantly decrease) the need for
<code>development environment setup</code> and <code>build</code> steps. And this is what we are
going to do in the coming months.</p>
<p>Our goal for the coming months is to create a video game development tool that
would allow any programmer (or sufficiently skilled person) to create the
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> video game from scratch in an hour.</p>
<p>That's it for discussing how ideal video game and video game development tool
look like, in our opinion.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
<p>This time …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


</article>


<a class="button radius secondary small right" href="http://opengamestudio.org/ideal-gamedev.html">Read More</a>
<hr class="gradient"/>
</article>


@@ -283,50 +458,9 @@ following year.</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a>
<h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a>

</h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward.
For some time we've been tracking the development of the new breed of website engines - static site generators.
It seems that this is the technology capable of …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-the-static.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 1 of 5</h6>
<h6 class="subheader">Page 1 of 6</h6>

<p>



+ 42
- 39
author/opensource-game-studio2.html 查看文件

@@ -49,6 +49,47 @@


<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a>
<h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a>

</h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward.
For some time we've been tracking the development of the new breed of website engines - static site generators.
It seems that this is the technology capable of …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-the-static.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/mjin-world-birth.html"><h3 class="article-title">The birth of MJIN world</h3></a>
<h6 class="subheader" title="2017-09-10T00:00:00+03:00">Вс 10 сентября 2017
@@ -210,47 +251,9 @@ In case you missed it, here's …</p><p class="subheader">Category: <a href="htt
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 2 of 5</h6>
<h6 class="subheader">Page 2 of 6</h6>

<p>
<a href="http://opengamestudio.org/author/opensource-game-studio.html">&laquo; Prev</a>


+ 39
- 37
author/opensource-game-studio3.html 查看文件

@@ -49,6 +49,44 @@


<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-october-recap.html"><h3 class="article-title">October 2016 recap</h3></a>
<h6 class="subheader" title="2016-11-19T00:00:00+03:00">Сб 19 ноября 2016
@@ -210,45 +248,9 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 3 of 5</h6>
<h6 class="subheader">Page 3 of 6</h6>

<p>
<a href="http://opengamestudio.org/author/opensource-game-studio2.html">&laquo; Prev</a>


+ 37
- 40
author/opensource-game-studio4.html 查看文件

@@ -49,6 +49,42 @@


<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ogs-editor-0.9.html"><h3 class="article-title">May 2016 live session materials</h3></a>
<h6 class="subheader" title="2016-05-29T00:00:00+03:00">Вс 29 мая 2016
@@ -197,48 +233,9 @@ The exact date and time is …</p><p class="subheader">Category: <a href="http:/
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 4 of 5</h6>
<h6 class="subheader">Page 4 of 6</h6>

<p>
<a href="http://opengamestudio.org/author/opensource-game-studio3.html">&laquo; Prev</a>


+ 41
- 40
author/opensource-game-studio5.html 查看文件

@@ -49,6 +49,45 @@


<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/soon-game-creation-editor-07.html"><h3 class="article-title">SOON: Creating a simple game live (Editor 0.7)</h3></a>
<h6 class="subheader" title="2015-11-02T00:00:00+03:00">Пн 02 ноября 2015
@@ -206,52 +245,14 @@ technical difficulties).</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 5 of 5</h6>
<h6 class="subheader">Page 5 of 6</h6>

<p>
<a href="http://opengamestudio.org/author/opensource-game-studio4.html">&laquo; Prev</a>

<a href="http://opengamestudio.org/author/opensource-game-studio6.html">Next &raquo;</a>
</p>
</div>



+ 161
- 0
author/opensource-game-studio6.html 查看文件

@@ -0,0 +1,161 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />

<title>Opensource Game Studio - Opensource Game Studio</title>

<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" />
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script>

<!-- So Firefox can bookmark->"abo this site" -->
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml">

</head>

<body>

<!-- Nav Bar -->
<nav>

<!-- Show menu items and pages -->
<div class="row">
<div class="large-12 columns top-bar">
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1>
</div>
</div>
<div class="row top-menu">
<div class="large-12 columns">
<a href="/pages/games.html" class="menu-button secondary">Games</a>
<a href="/pages/education.html" class="menu-button secondary">Education</a>
<a href="/pages/about.html" class="menu-button secondary">About</a>

</div>
</div>
</nav>
<!-- End Nav -->


<!-- Main Page Content and Sidebar -->
<div class="row">

<!-- Main Blog Content -->
<div class="large-9 columns">


<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 6 of 6</h6>

<p>
<a href="http://opengamestudio.org/author/opensource-game-studio5.html">&laquo; Prev</a>

</p>
</div>

</div>
<!-- End Main Content -->

<!-- Sidebar -->
<aside class="large-3 columns">
<!--k
<h5 class="sidebar-title">Site</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/archives.html">Archives</a>
<li><a href="http://opengamestudio.org/tags.html">Tags</a>


<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li>
</ul>

<h5 class="sidebar-title">Categories</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/category/news.html">News</a></li>
</ul>
-->


<h5 class="sidebar-title">Ads</h5>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- ogs2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-4473792248813084"
data-ad-slot="9024247127"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

</aside> <!-- End Sidebar -->

</div> <!-- End Main Content and Sidebar -->


<!-- Footer -->
<footer class="row">
<div class="large-12 columns">
<hr />
<div class="row">
<div class="large-7 columns">
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3773114-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</footer>

+ 221
- 87
category/news.html 查看文件

@@ -48,6 +48,223 @@

<article>
<a href="http://opengamestudio.org/teaching-kids-to-program.html"><h3 class="article-title">Teaching kids to program</h3></a>
<h6 class="subheader" title="2019-02-04T00:00:00+03:00">Пн 04 февраля 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/teaching-kids-to-program-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"></p>
<p>In this article, Michael shares his experience of teaching kids to program.</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>
</ul>
<p><strong>Organization of the learning process</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Learning plan</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Memory game</strong></p>
<p>Let's see what the memory game is.</p>
<p><strong>1)</strong> In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"></p>
<p>As you can see, we only have two cards with a cat, only two cards with a dog, etc..</p>
<p><strong>2)</strong> At the start we shuffle the cards and place them with their faces down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>3)</strong> The first game player turns a pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"></p>
<p><strong>4)</strong> If the cards differ they are once again turned face down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>5)</strong> The next player turns another pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"></p>
<p><strong>6)</strong> If the cards are the same, they are removed from the field.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"></p>
<p>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.</p>
<p>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:</p>
<ul>
<li>creation of items</li>
<li>arrangement of items</li>
<li>selection of items</li>
<li>comparison of items</li>
<li>removal of matching items</li>
</ul>
<p><strong>Development tools</strong></p>
<p>We used Scratch as our development tool. <a href="https://scratch.mit.edu/">Scratch</a> is a great tool to teach kids to program because each action, each operation is represented graphically.</p>
<p>For example, you can rotate a cat 360 degrees in 1 second using the following script:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"></p>
<p>Here's how it looks like in action:</p>
<p><img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"></p>
<p>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:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"></p>
<p>Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.</p>
<p>Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.</p>
<p><strong>The first lesson</strong></p>
<p>The first lesson was introductory, we didn't use PCs.</p>
<p>The plan was to:</p>
<ol>
<li>Meet</li>
<li>Play the memory game with cards</li>
<li>Learn the concept of algorithm</li>
<li>Detail the game's algorithm</li>
<li>Analyze the lesson</li>
</ol>
<p><strong>1)</strong> Meeting</p>
<p>Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "My name is John, I am going to study Scratch because my father forces me to"</li>
<li>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"</li>
<li>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"</li>
</ol>
<p>Such a format of meeting has the following objectives:</p>
<ul>
<li>Getting to know each other<ul>
<li>Each team member should know other team members by name</li>
</ul>
</li>
<li>Common space<ul>
<li>Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games</li>
</ul>
</li>
<li>Equality<ul>
<li>Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy</li>
</ul>
</li>
<li>Attention<ul>
<li>Each team member should listen carefully to be able to correctly repeat what others said</li>
</ul>
</li>
<li>Feedback<ul>
<li>Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them</li>
</ul>
</li>
<li>Fun<ul>
<li>Memorization problems produce lots of laughter</li>
</ul>
</li>
</ul>
<p><strong>2)</strong> Memory game with cards</p>
<ol>
<li>Take 8 pairs of the same cards from two decks of cards</li>
<li>Place the cards in 4 x 4 grid, faces down</li>
<li>Students stand up around single table</li>
<li>Each student, one by one, turns a pair of cards<ul>
<li>If cards match, they are taken off the field</li>
<li>If cards differ, they are once again turned face down</li>
</ul>
</li>
</ol>
<p>Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.</p>
<p>After a couple of parties it's time to find out what algorithm is.</p>
<p><strong>3)</strong> The concept of algorithm</p>
<ol>
<li>Ask students first, hear them out to find out their level</li>
<li>Correct what students say if they were close to an expected answer</li>
<li>Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one</li>
</ol>
<p>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.</p>
<p><strong>4)</strong> The algorithm of the game</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "Place 16 cards faces down"</li>
<li>Alex: "Turn a pair of cards"</li>
<li>Paul: "If the cards differ, turn them faces down again"</li>
<li>Dan: "Turn another pair of cards"</li>
<li>Mike: "If the cards match, take them off the field"</li>
</ol>
<p><strong>5)</strong> Analyze the lesson</p>
<p>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.</p>
<p>We had the following decisions:</p>
<ol>
<li>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.</li>
<li>Only accept accurate answers from students because active students like to wriggle, which hampers discipline.</li>
</ol>
<p><strong>The second and the third lessons</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>We saw two ways to approach the problem:</p>
<ol>
<li>Keep on studying the coordinate system risking not to get the game done by the end of the course</li>
<li>Change the game requirements so that coordinate system is not necessary</li>
</ol>
<p>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.</p>
<p>This solution sparkled a few thoughts in my head:</p>
<ol>
<li>One can often find a simpler path to solve an issue</li>
<li>This path is simpler to understand, albeit less flexible</li>
<li>One can go the harder path to increase flexibility much later when it becomes absolutely necessary</li>
<li>Simplification moves one closer to the goal, complexification moves one in the opposite direction</li>
</ol>
<p><strong>The fourth and the rest of the lessons</strong></p>
<p>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.</p>
<p>We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.</p>
<p>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.</p>
<p><strong>The last lesson</strong></p>
<p>When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.</p>
<p>Here's the leaderboard of the last lesson (names are hidden):</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"></p>
<p>The leaderboard is in Russian, here are the captions translated:</p>
<ul>
<li>Name</li>
<li>Circle of items</li>
<li>Selection of pairs</li>
<li>Hide all</li>
<li>Hide a pair</li>
</ul>
<p>Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.</p>
<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>

<p><br/></p>
<p><strong>Results and plans</strong></p>
<p>The results surpassed my expectations:</p>
<ul>
<li>three students made it in an hour or faster</li>
<li>two students made it in an hour and a half or faster</li>
</ul>
<p>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.</p>
<p>That's it for sharing Michael's experience of teaching kids to program.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


</article>


<hr class="gradient"/>




<article>
<a href="http://opengamestudio.org/2019-year-of-rethinking.html"><h3 class="article-title">Year of rethinking</h3></a>
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Вт 01 января 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2019-year-of-rethinking.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ideal-gamedev.html"><h3 class="article-title">Ideal games and game development tools</h3></a>
<h6 class="subheader" title="2018-11-19T00:00:00+03:00">Пн 19 ноября 2018
@@ -63,56 +280,14 @@ tool look like, in our opinion.</p>
<li>making video games with those tools</li>
<li>preparing video game development tutorials</li>
</ul>
<p>This time we asked ourselves two simple questions:</p>
<ul>
<li>What is an ideal video game?</li>
<li>What is an ideal video game development tool?</li>
</ul>
<p>The best answers we could think of are below.</p>
<p><strong>Answer 1: A video game is ideal if it delivers maximum pleasure possible</strong></p>
<p>While content is probably the most important aspect to keep a player invested
into the game, the technical side is the transport to deliver that content.
There are quite a few technical problems that may damage otherwise excellent content of a game:</p>
<ul>
<li>insufficient accessibility: the game does not run on your hardware</li>
<li>insufficient optimization: the game is slow</li>
<li>critical bugs: the game crashes from time to time</li>
</ul>
<p>We work hard to make sure the games we create are accessible everywhere.
That's why we released
<a href="http://opengamestudio.org/mahjong-demo2.html">the second demonstration of OGS Mahjong 2</a> only for
the web: because you can run web version virtually anywhere.</p>
<p><strong>Answer 2: A video game development tool is ideal if it lets you create a video game of your dream in the shortest time possible</strong></p>
<p>Even though we put a lot of effort into sharing our knowledge through
<a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">guides</a> and <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">tutorials</a>, we understand that those take a lot
of time to study. One can't possibly make even a simple video game like
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> without performing the following steps:</p>
<ul>
<li>configure the development environment</li>
<li>write code</li>
<li>build an application</li>
<li>debug the application</li>
<li>repeat <code>write-build-debug</code> steps as many times as necessary</li>
</ul>
<p>Writing code and debugging are probably the ultimate forms of input and output
of any software, so we can't escape those. However, there are ways to
completely remove (or at least significantly decrease) the need for
<code>development environment setup</code> and <code>build</code> steps. And this is what we are
going to do in the coming months.</p>
<p>Our goal for the coming months is to create a video game development tool that
would allow any programmer (or sufficiently skilled person) to create the
<a href="https://en.wikipedia.org/wiki/Concentration_(game)">Memory</a> video game from scratch in an hour.</p>
<p>That's it for discussing how ideal video game and video game development tool
look like, in our opinion.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
<p>This time …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


</article>


<a class="button radius secondary small right" href="http://opengamestudio.org/ideal-gamedev.html">Read More</a>
<hr class="gradient"/>
</article>


@@ -283,50 +458,9 @@ following year.</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a>
<h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a>

</h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward.
For some time we've been tracking the development of the new breed of website engines - static site generators.
It seems that this is the technology capable of …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-the-static.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 1 of 5</h6>
<h6 class="subheader">Page 1 of 6</h6>

<p>



+ 42
- 39
category/news2.html 查看文件

@@ -49,6 +49,47 @@


<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a>
<h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a>

</h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward.
For some time we've been tracking the development of the new breed of website engines - static site generators.
It seems that this is the technology capable of …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-the-static.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/mjin-world-birth.html"><h3 class="article-title">The birth of MJIN world</h3></a>
<h6 class="subheader" title="2017-09-10T00:00:00+03:00">Вс 10 сентября 2017
@@ -210,47 +251,9 @@ In case you missed it, here's …</p><p class="subheader">Category: <a href="htt
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 2 of 5</h6>
<h6 class="subheader">Page 2 of 6</h6>

<p>
<a href="http://opengamestudio.org/category/news.html">&laquo; Prev</a>


+ 39
- 37
category/news3.html 查看文件

@@ -49,6 +49,44 @@


<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-october-recap.html"><h3 class="article-title">October 2016 recap</h3></a>
<h6 class="subheader" title="2016-11-19T00:00:00+03:00">Сб 19 ноября 2016
@@ -210,45 +248,9 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 3 of 5</h6>
<h6 class="subheader">Page 3 of 6</h6>

<p>
<a href="http://opengamestudio.org/category/news2.html">&laquo; Prev</a>


+ 37
- 40
category/news4.html 查看文件

@@ -49,6 +49,42 @@


<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ogs-editor-0.9.html"><h3 class="article-title">May 2016 live session materials</h3></a>
<h6 class="subheader" title="2016-05-29T00:00:00+03:00">Вс 29 мая 2016
@@ -197,48 +233,9 @@ The exact date and time is …</p><p class="subheader">Category: <a href="http:/
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 4 of 5</h6>
<h6 class="subheader">Page 4 of 6</h6>

<p>
<a href="http://opengamestudio.org/category/news3.html">&laquo; Prev</a>


+ 41
- 40
category/news5.html 查看文件

@@ -49,6 +49,45 @@


<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/soon-game-creation-editor-07.html"><h3 class="article-title">SOON: Creating a simple game live (Editor 0.7)</h3></a>
<h6 class="subheader" title="2015-11-02T00:00:00+03:00">Пн 02 ноября 2015
@@ -206,52 +245,14 @@ technical difficulties).</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 5 of 5</h6>
<h6 class="subheader">Page 5 of 6</h6>

<p>
<a href="http://opengamestudio.org/category/news4.html">&laquo; Prev</a>

<a href="http://opengamestudio.org/category/news6.html">Next &raquo;</a>
</p>
</div>



+ 161
- 0
category/news6.html 查看文件

@@ -0,0 +1,161 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />

<title>Opensource Game Studio - News</title>

<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" />
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script>

<!-- So Firefox can bookmark->"abo this site" -->
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml">

</head>

<body>

<!-- Nav Bar -->
<nav>

<!-- Show menu items and pages -->
<div class="row">
<div class="large-12 columns top-bar">
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1>
</div>
</div>
<div class="row top-menu">
<div class="large-12 columns">
<a href="/pages/games.html" class="menu-button secondary">Games</a>
<a href="/pages/education.html" class="menu-button secondary">Education</a>
<a href="/pages/about.html" class="menu-button secondary">About</a>

</div>
</div>
</nav>
<!-- End Nav -->


<!-- Main Page Content and Sidebar -->
<div class="row">

<!-- Main Blog Content -->
<div class="large-9 columns">


<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 6 of 6</h6>

<p>
<a href="http://opengamestudio.org/category/news5.html">&laquo; Prev</a>

</p>
</div>

</div>
<!-- End Main Content -->

<!-- Sidebar -->
<aside class="large-3 columns">
<!--k
<h5 class="sidebar-title">Site</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/archives.html">Archives</a>
<li><a href="http://opengamestudio.org/tags.html">Tags</a>


<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li>
</ul>

<h5 class="sidebar-title">Categories</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/category/news.html">News</a></li>
</ul>
-->


<h5 class="sidebar-title">Ads</h5>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- ogs2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-4473792248813084"
data-ad-slot="9024247127"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

</aside> <!-- End Sidebar -->

</div> <!-- End Main Content and Sidebar -->


<!-- Footer -->
<footer class="row">
<div class="large-12 columns">
<hr />
<div class="row">
<div class="large-7 columns">
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3773114-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</footer>

+ 392
- 1
feeds/all.atom.xml 查看文件

@@ -1,5 +1,396 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/all.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-11-19T00:00:00+03:00</updated><entry><title>Ideal games and game development tools</title><link href="http://opengamestudio.org/ideal-gamedev.html" rel="alternate"></link><published>2018-11-19T00:00:00+03:00</published><updated>2018-11-19T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-11-19:/ideal-gamedev.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"&gt;&lt;/p&gt;
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/all.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2019-02-04T00:00:00+03:00</updated><entry><title>Teaching kids to program</title><link href="http://opengamestudio.org/teaching-kids-to-program.html" rel="alternate"></link><published>2019-02-04T00:00:00+03:00</published><updated>2019-02-04T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-02-04:/teaching-kids-to-program.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, Michael shares his experience of teaching kids to program.&lt;/p&gt;
&lt;p&gt;Here's what he covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;organization of the learning process&lt;/li&gt;
&lt;li&gt;learning plan&lt;/li&gt;
&lt;li&gt;memory game&lt;/li&gt;
&lt;li&gt;development tools&lt;/li&gt;
&lt;li&gt;lessons&lt;/li&gt;
&lt;li&gt;results and plans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Organization of the learning process&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The learning process is conducted as part of corporate social responsibility: a company provides …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, Michael shares his experience of teaching kids to program.&lt;/p&gt;
&lt;p&gt;Here's what he covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;organization of the learning process&lt;/li&gt;
&lt;li&gt;learning plan&lt;/li&gt;
&lt;li&gt;memory game&lt;/li&gt;
&lt;li&gt;development tools&lt;/li&gt;
&lt;li&gt;lessons&lt;/li&gt;
&lt;li&gt;results and plans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Organization of the learning process&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learning plan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Memory game&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let's see what the memory game is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"&gt;&lt;/p&gt;
&lt;p&gt;As you can see, we only have two cards with a cat, only two cards with a dog, etc..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; At the start we shuffle the cards and place them with their faces down.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; The first game player turns a pair of cards.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; If the cards differ they are once again turned face down.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; The next player turns another pair of cards.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6)&lt;/strong&gt; If the cards are the same, they are removed from the field.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;creation of items&lt;/li&gt;
&lt;li&gt;arrangement of items&lt;/li&gt;
&lt;li&gt;selection of items&lt;/li&gt;
&lt;li&gt;comparison of items&lt;/li&gt;
&lt;li&gt;removal of matching items&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Development tools&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We used Scratch as our development tool. &lt;a href="https://scratch.mit.edu/"&gt;Scratch&lt;/a&gt; is a great tool to teach kids to program because each action, each operation is represented graphically.&lt;/p&gt;
&lt;p&gt;For example, you can rotate a cat 360 degrees in 1 second using the following script:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"&gt;&lt;/p&gt;
&lt;p&gt;Here's how it looks like in action:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"&gt;&lt;/p&gt;
&lt;p&gt;Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.&lt;/p&gt;
&lt;p&gt;Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The first lesson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first lesson was introductory, we didn't use PCs.&lt;/p&gt;
&lt;p&gt;The plan was to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Meet&lt;/li&gt;
&lt;li&gt;Play the memory game with cards&lt;/li&gt;
&lt;li&gt;Learn the concept of algorithm&lt;/li&gt;
&lt;li&gt;Detail the game's algorithm&lt;/li&gt;
&lt;li&gt;Analyze the lesson&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Meeting&lt;/p&gt;
&lt;p&gt;Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here's how it looks like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;John: "My name is John, I am going to study Scratch because my father forces me to"&lt;/li&gt;
&lt;li&gt;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"&lt;/li&gt;
&lt;li&gt;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"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Such a format of meeting has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting to know each other&lt;ul&gt;
&lt;li&gt;Each team member should know other team members by name&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Common space&lt;ul&gt;
&lt;li&gt;Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Equality&lt;ul&gt;
&lt;li&gt;Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Attention&lt;ul&gt;
&lt;li&gt;Each team member should listen carefully to be able to correctly repeat what others said&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Feedback&lt;ul&gt;
&lt;li&gt;Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fun&lt;ul&gt;
&lt;li&gt;Memorization problems produce lots of laughter&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Memory game with cards&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Take 8 pairs of the same cards from two decks of cards&lt;/li&gt;
&lt;li&gt;Place the cards in 4 x 4 grid, faces down&lt;/li&gt;
&lt;li&gt;Students stand up around single table&lt;/li&gt;
&lt;li&gt;Each student, one by one, turns a pair of cards&lt;ul&gt;
&lt;li&gt;If cards match, they are taken off the field&lt;/li&gt;
&lt;li&gt;If cards differ, they are once again turned face down&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.&lt;/p&gt;
&lt;p&gt;After a couple of parties it's time to find out what algorithm is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; The concept of algorithm&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask students first, hear them out to find out their level&lt;/li&gt;
&lt;li&gt;Correct what students say if they were close to an expected answer&lt;/li&gt;
&lt;li&gt;Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; The algorithm of the game&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here's how it looks like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;John: "Place 16 cards faces down"&lt;/li&gt;
&lt;li&gt;Alex: "Turn a pair of cards"&lt;/li&gt;
&lt;li&gt;Paul: "If the cards differ, turn them faces down again"&lt;/li&gt;
&lt;li&gt;Dan: "Turn another pair of cards"&lt;/li&gt;
&lt;li&gt;Mike: "If the cards match, take them off the field"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Analyze the lesson&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We had the following decisions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Only accept accurate answers from students because active students like to wriggle, which hampers discipline.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The second and the third lessons&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We saw two ways to approach the problem:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Keep on studying the coordinate system risking not to get the game done by the end of the course&lt;/li&gt;
&lt;li&gt;Change the game requirements so that coordinate system is not necessary&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;This solution sparkled a few thoughts in my head:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;One can often find a simpler path to solve an issue&lt;/li&gt;
&lt;li&gt;This path is simpler to understand, albeit less flexible&lt;/li&gt;
&lt;li&gt;One can go the harder path to increase flexibility much later when it becomes absolutely necessary&lt;/li&gt;
&lt;li&gt;Simplification moves one closer to the goal, complexification moves one in the opposite direction&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The fourth and the rest of the lessons&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The last lesson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.&lt;/p&gt;
&lt;p&gt;Here's the leaderboard of the last lesson (names are hidden):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"&gt;&lt;/p&gt;
&lt;p&gt;The leaderboard is in Russian, here are the captions translated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Circle of items&lt;/li&gt;
&lt;li&gt;Selection of pairs&lt;/li&gt;
&lt;li&gt;Hide all&lt;/li&gt;
&lt;li&gt;Hide a pair&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/WlA193S3SPY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Results and plans&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The results surpassed my expectations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;three students made it in an hour or faster&lt;/li&gt;
&lt;li&gt;two students made it in an hour and a half or faster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;That's it for sharing Michael's experience of teaching kids to program.&lt;/p&gt;</content></entry><entry><title>Обучение детей программированию</title><link href="http://opengamestudio.org/teaching-kids-to-program-ru.html" rel="alternate"></link><published>2019-02-04T00:00:00+03:00</published><updated>2019-02-04T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-02-04:/teaching-kids-to-program-ru.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;В этой статье Михаил делится своим опытом обучения детей программированию.&lt;/p&gt;
&lt;p&gt;Он расскажет о следующем:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;организация процесса обучения&lt;/li&gt;
&lt;li&gt;программа обучения&lt;/li&gt;
&lt;li&gt;игра на память&lt;/li&gt;
&lt;li&gt;инструмент программирования&lt;/li&gt;
&lt;li&gt;уроки&lt;/li&gt;
&lt;li&gt;результаты и планы&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Организация процесса обучения&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Обучение проходит в рамках социальной ответственности бизнеса: компания предоставляет помещение с оборудованием, а также объединяет сотрудников, желающих попробовать себя …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;В этой статье Михаил делится своим опытом обучения детей программированию.&lt;/p&gt;
&lt;p&gt;Он расскажет о следующем:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;организация процесса обучения&lt;/li&gt;
&lt;li&gt;программа обучения&lt;/li&gt;
&lt;li&gt;игра на память&lt;/li&gt;
&lt;li&gt;инструмент программирования&lt;/li&gt;
&lt;li&gt;уроки&lt;/li&gt;
&lt;li&gt;результаты и планы&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Организация процесса обучения&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Обучение проходит в рамках социальной ответственности бизнеса: компания предоставляет помещение с оборудованием, а также объединяет сотрудников, желающих попробовать себя в роли преподавателей, с сотрудниками, желающими обучить своих детей. Всё это исключительно на добровольной основе.&lt;/p&gt;
&lt;p&gt;Потенциальных преподавателей разбивают по группам таким образом, чтобы группа из трёх преподавателей состояла из одного опытного и двух новичков. Одна группа преподавателей ведёт одну группу учеников. Учеников разбивают по возрасту и навыкам.&lt;/p&gt;
&lt;p&gt;В 2018-м я второй раз участвовал в программе обучения детей в возрасте примерно десяти лет. Наша группа работала с октября по декабрь 2018-го по субботам с 10:00 до 12:00. Пользуясь служебным положением, я также затащил на курсы и свою жену.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Программа обучения&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Когда я участвовал первый раз, наша группа обучала детей программированию довольно бесцельно: мы придумывали простейшие задания на урок для объяснения операторов. В результате в конце обучения у нас не было ничего конкретного, что можно было бы оценить, чем похвастаться и что проанализировать.&lt;/p&gt;
&lt;p&gt;В этот второй раз я решил, что мы с детьми реализуем так называемую игру на память. Критерием успешности обучения я определил следующее условие: каждый ученик к концу курса самостоятельно создаёт простейшую игру на память с нуля за 1 час.&lt;/p&gt;
&lt;p&gt;Для достижения этого критерия я решил проверить утверждение "Повторение - мать учения", поэтому каждый урок мы создавали всё с нуля. Подчеркну, что мы ничего не сохраняли в учётной записи учеников. Задача была в сохранении навыка создания игры в голове, не в компьютере.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Игра на память&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Давайте рассмотрим, что представляет собой игра на память.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; В простейшем случае у нас есть 16 карт, причём уникальных лишь 8, остальные 8 являются их парами.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"&gt;&lt;/p&gt;
&lt;p&gt;В представленном изображении у нас есть лишь две карты с котом, собакой и т.д..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; В начале игры мы перемешиваем карты и раскладываем их &lt;strong&gt;рубашкой&lt;/strong&gt; вверх.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; Первый из участников игры открывает две карты.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; Если карты различаются, возвращаем их в исходное положение: кладём &lt;strong&gt;рубашкой&lt;/strong&gt; вверх.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Следующий участник игры открывает другую пару карт.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6)&lt;/strong&gt; Если карты совпадают, убираем их с игрового поля.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;Цель игры в том, чтобы убрать все карты с поля. Игра в данном виде не включает соревнование, поэтому играть можно одному человеку.&lt;/p&gt;
&lt;p&gt;С одной стороны, игра на память довольно проста, с другой стороны, реализация игры затрагивает основную функциональность, необходимую для создания любой более-менее сложной игры:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;создание элементов&lt;/li&gt;
&lt;li&gt;их расстановка на поле&lt;/li&gt;
&lt;li&gt;выбор элементов&lt;/li&gt;
&lt;li&gt;сравнение выбранных элементов&lt;/li&gt;
&lt;li&gt;скрытие совпадающих элементов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Инструмент программирования&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;В качестве инструмента мы использовали среду &lt;a href="https://scratch.mit.edu/"&gt;Scratch&lt;/a&gt;. Она рассчитана на обучение детей программированию, поэтому каждое действие, каждый оператор в ней представлен графически.&lt;/p&gt;
&lt;p&gt;Например, следующим скриптом можно повернуть кота на 360 градусов за секунду:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script-ru.png"&gt;&lt;/p&gt;
&lt;p&gt;Вот так выглядит результат:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"&gt;&lt;/p&gt;
&lt;p&gt;Замечу, что это довольно успешное решение для представления кода графически. Например, платное решение, продвигаемое нынче компанией SAP, предполагает использование так называемых кубиков для программирования:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"&gt;&lt;/p&gt;
&lt;p&gt;Тут можно лишь ввести в нужные поля нужные значения. Если потребуется что-то нестандартное, то поможет лишь скрипт, который представлен опять же кубиком.&lt;/p&gt;
&lt;p&gt;По личному опыту скажу, что решение Scratch не тормозит от слова совсем, чего не скажешь о решении SAP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Первый урок&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Первый урок являлся вводным, поэтому компьютеры мы не использовали.&lt;/p&gt;
&lt;p&gt;План был следующим:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Познакомиться&lt;/li&gt;
&lt;li&gt;Сыграть в игру на память&lt;/li&gt;
&lt;li&gt;Изучить понятие алгоритма&lt;/li&gt;
&lt;li&gt;Написать алгоритм игры&lt;/li&gt;
&lt;li&gt;Проанализировать урок&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Знакомство&lt;/p&gt;
&lt;p&gt;Преподаватели с учениками встают в круг. Это уравнивает всех и делает каждого участником команды.&lt;/p&gt;
&lt;p&gt;Первый участник называет своё имя и рассказывает о том, почему он решил посетить этот курс. Второй и последующие участники сначала повторяют имя и рассказ каждого предыдущего участника, после чего называют своё имя и рассказывают.&lt;/p&gt;
&lt;p&gt;Примерно так это выглядит:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Вася: "Меня зовут Вася, я хочу изучить Scratch, потому что меня заставил папа"&lt;/li&gt;
&lt;li&gt;Дима: "Это Вася, заниматься Scratch'ем его заставляет папа. Меня зовут Дима, и это мой четвёртый год Scratch'а"&lt;/li&gt;
&lt;li&gt;Оля: "Это Вася, его заставляют родители. Это Дима, он практически ветеран Scratch'а. Меня зовут Оля, я первый год преподаю, буду учиться вместе со всеми"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Данный формат знакомства преследует следующие цели:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Знакомство&lt;ul&gt;
&lt;li&gt;Каждый участник команды должен знать по имени остальных участников команды&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Общее пространство&lt;ul&gt;
&lt;li&gt;Все участники в круге, а не за рабочими местами, что уменьшает отвлечение на игры в компьютере&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Равенство&lt;ul&gt;
&lt;li&gt;И преподаватели, и ученики в одном круге, что уравновешивает всех в качестве участников команды без иерархии&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Внимание&lt;ul&gt;
&lt;li&gt;Каждый участник команды должен внимательно слушать остальных участников, чтобы правильно повторить сказанное ими&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Обратная связь&lt;ul&gt;
&lt;li&gt;Каждый участник команды должен максимально чётко излагать свою мысль, иначе остальные просто не смогут её повторить&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Веселье&lt;ul&gt;
&lt;li&gt;Проблемы с запоминанием имён всех веселят&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Игра на память в карты&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Берём две колоды карт и выбираем из них по 8 одинаковых&lt;/li&gt;
&lt;li&gt;Раскладываем карты в сетку 4 x 4 рубашкой вверх на столе&lt;/li&gt;
&lt;li&gt;Ученики встают вокруг стола&lt;/li&gt;
&lt;li&gt;Каждый ученик по очереди переворачивает пару карт&lt;ul&gt;
&lt;li&gt;Если карты совпали, то убираем их с поля&lt;/li&gt;
&lt;li&gt;Если карты различаются, то переворачиваем их рубашкой вверх&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ученикам очень нравится играть в настольные игры. В ходе игры преподаватели проговаривают то, что происходит.&lt;/p&gt;
&lt;p&gt;После пары партий переходим к изучению понятия алгоритма.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; Понятие алгоритма&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Спрашиваем сначала учеников, даём возможность высказаться, узнаём уровень каждого ученика&lt;/li&gt;
&lt;li&gt;При необходимости поправляем высказывания, если они близки к ожидаемому ответу&lt;/li&gt;
&lt;li&gt;Предлагаем написать алгоритм перевода человека из состояния "стоит за дверью кабинета" в состояние "работает за компьютером в кабинете"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ученикам очень нравится подходить к доске и писать на ней, поэтому по очереди вызываем каждого ученика, чтобы он писал по одному пункту алгоритма. Самого активного ученика используем в качестве исполнителя алгоритма.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; Алгоритм игры&lt;/p&gt;
&lt;p&gt;Предлагаем написать алгоритм игры, опять вызываем каждого добавлять по одному пункту на доске. После завершения описания алгоритма ещё раз играем с картами, но на этот раз каждый ученик должен проговаривать шаг алгоритма.&lt;/p&gt;
&lt;p&gt;Выглядит это примерно так:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Вася: "Раскладываем 16 карт рубашкой вверх"&lt;/li&gt;
&lt;li&gt;Дима: "Переворачиваем пару карт"&lt;/li&gt;
&lt;li&gt;Паша: "Если две карты различаются, переворачиваем их рубашкой вверх"&lt;/li&gt;
&lt;li&gt;Филипп: "Переворачиваем пару карт"&lt;/li&gt;
&lt;li&gt;Миша: "Если две карты совпадают, убираем их с поля"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Анализ урока&lt;/p&gt;
&lt;p&gt;На этом первый урок заканчивается, и у преподавателей появляется возможность обсудить как свои впечатления об уроке, так и об учениках, выработать подходы к тихоням и активистам, договориться о дальнейших планах на следующие уроки.&lt;/p&gt;
&lt;p&gt;У нас были следующие решения:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Рассаживать тихонь и активистов через одного, чтобы соблюсти баланс шума и тишины. Иначе группа активистов создаёт очаг бури, а группа тихонь - очаг пустыни, что замедляет процесс обучения.&lt;/li&gt;
&lt;li&gt;Требовать от учеников точности, т.к. активисты любят кривляться, что плохо влияет на дисциплину.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Второй и третий уроки&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Последующие уроки мы опять же начинали с разминки: вставали в круг, называли имя и рассказывали, кто что сделал. А если не сделал, то почему. Как и прежде, каждый участник сначала повторял сказанное предыдущими и лишь затем говорил о себе.&lt;/p&gt;
&lt;p&gt;На втором уроке мы создавали требования для элемента игрового поля и пытались создать этот элемент в Scratch. Это вполне удалось.&lt;/p&gt;
&lt;p&gt;На третьем уроке мы пытались создать 16 элементов и расположить их в сетке 4x4. Тут мы застопорились, т.к. ученики не смогли понять систему координат, чтобы расположить 16 элементов в сетке. Стало очевидно, что планы уроков являются лишь планами, а действительность вносит свои изменения.&lt;/p&gt;
&lt;p&gt;У нас было два пути решения проблемы с системой координат:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Продолжать обучать системе координат с риском не успеть создать игру до конца курса&lt;/li&gt;
&lt;li&gt;Изменить требования к игре таким образом, чтобы система координат была не нужна&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Мы решили пойти вторым путём, т.к. мы всё-таки не школа и цель у нас была научить создавать игру, т.е. применять знания на практике, а не в теории. Поэтому сетку элементов 4x4 мы решили заменить кругом из 16 элементов.&lt;/p&gt;
&lt;p&gt;Данное решение привело меня к следующим выводам:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Для решения задачи часто можно найти более простой путь&lt;/li&gt;
&lt;li&gt;Этот путь легче для понимания, хоть и менее гибкий&lt;/li&gt;
&lt;li&gt;Перейти на сложный путь для увеличения гибкости можно позже, когда это будет действительно необходимо&lt;/li&gt;
&lt;li&gt;Упрощение приближает к конечной цели, усложнение отдаляет от неё&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Четвёртый и последующие уроки&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;С четвёртого урока мы отменили стадию написания требований, т.к. она начала занимать бОльшую часть урока: мы снова сделали уклон на практику, а не теорию, чтобы уложиться в сроки. На этот раз все требования были написаны заранее и выданы "сверху". Но всё равно их никто не читал.&lt;/p&gt;
&lt;p&gt;Четвёртый и пятый уроки мы потратили на создание 16 элементов в виде круга, выделение пары элементов и проверку на их совпадение.&lt;/p&gt;
&lt;p&gt;С шестого урока и до девятого включительно мы каждый раз воссоздавали игру с нуля. С каждым разом это происходило всё быстрее и быстрее, поэтому с восьмого урока мы ввели турнирную таблицу, где записывали этапы создания игры и время каждого ученика.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Последний урок&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;К последнему уроку все справлялись с созданием игры с нуля более-менее самостоятельно за час-два.&lt;/p&gt;
&lt;p&gt;Такова турнирная таблица последнего урока (имена скрыты):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"&gt;&lt;/p&gt;
&lt;p&gt;А ниже можно посмотреть на создание игры на память в Scratch ученика, который создал игру быстрее всех: за 30 минут.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/WlA193S3SPY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Результаты и планы&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Результат обучения превзошёл мои ожидания:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;трое учеников успели примерно за час или быстрее&lt;/li&gt;
&lt;li&gt;двое примерно за полтора часа или быстрее&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В этом году я планирую провести обучение не с помощью Scratch, а с использованием инструментария Opensource Game Studio: ученики будут работать с Lua, Git и GitHub Pages.&lt;/p&gt;
&lt;p&gt;На этом мы заканчиваем статью об опыте Михаила по обучению детей программированию.&lt;/p&gt;</content></entry><entry><title>Year of rethinking</title><link href="http://opengamestudio.org/2019-year-of-rethinking.html" rel="alternate"></link><published>2019-01-01T00:01:00+03:00</published><updated>2019-01-01T00:01:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-01-01:/2019-year-of-rethinking.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;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 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Happy New Year to all of you! See you soon!&lt;/p&gt;</content></entry><entry><title>Год переосмысления</title><link href="http://opengamestudio.org/2019-year-of-rethinking-ru.html" rel="alternate"></link><published>2019-01-01T00:01:00+03:00</published><updated>2019-01-01T00:01:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-01-01:/2019-year-of-rethinking-ru.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Этот год во-многом стал для нас годом переосмысления и определенности. Как некоторые из вас помнят, мы начинали этот проект, для создания среды для разработки игр. В течение многих лет идея развивалась от одной формы к другой, иногда изменения были значительными, в других случаях мы отбрасывали весь код и начинали заново …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Этот год во-многом стал для нас годом переосмысления и определенности. Как некоторые из вас помнят, мы начинали этот проект, для создания среды для разработки игр. В течение многих лет идея развивалась от одной формы к другой, иногда изменения были значительными, в других случаях мы отбрасывали весь код и начинали заново.&lt;/p&gt;
&lt;p&gt;В результате всех этих изменений мы подошли к концу 2018 года без готового инструмента, но с четким пониманием того, что за инструмент мы создаем.&lt;/p&gt;
&lt;p&gt;Существует множество прекрасных средств для разработки игр. Некоторые из них даже с открытым исходным кодом. Мы потратили много времени, пробуя разные, и некоторые из них действительно заслуживают внимания.&lt;/p&gt;
&lt;p&gt;Мы не можем, и мы не хотим конкурировать с ними. Наши цели - максимальная доступность и простота. Наша основная цель - создать инструмент, подходящий для обучения детей, но достаточно мощный, чтобы его можно было использовать для создания прототипов.&lt;/p&gt;
&lt;p&gt;Сейчас, чтобы использовать любой мощный инструмент разработки, вам нужен ПК или ноутбук. Мы хотим сделать набор инструментов, который можно использовать где угодно. Мы уже сделали некоторые шаги в этом направлении, и мы продолжим работать в этом направлении.&lt;/p&gt;
&lt;p&gt;Итак, мы начинаем новый год без четких планов, но с четким знанием нашей цели. Давайте подождем и посмотрим, будет ли этот подход работать лучше.&lt;/p&gt;
&lt;p&gt;Счастливого Нового Года всем вам! До скорой встречи!&lt;/p&gt;</content></entry><entry><title>Ideal games and game development tools</title><link href="http://opengamestudio.org/ideal-gamedev.html" rel="alternate"></link><published>2018-11-19T00:00:00+03:00</published><updated>2018-11-19T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-11-19:/ideal-gamedev.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, we discuss how ideal video game and video game development
tool look like, in our opinion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Questions&lt;/strong&gt;&lt;/p&gt;


+ 200
- 1
feeds/news.atom.xml 查看文件

@@ -1,5 +1,204 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio - News</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/news.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2018-11-19T00:00:00+03:00</updated><entry><title>Ideal games and game development tools</title><link href="http://opengamestudio.org/ideal-gamedev.html" rel="alternate"></link><published>2018-11-19T00:00:00+03:00</published><updated>2018-11-19T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-11-19:/ideal-gamedev.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"&gt;&lt;/p&gt;
<feed xmlns="http://www.w3.org/2005/Atom"><title>Opensource Game Studio - News</title><link href="http://opengamestudio.org/" rel="alternate"></link><link href="http://opengamestudio.org/feeds/news.atom.xml" rel="self"></link><id>http://opengamestudio.org/</id><updated>2019-02-04T00:00:00+03:00</updated><entry><title>Teaching kids to program</title><link href="http://opengamestudio.org/teaching-kids-to-program.html" rel="alternate"></link><published>2019-02-04T00:00:00+03:00</published><updated>2019-02-04T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-02-04:/teaching-kids-to-program.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, Michael shares his experience of teaching kids to program.&lt;/p&gt;
&lt;p&gt;Here's what he covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;organization of the learning process&lt;/li&gt;
&lt;li&gt;learning plan&lt;/li&gt;
&lt;li&gt;memory game&lt;/li&gt;
&lt;li&gt;development tools&lt;/li&gt;
&lt;li&gt;lessons&lt;/li&gt;
&lt;li&gt;results and plans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Organization of the learning process&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The learning process is conducted as part of corporate social responsibility: a company provides …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, Michael shares his experience of teaching kids to program.&lt;/p&gt;
&lt;p&gt;Here's what he covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;organization of the learning process&lt;/li&gt;
&lt;li&gt;learning plan&lt;/li&gt;
&lt;li&gt;memory game&lt;/li&gt;
&lt;li&gt;development tools&lt;/li&gt;
&lt;li&gt;lessons&lt;/li&gt;
&lt;li&gt;results and plans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Organization of the learning process&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learning plan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Memory game&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let's see what the memory game is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"&gt;&lt;/p&gt;
&lt;p&gt;As you can see, we only have two cards with a cat, only two cards with a dog, etc..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; At the start we shuffle the cards and place them with their faces down.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; The first game player turns a pair of cards.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; If the cards differ they are once again turned face down.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; The next player turns another pair of cards.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6)&lt;/strong&gt; If the cards are the same, they are removed from the field.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;creation of items&lt;/li&gt;
&lt;li&gt;arrangement of items&lt;/li&gt;
&lt;li&gt;selection of items&lt;/li&gt;
&lt;li&gt;comparison of items&lt;/li&gt;
&lt;li&gt;removal of matching items&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Development tools&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We used Scratch as our development tool. &lt;a href="https://scratch.mit.edu/"&gt;Scratch&lt;/a&gt; is a great tool to teach kids to program because each action, each operation is represented graphically.&lt;/p&gt;
&lt;p&gt;For example, you can rotate a cat 360 degrees in 1 second using the following script:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"&gt;&lt;/p&gt;
&lt;p&gt;Here's how it looks like in action:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"&gt;&lt;/p&gt;
&lt;p&gt;Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.&lt;/p&gt;
&lt;p&gt;Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The first lesson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first lesson was introductory, we didn't use PCs.&lt;/p&gt;
&lt;p&gt;The plan was to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Meet&lt;/li&gt;
&lt;li&gt;Play the memory game with cards&lt;/li&gt;
&lt;li&gt;Learn the concept of algorithm&lt;/li&gt;
&lt;li&gt;Detail the game's algorithm&lt;/li&gt;
&lt;li&gt;Analyze the lesson&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Meeting&lt;/p&gt;
&lt;p&gt;Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here's how it looks like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;John: "My name is John, I am going to study Scratch because my father forces me to"&lt;/li&gt;
&lt;li&gt;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"&lt;/li&gt;
&lt;li&gt;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"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Such a format of meeting has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting to know each other&lt;ul&gt;
&lt;li&gt;Each team member should know other team members by name&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Common space&lt;ul&gt;
&lt;li&gt;Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Equality&lt;ul&gt;
&lt;li&gt;Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Attention&lt;ul&gt;
&lt;li&gt;Each team member should listen carefully to be able to correctly repeat what others said&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Feedback&lt;ul&gt;
&lt;li&gt;Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fun&lt;ul&gt;
&lt;li&gt;Memorization problems produce lots of laughter&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Memory game with cards&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Take 8 pairs of the same cards from two decks of cards&lt;/li&gt;
&lt;li&gt;Place the cards in 4 x 4 grid, faces down&lt;/li&gt;
&lt;li&gt;Students stand up around single table&lt;/li&gt;
&lt;li&gt;Each student, one by one, turns a pair of cards&lt;ul&gt;
&lt;li&gt;If cards match, they are taken off the field&lt;/li&gt;
&lt;li&gt;If cards differ, they are once again turned face down&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.&lt;/p&gt;
&lt;p&gt;After a couple of parties it's time to find out what algorithm is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; The concept of algorithm&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask students first, hear them out to find out their level&lt;/li&gt;
&lt;li&gt;Correct what students say if they were close to an expected answer&lt;/li&gt;
&lt;li&gt;Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; The algorithm of the game&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here's how it looks like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;John: "Place 16 cards faces down"&lt;/li&gt;
&lt;li&gt;Alex: "Turn a pair of cards"&lt;/li&gt;
&lt;li&gt;Paul: "If the cards differ, turn them faces down again"&lt;/li&gt;
&lt;li&gt;Dan: "Turn another pair of cards"&lt;/li&gt;
&lt;li&gt;Mike: "If the cards match, take them off the field"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Analyze the lesson&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We had the following decisions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Only accept accurate answers from students because active students like to wriggle, which hampers discipline.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The second and the third lessons&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We saw two ways to approach the problem:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Keep on studying the coordinate system risking not to get the game done by the end of the course&lt;/li&gt;
&lt;li&gt;Change the game requirements so that coordinate system is not necessary&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;This solution sparkled a few thoughts in my head:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;One can often find a simpler path to solve an issue&lt;/li&gt;
&lt;li&gt;This path is simpler to understand, albeit less flexible&lt;/li&gt;
&lt;li&gt;One can go the harder path to increase flexibility much later when it becomes absolutely necessary&lt;/li&gt;
&lt;li&gt;Simplification moves one closer to the goal, complexification moves one in the opposite direction&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The fourth and the rest of the lessons&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The last lesson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.&lt;/p&gt;
&lt;p&gt;Here's the leaderboard of the last lesson (names are hidden):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"&gt;&lt;/p&gt;
&lt;p&gt;The leaderboard is in Russian, here are the captions translated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Circle of items&lt;/li&gt;
&lt;li&gt;Selection of pairs&lt;/li&gt;
&lt;li&gt;Hide all&lt;/li&gt;
&lt;li&gt;Hide a pair&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/WlA193S3SPY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Results and plans&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The results surpassed my expectations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;three students made it in an hour or faster&lt;/li&gt;
&lt;li&gt;two students made it in an hour and a half or faster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;That's it for sharing Michael's experience of teaching kids to program.&lt;/p&gt;</content></entry><entry><title>Year of rethinking</title><link href="http://opengamestudio.org/2019-year-of-rethinking.html" rel="alternate"></link><published>2019-01-01T00:01:00+03:00</published><updated>2019-01-01T00:01:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2019-01-01:/2019-year-of-rethinking.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;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 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Happy New Year to all of you! See you soon!&lt;/p&gt;</content></entry><entry><title>Ideal games and game development tools</title><link href="http://opengamestudio.org/ideal-gamedev.html" rel="alternate"></link><published>2018-11-19T00:00:00+03:00</published><updated>2018-11-19T00:00:00+03:00</updated><author><name>Opensource Game Studio</name></author><id>tag:opengamestudio.org,2018-11-19:/ideal-gamedev.html</id><summary type="html">&lt;p&gt;&lt;img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"&gt;&lt;/p&gt;
&lt;p&gt;In this article, we discuss how ideal video game and video game development
tool look like, in our opinion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Questions&lt;/strong&gt;&lt;/p&gt;


+ 210
- 39
index.html 查看文件

@@ -49,17 +49,191 @@

<article>
<a href="http://opengamestudio.org/2019-year-of-rethinking.html"><h3 class="article-title">Year of rethinking</h3></a>
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Tue 01 January 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking-ru.html">ru</a>
<a href="http://opengamestudio.org/teaching-kids-to-program.html"><h3 class="article-title">Teaching kids to program</h3></a>
<h6 class="subheader" title="2019-02-04T00:00:00+03:00">Пн 04 февраля 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/teaching-kids-to-program-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></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>Happy New Year to all of you! See you soon!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>
</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"></p>
<p>In this article, Michael shares his experience of teaching kids to program.</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>
</ul>
<p><strong>Organization of the learning process</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Learning plan</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Memory game</strong></p>
<p>Let's see what the memory game is.</p>
<p><strong>1)</strong> In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"></p>
<p>As you can see, we only have two cards with a cat, only two cards with a dog, etc..</p>
<p><strong>2)</strong> At the start we shuffle the cards and place them with their faces down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>3)</strong> The first game player turns a pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"></p>
<p><strong>4)</strong> If the cards differ they are once again turned face down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>5)</strong> The next player turns another pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"></p>
<p><strong>6)</strong> If the cards are the same, they are removed from the field.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"></p>
<p>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.</p>
<p>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:</p>
<ul>
<li>creation of items</li>
<li>arrangement of items</li>
<li>selection of items</li>
<li>comparison of items</li>
<li>removal of matching items</li>
</ul>
<p><strong>Development tools</strong></p>
<p>We used Scratch as our development tool. <a href="https://scratch.mit.edu/">Scratch</a> is a great tool to teach kids to program because each action, each operation is represented graphically.</p>
<p>For example, you can rotate a cat 360 degrees in 1 second using the following script:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"></p>
<p>Here's how it looks like in action:</p>
<p><img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"></p>
<p>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:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"></p>
<p>Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.</p>
<p>Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.</p>
<p><strong>The first lesson</strong></p>
<p>The first lesson was introductory, we didn't use PCs.</p>
<p>The plan was to:</p>
<ol>
<li>Meet</li>
<li>Play the memory game with cards</li>
<li>Learn the concept of algorithm</li>
<li>Detail the game's algorithm</li>
<li>Analyze the lesson</li>
</ol>
<p><strong>1)</strong> Meeting</p>
<p>Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "My name is John, I am going to study Scratch because my father forces me to"</li>
<li>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"</li>
<li>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"</li>
</ol>
<p>Such a format of meeting has the following objectives:</p>
<ul>
<li>Getting to know each other<ul>
<li>Each team member should know other team members by name</li>
</ul>
</li>
<li>Common space<ul>
<li>Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games</li>
</ul>
</li>
<li>Equality<ul>
<li>Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy</li>
</ul>
</li>
<li>Attention<ul>
<li>Each team member should listen carefully to be able to correctly repeat what others said</li>
</ul>
</li>
<li>Feedback<ul>
<li>Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them</li>
</ul>
</li>
<li>Fun<ul>
<li>Memorization problems produce lots of laughter</li>
</ul>
</li>
</ul>
<p><strong>2)</strong> Memory game with cards</p>
<ol>
<li>Take 8 pairs of the same cards from two decks of cards</li>
<li>Place the cards in 4 x 4 grid, faces down</li>
<li>Students stand up around single table</li>
<li>Each student, one by one, turns a pair of cards<ul>
<li>If cards match, they are taken off the field</li>
<li>If cards differ, they are once again turned face down</li>
</ul>
</li>
</ol>
<p>Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.</p>
<p>After a couple of parties it's time to find out what algorithm is.</p>
<p><strong>3)</strong> The concept of algorithm</p>
<ol>
<li>Ask students first, hear them out to find out their level</li>
<li>Correct what students say if they were close to an expected answer</li>
<li>Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one</li>
</ol>
<p>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.</p>
<p><strong>4)</strong> The algorithm of the game</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "Place 16 cards faces down"</li>
<li>Alex: "Turn a pair of cards"</li>
<li>Paul: "If the cards differ, turn them faces down again"</li>
<li>Dan: "Turn another pair of cards"</li>
<li>Mike: "If the cards match, take them off the field"</li>
</ol>
<p><strong>5)</strong> Analyze the lesson</p>
<p>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.</p>
<p>We had the following decisions:</p>
<ol>
<li>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.</li>
<li>Only accept accurate answers from students because active students like to wriggle, which hampers discipline.</li>
</ol>
<p><strong>The second and the third lessons</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>We saw two ways to approach the problem:</p>
<ol>
<li>Keep on studying the coordinate system risking not to get the game done by the end of the course</li>
<li>Change the game requirements so that coordinate system is not necessary</li>
</ol>
<p>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.</p>
<p>This solution sparkled a few thoughts in my head:</p>
<ol>
<li>One can often find a simpler path to solve an issue</li>
<li>This path is simpler to understand, albeit less flexible</li>
<li>One can go the harder path to increase flexibility much later when it becomes absolutely necessary</li>
<li>Simplification moves one closer to the goal, complexification moves one in the opposite direction</li>
</ol>
<p><strong>The fourth and the rest of the lessons</strong></p>
<p>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.</p>
<p>We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.</p>
<p>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.</p>
<p><strong>The last lesson</strong></p>
<p>When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.</p>
<p>Here's the leaderboard of the last lesson (names are hidden):</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"></p>
<p>The leaderboard is in Russian, here are the captions translated:</p>
<ul>
<li>Name</li>
<li>Circle of items</li>
<li>Selection of pairs</li>
<li>Hide all</li>
<li>Hide a pair</li>
</ul>
<p>Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.</p>
<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>

<p><br/></p>
<p><strong>Results and plans</strong></p>
<p>The results surpassed my expectations:</p>
<ul>
<li>three students made it in an hour or faster</li>
<li>two students made it in an hour and a half or faster</li>
</ul>
<p>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.</p>
<p>That's it for sharing Michael's experience of teaching kids to program.</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>

@@ -73,9 +247,27 @@


<article>
<a href="http://opengamestudio.org/2019-year-of-rethinking.html"><h3 class="article-title">Year of rethinking</h3></a>
<h6 class="subheader" title="2019-01-01T00:01:00+03:00">Вт 01 января 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/2019-year-of-rethinking-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2019-year-of-rethinking.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ideal-gamedev.html"><h3 class="article-title">Ideal games and game development tools</h3></a>
<h6 class="subheader" title="2018-11-19T00:00:00+03:00">Mon 19 November 2018
<h6 class="subheader" title="2018-11-19T00:00:00+03:00">Пн 19 ноября 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/ideal-gamedev-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-11-19-ideal-gamedev.png"></p>
@@ -102,7 +294,7 @@ tool look like, in our opinion.</p>

<article>
<a href="http://opengamestudio.org/mahjong-demo2.html"><h3 class="article-title">OGS Mahjong 2: Demo 2</h3></a>
<h6 class="subheader" title="2018-10-02T00:00:00+03:00">Tue 02 October 2018
<h6 class="subheader" title="2018-10-02T00:00:00+03:00">Вт 02 октября 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-demo2-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-10-02-mahjong-demo2.png"></p>
@@ -125,7 +317,7 @@ build a solid cross-platform foundation.</p>

<article>
<a href="http://opengamestudio.org/examples-and-dependencies.html"><h3 class="article-title">Examples and dependencies</h3></a>
<h6 class="subheader" title="2018-08-21T00:00:00+03:00">Tue 21 August 2018
<h6 class="subheader" title="2018-08-21T00:00:00+03:00">Вт 21 августа 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/examples-and-dependencies-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-08-21-examples-and-dependencies.png"></p>
@@ -148,7 +340,7 @@ that secure HTTP connection between a debugged application and debug …</p><p c

<article>
<a href="http://opengamestudio.org/example-driven-development.html"><h3 class="article-title">Example-driven development</h3></a>
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Wed 27 June 2018
<h6 class="subheader" title="2018-06-27T00:00:00+03:00">Ср 27 июня 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/example-driven-development-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-06-27-example-driven-development.png"></p>
@@ -171,7 +363,7 @@ the reasons described in the <a href="http://opengamestudio.org/examples-and-dep

<article>
<a href="http://opengamestudio.org/openscenegraph-examples.html"><h3 class="article-title">OpenSceneGraph cross-platform examples</h3></a>
<h6 class="subheader" title="2018-04-20T00:00:00+03:00">Fri 20 April 2018
<h6 class="subheader" title="2018-04-20T00:00:00+03:00">Пт 20 апреля 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/openscenegraph-examples-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-04-20-openscenegraph-examples.png"></p>
@@ -194,7 +386,7 @@ time. We considered …</p><p class="subheader">Category: <a href="http://openga

<article>
<a href="http://opengamestudio.org/mahjong-techdemo1-gameplay.html"><h3 class="article-title">First techdemo of OGS Mahjong 2: Gameplay</h3></a>
<h6 class="subheader" title="2018-02-16T00:00:00+03:00">Fri 16 February 2018
<h6 class="subheader" title="2018-02-16T00:00:00+03:00">Пт 16 февраля 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-techdemo1-gameplay-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-02-16-mahjong-techdemo1-gameplay.png"></p>
@@ -221,7 +413,7 @@ supported platforms.</p>

<article>
<a href="http://opengamestudio.org/mahjong-recreation-start.html"><h3 class="article-title">Mahjong recreation start</h3></a>
<h6 class="subheader" title="2018-01-26T00:00:00+03:00">Fri 26 January 2018
<h6 class="subheader" title="2018-01-26T00:00:00+03:00">Пт 26 января 2018
<a class="button secondary small translation-button" href="http://opengamestudio.org/mahjong-recreation-start-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2018-01-26-mahjong-recreation-start.png"></p>
@@ -249,7 +441,7 @@ supported platforms.</p>

<article>
<a href="http://opengamestudio.org/the-year-of-lessons.html"><h3 class="article-title">The year of lessons</h3></a>
<h6 class="subheader" title="2017-12-31T22:00:00+03:00">Sun 31 December 2017
<h6 class="subheader" title="2017-12-31T22:00:00+03:00">Вс 31 декабря 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/the-year-of-lessons-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-12-31-celebration.jpg"></p>
@@ -266,27 +458,6 @@ following year.</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Wed 22 November 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 1 of 6</h6>


+ 42
- 39
index2.html 查看文件

@@ -49,6 +49,47 @@


<article>
<a href="http://opengamestudio.org/2017-summary.html"><h3 class="article-title">2017 summary</h3></a>
<h6 class="subheader" title="2017-11-22T00:00:00+03:00">Ср 22 ноября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-summary-ru.html">ru</a>

</h6><p><img alt="Screenshot" src="http://opengamestudio.org/2017-11-22-2017-summary.png"></p>
<p>It's time to step back to see our accomplishments in 2017 and how they connect to the overall goal of Opensource Game Studio project.</p>
<p><strong>Brief history</strong></p>
<p>Opensource Game Studio project is 12 years old now.</p>
<p><strong>2005.</strong> We started the project with a <a href="https://www.linuxquestions.org/questions/general-10/the-creation-of-the-best-rpg-355858/">fanatic call</a> to create the best game ever …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-summary.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-the-static.html"><h3 class="article-title">Back to the Static</h3></a>
<h6 class="subheader" title="2017-10-16T00:00:00+03:00">Пн 16 октября 2017
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-the-static-ru.html">ru</a>

</h6><p><img alt="Back to the Static" src="http://opengamestudio.org/2017-10-16-back-to-the-static.png"></p>
<p>We have been using Wordpress as our website engine for more than seven years. And now it's time to move forward. Or backward.
For some time we've been tracking the development of the new breed of website engines - static site generators.
It seems that this is the technology capable of …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-the-static.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/mjin-world-birth.html"><h3 class="article-title">The birth of MJIN world</h3></a>
<h6 class="subheader" title="2017-09-10T00:00:00+03:00">Вс 10 сентября 2017
@@ -210,47 +251,9 @@ In case you missed it, here's …</p><p class="subheader">Category: <a href="htt
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 2 of 5</h6>
<h6 class="subheader">Page 2 of 6</h6>

<p>
<a href="http://opengamestudio.org/index.html">&laquo; Prev</a>


+ 39
- 37
index3.html 查看文件

@@ -49,6 +49,44 @@


<article>
<a href="http://opengamestudio.org/2017-happy-new-year.html"><h3 class="article-title">Happy 2017</h3></a>
<h6 class="subheader" title="2016-12-31T00:00:00+03:00">Сб 31 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2017-happy-new-year-ru.html">ru</a>

</h6><p><img alt="Happy new year" src="http://opengamestudio.org/2016-12-31_happy-new-year.png"></p>
<p>Okay. It's been a hard year for everyone in the team. And it's almost over. Praise it ends! Praise the new one!</p>
<p>It may seem, that our progress stalled. Three years ago we announced the beginning of a new project (two to be precise), and now we still working on …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2017-happy-new-year.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-november-recap.html"><h3 class="article-title">November 2016 recap</h3></a>
<h6 class="subheader" title="2016-12-15T00:00:00+03:00">Чт 15 декабря 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/2016-november-recap-ru.html">ru</a>

</h6><p><img alt="November recap" src="http://opengamestudio.org/2016-12-15_2016-november-recap.png"></p>
<p>This article describes the start of MJIN library separation into modules.</p>
<p>Once we built OpenSceneGraph for Android, it became obvious that some MJIN functionality is not suitable for Android. For example, UIQt provides a basis for OGS Editor UI. Since OGS Editor is a desktop application, we don't need UIQt …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2016-november-recap.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2016-october-recap.html"><h3 class="article-title">October 2016 recap</h3></a>
<h6 class="subheader" title="2016-11-19T00:00:00+03:00">Сб 19 ноября 2016
@@ -210,45 +248,9 @@ It's time to create simple Mahjong solitaire game.</p><p class="subheader">Categ
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 3 of 5</h6>
<h6 class="subheader">Page 3 of 6</h6>

<p>
<a href="http://opengamestudio.org/index2.html">&laquo; Prev</a>


+ 37
- 40
index4.html 查看文件

@@ -49,6 +49,42 @@


<article>
<a href="http://opengamestudio.org/back-to-social-networks.html"><h3 class="article-title">We’re back to social networks</h3></a>
<h6 class="subheader" title="2016-08-18T00:00:00+03:00">Чт 18 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/back-to-social-networks-ru.html">ru</a>

</h6><p>If you follow us on <a href="https://www.facebook.com/groups/162611230470183/">Facebook</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a>, or <a href="https://new.vk.com/opengamestudo">VK</a> you noticed we started to use them again. That's no coincidence: we're finally ready to communicate our progress verbally after 4 years of almost silent development.</p>
<p>Follow us to stay up-to-date!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/back-to-social-networks.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/once-mahjong-always-mahjong.html"><h3 class="article-title">Once Mahjong – always Mahjong</h3></a>
<h6 class="subheader" title="2016-08-10T00:00:00+03:00">Ср 10 августа 2016
<a class="button secondary small translation-button" href="http://opengamestudio.org/once-mahjong-always-mahjong-ru.html">ru</a>

</h6><p>We started Opensource Game Studio project a long time ago. We wanted to provide open source community with tools to create games. However, it was unclear what tools' purpose was. So we decided to start small: create a game first.</p>
<p>It took us 3 years to reach the first goal …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/once-mahjong-always-mahjong.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/ogs-editor-0.9.html"><h3 class="article-title">May 2016 live session materials</h3></a>
<h6 class="subheader" title="2016-05-29T00:00:00+03:00">Вс 29 мая 2016
@@ -197,48 +233,9 @@ The exact date and time is …</p><p class="subheader">Category: <a href="http:/
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 4 of 5</h6>
<h6 class="subheader">Page 4 of 6</h6>

<p>
<a href="http://opengamestudio.org/index3.html">&laquo; Prev</a>


+ 41
- 40
index5.html 查看文件

@@ -49,6 +49,45 @@


<article>
<a href="http://opengamestudio.org/livesession-materials-editor-07.html"><h3 class="article-title">Live session video and downloads</h3></a>
<h6 class="subheader" title="2015-11-15T00:00:00+03:00">Вс 15 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-materials-editor-07-ru.html">ru</a>

</h6><p>If you missed the live session, you can watch it here:
<a href="https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/">https://www.livecoding.tv/video/kornerr/playlists/whac-a-mole-from-scratch/</a></p>
<p>You can download the resulting project here:
<a href="https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip">https://github.com/OGStudio/liveSessionWhacAMole/archive/master.zip</a></p>
<p>The latest editor can be found here:
<a href="http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0.7.4/">http://sourceforge.net/projects/osrpgcreation/files/Editor/jenkins/42_2015-11-13_08-16-46_0 …</a></p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-materials-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/livesession-editor-07.html"><h3 class="article-title">Creating a simple game live: 15 November 2015</h3></a>
<h6 class="subheader" title="2015-11-09T00:00:00+03:00">Пн 09 ноября 2015
<a class="button secondary small translation-button" href="http://opengamestudio.org/livesession-editor-07-ru.html">ru</a>

</h6><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&amp;iso=20151115T12&amp;p1=37&amp;ah=3">15 November 2015 at 12:00 CET</a>. Join us!</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/livesession-editor-07.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/soon-game-creation-editor-07.html"><h3 class="article-title">SOON: Creating a simple game live (Editor 0.7)</h3></a>
<h6 class="subheader" title="2015-11-02T00:00:00+03:00">Пн 02 ноября 2015
@@ -206,52 +245,14 @@ technical difficulties).</p>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 5 of 5</h6>
<h6 class="subheader">Page 5 of 6</h6>

<p>
<a href="http://opengamestudio.org/index4.html">&laquo; Prev</a>

<a href="http://opengamestudio.org/index6.html">Next &raquo;</a>
</p>
</div>



+ 161
- 0
index6.html 查看文件

@@ -0,0 +1,161 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />

<title>Opensource Game Studio</title>

<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" />
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script>

<!-- So Firefox can bookmark->"abo this site" -->
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml">

</head>

<body>

<!-- Nav Bar -->
<nav>

<!-- Show menu items and pages -->
<div class="row">
<div class="large-12 columns top-bar">
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1>
</div>
</div>
<div class="row top-menu">
<div class="large-12 columns">
<a href="/pages/games.html" class="menu-button secondary">Games</a>
<a href="/pages/education.html" class="menu-button secondary">Education</a>
<a href="/pages/about.html" class="menu-button secondary">About</a>

</div>
</div>
</nav>
<!-- End Nav -->


<!-- Main Page Content and Sidebar -->
<div class="row">

<!-- Main Blog Content -->
<div class="large-9 columns">


<article>
<a href="http://opengamestudio.org/2014-another-year-passed.html"><h3 class="article-title">And another year has passed</h3></a>
<h6 class="subheader" title="2014-12-31T12:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/2014-another-year-passed-ru.html">ru</a>

</h6><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 …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/2014-another-year-passed.html">Read More</a>
<hr class="gradient"/>
</article>



<article>
<a href="http://opengamestudio.org/user-servey-finish-promise.html"><h3 class="article-title">User survey ends today</h3></a>
<h6 class="subheader" title="2014-12-31T00:00:00+03:00">Ср 31 декабря 2014
<a class="button secondary small translation-button" href="http://opengamestudio.org/user-servey-finish-promise-ru.html">ru</a>

</h6><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>
<p>We'll share …</p><p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>


<a class="button radius secondary small right" href="http://opengamestudio.org/user-servey-finish-promise.html">Read More</a>
<hr class="gradient"/>
</article>

<!-- /#posts-list -->
<div class="pagination-centered">
<h6 class="subheader">Page 6 of 6</h6>

<p>
<a href="http://opengamestudio.org/index5.html">&laquo; Prev</a>

</p>
</div>

</div>
<!-- End Main Content -->

<!-- Sidebar -->
<aside class="large-3 columns">
<!--k
<h5 class="sidebar-title">Site</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/archives.html">Archives</a>
<li><a href="http://opengamestudio.org/tags.html">Tags</a>


<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li>
</ul>

<h5 class="sidebar-title">Categories</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/category/news.html">News</a></li>
</ul>
-->


<h5 class="sidebar-title">Ads</h5>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- ogs2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-4473792248813084"
data-ad-slot="9024247127"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

</aside> <!-- End Sidebar -->

</div> <!-- End Main Content and Sidebar -->


<!-- Footer -->
<footer class="row">
<div class="large-12 columns">
<hr />
<div class="row">
<div class="large-7 columns">
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3773114-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</footer>

+ 300
- 0
teaching-kids-to-program-ru.html 查看文件

@@ -0,0 +1,300 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />

<title>Обучение детей программированию</title>

<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" />
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script>

<!-- So Firefox can bookmark->"abo this site" -->
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml">

</head>

<body>

<!-- Nav Bar -->
<nav>

<!-- Show menu items and pages -->
<div class="row">
<div class="large-12 columns top-bar">
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1>
</div>
</div>
<div class="row top-menu">
<div class="large-12 columns">
<a href="/pages/games.html" class="menu-button secondary">Games</a>
<a href="/pages/education.html" class="menu-button secondary">Education</a>
<a href="/pages/about.html" class="menu-button secondary">About</a>

</div>
</div>
</nav>
<!-- End Nav -->


<!-- Main Page Content and Sidebar -->
<div class="row">

<!-- Main Blog Content -->
<div class="large-9 columns">
<article>
<header>
<h3 class="article-title"><a href="http://opengamestudio.org/teaching-kids-to-program-ru.html" rel="bookmark"
title="Permalink to Обучение детей программированию">Обучение детей программированию</a></h3>
</header>

<h6 class="subheader" title="2019-02-04T00:00:00+03:00">Пн 04 февраля 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/teaching-kids-to-program.html">en</a>

</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"></p>
<p>В этой статье Михаил делится своим опытом обучения детей программированию.</p>
<p>Он расскажет о следующем:</p>
<ul>
<li>организация процесса обучения</li>
<li>программа обучения</li>
<li>игра на память</li>
<li>инструмент программирования</li>
<li>уроки</li>
<li>результаты и планы</li>
</ul>
<p><strong>Организация процесса обучения</strong></p>
<p>Обучение проходит в рамках социальной ответственности бизнеса: компания предоставляет помещение с оборудованием, а также объединяет сотрудников, желающих попробовать себя в роли преподавателей, с сотрудниками, желающими обучить своих детей. Всё это исключительно на добровольной основе.</p>
<p>Потенциальных преподавателей разбивают по группам таким образом, чтобы группа из трёх преподавателей состояла из одного опытного и двух новичков. Одна группа преподавателей ведёт одну группу учеников. Учеников разбивают по возрасту и навыкам.</p>
<p>В 2018-м я второй раз участвовал в программе обучения детей в возрасте примерно десяти лет. Наша группа работала с октября по декабрь 2018-го по субботам с 10:00 до 12:00. Пользуясь служебным положением, я также затащил на курсы и свою жену.</p>
<p><strong>Программа обучения</strong></p>
<p>Когда я участвовал первый раз, наша группа обучала детей программированию довольно бесцельно: мы придумывали простейшие задания на урок для объяснения операторов. В результате в конце обучения у нас не было ничего конкретного, что можно было бы оценить, чем похвастаться и что проанализировать.</p>
<p>В этот второй раз я решил, что мы с детьми реализуем так называемую игру на память. Критерием успешности обучения я определил следующее условие: каждый ученик к концу курса самостоятельно создаёт простейшую игру на память с нуля за 1 час.</p>
<p>Для достижения этого критерия я решил проверить утверждение "Повторение - мать учения", поэтому каждый урок мы создавали всё с нуля. Подчеркну, что мы ничего не сохраняли в учётной записи учеников. Задача была в сохранении навыка создания игры в голове, не в компьютере.</p>
<p><strong>Игра на память</strong></p>
<p>Давайте рассмотрим, что представляет собой игра на память.</p>
<p><strong>1)</strong> В простейшем случае у нас есть 16 карт, причём уникальных лишь 8, остальные 8 являются их парами.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"></p>
<p>В представленном изображении у нас есть лишь две карты с котом, собакой и т.д..</p>
<p><strong>2)</strong> В начале игры мы перемешиваем карты и раскладываем их <strong>рубашкой</strong> вверх.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>3)</strong> Первый из участников игры открывает две карты.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"></p>
<p><strong>4)</strong> Если карты различаются, возвращаем их в исходное положение: кладём <strong>рубашкой</strong> вверх.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>5)</strong> Следующий участник игры открывает другую пару карт.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"></p>
<p><strong>6)</strong> Если карты совпадают, убираем их с игрового поля.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"></p>
<p>Цель игры в том, чтобы убрать все карты с поля. Игра в данном виде не включает соревнование, поэтому играть можно одному человеку.</p>
<p>С одной стороны, игра на память довольно проста, с другой стороны, реализация игры затрагивает основную функциональность, необходимую для создания любой более-менее сложной игры:</p>
<ul>
<li>создание элементов</li>
<li>их расстановка на поле</li>
<li>выбор элементов</li>
<li>сравнение выбранных элементов</li>
<li>скрытие совпадающих элементов</li>
</ul>
<p><strong>Инструмент программирования</strong></p>
<p>В качестве инструмента мы использовали среду <a href="https://scratch.mit.edu/">Scratch</a>. Она рассчитана на обучение детей программированию, поэтому каждое действие, каждый оператор в ней представлен графически.</p>
<p>Например, следующим скриптом можно повернуть кота на 360 градусов за секунду:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script-ru.png"></p>
<p>Вот так выглядит результат:</p>
<p><img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"></p>
<p>Замечу, что это довольно успешное решение для представления кода графически. Например, платное решение, продвигаемое нынче компанией SAP, предполагает использование так называемых кубиков для программирования:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"></p>
<p>Тут можно лишь ввести в нужные поля нужные значения. Если потребуется что-то нестандартное, то поможет лишь скрипт, который представлен опять же кубиком.</p>
<p>По личному опыту скажу, что решение Scratch не тормозит от слова совсем, чего не скажешь о решении SAP.</p>
<p><strong>Первый урок</strong></p>
<p>Первый урок являлся вводным, поэтому компьютеры мы не использовали.</p>
<p>План был следующим:</p>
<ol>
<li>Познакомиться</li>
<li>Сыграть в игру на память</li>
<li>Изучить понятие алгоритма</li>
<li>Написать алгоритм игры</li>
<li>Проанализировать урок</li>
</ol>
<p><strong>1)</strong> Знакомство</p>
<p>Преподаватели с учениками встают в круг. Это уравнивает всех и делает каждого участником команды.</p>
<p>Первый участник называет своё имя и рассказывает о том, почему он решил посетить этот курс. Второй и последующие участники сначала повторяют имя и рассказ каждого предыдущего участника, после чего называют своё имя и рассказывают.</p>
<p>Примерно так это выглядит:</p>
<ol>
<li>Вася: "Меня зовут Вася, я хочу изучить Scratch, потому что меня заставил папа"</li>
<li>Дима: "Это Вася, заниматься Scratch'ем его заставляет папа. Меня зовут Дима, и это мой четвёртый год Scratch'а"</li>
<li>Оля: "Это Вася, его заставляют родители. Это Дима, он практически ветеран Scratch'а. Меня зовут Оля, я первый год преподаю, буду учиться вместе со всеми"</li>
</ol>
<p>Данный формат знакомства преследует следующие цели:</p>
<ul>
<li>Знакомство<ul>
<li>Каждый участник команды должен знать по имени остальных участников команды</li>
</ul>
</li>
<li>Общее пространство<ul>
<li>Все участники в круге, а не за рабочими местами, что уменьшает отвлечение на игры в компьютере</li>
</ul>
</li>
<li>Равенство<ul>
<li>И преподаватели, и ученики в одном круге, что уравновешивает всех в качестве участников команды без иерархии</li>
</ul>
</li>
<li>Внимание<ul>
<li>Каждый участник команды должен внимательно слушать остальных участников, чтобы правильно повторить сказанное ими</li>
</ul>
</li>
<li>Обратная связь<ul>
<li>Каждый участник команды должен максимально чётко излагать свою мысль, иначе остальные просто не смогут её повторить</li>
</ul>
</li>
<li>Веселье<ul>
<li>Проблемы с запоминанием имён всех веселят</li>
</ul>
</li>
</ul>
<p><strong>2)</strong> Игра на память в карты</p>
<ol>
<li>Берём две колоды карт и выбираем из них по 8 одинаковых</li>
<li>Раскладываем карты в сетку 4 x 4 рубашкой вверх на столе</li>
<li>Ученики встают вокруг стола</li>
<li>Каждый ученик по очереди переворачивает пару карт<ul>
<li>Если карты совпали, то убираем их с поля</li>
<li>Если карты различаются, то переворачиваем их рубашкой вверх</li>
</ul>
</li>
</ol>
<p>Ученикам очень нравится играть в настольные игры. В ходе игры преподаватели проговаривают то, что происходит.</p>
<p>После пары партий переходим к изучению понятия алгоритма.</p>
<p><strong>3)</strong> Понятие алгоритма</p>
<ol>
<li>Спрашиваем сначала учеников, даём возможность высказаться, узнаём уровень каждого ученика</li>
<li>При необходимости поправляем высказывания, если они близки к ожидаемому ответу</li>
<li>Предлагаем написать алгоритм перевода человека из состояния "стоит за дверью кабинета" в состояние "работает за компьютером в кабинете"</li>
</ol>
<p>Ученикам очень нравится подходить к доске и писать на ней, поэтому по очереди вызываем каждого ученика, чтобы он писал по одному пункту алгоритма. Самого активного ученика используем в качестве исполнителя алгоритма.</p>
<p><strong>4)</strong> Алгоритм игры</p>
<p>Предлагаем написать алгоритм игры, опять вызываем каждого добавлять по одному пункту на доске. После завершения описания алгоритма ещё раз играем с картами, но на этот раз каждый ученик должен проговаривать шаг алгоритма.</p>
<p>Выглядит это примерно так:</p>
<ol>
<li>Вася: "Раскладываем 16 карт рубашкой вверх"</li>
<li>Дима: "Переворачиваем пару карт"</li>
<li>Паша: "Если две карты различаются, переворачиваем их рубашкой вверх"</li>
<li>Филипп: "Переворачиваем пару карт"</li>
<li>Миша: "Если две карты совпадают, убираем их с поля"</li>
</ol>
<p><strong>5)</strong> Анализ урока</p>
<p>На этом первый урок заканчивается, и у преподавателей появляется возможность обсудить как свои впечатления об уроке, так и об учениках, выработать подходы к тихоням и активистам, договориться о дальнейших планах на следующие уроки.</p>
<p>У нас были следующие решения:</p>
<ol>
<li>Рассаживать тихонь и активистов через одного, чтобы соблюсти баланс шума и тишины. Иначе группа активистов создаёт очаг бури, а группа тихонь - очаг пустыни, что замедляет процесс обучения.</li>
<li>Требовать от учеников точности, т.к. активисты любят кривляться, что плохо влияет на дисциплину.</li>
</ol>
<p><strong>Второй и третий уроки</strong></p>
<p>Последующие уроки мы опять же начинали с разминки: вставали в круг, называли имя и рассказывали, кто что сделал. А если не сделал, то почему. Как и прежде, каждый участник сначала повторял сказанное предыдущими и лишь затем говорил о себе.</p>
<p>На втором уроке мы создавали требования для элемента игрового поля и пытались создать этот элемент в Scratch. Это вполне удалось.</p>
<p>На третьем уроке мы пытались создать 16 элементов и расположить их в сетке 4x4. Тут мы застопорились, т.к. ученики не смогли понять систему координат, чтобы расположить 16 элементов в сетке. Стало очевидно, что планы уроков являются лишь планами, а действительность вносит свои изменения.</p>
<p>У нас было два пути решения проблемы с системой координат:</p>
<ol>
<li>Продолжать обучать системе координат с риском не успеть создать игру до конца курса</li>
<li>Изменить требования к игре таким образом, чтобы система координат была не нужна</li>
</ol>
<p>Мы решили пойти вторым путём, т.к. мы всё-таки не школа и цель у нас была научить создавать игру, т.е. применять знания на практике, а не в теории. Поэтому сетку элементов 4x4 мы решили заменить кругом из 16 элементов.</p>
<p>Данное решение привело меня к следующим выводам:</p>
<ol>
<li>Для решения задачи часто можно найти более простой путь</li>
<li>Этот путь легче для понимания, хоть и менее гибкий</li>
<li>Перейти на сложный путь для увеличения гибкости можно позже, когда это будет действительно необходимо</li>
<li>Упрощение приближает к конечной цели, усложнение отдаляет от неё</li>
</ol>
<p><strong>Четвёртый и последующие уроки</strong></p>
<p>С четвёртого урока мы отменили стадию написания требований, т.к. она начала занимать бОльшую часть урока: мы снова сделали уклон на практику, а не теорию, чтобы уложиться в сроки. На этот раз все требования были написаны заранее и выданы "сверху". Но всё равно их никто не читал.</p>
<p>Четвёртый и пятый уроки мы потратили на создание 16 элементов в виде круга, выделение пары элементов и проверку на их совпадение.</p>
<p>С шестого урока и до девятого включительно мы каждый раз воссоздавали игру с нуля. С каждым разом это происходило всё быстрее и быстрее, поэтому с восьмого урока мы ввели турнирную таблицу, где записывали этапы создания игры и время каждого ученика.</p>
<p><strong>Последний урок</strong></p>
<p>К последнему уроку все справлялись с созданием игры с нуля более-менее самостоятельно за час-два.</p>
<p>Такова турнирная таблица последнего урока (имена скрыты):</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"></p>
<p>А ниже можно посмотреть на создание игры на память в Scratch ученика, который создал игру быстрее всех: за 30 минут.</p>
<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>

<p><br/></p>
<p><strong>Результаты и планы</strong></p>
<p>Результат обучения превзошёл мои ожидания:</p>
<ul>
<li>трое учеников успели примерно за час или быстрее</li>
<li>двое примерно за полтора часа или быстрее</li>
</ul>
<p>В этом году я планирую провести обучение не с помощью Scratch, а с использованием инструментария Opensource Game Studio: ученики будут работать с Lua, Git и GitHub Pages.</p>
<p>На этом мы заканчиваем статью об опыте Михаила по обучению детей программированию.</p>
<p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>



</article>
</div>
<!-- End Main Content -->

<!-- Sidebar -->
<aside class="large-3 columns">
<!--k
<h5 class="sidebar-title">Site</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/archives.html">Archives</a>
<li><a href="http://opengamestudio.org/tags.html">Tags</a>


<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li>
</ul>

<h5 class="sidebar-title">Categories</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/category/news.html">News</a></li>
</ul>
-->


<h5 class="sidebar-title">Ads</h5>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- ogs2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-4473792248813084"
data-ad-slot="9024247127"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

</aside> <!-- End Sidebar -->

</div> <!-- End Main Content and Sidebar -->


<!-- Footer -->
<footer class="row">
<div class="large-12 columns">
<hr />
<div class="row">
<div class="large-7 columns">
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3773114-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</footer>

+ 308
- 0
teaching-kids-to-program.html 查看文件

@@ -0,0 +1,308 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" />

<title>Teaching kids to program</title>

<link rel="stylesheet" href="http://opengamestudio.org/theme/css/normalize.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/foundation.min.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/style.css" />
<link rel="stylesheet" href="http://opengamestudio.org/theme/css/pygments.css" />
<script src="http://opengamestudio.org/theme/js/custom.modernizr.js"></script>

<!-- So Firefox can bookmark->"abo this site" -->
<link href="feeds/all.atom.xml" rel="alternate" title="Opensource Game Studio" type="application/atom+xml">

</head>

<body>

<!-- Nav Bar -->
<nav>

<!-- Show menu items and pages -->
<div class="row">
<div class="large-12 columns top-bar">
<h1><a href="http://opengamestudio.org">Opensource Game Studio</a></h1>
</div>
</div>
<div class="row top-menu">
<div class="large-12 columns">
<a href="/pages/games.html" class="menu-button secondary">Games</a>
<a href="/pages/education.html" class="menu-button secondary">Education</a>
<a href="/pages/about.html" class="menu-button secondary">About</a>

</div>
</div>
</nav>
<!-- End Nav -->


<!-- Main Page Content and Sidebar -->
<div class="row">

<!-- Main Blog Content -->
<div class="large-9 columns">
<article>
<header>
<h3 class="article-title"><a href="http://opengamestudio.org/teaching-kids-to-program.html" rel="bookmark"
title="Permalink to Teaching kids to program">Teaching kids to program</a></h3>
</header>

<h6 class="subheader" title="2019-02-04T00:00:00+03:00">Пн 04 февраля 2019
<a class="button secondary small translation-button" href="http://opengamestudio.org/teaching-kids-to-program-ru.html">ru</a>

</h6> <p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-team.png"></p>
<p>In this article, Michael shares his experience of teaching kids to program.</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>
</ul>
<p><strong>Organization of the learning process</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Learning plan</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Memory game</strong></p>
<p>Let's see what the memory game is.</p>
<p><strong>1)</strong> In the simplest case we have 16 cards, only 8 of them are unique, the rest 8 are duplicates of the unique ones.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-up.png"></p>
<p>As you can see, we only have two cards with a cat, only two cards with a dog, etc..</p>
<p><strong>2)</strong> At the start we shuffle the cards and place them with their faces down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>3)</strong> The first game player turns a pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-first-pair.png"></p>
<p><strong>4)</strong> If the cards differ they are once again turned face down.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-all-cards-face-down.png"></p>
<p><strong>5)</strong> The next player turns another pair of cards.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-second-pair.png"></p>
<p><strong>6)</strong> If the cards are the same, they are removed from the field.</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-remove-pair.png"></p>
<p>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.</p>
<p>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:</p>
<ul>
<li>creation of items</li>
<li>arrangement of items</li>
<li>selection of items</li>
<li>comparison of items</li>
<li>removal of matching items</li>
</ul>
<p><strong>Development tools</strong></p>
<p>We used Scratch as our development tool. <a href="https://scratch.mit.edu/">Scratch</a> is a great tool to teach kids to program because each action, each operation is represented graphically.</p>
<p>For example, you can rotate a cat 360 degrees in 1 second using the following script:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-script.png"></p>
<p>Here's how it looks like in action:</p>
<p><img alt="Animation" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-cat-animation.gif"></p>
<p>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:</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-sap-ui.png"></p>
<p>Users can only input values into predefined fields. If users want more functionality they have to resort to scripts.</p>
<p>Personally, I have never witnessed any slowdown in Scratch, and there were many in SAP's solution.</p>
<p><strong>The first lesson</strong></p>
<p>The first lesson was introductory, we didn't use PCs.</p>
<p>The plan was to:</p>
<ol>
<li>Meet</li>
<li>Play the memory game with cards</li>
<li>Learn the concept of algorithm</li>
<li>Detail the game's algorithm</li>
<li>Analyze the lesson</li>
</ol>
<p><strong>1)</strong> Meeting</p>
<p>Both teachers and students stand in a circle. This equalizes everyone and makes everyone a team member.</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "My name is John, I am going to study Scratch because my father forces me to"</li>
<li>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"</li>
<li>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"</li>
</ol>
<p>Such a format of meeting has the following objectives:</p>
<ul>
<li>Getting to know each other<ul>
<li>Each team member should know other team members by name</li>
</ul>
</li>
<li>Common space<ul>
<li>Everyone is in the circle, not at a working desk, this prevents distraction of kids by PC games</li>
</ul>
</li>
<li>Equality<ul>
<li>Both teachers and students are in the same circle, this equalizes everyone as a team member without hierarchy</li>
</ul>
</li>
<li>Attention<ul>
<li>Each team member should listen carefully to be able to correctly repeat what others said</li>
</ul>
</li>
<li>Feedback<ul>
<li>Each team member should be as clear as possible when expressing thoughts, otherwise nobody would be able to repeat them</li>
</ul>
</li>
<li>Fun<ul>
<li>Memorization problems produce lots of laughter</li>
</ul>
</li>
</ul>
<p><strong>2)</strong> Memory game with cards</p>
<ol>
<li>Take 8 pairs of the same cards from two decks of cards</li>
<li>Place the cards in 4 x 4 grid, faces down</li>
<li>Students stand up around single table</li>
<li>Each student, one by one, turns a pair of cards<ul>
<li>If cards match, they are taken off the field</li>
<li>If cards differ, they are once again turned face down</li>
</ul>
</li>
</ol>
<p>Students are eager to play tabletop games. During the game party teachers say out loud each step in the game's algorithm.</p>
<p>After a couple of parties it's time to find out what algorithm is.</p>
<p><strong>3)</strong> The concept of algorithm</p>
<ol>
<li>Ask students first, hear them out to find out their level</li>
<li>Correct what students say if they were close to an expected answer</li>
<li>Ask students to write an algorithm to move a man from "stands outside a room" state into "sits and works at a PC" one</li>
</ol>
<p>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.</p>
<p><strong>4)</strong> The algorithm of the game</p>
<p>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.</p>
<p>Here's how it looks like:</p>
<ol>
<li>John: "Place 16 cards faces down"</li>
<li>Alex: "Turn a pair of cards"</li>
<li>Paul: "If the cards differ, turn them faces down again"</li>
<li>Dan: "Turn another pair of cards"</li>
<li>Mike: "If the cards match, take them off the field"</li>
</ol>
<p><strong>5)</strong> Analyze the lesson</p>
<p>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.</p>
<p>We had the following decisions:</p>
<ol>
<li>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.</li>
<li>Only accept accurate answers from students because active students like to wriggle, which hampers discipline.</li>
</ol>
<p><strong>The second and the third lessons</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>We saw two ways to approach the problem:</p>
<ol>
<li>Keep on studying the coordinate system risking not to get the game done by the end of the course</li>
<li>Change the game requirements so that coordinate system is not necessary</li>
</ol>
<p>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.</p>
<p>This solution sparkled a few thoughts in my head:</p>
<ol>
<li>One can often find a simpler path to solve an issue</li>
<li>This path is simpler to understand, albeit less flexible</li>
<li>One can go the harder path to increase flexibility much later when it becomes absolutely necessary</li>
<li>Simplification moves one closer to the goal, complexification moves one in the opposite direction</li>
</ol>
<p><strong>The fourth and the rest of the lessons</strong></p>
<p>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.</p>
<p>We spent the fourth and the fifth lessons to create 16 items in circle, select a pair of items and match them.</p>
<p>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.</p>
<p><strong>The last lesson</strong></p>
<p>When the last lesson approached everyone was able to create the memory game from scratch more or less independently in two hours.</p>
<p>Here's the leaderboard of the last lesson (names are hidden):</p>
<p><img alt="Screenshot" src="http://opengamestudio.org/2019-02-04_teaching-kids-to-program-leaderboard.png"></p>
<p>The leaderboard is in Russian, here are the captions translated:</p>
<ul>
<li>Name</li>
<li>Circle of items</li>
<li>Selection of pairs</li>
<li>Hide all</li>
<li>Hide a pair</li>
</ul>
<p>Here you can witness the creation of the memory game from scratch by the fastest student: in just half an hour.</p>
<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>

<p><br/></p>
<p><strong>Results and plans</strong></p>
<p>The results surpassed my expectations:</p>
<ul>
<li>three students made it in an hour or faster</li>
<li>two students made it in an hour and a half or faster</li>
</ul>
<p>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.</p>
<p>That's it for sharing Michael's experience of teaching kids to program.</p>
<p class="subheader">Category: <a href="http://opengamestudio.org/category/news.html">News</a>

</p>



</article>
</div>
<!-- End Main Content -->

<!-- Sidebar -->
<aside class="large-3 columns">
<!--k
<h5 class="sidebar-title">Site</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/archives.html">Archives</a>
<li><a href="http://opengamestudio.org/tags.html">Tags</a>


<li><a href="http://opengamestudio.org/feeds/all.atom.xml" rel="alternate">Atom feed</a></li>
</ul>

<h5 class="sidebar-title">Categories</h5>
<ul class="side-nav">
<li><a href="http://opengamestudio.org/category/news.html">News</a></li>
</ul>
-->


<h5 class="sidebar-title">Ads</h5>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- ogs2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-4473792248813084"
data-ad-slot="9024247127"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

</aside> <!-- End Sidebar -->

</div> <!-- End Main Content and Sidebar -->


<!-- Footer -->
<footer class="row">
<div class="large-12 columns">
<hr />
<div class="row">
<div class="large-7 columns">
<p>Proudly powered by <a href="http://getpelican.com">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.</p>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3773114-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</footer>

Loading…
取消
儲存