Would you like the ability to make your iPhone to emit a "gong" sound? Further, would you, ideally, like that gong sound to be accompanied by a low-fidelity, semi-realistic animation of an actual swinging gong? If so, then do I have the app for you!
Introducing Gong Sound, available for free on Apple's App Store!
The gong swings back and forth -- in a physics-approximating, 7-frame animation! -- for a few seconds after being tapped!
iPad support!
Supports landscape (device held sideways) mode!
High score counter! (With classic-arcade-like non-persistence!)
No ads! No in-app purchases! No data harvesting! No review nags! No network connectivity used or required!
FREE!
Wait... so it's just a gong app?
Yep. 🙂 The Gong Sound app is just a "toy" project. I got the code written, and the art and sound assets adapted, for the initial 1.0 version in all of a couple of hours. (As compared to the dozens of hours that I spent on Desktop Journey, or the hundreds spent making Vigil RPG!)
At my company, teams strike a gong that we have in the office as (part of) a celebration of notable achievements. In these days of remote work, I figured: Why not give folks an easy way to "gong" from home which sounds better than banging pots and pans together, and isn't likely to play an ad instead of the desired sound effect when the "Play" button is pressed.
(And doesn't violate any of the items in that second-to-last bulleted list item above, in the fashion of most existing similar apps on the App Store.)
Gong Sound is a free download on iOS devices, so if you're reading this post on your iPhone: Share and Enjoy!
I finally opened up my wallet and replaced my aging iPhone 6S -- fare ye well, headphone jack -- with a new iPhone 12. It's my first purchase of a brand new iPhone since buying an iPhone 5S, all the way back in 2013. (I had bought the 6S secondhand, via a seller on Swappa.)
While I'm finding the 12 to be a nice upgrade, one big usability regression jumped out at me in the early going: The difficulty of activating Control Center. (That's the screen where you can adjust volume and brightness, enable/disable wi-fi and Bluetooth, and so forth.)
On the 6S, activating Control Center was easily done while holding the phone in one hand, via an easy swipe up from the bottom of the screen. On the 12 -- which has no Home button -- that gesture now navigates to the Home screen. Control Center is now activated via a swipe down from the top-right corner of the screen.
The 12's larger size makes that gesture difficult to perform one-handed. Compounding the problem, although I'm right-handed, I use my left hand when operating the phone one-handed -- so that top-right corner is unreachable without substantially shifting my grip on the phone (which increases the risk of fumbling it).
With its generally very good support for accessibility features, I figured Apple would provide a simple option somewhere in Settings to swap that top-right-corner gesture for the top-left-corner. Unfortunately -- at least as of iOS 14 -- there is no such option.
The solution
To the rescue comes a configurable accessibility gesture pointed out by @temptertemper: The "Double Back Tap". Under Settings → Accessibility → Touch → Back Tap, you can set a firm "tap tap" performed on the back of your phone to perform one of a number of options -- including bringing up Control Center!
That double-tap is easily done with an index finger, while still securely holding the phone in a one-handed grip. In the early going, I've found the double-back-tap to be a much easier-to-perform alternative to the stock swipe-down-from-top-right-corner gesture.
Triple-back-tap is also assignable from the same place in Settings. I've assigned that to bring up Notification Center, which is also by default activated by a swipe down from the (distant) top of the phone screen.
Thanks to @tempertemper for this great suggestion, which I expect to be a nice quality-of-life improvement in daily use of my new iPhone!
This is a "just for fun" post on the pros and cons of traditional wired earbuds vs Apple AirPods for everyday use.
Hat tip to my brother Jeremy for inspiring me to finally put this post together. He was recently seen on Instagram rocking some sweet wired earbuds, even though he's retired, and has sufficient discretionary funds to buy himself AirPods, if he so chose!
Wired Earbuds
Apple AirPods
Price tag 💸
✅ From around US $10-15 💰
US $159+ 💰💰💰💰💰💰💰💰💰💰
Ease of switching between multiple devices (e.g. iPhone 📱 and MacBook 💻)
✅ Yes (on devices with a 3.5mm jack, like my iPhone 6S)
✅ Yes
Risk of inadvertently getting yanked or knocked out of ears 👂
Wires can get caught when doing chores
✅ Minimal
Works with newer iPhones
Dongle needed 🙄
✅ Yes 🍎💰
Looks like AirPods win in a landslide! Let's all throw away our inexpensive, never-needs-charging, high-fidelity earbuds, and buy AirPods! 😜
For clarity, I am indeed perfectly aware that the ship has (for the most part)
sailed on this debate. Apple, at least, doesn't seem likely to release a
new phone ever again with 3.5mm headphone jack technology, when they could sell
the folks buying that phone $160 AirPods instead. I stand by my entitlement to my
(unpopular) opinion on this topic regardless. 😁
I've just released a new, free app for iPhone: Desktop Journey!
Desktop Journey is a single-page
dashboard app for iPhone, with an attractive display of time, current and
next calendar appointments, reminders, weather, and micro-break
prompts. It gives your phone a purpose while it's in its charging cradle on
your desk while you work.
With the exception of an optional weather add-in, Desktop Journey is completely free and ad-free.
Why did I make Desktop Journey?
For a while now, when I'm at work at my desk, I've had my iPhone sitting in a charging cradle on the desk. I wanted to put the iPhone's screen to good use, so it wasn't just sitting there doing nothing.
This isn't adding value. We can do better!
I tried a few different alternatives to just a blank screen, such as a simple analog clock app, but I couldn't find any "dashboard" apps that took advantage of the phone's screen to display a variety of useful information.
So, as with Vigil RPG,
I decided to build it myself!
What does Desktop Journey do?
Here's an overview:
Read on for more details!
Current Time
The top portion of the screen is devoted to a simple analog clock.
Before creating Desktop Journey, I was using a simple iOS analog clock app
as a workaround, and I wanted to keep that core experience (while also
adding more to it).
A little "desktop calendar page" icon, styled to look like the native
iOS Calendar app icon, shows the current weekday, and day of the month.
"Now" and "Next"
These two panels, shown in the middle portion of the app, display calendar
events, reminders, and -- with an optional subscription -- weather and
temperature.
🗓Calendar events are taken from the device's calendar (after
permission has been granted to read the calendar). Thus, if you've already
set up your iPhone's calendar to sync with another source, such as a Google
or Microsoft Outlook account, events from that calendar will appear.
The "Now" panel shows the meeting or appointment that is happening
currently, if there is one. The "Next" panel shows just the upcoming
appointment (not all of the day's remaining appointments) -- plus the
single next appointment after that, if there is one immediately
following -- which makes for a nice at-a-glance answer to the question
"What do I have coming up next?".
Tapping on an event opens up the view of the current day's events in the
native iOS Calendar app.
🎗Reminders likewise are sourced from the native iOS (again,
only after you've granted permission).
The "Now" panel shows a reminder that was due earlier today that you haven't
completed yet, if there is one. The "Next" panel shows today's next upcoming
reminder that has a date and time set, if any.
Tapping a reminder opens it in the iOS Reminders app, so you can
mark it as complete, or edit it.
Temperature and weather for the current locale,
and today's upcoming high or low temperature, are optionally shown,
with the purchase of a subscription. (These cost me money
to subscribe to an API that provides worldwide weather information,
and while I'm happy to provide Desktop Journey for free, and with
no ads, I'd like to not lose money on it!) ☀
Celsius and Fahrenheit are both supported. Which is displayed can be
toggled on the Settings page.
The Hero's Journey
A hero character -- who may look familiar if you've played Vigil RPG!
-- walks along at the bottom of the screen, on a long journey.
The biome changes each day, providing some visual variety. In other words, if you run the app again
tomorrow, the hero will be somewhere else! There are several biomes, including
taiga (pictured up above), desert (pictured here), grassland, caves, forest, dungeon, and more.
The sky also changes, based on the real time of day: Night (as shown here), sunrise, daytime, and dusk.
Encounters - Tasks and Exercises
Several times per day -- at semi-random intervals; typically a little bit less frequently than once per hour --
an enemy encounter will take place!
Each encounter prompts you with an action
that you can perform yourself, "in real life," to defeat the enemy.
Each of these
are quick-to-perform actions that are good opportunities
to take a very brief break from whatever task you're working on
as the app is running. In this pictured example, you'd
stand up from your chair and stretch; then, you'd tap the ✅ button.
There's no time pressure; encounters will last
indefinitely (as long as the app is running), so you can delay if
needed,
and complete them at a convenient time. Alternatively, you
can always just hit the Skip button to bypass the
encounter instead.
There are two types of encounters: Tasks and exercises.
Tasks are like this one: A simple action that you can perform from your desk as a micro-break. Other tasks
include "tidy your workspace" and "message a loved one".
Exercises can help you get moving a bit during your work day. An example is "Do 5 push-ups!".
Exercise quantities can be adjusted with + and - buttons that appear during the
encounter; so you could tell the app you did less or more than 5 push-ups, for example.
The encounters feature can be turned on or off in the
Settings ⚙️ menu. Individual tasks and exercises can also be enabled or
disabled,
if (for example) your circumstances don't permit
standing up, or if you don't feel like being prompted to do push-ups. 🙂
When you complete an encounter, you'll get a stats display of how many of that task or exercise you've completed -- both today, and all-time.
Settings
Settings can be accessed by tapping the Settings ⚙️ icon at the
top of the app's page. In addition to customizing exercises, you can
disable
screen lock while the app is in the foreground; toggle
temperature units between Fahrenheit and Celsius; and view the in-app
"About" and
"Credits" pages.
Give it a try!
As mentioned above, Desktop Journey has no ads, and is a free download, so give it a try, and let me know if you like it! Download Desktop Journey on the App Store.
This post covers how to wire up a delegate method in Objective-C. I'm always forgetting how to do this, so this post will serve as a reference for myself going forward, and hopefully may be useful to others as well!
A delegate method is useful when a given object needs to call a method on an object to which it does not have a reference. This typically comes up when the calling object is the child in a parent-child relationship in the application's object model.
A practical example of when I've used this pattern is in Vigil RPG, after a combat has concluded, the combat screen ViewController notifies the parent ViewController (either the world map, or the dungeon level) that the combat has concluded, so that the parent can resume playing its background music.
In the parent class (the CALLEE):
In the .h file:
Add the delegate as an interface in the class declaration:
@interface ParentClass: NSObject<myDelegate>
(There's no need to declare the callee method in the class's public interface.)
In the .m file:
1. Wire up the delegate
This can be done in the init method, or in any location where a reference to the child object is available which gets called only once:
self.myChild.myDelegate = self;
2. Define the callee method
- (void) myDelegateMethod {
// Implementation of the method that we want to call
// from the child class goes here. }
In the child class (the CALLER):
In the .h file:
1. Define the delegate protocol
(This can alternatively be done in a standalone .h file if the delegate is going to be used from more than a single callee class.)
This can go just before the @interface:
@protocol myDelegate<NSObject>
- (void) myDelegateMethod;
@end
2. Declare the delegate property
(This goes inside the @interface, along with any other @property items)
@property id<myDelegate> myDelegate;
In the .m file:
Add calls to the delegate methods
These go in whatever are the appropriate place(s) in the class method implementations:
if (self.myDelegate != nil)
{
// Calls myDelegateMethod on the parent class [self.myDelegate myDelegateMethod]; }
Vigil RPG is a game that I solo-developed and released for iPhone back at the end of 2014. Vigil RPG is the kind of designed-for-mobile RPG that I couldn't find on the App Store, so I wrote it myself! It features interesting combats (even in non-boss battles), while also allowing you to play each combat round in a single tap.
I'm happy to announce that Vigil RPG, Special 5th Anniversary Edition, is now available! It's a free update to the original Vigil RPG app. It features:
Universal (iPad) support
Vigil RPG had always been playable on iPad, but only as an automatically-scaled-up version of the original iPhone 4. Now, Vigil RPG is a full Universal iOS app, with every screen in the game having been updated to take advantage of iPad portrait-mode screen resolutions.
iPhone X and iPhone 11 support
Vigil RPG now also takes advantage of the full resolution available on newer iPhones, all the way up to the iPhone 11 Pro Max. (Future large phone models will now be automatically supported as well.) Enjoy Vigil RPG's beautiful pixel graphics in glorious high resolution on your new device!
New and reworked enemies
A new, unique early-game boss enemy has been added. Players familiar with Vigil RPG will no longer find it quite so easy to retrieve a quest item from one of the local farms early on in the game!
A number of existing enemies in the game have been reworked to make them more interesting to fight. A few examples:
The Tank Goblin, instead of just having thick armor, now has a defense that is really tough to crack. Players familiar with how to beat King Hippo in Nintendo's Punch-Out! series, though, should have an advantage in figuring out how to hurt him effectively...
The Skeleton Fire Mage now chants some strange words at the beginning of combat. Could those words be somehow related to the combat round numbers in which it casts its FIRE spells?
The Fire Elemental now grows into a larger and larger flame as combat progresses! The ICE spell can help cut it back down to size, though!
It's now extra effective to use the never-miss FIRE spell on flying enemies, such as the Giant Hornet that is encountered early in the game.
New Music
Delight your ears with new 8-bit-style music tracks for many of Vigil RPG's unique boss enemies!
As a bonus, here's my favorite, as a free download: The new Arcane Tower boss battle theme! (Composer credit: nene at opengameart.org!)
Everyone's favorite root-beer-serving bartender, Bo, has lots and lots of new commentary, gameplay tips, and humor for you at the Tavern. You can also now just tap him to get more tips, instead of having to leave the tavern and come back again.
Local High Scores
Vigil RPG has always featured an "elapsed turns" system, which tracks how efficiently and effectively you've been proceeding through the game. Completing quests in fewer turns gets you better quest completion rewards.
Now, a local high scores table for each quest is available at the Tavern! When you complete a quest at the Tavern, your performance compared to other save files and prior playthroughs on your device is now displayed.
Many more enhancements!
To name just a few:
Stats are now displayed at the end of combat for how well you did mitigating enemy special attacks (i.e. blocking them, or otherwise taking advantage of an enemy's weakness to stop them from being effective), and interrupting enemy spells. These stats for the entirety of your playthrough are also now displayed on the Hero Status screen!
The Shaman (a late-game NPC located in a remote section of the world map) now invites the hero to rest at his hut (to restore HP) after he is done assigning the hero a quest!
The Town of Arboria now has a new and improved appearance!
Some quest rewards, hero level-up bonuses, item prices, and monster stats have been tweaked to make Vigil RPG even more finely balanced!
Picking up Fire Rubies in the Volcano now slightly restore the hero's HP!
400+ new git commits of new sound effects, UI improvements, and other goodness!
Support your local Jon Schneider's Tech Blog indie game development scene!
To learn more about Vigil RPG, check out the Vigil RPG website. Or help me buy my wife a delicious coffee by checking out the game that TouchArcade.com named one of the top 10 JRPG-style games available on iOS -- alongside such notable series as Final Fantasy, Dragon Quest, and Chrono Trigger! -- by buying your very own copy of Vigil RPG on the App Store!
Apple announced last week that the new iPhone 7 won’t have a “standard” 3.5mm stereo headphone jack; it’ll only have a Lightning port. To offset this, the iPhone 7 is shipping with a dongle that allows 3.5mm headphones to be plugged into the lightning port, as well as with a pair of earbuds that have a Lightning connection instead of a 3.5mm.
Although I’ve only ever owned Apple iOS smart devices up to this point – and I’ve even developed and published my own successful iOS-exclusive RPG game on the App Store – the lack of a standard 3.5mm jack on the iPhone 7 is unfortunately a deal-breaker for me personally. Here are my reasons why some of the arguments that I’ve heard for why the iPhone 7 having no standard audio jack is no big deal don’t resonate well with me.
Apple is giving you a dongle! Just use that!
I have several different pairs of earbuds that I use with my phone, so just keeping the dongle permanently attached to one pair isn't an option.
I could buy a dongle for every pair of earbuds I own, but in addition to being somewhat expensive and annoying, it would be a hassle to remove (and keep track of) the dongles when I want to use the earbuds with a non-iPhone device.
Keeping a dongle always attached to my phone isn't going to happen. I don't want it always dangling, and when I remove to charge the phone it might get lost.
Finally, I already did the thing where I need to use a dongle to plug in headphones via a device’s power port: With the Gameboy Advance SP, back in 2003. I found the experience to be pretty annoying back then.
Apple is giving you Lightning-connector earbuds! Just use those!
I often plug my earbuds into devices besides my phone, so replacing all of my earbuds with lightning-connector versions isn't an option. Here’s a partial list:
My PC
My iPod Nano (which I still use for listening to live sports broadcasts on local FM radio)
My Nintendo DS
The built-in jack in airplane seats (for watching live sports or recent movies)
The built-in jack in the treadmill-with-TV at my gym
Further, I’m not interested in owning two distinct sets of earbuds, one set that works with 3.5mm connections, and one set that works with the iPhone. (I own multiple pairs of fairly inexpensive earbuds, because over time I’ve learned that I tend to misplace them frequently.)
I’d much rather be in a position where any pair of earbuds I own will work with any audio jack that I own, or might encounter.
The iPhone works with Bluetooth earbuds! Wireless is better anyway!
I don't like wireless / Bluetooth earphones much, as I have found that for me, the hassle of needing to keep them charged outweighs the benefit of not having a wire.
I’ve found that having to manually re-pair them often (when I use the same set of earphones with multiple devices) can be annoying as well.
But the 3.5mm standard is antiquated! Stop living in the past!
Sure, it absolutely makes sense to replace old technologies when superior replacements become available.
In this case, though, I’d argue that for most practical purposes Lightning (for audio connections) is an inferior alternative to 3.5mm audio. Lightning offers no discernable improvement in sound quality, and forces the use of workarounds like the dongle, in contrast to the “it just works” of the 3.5mm stereo standard.
So, I will not be buying an iPhone 7. My tentative plan is to replace my current iPhone 5S with an iPhone 6S – which works with all standard earbuds, no dongle needed! – at some point in the next year or two. Hopefully that’ll last me until at least 2019, at which point I’ll decide what to do next – including maybe making the painful jump away from my accumulated iOS software library to Android, Windows Phone, or whatever other future alternative might be available.
Sometime in mid-2013, I had a hankering to play a particular kind of RPG on my iPhone. I wanted a game with these features:
Turn-based combat.
Portrait orientation, and thus playable with one hand. (e.g. while eating with the other hand.)
A single protagonist/hero. One thing I don't like about party-based RPGs is that typically, a couple of your party members need be KO’ed before you feel like the team is actually in any real danger. This doesn't tend to happen against non-boss enemies in most games, and thus those games often end up feeling uninteresting for long stretches.
Interesting decision-making in combat -- even vs. non-boss enemies -- something beyond the typical RPG trope of "do basic attacks / target enemy elemental weaknesses / heal self when injured / repeat."
No hard-to-use on-screen virtual D-pad for character movement. Give me a way to move my character that’s designed especially for a touchscreen, not one based on a traditional physical controller’s tactile D-pad!
A combat system built around LOW numbers and visible enemy HP / stats, so I can calculate that if, for example, that enemy has 9 HP left, then I can perfectly finish it off by doing my 4 and 5 HP attacks respectively over the next 2 rounds.
FAST combat. No waiting on long combat animations; no wading through multiple menus to kick off a combat round. This is my phone; let me whip it out when I’ve got 30 seconds, and actually accomplish something quickly.
No save points. Why not just always keep my game saved automatically? (Even mid-combat!)
Game designed with a goal of fun, not of corporate revenue generation! Absolutely no IAPs or premium currencies or ads or stamina timers.
I couldn't find that game on the App Store.
So... I decided to write it myself!
After spending most of my evenings between 10:00pm and midnight (after my day job, spending time with my family, getting the kids into bed, and daily chores) for about 18 months designing and writing the game – learning the Objective-C programming language and the whole MacOS / iOS development ecosystem along the way – Vigil RPG was released in November 2014!
Here’s Vigil RPG’s combat screen, which illustrates the realization a lot of the points noted above that I wanted to achieve with the game. You can check out more screen shots and info about the game at the Vigil RPG website!
Lifetime App Store Sales Stats
I don't really have any reason to keep them private, and I thought it might be insightful for other #indiedev folks and industry observers, so without further ado, here are the lifetime sales statistics to date for Vigil RPG (iOS)! According to my developer account at iTunes Connect:
Released November 2014 at a price of US $2.99
354 paid copies sold, almost entirely at $2.99, with a few at $1.99 in a "birthday sale" in November 2015
Total gross sales: US $1004
About 70% of the lifetime sales of Vigil RPG came in the first 30 days after release.
Vigil RPG got about ten 5-out-of-5-star community reviews on the App Store (and no 0-through-4-star reviews) immediately after release; it’s gotten zero community reviews since then. (Vigil RPG has no “review nag” prompts, which was an intentional design decision.)
The second big spike in sales was after the 4-out-of-5-star TouchArcade review (which I was thrilled with, and found to be extremely on-point and fair – much respect to the reviewer, Shaun Musgrave). TouchArcade was the only major site to do a review.
The little spike in November 2015 was the beginning of the $1.99 sale. Sales dropped off again rapidly even though I left the price at $1.99 for a while.
Outside of the initial release and $1.99 sale periods, Vigil RPG sold at a rate of roughly 1 copy per week.
Net proceeds after Apple's cut: US $707
3 x $US 99 of Apple annual developer licenses to develop the game and keep it live on the App Store = $297. Net proceeds after Apple dev license fees: $410
Other misc. operating costs -- State of Michigan incorporation fees for Aggro Magnet Games LLC, web hosting for http://aggromagnetgames.com -- of around $100 to date. Bottom line proceeds to date: About $310
122 free copies redeemed (promo codes sent to review sites; a few free giveaways to try and drum up visibility and community interest)
I didn’t bother trying to keep any stats on piracy rates, but at least one site out there (fairly readily findable via Google search) has the binary of the game posted for free download.
Given a very very rough estimate of about 600 hours spent creating the game, $310 in net profit works out to a wage of about $0.50/hour. Not exactly enough to quit the ol’ day job! (Fortunately, I already have a day job which I love!)
I am, however, honestly totally fine with that performance. I made an intentional decision up front for my goal for the Vigil RPG project to be to "make the game I wanted to play" – with no design compromises being made for the sake of monetization. So no IAPs, no ads, no other typical "freemium" features (or “anti-features,” as the case may be) such as premium currencies or stamina timers.
$0.99 Sale
Consistent with my initial goal for Vigil RPG of prioritizing fun over profits, as of today, for the first time ever, the App Store price for Vigil RPG is reduced to $0.99! I’m hopeful that this will allow more people to enjoy the game – assuming there’s a segment of folks out there who are interested in iPhone RPGs, and are unwilling or unable to buy the game at the $2.99 price point, but will go ahead and pick it up for $0.99.
The main reason I didn't just cut the price all the way down to $0.00 (free) was that admittedly there's somewhat more cachet in being able to say "The game I made is for sale on the App Store!" than "I made a game and I'm giving it away on the App Store since no one was really buying it!"
It would also be nice if Vigil RPG’s proceeds would at least cover the annual $99 that Apple requires to keep it listed on the App Store. To that end, I might bump the price back to the original $2.99 at some point if sales at the $0.99 price point don’t generate much increased volume relative to the 1 sale/week or so of the $2.99 price.
“Buy It Now!”
Hopefully this detailed peek into one game’s iOS App Store performance was helpful, or at least mildly interesting!
If you’d like read more about the gameplay of Vigil RPG, you can do so on the Vigil RPG website. Or, you can check out the full 5-to-10-hour adventure firsthand via Vigil RPG on the App Store if you’ve got an iOS device, and can scrape together enough loose change to join the exclusive club of premium iOS game owners!
You can also hit me up with any questions you’ve got on Twitter at @AggroMagnetGame, or below in the comments!