Catch us live today at 1pm, Irish time. We’ll be working on our Reality Composer scene some more!
The story so far
So far we’ve got two rocket ships, a back up and the launch one, a planet, and a moon orbiting that planet.
We added some behaviors to our rockets to take off and stop when they hit the planet. We experimented with physics bringing our launched rocket back to earth pretty dramatically.
Today
Today we’ll explore tweaking our scene in various ways. We’ll also show you what some of the other icons on the Reality Composer toolbar do.
I know a few of you really want to get that rocket to land on the planet…
So we’re going to explore a few ways we might get that rocket to land on the planet. Maybe you’ll come up with another, better way?
So come join us and have a bit of fun with augmented reality and hash out how we’ll get our ship to land!
Today we’ll be playing around with Reality Composer some more. Sticking with our horizontal plane anchor, we’ll work on adding behaviors. This will let us explore how objects we place interact with each other with different settings.
This will involve playing around with physics and materials a little bit, to see which material and combination of settings gets you the behavior you want to see.
Since we’ve built a rocket ship scene, maybe we’ll add some planets to our project.
If you want to dive into more AR and just can’t wait for our next session, you might want to check out developer.apple.com. They have amazing sessions like this: Building AR Experiences with Reality Composer, which are very relevant to the work we’ve been doing.
Even if you just watch those for aspirational purposes, we’ll try and re-create some of their examples with you during our sessions. If you have a favorite you’d like to see, why not drop us a line in the discussions?
Catching Up
Like we’ve done with other video series, we’ve gathered the augmented reality series into a playlist. You can now go sit and watch all the videos here, on this landing page.
I hope you’ve enjoyed the AR Makr sessions; they’ve really built an amazing tool for telling stories. It’s a great way to try out augmented reality for yourself, and the way they allow you to create your own is brilliant.
I’ve loved seeing the odd planets people have designed and being able to walk through their creations!
Reality Composer
For today’s session we’re going to go into Reality Composer a bit more. Reality Composer is Apple’s app for building out scenes.
Slide from session 609, WWDC2019: https://developer.apple.com/videos/play/wwdc2019/609
A scene is comprised of an anchor in the real world: it could be a table top, a wall, an image, or a face. That thing, the table top, wall, image, or face, will be what we use to anchor the objects we want to add to our reality.
Reality Composer also lets us define behaviors for those objects and can have them interact with physics… but not just normal physics, like the regular gravity of your particular scene, you can define how strong or weak you want the pull of gravity to be!
We’ll go looking for some more great video sessions from Apple on this technology during today’s session. This will really pay off for us later this month, when all the Worldwide Developer Conference 2020 sessions start getting posted online.
Blast off!
So we’ll see you today at 1pm, when we’ll build our own rocket ship taking off, right in your very own living room (or wherever you’re watching this session)!
We may be done with live coding our aquarium app, but hopefully you’re not! There’s so much more you could do with the tools and techniques we’ve used over the last few days.
We added an array to track the number of ducks someone might add to our aquarium. Then we added a function to a button to line the ducks up as if someone threw bread in the aquarium for them.
Not bad for a week’s worth of work! Well, if you add all the time you’ve spent already, learning about Swift, you’ve definitely spent more than a week!
Now, you may not have gotten this far. We covered a LOT of topics and wrote a lot of code. Go back over the whole Build an App Aquarium series and catch up on parts you feel you might have missed.
This has been a lot of material to digest. What we’ll see is that sometimes it makes sense to go back over previous code you’ve written to really understand it.
Today’s Session
The plan for today’s session is to go back to the Assemble Your Camera playground.
We were nearly done with building out our camera, so we’re going to finish it off over the next few days.
We’ll use the App class to organize our code, and maybe this will give us some ideas about how we can better organize our app or game from the App at Home playground.
In fact, when we review the code on the MyCamera class that notifies inputs of an image having been taken, you might start thinking about ways you could use that technique in your own game. Maybe for a fish that communicates with other fish in its school. Or in a squadron of enemy ships, when one gets near the player’s ship, notifies the others of their location.
You’ll be able to look back over a lot of the code you’ve written and begin to apply new things you’re learning. Or maybe just new things you’re appreciating, now that you’ve had a bit of experience coding.
We’ve been building out an app using the techniques we learned in Everyone Can Code Puzzles and the Lights, Camera, Code sessions. We have a Space onto which we can place different components, like Buttons, ImageViews, Labels.
Using techniques from the Assemble Your Camera playground, we’ve wired up the buttons to perform actions in our own code!
You might have an amazing app right now that looks like a super cool digital aquarium. Or you might have a space-based game with a few tweaks to the images you use.
More tools today
Today we’re going to explore some more tools we can use for our game or app.
Arrays are great tools for keeping track of things in our apps. We’ll look at using them to remember all the fish we add to our app aquarium.
I’ll also show you a really handy feature of Swift Playgrounds for refactoring your code.
Even if you’ve never done any programming before, so long as you have an iPad, we’ll get you set up to start your journey!
Yesterday’s Session
In yesterday’s session (part 4 of 3, yes, you read that right), we built more of our app/game aquarium.
We added a stepCounter for our fish, we added a button to add more fish, we laughed, we cried. And we definitely debugged a bit, too.
We worked on some of those esoteric skills needed in development: tracking down an issue when it looks like you have everything set up right.
New Landing Pages
We added a new landing page where you can access each one of our playlists from the past 53 videos. Hopefully this will make it easier to follow along with a given series we’ve been running.
We’ve organized them into one mega-playlist, the first one, kids.code().
The next is just the videos for the Everyone Can Code Puzzles material.
Then we have the Lights, Camera, Code playlist, which covers both the Lights, Camera, Code and the Assemble Your Camera playgrounds if you’re a little more advanced.
Yesterday we added a rough hit detection function to tell when we were near another component, which might come in handy if we’re building an app or game where we want to be careful for other objects on the screen.
To do this we looked deep inside the guts of the Swift playground to find the HelperFunctions.swift file, where there was a handy distance(from:) function defined on the Point type. This function did a lot of the hard work of figuring out how far away two points on our grid were from each other.
From there we could figure out if it would look like the images for those components were touching or not.
We also even added a Game Over label for our game, when we did detect a collision.
Today
Today we’ll be going back to the app just one more time, I promise!
We’ll add a counter for our game/app now. This will let us keep track of our score, whatever we determine that to be.
And the last thing we’ll do is add a label to show that score to the player.
There’s so much more we could do; we could spend weeks refining our work so far into a game or a full-fledged app.
Today’s Session
Today we’re going to focus on rudimentary hit testing… to see when one component we’ve added to the space is near another one.
We’ll use some functions defined for us inside the guts of the playground, including a method on the Point type called distance(from:). This will return us a Double, which we can use to figure out if two components appear to be touching or not.
This would be an important thing to calculate if we were to make a game where collisions with other objects might be a bad thing (or a good thing, depending on your game).
We’ll also harken back to chapter 10 of Everyone Can Code Puzzles and do some refactoring… we’ve been slapping code together without too much foresight thus far. Now we’ll revise our code a bit and make things that little bit neater.
A major goal of refactoring is often to make life easier for our future self: when we sit back down to go further with our app or game we’ll thank ourself for packaging code into a function or storing something in a variable so we could use it later.
Today’s session promises to be a ton of fun, so tune in with us and let’s build an app in Swift Playgrounds!
Recap
Yesterday we started to explore building out an app inside Swift Playgrounds.
We added buttons on the screen, a fish, set a background image, and even hooked up the button to move the fish.
The thing I loved about yesterday’s session was the nearly endless possibilities it opens up for us. We can build anything from here:
a calming aquarium
a really stressful aquarium in which sharks chase your fish
a fishing game
a space game with enemy ships you need to avoid
an app for an aquarium to place by its tanks
you name it!
The students in the house here wound up building two of those options and discussing at least two more, coding for another three hours after the live coding session was over!
Today’s session
So today we’re going back to that well. We’ll refine our own aquarium example a bit, add some more controls, implement some logic in our functions.
The goal will be to spark some ideas of your own for your own app. What are you going to do?
Drop us a note on Twitter, or send us an email with directions you’d like to see, and we’ll talk about it on air.
We’ll go back to the Assemble Your Camera playground, for sure, we haven’t forgotten about that, but this side exploration, using some of those techniques and building blocks from the camera playgrounds will hopefully provide some inspiration.
Coding can be an incredibly creative outlet, let’s get a little creative today and build an app!