I spend wonderful weekends teaching my 11 year old daughter programming. Although I generally focus on Python and JavaScript, this past weekend, I helped her to learn Unity and cat 3D worlds.
Here’s 4 tips to help complete beginners dive into Unity
1. Watch Bob Tabor’s Videos
C# Fundamentals for Absolute Beginners is an excellent video tutorial series produced by Bob Tabor that is free.
Bob’s video series is targeted at absolute beginners to programming, not just beginners to C#. It’s a little slow if you know another language already. It’s worth looking at.
2. Focus on C#, not JavaScript or Boo
I first tried to build my daughter’s curriculum around JavaScript. Up until recently, I was very biased against Microsoft products, preferring Linux. I thought of C# as a Microsoft language. Due to my bias, I tried to use JavaScript first. There’s more more Unity examples for C# than for JavaScript. Unity programs can also developed with Boo, with is similar than Python. As my daughter has a few years of Python experience, this seemed like a good option initially. There’s even less examples of using Boo. Based on the overall learning experience using tutorials and examples, C# is clearly the winner. I’m using C# now.
C# is also a good language for teaching. JavaScript programmers know the pitfalls of JavaScript that can frustrate kids (private/public variables, type override, and hoisting). The syntax of C# makes it clearer about the intent of the code. I’m not sure if C# will stand up to my scrutiny over time, but for now it looks good. I’m sticking to C#.
My initial impressions – C# is easy to use, easy to learn, and the toolsets around it are amazing. Which leads us to my first experience with Microsoft’s developer tools.
3. Use Microsoft Visual Studio
Microsoft Visual Studio is amazingly good for C# programming.
After using Emacs on Linux and UNIX for decades, I recently moved to Atom as my primary editor. The main reason for using Atom is the vibrant community of packages for JavaScript and even a range of packages for documentation writers that add features like Markdown or AsciiDoc preview. The syntax highlighting, code completion, and syntax checking are also easier to set up than on Emacs.
After the experience with Emacs and Atom on Linux, I was shocked at how good the C# programming experience was on Visual Studio. I expected it to suck. It didn’t.
I haven’t tried Visual Studio with any other language. It’s quite possible that Atom might be better for JavaScript and Emacs might better for Python. For philosophical reasons, I’ll probably only use Visual Studio with C#. As Windows 10 is not open source, I’m still planning to go back to Unity on Linux and use the Mono Editor on Linux at some point just because I like Linux. For my daughter, I want the easiest and best way for her to learn the basics of programming. To my surprise, when she programs in C#, she may use Visual Studio.
I’m also not sure how Visual Studio will perform on systems with low resources. The workstation my daughter will be learning on is called Rainbow Unicorn. It has lots of memory, and a 12 core Xeon CPU. I using Visual Studio and Unity on a slower system with an i7, 8GB of RAM, and discrete nvidia 9 series GPU. It was considerably slower, but still usable. If people run Visual Studio and Unity on slower systems, I’d be curious to hear how the experience went.
4. Build with Stored 360 Media Before Using Camera API
I’m going to continue working with my daughter on the basics of C# and Unity with THETA media before I guide her to applications that use the camera API.
Here’s my current curriculum plan. (Untested)
- C# command line - 2 to 5 lessons
- C# basic Unity (may mix the command line tutorials with the Unity tutorials)
- Unity with THETA media
- image on sphere
- image in skybox
- video in sphere
- Unity with THETA API (wifi only)
- picture capture
- picture transfer
- Unity with THETA live streaming
- Unity with different experiences
- native application on Windows, Mac, Linux
- web with webGL (probably not WebVR unless I learn something new)
- mobile
- headset
The API is generally used to improve the overall experience or workflow of a process. For example, I can imagine the API behind used to create a library of spheres for a space and then have the images transferred to a headset. By building the application with stored image files first, my daughter be able to simulate the experience of taking pictures. We can then move to actually triggering the camera and media transfer.
Resources
- C# Fundamentals for Absolute Beginners (Free - No login needed)
- Unity Personal Edition (Free - no credit card needed)
- Microsoft Visual Studio Community Edition (Free)
- Usage Guide for THETA API