Overview: Difference between revisions
m
emphasis
imported>Leoetlino |
imported>Leoetlino m (emphasis) |
||
Line 22: | Line 22: | ||
The codebase appears to be compiled with high levels of optimisation enabled for both Wii U and Switch releases, with code on the latter platform being better optimised. Since 1.6.0 (Switch only), the game is additionally built with [[wikipedia:LTO|LTO]] enabled, which results in massive amounts of code bloat. All known public releases are stripped, i.e. don't contain any debugging symbol. | The codebase appears to be compiled with high levels of optimisation enabled for both Wii U and Switch releases, with code on the latter platform being better optimised. Since 1.6.0 (Switch only), the game is additionally built with [[wikipedia:LTO|LTO]] enabled, which results in massive amounts of code bloat. All known public releases are stripped, i.e. don't contain any debugging symbol. | ||
The game is divided into several components and makes heavy use of managers, which are singletons that are usually responsible for one specific task (e.g. PlacementMgr for actor placement, EventMgr for in-game events, etc.). Unlike older Zelda games, most managers are dynamically allocated, not stored in BSS. In general, ''Breath of the Wild'' makes use of the heap and virtual functions a lot more. | The game is divided into several components and makes heavy use of '''managers''', which are singletons that are usually responsible for one specific task (e.g. PlacementMgr for actor placement, EventMgr for in-game events, etc.). Unlike older Zelda games, most managers are dynamically allocated, not stored in BSS. In general, ''Breath of the Wild'' makes use of the heap and virtual functions a lot more. | ||
In total, there are 130+ [[subsystems]]. | In total, there are 130+ [['''subsystems''']]. | ||
=== ROM === | === ROM === | ||
Resources are organised by type into a [[Content|directory tree]] with nested directories. | '''Resources''' are organised by type into a [[Content|directory tree]] with nested directories. | ||
Each resource type often has its own distinct file extension even when the file format is exactly the same. For example, [[Bgparamlist|Bgparamlist (GeneralParamList)]] and [[Blifecondition|Blifecondition (LifeCondition)]] are both [[AAMP]] files, but they have different file extensions because their types and purposes are different. | Each resource type often has its own distinct file extension even when the file format is exactly the same. For example, [[Bgparamlist|Bgparamlist (GeneralParamList)]] and [[Blifecondition|Blifecondition (LifeCondition)]] are both [[AAMP]] files, but they have different file extensions because their types and purposes are different. | ||
==== Archives ==== | ==== Archives ==== | ||
Because the game tends to load several resources at the same time, related files are grouped and packed into archives to improve performance. Resources are packed [[Actor pack|at the actor level]], or [[Beventpack|at the event level]], or based on the moment they are loaded by the game, which is the case for [[Dungeon pack|dungeon packs]] and top-level [[Pack|packs]] for instance. | Because the game tends to load several resources at the same time, related files are grouped and packed into '''archives''' to improve performance. Resources are packed [[Actor pack|at the actor level]], or [[Beventpack|at the event level]], or based on the moment they are loaded by the game, which is the case for [[Dungeon pack|dungeon packs]] and top-level [[Pack|packs]] for instance. | ||
This archive system does result in content duplication, but it is a fair space-time tradeoff. | This archive system does result in content duplication, but it is a fair space-time tradeoff. |