What is the next step to learning video game programming after Arduboy?


(JohnnydCoder) #1

I was wondering what the next step to learning video game programming is after the Arduboy. Do you think something like GameMaker would be a good thing to try or would you recommend something else?


(Holmes) #2

Excellent question!

There’s a few directions that you can go in… I’ll order these in order of how complex they are and how different they are from Arduboy development:

  • C/C++ SDL - You can actually write C++ games for Windows/macOS/Linux, too. In fact, someone wrote a vague tutorial for porting over Arduboy games to Windows, etc. Check it out, here: https://github.com/djspig/arduboy-sdl2 Maybe someone can go back and help update this for beginners.
  • Pure JavaScript - (2D) You can use JavaScript to do a lot of stuff. Mozilla did a cool tutorial to teach how to program Breakout using JavaScript in the web browser. If you have no HTML background, don’t stress too much if you don’t understand everything about the web stuff. The JavaScript stuffi s what’s important. https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript Once you do this tutorial, you can experiment and make your own kinds of games.
  • Stage.js - (2D, JS) Using Pure JavaScript will have its disadvantages. There’s some cool features some game engines include. If you feel comfortable enough doing JS stuff in the tutorial above, you may want to check out a JS game engine like Stage.js. http://piqnt.com/stage.js/
  • Game Maker - (2D, GML) Sometimes seen as good for beginners, but it is very different than Arduboy development. However, it’s somewhat of a good bridge between previously-mentioned and what’s next on the list. https://www.yoyogames.com/gamemaker
  • Unity - (3D or 2D, C#) - Often considered to be less complex than Unreal, but can handle 3D well for beginners. There are a lot of tutorials for Unity and it’s free. https://unity3d.com/ It uses a language called C#, which will be similar to C++ and have some concepts you may have seen in JavaScript.
  • Unreal - (3D or 2D, C++) - Has been the industry standard for some time. AAA games are often-times made with this. It’s free, as well, and there are some resources and tutorials out there for free that you can find. https://www.unrealengine.com/en-US/what-is-unreal-engine-4 Unreal uses a fleshed-out version of C++ that includes a lot of cool features.

It’s always helpful to learn the programming languages needed for the game engines, as well. Doing a few simple JavaScript tutorials, for example, before doing a game-specific tutorial will help you understand the differences between the languages that you already know and the one you will be using. :slight_smile:


(Pharap) #3

I would recommend anything but Gamemaker.
I have a deep and personal loathing of Gamemaker.
It has some very weird behaviour and the language was designed by someone who probably never studied language design.
The less said of its “everything’s a double” mentality, the better.


SDL2 is a very good C library for making games.

It’s a “hardware abstraction layer”, not a game engine in itself, so it’s something you use to build your game engine on top of.

In that sense, it’s quite a lot like the Arduboy library - it gives you very simple building blocks to work with and you can build them up yourself.
The downside is that it takes more work to do some of the more advanced stuff, but on the other hand it’s got quite a short learning curve compared to the more advanced game engines.

Despite being a C library, it’s pretty easy to use from C++, and if you’ve learnt how to use std::shared_ptr you can set those up so you don’t have to worry about memory leaks.

There’s a good intro tutorial here:
http://lazyfoo.net/tutorials/SDL/

Combine it with something like Box2D and you can get some fairly decent stuff going.
I’ve never used it personally, but I’ve heard many good things about it.

I’ve also heard good things about Ogre, but I’ve also never used it personally.


If you’re willing to learn a new scripting language,
learning Lua and the Love2D engine is a reasonable option.
(Love uses SDL under the hood.)

Aside from the language difference, the API is quite similar to the Arduboy, but a bit more desktop oriented.


For anything C++, gamedev or general programming, keep an eye on my resource collection:


(I recommend not learning JavaScript because the language designer made what I think are some terrible design decisions. It’s only an accident of history that it’s managed to keep going for as long as it has.)


(Miloslav Číž) #4

Hmmm, depends, there’s many options. Some I can think of:

  • Python + PyGame library – super simple and straightforward compared to C/C++, yet still powerful. But you have to learn Python. But after C/C++ it’s a joy.
  • JavaScript in browser – similarly simple to Python, plus you don’t have to install anything, your browser is enough, and has debugging tools.
  • Godot engine – high-level, for 3D as well as 2D. It’s like Unity, but free and open-source. Very cool, check it out.

(Scott R) #5

Arduboy ~> Cool powerful stuff step ~> Extremely powerful stuff step~> Cramming the good stuff into Arduboy. Its the circle of life


(Matt) #6

It really depends on what your goal is. If your main goal is to make games quickly, then I’d say learning Unity is the way to go. Unity is so powerful that some people hardly write any code at all when making games in it. Hollow Knight is a great example. Absolutely amazing game, and was almost entirely made inside of Playmaker, a visual dev tool.

But if you are more interested in unique platforms, or learning different aspects of game making, you can go in just about any direction at all. Is there anything in particular that has caught your interest?


(JohnnydCoder) #7

I was thinking about something in between the Arduboy and 3d/complex 2d games.

All these look like great ideas! :grinning:

I look forward to trying some of these, and I still have a lot to learn before Unity or Unreal Engine. :wink:


(Pharap) #8

I definitely recommend SDL2 then. Basic 2D stuff on that is very easy.

It can be a bit difficult to set up, but if you’re using Visual Studio then I’ve made a template for it:

It’s got some handy instructions in the README.md.

If it works, you’ll get this code:

#include <SDL.h>

int main(int argCount, char * args[])
{
	SDL_Window * window = SDL_CreateWindow("SDL!", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 400, SDL_WindowFlags::SDL_WINDOW_ALLOW_HIGHDPI);

	SDL_Delay(1000);

	SDL_DestroyWindow(window);
	return 0;
}

Which opens a window, returns a pointer to that window, delays for 1000 ms (1 second), destroys the window and then exits.

If you’ve got a gamepad (e.g. XBox gamepad) then you can use that as a controller.

Sound processing, image loading and font rendering are a bit fiddly to get up and running, but most other stuff is easy to learn.

There’s the option to move onto 3D later, but you’d have to learn OpenGL for that.
(Or try something like Ogre, which probably handles all the heavy lifting.)