<story><title>Pygame Zero: Creating games without boilerplate</title><url>https://pygame-zero.readthedocs.io/en/stable/index.html</url></story><parent_chain><item><author>acbart</author><text>I&amp;#x27;m very interested in this project, because I have a student researching what good options there are for Python Game Dev at the CS1 level. We used Arcade[1] this past Fall, and things didn&amp;#x27;t go very well (I&amp;#x27;m not sold on Pyglet, and there was a lot of small &amp;quot;What??&amp;quot; issues with Arcade&amp;#x27;s design itself). Pygame Zero is a very appealing choice, but suffers from its design around global state - which is something I spend most of the semester railing against. The authors gave me a good explanation for why[2], but it still is a deal-breaker for an introductory-level university course for CS majors.&lt;p&gt;At this point, we&amp;#x27;re leaning towards making our own library to satisfy our purposes. We&amp;#x27;re still looking at other options though - hey, if you have one, feel free to suggest it :)&lt;p&gt;[1] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;arcade.academy&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;arcade.academy&amp;#x2F;&lt;/a&gt;&lt;p&gt;[2] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;lordmauve&amp;#x2F;pgzero&amp;#x2F;issues&amp;#x2F;174&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;lordmauve&amp;#x2F;pgzero&amp;#x2F;issues&amp;#x2F;174&lt;/a&gt;</text></item></parent_chain><comment><author>echelon</author><text>CS1 isn&amp;#x27;t the place to rail against global state.&lt;p&gt;The insane stuff we teach in CS1 is why so many students choose other majors.&lt;p&gt;Sell your students on the magic of computers. Don&amp;#x27;t teach them arcane rules and formalisms. They&amp;#x27;ll learn that later, once they&amp;#x27;ve been hooked.</text></comment>
<story><title>Pygame Zero: Creating games without boilerplate</title><url>https://pygame-zero.readthedocs.io/en/stable/index.html</url></story><parent_chain><item><author>acbart</author><text>I&amp;#x27;m very interested in this project, because I have a student researching what good options there are for Python Game Dev at the CS1 level. We used Arcade[1] this past Fall, and things didn&amp;#x27;t go very well (I&amp;#x27;m not sold on Pyglet, and there was a lot of small &amp;quot;What??&amp;quot; issues with Arcade&amp;#x27;s design itself). Pygame Zero is a very appealing choice, but suffers from its design around global state - which is something I spend most of the semester railing against. The authors gave me a good explanation for why[2], but it still is a deal-breaker for an introductory-level university course for CS majors.&lt;p&gt;At this point, we&amp;#x27;re leaning towards making our own library to satisfy our purposes. We&amp;#x27;re still looking at other options though - hey, if you have one, feel free to suggest it :)&lt;p&gt;[1] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;arcade.academy&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;arcade.academy&amp;#x2F;&lt;/a&gt;&lt;p&gt;[2] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;lordmauve&amp;#x2F;pgzero&amp;#x2F;issues&amp;#x2F;174&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;lordmauve&amp;#x2F;pgzero&amp;#x2F;issues&amp;#x2F;174&lt;/a&gt;</text></item></parent_chain><comment><author>nneonneo</author><text>OK, so I&amp;#x27;m genuinely confused about what your objection to global state is. You mention issues with assignment, and so on - those are issues with Python `globals` and variables in the global namespace, not issues with global state per se. A lot of Python programs use global variables in the form of imports, so I don&amp;#x27;t see anything wrong here. (Pygame Zero&amp;#x27;s implicit imports could be a point of objection - but it&amp;#x27;d be very easy to hack a small wrapper to force students to import the names they need instead).&lt;p&gt;In terms of global state, I don&amp;#x27;t see much of a distinction between Pygame Zero&amp;#x27;s globals and a god-singleton like `World`. Both feature large amounts of implicit state, just off by one layer of indirection. For the vast majority of games, it wouldn&amp;#x27;t make sense to have more than one `World`. You might want more than one game scene&amp;#x2F;level&amp;#x2F;etc. but that&amp;#x27;s distinct from the overall windowing system, graphics state, etc. which would be stored in `World`.</text></comment>