<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: insthync</title>
    <description>The latest articles on DEV Community by insthync (@insthync).</description>
    <link>https://dev.to/insthync</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F358723%2Fb3be6fb8-b758-44b4-8fc5-5e6e39b8f61b.jpeg</url>
      <title>DEV Community: insthync</title>
      <link>https://dev.to/insthync</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/insthync"/>
    <language>en</language>
    <item>
      <title>How to watch Android app log messages with adb logcat for Unity developer</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Sat, 25 Feb 2023 01:43:35 +0000</pubDate>
      <link>https://dev.to/insthync/how-to-watch-android-app-log-messages-with-adb-logcat-for-unity-developer-2i12</link>
      <guid>https://dev.to/insthync/how-to-watch-android-app-log-messages-with-adb-logcat-for-unity-developer-2i12</guid>
      <description>&lt;p&gt;For those who use Unity to develop Apps, you might not install Android SDK by yourself (Installed by Unity) and never uses &lt;code&gt;adb&lt;/code&gt; yet, you can find Android SDK installing path from Unity Editor&lt;/p&gt;

&lt;p&gt;In Unity Editor, open menu: &lt;code&gt;Edit -&amp;gt; Preferences…&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wihrey91t9dkc32a6mj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wihrey91t9dkc32a6mj.png" alt=" " width="383" height="922"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Preferences&lt;/code&gt; window go to &lt;code&gt;External Tools&lt;/code&gt;, then at &lt;code&gt;Android SDK&lt;/code&gt; press &lt;code&gt;Copy Path&lt;/code&gt; button&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkwuuhil8o3pag12u198.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkwuuhil8o3pag12u198.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;cmd&lt;/code&gt; (&lt;code&gt;Terminal&lt;/code&gt; for mac user), use &lt;code&gt;cd&lt;/code&gt; command to go to the copied path. For this example, it is &lt;code&gt;D:\Unity\2020.3.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If it is in difference drive, you must change it, for example if your Unity installed in &lt;code&gt;D:&lt;/code&gt; you must change the drive by enter &lt;code&gt;D:&lt;/code&gt; in &lt;code&gt;cmd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then &lt;code&gt;cd D:\Unity\2020.3.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3vdfk7zwaeflpmg5z17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3vdfk7zwaeflpmg5z17.png" alt=" " width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;adb&lt;/code&gt; will located in &lt;code&gt;platform-tools&lt;/code&gt; folder, so you must enter to the folder by &lt;code&gt;cd platform-tools&lt;/code&gt; then you will be able to use &lt;code&gt;adb&lt;/code&gt;, you can enter &lt;code&gt;adb logcat&lt;/code&gt; to see log messages&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsv63cmera3w8ot1yqi4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsv63cmera3w8ot1yqi4.png" alt=" " width="800" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want it to filter only messages from Unity you may uses this command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;adb logcat -s Unity ActivityManager PackageManager dalvikvm DEBUG&lt;/code&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>githubcopilot</category>
      <category>tooling</category>
      <category>developers</category>
    </item>
    <item>
      <title>[Unity WebGL] How to make it not load content from cache</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Mon, 04 Jul 2022 15:18:21 +0000</pubDate>
      <link>https://dev.to/insthync/unity-webgl-how-to-make-it-not-load-content-from-cache-5946</link>
      <guid>https://dev.to/insthync/unity-webgl-how-to-make-it-not-load-content-from-cache-5946</guid>
      <description>&lt;p&gt;How to do it is like when you are going to force it to refresh style or javascript content by add GET parameter follow the files URL for example: version=007, script.js?v=1150. Then we may change parameters after files changed like this: script?v=1151&lt;/p&gt;

&lt;p&gt;We can do the same thing with Unity build, in &lt;code&gt;index.html&lt;/code&gt; file we can add GET parameter to file URL like following example which I've added &lt;code&gt;id=20220704001&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var buildUrl = "Build";
var loaderUrl = buildUrl + "/unity-build.loader.js?id=20220704001";
var config = {
  dataUrl: buildUrl + "/unity-build.data?id=20220704001",
  frameworkUrl: buildUrl + "/unity-build.framework.js?id=20220704001",
  codeUrl: buildUrl + "/unity-build.wasm?id=20220704001",
  streamingAssetsUrl: "StreamingAssets",
  companyName: "Insthync",
  productName: "Unity WebGL",
  productVersion: "0.1",
  showBanner: unityShowBanner,
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We also able to make Unity add GET parameter when builds with WebGL template macro like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var buildUrl = "Build";
var loaderUrl = buildUrl + "/{{{LOADER_FILENAME}}}?id={{{PRODUCT_VERSION}}}";
var config = {
  dataUrl: buildUrl + "/{{{DATA_FILENAME}}}?id={{{PRODUCT_VERSION}}}",
  frameworkUrl: buildUrl + "/{{{FRAMEWORK_FILENAME}}}?id={{{PRODUCT_VERSION}}}",
  codeUrl: buildUrl + "/{{{CODE_FILENAME}}}?id={{{PRODUCT_VERSION}}}",
  streamingAssetsUrl: "StreamingAssets",
  companyName: "{{{COMPANY_NAME}}}",
  productName: "{{{PRODUCT_NAME}}}",
  productVersion: "{{{PRODUCT_VERSION}}}",
  showBanner: unityShowBanner,
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we set &lt;code&gt;Version&lt;/code&gt; (in Build Settings) to &lt;code&gt;1.0&lt;/code&gt; then when it built, codes in &lt;code&gt;index.html&lt;/code&gt; will be like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var buildUrl = "Build";
var loaderUrl = buildUrl + "/unity-build.loader.js?id=1.0";
var config = {
  dataUrl: buildUrl + "/unity-build.data?id=1.0",
  frameworkUrl: buildUrl + "/unity-build.framework.js?id=1.0",
  codeUrl: buildUrl + "/unity-build.wasm?id=1.0",
  streamingAssetsUrl: "StreamingAssets",
  companyName: "Insthync",
  productName: "Unity WebGL",
  productVersion: "1.0",
  showBanner: unityShowBanner,
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find more information about template macro from &lt;a href="https://docs.unity3d.com/Manual/webgl-templates.html"&gt;this link&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Addressable Asset not being refreshed?
&lt;/h2&gt;

&lt;p&gt;We can do the same thing by make changes to &lt;code&gt;StreamingAssets\aa\settings.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Find &lt;code&gt;{"m_Keys":["AddressablesMainContentCatalogRemoteHash"],"m_InternalId":&lt;/code&gt; in &lt;code&gt;settings.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It will have codes like this &lt;code&gt;"m_InternalId":"https://yourgameassets.com/addressable/WebGL/catalog_2022.07.04.00.00.00.hash"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then just add GET parameter like this&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"m_InternalId":"https://yourgameassets.com/addressable/WebGL/catalog_2022.07.04.00.00.00.hash?version=001"&lt;/code&gt;&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>webgl</category>
      <category>cache</category>
    </item>
    <item>
      <title>Create game with MMORPG KIT-Part 3-Map's navmesh and first monster</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Sun, 26 Sep 2021 12:53:31 +0000</pubDate>
      <link>https://dev.to/insthync/create-game-with-mmorpg-kit-part-3-first-monster-and-map-s-navmesh-5277</link>
      <guid>https://dev.to/insthync/create-game-with-mmorpg-kit-part-3-first-monster-and-map-s-navmesh-5277</guid>
      <description>&lt;p&gt;In this part, I will setup map's navmesh to make monsters able to move (and also make player's character able to move by point click controlling) and create first monster character&lt;/p&gt;

&lt;h2&gt;
  
  
  Create map's nav mesh
&lt;/h2&gt;

&lt;p&gt;Open map scene (&lt;code&gt;000_Leveling_Test&lt;/code&gt;) first, because we are going to create nav mesh for this map.&lt;/p&gt;

&lt;p&gt;Then open &lt;code&gt;Navigation&lt;/code&gt; window from menu &lt;code&gt;Window -&amp;gt; AI -&amp;gt; Navigation&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvrzxo4d3njss1p5vno7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvrzxo4d3njss1p5vno7.png" alt="Screenshot_689" width="557" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then in &lt;code&gt;Navigation&lt;/code&gt; window, select &lt;code&gt;Object&lt;/code&gt; tab, select sources for nav mesh creation, in this scene has only one mesh (because we made this scene just for testing). It is &lt;code&gt;Floor&lt;/code&gt;, select it and tick on &lt;code&gt;Navigation Static&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7uy17ehvm6w4z2396r2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7uy17ehvm6w4z2396r2a.png" alt="Screenshot_691" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select &lt;code&gt;Bake&lt;/code&gt; tab click &lt;code&gt;Bake&lt;/code&gt; button, and nav mesh will be created, save the scene, and... done!.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3y6f8npx00pwvoer6ne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3y6f8npx00pwvoer6ne.png" alt="Screenshot_692" width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Create new monster
&lt;/h2&gt;

&lt;p&gt;You can create new character easily by &lt;code&gt;Character Entity Creator&lt;/code&gt; dialog&lt;/p&gt;

&lt;p&gt;Before you use this tool, you have to prepare character model prefab&lt;/p&gt;

&lt;p&gt;I will uses characters from &lt;a href="https://assetstore.unity.com/packages/3d/characters/creatures/rpg-monster-wave-polyart-157652" rel="noopener noreferrer"&gt;RPG Monster Wave Polyart&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My first monster that I am going to create is &lt;code&gt;Slime&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So I will prepare Slime character model prefab by duplicate &lt;code&gt;Slime&lt;/code&gt; prefab from &lt;code&gt;Assets/RPG Monster Wave Polyart/Prefabs/PolyartDefault&lt;/code&gt; by select it, press &lt;code&gt;CTRL+D&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzhxn90w25s6hpd6r5x8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzhxn90w25s6hpd6r5x8.png" alt="Screenshot_670" width="699" height="751"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then drag duplicated prefab to &lt;code&gt;Assets/Leveling/Prefabs/MonsterCharacters&lt;/code&gt; and rename it to &lt;code&gt;Slime&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqhnr01j2nov3lhucdl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqhnr01j2nov3lhucdl0.png" alt="Screenshot_671" width="699" height="796"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And delete all components except &lt;code&gt;Animator&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4dxlzn9x582yx67rxdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4dxlzn9x582yx67rxdk.png" alt="Screenshot_672" width="692" height="956"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now a new character model preparation is done, next I'm going to create new monster character entity based on this character model.&lt;/p&gt;




&lt;p&gt;Open the dialog from menu &lt;code&gt;MMORPG KIT -&amp;gt; Character Entity Creator (3D)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqvit7ks8i5txw6jmvqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqvit7ks8i5txw6jmvqg.png" alt="Screenshot_673" width="730" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I will set filename to &lt;code&gt;Slime&lt;/code&gt;, set &lt;code&gt;Character entity type&lt;/code&gt; to &lt;code&gt;Monster Character Entity&lt;/code&gt;, set &lt;code&gt;Entity movement type&lt;/code&gt; to &lt;code&gt;Nav Mesh&lt;/code&gt;, Select game database which created for this project (It is &lt;code&gt;LevelingGameDb&lt;/code&gt; which was created in first part) and set &lt;code&gt;FBX&lt;/code&gt; to  prepared character model prefab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frogjbnp9fszon5rg63yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frogjbnp9fszon5rg63yg.png" alt="Screenshot_674" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After set data in the dialog, press &lt;code&gt;Create&lt;/code&gt; button, then it will shows folder choosing dialog, select folder which you want to save, Mine will be saved to &lt;code&gt;Assets/Leveling/GameData/MonsterCharacters/Slime&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hnt3t27br1tzthffpse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hnt3t27br1tzthffpse.png" alt="Screenshot_677" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then data will be created in selected folder&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlsn58fi8hc6f6gq8dmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlsn58fi8hc6f6gq8dmc.png" alt="Screenshot_678" width="699" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And also added to the game database&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl400hzhx7v0qiccnku1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl400hzhx7v0qiccnku1g.png" alt="Screenshot_680" width="691" height="911"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Set character animations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://assetstore.unity.com/packages/3d/characters/creatures/rpg-monster-wave-polyart-157652" rel="noopener noreferrer"&gt;RPG Monster Wave Polyart&lt;br&gt;
&lt;/a&gt; have an animations for characters, so I will show how to set character's animations by use animations from the package.&lt;/p&gt;

&lt;p&gt;To set character's animations, you have to open the character entity prefab. For this character, I've saved it to &lt;code&gt;Assets/Leveling/GameData/MonsterCharacters/Slime&lt;/code&gt; so I will go to the folder and open prefab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlsn58fi8hc6f6gq8dmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlsn58fi8hc6f6gq8dmc.png" alt="Screenshot_678" width="699" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then find attached &lt;code&gt;Playable Character Model&lt;/code&gt; component &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftes4laecs0cnnynjuaa8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftes4laecs0cnnynjuaa8.png" alt="Screenshot_684" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Default Animations&lt;/code&gt;, set following clips&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/IdleNormal_Slime_Anim&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Idle State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/Run_Slime_Anim&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Move States -&amp;gt; Forward State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/GetHit_Slime_Anim&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Hurt State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/Die_Slime_Anim&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Dead State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvx5wloz77s8b8vu2s0fg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvx5wloz77s8b8vu2s0fg.png" alt="Screenshot_685" width="693" height="1274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Default Animations -&amp;gt; Right Hand Attack Animations&lt;/code&gt; set 2 attack animations by uses clip from &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/Attack01_Slime_Anim&lt;/code&gt; and &lt;code&gt;Assets/RPG Monster Wave Polyart/Animations/Slime/Attack02_Slime_Anim&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtog5zq4twlhpx9ggjgn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtog5zq4twlhpx9ggjgn.png" alt="Screenshot_686" width="688" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, your character is ready to use, let's add it to the game map.&lt;/p&gt;




&lt;h2&gt;
  
  
  Add monster to the map
&lt;/h2&gt;

&lt;p&gt;There are 2 ways to add monster to the map.&lt;/p&gt;

&lt;p&gt;First, drag a prefab to the map scene, that is it.&lt;/p&gt;

&lt;p&gt;Second, create game object and attach &lt;code&gt;Monster Spawn Area&lt;/code&gt; component&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4jf69ep9ybiu929nrl1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4jf69ep9ybiu929nrl1.png" alt="Screenshot_687" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set &lt;code&gt;Slime&lt;/code&gt; character entity prefab to &lt;code&gt;Monster Spawn Area&lt;/code&gt; component -&amp;gt; &lt;code&gt;Prefab&lt;/code&gt; field&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03k5u6e72vxldcxd3dx5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03k5u6e72vxldcxd3dx5.png" alt="Screenshot_688" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set random level and spawning amount as you wish, I will set spawning amount to &lt;code&gt;10&lt;/code&gt; so when start game it will spawn &lt;code&gt;10&lt;/code&gt; of &lt;code&gt;Smile&lt;/code&gt;s&lt;/p&gt;

&lt;p&gt;Then test the game, you will see 10 Slimes spawned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6eb8bx8cn7bn62x15zq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6eb8bx8cn7bn62x15zq.png" alt="Screenshot_693" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra - Why I can't attack monster
&lt;/h2&gt;

&lt;p&gt;You can't attack monster which created by &lt;code&gt;Character Entity Creator&lt;/code&gt; because it has no collider attached yet, you can attach any collider to the prefab but you have to set it as trigger collider.&lt;/p&gt;

&lt;p&gt;For the Slime, I will attach box collider.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8pqemzm9kgb7lomlper.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8pqemzm9kgb7lomlper.png" alt="Screenshot_695" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then save the prefab, test the game again, you will be able to click on monster to attack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra - Why monster not moving or do anything when I attack it
&lt;/h2&gt;

&lt;p&gt;It is because there is no monster activity component attached to the Slime yet, you have to attach &lt;code&gt;Monster Activity Component&lt;/code&gt; to the Slime prefab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8sb1p7m307i7zndw7m8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8sb1p7m307i7zndw7m8.png" alt="Screenshot_696" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Create game with MMORPG KIT-Part 2-Map and first Character</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Tue, 29 Jun 2021 09:33:18 +0000</pubDate>
      <link>https://dev.to/insthync/create-game-with-mmorpg-kit-part-2-map-and-first-character-54dl</link>
      <guid>https://dev.to/insthync/create-game-with-mmorpg-kit-part-2-map-and-first-character-54dl</guid>
      <description>&lt;p&gt;In this part, I will create empty scene which has a floor for character movement testing and the first character.&lt;/p&gt;

&lt;h2&gt;
  
  
  Map preparation
&lt;/h2&gt;

&lt;p&gt;You can create new scene from menu &lt;code&gt;File -&amp;gt; New Scene&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxs09syceeqg4y5r5s02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxs09syceeqg4y5r5s02.png" alt="Screenshot_480" width="292" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Delete &lt;code&gt;Main Camera&lt;/code&gt;, because it will instantiate gameplay camera prefab as main character when player enter map scene, it should not have more than one main camera in the map scene&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz52b9j6qn2nrgsst77ft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz52b9j6qn2nrgsst77ft.png" alt="Screenshot_511" width="383" height="236"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Map scenes must have &lt;code&gt;EventSystem&lt;/code&gt; for UI event handling, so you have to add it by menu &lt;code&gt;GameObject -&amp;gt; UI -&amp;gt; Event System&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxbv0aj9f7mikny2cs5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxbv0aj9f7mikny2cs5q.png" alt="Screenshot_481" width="497" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will create this scene for character movement testing only, so I will just add a cube and set its scale to [100, 1, 100], position is [0, -0.5, 0]&lt;/p&gt;

&lt;p&gt;Then save the scene, I've set it name to &lt;code&gt;000_Leveling_Test&lt;/code&gt;, saved it to &lt;code&gt;Assets/Leveling/Scenes/Maps&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foerp41i8hozv5qai73ey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foerp41i8hozv5qai73ey.png" alt="Screenshot_482" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And don't forget to add it to &lt;code&gt;Scenes In Build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhmizwwfx07qjaezbnsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhmizwwfx07qjaezbnsd.png" alt="Screenshot_502" width="632" height="601"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After that, you have to create map info for the map scene.&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;Game Database Editor&lt;/code&gt; dialog from menu &lt;code&gt;MMORPG KIT -&amp;gt; Game Database&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtp0sbdqgb8o1mgbqlw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtp0sbdqgb8o1mgbqlw4.png" alt="Screenshot_483" width="243" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose your game database &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8hi0s67sm8lh7ipwjf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8hi0s67sm8lh7ipwjf5.png" alt="Screenshot_484" width="800" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;Map Info&lt;/code&gt; section, then click &lt;code&gt;Create&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm385xiqdpfue2ctsc44h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm385xiqdpfue2ctsc44h.png" alt="Screenshot_485" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose kind of map info, for generic maps uses &lt;code&gt;MultiplayerARPG.MapInfo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqex00hqy5usdv1ljebk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqex00hqy5usdv1ljebk.png" alt="Screenshot_494" width="392" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then save it, I will save it to &lt;code&gt;Assets/Leveling/GameData/Maps&lt;/code&gt;, name: &lt;code&gt;000_Leveling_Test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw63vvmsmcji1p48habw5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw63vvmsmcji1p48habw5.png" alt="Screenshot_495" width="668" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set created scene to &lt;code&gt;Scene&lt;/code&gt; field&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnc760ebljzy2sypjnij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnc760ebljzy2sypjnij.png" alt="Screenshot_496" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Create new character
&lt;/h2&gt;

&lt;p&gt;You can create new character easily by &lt;code&gt;Character Entity Creator&lt;/code&gt; dialog&lt;/p&gt;

&lt;p&gt;Before you use this tool, you have to prepare character model prefab&lt;/p&gt;

&lt;p&gt;I will uses characters from &lt;a href="https://assetstore.unity.com/packages/3d/characters/humanoids/fantasy/modular-rpg-hero-polyart-138600" rel="noopener noreferrer"&gt;Modular RPG Hero Polyart&lt;/a&gt; package&lt;/p&gt;

&lt;p&gt;I will prepare character model prefab based on &lt;code&gt;ForExternalAnimations&lt;/code&gt; prefab which located in &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Prefabs/CharacterBaseForExternalAnimations&lt;/code&gt;, duplicate it by select it, press &lt;code&gt;CTRL+D&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcot2mkgbt5cew0icpe25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcot2mkgbt5cew0icpe25.png" alt="Screenshot_675" width="702" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then drag duplicated prefab to Assets/Leveling/Prefabs/PlayerCharacters and rename it to &lt;code&gt;Human&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgwwmboax3ci2a7zk339.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgwwmboax3ci2a7zk339.png" alt="Screenshot_676" width="696" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And delete all components except Animator&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzk6jm5tznazbdc2gyzcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzk6jm5tznazbdc2gyzcz.png" alt="Screenshot_497" width="800" height="225"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now a new character model preparation is done, next I'm going to create new player character entity based on this character model.&lt;/p&gt;




&lt;p&gt;Open the dialog from menu &lt;code&gt;MMORPG KIT -&amp;gt; Character Entity Creator (3D)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k8wj19rnzth98pywuq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k8wj19rnzth98pywuq4.png" alt="Screenshot_673" width="730" height="220"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then I will set filename to &lt;code&gt;Human&lt;/code&gt;, set &lt;code&gt;Character entity type&lt;/code&gt; to &lt;code&gt;Player Character Entity&lt;/code&gt;, set &lt;code&gt;Entity movement type&lt;/code&gt; to &lt;code&gt;Character Controller&lt;/code&gt;, Select game database which created for this project (It is &lt;code&gt;LevelingGameDb&lt;/code&gt; which was created in first part) and set &lt;code&gt;FBX&lt;/code&gt; to  prepared character model prefab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9h0tc59hk2ndq4v3al5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9h0tc59hk2ndq4v3al5.png" alt="Screenshot_679" width="800" height="214"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After set data in the dialog, press &lt;code&gt;Create&lt;/code&gt; button, then it will shows folder choosing dialog, select folder which you want to save, Mine will be saved to &lt;code&gt;Assets/Leveling/GameData/PlayerCharacters/Human&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhw1zbz2qsl62bigmitd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhw1zbz2qsl62bigmitd.png" alt="03" width="667" height="471"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then data will be created in selected folder&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskqw6wagsryfmek7ml76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskqw6wagsryfmek7ml76.png" alt="04" width="651" height="590"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And also added to the game database&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65ncrd9fmdcbos6ux78w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65ncrd9fmdcbos6ux78w.png" alt="05" width="460" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you can press play from &lt;code&gt;00_Leveling_Init&lt;/code&gt; scene to try creating the character&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fok34cwzjawem88syomwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fok34cwzjawem88syomwz.png" alt="Screenshot_498" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll noticed it has no animation, so we've to set it animation&lt;/p&gt;




&lt;h2&gt;
  
  
  Set character animations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://assetstore.unity.com/packages/3d/characters/humanoids/fantasy/modular-rpg-hero-polyart-138600" rel="noopener noreferrer"&gt;Modular RPG Hero Polyart&lt;/a&gt; have an animations for characters, so I will show how to set character's animations by use animations from the package.&lt;/p&gt;

&lt;p&gt;To set character's animations, you have to open the character entity prefab. For this character, I've saved it to &lt;code&gt;Assets/Leveling/GameData/PlayerCharacters/Human&lt;/code&gt; so I will go to the folder and open prefab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskqw6wagsryfmek7ml76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskqw6wagsryfmek7ml76.png" alt="04" width="651" height="590"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then find attached &lt;code&gt;Playable Character Model&lt;/code&gt; component &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdtth3zrfu1o6hs1pz42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdtth3zrfu1o6hs1pz42.png" alt="Screenshot_683" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Default Animations&lt;/code&gt;, set following clips&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/Idle_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Idle State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/NormalRun_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Move States -&amp;gt; Forward State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/JumpStart_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Jump State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/JumpAir_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Fall State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/JumpEnd_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Landed State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/GetHit_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Hurt State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/Die_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Dead State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Assets/ModularRPGHeroesPolyArt/Animations/NoWeapon/PickUp_noWeapon&lt;/code&gt; to &lt;code&gt;Default Animations -&amp;gt; Pickup State -&amp;gt; Clip&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6movxe78sk01excbe0lk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6movxe78sk01excbe0lk.png" alt="Screenshot_667" width="692" height="1273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then test it, create new character and move in map scene. (W/A/S/D/SPACE)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmnd1hfovmpj0qewwuk0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmnd1hfovmpj0qewwuk0k.png" alt="Screenshot_503" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Character won't be able to play attack animation yet, so let's set it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Set character attack animations
&lt;/h2&gt;

&lt;p&gt;Open the character entity prefab again, then in &lt;code&gt;Playable Character Model&lt;/code&gt; component, &lt;code&gt;Default Animations -&amp;gt; Right Hand Attack Animations&lt;/code&gt; I'll set 2 attack animations&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2loydjuyuih2yegk1qrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2loydjuyuih2yegk1qrv.png" alt="Screenshot_668" width="690" height="688"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then the important settings other than &lt;code&gt;State -&amp;gt; Clip&lt;/code&gt; is &lt;code&gt;Trigger Duration Rates&lt;/code&gt; which is rate of &lt;code&gt;Clip&lt;/code&gt;'s duration at when it should hit enemy, you can find it from animation clip previewing. &lt;/p&gt;

&lt;p&gt;For example &lt;code&gt;NormalAttack01_SingleTwohandSword&lt;/code&gt; clip, the character will swinged and should hit at 50%, so I will set &lt;code&gt;Trigger Duration Rates&lt;/code&gt; to &lt;code&gt;0.5&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdduclzslyiexq4dgdvvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdduclzslyiexq4dgdvvn.png" alt="Screenshot_505" width="607" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xjig9njyeqceobiko53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xjig9njyeqceobiko53.png" alt="Screenshot_669" width="681" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After set the character animation, test it again, now press attack (V) button, it will play attack animations randomly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mtcv427s0mxp8psxod3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mtcv427s0mxp8psxod3.png" alt="Screenshot_507" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra - I want to change default equipment
&lt;/h2&gt;

&lt;p&gt;You can change default equipment by open character entity prefab, then activate/deactivate meshes as you wish&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmq7dn7p8120hyiim8dak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmq7dn7p8120hyiim8dak.png" alt="Screenshot_510" width="771" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you use other model packages, it may have difference mesh setup, you may not able to activate/deactivate to change default equipment&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra - Why character's HP is decreasing
&lt;/h2&gt;

&lt;p&gt;You may found that character's HP is decreasing and doubt why it's happening. It's because of gameplay rule, its default settings was set to decrease character's HP while character is hungry, you can change the settings to not decrease character's HP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4a9jxamgu9v0up5ucni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4a9jxamgu9v0up5ucni.png" alt="Screenshot_509" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rpg</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>Create game with MMORPG KIT-Part 1-Project preparation</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Sun, 27 Jun 2021 18:58:16 +0000</pubDate>
      <link>https://dev.to/insthync/create-game-with-mmorpg-kit-part-1-project-preparation-13cj</link>
      <guid>https://dev.to/insthync/create-game-with-mmorpg-kit-part-1-project-preparation-13cj</guid>
      <description>&lt;p&gt;In this part, I will prepare the project based on the kit's demo, by duplicates init scene which is the scene which has a game instance which will initializing game data when game starting, home scene which will be loaded after game instance initialized it's a scene for start game menu, character management, option and so on (Up to you) and then create new game database but still uses demo's in-game objects and UIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Folders preparation
&lt;/h2&gt;

&lt;p&gt;Let's start from create folders &lt;br&gt;
You can create folders in for an assets by right click in &lt;code&gt;Project&lt;/code&gt; tab, then select menu &lt;code&gt;Create -&amp;gt; Folder&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32mra6dxu416hw365kt2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32mra6dxu416hw365kt2.png" alt="Screenshot_469" width="547" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've create following folders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/GameData&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/GameData/Items&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/GameData/MonsterCharacters&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/GameData/PlayerCharacters&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/GameData/Maps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/Scenes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Assets/Leveling/Scenes/Maps&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jp5ueq5bl8bi97lg07s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jp5ueq5bl8bi97lg07s.png" alt="Screenshot_470" width="196" height="257"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;I've defined the project name to &lt;code&gt;Leveling&lt;/code&gt; so I create &lt;code&gt;Leveling&lt;/code&gt; folder which will have content for this project, project folder structure may changes later.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Game database, NPC database, Warp portal database and gameplay rule preparation
&lt;/h2&gt;

&lt;p&gt;Then I will create new game database, NPC database, warp portal database and gameplay rule for this project by &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right click &lt;code&gt;Assets/Leveling/GameData&lt;/code&gt; folder, then select menu &lt;code&gt;Create -&amp;gt; Create GameDatabase -&amp;gt; Game Database&lt;/code&gt; (I've set it name to &lt;code&gt;LevelingGameDb&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Right click &lt;code&gt;Assets/Leveling/GameData&lt;/code&gt; folder, then select menu &lt;code&gt;Create -&amp;gt; Create GameDatabase -&amp;gt; Npc Database&lt;/code&gt; (I've set it name to &lt;code&gt;LevelingNpcDb&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Right click &lt;code&gt;Assets/Leveling/GameData&lt;/code&gt; folder, then select menu &lt;code&gt;Create -&amp;gt; Create GameDatabase -&amp;gt; Warp Portal Database&lt;/code&gt; (I've set it name to &lt;code&gt;LevelingWarpPortalDb&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Right click &lt;code&gt;Assets/Leveling/GameData&lt;/code&gt; folder, then select menu &lt;code&gt;Create -&amp;gt; Create GameplayRule -&amp;gt; Default Gameplay Rule&lt;/code&gt; (I've set it name to &lt;code&gt;LevelingGameplayRule&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpafww26cnncd3xmp0fpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpafww26cnncd3xmp0fpb.png" alt="Screenshot_473" width="578" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzwhccfrwc3ygcnfd8l3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzwhccfrwc3ygcnfd8l3.png" alt="Screenshot_474" width="378" height="236"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Init scene and home scene preparation
&lt;/h2&gt;

&lt;p&gt;After that I will duplicate scenes from the demo, so when I made changes to my project it won't affect the demo.&lt;/p&gt;

&lt;p&gt;Open folder &lt;code&gt;Assets/UnityMultiplayerARPG/Demo/Scenes/&lt;/code&gt; select &lt;code&gt;00Init&lt;/code&gt; and &lt;code&gt;01Home&lt;/code&gt; then press &lt;code&gt;CRTL + D&lt;/code&gt; keys to duplicate (For Mac users, may use &lt;code&gt;CMD + D&lt;/code&gt; keys)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl124fq6phws5j60dz2t1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl124fq6phws5j60dz2t1.png" alt="Screenshot_471" width="354" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then move it to &lt;code&gt;Assets/Leveling/Scenes&lt;/code&gt; folder by drag it and drop it, and rename it (In this post, I will set name to &lt;code&gt;00_Leveling_Init&lt;/code&gt; and &lt;code&gt;01_Leveling_Home&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r12dstr77o7kicu5yuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r12dstr77o7kicu5yuw.png" alt="Screenshot_472" width="355" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that open &lt;code&gt;00_Leveling_Init&lt;/code&gt; scene to set created databases , gameplay rule and duplicated home scene to game instance&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fthix8i2fff3qh1d47t1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fthix8i2fff3qh1d47t1t.png" alt="Screenshot_475" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjz9qn5j9jnd8r6dfxsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjz9qn5j9jnd8r6dfxsp.png" alt="Screenshot_476" width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfnot26uy0fknrnv5uxi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfnot26uy0fknrnv5uxi.png" alt="Screenshot_479" width="800" height="220"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Save the scene, then add duplicated scenes to &lt;code&gt;Scenes In Build&lt;/code&gt; by open the dialog from menu &lt;code&gt;File -&amp;gt; Build Settings...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frx3eyk0itn74mwgrj04p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frx3eyk0itn74mwgrj04p.png" alt="Screenshot_477" width="290" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then drag duplicated scenes: &lt;code&gt;00_Leveling_Init&lt;/code&gt; and &lt;code&gt;01_Leveling_Home&lt;/code&gt; into &lt;code&gt;Scenes In Build&lt;/code&gt; section&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi5o3gxmg36717191glv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi5o3gxmg36717191glv.png" alt="Screenshot_478" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can start game from &lt;code&gt;00_Leveling_Init&lt;/code&gt; scene so you have to open &lt;code&gt;00_Leveling_Init&lt;/code&gt; before press play. When press play it will load &lt;code&gt;01_Leveling_Home&lt;/code&gt; scene but still can't create character yet because it doesn't has any character to create yet.&lt;/p&gt;

&lt;p&gt;In next part, I will tell you how to create new map and character.&lt;/p&gt;

</description>
      <category>rpg</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>[Note] Installing SVN Server to Droplets</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Sun, 28 Feb 2021 11:57:09 +0000</pubDate>
      <link>https://dev.to/insthync/note-installing-svn-server-to-droplets-3c09</link>
      <guid>https://dev.to/insthync/note-installing-svn-server-to-droplets-3c09</guid>
      <description>&lt;p&gt;In this post, I will write about how I set up SVN server to Ubuntu 18.04 (LTS) x64 droplets&lt;/p&gt;

&lt;p&gt;Then enter to ssh server by the address with command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh root@{Server address}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Installing Apache and SVN module
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Installing Apache
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing SVN module
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install subversion libapache2-mod-svn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Enable required modules
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo a2enmod dav dav_svn authz_svn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Restart Apache
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service apache2 restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Create new repository
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create repositories storing directory
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir -p /var/lib/svn/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set repositories storing directory permissions
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/lib/svn
sudo chmod -R 775 /var/lib/svn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create users into file: /etc/apache2/dav_svn.passwd
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo touch /etc/apache2/dav_svn.passwd
sudo htpasswd -m /etc/apache2/dav_svn.passwd {Your Username}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set SVN module config
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/apache2/mods-enabled/dav_svn.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Copy following config content to the file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Location /svn&amp;gt;

   DAV svn
   SVNParentPath /var/lib/svn

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user

&amp;lt;/Location&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create new SVN repository into repositories storing directory (/var/lib/svn/)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo svnadmin create /var/lib/svn/{Repository name}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Restart Apache
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service apache2 restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Try it by using web-browser, browse: &lt;code&gt;http://{Server address}/svn/{Repository name}&lt;/code&gt;&lt;/p&gt;

</description>
      <category>subversion</category>
      <category>digitalocean</category>
    </item>
    <item>
      <title>Add GRPC to Unity project checklist</title>
      <dc:creator>insthync</dc:creator>
      <pubDate>Sun, 05 Apr 2020 07:22:20 +0000</pubDate>
      <link>https://dev.to/insthync/add-grpc-to-unity-project-checklist-df8</link>
      <guid>https://dev.to/insthync/add-grpc-to-unity-project-checklist-df8</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Find &lt;strong&gt;unitypackge&lt;/strong&gt; from daily build list (&lt;a href="https://packages.grpc.io/"&gt;https://packages.grpc.io/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Extract plugins to project asset folder&lt;/li&gt;
&lt;li&gt;Your project target must be &lt;strong&gt;.NET 4.x Equivalent&lt;/strong&gt; (Edit → Project Settings → Player → Configuration → Scripting Runtime Version)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Service Compiler
&lt;/h2&gt;

&lt;p&gt;I also made a tool to compile GRPC’s &lt;code&gt;.proto&lt;/code&gt; files for Unity based on &lt;a href="https://github.com/5argon/protobuf-unity"&gt;protobuf-unity&lt;/a&gt; project, you can get it from this &lt;a href="https://github.com/insthync/protobuf-unity-grpc_csharp_plugin"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There is a new field to set &lt;code&gt;grpc_csharp_plugin&lt;/code&gt; path&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AhbEKf5t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/opv1193eu23p211buwwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AhbEKf5t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/opv1193eu23p211buwwg.png" alt="New field for protobuf-unity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You also can find built &lt;code&gt;protoc&lt;/code&gt; and &lt;code&gt;grpc_csharp_plugin&lt;/code&gt; from daily build list (&lt;a href="https://packages.grpc.io/"&gt;https://packages.grpc.io/&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>grpc</category>
    </item>
  </channel>
</rss>
