Game Development with CircuitPython
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Dopieralski, Radomir
Making computer games is difficult: it requires creativity, multidisciplinary knowledge of art, psychology, math, computer science, physics and others, patience, open mind and dedication. Making computer games with Python is a nightmare. You hit practically every sharp corner that Python has, starting with installation, through binary libraries, poor hardware support, up to distribution. PewPew devices are an attempt at solving the worst problems by giving you a dedicated, cheap, simple and portable gaming device, that you can easily program with Python with just a simple text editor. They also make pretty neat conference badges. I will talk about how they were conceived, how they are used, and how you can extend and improve them yourself. At the end of the talk you should have a good idea about what is CircuitPython and MicroPython and how they can be used to build and program such simple devices. You should also know where to find the resources necessary to try designing and building your own.
 One moment while I find my presentation. Here it is. Slide show. Start. Okay. I'm going to talk about game development and I'm going actually to talk about full stack game development. That means that you have to start with developing the platform you are going to write the game for. So, Azure disclaimer at the beginning. That's not my drop. This is my hobby. All the opinions are mine. I didn't... The things I'm showing here and the things you received, I didn't make this alone. I just assembled things that were already around there, done by other people. So, I don't deserve full credit for everything. This is not an advertisement for the things I'm doing and selling them, but I do sell them on Tinti. So, if you are interested in having those things and not just tricked into buying them, you can buy them if you want. Everything I do is open source. If I didn't publish design files for some project I made, it's because I never finished it or I forgot to publish it. You can always ask me and I will probably apologize and publish it then. And the last thing is we have to remember that... Well, I'm a young white guy in a very rich industry and I have a huge privilege of being able to do these things. Let's remember that not everybody are in the same situation and that, you know, it's not just that I'm talented. I just was very lucky to be in that position. Okay, the whole idea that we have here is that we want to take a microcontroller running, hopefully, some kind of Python. Add some display module and some buttons to it and have a game console for which we can then write games in Python, because we like Python. And because writing games in Python for the PC is a bit trickier, especially if you want that game to be distributed and to your friends to play them without having to install Python and Pygame and whatever. So that was the idea. So I actually started with MicroPython trying to do that. I started with the Pyboard which was released as a Kickstarter thing. But I just didn't have the heart to actually leave it in my project. So I reused it to different other projects. It was just too expensive to tell people, you know, just get this Pyboard, connect some display and buttons and you can play my games. So I wanted something cheap. And then MicroPython had this Kickstarter for support, ESP8266. And that was great. And I jumped at that. And, you know, there were a lot of things missing at the time because it was just being developed. So, for instance, hardware SPI. You need SPI. SPI is a bus protocol that you use to communicate with the display. And you need it in hardware because then it's fast. And the ESP8266 port of MicroPython only had software one, so I had to copy it. Basically, without understanding the C code, I copied that from NodeMCU and bashed it as for... So as long until it started to work. So I learned C in the process. Kind of. So, yeah, I was motivated back then. But, you know, then the MicroBit came out. And MicroPython got support to it. So I thought, yay, finally there is a device that's distributed among a lot of people. So if I write my games for it, I can tell people to just run it on the MicroBit and they will be able to play my games. Great. However, when you actually look at it, it only has two buttons and it has 5x5 display. So you can't even do Tetris on that. You can do Snake if you use the buttons to turn left, turn right, or use the accelerometer or something. So you would still have to connect things to it. So I tried to make this shield for MicroBit with a proper display. That's an OLED display and some buttons. And a battery because then you can hide the battery inside and a small speaker in there. And it actually works pretty well except that the MicroBit has so little memory that you can't really write much of a game, at least in Python. I mean, you can only write so many lines of Python until it stops fitting on the MicroBit. And that actually made me stop doing that. However, the same idea was picked up by some other people and there is this microgrammer thing that you incidentally can also buy on Tindy. That's pretty much the same thing except instead of those screws, those bolts, they used a proper MicroBit connector and stuff like that. And it's bigger and nicer. The thing they did right is that they actually ported the Arduboy games to the MicroBit because that's C++, it fits in there much better and it's much faster. So that worked for them. I still wanted Python. Oh, by the way, a little interruption. What software I'm using for all of this? I'm a complete amateur, I'm a hobbyist. So I didn't really manage to... So I couldn't afford to buy Eagle or Altium or whatever professional software people are using. And Kaikat wasn't really very usable back then and it's still not very user-friendly in my opinion. But it's much better now, so probably it's getting there. So I used Freezing. Freezing is probably most of you know it from those diagrams for breadboard schematics in tutorials and stuff like that. But actually Freezing has more tabs on the top and more views in there and you can switch between them and you can make a schematic in it and then make a PCB. And it's super easy because it's just drag and drop. It's not like Kaikat where you have to select this with mouse, then press this letter, then select something from that menu and you have to memorize all of that. In Freezing you just see everything and you just drag and drop things. Of course it's much more primitive. It doesn't have as many options for professional design, but it's enough for me. And since Freezing uses SVG images internally, you can use it with Inkscape to for instance draw the outline of your PCB. Then the fabrication house will cut it in that shape and it's great for things like budgets or decorations and stuff like that. Also in images you want to put on the PCB in Eagle or in Kaikat you have to do some strange plugins or scripts that will convert it into the right format, let's import it. In Inkscape it's just SVG5, so that's great. And for code I use Vim. No comments. Okay, so I tried to make my own better microbit. And the way I did, I took one of those modules with 8x8 LED display because 8x8 is already better than 5x5, right? And I actually picked one that has two colors of the LEDs, so there are actually 16x8, but there are two LEDs in every pixel. They are green and red, so you can have black, green, red or yellow if you switch both of them at the same time. And some buttons. And I made this shield for Adafruit feather boards. Adafruit has this range of boards they sell and one family of them is called the feather, the feather wing. The feather wing is actually the shield that comes on top of that. I think they are very like the perfect size for me and the pinout of it, like the what pin does what. It's really actually designed with makers in mind. It's not like Arduino where it just happened. Someone actually sat down and thought what would be best. So I really like them. They also have like a battery charger built in and the battery socket and so on. So it's really convenient for stuff like that. So I made that and it comes on any Adafruit feather board. So initially I used that with ESP8266 again and with MicroPython. And it works very well. Adafruit has forked MicroPython to make their own version of it. They call it circuit Python. And it's a friendly fork. It's not like there is they are fighting with MicroPython. They are actually pulling all the changes from MicroPython once in a while from upstream. And they are also reporting bugs and you know, this is cooperation, not a combat. So the difference is that Adafruit really wants, since they are selling things for hobbyists, not professionals, they wanted to really take MicroPython and make it super simple, super easy for professionals. So they focus on the first 10 minutes of interaction. And one thing they did that makes it incompatible with MicroPython is they took the AP, all the hardware APIs and they made them consistent on all of the boards. So on MicroPython, depending on what board you are using, MicroPython on the micro bit is completely different than MicroPython on the pie board and ESPA266 is even more different from that. So depending on what you are using, you have to actually rewrite all your programs. And Adafruit didn't want that because they have a lot of learning materials that they didn't want to have in 10 different versions for 10 different boards. So they made that consistent. And the other thing they did, they made the boards work as USB drives. Actually, pie boards does a similar thing. And so when you connect it to the computer, it just comes as a USB drive. This is great because that doesn't require any drivers. And you just can see the files in there. So you can just click on them and edit them with any editor. And that's the thing they also added. When you save, it restarts. So it automatically runs your code without you having to do anything. You don't have to click anything. It just restarts every time you save. And if you use the excellent new editor, you even get the serial console connection so you can actually see the Python or Apple and you can see the error messages in there and so on. So it's really a nice solution compared to some other things that are available on the market where you need special software, you need special hardware even sometimes, like USB to TTL converter and so on. So that simplifies workshops. But I didn't stop there. I started to experiment with proper displays, like real stuff. And I was trying to get sprites and tiles working. One challenge is that there is not enough memory to keep all the images in memory. So there were tricks used. And I made this thing, which is the micro game, which lets you create real games, like real, with graphics and sound on which circuit Python. It's a bit of a constrained platform, so you cannot have scrolling, for instance, because it's not fast enough to update the whole screen on every frame. It only updates fragments of it. So as long as you don't have scrolling, you only have several moving objects, it's fine. And then I went back to that shield I made for the feather and said, okay, a feather wing, a feather board from other fruit costs about $25. My shield costs $10 and you need probably a battery for $5, so you pay $40 for a simple toy. And I was thinking at that point about running workshops with that, and I thought, no, that's too much. Nobody is going to pay for that. And moreover, only rich people will come and I don't want to make toys for rich kids. I want to make things for workshops with everyone. So I started experimenting with, actually, I both the same microcontroller that Adafruit has used, the same chips there. I connected it together looking at their schematics and I got it to work. That was really exciting. So the next step was I designed a number of prototypes. There were more than you can see here, but some of them I disassembled for parts for the next one. So I'm going to skip that. And ultimately I produced this thing, which is the same thing except it uses a monochrome display with shades of the color instead of color because that's cheaper. It only has like three electronic elements on it because that's how I managed to remove everything that is not necessary. It's powered with batteries and it costs about $10 if you make it in singles. If you make more of them, it costs proportionally less. And I had a presentation about that, I thought of them this year. And also I made a bigger version with a bigger matrix, which is electrically the same. And that might actually look familiar to you. So I had a Fosnamp presentation this year and after the presentation, Mark Andre, one of the organizers of Europitone came up to me and asked, would I like to run workshops with that on MicroPython? Oh, no, Europitone. And I said, sure, I would be delighted to. But how do we solve the problem that I have to give people hardware? I wouldn't want to pay for it myself. So either the conference pays for it or the people who come pay for it somehow. And so then after some checking things and so on, Mark Andre came up with this idea of just give it to everyone on the conference. They don't have to come to the workshops, they can even hack on it by the sales. And it's still a great way of learning Python or having fun with Python at least. So we did that. We produced like 1400 of them. And yeah, so that's basically the story. If you are interested in technical details, I skipped some of that, but you can find me and also during the sprints we can talk. And the last thing is the Pule library is actually ported to many devices. It's not just on the Pue Pue. So you can run it on your computer. Probably you have seen the Pumeulator already with Pygame. But you can also run it, this is a lame boy device that was designed by a friend of mine. I also ported it to it. It doesn't have like shades or colors, so I used different patterns of pixels to show there. Because it's only 8x8 display. And this is a prototype I made for a different conference previously that didn't work out in the end, but you can see it has more pixels and more shades of them. And accelerometer and so on and so on. So there are many, many different ways you can use the Pue Pue library. You can probably run it on any device that's capable of running micropyton. And I'm working on, in the future, on better versions of Pue Pue. So to make them even cheaper and even easier to use. So one thing I want to experiment with are displays. I will still display like huge pixels like now because that makes the games easier to make. You can make them in 20 minutes or something like that. But I still want to have display for displaying the errors. Because you don't always have this serial connection available and so on. So that's the future development. It will probably take me two years or more to make the next version. So don't worry. Your Pue Pues are not going to be obsolete anytime soon. And of course the circuit python people keep working on circuit python and improving it. Like this thing where you get error message on a display, display that has been only introduced like two months ago. Now it's working only for color displays. Now we are working on doing it for black and white displays again. Like the latest beta release, you can update your Pue Pues. If you go to circuitpyton.org, documentation has all the details how you do it. If you update it, they will get five times faster. Because the latest version of circuit python is five times faster than the previous one. So there is ongoing work improving the thing. Even if the hardware is already fixed, we keep on working on the software side of things. And I hope during the sprints tomorrow and on Sunday, we can work... Maybe someone will be interested in working on documentation and tutorials for it. Because that's what's missing obviously. You got those devices and you have no idea what to do with them. So there is a tutorial in the documentation. If you go, there is a URL on the back of the device. You can go there and have the tutorial. But we need more. We need lesson plans. We need examples. We need stuff like that. So hopefully we can work on that next. And that's everything I have. Thank you very much. Thank you. Thank you. Thank you. Thank you. Thank you. That's better. A comment in the question. The comment is what you have done is amazing. I just wanted to acknowledge that publicly. I think this is extraordinary. I was involved in the micro bit and that took loads of people, loads of time to get this funky device done. It's one person. It's extraordinary. Phenomenal. Really, really amazing. Stonking. Yes. Well... APPLAUSE So my question is, please can we have some form of networking so that with Pew Pews we can play against each other? Yes. I know this is an old school thing, but if you go to the documentation, there is a mailing list in there that you can subscribe to. The address of the mailing list is actually pewpew at python.org. So it's easy to remember. And it's open for everyone to subscribe to. We have about a dozen users right now in there. There is no traffic at all. Once a month I post an update about what has been happening with Pew Pew related things and that's it. Maybe there is sometimes some discussion after that in the thread. But however, don't be intimidated by that. We are completely open for any questions about helping people, about, you know, organizing workshops, whatever. So that mailing list is there for that. Thank you very much for reminding me to say about that. And of course there is a Discord channel that Adafruit is running for everything circuits python, including the Pew Pews. So if you have any problems with Pew Pews or circuits python in general, come to that channel. It's super friendly. There is a meeting every week on Mondays in the voice chat. So people, like the developer, you can talk with the developers basically. I meant networking not in the sense of online and being a community together. Although it's wonderful to hear that all this stuff is going on. I meant networking as in I can sit next to this lady here and I can go, hey, do you fancy a game of blah blah blah. We have networking. Sorry, that was my fault. I should have been more specific. But you reminded me about something. I forgot about something. Communication is a tricky thing, especially if you have a workshop or a conference. If I put an ASP266 on every Pew Pew here, we wouldn't have internet anymore. So it's a tricky thing to do. I'm thinking about infrared things or something like that. But this is additional research I have to do. I have to see what works, what not. And yeah, I'm making no promises. You can always connect things to this connector on the back and have like radio module or whatever there. So... And it's always nice if someone else comes up with expansion modules for it, for things they were missing. So it's always, it's also a nice thing to have, you know, expander on the back. So if you are interested in doing, I'm happy to help. So that's another question. Have you thought about adding a case or producing a case that I could buy? So yeah, the small one. I'm not going to show it now. This one. Actually has a laser cut back that you can screw with those screws. And that's kind of like a case. And there are some people who designed on thingy version like 3D printed stuff. I don't have a 3D printer, so I didn't test them. So... Okay, thank you very much. Thank you, Roger Mayor.
 One moment while I find my presentation.  Here it is.  Slide show.  Start.  Okay.  I'm going to talk about game development and I'm going actually to talk about full stack  game development.  That means that you have to start with developing the platform you are going to write the game for.  So, Azure disclaimer at the beginning.  That's not my drop.  This is my hobby.  All the opinions are mine.  I didn't...  The things I'm showing here and the things you received, I didn't make this alone.  I just assembled things that were already around there, done by other people.  So, I don't deserve full credit for everything.  This is not an advertisement for the things I'm doing and selling them, but I do sell them on Tinti.  So, if you are interested in having those things and not just tricked into buying them, you can buy them if you want.  Everything I do is open source.  If I didn't publish design files for some project I made, it's because I never finished it or I forgot to publish it.  You can always ask me and I will probably apologize and publish it then.  And the last thing is we have to remember that...  Well, I'm a young white guy in a very rich industry and I have a huge privilege of being able to do these things.  Let's remember that not everybody are in the same situation and that, you know, it's not just that I'm talented.  I just was very lucky to be in that position.  Okay, the whole idea that we have here is that we want to take a microcontroller running, hopefully, some kind of Python.  Add some display module and some buttons to it and have a game console for which we can then write games in Python, because we like Python.  And because writing games in Python for the PC is a bit trickier, especially if you want that game to be distributed  and to your friends to play them without having to install Python and Pygame and whatever.  So that was the idea. So I actually started with MicroPython trying to do that.  I started with the Pyboard which was released as a Kickstarter thing.  But I just didn't have the heart to actually leave it in my project.  So I reused it to different other projects.  It was just too expensive to tell people, you know, just get this Pyboard, connect some display and buttons  and you can play my games.  So I wanted something cheap.  And then MicroPython had this Kickstarter for support, ESP8266.  And that was great.  And I jumped at that.  And, you know, there were a lot of things missing at the time because it was just being developed.  So, for instance, hardware SPI. You need SPI. SPI is a bus protocol that you use to communicate with the display.  And you need it in hardware because then it's fast.  And the ESP8266 port of MicroPython only had software one, so I had to copy it.  Basically, without understanding the C code, I copied that from NodeMCU and bashed it as for...  So as long until it started to work.  So I learned C in the process.  Kind of.  So, yeah, I was motivated back then.  But, you know, then the MicroBit came out.  And MicroPython got support to it.  So I thought, yay, finally there is a device that's distributed among a lot of people.  So if I write my games for it, I can tell people to just run it on the MicroBit and they will be able to play my games.  Great. However, when you actually look at it, it only has two buttons and it has 5x5 display.  So you can't even do Tetris on that.  You can do Snake if you use the buttons to turn left, turn right, or use the accelerometer or something.  So you would still have to connect things to it.  So I tried to make this shield for MicroBit with a proper display.  That's an OLED display and some buttons.  And a battery because then you can hide the battery inside and a small speaker in there.  And it actually works pretty well except that the MicroBit has so little memory  that you can't really write much of a game, at least in Python.  I mean, you can only write so many lines of Python until it stops fitting on the MicroBit.  And that actually made me stop doing that.  However, the same idea was picked up by some other people and there is this microgrammer thing that you incidentally can also buy on Tindy.  That's pretty much the same thing except instead of those screws, those bolts,  they used a proper MicroBit connector and stuff like that.  And it's bigger and nicer.  The thing they did right is that they actually ported the Arduboy games to the MicroBit  because that's C++, it fits in there much better and it's much faster.  So that worked for them.  I still wanted Python.  Oh, by the way, a little interruption.  What software I'm using for all of this?  I'm a complete amateur, I'm a hobbyist.  So I didn't really manage to... So I couldn't afford to buy Eagle or Altium or whatever professional software people are using.  And Kaikat wasn't really very usable back then and it's still not very user-friendly in my opinion.  But it's much better now, so probably it's getting there.  So I used Freezing.  Freezing is probably most of you know it from those diagrams for breadboard schematics in tutorials and stuff like that.  But actually Freezing has more tabs on the top and more views in there and you can switch between them  and you can make a schematic in it and then make a PCB.  And it's super easy because it's just drag and drop.  It's not like Kaikat where you have to select this with mouse, then press this letter, then select something from that menu  and you have to memorize all of that.  In Freezing you just see everything and you just drag and drop things.  Of course it's much more primitive.  It doesn't have as many options for professional design, but it's enough for me.  And since Freezing uses SVG images internally, you can use it with Inkscape to for instance draw the outline of your PCB.  Then the fabrication house will cut it in that shape and it's great for things like budgets or decorations and stuff like that.  Also in images you want to put on the PCB in Eagle or in Kaikat you have to do some strange plugins or scripts  that will convert it into the right format, let's import it.  In Inkscape it's just SVG5, so that's great.  And for code I use Vim.  No comments.  Okay, so I tried to make my own better microbit.  And the way I did, I took one of those modules with 8x8 LED display because 8x8 is already better than 5x5, right?  And I actually picked one that has two colors of the LEDs, so there are actually 16x8,  but there are two LEDs in every pixel.  They are green and red, so you can have black, green, red or yellow if you switch both of them at the same time.  And some buttons.  And I made this shield for Adafruit feather boards.  Adafruit has this range of boards they sell and one family of them is called the feather, the feather wing.  The feather wing is actually the shield that comes on top of that.  I think they are very like the perfect size for me and the pinout of it, like the what pin does what.  It's really actually designed with makers in mind.  It's not like Arduino where it just happened.  Someone actually sat down and thought what would be best.  So I really like them.  They also have like a battery charger built in and the battery socket and so on.  So it's really convenient for stuff like that.  So I made that and it comes on any Adafruit feather board.  So initially I used that with ESP8266 again and with MicroPython.  And it works very well.  Adafruit has forked MicroPython to make their own version of it.  They call it circuit Python.  And it's a friendly fork.  It's not like there is they are fighting with MicroPython.  They are actually pulling all the changes from MicroPython once in a while from upstream.  And they are also reporting bugs and you know, this is cooperation, not a combat.  So the difference is that Adafruit really wants, since they are selling things for hobbyists, not professionals,  they wanted to really take MicroPython and make it super simple, super easy for professionals.  So they focus on the first 10 minutes of interaction.  And one thing they did that makes it incompatible with MicroPython is they took the AP,  all the hardware APIs and they made them consistent on all of the boards.  So on MicroPython, depending on what board you are using,  MicroPython on the micro bit is completely different than MicroPython on the pie board  and ESPA266 is even more different from that.  So depending on what you are using, you have to actually rewrite all your programs.  And Adafruit didn't want that because they have a lot of learning materials  that they didn't want to have in 10 different versions for 10 different boards.  So they made that consistent.  And the other thing they did, they made the boards work as USB drives.  Actually, pie boards does a similar thing.  And so when you connect it to the computer, it just comes as a USB drive.  This is great because that doesn't require any drivers.  And you just can see the files in there.  So you can just click on them and edit them with any editor.  And that's the thing they also added.  When you save, it restarts.  So it automatically runs your code without you having to do anything.  You don't have to click anything.  It just restarts every time you save.  And if you use the excellent new editor, you even get the serial console connection  so you can actually see the Python or Apple and you can see the error messages in there and so on.  So it's really a nice solution compared to some other things that are available on the market  where you need special software, you need special hardware even sometimes,  like USB to TTL converter and so on.  So that simplifies workshops.  But I didn't stop there.  I started to experiment with proper displays, like real stuff.  And I was trying to get sprites and tiles working.  One challenge is that there is not enough memory to keep all the images in memory.  So there were tricks used.  And I made this thing, which is the micro game, which lets you create real games,  like real, with graphics and sound on which circuit Python.  It's a bit of a constrained platform, so you cannot have scrolling, for instance,  because it's not fast enough to update the whole screen on every frame.  It only updates fragments of it.  So as long as you don't have scrolling, you only have several moving objects, it's fine.  And then I went back to that shield I made for the feather and said,  okay, a feather wing, a feather board from other fruit costs about $25.  My shield costs $10 and you need probably a battery for $5, so you pay $40 for a simple toy.  And I was thinking at that point about running workshops with that,  and I thought, no, that's too much.  Nobody is going to pay for that.  And moreover, only rich people will come and I don't want to make toys for rich kids.  I want to make things for workshops with everyone.  So I started experimenting with, actually, I both the same microcontroller that Adafruit has used,  the same chips there.  I connected it together looking at their schematics and I got it to work.  That was really exciting.  So the next step was I designed a number of prototypes.  There were more than you can see here, but some of them I disassembled for parts for the next one.  So I'm going to skip that.  And ultimately I produced this thing, which is the same thing except it uses a monochrome display  with shades of the color instead of color because that's cheaper.  It only has like three electronic elements on it because that's how I managed to remove everything that is not necessary.  It's powered with batteries and it costs about $10 if you make it in singles.  If you make more of them, it costs proportionally less.  And I had a presentation about that, I thought of them this year.  And also I made a bigger version with a bigger matrix, which is electrically the same.  And that might actually look familiar to you.  So I had a Fosnamp presentation this year and after the presentation, Mark Andre,  one of the organizers of Europitone came up to me and asked,  would I like to run workshops with that on MicroPython?  Oh, no, Europitone.  And I said, sure, I would be delighted to.  But how do we solve the problem that I have to give people hardware?  I wouldn't want to pay for it myself.  So either the conference pays for it or the people who come pay for it somehow.  And so then after some checking things and so on,  Mark Andre came up with this idea of just give it to everyone on the conference.  They don't have to come to the workshops, they can even hack on it by the sales.  And it's still a great way of learning Python or having fun with Python at least.  So we did that.  We produced like 1400 of them.  And yeah, so that's basically the story.  If you are interested in technical details, I skipped some of that,  but you can find me and also during the sprints we can talk.  And the last thing is the Pule library is actually ported to many devices.  It's not just on the Pue Pue.  So you can run it on your computer.  Probably you have seen the Pumeulator already with Pygame.  But you can also run it, this is a lame boy device that was designed by a friend of mine.  I also ported it to it.  It doesn't have like shades or colors, so I used different patterns of pixels to show there.  Because it's only 8x8 display.  And this is a prototype I made for a different conference previously  that didn't work out in the end, but you can see it has more pixels and more shades of them.  And accelerometer and so on and so on.  So there are many, many different ways you can use the Pue Pue library.  You can probably run it on any device that's capable of running micropyton.  And I'm working on, in the future, on better versions of Pue Pue.  So to make them even cheaper and even easier to use.  So one thing I want to experiment with are displays.  I will still display like huge pixels like now because that makes the games easier to make.  You can make them in 20 minutes or something like that.  But I still want to have display for displaying the errors.  Because you don't always have this serial connection available and so on.  So that's the future development.  It will probably take me two years or more to make the next version.  So don't worry. Your Pue Pues are not going to be obsolete anytime soon.  And of course the circuit python people keep working on circuit python and improving it.  Like this thing where you get error message on a display, display that has been only introduced like two months ago.  Now it's working only for color displays.  Now we are working on doing it for black and white displays again.  Like the latest beta release, you can update your Pue Pues.  If you go to circuitpyton.org, documentation has all the details how you do it.  If you update it, they will get five times faster.  Because the latest version of circuit python is five times faster than the previous one.  So there is ongoing work improving the thing.  Even if the hardware is already fixed, we keep on working on the software side of things.  And I hope during the sprints tomorrow and on Sunday, we can work...  Maybe someone will be interested in working on documentation and tutorials for it.  Because that's what's missing obviously.  You got those devices and you have no idea what to do with them.  So there is a tutorial in the documentation.  If you go, there is a URL on the back of the device.  You can go there and have the tutorial.  But we need more. We need lesson plans.  We need examples. We need stuff like that.  So hopefully we can work on that next.  And that's everything I have.  Thank you very much.  Thank you.  Thank you.  Thank you.  Thank you.  Thank you.  That's better.  A comment in the question.  The comment is what you have done is amazing.  I just wanted to acknowledge that publicly.  I think this is extraordinary.  I was involved in the micro bit and that took loads of people,  loads of time to get this funky device done.  It's one person. It's extraordinary.  Phenomenal. Really, really amazing.  Stonking.  Yes.  Well...  APPLAUSE  So my question is,  please can we have some form of networking  so that with Pew Pews we can play against each other?  Yes.  I know this is an old school thing,  but if you go to the documentation,  there is a mailing list in there that you can subscribe to.  The address of the mailing list is actually  pewpew at python.org.  So it's easy to remember.  And it's open for everyone to subscribe to.  We have about a dozen users right now in there.  There is no traffic at all.  Once a month I post an update about what has been happening  with Pew Pew related things and that's it.  Maybe there is sometimes some discussion after that in the thread.  But however, don't be intimidated by that.  We are completely open for any questions about helping people,  about, you know, organizing workshops, whatever.  So that mailing list is there for that.  Thank you very much for reminding me to say about that.  And of course there is a Discord channel that Adafruit is running  for everything circuits python, including the Pew Pews.  So if you have any problems with Pew Pews or circuits python in general,  come to that channel.  It's super friendly.  There is a meeting every week on Mondays in the voice chat.  So people, like the developer, you can talk with the developers basically.  I meant networking not in the sense of online and being a community together.  Although it's wonderful to hear that all this stuff is going on.  I meant networking as in I can sit next to this lady here and I can go,  hey, do you fancy a game of blah blah blah.  We have networking.  Sorry, that was my fault.  I should have been more specific.  But you reminded me about something.  I forgot about something.  Communication is a tricky thing, especially if you have a workshop or a conference.  If I put an ASP266 on every Pew Pew here, we wouldn't have internet anymore.  So it's a tricky thing to do.  I'm thinking about infrared things or something like that.  But this is additional research I have to do.  I have to see what works, what not.  And yeah, I'm making no promises.  You can always connect things to this connector on the back and have like radio module or whatever there.  So...  And it's always nice if someone else comes up with expansion modules for it,  for things they were missing.  So it's always, it's also a nice thing to have, you know, expander on the back.  So if you are interested in doing, I'm happy to help.  So that's another question.  Have you thought about adding a case or producing a case that I could buy?  So yeah, the small one.  I'm not going to show it now.  This one.  Actually has a laser cut back that you can screw with those screws.  And that's kind of like a case.  And there are some people who designed on thingy version like 3D printed stuff.  I don't have a 3D printer, so I didn't test them.  So...  Okay, thank you very much.  Thank you, Roger Mayor.
Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_0_707.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_708_1079.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_1080_1175.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_1176_3479.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_3480_3527.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_3528_7571.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_7572_9299.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_9300_9527.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_9528_9875.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_9876_10715.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_10716_13139.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_13140_13535.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_13536_14315.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_14316_14831.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_14832_15911.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_15912_15959.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_15960_16007.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_16008_20111.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_20112_20447.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_20448_21935.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_21936_22655.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_22656_23987.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_23988_24683.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_24684_25535.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_25536_25907.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_25908_26135.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_26136_26231.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_26232_26771.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_26772_27023.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_27024_27539.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_27540_27827.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_27828_29291.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_29292_29831.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_29832_30287.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_30288_34067.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_34068_36635.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_36636_36707.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_36708_37091.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_37092_37487.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_37488_38243.png Radomir_Dopieralski_-_Game_Development_with_CircuitPython_3lACaWE9h7M_38244_39294.png