If you haven’t already, check out my new iOS game, Word Reactor. It’s a cool word puzzle game where you try to guess the word with a limited amount of guesses. The game tells you how many letters you have right and how many letters are in the right place. But it’s up to you to determine which letters are correct and guess the word before you run out of guesses. The game gets progressively harder as you are successful.
NBC Breaking News App Shutting Down
“The decision to close Breaking News — with its loyal following and finely tuned push notifications — comes as publishers around the world are increasingly viewing users’ lock screens as valuable territory.”
This was one of my favorite apps. I’m sad to see it close down but my lock screen was competing between Breaking News, Twitter, Messages, Apple News, etc.
SpriteKit vs Unity
There are many frameworks for designing and developing games on iOS devices. I wanted to share the advantages I found from both SpriteKit and Unity.
It’s Apple’s own framework and it’s already integrated into the iOS APIs. I always choose Apple’s frameworks and APIs first because it generally ‘just works’ and Apple designs it for it’s own ecosystem leading to better efficiency.
SpriteKit doesn’t cost anything. As long as you have a paid Apple Developer membership, you can use SpriteKit in all of your games without paying or giving credits (Apple still takes 30% from your App sales).
Just because a framework is outside of Apple’s ecosystem, I don’t always dismiss it. There are many situations in which extra frameworks or libraries are needed.
If you are developing a game for various platforms such as iOS and Android, you’ll need to use something like Unity. Obviously you wouldn’t want to double or even triple the amount of development work. Unity is cross-platform for iOS, Android, and Windows.
Unity has a much better visual scene designer than SpriteKit. It’s more powerful and you can see your scene in real-time which helps with development time.
If you are new to iOS and Swift development, definitely start with SpriteKit. It’ll help you understand the Swift programming language better. As your skills improve, experiment with other frameworks and choose the right one for your project.
Development: Git Branches
Those who use git or other version control systems have processes that work for them. Here is how I use git branches to organize my projects.
This is the branch I use that is unstable, untested, and unreleased. Any features or code I’m working on is constantly checked into this branch. It may contain code that will break my project but this contains everything I’m working on.
Whenever I’m ready to test and I think my code is good, I’ll merge the develop branch into this testing branch. If I find any issues, I go back to the Develop Branch and work on my code until I’m ready to go back to this Testing Branch.
Release Branch (Named by version number)
Once testing is complete, I create a new branch off the testing branch and name it the version number such as 1.0, 1.0.1, 1.2, etc. The code in these branches will never change. This is the code that had been tested and verified. Any future changes, including bug fixes, will have to go into a new version and a new branch.
After a release, I update the master branch. This is the latest verified, tested, ‘good’ code. Why have a Master Branch when I can just use the latest Release Branch? It’s more for organizational purposes. The Release Branches help me to organize release history (easier to write release notes and sometimes debugging). The Master Branch tells me this is the latest code regardless of release version.
There are probably better ways to utilize branches and project management include release versions. But this is what continues to work for me as an individual developer.
Swift 101: Constants and Variables
In Swift, constants are values that never change while variables are values that can change. For both constants and variables, different types of values can be assigned including strings, integers, arrays, etc. A constant uses ‘let’ while a variable uses ‘var’.
A player’s device in a game could be a constant if it won’t change.
let playerDevice = "iPhone"
This constant stores the player’s device as a string. Because it is a constant, it’s value cannot change.
playerDevice = "iPad" // This will produce an error.
A changing value, such as a score, can be stored as a variable.
var score = 20
This variable stores the player’s score as an integer. Later in code, this value can change. For example:
score = 21
There are many more data types than just strings and integers in constants and variables.
String: Usually text or a combination of text and numbers. Emojis can also be used in a string data type.
Int: Integers are whole numbers that don’t contain decimal places like 2, 73, -29, etc.
Double and Float: These are numbers with decimal places like 1.75, 9.49, etc. Double can contain many more decimal places than float for a more precise measurement.
Bool: This is a very simple data type, either true or false.
There are other types of data, but these are the most common.
Development: My IDE Toolbox
I’m always curious to know what other developers use for programming, so I decided to share what IDEs I use on a regular basis.
This is an obvious one. I know a few developers use other IDEs for programming Swift in particular, but those are usually outside of iOS development. Xcode is needed for building and deploying iOS, watchOS, and tvOS applications.
Xcode has improved greatly over the years. One of the cool features is Interface Builder. This feature lets you design your app by dragging views, images, buttons, etc. to a storyboard and connect those elements to code. You can also view the designs in different devices such as various models of iPads and iPhones.
I’m torn about Interface Builder. Sometimes I’ll use the builder and other times I’ll create all my designed elements via code. I feel like I have more control when developing in code but coming from a design background I also want to see what I’m doing instead of building my app several times. I’m still on the fence on what I prefer, but maybe over time I will lean one way.
For many years I used various tools for PHP development beginning with Notepad on Windows then I moved to Coda from Panic on the Mac. I love Coda and I’ll describe it more in the next section, but when it comes to PHP, PHPStorm from JetBrains is a clear winner.
Every week I’m learning new features. A few highlights include the Database/MySQL connector so you can write and test queries easier. Much like Xcode, any syntax errors will display right away so you can code faster while catching simple errors quickly.
My favorite feature is debugging. You can debug code locally or even listen on live servers and debug when hitting a PHP service. There is the ability to catch PHP exception errors and break at those points for more precise debugging.
When it comes the HTML and CSS development, the tools are endless. Everyone will have a different opinion on which tool to use. For me, Coda from Panic is clean and Mac friendly. PHPStorm is good for HTML/CSS as well, but I’m drawn to a cleaner IDE like Coda.
The built-in FTP feature is great so I can easily move files and even edit live files. The terminal is nice so I can work on server-related items while developing my websites (restarting Apache, change file permissions, etc.).
What I like most is Panic Sync. I can sync my websites and ssh keys to all my devices such as my Mac, iPhone, and iPad. There have been numerous times I needed to make a hot fix but I was away from my computer. I can quickly open up Coda for iOS, edit remote files, and make my tweak.
There are several good IDEs out there for various situations. I suggest spending a lot of time studying the IDEs you use as you’ll find hidden features that will make your workflow more efficient.