Ahmet's Unity project

Around the beginning of the quarantine, my son, Ahmet (age 12), has started working on the Unity framework. Unity is a popular game engine, like Unreal Engine 4, and Godot. It was launched in 2005, aiming to democratize game development. It is very versatile and beginner friendly. There are many YouTube tutorials about Unity. It is also powerful, as it includes 2D, 3D terrain engines, physics simulator, real-time dynamic shadows, graphics rendering, networked multi-player support, etc. Unity was used for building many amazing games, including Call of Duty: Mobile.

Ahmet's Unity journey 

I would have loved to say that I supported Ahmet in his quest to learn Unity. But I am just a professor, I am hopelessly disconnected with cool new programming environments/frameworks. I couldn't even help him install the thing, when he had difficulties in the beginning. This was a 5GB installation, and he would ran into problems in the last GB, and also had problems with package dependencies.

I was quick to give up. I tried to convince him that Python is the way to go. He had done some work using PyGame last year, so I insisted that he continue on that. I told him that real programmers work using a text editor, not with complicated integrated frameworks. What programming framework requires a 5GB download anyways? The first programming IDE I used, Turbo Pascal, only required 39Kbytes, smaller than many 1 page pdf sizes today. I told him that I won't (can't!) help him with installation of the Unity framework.

Ahmet didn't give up and found a way to install Unity. Using an archive copy, he first downloaded Unity, and then downloaded packages as add on.

He followed YouTube videos and tutorials and tried his hands on a couple games. The first was a simple box racing game. The second one was a multi-player first person shooter in an arena. He added things like fog and smoke. He said these were particles and relatively easy to add. These games looked very cool. I am an old school guy. I didn't even know it was possible to code such graphically rich physics.

For Unity he learned scripting in C#. He says he likes C# much better than Python. When he had to do a math homework with Python, he said he forgot all about the Python syntax, since he had been working with C# for some time. (Welcome to the club, buddy.)

A couple weeks ago, Ahmet started his real project: a parkour plus first-person-shooter/katana-swinger/grappler-gun-handler. He prepared a checklist on paper with approximate completion times for each task. According to his estimation this will take 2-3 months to finish.

Self-learning 

Ahmet is one of the winners of the Covid19 crisis. He told me he is very happy that schools got canceled. He said he was looking forward to summertime to have undisturbed programming time, but with the school cancellation, he was able to get started on Unity much earlier. He told me he doesn't need school anymore (uh oh).

I am happy he is able to learn on his own. He has been working hard on Unity. We share the same study room with Ahmet, and he has been in deep concentration making steady progress with Unity in the last couple months. I haven't seen him this engaged with anything (except of course when playing computer games).

I like that there is a good community around Unity. Without a community it is hard to make significant progress. It looks like there is a scenius effect going on there. This effect was pretty obvious in Hackers at MIT, and Crypto communities, both captured perfectly in books from Steven Levy.

Inspired by many in the Unity community, Ahmet also started a YouTube channel to share the progress of his project. He told me this is called a Devlog. This keeps him motivated and on-track. He calls his channel "The Unity Noob". (I like that he knows being humble is a competitive advantage.) He didn't expect any one to watch his videos, but he is getting followers and many comments for his videos.

He asked me to give him a shout-out on my blog and on Twitter. Well, if the spirit moves you, and you want to show some encouragement and support for him, please subscribe and like his videos.

Going forward

I don't know if I should be concerned. He is learning advanced programming concepts on his own, by imitation and hacking. He will likely develop some bad habits, and these may do some damage when he takes his first proper programming course.

But I think that is a minor concern and it is totally compensated by the self-learning and interest going on thanks to this project. He is not only building things, he is also learning how to communicate and explain those things. That is amazing.

Probably the best thing I can do is to not get involved and get in his way. This is very easy to do, and being lazy, I will comply. If in the future he needs help with distributed systems, I can have "finding the right Paxos variant" conversation with him.

Comments

Popular posts from this blog

Hints for Distributed Systems Design

Learning about distributed systems: where to start?

Making database systems usable

Looming Liability Machines (LLMs)

Foundational distributed systems papers

Advice to the young

Linearizability: A Correctness Condition for Concurrent Objects

Scalable OLTP in the Cloud: What’s the BIG DEAL?

Understanding the Performance Implications of Storage-Disaggregated Databases

Designing Data Intensive Applications (DDIA) Book