I’ve been looking through the forums for something to get me started with coding for Arduboy. I’ve completed the 7 part “Make Your Own Arduboy Game” from Crait and it was really cool. I’ve been looking through the Arduboy Magazine issues as well. I’m not sure where to go from here, i can somewhat read the language thanks to the courses from Crait, but I don’t understand enough to do anything really besides mildly edit the Pong game that was created in lesson 7. Are there some C++ courses or a list of commands specific for Arduboy detailing what they do and how to use them? I’ve looked through the Arduboy and Arduboy2 library README files and those didn’t really help. I could scour through source code of some completed games and see how things work, but I’m almost certain from the codes I’ve looked at so far that that’s still a bit over my head. I’m excited to learn how this all work and try my hand at making some games for the Arduboy, but I’m so lost. Any help for an enthusiastic noob with no C++ experience? (I’ve only got very mild Python experience and use the term “experience” loosely here.)
PM sent regarding a ‘yet to be released’ article I have that builds on @crait’s articles.
I’d say that Crait’s ‘make your own game’ series is a great place to start, and the arduino help pages themselves cover a good amount of the ins and outs of both the language and what can be done with the platform.
Is there anything specifically with the game that you have in mind that you have no idea where to start with? Making a complete game can be a complex undertaking and in general it’s much easier to break it down in to its component parts and get those working before bringing it all together.
I did really like that series Crait did. For practice I was messing with mixing stuff learned from lesson 7 with pong back into lesson 6 with the sprite and background. I set borders to the screen so the sprite couldn’t leave and inserted a bouncing ball. I got the ball to bounce off the left and right sides of the sprite properly but wasn’t able to figure out how to get the ball to bounce off of the top and bottom of the sprite. Just trying to practice messing with physics and stuff, I hadn’t started an actual game yet. I’ve got a couple ideas I’m interested in once I’m more comfortable though. I’ll have to look into some Arduino tutorials perhaps.
I really can’t help with C/C++ - I’ve been writing C since the compiler had an =+ operator, and want to continue liking OO programming so avoid C++. The limited ATMEGA hardware means many of the C++ extensions are only rarely used, so I can mostly get away with pretending it’s C. It might be easier to find a C tutorial and try that approach to get started.
The Arduino system is a Hardware Abstraction Layer (HAL) and a framework for running on the hardware. There are some good tutorials for it (look for stuff by Simon Monk or Becky Stern), but most of the ones I know are more focused on the hardware side of things than the software side. The online Arduino documentation is a good reference, but I’d like a list of all the available functions with a synopsis to read through just to have a rough idea of everything available.
The Arduboy stuff is a couple of classes that you instantiate to access the Arduboy specific hardware. I don’t think there is a good manual for it outside the source, and at this point that’s still a moving target. On the other hand, the headers provide that function list I mentioned, sort of. Once you’ve got a handle on C/C++, reading those works ok.
This is where the “pretend it’s C” approach breaks down. Instantiating objects and accessing features is C++ specific, and the headers are class declarations, so not C. So while that approach worked for writing random sketches for my hardware, it may not work so well for getting into the Arduboy hardware.
Personally I think that apart from stuff like EEPROM and reading from progmem, most of the Arduino tutorials are going to be of limited use, you’re better off looking at general C++ tutorials, even if they seem a bit daunting.
There’s lots out there, but the trick isn’t to just read one, it’s to read as many as you can to make sure you understand. When looking for tutorials, try to get one that focuses on the C++11 standard or later since it was a real game changer that added lots of handy features.
Otherwise there’s a handful of tutorials in the Arduboy magazine.
@filmote’s discussion of the development of his ‘Laying Pipes’ game springs to mind. Can’t remember which issues that was covered it but it was an interesting read.
Lastly if you don’t like reading the code to try to understand how a library works, the Arduboy2 library has a documentation webpage that you might find easier to navigate:
There are people here who can give much better programming advice than me I’m afraid… Whilst I’ve improved, I still feel like I’m just lashing stuff that works together. Sounds like you’re on the right track though;
As @Pharap mentioned above, the Arduboy2 library’s documentation is available online in HTML format and also as a PDF. It’s “distilled” and automatically generated from specially (Doxygen) formatted comments in the header files, plus from other sources such as the GitHub README file. It’s generally easier to use this than examining the raw source files. Although this documentation isn’t a tutorial, it gives details on all available Arduboy2 library functions and other information on its use.
I don’t consider the Arduboy2 library (or ArduboyTones or ArduboyPlaytune, which I’ve been maintaining) to be moving targets. I strive to keep new changes and releases backwards compatible. At this point, changes are almost always additions or optimisations, so it’s more of an expanding rather than a moving target. Any sketch written using the current library’s API with very likely compile with any future releases.
This is all really good information to know guys, I appreciate your help. I’ve got some reading to do lol