<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Leviathan The Fixer Saga Blog</title>
        <link>https://aiegoo.github.io/archery/blog</link>
        <description>Leviathan The Fixer Saga Blog</description>
        <lastBuildDate>Tue, 09 Aug 2022 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[from Concept to Testers Role]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-09-32th-gdd</link>
            <guid>2022-08-09-32th-gdd</guid>
            <pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Leviathan Game Overview]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="leviathan-game-overview">Leviathan Game Overview<a class="hash-link" href="#leviathan-game-overview" title="Direct link to heading">​</a></h2><p>The player completes his impossible missions of two assassinations and stealing a vault of information in possession of his company's rival and foe. In revenge for the attempt on his life by his own squad member, he took out his might power even unknown to himself on the CEO's life.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="high-concept">High Concept<a class="hash-link" href="#high-concept" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="unique-selling-points">Unique Selling Points<a class="hash-link" href="#unique-selling-points" title="Direct link to heading">​</a></h2><p>The use of Azure Kinect makes the game play a fun without much hassle of donning a HMU with hand controllers. The very simple game mechanism and storyline will allow a game novice even easier immersion into the gameplay. </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="platform-minimum-requriements">Platform Minimum Requriements<a class="hash-link" href="#platform-minimum-requriements" title="Direct link to heading">​</a></h2><p>Windows with Nvidia 1070 with 8 RAM and USB3.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="competence-titles">Competence Titles<a class="hash-link" href="#competence-titles" title="Direct link to heading">​</a></h2><p>Leviathan The Saga of a Fixer</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="synopsis">Synopsis<a class="hash-link" href="#synopsis" title="Direct link to heading">​</a></h2><p>I really enjoyed the movie Mechanic: Resurrection with Jason Stathm starring as Bishop(?). The game's storyline happens to reflect the mission statement without my meaning to. I must admit that I watched the movie about 2 months after I have developed a basic storyboard. So forgive me if you want to argue otherwise over this point. The player in this case was sick of his several failures to make it to a national Archery squad and decides to work under a contract. That's how he ends up on a training gallery in the world of SWAT boot-camp.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="game-development-objectives">Game Development Objectives<a class="hash-link" href="#game-development-objectives" title="Direct link to heading">​</a></h2><p>The following goals in the dev work have been set for myself;</p><blockquote><p>스토리텔링 룰</p></blockquote><p>• Setting and introduction: Before you start describing the game mechanics, put the reader inside the game. Describe the world, the player character, their backstory, their motivations, and what the main problem is that the player needs to struggle with. Make the reader of the GDD interested in the setting of the game and want to keep reading, to see how they will be able to play the game and tackle all the quests the player will face in the game.</p><p>• Gameplay sections: These are sections that break the game into several systems and subsystems linked to each other. Some examples can be Inventory, Quests, Crafting, Battle, Movement, Shops, and so on. You will want to be super specific about every aspect of how those systems work because—remember—this document will be used by the team to craft the code and assets of your game. All the analysis we did in the previous sections of the chapter will be part of the GDD and will be further explained and analyzed.</p><p>• Content sections: You will also want to create content sections, such as the ones we previously designed. These can be—but are not limited to—Characters, Story, World, Levels, Aesthetics, Art Assets, Sound and Music Assets, Economics, and Input.</p><p>• Share your idea: Before immortalizing your ideas in the GDD and making everyone start crafting them, discuss the different GDD sections before marking them as finished. Discuss with your team, people on the internet, friends—anyone and everyone can give you valuable feedback about your idea. I'm pretty sure you are thinking that your idea will be stolen by some random person on the internet who will release the same game before you—and that can happen—but I'm not saying share the whole GDD, just some details about certain implementations you are not sure about.</p><p>• Keep control: Everyone in the team is a game designer—some more than others.
Everyone will have ideas and things they will do differently. Listen to them—doing so will be useful, but remember you are in charge and you will have the final say.
You need to be open, but set some limits and don't deviate from your original idea and concept. Prevent the famous feature creep, which consists on lots and lots of game systems unnecessarily, and know when enough is enough, especially considering the limited amount of resources we will have when beginning to create games. Again, not an easy task—you will learn this the hard way, believe me, but remember this when that happens (I told you!).</p><p>• The game will change: I already said that, but I like to stress this as much as I can.
The game will change a lot due to many reasons you will find in the process of creating it. You may find that X mechanic is not that fun, you could have created a better way of handling Y system, or maybe test sessions with players prove that Z level needs to be completely redesigned. Be open to change and pivot your game idea when needed. If you do this the right way, your game won't be as you originally imagined but will be a better version of it.</p><p>• Graphics: Use graphics, diagrams, charts, and so on. Try to prevent huge text walls.
Remember that a picture is worth a thousand words. You are communicating, and nobody wants to spend valuable minutes trying to understand what you want to say.
Improve your visual communication skills, and you will have a focused team.</p><p>• Paper prototypes: You can test some ideas in your head on paper before putting them in the GDD. Even if your game is a frenetic "beat 'em up," you can have little paper characters moving around a table, seeing how they can attack the player, and which movement pattern they will have. Do some math to look at how to perfect timing, damage, health values, and so on.</p><p>• Regular prototypes: While your game is being developed, the GDD will constantly change based on player feedback. You must test your game, even if it's not finished, and get feedback from players as early as you can. Of course, they will tell you lots of things that you already know, but they will see lots of problems you don't see because you are creating and playing your game every day. They have the advantage of playing the game for the first time, and that is a real change.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="game-rules">Game Rules<a class="hash-link" href="#game-rules" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="game-structure">Game Structure<a class="hash-link" href="#game-structure" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="game-scene-architecture">Game Scene Architecture<a class="hash-link" href="#game-scene-architecture" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bringing-the-stage-to-life">Bringing the stage to life<a class="hash-link" href="#bringing-the-stage-to-life" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="game-scene-limits">Game scene limits<a class="hash-link" href="#game-scene-limits" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="game-scene-boundaries">Game scene boundaries<a class="hash-link" href="#game-scene-boundaries" title="Direct link to heading">​</a></h3><h2 class="anchor anchorWithStickyNavbar_LWe7" id="gameplay">Gameplay<a class="hash-link" href="#gameplay" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="creating-the-arrow-launching-system">Creating the arrow launching system<a class="hash-link" href="#creating-the-arrow-launching-system" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bringing-input-architecture">Bringing input architecture<a class="hash-link" href="#bringing-input-architecture" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="physics-is-your-friend">Physics is your friend<a class="hash-link" href="#physics-is-your-friend" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="game-controls">Game Controls<a class="hash-link" href="#game-controls" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="game-camera">Game Camera<a class="hash-link" href="#game-camera" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="hud">HUD<a class="hash-link" href="#hud" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="orchestrators-symphony">Orchestrator's symphony<a class="hash-link" href="#orchestrators-symphony" title="Direct link to heading">​</a></h3><h2 class="anchor anchorWithStickyNavbar_LWe7" id="player">Player<a class="hash-link" href="#player" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="enemies">Enemies<a class="hash-link" href="#enemies" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="generating-enemies-dynamically">Generating enemies dynamically<a class="hash-link" href="#generating-enemies-dynamically" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-enemies">Configuring enemies<a class="hash-link" href="#configuring-enemies" title="Direct link to heading">​</a></h3><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kinect-game">Kinect Game<a class="hash-link" href="#kinect-game" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kinect-setup-and-integration">Kinect setup and integration<a class="hash-link" href="#kinect-setup-and-integration" title="Direct link to heading">​</a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metagame">Metagame<a class="hash-link" href="#metagame" title="Direct link to heading">​</a></h3><h2 class="anchor anchorWithStickyNavbar_LWe7" id="character-lineup">Character Lineup<a class="hash-link" href="#character-lineup" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="npc-enemies">NPC Enemies<a class="hash-link" href="#npc-enemies" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="npc-allies">NPC Allies<a class="hash-link" href="#npc-allies" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="art">Art<a class="hash-link" href="#art" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="level-design">Level Design<a class="hash-link" href="#level-design" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="audio">Audio<a class="hash-link" href="#audio" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="mvp-minimum-viable-product">MVP (minimum viable product)<a class="hash-link" href="#mvp-minimum-viable-product" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="wishlist">Wishlist<a class="hash-link" href="#wishlist" title="Direct link to heading">​</a></h2><h2 class="anchor anchorWithStickyNavbar_LWe7" id="testers">Testers<a class="hash-link" href="#testers" title="Direct link to heading">​</a></h2>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[C# Coding Standards]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-07-32th-coding</link>
            <guid>2022-08-07-32th-coding</guid>
            <pubDate>Sun, 07 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Preface]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preface">Preface<a class="hash-link" href="#preface" title="Direct link to heading">​</a></h2><p>For detailed examples, go to <a href="#unity-project-template">Unity Project Template</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="rule-of-thumb">Rule of Thumb<a class="hash-link" href="#rule-of-thumb" title="Direct link to heading">​</a></h3><ol><li>Readability first (your code should be your documentation most of the time)</li><li>Follow IDE's auto formatted style unless you have really good reasons not to do so. (Ctrl + K + D in Visual Studio)</li><li>Learn from existing code</li><li>Rely on <a href="https://docs.microsoft.com/en-us/uwp/api/?view=winrt-22621" target="_blank" rel="noopener noreferrer">UWP_Namespace</a> for Kinect-realted codes</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a class="hash-link" href="#references" title="Direct link to heading">​</a></h3><p>This coding standards is inspired by these coding standards</p><ul><li><a href="https://docs.unrealengine.com/latest/INT/Programming/Development/CodingStandard/" target="_blank" rel="noopener noreferrer">Unreal engine 4 coding standard</a></li><li><a href="ftp://ftp.idsoftware.com/idstuff/doom3/source/codestyleconventions.doc" target="_blank" rel="noopener noreferrer">Doom 3 Code Style Conventions</a></li><li><a href="http://www.idesign.net/downloads/getdownload/1985" target="_blank" rel="noopener noreferrer">IDesign C# Coding Standard</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="ide-helper">IDE Helper<a class="hash-link" href="#ide-helper" title="Direct link to heading">​</a></h3><p>The settings that can imported into your IDE can be found <a href="https://github.com/popekim/CodingStyle/tree/master/CSharp" target="_blank" rel="noopener noreferrer">here</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="i-main-coding-standards">I. Main Coding Standards<a class="hash-link" href="#i-main-coding-standards" title="Direct link to heading">​</a></h2><ol><li><p>Use Pascal casing for class and structs</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">class PlayerManager;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">struct PlayerData;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use camel casing for local variable names and function parameters</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public void SomeMethod(int someParameter)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">     int someNumber;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">     int id;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><ol start="3"><li><p>Use verb(base form)-object pairs for method names, by default.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public uint GetAge()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        // function implementation...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><ol start="4"><li><p>However, if a method simply returns a boolean state, the verb part of the name should be prefixed Is, Can, Has or Should. If the function name becomes not natural by doing so, use the 3rd-person singular form of another verb.</p><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool IsAlive(Person person);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool Has(Person person);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool CanAccept(Person person);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool ShouldDelete(Person person);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool Exists(Person person);</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use pascal casing for all method names except (see below)</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public uint GetAge()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        // function implementation...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use camel case for any non-public method. You might need to add custom Visual Studio style rule as described here</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">private uint getAge()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        // function implementation...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use ALL_CAPS_SEPARATED_BY_UNDERSCORE for constants</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">const int SOME_CONSTANT = 1;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use static readonly if an object is a constant</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public static readonly MyConstClass MY_CONST_OBJECT = new MyConstClass();</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use ALL_CAPS_SEPARATED_BY_UNDERSCORE for <code>static readonly</code> variables</p></li><li><p>Use <code>readonly</code> when a variable must be assigned only once</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class Account</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        private readonly string mPassword;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public Account(string password)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            mPassword = password;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use pascal casing for namespaces</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace System.Graphics</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>prefix boolean variables with <code>b</code>.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">bool bFired;        // for local variable</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private bool mbFired;   // for private member variable</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>prefix boolean properties with <code>Is</code>, <code>Can</code>, <code>Should</code> or <code>Has</code>. </p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool IsFired { get; private set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool HasChild { get; private set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool CanModal { get; private set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool ShouldRedirect { get; private set; }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><ol start="14"><li><p>prefix interfaces with <code>I</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">interface ISomeInterface;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>prefix enums with <code>E</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public enum EDirection</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        North,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        South</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>prefix structs with <code>S</code> unless they are <code>readonly struct</code>s</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public struct SUserID;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>prefix <code>private</code> member variables with <code>m</code>. Use Pascal casing for the rest of a member variable</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Public class Employee</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public int DepartmentID { get; set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        private int mAge;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Methods with return values must have a name describing the value returned</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public uint GetAge();</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Use descriptive variable names. e.g <code>index</code> or <code>employee</code> instead of <code>i</code> or <code>e</code> unless it is a trivial index variable used for loops.</p></li><li><p>Capitalize every character in acronyms only if there is no extra word after them.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public int OrderID { get; private set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public string HttpAddress { get; private set; }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Prefer properties over getter setter functions</p></li></ol><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">BAD:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```cs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class Employee</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        private string mName;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public string GetName();</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public string SetName(string name);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">GOOD:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```cs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class Employee</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public string Name { get; set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ol start="22"><li>Declare local variables as close as possible to the first line where it is being used.</li></ol><ol start="23"><li><p>Use precision specification for floating point values unless there is an explicit need for a <code>double</code>.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">float f = 0.5F;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Always have a <code>default</code>: case for a <code>switch</code> statement.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">switch (number)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        case 0:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            ... </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        default:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><ol start="25"><li><p>If <code>default</code>: case must not happen in a <code>switch</code> case, always add <code>Debug.Assert(false);</code> or <code>Debug.Fail();</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">switch (type)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        case 1:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            ... </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        default:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            Debug.Fail("unknown type");</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Names of recursive functions end with <code>Recursive</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public void FibonacciRecursive();</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Order of class variables and methods must be as follows:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">a. public variables/properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">b. internal variables/properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">c. protected variables/properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">d. private variables</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Exception: if a private variable is accessed by a property, it should appear right before the mapped property.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">e. constructors</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">f. public methods</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">g. Internal methods</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">h. protected methods</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">i. private methods</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>If parameter types are general, function overloading must be avoided</p></li></ol><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Use:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```cs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Anim GetAnimByIndex(int index);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Anim GetAnimByName(string name);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Instead of:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```cs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Anim GetAnim(int index);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Anim GetAnim(string name);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ol start="29"><li><p>Each class must be in a separate source file unless it makes sense to group several smaller classes.</p></li><li><p>The filename must be the same as the name of the class including upper and lower cases.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class PlayerAnimation {}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>PlayerAnimation.cs</p></li><li><p>When a class spans across multiple files(i.e. partial classes), these files have a name that starts with the name of the class, followed by a dot and the subsection name.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public partial class Human;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Human.Head.cs
Human.Body.cs
Human.Arm.cs</p></li><li><p>Use <code>assert</code> for any assertion you have. Assert is not recoverable. (e.g, most function will have <code>Debug.Assert</code>(not null parameters) )</p></li></ol><ol start="33"><li><p>The name of a bitflag enum must be suffixed by <code>Flags</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[Flags]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public enum EVisibilityFlags</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        None = 0,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        Character = 1 &lt;&lt; 0,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        Terrain = 1 &lt;&lt; 1,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        Building = 1 &lt;&lt; 2,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Prefer overloading over default parameters</p></li></ol><ol start="35"><li>When default parameters are used, restrict them to natural immutable constants such as <code>null</code>, <code>false</code> or <code>0</code>.</li></ol><ol start="36"><li><p>Shadowed variables are not allowed.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class SomeClass</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public int Count { get; set; }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        public void Func(int count)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            for (int count = 0; count != 10; ++count)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">                // Use count</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Always use containers from <code>System.Collections.Generic</code> over ones from <code>System.Collections</code>. Using a pure array is fine as well.</p></li><li><p>Use real type over implicit typing(i.e, <code>var</code>) unless the type is unimportant. Some acceptable <code>var</code> usage includes <code>IEnumerable</code> and when the <code>new</code> keyword is used for anonymous type.</p></li><li><p>Use <code>static</code> class, not singleton pattern</p></li><li><p>Use <code>async Task</code> instead of <code>async void</code>. The only place where <code>async void</code> is allowed is for the event handler.</p></li></ol><ol start="41"><li><p>Validate any external data at the boundary and return before passing the data into our functions. This means that we assume all data is valid after this point.</p></li><li><p>Therefore, do not throw any exception from inside non-boundary methods. Also, exceptions should be handled at the boundary only.</p></li></ol><ol start="43"><li><p>As an exception to the previous rule, exception throwing is allowed when <code>switch</code>-<code>default</code> is used to catch missing <code>enum</code> handling logic. Still, do not catch this exception</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">switch (accountType)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        case AccountType.Personal:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            return something;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        case AccountType.Business:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            return somethingElse;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        default:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            throw new NotImplementedException($"unhandled switch case: {accountType}");</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Prefer not to allow <code>null</code> parameters in your function, especially from a <code>public</code> one.</p></li></ol><ol start="45"><li><p>If <code>null</code> parameter is used, and postfix the parameter name with <code>OrNull</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Anim GetAnim(string nameOrNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Prefer not to return <code>null</code> from any function, especially from a <code>public</code> one. However, you sometimes need to do this to avoid throwing exceptions.</p></li><li><p>If <code>null</code> is returned from any function. Postfix the function name with <code>OrNull</code>.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public string GetNameOrNull();</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Try not to use an object initializer. Use explicit constructor with named parameters instead. Two exceptions.
a. When the object is created at one place only. (e.g, one-time DTO)
b. When the object is created inside a static method of the owning class. (e.g, factory pattern)</p></li><li><p>Declare the variable for an <code>out</code> parameter on a seprate line. Do NOT declare it int the argument list.</p></li><li><p>Do not use <code>using</code> declaration, introduced in C# 8.0. Use <code>using</code> statement instead.</p></li><li><p>Always specify a data type after <code>new</code> keyword unless you are using annoymous type inside a function.</p></li><li><p>Use private init-only setter(<code>private init</code>), introduced in C# 9.0, wherever possible.</p></li><li><p>Use file scoped namespace declarations, introduced in C# 10.0.</p></li><li><p>When strong-typing a generic type, use <code>readonly record struct</code>, introduced in C# 10.0.</p></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ii-code-formatting">II. Code Formatting<a class="hash-link" href="#ii-code-formatting" title="Direct link to heading">​</a></h2><ol><li><p>Use Visual Studio's default for tabs. If another IDE is used, use 4 spaces instead of a real tab.</p></li><li><p>Always place an opening curly brace (<code>{</code>) in a new line</p></li></ol><ol start="3"><li><p>Add curly braces even if there's only one line in the scope</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">if (bSomething)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        return;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Declare only one variable per line</p><p>BAD:</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">int counter = 0, index = 0;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>GOOD: </p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">int counter = 0;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">int index = 0;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="iii-framework-specific-guidelines">III. Framework Specific Guidelines<a class="hash-link" href="#iii-framework-specific-guidelines" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-auto-serializationdeserialization-eg-systemtextjson">A. Auto Serialization/Deserialization (e.g. <code>System.Text.Json</code>)<a class="hash-link" href="#a-auto-serializationdeserialization-eg-systemtextjson" title="Direct link to heading">​</a></h3><ol><li><p>Auto-serializable data must be defined as <code>class</code>.</p></li><li><p>Auto-serializable <code>class</code> must not contain any library-specific attribute in it.</p></li><li><p>All data in auto-serializable <code>class</code> must be declared/defined via <code>public</code> auto properties. (1-to-1 mapping between properties and member variables)</p></li><li><p>If you need a read-only property in auto-serializable <code>class</code>, make a <code>public</code> method instead.</p></li><li><p>Auto-serializable <code>class</code> must have only one <code>public</code> constructor. This constructor must not take any parameter.</p></li><li><p>Do not directly call a auto-serialization method. (e.g. <code>JsonSerializer.Serialize&lt;&gt;()</code>). Make a wrapper method instead to limit the parameter types.</p></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="b-xaml-controls">B. XAML Controls<a class="hash-link" href="#b-xaml-controls" title="Direct link to heading">​</a></h3><ol><li>Do not name (i.e, <code>x:name</code>) a control unless you absolutely need it</li></ol><ol start="2"><li><p>Use pascal casing with prefixed <code>x</code> character for the name.</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">xLabelName</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Prefix the name with full control type</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">xLabelName</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">xButtonAccept</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="c-asp-net-core">C. ASP .NET Core<a class="hash-link" href="#c-asp-net-core" title="Direct link to heading">​</a></h3><ol><li><p>When using DTO(Data Transfer Object)s for a request body for a RESTful API, make each value-type property as <code>nullable</code> so that model validation is automatic</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[Required]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public Guid? ID { get; set; }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Validate all the requests as the first thing in any controller method. Once validation passes, all inputs are assumed to be correct. So no <code>[required]</code> <code>nullable</code> properties will be <code>null</code>.</p></li><li><p>Unlike above, <code>[RouteParam]</code> will not have <code>?</code></p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public bool GetAsync([RouteParam]Guid userID)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="d-servicerepo-pattern">D. Service/Repo Pattern<a class="hash-link" href="#d-servicerepo-pattern" title="Direct link to heading">​</a></h3><ol><li><p>For the DTO classes and enums that are only used internally (e.g, internal microservice or DTO between service and repo), prefix it with <code>X</code>. This means they are transient classes and enums</p><div class="language-cs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-cs codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public sealed class XNode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public enum EXTransactionStatus</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="unity-project-template">Unity Project Template<a class="hash-link" href="#unity-project-template" title="Direct link to heading">​</a></h2><p>This governance includes Project Structure Best Practices and C# Coding Standards for Unity.</p><p>A. Unity — Project Structure Best Practices</p><p>Employing an organized project structure is beneficial to your project and your team.</p><p>Scope:
Folder Structure
Folder Naming
File Naming</p><p>Benefits:</p><p>Consistency — The project structure has consistency in presentation regardless of team location, spoken language, or individual programmers.
Maintenance — Consistent project structure will aid readability. Readability helps new and existing programmers revisit the code base for fixes and improvements.
Communication — Developers more implicitly understand each other in written and verbal communication.</p><p>B. Coding Standards</p><p>Coding standards define a programming style. </p><p>Employing organized coding standards is beneficial to your project and your team.</p><p>Scope:</p><p>Naming Conventions
File Naming and Organization
Formatting and Indentation
Comments and Documentation
Classes, Functions and Interfaces
Testing</p><p>Benefits:</p><p>Code Integration
Team Member Integration
Maintenance
Uniform Problem Solving
Minimizes Communication
Minimizes Performance Pitfalls</p><div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── </span><span class="token maybe-class-name">Unity</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── </span><span class="token maybe-class-name">Assets</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── 3rdParty</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">VendorName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── readme</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">txt</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── readme</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">txt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">VendorName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── 3rdParty</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Art</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">AnimationClips</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">AnimationClips</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Animators</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Animators</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Audio</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">AudioClips</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">AudioClips</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">AudioMixers</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">AudioMixers</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Audio</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Fonts</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Fonts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Materials</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Materials</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Models</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Models</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Shaders</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Shaders</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Sprites</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Sprites</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Textures</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Textures</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Art</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Documentation</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Documentation</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">PhysicMaterials</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">PhysicMaterials</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Prefabs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Prefabs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Presets</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Presets</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Resources</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Resources</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Scenes</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Scenes</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">ScriptableObjects</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">ScriptableObjects</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Scripts</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Templates</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateEditorMenuItems</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">TemplateEditorMenuItems</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Templates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Other</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Templates</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">ITemplateInterface</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">ITemplateInterface</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateClass</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateClass</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateComponent</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateComponent</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateScriptableObject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">TemplateScriptableObject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Templates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Tests</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access maybe-class-name">Tests</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access maybe-class-name">Tests</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Templates</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateClassEditModeTest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">TemplateClassEditModeTest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Templates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Editor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token maybe-class-name">MyProject</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Templates</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">TemplateComponentPlayModeTest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">TemplateComponentPlayModeTest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">cs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Templates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token constant" style="color:rgb(189, 147, 249)">RMC</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; ├── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access maybe-class-name">Tests</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access maybe-class-name">Tests</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asmdef</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Tests</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; └── </span><span class="token maybe-class-name">Scripts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── </span><span class="token maybe-class-name">Packages</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; ├── manifest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">json</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │&nbsp;&nbsp; └── packages</span><span class="token operator">-</span><span class="token plain">lock</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">json</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    └── </span><span class="token maybe-class-name">ProjectSettings</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">AudioManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">ClusterInputManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">DynamicsManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">EditorBuildSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">EditorSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">GraphicsSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">InputManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">NavMeshAreas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">PackageManagerSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">Physics2DSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">PresetManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">ProjectSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">ProjectVersion</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">txt</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">QualitySettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">SceneTemplateSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">json</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">TagManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">TimeManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">UnityConnectSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">VersionControlSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── </span><span class="token maybe-class-name">VFXManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        └── </span><span class="token maybe-class-name">XRSettings</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">asset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token number">47</span><span class="token plain"> directories</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token number">94</span><span class="token plain"> files</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="unity3d-coding-standards">Unity3D Coding Standards<a class="hash-link" href="#unity3d-coding-standards" title="Direct link to heading">​</a></h2><ul><li>Use <a href="https://gist.github.com/aiegoo/41b95731260b56d8815f314d0bc2eea2" target="_blank" rel="noopener noreferrer">C#-Unity-Format</a> to manage document formatting.</li><li>Macros are all uppercase.</li><li>Naming of structures, types, enums use:<ul><li>Lowercase.</li><li>Underscore to separate words.</li><li>_<!-- -->t at the end of the name to indicate it is a type.</li><li>[area]<!-- -->_<!-- -->[noun]<!-- -->_<!-- -->t format.</li><li>Prepend k4a<em> to public types; i.e. k4a</em>[area]<!-- -->_<!-- -->[noun]<!-- -->_<!-- -->t.</li></ul></li><li>Enum element names additionally use:<ul><li>The same <!-- -->[area]<!-- -->_<!-- -->[noun]<!-- --> as the beginning of each element.</li><li>Underscore to separate words.</li><li>uppercase.</li></ul></li><li>Naming of functions use:<ul><li>Lowercase.</li><li>Underscores to separate words.</li><li>[area]<!-- -->_<!-- -->[verb]<!-- -->_<!-- -->[noun]<!-- --> format.</li><li>k4a_ at the start of public functions; i.e. k4a<!-- -->_<!-- -->[area]<!-- -->_<!-- -->[verb]<!-- -->_<!-- -->[noun]<!-- -->.</li></ul></li><li>Stop / Free / Destroy functions should not return an error type. If it is not possible to handle all error cases, and
there is nothing the user can do to resolve the issue, then it is acceptable to crash. If there is action the
user could take (not including an application restart or PC reboot), then returning an error specific to the recovery
action is acceptable.</li><li>Don't use default parameters in public APIs (C++/C#)</li></ul><p>An attempt at documenting a composition of coding standards acquired from multiple game developers across the community.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="table-of-contents">Table of Contents<a class="hash-link" href="#table-of-contents" title="Direct link to heading">​</a></h2><ol><li><a href="#code-formatting">Code Formatting</a></li><li><a href="#code-file-layout">Code File Layout</a></li><li><a href="#naming-conventions">Naming Conventions</a></li><li><a href="#code-documentation">Code Documentation</a></li><li><a href="#references">References</a></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="code-formatting">Code Formatting<a class="hash-link" href="#code-formatting" title="Direct link to heading">​</a></h2><ul><li>Use spaces instead of tabs. Do not mix spaces and tabs;</li><li>Each indentation level should be 4 spaces wide;</li><li>Each brace should have its own line;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Avoid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">if(playerWasHit) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    PlaySound(playerHitSound);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    Damage(player, damageAmount);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Prefer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">if(playerWasHit)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    PlaySound(playerHitSound);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    Damage(player, damageAmount);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public float Health { get { return health; } }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public float Health</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    get</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        return health;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>It is acceptable to use the <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members" target="_blank" rel="noopener noreferrer">expression body definition</a> operator <code>=&gt;</code> for property getters and setters for simple, single-statement properties;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public float Health</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    get =&gt; health;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    set =&gt; health = value;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Every statement after a conditional should be inside braces, even if it is a single statement;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">if(enemyInRange)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    Explode();</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">if(enemyInRange)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    Explode();</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Avoid using ternary operator;</li><li>Use <a href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated" target="_blank" rel="noopener noreferrer">string interpolation</a> instead of LogFormat to increase readability;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Avoid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Debug.Log("Player " + playerId + " took a hit from " + damageSource + " for " + damageAmount + " damage.");</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Avoid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Debug.LogFormat("Player {0} took a hit from {1} for {2} damage.", playerId, damageSource, damageAmount);</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Prefer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Debug.Log($"Player {playerId} took a hit from {damageSource} for {damageAmount} damage.");</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Switch-case code should be implemented inside braces;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">switch(colorId)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    case PlayerBodyColors.White:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            playerBody.SetTexture(whiteTexture);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    case PlayerBodyColors.Red:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            playerBody.SetTexture(redTexture);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    default:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            playerBody.SetTexture(defaultTexture);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        break;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Encode the document in UTF-8 if possible;</li><li>End-Of-Line character should be CRLF;</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="code-file-layout">Code File Layout<a class="hash-link" href="#code-file-layout" title="Direct link to heading">​</a></h2><ul><li>Library usings should be the first lines of a file, followed by <em>typedef</em>-like usings;</li><li>Put every class definition inside an appropriate namespace;</li><li>Prefer defining only one class per file;</li><li>File name should be the same as the class name.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// File: AiPathfinder.cs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using System.Collections.Generic;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using UnityEngine;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using WaypointMap = Dictionary&lt;Vector3,Waypoint&gt;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace MyGame.AiNavigation</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public class AiPathfinder</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li><p>Usings should be defined in the following order:</p><ol><li>System or .NET libraries</li><li>Unity libraries</li><li>Third-Party plugins (asset store)</li><li>Your own utility libraries</li><li>Project namespaces</li><li>Type name aliases</li></ol></li><li><p>All namespace categories should be blocked together, without separating with spaces or comments.</p></li><li><p>An exception to this is <em>typedef</em>-like usings, which should be separated from library usings with an empty line.</p></li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">using System;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using System.Collections;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using System.Collections.Generic;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using UnityEngine;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using UnityEngine.Events;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using ExampleCompany;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using OtherCompany.BoostedInspector;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using MyUtilityLib;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using MyUtilityLib.DebugUtilities;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using MyOtherLib.Patterns;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using ThisProject;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using ThisProject.Audio;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using ThisProject.Combat;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">using EntityPrefabMap = Dictionary&lt;EntityType,GameObject&gt;;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Define a class in the following order:<ol><li>Nested classes</li><li>Constants</li><li>Enums</li><li>Properties</li><li>Fields</li><li>Constructors (if applicable)</li><li>Unity Messages</li><li>Public methods</li><li>Private methods</li></ol></li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class MyClass : MonoBehaviour</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    private class MyNestedClass</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    private const int SOME_CONSTANT = 1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public enum SomeEnum</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        FirstElement,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        SecondElement</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public int SomeProperty</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        get =&gt; someField;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    private int someField;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    private void Start()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public void SomePublicMethod()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    private void SomePrivateMethod()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Prefer defining methods in the following order:<ol><li>Initialization methods</li><li>Core functionality methods</li><li>Helper or explanatory methods</li></ol></li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Initialization</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private void Initialize()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Core functionality</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private void Move(Vector3 direction)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Helper</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private bool CheckIfPositionIsWalkable(Vector3 position)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="naming-conventions">Naming Conventions<a class="hash-link" href="#naming-conventions" title="Direct link to heading">​</a></h2><ul><li>Identifiers for classes, methods, namespaces, enums, properties, attributes and coroutines are <code>PascalCase</code>;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace OpenSoulsGame.Debug</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class RichTextFormatter</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public string StringToBold(this string inputString)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public float DefaultSpacing</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ConsoleAttribute] private int letterSpacing;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Identifiers for fields, local variables, parameters are <code>camelCase</code>;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public  int playerId;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private InputHandler playerInput;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private float health;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">var name = GetPlayerName(playerId);</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Constants are written in <code>UPPER_CASE</code>;</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public const int MAX_SCENE_OBJECTS = 256;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Acronyms should be treated as words and are written in <code>PascalCase</code>.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class XmlFormatter</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public class AiBehaviour</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li><p>The conventions for casing are unaffected by the modifiers <code>public</code>, <code>private</code>, <code>protected</code>, <code>internal</code>, <code>static</code> or <code>readonly</code>;</p></li><li><p>Namespace identifiers should briefly describe the systems or sets of definitions contained in the namespace.</p></li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace Utilities.Debug</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace TowerDefenseGame.Combat</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">namespace TowerDefenseGame.UI</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Class identifiers should briefly describe its responsibilities or data. Prefer including the suffix <em>"Base"</em> in abstract classes where applicable.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// A class responsible for performing movement on the player character's transform</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">class PlayerMotor</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// An abstract class for implementing behaviors for AI Agents</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">abstract class AiBehaviourBase</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Interfaces should include the prefix "I". The interface name should briefly describe the purpose of its members or the components it interacts with.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">interface IMotorTarget</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">interface IUiElement</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Method identifiers should describe the effect caused by the method, or the return value if the method has no effect.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// A method that performs movement on the player character</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">public void Move(Vector3 movement)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Tipically, the identifier for methods without a return type should be a verb</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// A method that converts radians to degrees.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private float RadianToDegrees(float radians)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// The identifier helps to understand how the returned value should be interpreted</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// A method to determine if a position in the world can be traversed by the player</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private bool IsPositionWalkable(Vector3 position)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Coroutines are written with the prefix 'CO_', and the rest of its identifier should follow the same rules as methods.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">IEnumerator CO_SpawnPlayer(int playerId)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="code-documentation">Code Documentation<a class="hash-link" href="#code-documentation" title="Direct link to heading">​</a></h2><ul><li>Write self-documenting code when possible. Avoid overly abbreviated variables which don't have semantic value for the reader.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">p = p + v * dt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">position = position + velocity * deltaTime;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>You can also use explanatory variables to avoid writing complicated and unreadable lines:</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pos = Vector3.Lerp(targetEnemy.position, player.GetComponent&lt;AutoMovementController&gt;().targetWaypoint.nextPosition, elapsedTime / max);</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">var waypoint = player.GetComponent&lt;AutoMovementController&gt;().targetWaypoint;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">var startPosition = targetEnemy.position;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">var finalPosition = waypoint.nextPosition;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">var lerpPoint = elapsedTime / maxMovementTime;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">position = Vector3.Lerp(startPosition, finalPosition, lerpPoint);</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Write useful comments. Avoid being redundant with what the code is telling the reader. Instead, disclose valuable information that might not be directly perceivable.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// increment player id</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">playerId++;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// We know that a new player has joined, generate a new identifier.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">playerId++;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Do not comment bad or unreadable code. Prefer rewriting it instead.</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Increase current position by the velocity scaled by deltaTime to perform movement.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">p = p + v * dt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">position = position + velocity * deltaTime;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>Do not contradict the code!</li></ul><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Bad:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Health value should be between 0 and 100.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private int health;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">this.health = 150;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Good:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Base health values should be between 0 and 100.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">private int health;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Apply the temporary health buff from consuming potion.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">this.health = 150;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="references-1">References<a class="hash-link" href="#references-1" title="Direct link to heading">​</a></h2><ul><li><a href="https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines" target="_blank" rel="noopener noreferrer">Microsoft Naming Guidelines</a></li><li><a href="https://github.com/raywenderlich/c-sharp-style-guide" target="_blank" rel="noopener noreferrer">raywenderlich/c-sharp-style-guide</a></li><li><a href="https://docs.unrealengine.com/en-US/ProductionPipelines/DevelopmentSetup/CodingStandard/index.html" target="_blank" rel="noopener noreferrer">Unreal coding standards</a></li></ul><div class="container-top"><a href="#" class="top">TOP</a></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Fixing Crawler and Json Issues]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-06-31th-docSearch</link>
            <guid>2022-08-06-31th-docSearch</guid>
            <pubDate>Sat, 06 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[DocSearch Issues]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="docsearch-issues">DocSearch Issues<a class="hash-link" href="#docsearch-issues" title="Direct link to heading">​</a></h2><p>I Have trouble getting started with Algolia, especially with the pushing the site's index data to Algolia server, which has the following schematics;</p><p>local site --&gt; server (where the app is deployed) &lt;-- crawler  --&gt; algolia db as indexed objects</p><p>and your typical deploy process would be; add or update your local version, build and deploy to the server. The deployed would be different from your local version as the running site and local development are bascially two different things. As Algolia won't care about your local site, the issues of not knowing what is at stake are apparent. They have a Dashboard where you can update and monitor this whole process. If I am not wrong, I felt there are significant time-lapse for the changes to be updated. </p><p>And they have detailed instructions and snippets or cli to go with. They support all major documentation platforms for jump-starters. So their doc gets complicated and requires where you are at with your current development and what to choose from their set of tables.</p><p>I find it useful to refer to their show-case sites which resemble your development interface and requirements, such as Astromers in my case.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Finally Run Github CI Using Actions]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-06-31th-github-acttions</link>
            <guid>2022-08-06-31th-github-acttions</guid>
            <pubDate>Sat, 06 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Github Actions deploy scripts]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="github-actions-deploy-scripts">Github Actions deploy scripts<a class="hash-link" href="#github-actions-deploy-scripts" title="Direct link to heading">​</a></h2><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Deploy to GitHub Pages</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">push</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">branches</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> master</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token comment" style="color:rgb(98, 114, 164)"># Review gh actions docs if you want to further define triggers, paths, etc</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token comment" style="color:rgb(98, 114, 164)"># https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">jobs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">deploy</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Deploy to GitHub Pages</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">runs-on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ubuntu</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/checkout@v3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/setup</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">node@v3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">with</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">node-version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">18</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">cache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> npm</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install dependencies</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">run</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> npm install </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">frozen</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">lockfile</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Build website</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">run</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> npm run build</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token comment" style="color:rgb(98, 114, 164)"># Popular action to deploy to GitHub Pages:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token comment" style="color:rgb(98, 114, 164)"># Docs: https://github.com/aiegoo/archery</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Deploy to GitHub Pages</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/checkout@v3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">with</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">github_token</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> secrets.GITHUB_TOKEN </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># Build output to publish to the `gh-pages` branch:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">publish_dir</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ./build</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># The following lines assign commit authorship to the official</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># GH-Actions bot for deploys to `gh-pages` branch:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># https://github.com/actions/checkout/issues/13#issuecomment-724415212</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># The GH actions bot is used by default if you didn't specify the two fields.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token comment" style="color:rgb(98, 114, 164)"># You can swap them out with your own user credentials.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">user_name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> aiegoo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">user_email</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> 42961200+github</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">actions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">bot</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain">@users.noreply.github.com</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="issues">Issues<a class="hash-link" href="#issues" title="Direct link to heading">​</a></h2><p>`The deploy didn't really happen yet even though the process clearly said it's gone through without a glitch. I think 'build' isn't actually add the built files to gh-pages.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Skeleton Joints for Maya]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-06-31th-skeleton-joints</link>
            <guid>2022-08-06-31th-skeleton-joints</guid>
            <pubDate>Sat, 06 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[building skeleton joints for Maya]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="building-skeleton-joints-for-maya">building skeleton joints for Maya<a class="hash-link" href="#building-skeleton-joints-for-maya" title="Direct link to heading">​</a></h2><p><img loading="lazy" src="https://user-images.githubusercontent.com/42961200/183242634-47a050a1-7318-4e42-9cbf-b1ec02c88807.png" alt="image" class="img_ev3q"></p><p><img loading="lazy" src="https://user-images.githubusercontent.com/42961200/183242693-80ade49c-aea6-4b29-9191-8d951b8c30e4.png" alt="image" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="maya-hotkeys">maya hotkeys<a class="hash-link" href="#maya-hotkeys" title="Direct link to heading">​</a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Common Hotkeys used in Maya</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">F1                          Maya Help</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">F2                          Animation menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">F3                          Modeling menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">F4                          Surfaces menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">1                            Rough NURBS smooth/Actual polygonal preview</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">2                            Medium NURBS smooth/Polygonal smooth + actual cage preview</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">3                            Fine NURBS smooth/Polygonal smooth preview</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">4                            Wireframe mode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">5                            Shaded mode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">6                            Hardware texturing</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">7                            Show light simulation</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">q                            Select tool</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">w                           Move tool</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">e                            Rotate tool</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">r                            Scale tool</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">t                            Show manipulators</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">y                            Last tool selected</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">s                            Sets a keyframe</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">f                             Frame selection in current view</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">g                            Repeat last command</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ctrl+ g                   Groups selection</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">p                            Parents first selection (or more) to last selected</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">P (shift + p)            Unparents first selection (or more) to last selected v                     </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">       Snap to point</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">b                            Resizes artisan brush</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">x                            Snap to grid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">z (ctrl+ z)               Undo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Z (shift + z)            Redo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">+ /=                 Increase manipulator size</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-                    Decrease manipulator size </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Spacebar (hold)      Show hotbox</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Spacebar (tap)       When done over a viewport, maximizes/minimizes current window </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Insert Key           Pivot point edit mode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">F2– Animation, F3 – Polygons, and F4 – Surfaces)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" src="https://user-images.githubusercontent.com/42961200/183243729-803b63ee-af70-4d0b-b557-6d3ad0a6155b.png" alt="image" class="img_ev3q"></p><p><img loading="lazy" src="https://user-images.githubusercontent.com/42961200/183259381-cceb1375-edbe-4e7c-8f91-4204dec5eae2.png" alt="image" class="img_ev3q"></p><p><img loading="lazy" src="https://user-images.githubusercontent.com/42961200/187106133-b4ced531-4301-4f05-a492-0646abe3b21b.png" alt="Image" class="img_ev3q"></p><p><a href="https://user-images.githubusercontent.com/42961200/187316662-0639dd94-ca33-4947-a3cf-163439a56a36.mov" target="_blank" rel="noopener noreferrer">https://user-images.githubusercontent.com/42961200/187316662-0639dd94-ca33-4947-a3cf-163439a56a36.mov</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bashing Blog Generator]]></title>
            <link>https://aiegoo.github.io/archery/blog/2022-08-05-31th-Friday</link>
            <guid>2022-08-05-31th-Friday</guid>
            <pubDate>Fri, 05 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Bashing blog]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="bashing-blog">Bashing blog<a class="hash-link" href="#bashing-blog" title="Direct link to heading">​</a></h2><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">if [ $# -ge $CMDLINEPARAM ]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">then</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  blog=$@</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">else</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  echo "Atleast ${CMDLINEPARAM} blog name is required."</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  exit 1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">fi</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[First Blog Post]]></title>
            <link>https://aiegoo.github.io/archery/blog/first-blog-post</link>
            <guid>first-blog-post</guid>
            <pubDate>Mon, 01 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet]]></description>
            <content:encoded><![CDATA[<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>]]></content:encoded>
            <category>hola</category>
            <category>docusaurus</category>
        </item>
        <item>
            <title><![CDATA[Long Blog Post]]></title>
            <link>https://aiegoo.github.io/archery/blog/long-blog-post</link>
            <guid>long-blog-post</guid>
            <pubDate>Sat, 30 Jul 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[This is the summary of a very long blog post,]]></description>
            <content:encoded><![CDATA[<p>This is the summary of a very long blog post,</p><p>Use a <code>&lt;!--</code> <code>truncate</code> <code>--&gt;</code> comment to limit blog post size in the list view.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>]]></content:encoded>
            <category>hello</category>
            <category>docusaurus</category>
        </item>
        <item>
            <title><![CDATA[Welcome]]></title>
            <link>https://aiegoo.github.io/archery/blog/welcome</link>
            <guid>welcome</guid>
            <pubDate>Thu, 26 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[what game is]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="what-game-is">what game is<a class="hash-link" href="#what-game-is" title="Direct link to heading">​</a></h3><ol><li>is it fun</li><li>how is it being packaged</li><li>is it creative and stand-out</li><li>is it doable or is it something wishful</li><li>is it clear on the architecture</li><li>does it sound appropriate</li><li>is it in focus and immersable </li><li>does it allow different views</li><li>what emotion does it evoke</li><li>is it detailed</li><li>perfection level</li></ol>]]></content:encoded>
            <category>facebook</category>
            <category>hello</category>
            <category>docusaurus</category>
        </item>
        <item>
            <title><![CDATA[MDX Blog Post]]></title>
            <link>https://aiegoo.github.io/archery/blog/mdx-blog-post</link>
            <guid>mdx-blog-post</guid>
            <pubDate>Sun, 01 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Blog posts support Docusaurus Markdown features, such as MDX.]]></description>
            <content:encoded><![CDATA[<p>Blog posts support <a href="https://docusaurus.io/docs/markdown-features" target="_blank" rel="noopener noreferrer">Docusaurus Markdown features</a>, such as <a href="https://mdxjs.com/" target="_blank" rel="noopener noreferrer">MDX</a>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Use the power of React to create interactive blog posts.</p><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token operator">&lt;</span><span class="token plain">button onClick</span><span class="token operator">=</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token arrow operator">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">alert</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">'button clicked!'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&gt;</span><span class="token maybe-class-name">Click</span><span class="token plain"> me</span><span class="token operator">!</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">button</span><span class="token operator">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><button>Click me!</button></div></div>]]></content:encoded>
            <category>docusaurus</category>
        </item>
    </channel>
</rss>