So. Thus far most of my posts on this blog have been about my Create with Code Live personal project, Last Day to Live. That’s because for the last few weeks, that’s what I’d been spending most of my time on. But it’s not the only thing I’d been spending time on, or even the only Unity Learn course I’d been spending time on—as discussed in previous posts, I’d also gone through the Beginner Fundamentals, Beginner Programming, and Beginner Design courses, plus I started the Beginner Art course and went through a few tutorials on various Unity subjects.
But the Create with Code Live course isn’t even the only Unity Learn Live course I’d been taking. There was also a five-session live course on Roll-a-Ball, a Unity learning project that’s apparently an updated version of a classic project that many people have used to learn Unity. (Or so it was mentioned in the project; of course being new to Unity myself I wasn’t familiar with it before.) The Roll-a-Ball project differs from most of the Unity projects I’ve seen in that it doesn’t use any graphical or 3D assets beyond those that come with Unity; it’s built entirely with primitive objects.
It’s also much simpler than the Create with Code project. The time estimate given on the page for the (non-live) version of Create with Code is 37 hours 10 minutes; for Roll-a-Ball it’s 2 hours 10 minutes. Still, it does cover the fundamentals of using Unity: what the different windows in the editor are for; navigating in the Scene window; basic scripting; even using UIs and the Unity TextMeshPro package. So I’d say it’s definitely a good introduction to Unity. And for the short time involved, you still end up with a finished, albeit simple, game.
As did many of the participants, I added some additional touches to my own version of the Roll-a-Ball game, which I called On a Roll. I put in a timer so the player could race the clock and have some measurable goal besides just collecting all the pickups; I added particle effects and sound effects; I expanded the playing area from the default square to a 3D network of branching paths; I put in a few extra details like moving obstacles and some playing around with lights. There was more I was considering adding—in particular, I’d planned to put in a teleporter that would bring the player to an extra area with more pickups to collect (and another teleporter there that would return the player back to where they started)—but I didn’t end up getting around to doing that because I was prioritizing trying to get as much done as possible on Last Day to Live before the final Create with Code Live session. And, honestly, it’s probably just as well; I don’t know that adding more complexity would really have improved the level.
On a Roll was one of the Roll-a-Ball games chosen by the instructors, Brian Kenney and Alexei Othenin-Girard, to be played live in the final session. They had a bit of trouble getting it to play from my site for some reason; I eventually got it uploaded to Unity Connect, and I think they ended up playing it from there. I was asked a few questions on how I did things, and the instructors pointed out some features of the game that they liked. They did make the criticism that the ball was a bit slow going up the inclines, which honestly is totally fair.
I should confess that one game feature that Alexei praised was entirely accidental: he pointed out that the shadows of the pickups above were visible in the starting area, therefore giving the player an indication that those pickups existed and a reason to want to explore there. Well, I’d thought those shadows were an unwelcome distraction and actually hadn’t wanted them there. Originally, the starting area was completely in shadow due to the platform above; I’d set the Cast Shadows option in the Mesh Renderers on the planes that made up that platform to “Off”, but that still left the shadows of the pickups on the platform. I could have done the same to those pickups as I had to the platform, but then they wouldn’t cast shadows on the platform directly underneath them, either, which I thought would look wrong, so I didn’t do that. I did consider arranging a trigger to turn their shadows on as the player went up the incline to get to that area (and off as the player went back down the incline), so they would cast shadows when the player was up near them but wouldn’t cast shadows when the player was in the starting area below, but I ultimately figured that wouldn’t worth the time it would take to implement it, given that, again, I was still focused on trying to get as much done as possible on Last Day to Live before the next morning. But actually, Alexei’s right; those shadows do serve a purpose and heighten the player’s sense of anticipation, and it’s probably a good thing that they’re there… even if I didn’t mean them to be.
If you want, you can play On a Roll here—or, if you have the same problem that Brian and Alexei did trying to play the version on my site, you can also play it on Unity Connect. You can, of course, also play other participants’ Roll-a-Ball games in the Submissions Gallery at the bottom of the Roll-a-Ball course page. Other submissions that were played during the last live session included:
- “Roll-a-Ball Arcade Version”, by Erik Vikner
- “Roll-a-Fire-Ball”, by Siddhant Gupta
- “Roll-a-Ball Test Version”, by Mahmoud Al-Omari
So what did I get out of the Roll-a-Ball game? Well, really, almost everything in the Roll-a-Ball course had already been covered in Create with Code. The only exception was an Input System package that wasn’t mentioned in the Create with Code course and with which I hadn’t previously been familiar—but of course that wasn’t really explored in depth, and I still don’t feel I know much about it. Still, I definitely don’t regret having gone through the course. I had fun doing it, and I wouldn’t say I didn’t get anything out of it. Even if I still don’t know much about the Input System package, at least I now know it exists and can look up more information about it later. And even if I’d used most of these features before, it’s still good to get more practice with them.
And of course things would have been different had I taken the Roll-a-Ball course first—which I think is the recommended way of doing it anyway; the Create with Code course is explicitly suggested near the end of the Roll-a-Ball project as a potential next step. The Create with Code course is much longer and more in-depth than the Roll-a-Ball course; it stands to reason that if I’d already done Create with Code there wouldn’t be much in the Roll-a-Ball course that was new to me… but if I’d started with Roll-a-Ball, that would have given me a quick overview of how to use Unity that I could later have expanded on with Create with Code.
So does that mean that Roll-a-Ball is a better starting point for learning Unity than Create with Code? Eh… well, I’d say it depends. If you’re going to do both, it certainly makes sense to start with Roll-a-Ball. But there’s nothing wrong with starting with Create with Code either. In fact, if there’s a problem with the beginner learning material on Unity Learn, it’s that there are too many good starting points. There’s Roll-a-Ball; there’s Create with Code; there are the various Microgames… any one of those seems to me to be a great place to start out with Unity. As still a relative Unity beginner, I’m definitely not the most qualified person to give a recommendation, but I’d say if you’re starting out with Unity, where to start depends on what you want to do. If you just want a very quick introduction to Unity, and intend to jump in and try things out on your own as quickly as possible, then Roll-a-Ball could be right for you. If you’re set on creating a specific type of game, you could start with the corresponding Microgame—the Microgames do a lot of the work for you and don’t teach much about how things are implemented, but they’ll show you what’s possible and get you comfortable with the editor. If you really want to get a broad overview of Unity and its capabilities, then the Create with Code is a good place to start. But really, I don’t think you could go wrong with any of those choices; you can always take other courses later to learn more. The amount of learning material available on Unity Learn seems almost overwhelming—I’ve been spending loads of time the past few months going through Unity Learn courses, and I still kind of feel like I’ve barely scratched the surface.
Speaking of Microgames… I’ve been trying out the new LEGO® Microgame that was just released in beta yesterday, and I’ll probably be making a post here about it tomorrow. See you then!