{"id":711,"date":"2022-06-14T22:39:31","date_gmt":"2022-06-14T20:39:31","guid":{"rendered":"https:\/\/www.bellingo.de\/blog\/?p=711"},"modified":"2022-06-14T22:41:40","modified_gmt":"2022-06-14T20:41:40","slug":"devblog-back-to-the-execution-order-pit","status":"publish","type":"post","link":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/","title":{"rendered":"DevBlog: Back to the Execution Order Pit"},"content":{"rendered":"\n<p>My article on <a href=\"https:\/\/www.bellingo.de\/blog\/unet-pitfalls-onstartclient-execution-order\/\" target=\"_blank\" rel=\"noreferrer noopener\">script execution order<\/a> in Unity&#8217;s UNet networking layer is my most successful article. It is 6 years old now and still being clicked regularly, more often than most others. No small wonder, as I had to find out yet again. Fixing a bug in <a href=\"https:\/\/www.bellingo.de\/blog\/devblog-the-idea-behind-network-traders\/\" target=\"_blank\" rel=\"noreferrer noopener\">Network Traders<\/a>, I fell into almost the same trap, again! <em>Always be aware of event execution order<\/em>! And continue reading if you want to know why!<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/CityNetwork.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/CityNetwork.png\" alt=\"Standard appearance of the network screen in Network Traders.\" class=\"wp-image-712\" width=\"238\" height=\"194\" srcset=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/CityNetwork.png 952w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/CityNetwork-300x245.png 300w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/CityNetwork-768x626.png 768w\" sizes=\"auto, (max-width: 238px) 100vw, 238px\" \/><\/a><figcaption>The network screen, as it should be.<\/figcaption><\/figure><\/div>\n\n\n\n<p>So what happened? One of the screens of Network Traders shows a graph with all cities known to the player. In the center, there is the player&#8217;s own city, and grouped around it are the cities her merchants have already visited. Since this network can become arbitrarily complex, the screen can be zoomed and scrolled. This worked great during testing with the Unity editor. But when deployed on an Android smartphone, something unexpected happened. The scaling of the central city was totally off, as you can see below.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Execution Order of Awake and OnEnable<\/h2>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"alignleft size-full is-resized\"><a href=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Network-Screen-Size-Bug-Detail.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Network-Screen-Size-Bug-Detail.jpg\" alt=\"Bug in Network Traders because of script execution order problems.\" class=\"wp-image-714\" width=\"167\" height=\"164\" srcset=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Network-Screen-Size-Bug-Detail.jpg 669w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Network-Screen-Size-Bug-Detail-300x294.jpg 300w\" sizes=\"auto, (max-width: 167px) 100vw, 167px\" \/><\/a><figcaption>Broken scaling of objects on the network screen.<\/figcaption><\/figure><\/div>\n\n\n\n<p>The reason for this unwanted behavior may be a, let&#8217;s say, less than optimal class architecture, but very instructive nonetheless. The class which is responsible for zooming the screen, <em>TradeNetworkScaler<\/em>, is a Unity component placed on the same GameObject as the screen manager class itself, <em>TradeNetworkView.<\/em> In <em>Awake<\/em>, the &#8222;Scaler&#8220; registers itself with the &#8222;View&#8220; object:<\/p>\n\n\n\n<pre class=\"wp-block-code has-dark-gray-color has-white-background-color has-text-color has-background\"><code>  private void Awake()\n  {\n    tradeNetwork = GetComponent&lt;TradeNetworkView&gt;();\n\n    tradeNetwork.OnNetworkViewEnabling += OnNetworkViewEnable;\n  }<\/code><\/pre>\n\n\n\n<p>The callback <em>OnNetworkViewEnabling<\/em> is in turn called in <em>OnEnable <\/em>of <em>TradeNetworkView<\/em>. <\/p>\n\n\n\n<p>So, what&#8217;s the problem? The respective <a href=\"https:\/\/docs.unity3d.com\/Manual\/ExecutionOrder.html\" target=\"_blank\" rel=\"noreferrer noopener\">Unity documentation on event execution order<\/a> shows it, but I would not have seen it at first glance. Do you?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><a href=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Unity-Doc.png\"><img loading=\"lazy\" decoding=\"async\" width=\"995\" height=\"93\" src=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Unity-Doc.png\" alt=\"Screenshot from Unity Manual showing event execution order.\" class=\"wp-image-719\" srcset=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Unity-Doc.png 995w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Unity-Doc-300x28.png 300w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Unity-Doc-768x72.png 768w\" sizes=\"auto, (max-width: 995px) 100vw, 995px\" \/><\/a><figcaption>Initial steps of event execution. (Screenshot: <a href=\"https:\/\/docs.unity3d.com\/Manual\/ExecutionOrder.html\" target=\"_blank\" rel=\"noreferrer noopener\">Unity Manual<\/a>)<\/figcaption><\/figure>\n\n\n\n<p>Neither is the description of Awake and OnEnable clear enough to explain what happens. It says:<\/p>\n\n\n\n<div class=\"wp-block-group has-dark-gray-color has-white-background-color has-text-color has-background\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ul class=\"wp-block-list\"><li><strong>Awake:<\/strong> This function is always called before any Start functions and also just after a <strong>prefab<\/strong> is instantiated. (If a GameObject is inactive during start up Awake is not called until it is made active.)<\/li><li><strong>OnEnable:<\/strong> (only called if the Object is active): This function is called just after the object is enabled. This happens when a MonoBehaviour instance is created, such as when a level is loaded or a <strong>GameObject<\/strong> with the script component is instantiated.<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<p>It does not mention what the catch is here: Awake and OnEnable <em>both <\/em>happen during the Initialization step! This means that while OnEnable follows Awake, this is only true for one object. It does <strong>not <\/strong>state that <em>all<\/em> Awakes are processed before <em>any<\/em> OnEnable, and neither is that the case. As a result, the sequence of Awake and OnEnable of two different objects is arbitrary, as in my case. In the editor, <em>TradeNetworkScaler<\/em> was handled before <em>TradeNetworkView<\/em>. On an Android device it was the other way around. This broke the system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Execution Order Settings to the Rescue<\/h2>\n\n\n\n<p>Fortunately, Unity offers a remedy, although I would not recommend over-using it. The project settings contain a section <em>Script Execution Order<\/em> where you can tell Unity how to handle this. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><a href=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Settings.png\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"95\" src=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Settings.png\" alt=\"Script Execution Order window in Unity Editor.\" class=\"wp-image-721\" srcset=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Settings.png 703w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Execution-Order-Settings-300x41.png 300w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/a><figcaption>Set the script execution order manually in the settings window. (Screenshot: Unity Editor)<\/figcaption><\/figure>\n\n\n\n<p>By adjusting the execution order of different Awakes and OnEnables manually, I was able to make sure that the <em>TradeNetworkScaler<\/em> always precedes <em>TradeNetworkView<\/em>. As I said before, not an elegant solution. But I hope it helps you in case you struggle with a similar problem.<\/p>\n\n\n\n<p>So, now that you&#8217;ve read so far, tell me in the comments why you are here! Do you have a similar problem, and did this help you? Or did you look for something entirely different?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>My article on script execution order in Unity&#8217;s UNet networking layer is my most successful article. It is 6 years old now and still being clicked regularly, more often than most others. No small wonder, as I had to find out yet again. Fixing a bug in Network Traders, I fell into almost the same &hellip; <a href=\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\" class=\"more-link\"><span class=\"screen-reader-text\">DevBlog: Back to the Execution Order Pit<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":726,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[229,49,55],"tags":[275,230,273,231,277,67],"class_list":["post-711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devblog","category-game-development","category-unity-en","tag-awake","tag-devblog","tag-event-execution-order","tag-network-traders","tag-onenable","tag-unity-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DevBlog: Back to the Execution Order Pit - Games:Tech:Blog<\/title>\n<meta name=\"description\" content=\"Unity&#039;s event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DevBlog: Back to the Execution Order Pit - Games:Tech:Blog\" \/>\n<meta property=\"og:description\" content=\"Unity&#039;s event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\" \/>\n<meta property=\"og:site_name\" content=\"Games:Tech:Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-14T20:39:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-14T20:41:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png\" \/>\n\t<meta property=\"og:image:width\" content=\"829\" \/>\n\t<meta property=\"og:image:height\" content=\"464\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ingo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ingo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\"},\"author\":{\"name\":\"Ingo\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"headline\":\"DevBlog: Back to the Execution Order Pit\",\"datePublished\":\"2022-06-14T20:39:31+00:00\",\"dateModified\":\"2022-06-14T20:41:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\"},\"wordCount\":602,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"image\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png\",\"keywords\":[\"Awake\",\"DevBlog\",\"Event Execution Order\",\"Network Traders\",\"OnEnable\",\"Unity\"],\"articleSection\":[\"DevBlog\",\"Game development\",\"Unity\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\",\"url\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\",\"name\":\"DevBlog: Back to the Execution Order Pit - Games:Tech:Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png\",\"datePublished\":\"2022-06-14T20:39:31+00:00\",\"dateModified\":\"2022-06-14T20:41:40+00:00\",\"description\":\"Unity's event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage\",\"url\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png\",\"contentUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png\",\"width\":829,\"height\":464,\"caption\":\"Two alternative activity diagrams\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.bellingo.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevBlog: Back to the Execution Order Pit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#website\",\"url\":\"https:\/\/www.bellingo.de\/blog\/\",\"name\":\"Games:Tech:Blog\",\"description\":\"A Blog about Games, Technology in Games, and Technology in General\",\"publisher\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.bellingo.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\",\"name\":\"Ingo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g\",\"caption\":\"Ingo\"},\"logo\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/www.bellingo.de\/blog\/author\/ingo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DevBlog: Back to the Execution Order Pit - Games:Tech:Blog","description":"Unity's event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/","og_locale":"de_DE","og_type":"article","og_title":"DevBlog: Back to the Execution Order Pit - Games:Tech:Blog","og_description":"Unity's event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.","og_url":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/","og_site_name":"Games:Tech:Blog","article_published_time":"2022-06-14T20:39:31+00:00","article_modified_time":"2022-06-14T20:41:40+00:00","og_image":[{"width":829,"height":464,"url":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png","type":"image\/png"}],"author":"Ingo","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Ingo","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#article","isPartOf":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/"},"author":{"name":"Ingo","@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"headline":"DevBlog: Back to the Execution Order Pit","datePublished":"2022-06-14T20:39:31+00:00","dateModified":"2022-06-14T20:41:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/"},"wordCount":602,"commentCount":0,"publisher":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"image":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png","keywords":["Awake","DevBlog","Event Execution Order","Network Traders","OnEnable","Unity"],"articleSection":["DevBlog","Game development","Unity"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/","url":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/","name":"DevBlog: Back to the Execution Order Pit - Games:Tech:Blog","isPartOf":{"@id":"https:\/\/www.bellingo.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage"},"image":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png","datePublished":"2022-06-14T20:39:31+00:00","dateModified":"2022-06-14T20:41:40+00:00","description":"Unity's event execution order has its pitfalls, and fell into the pit again. Read here what traps await you when using Awake and OnEnable.","breadcrumb":{"@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#primaryimage","url":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png","contentUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2022\/06\/Beitragsbild-Execution-Order.png","width":829,"height":464,"caption":"Two alternative activity diagrams"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bellingo.de\/blog\/devblog-back-to-the-execution-order-pit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bellingo.de\/blog\/"},{"@type":"ListItem","position":2,"name":"DevBlog: Back to the Execution Order Pit"}]},{"@type":"WebSite","@id":"https:\/\/www.bellingo.de\/blog\/#website","url":"https:\/\/www.bellingo.de\/blog\/","name":"Games:Tech:Blog","description":"A Blog about Games, Technology in Games, and Technology in General","publisher":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bellingo.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9","name":"Ingo","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g","caption":"Ingo"},"logo":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/"},"url":"https:\/\/www.bellingo.de\/blog\/author\/ingo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/comments?post=711"}],"version-history":[{"count":12,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/711\/revisions"}],"predecessor-version":[{"id":728,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/711\/revisions\/728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/media\/726"}],"wp:attachment":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/media?parent=711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/categories?post=711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/tags?post=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}