Here’s something obvious that I’ve been missing for nearly 5 years — a way to show the player their progress! Well, I guess technically just one year since I didn’t have waves until last year… but still.
In version 4.2, I added this flag to the inside of the house (reminiscent of the old scoreboard that used to be in the same place). I am now saving the furthest wave you’ve beaten and showing that front and center when you start the game. This also has the added benefit of showing you how many total levels are in the campaign.
![](https://alanvitek.com/wp-content/uploads/2024/05/wildwood-progression-indicator.jpg)
Adding this flag has a few benefits:
- Shows your best run, and encourages having another try
- Shows the total levels, demystifying whether or not the main game is “infinite”
- Gives a better sense of progression and completion
- Is saved locally and doesn’t require internet or a Game Center account
- Is used for earning the Campaign Completion achievement
- Serves as a reminder for someone who has taken a break from the game and has come back
For players who do use a Game Center account, doing this also allows me to make the Campaign Completion achievement “progressive” — basically it fills up like by a percentage as you beat levels until you complete the game and earn it. That’s nice to have too!
![](https://alanvitek.com/wp-content/uploads/2024/05/wildwood-campaign-achievement.jpeg)
This was surprisingly easy to implement. Since I am already storing the value of the furthest wave you’ve completed, I turn that into a percentage of 100 (then round it), and send that over using GameKit (using IOS Native, a plugin by Stan’s Assets):
using SA.iOS.GameKit;
...
ISN_GKAchievement achievement = new ISN_GKAchievement("itunes.achievement.id");
achievement.PercentComplete = 50.0f;
achievement.Report((result) => {
if(result.IsSucceeded) {
Debug.Log("Achievement reported");
} else {
Debug.LogError($"Achievement report failed! Code: {result.Error.Code} Message: {result.Error.Message}");
}
});
It’s a great plugin and makes interacting with Apple’s GameKit API in Unity very straightforward. I had been using a variety of different methods to do GameKit stuff in previous versions, but have since pulled most of that legacy code out and just using IOS Native to handle all of it.
A Different Process this Year
I might make another post about this soon, and I’ve hinted at it in the past, but I think this year I’m going to do more smaller update to Wildwood instead of doing one giant release in the fall. I’m still planning on doing a more substantial rollout around Halloween, but instead of saving EVERYTHING for that, doing incremental updates has been a much nicer process and way less anxiety for me having so many things to test with the old method.
If you’ve made the jump from Twitter to Threads, give me a follow over there. I’m trying to be more active online and the game dev community I’ve found has been wonderful!