A fun way to learn programming languages

A fun way to learn programming is to start learning is with a simple project. You can learn new languages and have fun by building a simple game. With each language you’ll find similar patterns and appreciate how scripting languages simplify, while languages “closer to the metal” give us the power to create highly optimized programs. 

Choosing a language to learn should fit your future goals. You should consider the size of the community, available open source projects, and the documentation for your language of choice.

Difficulty Levels

difficulty levels

Beginner Friendly

At this level, you should expect rapid feedback as you build your game. Typically you’ll use a scripting language that abstracts or hides all the complex bits. The framework must have thorough documentation explaining how to work with each component it has available. Bonus points if they also have complete example projects to review and learn from.

Intermediate

We’re leveling up here, which means you have some experience writing code but you’re mostly a hobbyist. At this level, you’ll most likely need help from the engine authors themselves or members of their community. The framework should have a place to ask questions or even contribute updates, i.e. their github page. 

Advanced

Now you’re playing with power! These engines give you the raw power of your device, from highly optimized physics engines to pixel shader effects. At this level, you should have a good grasp of memory management, algorithms, and 3D mathematics (Linear Algebra). 

Simple Game Ideas

  • Tic tac toe
  • Tetris
  • Pacman
  • Break out
  • Asteroids
  • snake

Lua

lua

Overview

Difficulty level – Beginner friendly

Lua is a fun way to learn programming. Lua is not just used in games. It’s designed as an embeddable scripting language. While you can embed other scripting languages such as python or javascript, Lua has proven that itself with its performance and small size.

solar2d

Solar 2D

Overview

Solar 2D, formerly Corona SDK, is an open source project that uses the Lua language. It gives you the option to build for multiple platforms from mobile phones to desktop operating systems. 

Out of the box you’ll also get components such as:

  • 2D physics engine
  • Graphics effects
  • Monetization options
  • Social Media plugins
  • Analytics
  • And so much more

Platforms

  • Mobile (Android / iOS)
  • Desktop
  • Connected TV devices
  • Web sites
roblox studio

Roblox Studio

Overview

Roblox Studio is another Lua game engine and platform that allows you to create 3D games and experiences. Roblox has over 50 million monthly players and is growing each day. It comes with its own toolkit that allows you to build and play your 3D world in one program hence being a Studio. 

roblox studio

Platforms

  • Desktop (Windows / MacOS / Linux)
  • Mobile (iOS / Android)
  • VR

Python

python

Overview

Difficulty level – Intermediate

Python strives for simplicity in its code. This simplicity is partly enforced by indentation in its syntax. Like all other scripting languages, it uses components built in C/C++ for performance. 

ursina engine

Ursina engine

Overview

Ursina engine gives you the power to build 2D and 3D games. Most everything in Ursina is focused on Entities. Entities describe the properties and logic for all objects in your game world. Ursina is a less opinionated framework, leaving it up to you to structure your code how you like. 

Platforms

  • Desktop
pygame

Pygame

Overview

Pygame offers a standard set of functionality for graphics, audio, and input handling from various devices including game controllers. The documentation is not for complete beginners and you will need to know what you’re looking for. Luckily, since Pygame is a mature library you’ll find tons of tutorials and examples to help.  

Platforms

  • Desktop
kivy

Kivy

Overview

Kivy is a modern framework and is built with the future in mind. This future includes mobile devices with multi-touch input and not just mouse/pointer interactions you find only on Desktop. Another great benefit is that Kivy is a well-funded project with professional developers actively maintaining and updating functionality while also being a free open source project. 

Platforms

  • Desktop
  • Mobile (Android / iOS)
  • Raspberry Pi

Licensing

  • MIT

Javascript

Overview

Difficulty level – Intermediate

Javascript is mostly found in your web browser powering interactive elements that standard HTML/CSS can not handle. Building your game with javascript allows you to reach a wide audience by publishing on your own site. Since it’s a scripting language, you can rapidly develop with quick feedback without having to wait for a compiler to finish. 

phaser

Phaser

Overview

PhaserJS is a 2D engine that gives you tools for graphics, audio, physics, and a lot more with plugins. You’ll also find that it has well organized documentation and tutorials to get you started. 

Platforms

  • Web
  • Mobile Web
pixijs

PixiJS

Overview

Pixi is the HTML5 creation engine and focuses mainly on 2D graphics. If you’re looking for a standalone graphics library, look no further. 

Platforms

  • Desktop Web
  • Mobile Web
boardgame.io

Boardgame.io

Overview

Thinking of making a turn-based game, boardgame.io has what you need. It has functionality that covers game state management, multiplayer, and player matchmaking.

Platforms

  • Desktop Web
  • Mobile Web
babylon.js

BabylonJS

Overview

BabylonJS is a physics based web rendering and 3D game engine and has everything you’d need to craft 3D animations and games. Babylon is also a build once / deploy anywhere solution that works for web, desktop, mobile using its native frameworks.

Platforms

  • Web
  • Mobile (iOS / Android)

Rust

Overview

Difficulty level – Intermediate

Rust is a system level language similar to C++ that also includes memory safety features without a garbage collector. Rust also works well with WebAssembly to give more power to your javascript projects. Similar to Lua, you’ll also get a small footprint that helps with resource constrained devices. 

bevy

Bevy

Overview

Bevy is an open source data driven 2D/3D game engine that gives you quick feedback for rapid development. Bevy also includes ECS (Entity – Component – System) objects to help you build composable games. 

Platforms

  • Desktop (MacOS / Linux / Windows)
  • Mobile (Android / iOS)
  • Web
amethyst

Amethyst

Overview

Similar to Bevy, Amethyst gives you an ECS based game engine that also has a massively parallel architecture. You’ll also get rapid prototyping for your prefab assets and lots of documentation describing all details of their core architecture. 

Platforms

Android – Kotlin

Overview

Difficulty level – Intermediate

Kotlin is a general purpose programming language that is most popular with Android mobile development and former Java developers. Kotlin eliminates a lot of the boilerplate code that was needed in Java. Similar to Ruby or Python, Kotlin code style ignores the need for extraneous syntax such as semicolons and gives you a lot of utility with its core data types. 

libgdx

libGDX

Overview

Craft 2D / 3D games with libGDX that gives you a mature (10 years in development) framework and a lot of features out of the box. With a large community you also get an assortment of third party libraries to fit your needs. 

Platforms

  • Desktop (Windows / Linux / macOS0
  • Mobile (Android / iOS)
  • Web
korge

KorGE

Overview

A 100% kotlin based engine, KorGE gives you a visual editor embedded into your IDE. KorGE gives you the power to build your own bundles through GitHub or use community bundles to include additional assets and features. You can also debug your game in real-time with its embedded debugger. 

Platforms

Go

Overview

Difficulty – Intermediate

Go was developed by Google in response to current technologies in 2007 (i.e. C++) that did not fit their needs for global scale applications. Those aspiring to work with such massive scale systems may have heard of Go but not in the context of building games. 

pixel

Pixel

Overview

Pixel is a 2D game engine using Go that’s under active development (pre 1.0 release). Pixel gives you all the essentials for graphics, audio, and input handling with more coming for its 1.0 release. Contributors are welcome to join their discord and submit code updates. 

Platforms

  • Desktop (Windows / Linux / macOS)
  • Mobile (coming soon)
g3n

g3n

Overview

g3n is a 3D engine using the Go language. It uses a scene graph design to render the world and process events. Contributors are welcome to join their discord and submit code updates.

Platforms

  • Desktop (Windows / Linux / macOS)
  • Web (using WebAssembly)

C / C++

Overview

Difficulty level – Advanced

C / C++ is the core language of most other scripting languages and has a long history used in all software from operating systems to games. C / C++ requires specialized knowledge and care to build a solid framework that accounts for memory management, efficient algorithms and API design. 

SDL

SDL

Overview

Simple DirectMedia Layer aka SDL gives you low level access to your device’s graphics, audio, and input hardware. You can include code from other languages such as Go, Python, Lua, and Rust through SDL’s bindings. 

Platforms

  • Desktop (Windows / Linux / macOS)
  • Mobile (Android / iOS)
oxygine

Oxygine

Overview

Oxygine is a pure C++ game engine that uses a scene graph design. Built on top of SDL and Marmalade, it also includes an embedded profiling tool to inspect your scene graph and performance. 

Platforms

  • Desktop (Windows / Linux / macOS)
  • Mobile (iOS / Android)
  • Web
unreal engine

Unreal Engine

Overview

Unreal Engine is one of the most widely known and used engines for games. It includes a 160 hour video training program for free to learn along with a massive community forum. Licensing is free until your project has reached $1 million in revenue. Funding for noteworthy projects is also available through Epic MegaGrants. 

Platforms

  • Desktop (Windows / Linux / macOS)
  • Consoles (Xbox / Playstation / Nintendo Switch)
  • Mobile (Android / iOS)
godot

Godot

Overview

What are you waiting for, use Godot! Godot is free and open source through the MIT license. With it’s studio you can build 2D & 3D projects that includes an animation editor, scripting, and a multi-platform deploy system. You’ll also get tools to collaborate together with your team.

Platforms

  • Desktop (Windows / Linux / macOS)
  • Mobile (Android / iOS)
  • Console (Nintendo Switch / Xbox One / Playstation)
  • Web

Frameworks I’ve used

  • libGDX
  • SDL
  • Pixijs

Frameworks I want to learn

  • Unreal Engine
  • Kivy
  • Bevy
  • Pixel
  • Roblox Studio

Stay Curious

Stay tuned for some of my own examples using these frameworks as well as future posts diving into essential building blocks used in all games. If you found this helpful or I missed a framework, please let me know in the comments.

Continue on your journey and learn how to think like a programmer!

Leave a Reply