Coding Advice

A long time ago I did a little coding. 40 years ago, I was reasonably proficient in BASIC, but then the demands of work and family ate into my time, to the extent that it just became easier and more efficient to order (no downloads then) any software I needed. I haven’t coded for many years, and things have changed to the extent that even if I could revive the knowledge and skills I once had, I suspect it wouldn’t be much use. I would need to learn it all again, and in new languages.

Over the years, I have played around with Python and C#. I have half-heartedly tried scripting in Blender and Unity, but I’ve had no real commitment. It was a lot of hard work, for something I didn’t really need. Nevertheless, it’s an itch I’ve wanted to scratch for a long time - I just haven’t had a sufficiently pressing reason.

Then, last week, my 11 year old grandson asked me if I could build him a PC, and show him how to code his own games. After a long discussion, during which I explained to him that it really wasn’t that simple, we arrived at an agreement - I would build him the PC, and we would learn to code together. Now I have my motivation.

The problem I have had in the past, particularly with Blender, but also with Unity, is that the documentation is dreadful. 90% of Blender tutorials are completely out of date, and refer to features that don’t exist any more. Many of the features are completely undocumented, and those documents that do exist are horribly written by people with zero communication skills. They are nearly all written by programmers, who assume that the reader shares their level of programming skill. Unity’s guidance on scripting consists of little more than the statement “Unity scripts are written in C#”.

I am old-school (let’s be honest, I’m just old). I find it impossible to read long documents on a screen. I find it very difficult to learn anything from tutorial videos. If I’m going to learn a skill, I need a proper printed book by my side. And that’s where I need help.

I need advice concerning good, informative, up-to-date books, teaching C#, Blender, and Unity. There are hundreds of books out there. Many of them are very expensive, and most of them are garbage. I need advice on the good ones. I need books that don’t assume I already have a degree in computer science or further mathematics, or that I’m already proficient in C++, and just transferring my skills over.

Thank you all in advance.

6 Likes

You hit the heart of the reason why I have never tried again since my days in BASIC. It was understandable and had a logical progression to it. I would love to wrap my head around blender but have not found the time for something I will gain only limited use from.
My daughter has dabbled in Unity and Blender and has become quite good at it. I will ask her.
Enjoy the time with the grandson. He will likely grasp it all way ahead of you. :weary: :laughing:

5 Likes

What you ask for may not be practically feasible, I’m afraid. The core issue is that programming language specific skills are almost entirely irrelevant nowadays. What counts is ecosystem knowledge. In other words, you can probably find a good book about C#. And it will almost certainly be usless to you, because it will almost certainly deal with .Net framework or windows API programming, which is what you usually do when coding in C#. So most of the things that that book wants to teach you will be completely useless when working in Unity, where you have a completely different ecosystem.

And you’re not going to find a book just about C#-exclusive syntax. Because that’s just a nuissance, an after-thought. If I have to write something in C#, I just write it the way I’d write it anywhere, and I’ll go look up specific syntax on the fly.

So there’s some compartemtalisation you have to do here. Books about specific languages will usually assume that you know how to code, because that is just mostly the same thing no matter what language you use. These books will be more specific to certain software design philosophies, frameworks or ecosystems, rather than try to teach you the fundamentals of programming.

Meanwhile, books that will teach the fundamentals of programming, will just use some language that will facilitate that easiest. Most of them use python nowadays. So there’s a catch-22: If you need to learn programming first, you probably have to do it in a language that you might not actually want to use. That’s because specific language is considered almost irrelevant to the fundamentals of coding nowadays.

On the other hand, a book specifically about Unity might well assume that you already know how to code. It’s still your best bet though, probably.

Blender is developing too fast for there being comprehensive books being written about it. My recommendation would be to forget about that additional complexity and instead focus on 2D first.

At the end of the day, I really do believe that a comprehensive “my first game in unity”-style online tutorial is what’ll get you going the fastest, I’m afraid.

6 Likes

My son says this is the best you can do and good luck :smile:

3 Likes

The last time I looked at the official Blender documentation on their website, around 50% of it was out of date, and referred to previous versions of Blender. The website even acknowledged that this was the case, and that they have a long-standing problem with documentation.

Apparently their many contributors would far rather create code, than explain how it works to anybody.

It’s the price you pay for free software created by a volunteer army. They only do the bits that interest them.

4 Likes

From thirty-some year old software engineer son.

Folks generally recommended O’Reilly as a publisher and Udemy for online course stuff.

I have absolutely no personal recommendations… I don’t think I’ve ever read a book about programming at all.

5 Likes

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. :stuck_out_tongue_closed_eyes:

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. :thinking:

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:

  1. 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/
  1. 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/
  1. 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/
  1. 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.

7 Likes

Thanks for the suggestions.

“Everything I need to know” is a big ask, and neither required nor expected.
The plan at the moment is for my grandson and I to renew my (fairly scant) acquaintance with Python. It’s not that different from BASIC (although the syntax is, frankly, bizarre).

As I said earlier, I find long documents impossible to absorb from a screen. Anything more than 2 pages, forget it. Similarly, I find it very difficult to learn from online videos - they just don’t do it for me. If I’m going to learn, it has to be a printed book. I will look into the ones you (or ChatGPT) suggested.

I am already able to create landscapes and models in Unity - it’s the scripting of animation and game logic that have caused me problems. I have had some success modelling in Blender, but I constantly run up against gaps in my knowledge that aren’t covered by the available documentation. Again, the scripting of animation is a particular problem.

I don’t expect my grandson to start creating in Unity or Blender any time soon. However, I hope to become sufficiently adept in both to give him some pointers. He’s 11, and he’s starting from zero knowledge. I’m nearly 70, and I’m not. :smiley:

4 Likes

Got it. You’re further along with Unity than I realized.

This book looks like it might be worthwhile:

Reviews seem pretty good except some people report issues with the printing. It’s a 7th edition, so that probably indicates some commitment on the part of the author.

4 Likes

I was thinking about suggesting scratch, but my experiences with using it to teach my son to code are rather mixed. While there is some development of understanding of basic code concepts, I have found the boy to be utterly unable to transfer them to a less abstract language. So far I haven’t managed to get him to reliably formulate even a simple if-else branch, even in any kind of pseudo-code, even though he’s doing it in scratch all the time. Loops are even worse.

There seems to be a barrier that prevents the visual concepts from scratch to be transferred to the abstract logic pattern that those visuals represent. And it’s damn hard to break through. And because scratch makes the things it does really, really easy, I find that the motivation to learn anything else is now pretty much tanked.
It’s unexpected, and frustrating. I’ve seen the boy build entire event-driven architectures in scratch that were really impressive for somebody that doesn’t know jack about coding patterns. But I have yet to see him managing to understand how to use even a simple variable in python. Somewhere in that little brain there’s a fundamental disconnect between scratch’s visual elements and what they actually represent.

5 Likes

I have good news and bad news. The good news is that following advice from @sheralmyst , I find the official Blender documentation has been substantially improved. I can’t yet say how comprehensive or accurate it is, but it’s better written, better organised, and there’s lots of it.

The bad news is that it’s only available as HTML or EPUB documents. It’s specifically intended for browsing online, and not for printing. The EPUB document comes in as 3,500 pages. That’s right. A single document, three thousand five hundred pages long. Clearly, attempting to print this thing at home would be ridiculous.

I thought I might be able to break it into chapters of, say, 200 pages each, and print them as needed. Unfortunately, the formats used don’t lend themselves to editing. The HTML document is natively formatted for the screen, and consists of thousands of links, accessed via recursively nested menus. Attempting to print it just results in an unholy jumble of unrelated paragraphs and pictures. I ran it through Calibre, and converted it to an RTF document - which kind of worked - but it came out as 6,500 pages, with paragraphs, sentences, pictures and menus all mixed up in the wrong places. Then it turned out that 6,500 pages was rather more than LibreOffice could comfortably handle. Attempting to edit the thing resulted in the software choking up for 20 minutes at a time.

So, for the moment, I’m stuck. I have the electronic manual - which is a lot better than nothing - but what I really want is a printed reference document.

5 Likes

Have you tried Office Libre? It is free and has a lot of useful functions. I transfer many things to it with success.
sorry, Libre Office… :rofl: I have not woken up yet…

2 Likes

I could have sworn I just wrote:

I’m confused - and I don’t even have the excuse of just waking up. :smile:

2 Likes

There is likely a clue in Calibre :rofl: :crazy_face:

3 Likes

Sorry if im a bit late to this but I was learning Unity some years ago when I had the time. I learned quite a bit in a short period of time but that is because I had a goal. That goal was a simple 3D game, a landscape, one playable character, one interactive object, a building to enter, etc. And I had it all written down before starting.

Thats generally how I approach anything new to learn, I establish what I need or want to learn first so I can weed out the things I dont need to learn yet. Even though I didn’t finish it, I got close. And thats because I got carried away with 3D modeling and 3D printing :sweat_smile: still doing it till this day.

My recommended learning path is to learn C# if you havent done so yet. I used Codecademy. Its a pretty quick and easy way to learn all the basics and understand the lingo to make Udemy lessons a little easier to understand

Then, used Udemy to learn Unity. I used Udemy myself. I picked a course that specifically taught how to make a 2D and 3D game and it did that by holding your hand to make them. It also had written documentation to go back to which was nice.

What I like about Udemy over youtube or other website sources/books is that many reputable Udemy courses actually update their lessons, usually pretty quick too if a new version of a software comes out or if a new feature comes out that made an old feature obsolete. Ive seen one of the courses I was taking update in a week. The instructor mentioned that he is using Version X.XX now and then said “if you haven’t updated, yours will look like ‘this’, or like ‘this’” So I didn’t have to scratch my head wondering how the guy did what he did and just get on with the lessons.

5 Likes

Some years ago, I fooled around with the Blender game engine (without much success). Enquiring now about Blender documentation, I find that many people who were trying out the Blender engine have now migrated to the Godot engine.

I first became aware of Godot a few years back, but it seemed pretty low-key, and I wasn’t sure how much support it would have. It seems it has come on a great deal, and has attracted quite a following. Like Unity, it can also be scripted in C#, although it prefers its own proprietary language - GDScript. It is multi-platform, 2D and 3D, and can even be persuaded to work on consoles.

Whilst Unity is a commercial product, and becoming ever more restrictive in what users are allowed to do, Godot is genuinely free - MIT licence and everything. I think it’s worth a look.

6 Likes

My son and I had good luck making a 2D game in Godot. He has almost no coding experience (an artist), I have more coding experience (about 40 years). We got the skeleton of a game working in a couple of days and played with it for a couple more weeks before he got the itch to go 3D . At the moment he is enjoying sculpting models and 3D printing, eventually we’ll get back to the game. I didn’t try writing any of the game in C# or C++, we stuck with their own language which is close to Python.

I did build a simple 3D level in the 3.x system in about an hour using one of the free character models and some assets for the environment that I built in blender, it is not difficult but it was only a demo with basic collision and navigation maps. I’m mostly dragging my feet until I have time to dig into 4.0.

One caution is that they just released version 4 and the documentation is a work in progress. Most online pages have the banner:

Godot documentation is being updated to reflect the latest changes in version 4.0. Some documentation pages may still state outdated information. This banner will tell you if you’re reading one of such pages.

The contents of this page can be outdated. If you know how to improve this page or you can confirm that it’s up to date, feel free to open a pull request.

4 Likes

Very interesting conversation! Polyphemus, especially since you already have basic knowledge of both tools, I think this is doable and a great idea.

I don’t know what kind of game you are envisioning as a project, but one piece of advice I got is, keep it simple, to get a feeling of success early on. I mean, Rogue / Tetris / Asteroids level simple. Everyone can envision “the best looking game ever” in their minds and this visual expectation will completely prevent you from thinking about the gameplay logic.

I was a member of a self-teaching game dev forum (I was the one that wrote “the book”, alas, wrong language and wrong framework for you) and wrong expectations made a lot of beginners drop out. We called it “Where is the ‘Save game as MMORPG’ button?” phenomenon: if someone asked such a question (I’m relieved you did not!) then they had not built up the basic game dev knowledge yet and had picked an unreachable first project.

I’m no big help in the area of recommending you books I’m afraid, everything I ever used is outdated by now. I’m in the weird position that I don’t remember where I learned what, because my brother and I started as teenagers and just picked up any info in any format. Today I don’t even care anymore which language I’m using for my hobby projects, I have to look up the syntax details anyway every time, I just copy and paste code samples together. :person_shrugging:

My first games were written in HyperCard which casually taught us teenagers functions, conditionals, variables, strings, arrays, loops, message layers, and objects before we had any idea what these concepts were. From high school to uni, you could hear me say, “Wait, this was real? It’s called ‘object oriented programming’?? It’s called ‘writing a parser and tokeniser’?? We played these games when we were kids!” :rofl:

We read this book
Black art of Macintosh game programming : Kevin Tieskoetter : Free Download, Borrow, and Streaming : Internet Archive and just “typed some English words” and sometimes we got a spinning cube and sometimes it crashed the Mac, :person_shrugging: (but hey, it worked out, my brother now makes big bucks as a scared-of-nothing programmer, and I slightly smaller big bucks as a “very technical tech writer”). The book went through the structure of a 3D game from the event loop to drawing on the screen to calculating and drawing a rotating cube and face culling and yadda yadda.

Today, Unity will do all these optimisations for you, don’t worry! It’s just eye-opening to have seen the steps how any game is built up out of “just lists of numbers and conditions and loops”. Coming from BASIC, you may appreciate that thought.

And everyone wants 3D… but you don’t have to worry about the complexity of 3D if your game map and logic is internally designed in 2D, and the characters and obstacles are just rendered in 3D… Think of any board game like chess - the game logic is 2D, the pieces just look 3D. So what I recommend to learn is, keep the game model, and what it looks like, separate in your mind!

Here’s an idea for you – while you learn C#, write your first game as a text adventure, for the laughs. Challenge yourself to write some DOS prompt thing that keeps the game state, starts and ends the game, prints the current state in a loop, and accepts your next input (your moves) that change the state, prints again, and so on. Make something fun that “just works” and test it out – and don’t worry about Blender yet. Unity and animated characters are just outside decorations of your game, your game logic must work first – right?

Later, copy your text adventure into Unity, and replace each printline with the Unity equivalent: This output should be displayed on the HUD overlay… that output would work best as a sound… this input should change the position of a character on the map… that input should play an animation… etc.

5 Likes

Thank you to everyone who’s taken the time to offer advice and encouragement. What started as a simple question about books has turned into a much more interesting thread. Please, keep it going - don’t limit yourselves to programming books. I find your stories of learning to code and creating games fascinating.

In the meantime, check out this demo of what the Godot engine can do:

5 Likes

Hi all,

I have really enjoyed this thread , and resonates with me, in fact is the final link for me to also get back to coding and game design.

At the age of 14 i hand coded in BASIC on a ZX Spectrum 128k +2 , a text based adventure , with some static blocky minimal 8bit graphics sprites.

A friend of my older brother who was a more advanced developer converted it to machine code and compiled ot into an executable file.

A version was converted and works via a browser on a PC (mobile browser will battle or not work)

http://minstrel.flcl.co/

I definitely am going to check out Godot and other open source/free engines.

I left coding in the 1990s so think i have a massive learning curve ahead, but I am game for it ( :crazy_face: )

Some of my handrawn notes, graphics designs, and finally the game area map .



7 Likes