Contributing extensions
Thanks for considering to contribute to Awesome Arcade! Submitting an extension will allow others to find it, helping others in their game making process!
There are two main ways to contribute extensions to Awesome Arcade: Issues and pull requests.
Submit an issue
The GitHub repository that hosts the source code for Awesome Arcade accepts issues on new extensions! You can use the new extension issue template to help you quickly file an issue for me to add an extension to the list.
Please insert the relevant information, replacing the brackets as necessary.
For example, if I wanted to contribute riknoll's arcade-mini-menu extension that helps you use menus in a MakeCode Arcade game, I would choose the "New extension" issue template:
![A picture of the issue submission form to the Awesome Arcade GitHub repository using the new extension issue template, unmodified.](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fempty-new-extension-issue.8a5ac021.png&w=3840&q=75)
And then I would fill out the template with information, like this:
![A picture of the issue submission form to the Awesome Arcade GitHub repository using the new extension issue template, modified for the title to say "Add extension https://github.com/riknoll/arcade-mini-menu" and the post content to say: GitHub repo: https://github.com/riknoll/arcade-mini-menu Forum post: https://forum.makecode.com/t/arcade-mini-menu-extension/14368?u=unsignedarduino Demo: https://riknoll.github.io/arcade-mini-menu/ Description: This extension is a much more advanced and highly customizable version of (the now depreciated) `arcade-custom-menu` that has tons of options to customize your menus to fit your game's theme! The menu is also a sprite, which allows you to use all standard sprite blocks on it. This adds a category to the toolbox called `Mini Menu`.](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ffilled-out-new-extension-issue-template.29c6e797.png&w=3840&q=75)
As you can see, the only required information is the extension URL (obviously) but filling out the other details will help me out. Thanks!
Submit a pull request
The GitHub repository that hosts the source code for Awesome Arcade accepts pull requests on new extensions! You can edit the extensions.xml
file to add an extension to the list. (Yes, it resides in an XML file.) Editing it will automatically fork the repository, afterwards you can submit a pull request to merge your changes into the main repository.
You'll see an XML file like this:
<?xml version="1.0" encoding="utf-8"?>
<allExtensions>
<extensionList label="Not built in">
<extension repo="jwunderl/arcade-tilemap-a-star">
<description>Help your sprites find their way around your tilemaps with this extension! Just provide 2 locations on a tilemap, and it will automagically compute the fastest path between the 2 spots while also moving around walls using the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)! This will add another section in the `Scene` category called `Path Following` in the toolbox.</description>
<links>
<url label="GitHub repo" isPrimary="true">https://github.com/jwunderl/arcade-tilemap-a-star</url>
<url label="Forum post">https://forum.makecode.com/t/tilemap-path-finding-a-beta/1846?u=unsignedarduino</url>
<url label="Demo">https://arcade.makecode.com/12103-88074-48013-42311</url>
<url label="Wikipedia article on the A* algorithm">https://en.wikipedia.org/wiki/A*_search_algorithm</url>
</links>
</extension>
<!-- More extensions... -->
</extensionList>
</allExtensions>
To add an extension, add it to the end of the <extensionList>
element.
For example, if I wanted to contribute riknoll's arcade-mini-menu extension that helps you use menus in a MakeCode Arcade game, I would add the following XML to the end of the <extensionList>
element like so:
<extension repo="riknoll/arcade-mini-menu">
<description>This extension is a much more advanced and highly customizable version of (the now depreciated) `arcade-custom-menu` that has tons of options to customize your menus to fit your game's theme! The menu is also a sprite, which allows you to use all standard sprite blocks on it. This adds a category to the toolbox called `Mini Menu`.</description>
<links>
<url label="GitHub repo" isPrimary="true">https://github.com/riknoll/arcade-mini-menu</url>
<url label="Forum post">https://forum.makecode.com/t/arcade-mini-menu-extension/14368?u=unsignedarduino</url>
<url label="Demo">https://riknoll.github.io/arcade-mini-menu/</url>
</links>
</extension>
Extension XML elements
Here is a sample using all the possible XML elements in an <extension>
:
<extension repo="user/github-repo">
<description>Some description about the extension's capabilities.</description>
<links>
<url label="GitHub repo" isPrimary="true">GitHub repo link</url>
<url label="Forum post">Link to forum post</url>
<url label="Demo">Link to demo</url>
<!-- There can be multiple links with any label -->
</links>
<forks>
<extensionRef repo="user/github-repo" />
<!-- There can be multiple forks -->
</forks>
<depreciatedBy>
<extensionRef repo="user/github-repo" />
<!-- There can be multiple extensions depreciating this extension -->
</depreciatedBy>
<inBeta asOf="some date">
Some description why.
</inBeta>
</extension>