Hey Polyphemus, this sounds like a worthy undertaking and I love the fact that you will be doing it with your grandson and using that as motivation. That’s delightful. I’ve got a few ideas for you, though none of them really hit that sweet spot of “Here’s a book (or two) that will tell you everything you need to know to learn programming in conjunction with Unity and Blender.”
I’ve been using Unity for about… hmm, 15 years now… seriously!? I can’t believe it’s been that long. But that’s what the math tells me.
It’s a big topic, with a tremendous amount to learn. There are significant portions of it that I still don’t use or particularly understand. I’m not a game developer. I mean, that’s where I started when I first picked-up Unity, but I ended-up veering into creative arts development and got happily stuck there.
I’ve bought several Unity books over the years but none of them were ideal or particularly memorable. In my experience, learning Unity was a process of building understanding through a combination of books, videos, documentation, taking apart projects from others and creating many projects of my own that were educational, though not necessarily successful at achieving my original goal. So, yeah, it took some time and considerable effort. Also, I should note that I came to it as a professional software engineer with considerable expertise in C and C++. So making the jump to C# was not an issue for me.
So… it’s not my intent to be discouraging, but I think you have rightly sussed this undertaking out as being, well, non-trivial to say the least. I’m going to make a suggestion to perhaps choose a different starting point, particularly in light of your desire to share this process with your grandson. Before that, however, let’s run your question by the new hotness of chatGPT and see what it has to say.
I gave it the following prompt:
“Please create a study outline for learning to use Unity and C# to develop games for a beginner with rudimentary programming knowledge.”
It responded with the following:
Sure, here is an outline for learning Unity and C# to develop games for a beginner:
- Introduction to Unity and C#
Objective:
Understand the basics of Unity and C# programming language, including how to set up a project, navigate the interface, and write basic C# code.
Topics to cover:
What is Unity?
Installing Unity and Visual Studio
Creating a new Unity project
Understanding the Unity interface
Creating game objects and components
Introduction to C# programming language
Basic syntax of C# (variables, data types, loops, conditionals, etc.)
Writing scripts in C# using Visual Studio
Debugging Unity projects
Resources:
Unity's official tutorials: https://learn.unity.com/
Microsoft's C# tutorial for beginners: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/
- Unity Game Development
Objective:
Apply the basic concepts of Unity and C# programming to create simple games.
Topics to cover:
Introduction to game development in Unity
Physics in Unity
Player movement and input
Creating user interfaces (UI)
Importing and using assets (models, textures, etc.)
Creating simple 2D and 3D games
Sound effects and music
Resources:
Unity's official tutorials: https://learn.unity.com/
Udemy's Unity courses: https://www.udemy.com/topic/unity-game-development/
- Advanced Concepts in Unity and C#
Objective:
Learn advanced Unity and C# programming concepts to create more complex games.
Topics to cover:
Scriptable objects
Creating AI enemies
Networking and multiplayer games
Advanced UI (scroll views, animations, etc.)
Procedural content generation
Optimizing performance
Using external APIs
Resources:
Unity's official tutorials: https://learn.unity.com/
Udemy's advanced Unity courses: https://www.udemy.com/topic/advanced-unity-game-development/
- Game Design and Publishing
Objective:
Learn how to design and publish games using Unity.
Topics to cover:
Game design principles
Level design
Playtesting and feedback
Monetization strategies
Publishing games on different platforms (PC, mobile, console, etc.)
Resources:
Game Design Concepts on Coursera: https://www.coursera.org/learn/game-design-concepts
Udemy's courses on game design and publishing: https://www.udemy.com/topic/game-design/
By following this study outline, you should be able to learn the basics of Unity and C# programming language, create simple games, and learn advanced concepts to make complex games. Good luck with your learning journey!
Oof. It’s a decent outline, but reinforces just how much there is to learn.
My suggestion would be to start much smaller. There are a number of frameworks for starting to learn game development more simply and with gaining real skills in the process. Here are a few:
There are many others. I have dabbled with Pico-8 and it’s pretty impressive for a tiny little development framework. In addition to a built in program editor, it includes a sprite editor and a music and sound effects creator. Graphically it’s very retro, but all its limitations are actually a strength when trying to learn.
A friend of mine, a complete beginner at coding, started by diving into Unity, got frustrated after a couple of months and eventually went on to try Pico-8. He was developing tiny, but functional, games within a week. Pico-8 uses a version of Lua as its programming language. Lua is a lightweight language developed specifically to be used as an embedded language in other applications. I would say it’s not so different from Basic in its complexity level.
The big AAA frameworks, engines and apps will always be out there, but I don’t think any of them are all that friendly to beginners. It’s a difficult balance to strike when they are also trying to serve professional development teams with a constellation of complex needs. When starting out I believe there’s a lot to be gained from beginning small and focusing on fundamentals and principles. Once we have a good working model of the basics on board, extending it to more sophistication and complexity feels a lot more doable. At least that has been my experience.
Whatever you elect to do, I wish you much joy and satisfaction in the journey.