OPEN SOURCE GAMING BASED ON ARDUINO MAKE & SHARE GAMES
Vol. 1 Jan 2017
PLAY Featured game: EVADE by Modus Create Favorite games so far
LEARN Tips & Tricks with Team A.R.G New Year’s Resolution? Learn to make your own game with @crait’s Tutorials
Love the clicky Arduboy buttoms? Use your Arduboy as a controller to play games on your PC with @fuopy’s Arduboy Gamepad What libraries to download? Some help
ARDUBOY MAGAZINE Your monthly dose of all things Arduboy! Hello, and welcome to Arduboy Magazine. We are your monthly roundup for all things Arduboy. This is a brand new magazine dedicated for Arduboy. News, interviews and tips and tricks, we have it all! All of the team at Arduboy Magazine give you a warm welcome and hope you enjoy your stay. -@widehaslet
Thank you to this month’s contributors!
@JO3RI: Better known as TEAM A.R.G, some of Arduboy’s community favorite games such as Mystic Balloon and Shadow Runner are written by them, as well as their own Arduboy Game Loader, where you can easily upload your favorite Team A.R.G games without using the Arduino IDE. http://www.team-arg.com/
@crait: Creator of various Arduboy games such as Circuit Dude and Train Dodge, crait has written tutorials on how to get started with creating your own game, and developed Arduboy Manager; an easy way to upload games to your Arduboy without using the Arduino IDE. http://www.crait.net/
@Dmian: This talented graphic & web Designer from Madrid, Spain created the Magazine’s Logo and various icons. https://damianvila.com/
Do you wish to contribute? Have an interesting article you wish to share with the Arduboy community? A cool project you did, your experience on working on it? A funny joke? We want to hear it! Reach out to the Magazine through Twitter DM @arduboymag Page 2 of 11
What’s happening at headquarters? @Celinebins The Arduboy Website has a new look! Team Arduboy is working on adding more features, for the site to be easy to navigate, and helping users find whatever information they need. A new page, “Frequently Asked Questions” is going to help new users navigate getting started with and basic troubleshooting their Arduboy without referencing to the community pages or sending an e-mail through the contact pages. Pro-tip: take your time to surf the site, and enjoy the rainbow graident!
Where to buy one? In order to better deliver the Arduboy to you, a distribution model for sales has been currently implemented. You can now purchase the Arduboy from a variety of different retailers from around the world!
Talk to us! Page 3 of 11
ame G d
EVADE by Modus Create
Modus Create, a product studio based in the US, gave their customers a very special Christmas gift for the year end of 2016. Not only a custom engraved Modus Create white Arduboy, but also made their own custom game - EVADE. Theme of the game? Youâ&#x20AC;&#x2122;re the sole survivor from a space colony who had been decimated by an alien invasion. Your only mission was to escape and evade (the enemy). Four design staff and six of their senior developers managed to create EVADE within 4 weeks, working together to tackle Arduboyâ&#x20AC;&#x2122;s limitation of 32KB of storage. Try it out for yourself here.
Want us to feature your game?
Tweet them a photo of your high scores using the hashtag #evadehighscore.
Write in to us with your game, how you made it, and anything else you want the community to know! Page 4 of 11
*Most downloaded based on clicks from community posts
3 Most downloaded* games so far by @widehaslet
1. CrazyKart by @Alberto Simple and fun linear racer! Start the race and dodge the other racers as your speed picks up. Exclaimation marks warn you where the other racers will appear. If you hit them you will slow down and lose a life.
Uploaded: February 2016 No. of downloads: 1.9k
2. Glove by @fuopy
Uploaded: June 2015 No. of downloads: 1.6k
Defeat the bad guys by shooting at them, discover new routes by unlocking gates with keys, collect hidden treasure and get to the finish with a new high score! Will you discover and conquer all 30 uncharted rooms?
3. Chrome Dino Scroller by @flaki Everyoneâ&#x20AC;&#x2122;s favorite Chrome Dino is now fully offline. Make sure Dino can run as far as possible by jumping over the catus obstacles, otherwise he will trip and fall. No highscore is saved and a new game will automatically boot up.
Keep your eyes peeled on the community pages for Favroite Games Polls soon!
Uploaded: October 2015 No. of downloads: 1.4k
Page 5 of 11
In this topic we would like to present you some tips & tricks to help you code your games for Arduboy. What we present doesn’t intend to be the absolute truth, it’s just a way we at TEAM a.r.g. code. So always remember, these are not golden rules.
s k c i r T Tips &
by TEAM A.R.G
#1 - Using multiple files
In this first edition I would like to start with the very first thing I taught myself, when I started coding on Arduino (the platform Arduboy is based on): use multiple files. When you start coding a game/app you will always start small, with a few lines, but that will grow fast while adding code into one big file. I found it unpleasant to have to scroll through hundreds of lines of code, so I started looking for a solution, which I found in “using multiple files” Assuming you’re using Arduino IDE for writing your code, but the idea is the same for any other program you use, you can add a new tab (file) to your game/app by clicking on the little arrow on the right side of the IDE and choose “New Tab”. Let’s do this and call this tab: globals.h Now if you save your game/app and check the folder you saved it in, you’ll see an extra file called globals.h In the IDE you can switch tabs (files), by clicking on them. We will use the globals.h to put all global includes, defines, variables and sometimes functions.
Before we write anything into the file, we always put this 2 lines of code at the very beginning of our file: #ifndef GLOBALS_H #define GLOBALS_H
end at the end we put: #endif
Always use capitals and the exact same name as you used for the file itself and end that with _H We will also have to tell our compiler to include this global.h file when compiling. You do this by adding the next line to the top of the main file (the .ino file), the tab (file) with the name of your game/ app: #include “globals.h”
Before we continue, let’s explain this header file. A header file is a file with extension .h which contains C/C++ function declarations and macro definitions to be shared between several source files. There are two types of header files: the files that the programmer writes and the files that comes with your compiler. to be continued next page >> Page 6 of 11
Now all C/C++ programmers will tell you, you’ll also need a .cpp file. In the .h file you create and in the .cpp you would use what you created in the .h It is up to you, if you do this or not. We generally don’t, but if you look at our game “Virus LQP-79”, you see that every .h as a companioning .cpp file. Let’s continue with our globals.h file, by including other header files (make sure you have the Arduboy2 library installed): #include <Arduino.h> #include <Arduboy2.h> #include “bitmaps.h” Arduboy2Base arduboy; Sprites sprites; Because, you now have included Arduino.h and Arduboy2.h in your globals.h file, you no longer have to do this in any other file you’ll create (assuming you do include globals.h in every new file). If you look closely, you’ll see we also included bitmaps.h This means we will have to add another tab(file) named bitmaps.h You can use this file to include all your converted images. Because you added this into globals.h and you will add the #include “globals.h” in every new tab(file) that you make (but not in the bitmaps.h itself, the compiler will always know where to find the images, you use. The bitmaps.h should look like this to start with: #ifndef BITMAPS_H #define BITMAPS_H #endif
This is how we split out different parts into different tabs(files). In the games we make, we usually have this set of tabs (files): - globals.h -
bitmaps.h player.h enemies.h objects.h game.h
Don’t forget you will have to include every .h file in the main file (the .ino file) except for the bitmaps.h, because that one is already included in globals.h Also, if you for example use functions in game.h that you have created in player.h, you’ll have to include player.h in the game.h tab(file) too.
Voila, this is how we split out different parts of the game into different files. This helps us to navigate through all the functions,defines and variables in a more convenient way. It’s also easy to copy paste a file into the folder from another game. Just copy the .h file you like into the folder of your game and then open the .ino file in the IDE, all other files in that folder will be opened as different tabs.
Have fun coding your games and next time we’ll talk about #define and why we use those and also about the naming of variables, functions and defines. Page 7 of 11
Game Design Tips by @crait
Programming a video game can be fun, but once you create a few games, sometimes you can feel burnt out and not really know what to do next. Maybe you’re a beginner and you don’t really know how to come up with your own game. Either way, you can follow this guide to help come up with a game concept. In this article, I’m going to go over the most popular methods for creating a video game concept: Stealing, Mixing, Experimenting, and Design. When I come up with games, it’s usually a mix between all of these. I’ll go through what each of these methods are in a second, but first, let’s talk about feasibility. Feasibility is how easily and likely an idea can be implemented. Whenever you design a video game, you need to take these into account. Programming a dialog-heavy 3D open-world MMORPG on your own would be very difficult and definitely beyond the capabilities of a lot of new developers. Because of the Arduboy’s technical limitations, even for amazing programmers, some bigger games are just not feasible on the system. So, whenever you design a game, you also need to take into consideration which platform you’re developing for. Okie dokie, let’s talk about the stealing method. It sounds bad at first, but this is actually a pretty broad idea so just bear with me. What usually comes to mind is taking another person’s game idea and just re-creating their idea. This is usually frowned down upon and may not even be legal, depending where you live. However, there’s a distinction between “stealing” and what I’m going to talk about. Porting is re-creating a game on a smaller platform like the Arduboy. Typically, a ported game will come out way differently. For instance, if you ported Dig Dug, the game you end up with will play and look differently than the original. Porting is under the umbrella concept of stealing, but is absolutely fine as long as you have permission to re-create the game.
In the original Pokemon games, there are some locations that you cannot pass through without first sliding around on ice. These locations are like puzzles and can be difficult (but fun) to attempt. Even though the games are about fighting monsters, this small mechanic was borrowed from an even older video game that was a series of puzzles that were your puzzle piece slides around. Another aspect of stealing is using another game’s idea or mechanic and implement it it in a unique way. This is incredibly popular and most video games in some way use a previous game’s ideas. Even the concept of collecting monsters or fighting creatures in video games came before Pokemon ever came out. This brings me to mixing, which is a very fun method for people just starting out in game design. The idea is to take a few mechanics from other games and combine them to create new mechanics or gameplay elements. You can even mix two very basic games together. The example I like to give is taking the teleportation mechanic from Portal and putting it into Lemmings. Oh! What about, like, making Pong, but instead of using paddles, you have snakes that change size like in Snake? Try this, yourself! Maybe take a game mechanic that you like from a favorite game and mixing it with a game concept that you used to play as a kid and see what you get. The next method is experimenting. When I started making video games, I was pretty bad at programming. I would follow tutorials and make little programs or games, but didn’t really know what to do next. to be continued next page >> Page 8 of 11
I had game ideas, but I wasn’t good enough to program them. Instead, what I did was experiment with the code I was comfortable with. Take for instance, my Pong tutorial on the Arduboy forums. I try to explain well enough so that you understand what each line of code does. If you know how to make that game, you could try making a version with multiple paddles, or multiple balls, or maybe even some kind of enemy that eats the balls! Even if you aren’t able to program a Pong-like game, you could simply try programming a game with what you do know. Not all video games have to be considered fun. As long as you have a way to win or lose, your game is still a game. Try making what you can and changing it over and over again until you have something that is kinda fun to play.
Remember, the most important step in developing a video game is taking the first step and starting! If you never start programming your game, you’ll never get it done! The last method I want to talk about is design. This is the most formal method for creating a game. Stereotypically, you can imagine someone sitting down, planning everything out beforehand.... Coming up with several different mechanics as well as a theme that all fits together. If you want to create a game like this, there are a lot of resources online that you can find that will go more in depths in the steps of this process.... But maybe I’ll go over the more formal steps in the next issue. Until then, take care and be sure to share your game ideas on the Arduboy community forum!
Arduboy Gamepad allows you to map your Arduboy’s buttons to keyboard keys, so you can play PC games with your Arduboy buttons.
Check out Colin from Let’s Talk Retro walking you though on how to do the set up with a PocketChip
Tips: - You can save up to five mapping configurations. - Alphanumeric, function and modifier keys are supported. - To exit from gamepad mode back to the main menu, turn the Arduboy off and on again.
Page 9 of 11
Videos and reviews
by the arduboy community
Been seeing some issues that the newer members of the Arduboy community has been having some problems with uploading games and getting around the Arduino IDE and the different libraries. The Quick Start Guide runs through the steps on how to get your Arduboy ready, but if you are more of a visual person, here are two videos from Roanoke Hobby Online to get you started with game uploading, and code tweaking!
Part 1 reviews the steps to upload programs (Sketches) with the Arduino IDE.
Part 2 uses the Arduino IDE to upload and see how game codes can be changed to improve the game.
Adding new libraries.. IMPORTANT NOTE: Install all the necessary libraries from the Arduino IDE directly On the top of the Arduino IDE click Sketch > click Include Library > Manage Libraries This will open the Library Manager.
In the search box at the top enter Arduboy. Install the below listed: Arduboy Arduboy2 ArduboyTones ArduboyPlaytune ArdBitmap ArdVoice ATMlib
Page 10 of 11
Show us your Kitties! Post your photos with Arduboy on Instagram and Twitter with #arduboy. We want to feature them in this segment!
Thank you for reading the Magazine! Hope you enjoyed it as much as we did putting it together. We want to know how to make Volume 2 better than the first, so write in to us to tell us what you think!