{"id":11533,"date":"2022-02-18T11:20:19","date_gmt":"2022-02-18T16:20:19","guid":{"rendered":"https:\/\/blogs.mathworks.com\/simulink\/?p=11533"},"modified":"2023-08-16T08:40:31","modified_gmt":"2023-08-16T12:40:31","slug":"the-curling-game-version-2022","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/simulink\/2022\/02\/18\/the-curling-game-version-2022\/","title":{"rendered":"The Curling Game&#8230; Version 2022"},"content":{"rendered":"<div class = rtcContent><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>For the <\/span><a href = \"https:\/\/olympics.com\/en\/beijing-2022\/\"><span>2022 Winter Olympic Games<\/span><\/a><span>, I am excited to share a new version of the <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/72554-the-curling-game-app\"><span>Simulink Curling Simulator<\/span><\/a><span>! This is now the third Winter Olympics that our curling game is participating in, making it something of a Simulink tradition. For those not familiar with this app, you can see how it evolved over the years in these posts:<\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/blogs.mathworks.com\/simulink\/2014\/03\/07\/the-simulink-curling-simulator-we-did-it\"><span>The Simulink Curling Simulator\u2026 we did it!<\/span><\/a><span>: Original version released for the 2014 Winter Olympics<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/blogs.mathworks.com\/simulink\/2018\/02\/07\/the-simulink-curling-simulator-version-2018\"><span>The Simulink Curling Simulator\u2026 Version 2018<\/span><\/a><span>: For the 2018 Winter Olympics, the Simulink model was updated to leverage Simulink States inside Stateflow<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/blogs.mathworks.com\/simulink\/2019\/09\/06\/curling-game-update-app-designer-and-stateflow\"><span>Curling Game Update: App Designer and Stateflow<\/span><\/a><span>: In 2019, we converted the app from <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/matlab\/ref\/guide.html\"><span>GUIDE<\/span><\/a><span> to <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/matlab\/app-designer.html\"><span>App Designer<\/span><\/a><span>, and implemented the app logic using <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/stateflow\/execution-in-matlab.html\"><span>Stateflow chart executed in MATLAB<\/span><\/a><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>For the 2022 Winter Olympics, we upgraded the app to make it compatible with <\/span><a href = \"https:\/\/www.mathworks.com\/products\/simulink-compiler.html\"><span>Simulink Compiler<\/span><\/a><span> so it can be deployed as a standalone executable or as a <\/span><a href = \"https:\/\/www.mathworks.com\/products\/matlab-web-app-server.html\"><span>Web App<\/span><\/a><span> that can run in a web browser.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span style=' font-weight: bold; font-style: italic;'>Disclaimer:<\/span><span style=' font-style: italic;'> I really wanted to include a link in this blog post to a publicly available web app for all of you to try the game in your web browser, as we did last year for the Exponential virus spread simulator, but I ran into a technical issue. We are still investigating that; I will update the post once the web app is available.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Here is an animation with annotations to help you getting started with your first game:<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_1-3.gif\" width = \"800\" height = \"473\" alt = \"CurlingTutorialSmall.gif\" style = \"vertical-align: baseline; width: 800px; height: 473px;\"><\/img><\/div><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span>Acknowledgements<\/span><\/h4><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Before going into the details of the curling app version 2022,  I want to acknowledge several colleagues who worked on these updates. As I mentioned above, this curling simulator has a relatively long history, and MathWorkers like trying out new features with it. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>A group of consultants from <\/span><a href = \"https:\/\/www.mathworks.com\/services\/consulting.html\"><span>MathWorks Consulting Services<\/span><\/a><span> did the initial overhaul as part of a day-long activity experimenting with new features: <\/span><a href = \"https:\/\/www.linkedin.com\/in\/karthiga-mahalingam\/\"><span>Karthiga Mahalingam<\/span><\/a><span>, <\/span><a href = \"https:\/\/www.linkedin.com\/in\/michael-boyle-b206a954\/\"><span>Michael Boyle<\/span><\/a><span>, <\/span><a href = \"https:\/\/www.linkedin.com\/in\/robyn-jackey\/\"><span>Robyn Jackey<\/span><\/a><span>, <\/span><a href = \"https:\/\/www.linkedin.com\/in\/ying-liu-8914ab13\/\"><span>Ying Liu<\/span><\/a><span>, and <\/span><a href = \"https:\/\/www.linkedin.com\/in\/sarah-dagen\/\"><span>Sarah Dagen<\/span><\/a><span>. I would also like to thank my Advanced Support colleague <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/profile\/authors\/4758131\"><span>Corey Lagunowich<\/span><\/a><span> for helping with further updates showcased here. Thanks for keeping the legendary curling simulator alive and fresh!<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_2-3.png\" width = \"744\" height = \"132\" alt = \"\" style = \"vertical-align: baseline; width: 744px; height: 132px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Karthiga, Michael, Robyn, Ying, Sarah, and Corey<\/span><\/div><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span><\/span><\/h4><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span>Linking App Designer, Stateflow for MATLAB and Simulink<\/span><\/h4><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>One of the important things to realize with the curling app is that the app graphical elements are defined in App Designer, but most of the app logic is defined in a <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/stateflow\/ug\/create-stateflow-chart-objects.html\"><span>Stateflow chart executed as a MATLAB object<\/span><\/a><span>. I like this way of doing things because the Stateflow language is very convenient to express the kind of logic needed for the app.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>If you look at the startupFcn callback of the app, the first thing it does is instantiate the Stateflow chart and pass to it a handle to the app itself. This is the key for the bi-directional linking between the app and the chart.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_3-3.png\" width = \"705\" height = \"140\" alt = \"\" style = \"vertical-align: baseline; width: 705px; height: 140px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In one direction, in the app callbacks, this allows me to trigger events defined in the Stateflow chart. In the other direction, the Stateflow chart can access and control widgets in the app:<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_4-3.png\" width = \"942\" height = \"361\" alt = \"\" style = \"vertical-align: baseline; width: 942px; height: 361px;\"><\/img><\/div><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span>Simulink Compiler<\/span><\/h4><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>This version of the curling app is the second app I try deploying as a Web App using Simulink Compiler. The last time was in 2020, with the <\/span><a href = \"https:\/\/blogs.mathworks.com\/simulink\/2020\/10\/14\/deploying-the-virus-spread-simulator-using-simulink-compiler\"><span>Virus Spread Simulator<\/span><\/a><span>. At this time, in R2020a, I could only call the <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/simulink\/slref\/sim.html\"><span>sim<\/span><\/a><span> command and animate the results once the simulation was completed.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Since R2020b, Simulink Compiler introduced new functions to set callbacks to get data in and out of the simulation while it is running:<\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/slcompiler\/ref\/simulink.compiler.setexternalinputsfcn.html\"><span style=' font-family: monospace;'>simulink.compiler.setExternalInputsFcn<\/span><\/a><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/slcompiler\/ref\/simulink.compiler.setexternaloutputsfcn.html\"><span style=' font-family: monospace;'>simulink.compiler.setExternalOutputsFcn<\/span><\/a><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/slcompiler\/ref\/simulink.compiler.setpoststepfcn.html\"><span style=' font-family: monospace;'>simulink.compiler.setPostStepFcn<\/span><\/a><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Here is what the code creating the Simulink.SimulationInput object passed to the sim command looks like:<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_5-3.png\" width = \"916\" height = \"192\" alt = \"\" style = \"vertical-align: baseline; width: 916px; height: 192px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In a way similar to how we linked the app and the Stateflow chart, a handle to the app is passed to the callbacks. That way, the callbacks can access and control the app widgets. For example, here is the chain of events for the InputFcn callback:<\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>The user clicks the Sweep button in the app<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>The sweep button callback triggers the sweep event in the Staflow chart<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>The sweep event changes the value of the \"sweepVal\" property defined in the Stateflow chart<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>When the simulation triggers the inputFcn callback, it reads the value of <\/span><span style=' font-family: monospace;'>app.curl.sweepVal<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>The Inport block <\/span><span style=' font-family: monospace;'>sweepInput<\/span><span> outputs the value of <\/span><span style=' font-family: monospace;'>app.curl.sweepVal<\/span><span> read in the inputFcn callback.<\/span><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_6-2.png\" width = \"706\" height = \"679\" alt = \"\" style = \"vertical-align: baseline; width: 706px; height: 679px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>I am not going the describe the details here, but a similar process happens for the OutputFcn callback. For a simpler example leveraging those callbacks, I recommend looking at this: <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/slcompiler\/ug\/mass-spring-damper-withliveio-example.html\"><span>Deploy Mass Spring Damper App with LiveIO<\/span><\/a><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span><\/span><\/div><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span>3D Visualization<\/span><\/h4><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Another enhancement you probably noticed compared to the previous version is the addition of a 3D visualization.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><img class = \"imageNode\" src = \"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_7-2.gif\" width = \"460\" height = \"290\" alt = \"curling3Dsmall.gif\" style = \"vertical-align: baseline; width: 460px; height: 290px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Added by colleagues from <\/span><a href = \"https:\/\/www.mathworks.com\/services\/consulting.html\"><span>MathWorks Consulting Services<\/span><\/a><span>, this 3D view has been implemented using a <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/ref\/matlab.graphics.chartcontainer.chartcontainer-class.html\"><span>matlab.graphics.chartcontainer.ChartContainer<\/span><\/a><span>, a relatively new feature introduced in R2019b. Subclassing this base class allows you to leverage useful methods and properties. In our case, the <\/span><a href = \"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/matlab\/ref\/matlab.graphics.chartcontainer.chartcontainer.update.html\"><span>update<\/span><\/a><span> method get triggered when the OutputFcn callback receives new data.<\/span><\/div><h4  style = 'margin: 10px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 15px; font-weight: 700; text-align: left; '><span>Now it's your turn<\/span><\/h4><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '>Play the Curling Game Web App in your web browser, or download the project from <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/72554-the-curling-game-app\"><span>MATLAB Central<\/span><\/a><span> to view the details. What do you think is the most interesting feature of this new version of the Curling Simulator? How could you leverage that in your own work?<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><\/div>\r\n<\/div><script type=\"text\/javascript\">var css = ''; var head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style'); head.appendChild(style); style.type = 'text\/css'; if (style.styleSheet){ style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); }<\/script><a href=\"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022-3.mlx\"><button class=\"btn btn-sm btn_color_blue pull-right add_margin_10\">Download Live Script<\/button><\/a>","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/simulink\/files\/curling_2022_7-1.gif\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>For the 2022 Winter Olympic Games, I am excited to share a new version of the Simulink Curling Simulator! This is now the third Winter Olympics that our curling game is participating in, making it... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/simulink\/2022\/02\/18\/the-curling-game-version-2022\/\">read more >><\/a><\/p>","protected":false},"author":41,"featured_media":11527,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[71,65,628,56,16],"tags":[366,602,603],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/11533"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/comments?post=11533"}],"version-history":[{"count":5,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/11533\/revisions"}],"predecessor-version":[{"id":14996,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/11533\/revisions\/14996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/media\/11527"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/media?parent=11533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/categories?post=11533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/tags?post=11533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}