Version 0.7.9 is live & status of the project @2024-02-18


Hello everyone. Hope you're all doing well.

Version 0.7.9 of the book is live. This has been quite the sudden decision, I added a few new code examples that I thought were going to be useful to people, as well as some fixes and removing some "TODO"s that weren't even supposed to be there (that means I left some "TODO"s in sections that were completed).

Here are some news and general updates about the project.

Different distribution system

I decided to condense the Epub and PDF versions in a single download, thus cutting the available downloads by half. This should make things a bit easier to manage and less annoying to the readers. I also added a "Complete Collection" download, which allows you to download the entire book collection (All editions, both in PDF and EPub) in one single click.

For the people who downloaded only the epub editions, I apologize but those channels are now unavailable and won't be updated anymore, as they were merged into the PDF distribution channels. I tried asking Itch support, in case there was a way to merge the channels, but they kindly answered me that it was not possible.

New chapter and code examples

I added a new sub-chapter about some common AI patterns used in games, with related code examples. There you will be able to find 3 new algorithms: "jump when the player shoots", "melee pattern" and "ranged pattern". More details are in the book itself.

Some new algorithms have been added too:

  • Facade design pattern
  • Parallax scrolling effect

This may sound like it's not much, but considering the 3 AI patterns and 5 languages I'm trying to juggle, that's 25 code listings. Phew.

The Survey

Since December 29th, 2023 there has been a survey open to gather feedback from the community about the book. You can still leave your opinions here: https:// forms.gle/hSeQBHJcTKu6qqDL6

Since I got some results, I wanted to share some bits and answer publicly to some statements that I received. 

  • About 80% of the people that compiled the form already knew about the project before.
  • About 80% of the people say the book's current status (on a scale from 1 to 10) is between a 7/10 and an 8/10 (the remaining 20% didn't leave a feedback)
  • About 75% of the people say that the book is "too short" and "it lacks content", while the remaining 25% say "it's fine as it is"
  • About 75% of the people say the pacing of the book is "just right", while the remaining 25% deem it as "inconsistent". I kind of tend to side with the 25% here, I have no real-world experience writing a book, so things are a bit all over the place. I apologize.
  • The most glaring issues with the book are (all with the same score):
    • Walls of text: paragraphs are too long. To which I answer: that is absolutely true. I am working on adding decorative images to break down each section without disrupting the flow too much. Problem is: I want those images to be public domain or at least CC-licensed. I don't want to risk being sued by overly litigious companies because I've put a screenshot of a game as an example or decor. The only images that are not public domain or CC-licensed have been made by a friend of mine and are used with permission.
    • Images and formulas lack a long description: This is something I thought was going to fix itself with the conversion between Markdown and Epub. Turns out it doesn't, and now I have over 200 items, between images and formulas, I need to write a detailed description for. It's a matter of accessibility, thus it is important for a book that tries to make game development accessible, but it is also absurdly time-consuming.
  • About 20% of the people say that, given the possibility, they would contribute to the project: you can already do that by forking the repository and add everything you want and then make a pull request, on either GitLab or GitHub. Remember to add yourself to the Contributors! Another 20% of the people instead, would not contribute to the project, which is understandable. The remaining 60% leave a "maybe" on the table.
  • As the main obstacles to contribution, the following are cited in order of most votes to least votes:
    • General Lack of knowledge: not everyone knows everything about game development, which is absolutely fair, but even someone who knows nothing about game dev can help. Is there something that you want to learn but is not mentioned in the book? Shoot me a comment, a toot on mastodon, or open an issue. See some typos? Just let me know. Every contribution is welcome! Translations in other languages are also welcome, in that case, if you have a GitHub repository, contact me so I can feature it.
    • Git: I understand that Git can be a really tough tool to learn, I decided to use it because it's a tool that I'm used to. I have been debating on whether to change the way this book is made. More on that later.
    • "Pandoc and Markdown are too hard for my taste": I wanted to strike a balance between readability of the markup language, flexibility and possibility of recovering the content in case of any kind of failure. Plus text works really well with Git, which was a plus in my opinion. Binary files (like word files) tend to lose everything when a few bytes are corrupted, while other markup formats (like TeX) are way too invasive to be read as-is.
    • Fear the project will become paid/commercial: Which is absolutely a fair fear to have. To this I have no definitive and convincing answer. The Creative Commons license allows me (the copyright owner) to ask for money for the product (I may be wrong on this one) but that would also mean that I would become part of the problem I wanted to solve: I couldn't find a complete and free (mostly as in price) resource that would teach game development. Also CC licenses are non-revocable: the work is licensed under CC-BY-NC-SA and I cannot revoke that license, so your copy of the book is distributed under that license forever. More about this matter later.

Let's take a break from the lists to answer some comments and ideas to improve the project.

"Merge all the editions into one single book or maintain just the pseudocode edition" (Abridged version).

I think condensing all the code example into one single book is a no-go. People who are interested in one single language will have to skip pages of code in all the other languages. Maintaining the pseudocode edition only was my initial intention, but I found out that I can write some things better in some programming languages, so at times I find myself writing the algorithm in Python (or C++) and then translating it into pseudocode.

Moreover, the book structure has now evolved into a kind-of-framework where anyone who wants it, can build their own custom book. I think it would be an interesting thing to have that feeling of "I want to learn game development, I want to begin with Python and PyGame" and have the book that suits you perfectly. It's kind of like you have your own personal tutor, in a way, and I was excited at the thought. I had this "grand vision" (let's not compare it to the "IT industry grand visions" that sound just as crazy as my idea) where people would come together, add their own experience and share it to the world under the same framework.

"Finish the few sections that are not complete before adding more"

Sadly the sections that are not complete are also sections I have very little knowledge about. In this "grand vision" I had, that would be a self-leveling problem, because someone else would fill in where I was lacking, and I could learn something new myself. If I were to try and fill every missing piece of the book on my own, I would have to spend months studying, vetting, testing and creating code for each and every piece of the book that is missing, in the evening, after work.

It's time to admit it: I don't think I have the mental elasticity or fortitude necessary to do all of that work myself. But that won't stop me from doing my best.

Let's go back to lists!

  • People think that the book should focus mostly on (in order):
    • C++, C#,
    • Python, lua, JavaScript
    • a couple other languages I'll talk about later.
  • People think the most important things for the book to focus on are (in order):
    • The basics (math, ...) and code examples
    • Algorithms and Game Design;
    • Containers and classes, Illustrative Pictures, Tips and Tricks;
  • People think the book should be distributed as (in order):
    • PDF, Epub
    • Pure Text (or markdown), Online Wiki
    • Rich Text Formats (RTF, ODT, Docx, ...)
  • 40% of the people think the book should try and stay engine-agnostic, the remaining 60% think it should feature real-world examples in Löve (lua), SFML (C++), and something else we'll talk about.

Now it's time to talk about the "something else": the Odin and Zig programming languages. Odin seems to come with SDL/Vulkan/OpenGL support out of the box, while Zig has some game dev projects under its wind.

Sadly the idea of an "Odin" or "Zig" edition has to be put aside for now, for a very simple reason: I don't know those programming languages. As in "I would need to start from 'hello world' up", which is something I just can't do right now.

BUT

If someone who knows those languages and has free time to spare, I am more than willing to accept a pull request or two. (I have already created issues on that in the GitHub repo).

The future of the project

I have to admit that the future of the project is currently uncertain. My day job is swallowing me whole, as my family matters are.

2024 is turning out to be a really harsh year on all fronts, but I remain committed to the project to the best of my ability.

I have been toying with the idea of opening the book to other contributors that are not able to use Git, for example by publishing (and thus restructuring) the book on WikiBooks, but I have to admit the idea is scary. That is because the project may morph into something completely different than what I had in mind, and Git allows me to retain some "creative control" over the project.

Another idea would be just "throwing the book in the public domain and let it fend for itself" (which sounds cruel now that I think about it) and see what happens: either the project will die or people will be encouraged to contribute.

Maybe even doing both at the same time. The fact is I have no idea how famous WikiBooks is, how it works, how much "exposure" the project would get from the website.

We will see what the future holds.

Thank you everyone for reading this absurd wall of text, stay safe.

Penaz.

Files

The Complete Collection 200 MB
Version 0.7.9 Feb 17, 2024
Pseudocode Edition (PDF+EPub) 39 MB
Version 0.7.9 Feb 17, 2024
Lua Edition (PDF+EPub) 40 MB
Version 0.7.9 Feb 17, 2024
JavaScript Edition (PDF+EPub) 40 MB
Version 0.7.9 Feb 17, 2024
C++ Edition (PDF+EPub) 40 MB
Version 0.7.9 Feb 17, 2024
Python Edition (PDF+EPub) 40 MB
Version 0.7.9 Feb 17, 2024

Get 2D Game Development: From Zero To Hero

Leave a comment

Log in with itch.io to leave a comment.