Microsoft MakeCode

Having a Blast with MakeCode Arcade!

Hi, all!

I posted this over on Yammer, and @peli asked me to make a post over here, too.

I have been having a blast playing with MakeCode Arcade the past few months… Spent the past few days creating a rendition of the classic Breakout arcade game … and only using the blocks interface. It works quite nicely…! Looking forward to playing the games on a BrainPad Arcade once that’s in production!

3 Likes

@peli asked me to provide some feedback, and I did. Here is what I came up with:

Keep in mind that my intention is to build a CS0 course using just the block interface. So, a lot of my feedback stems from that perspective. Some of my feedback is related to MakeCode itself; the rest will be about MakeCode Arcade specifically.

I love the premise, and the MakeCode interface is really easy to use. I really love the Arcade adaptation of PXT; there is some really clever stuff there. It’s just a lot of fun! The documentation has really shaped up, and I find that I’m using it frequently. Major kudos to the team on the great work so far on documentation. Keep it up!

Using screenshot PNGs as your import/export format is absolutely brilliant. Whoever came up with that: mad props.

I know you’re working on making an entire set of blocks that deals with animation. I’m looking forward to that. Edit: Now available as an extension!

I’d like to have the ability to rotate sprites (a la Asteroids and SpaceWar). I’m planning on creating an extension to deal with that, but it would be lovely to have that built into Arcade. :slight_smile: Edit: I’ve created an extension for this; see response, below.

The one thing that I can’t teach very well with blocks is variable scope, since all created variables get global scope. I can talk about local scope with some of the event handlers, which is good. I’d love to see functions be able to take parameters and to be able to define local variables (or member variables … depending on where they are implemented) in MakeCode, though. I know that’s more of a core PXT request. Version 0.8: You can create functions with parameters now!

Also something really picky: When detecting an overlap with a wall, can you create a variable that indicates which tile in the map was hit? For my Breakout clone, I had to guess. It works … most of the time. :slight_smile:

Another really picky thing: Can you overload the join function in the Text blocks to accept numeric variables in addition to strings? I don’t see a way in blocks to join a string with a number to use, say, in a speech bubble. See response below.

I can’t begin to tell you how excited I am for BrainPad Arcade, too. And it’s made in my home state of Michigan! Love it!

Brilliant product. Keep up the hard work!

Scratch that. The join block seems to work just fine with both strings and numbers. I must have been using something else … maybe the + operation (which is a no-no).

I can hardly wait for your new game…:face_with_symbols_over_mouth:

1 Like

When it comes to rotating sprites, it’s a quite difficult task given the resolution of the sprites. I’ve implemented an algorithm called RotSprite that rotates low resolution images in a way that is more aesthetically pleasing than traditional rotations. You can add it as an extension with the url: https://github.com/ChaseMor/pxt-arcade-rotsprite.

Here is an example of this extension

It’s a pretty basic implementation though. There’s definitely some optimizations that can be made.

For an asteroids-type game, it would probably be better to use vector graphics. I started an extension for this, but ultimately became busy with other things.

I can revisit and finish both of these (especially since they only work for JavaScript) if there is demand for them though.

3 Likes

I’ve taken inspiration from @ChaseMor and created an extension for some image transformations (scaling and rotation). You can use the extension both in the blocks interface and in the JavaScript interface. The extension adds blocks under the Advanced section.

I’ve been looking forward to creating extensions for a while now, just to see how that process works. It’s stunningly simple, given the excellent Monaco code editor and GitHub integration that are built into PXT. You really don’t even need to leave the MakeCode environment to pull it off. Pretty amazing!

If you’re interested, you can pull my extension into your Arcade MakeCode projects from

You can see an example of the extension in action at

I’ll eventually cleanup the README a bit more and implement the suggested TODO items. I’ll also be using this extension in my Asteroids and Spacewar! clones. More on those soon.

Have fun!

3 Likes

OMG!!! Thank you so much for this extension. It’s exactly what I’ve wanted!

It took me minimal time to create this tester.

Thanks!

1 Like

Happy to help, @Mr_Noonan! Glad you’ve found the extension useful. If you notice any problems or would like to see any changes or additions, just let me know.

1 Like

Hey! I’m pretty new to arcade (started learning on microbit) and was fairly shocked to find the absence of a sprite rotation option. Low and behold while looking through other projects I find spacewars, with rotating spaceships and an option for rotation. i need an So, I copy over the code for rotating so i can look it over and work it into my project when I find out that extension for “sprite transformations”. Yet, nowhere can I find this extension. If you could provide me this extension so I can finish my work, that’d be awesome!

Sincerely, a wide eyed learner.

Hi, @TJcorp !

If you scroll up a few posts, you can see a link to the extension in GitHub. You can import the extension with that URL. (You just paste it into the search box when searching for an extension.)

You can find a list of all of my games and extensions here:

https://sites.google.com/site/akulcsarsite/makecode/makecode-arcade

If you need additional assistance, feel free to ask.