Learning C# by Developing Games with Unity 2021

Book cover

This is interesting book, because the Author focus on coding part of Unity3D.
Additionally for this book exist a github repo!

The author begin with describing Unity3D editor UI: panels, menu, and windows arrangement.
In first chapter of this book reader get very basic introduction to visual studio and directory setup in Unity3D project.
I find it quite useful especially lots of the weblinks to a different types of useful resources.
Now to the fun part: variables, methods, class, interfaces descriptions are really simplified in this book, but the order how it described not so efficient. There many weblinks to official Microsoft C# pages.

Author have strong opinion about comments in the code, in my opinion comments should be used carefully and author have opinion that they are helpful for beginner programmer, well in my opinion they are not ,the beginner programmer should always learn how to write a meaningful code , which can’t be second guess or misunderstood by other programmers, because then other programmers would spent more own time for understanding the code, programmers main responsibility to write a understandable and readable code.
One part of code I don’t like mixing model and monobehavior in one class, tight coupling is bad.
On positive side the description of Start and Update monobehavior methods really good.

Author gives really good and in deep introduction about to generics, delegates.

Now to more interesting part OOP: in my wonder it’s not covered deep enough, design pattern are not covered, things like SOLID principles. Other topics like encapsulation, inheritance are mentioned and code examples are presented in this book.
Still it’s pretty basic knowledge about OOP, this book don’t warns people about inheritance misuse, which can happen to anyone.

Then there is example of game prototype creation walk-through.

My favorite part of this book is working with animator, the explanations were simple and direct, so really understandable. Another part which was interested to me was camera control trough the script.
In the book you will find the part about how to interact with Unity3D Engine physics, for me it’s kind of all over the board topic, I say don’t mess with engine physics, but rather follow the rules of the engine physics, if you have a game logic which in some case must violate engine physics, well then such scene should not rely on Unity3D kinematic features, so dont mix!

Creating UI in Unity3D was really good described
, but you would not find information how to create a customizable UI.
About AI, this topic somehow got it into this book, well in my opinion its topic for separate book, but the author took time and provided very good examples and description, creating meshes, agents and running them in the game.

Book topic about collection , I don’t think that splitting collection in different chapters make real sense to me list and hash , hashset are topics presented in  different chapters.

In Java world we have pretty good understanding what particular collection type is most suitable for the given type of data, I guess this exist in  C# programming community too, but this books lucking of it: A really good comparison between collections is missing in this book (soriting, insertion order, access).

Book author speaks about, how to save and load data for the game and sure this is huge topic in gamedev, after the file was read all game object must be rewritten to a previous state.
One critical topic is missing in this book : UNIT TESTING, I think it’s a big miss, that this book not covers unit testing in Unity3d, which by all means not so hard at all!

Summary: This book tries gradually build up skills of the reader through the language of this book which is understandable, still in my opinion some topics covered not deep enough and some topics actually can be left for another book.
Finally the question, whom I can recommend this book?
To a novice programmer? Yes, they would learn a lot!
To a senior or intermediary developer? This is difficult, some topics as I previously said not deeply covered and maybe this book can be good refresher and cookbook, and otherwise for you as senior developer there is no reason for buying this book.