4 Beginner Tips to Learn to Build THETA Unity Projects


#1

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


#2

I’ve started to use Visual Studio Code (not the same as Visual Studio) for JavaScript, HTML, CSS. In another surprise, Microsoft now has excellent tools for scripting languages and the tools are open source. Surprise… Microsoft is also the main company behind TypeScript, which is one of the leading attempts to fix problems with JavaScript.

I’m still using Atom for AsciiDoc documentation right now.


#3

Posting some data showing popularity of C# in AR/VR development, especially among professionals. Source: Developer Economics: State of the Developer Nation Q1 2017


#4

I imagine that the vast majority of professional developers using C#, maybe more than 80% (maybe more than 90%), are using Microsoft Visual Studio on Windows. I think Microsoft products are easy to bash and criticize, I know I did. I still do. When I started to use Visual Studio for C# development, it’s hard to go back to vi or Emacs after that. Unity does run on Linux and there are tools for Linux, but honestly, the quality of the development workflow is not the same.

Not sure what the performance of Visual Studio is like on low-end systems, but I imagine a professional developer using Unity values their tools enough to have 32+ GB of RAM, 6+ core CPU, SSDs (or NVMe on PCI) for everything, and a fast GPU, probably a 1080. With a decent system, it’s a good experience using C# and MS Visual Studio or VS Code. Also, there’s several VR packages that only run on Windows.

I think part of the reason that I didn’t like Visual Studio before is that I’m not a professional developer and had mid-range hardware running Linux. When I used Windows, the experience was horrible. If you compare Linux on mid-range hardware to Windows on mid-range hardware, Linux may offer a better experience for some applications.

When you get into high-end hardware with VR or graphics-intensive applications, it’s going to difficult to find comparable graphics optimizations to Windows.

I’m currently looking for an excuse to upgrade my system.