Cristian Bercu, Author at GameAnalytics https://gameanalytics.com/author/cristian-bercu/ Sun, 25 Feb 2024 16:35:55 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.5 Zelda: Tears of the Kingdom – A Masterclass in Sequel Design https://gameanalytics.com/blog/zelda-tears-of-the-kingdom-review/ Thu, 19 Oct 2023 10:43:53 +0000 https://gameanalytics.com/?p=21403 Zelda review cover image

Tears of the Kingdom adds another tenet to its game: Creative exploration. And that’s why it appeals to absolutely everyone. We look at exactly what we can learn from Tears of the Kingdom and how its design philosophy helps the game appeal to every type of gamer out there.]]>
Zelda review cover image

Since it’s release in May 2023, Zelda: Tears of the Kingdom has trounced the charts. It’s got a 95/100 on Metacritic, and social media is awash with praise. It’s not a surprise. Zelda games have always been among the upper echelons – classics synonymous with gaming. But Tears of the Kingdom is a rarity in the series. It’s a direct sequel with largely similar mechanics to its predecessor.

So it’s worth taking the time to look at exactly what we can learn from Tears of the Kingdom and how its design philosophy helps the game appeal to every type of gamer out there.

Sequels don’t need to change the formula

On the surface, Tears of the Kingdom is a very similar game to Breath of the Wild. It’s the same map. It uses the same shrine and temple format. The weapons still break as you use them. Even the artwork and user interface are pretty much identical.

Despite its similarities, Tears of the Kingdom feels like a different game. It’s got all the same ingredients, but it’s more than an expansion. It’s as though they’ve created a new sub-genre. We wouldn’t be surprised if Zelda-like becomes a term everyone knows shortly.

But with every similarity, Nintendo has improved and expanded on Breath of the Wild. They’ve cleverly expanded the map. They’ve tweaked the art. They’ve made the puzzles more satisfying in the shrines and temples. And they’ve changed the core mechanics to change the experience completely.

Keeping the user interface and general style the same is a wise move. God of War: Ragnarok completely changed its user interface from the previous game. This makes the experience jarring for the player, especially if the changes aren’t necessarily in the right direction. Tears of the Kingdom does change the user interface in minor, subtler ways—improvements, not an overhaul.

It shows what a good sequel should do: evolve without changing what made the original great.

Stay true to your design philosophy

Exploring and curiosity are the keys to Tears of the Kingdom and Breath of the Wild. With Breath of the Wild, they found a fantastic way to encourage players along a set path without taking away their agency. This flows through to Tears of the Kingdom. Stables, towers, shrines, and key locations still entice the player towards them, but they’ve found fresh ways to expand on these.

But Tears of the Kingdom adds another tenet: creative exploration. Nintendo realized that one of the most satisfying elements of Breath of the Wild was choosing your own path, particularly in puzzles.

Back then, the shrines and the divine beasts had rigid solutions. Most players likely solved these in the same way. But occasionally, people would find novel ways to work around the system. Players loved thinking about a problem laterally and solving it in a way Nintendo never intended.

Nintendo changed the puzzle philosophy

Developers can typically choose between one of two philosophies when designing a game:

  • Creative at heart. Create a sandbox and let players do whatever they like. Minecraft is the perfect example of this. It gives players a bunch of tools and total freedom to use them. People then play around with those tools. This isn’t very suitable for puzzles.
  • Logical at heart. Games focusing on logic always have a unique solution to a problem. Return of the Obra Dinn, Bastion, Portal. In all these games, you’re presented with a problem and must try to solve it the way the designers intended. True, Portal left in a few ‘alternative’ solutions, but this was only because they were cool, harder than the actual solution, and only a few players would ever do it.

Puzzle design typically thrives on logical, unique solutions. That’s where the satisfaction lies. It’s in the “ah-ha” moment. You can’t have an “ah-ha” if there’s no logical conclusion. And you can only find a logical conclusion if that’s the only path you could possibly take.

Or can you? Tears of the Kingdom shows us that there’s another way. There’s a way to blend creativity and logic.

Unique solutions limit creativity

When you have a unique solution to a problem – a single path the player must take – you naturally restrict creativity. In most cases, that’s what you want. You don’t want players trying to clip through the walls or carry an object from three levels ago to ruin your painstakingly crafted puzzle. Portal, for example, forces you to destroy cubes before you continue to the next chamber.

Tears of the Kingdom clearly didn’t want to go down that route. They wanted creativity to be integral to their game. They must have noticed that players actually enjoy “breaking the rules.” So they let them. They allow you to carry puzzle-breaking equipment into shrines (usually) and use them to overcome the challenges. And as a matter of fact, they encourage it.

They still have an “intended” path, but it’s… optional. In one shrine, you’re meant to whack a boulder across the room to hit a pad. However, players can actually just lob a weapon at the pad and it’ll still register.

Zelda YouTube Review

 

This proves that they want players to try and circumvent their puzzles. They’re encouraging it. They could’ve easily made the sensor only register when the boulder hit it. But they made it like a pressure plate. They did that deliberately. They had to code it specifically to allow for creative solutions. Even though it feels like you’ve cheated the puzzle, you’ve actually done exactly what they wanted: you thought creatively. Instead of “ah-ha” you get “oh-ha!” A satisfying sense of surprise. You feel clever, but in a different way.

Creative solutions make even basic puzzles interesting

A surprising side effect of so much creativity is that it makes even mundane problems much more interesting. In Star Wars: Jedi Survivor, there are plenty of puzzles to overcome in the open world, but it soon becomes repetitive. There just isn’t enough variety.

In Tears of the Kingdom, you regularly need to scale a mountain or get up to a high ledge. It’s the most basic of ‘puzzles’ you can imagine. But the difference is that players have dozens of options to do it. You can ride the winds from a bonfire, bounce on a spring, attach a missile to your shield, build a catapult, or even reverse time on a hunk of fallen debris and cling on for dear life as it rises up into the sky.

In Jedi Survivor, there’s probably a button you need to press to use an elevator.

Creative solutions are more realistic

This all ties into the themes of Tears of the Kingdom. Firstly, it’s a game about exploration. And in real life, there’s never a single right answer. If you were to genuinely come across a bobby-trapped temple, you’d certainly try everything you could to sidestep the strange puzzles they’d made. By breaking the common belief that a puzzle can only have a single solution, Nintendo makes the puzzles so much more satisfying for an explorer. You feel like you outsmarted your opponent.

And encouraging people to think differently seems to be a core theme of Tears of the Kingdom. They’re saying: You need all your wits and experience if you’re going to win the battle. It’s not about how strong you are. It’s how you use your resources.

You can change philosophy between areas

Nintendo doesn’t just allow for pure creativity, though. Not all the time. They’ve cleverly split up the world into different areas. In the open world, players have complete freedom. You can build contraptions to beat a boss or get to a shrine. See a camp you want to clear? It’s totally up to you how you do it. Bomb it, charge in with ice weapons, or parachute in raining arrows down on their heads.

Inside shrines, they have a slightly different philosophy. There’s an intended path, but you can usually find a way to solve the problem your own way. Temples, meanwhile, are the most restricted. While it seems you have complete freedom – you have all your abilities – you usually need to use the new mechanic you just picked up. They’re actually much more logically designed. This makes Tears of the Kingdom appeal across the spectrum, from pure creativity to pure logic.

Use creativity to appeal to all player types

You’ve likely heard of Bartle’s four player types: achievers, explorers, killers, and socialisers. Using creativity as a core tenet, Tears of the Kingdom hits all four:

Creativity helps Achievers get 100%. There’s plenty to achieve in Tears of the Kingdom. So these players are easily satisfied. But allowing for creativity means that they can solve these puzzles however they want. By giving them more options, they make it easier to get that satisfaction if they ever get stuck.

Creativity helps Explorers travel. Despite using the same map, there are still plenty of secrets to uncover. And, with the new build mechanics, it’s easier and more fun than ever to explore the world.

Creativity gives Killers replay value. The sheer number of ways that you can defeat your enemy and create cool weapons gives Killers plenty of reasons to try out different combinations and battle every enemy they meet. That creativity keeps the combat feeling fresh.

Creativity gives Socialisers something to share. You’d think that, without multiplayer, Tears of the Kingdom would struggle to keep the Socialisers on board. But because of the creative building mechanics, Socialisers can build outrageous structures or solve puzzles in unique ways and then share the results with the rest of the world. Even just talking with your friend about how they approached a shrine can tickle that itch.

With more creative freedom, influencers have more room to create creative content. So even the passive gamers, who prefer to watch streams and other play, are engaging with the game. Most of which get the same level of enjoyment from watching as you would from playing. The number of viral videos on social media is outstanding. The sheer amount of surprises and creative choices a player can make means that there’s an endless stream of content that players can create. Content that keeps the game front of mind and draws in even more players.

Designing your game around creativity doesn’t just appeal to all kinds of player, but can help indirectly fuel your marketing. Linear games just don’t have that “share factor.”

You don’t need branching storylines to be “open”

The lesson here is that if you’re building an open-world game, you don’t need to create a thousand different dialogue trees with different outcomes. It can be about the journey they take through the story. Rather than trying to program a thousand NPCs to allow for every single approach the player might take, you can simply just let them approach the challenge itself in whatever way they want. Those creative choices are what makes a game feel open. That’s how you give players freedom.

It takes a lot of testing to perfect

Nintendo needed to do a lot of testing and tracking to see how players explored the world. Back when they first designed Breath of the Wild, they tracked where players were going and how they were interacting with the map. This led them to realise that they needed to change their design to ‘encourage’ players towards a point, rather than simply pointing them there. These were insights they could only get by looking at the data.

So if you want to gather that kind of data yourself, you should try out our free analytics tool.

]]>
Analytics In Swivel 2D (GameAnalytics Demo Game) https://gameanalytics.com/blog/analytics-instrumentation-demo-game-swivel-2d/ Thu, 05 Oct 2017 09:27:44 +0000 https://gameanalytics.com/?p=6997

Introduction Like any other software development team, the GameAnalytics SDK team invests time in team-building and in other activities that elevate the team spirit. We participated in a local game jam in late spring where we managed to imagine and implement a simple immersive game mechanic. With a little more work after the event, we managed to build a simple game, which we later named Swivel 2D. The intention of building this small game is to illustrate how the GameAnalytics product can be used, from instrumentation through to the planning phase and finally on to programmatic implementation. Download the game! In order to fully understand the contents of this page, I’d recommend that you download and play the game. Here are the links: Download Swivel for iOS Download Swivel for Android Swivel is a pseudo-single player casual game for mobile platforms created by...]]>

Introduction

Like any other software development team, the GameAnalytics SDK team invests time in team-building and in other activities that elevate the team spirit. We participated in a local game jam in late spring where we managed to imagine and implement a simple immersive game mechanic.

With a little more work after the event, we managed to build a simple game, which we later named Swivel 2D. The intention of building this small game is to illustrate how the GameAnalytics product can be used, from instrumentation through to the planning phase and finally on to programmatic implementation.

Download the game!

In order to fully understand the contents of this page, I’d recommend that you download and play the game. Here are the links:

Swivel is a pseudo-single player casual game for mobile platforms created by GameAnalytics with a minimal level design to show the usage of the tool’s main features. Unlike other drop-down games, Swivel compares your high-score against other players around the world. The target of the game is the GameAnalytics community of game developers.

Getting started with analytics

The environment used to develop the game is Unity and the C# programming language. However, this article depicts an instrumentation that can be reproduced in any other GameAnalytics supported development environment. You can find detailed setup guides for the GameAnalytics SDKs here.

Before implementing any custom instrumentation, I’d recommend that you first check to make sure the SDK runs and tracks core metrics (New Users, DAU and so on). In Unity, you only need to configure the SDK and create a GameAnalytics tracker in the very first scene of the game. Build and run the game and check the Real-time dashboard or the Live feed section in the Real-time dashboard to make sure events are being collected.

Design events

Swivel consists of 1.) a 3 step tutorial on how to play the game, 2.) an endless mode and 3.) a level based mode structured into 10 levels.

The game can be played by either tapping or swiping. The two mechanics in the game are introduced in the first two steps of the tutorial. In the third step, the player is asked: “Which one was better?”.

We are tracking the progression through the tutorial steps (and in a similar way the answer to the question) as follows:

 

Scene scene = SceneManager.GetActiveScene ();
GameAnalytics.NewDesignEvent("Tutorial:" + scene.name);

 

In the upper left corner of the screen there is a Skip button. Design events are used to track if users are skipping the tutorial and where, as follows:

 

Scene scene = SceneManager.GetActiveScene();
GameAnalytics.NewDesignEvent ("SkipTutorial:" + scene.name);

 

In the third step of the tutorial, the element of danger is introduced. We are tracking the explosion of the bomb in this level to understand how obvious it is to the human eye that the spiky rotating black balls are dangerous and to be avoided.

 

 

The analytics data helps to us understand if our players go through the tutorial steps, or if they drop along the way (and where).

In the endless run we track how far players get by using design events and the following formula:

For the first two rules for determining S, the formula drops the remainder of the score/segmentWidth division by casting it to an integer. In the end, we multiply it back by segmentWidth and we get the lower edge of the player score segment. If we sum the lower edge number with the segmentWidth we get the upper edge of the segment.

This is implemented using the following code:

if (score <= 100) 
{
    int segmentWidth = 10;
    int rezSegment = (score / segmentWidth) * segmentWidth; //operations with ints will lose the fractional part.
    GameAnalytics.NewDesignEvent ("Scores:" + rezSegment.ToString () + "-" + (rezSegment + segmentWidth).ToString ()); 
}
if (score > 100 && score <= 1000)
{
    int segmentWidth = 100;
    int rezSegment = (score / segmentWidth) * segmentWidth; //operations with ints will lose the fractional part.
    GameAnalytics.NewDesignEvent ("Scores:" + rezSegment.ToString () + "-" + (rezSegment + segmentWidth).ToString ()); 
}
if (score > 1000) 
{
    GameAnalytics.NewDesignEvent ("Scores:Over 1000");
}

When a player dies, they’re able to continue playing without losing progress by expensing one life. If the player runs out of lives they can exchange dots for lives. If they do not have enough dots they can either play more until they collect enough dots to exchange with lives, or they can directly purchase 2 lives worth of dots.

Business events

We are using Unity’s purchase system for managing transactions and our business events, with In-App purchase validation to track valid transactions.

public class Receipt {

	public string Store;
	public string TransactionID;
	public string Payload;

	public Receipt()
	{
		Store = TransactionID = Payload = "";
	}

	public Receipt(string store, string transactionID, string payload)
	{
		Store = store;
		TransactionID = transactionID;
		Payload = payload;
	}
}

public class PayloadAndroid
{
    public string json;
    public string signature;

    public PayloadAndroid()
    {
        json = signature = "";
    }

    public PayloadAndroid(string _json, string _signature)
    {
        json = _json;
        signature = _signature;
    }
}

public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs args)
{
if (String.Equals (args.purchasedProduct.definition.id, kProductIDConsumable, StringComparison.Ordinal)) {
    //...
    		var product = m_StoreController.products.WithID(kProductIDConsumable);
			string receipt = product.receipt;
			string currency = product.metadata.isoCurrencyCode;
			int amount = decimal.ToInt32 (product.metadata.localizedPrice) * 100;
#if UNITY_ANDROID
            Receipt receiptAndroid = JsonUtility.FromJson<Receipt>(receipt);
            PayloadAndroid receiptPayload = JsonUtility.FromJson<PayloadAndroid>(receiptAndroid.Payload);
            GameAnalytics.NewBusinessEventGooglePlay(currency, amount, "consumable", kProductIDConsumable, "vcCartType", receiptPayload.json, receiptPayload.signature);
#endif
#if UNITY_IPHONE
			Receipt receiptiOS = JsonUtility.FromJson<Receipt> (receipt);
			string receiptPayload = receiptiOS.Payload;
			GameAnalytics.NewBusinessEventIOS (currency, amount, "consumable", kProductIDConsumable, "vcCartType", receiptPayload);
#endif
}

Resource events

The player’s virtual currency fluctuations are tracked using resource events as follows:

//Dots
GameAnalytics.NewResourceEvent(GAResourceFlowType.Source,"Dots", settings.dots,"Collection", "Level" + currentLevel);
GameAnalytics.NewResourceEvent(GAResourceFlowType.Sink,"Dots", howMany * priceForLive,"Consumable","Exchange dots");
GameAnalytics.NewResourceEvent (GAResourceFlowType.Source, "Dots", 1, "Purchase", kProductIDConsumable);

//Lives
GameAnalytics.NewResourceEvent (GAResourceFlowType.Source, "Lives", howMany, "Consumable", "Exchange dots");
GameAnalytics.NewResourceEvent (GAResourceFlowType.Sink, "Lives", 1, "Consumable", "Level " + lm.currentLevel);

Progression events

The game allows the player to experience an arcade mode by playing 10 predefined levels. To start playing the levels you need to select “Play Arcade” from the drop-down menu in the upper right corner. The first level loads and if you press on the drop-down button once more the following screen is displayed:

 

The schema for instrumenting progression events with all of the levels is as follows:

The player’s progression is tracked programmatically with GameAnalytics as follows:

if (currentLevel < 10) {
    GameAnalytics.NewProgressionEvent (GAProgressionStatus.Complete, "Level 0" + currentLevel,settings.score);
} else {
    GameAnalytics.NewProgressionEvent (GAProgressionStatus.Complete, "Level " + currentLevel,settings.score);
}

That’s all folks!

I hope that this demonstration of a simple analytics instrumentation is valuable to all of our readers. We’re eager to see more of you great devs instrumenting your games with GameAnalytics! The analytics results will be added as soon as there is enough data to depict consistent metrics. ?

]]>