2D Game Development: From Zero To Hero
Daniele Penazzo
Computers & Technology
2D Game Development: From Zero To Hero

It's really common in today's game development scene to approach game development through tools that abstract and guide our efforts, without exposing us to the nitty-gritty details of how things work on low-level and speeding up and easing our development process. This approach is great when things work well, but it can be seriously detrimental when we are facing against issues: we are tied to what the library/framework creators decided was the best (read "applicable in the widest range of problems") approach to solving a problem.

Games normally run at 30fps, more modern games run at 60fps, some even more, leaving us with between 33ms to 16ms or less to process a frame, which includes:

- Process the user input;

- Update the player movement according to the input;

- Update the state of any AI that is used in the level;

- Move the NPCs according to their AI;

- Identify Collisions between all game objects;

- React to said Collisions;

- Update the Camera (if present);

- Update the HUD (if present);

- Draw the scene to the screen.

These are only some basic things that can be subject to change in a game, **every single frame**.

When things don't go well, the game lags, slows down or even locks up. In that case we will be forced to take the matter in our hands and get dirty handling things exactly as we want them (instead of trying to solve a generic problem).

When you are coding a game for any device that doesn't really have "infinite memory", like a mobile phone, consoles or older computers, this "technical low-level know-how" becomes all the more important.

This book wants to open the box that contains everything related to 2D game development, plus some small tips and tricks to make your game more enjoyable. This way, if your game encounters some issues, you won't fear diving into low-level details and fix it yourself.

Or why not, make everything from scratch using some pure-multimedia interfaces (like SDL or SFML) instead of fully fledged game engines (like Unity).

This book aims to be a free (as in price) teaching and reference resource for anyone who wants to learn 2D game development, including the nitty-gritty details.

Available here in python and pseudocode editions.

Get the latest version of this book and help improve it at  the GitLab Repository or the GitHub Repository.

The Maths Behind Game Development
Some Computer Science Fundamentals
Project Management Basics and tips
Introduction to Game Design
Writing a Game Design Document
The Game Loop
Collision Detection and Reaction
Game Design
Creating your resources
Procedural Content Generation
Useful Patterns, Containers and Classes
Artificial Intelligence in Videogames
Other Useful Algorithms
Developing Game Mechanics
Testing your game
Profiling and Optimization
Balancing Your Game
Marketing your game
Game Jams
Dissecting games: two study cases
Where To Go From Here
Engines, Libraries And Frameworks
Some other useful tools
Free assets and resources
The book hasn't received reviews yet.