{"id":1055,"date":"2023-01-23T21:06:06","date_gmt":"2023-01-24T02:06:06","guid":{"rendered":"https:\/\/cynthiamcmahon.ca\/blog\/?page_id=1055"},"modified":"2023-05-12T02:47:24","modified_gmt":"2023-05-12T07:47:24","slug":"eyes-of-the-dragon-4-0","status":"publish","type":"page","link":"https:\/\/cynthiamcmahon.ca\/blog\/monogame-tutorials\/eyes-of-the-dragon-4-0\/","title":{"rendered":"MonoGame RPG Tutorials &#8211; Eyes of the Dragon 4.0"},"content":{"rendered":"\n<p>I am rebooting Eyes of the Dragon again. This time, though, I am following a fully cross-platform design, and I have what I want to accomplish already planned out. It will very much resemble this video.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Silver Prophet 01\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/TBDOYDCQQ0M?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Silver Prophet<\/figcaption><\/figure>\n\n\n\n<p>That is my game Silver Prophet. While the graphics won&#8217;t be quite the same quality since I don&#8217;t own the rights to them, the underlying gameplay will be the same. I will be making changes, but the core will remain the same. You can find the Git Hub at the following link: <\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/Synammon\/EyesOfTheDragon4\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Synammon\/EyesOfTheDragon4<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tutorial List<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 1 &#8211; Getting Started<\/h3>\n\n\n\n<p>In this first tutorial, I lay the foundation on which I will be building the game. Then, I add the input manager and the state manager for key components. Finally, I also implemented the title state that will pop up when the game launches.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/drive.google.com\/file\/d\/1OmrVFnBPY3cIY5JTwMCreaRYXNqT2XAe\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1OmrVFnBPY3cIY5JTwMCreaRYXNqT2XAe\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 01 &#8211; Getting Started<\/a><\/h4>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 2 &#8211; GUI Framework<\/h3>\n\n\n\n<p>In this tutorial, I cover how to create controls for gathering input from the player. Also, it makes a manager that manages all of the controls on a screen. Finally, I also cover how to switch control between game screens.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/drive.google.com\/file\/d\/1J_poS9dEyO2zIcc5IJd1j2XvakPqO0iK\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1J_poS9dEyO2zIcc5IJd1j2XvakPqO0iK\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 2 &#8211; GUI Framework<\/a><\/h4>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 3 &#8211; Enter Android!<\/h3>\n\n\n\n<p>I said that this tutorial series would be cross-platform, and I meant it! In this tutorial, I add an Android project to the solution and demonstrate how to work with Android basics. I also cover how to use render targets to have one base resolution and scale it to multiple resolutions.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/drive.google.com\/file\/d\/1V1eiYqMwuTKGBO0CxzbJl7-_GDoIIIiV\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1V1eiYqMwuTKGBO0CxzbJl7-_GDoIIIiV\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 03 &#8211; Enter Android!<\/a><\/h4>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 4 &#8211; Tiles! Tiles! Tiles!<\/h3>\n\n\n\n<p>This tutorial covers adding the tile engine for the game. It is very close to a direct port from my game, Silver Prophet. There are just a few differences. First, it is implemented on both Desktops and Android.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/drive.google.com\/file\/d\/1FpiMqQ_BP49gGo7Vd-xqOY5FWGXZc6Q-\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1FpiMqQ_BP49gGo7Vd-xqOY5FWGXZc6Q-\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 04 &#8211; Tiles! Tiles! Tiles!<\/a><\/h4>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 5 &#8211; More on Mobile<\/h3>\n\n\n\n<p>For the iOS crowd, this tutorial covers the basics of getting started with iOS, from PC. Also, it adds an animated sprite. Moving the sprite will be covered in the following tutorial.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/103hS_3a1dUVlXzyaV8Xl9qFGXSbm_AJz\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/103hS_3a1dUVlXzyaV8Xl9qFGXSbm_AJz\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 05 &#8211; More on Mobile<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 6 &#8211; Keep on Trekking<\/h3>\n\n\n\n<p>This tutorial is all about trekking. No, not Star Trek. It allows the player to move the sprite around the map.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1j1772McgAJbXMB77Cex4p2eTWUElhbz8\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1j1772McgAJbXMB77Cex4p2eTWUElhbz8\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 6 &#8211; Keep on Trekking<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 7 &#8211; What Was That?<\/h3>\n\n\n\n<p>You knew it was coming. I started work on the editor. I added the missing controls: text box, list box and picture box. Also, I added the project for the editor, though I didn&#8217;t go much further.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1fQfCM7eIUgd9isr5_Hp8HfS7kWOj-U7t\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1fQfCM7eIUgd9isr5_Hp8HfS7kWOj-U7t\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 7 &#8211; What Was That?<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 8 &#8211; Where Was That?<\/h3>\n\n\n\n<p>I continued work on the editor in this tutorial. I updated the basic controls that were added in the last tutorial to stop some bleeding when rendering text. Also, I added in a new form that you can use to navigate the file system.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1nlpMdfxM6_i8ANAvBvpMyFI-AEqVT9x7\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1nlpMdfxM6_i8ANAvBvpMyFI-AEqVT9x7\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 8 &#8211; Where Was That?<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 09 &#8211; Who&#8217;s That Girl?<\/h3>\n\n\n\n<p>This tutorial is about adding NPCs to the game. They will be added to the map rendered, and there is collisions between them.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/14BWXc-uI_-qIg-6cCGd_hR3wCdAmTYP6\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/14BWXc-uI_-qIg-6cCGd_hR3wCdAmTYP6\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 9 &#8211; Who&#8217;s That Girl<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 10 &#8211; Look Who&#8217;s Talking<\/h3>\n\n\n\n<p>This tutorial mirrors tutorial fifteen in my A Summoner&#8217;s Tale tutorials and adds conversations into the game. There will be a part two, though, because it was getting longer than I would like.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1LVF6Sf-gkjcBKVnzAXihO_m-cFUk_zuk\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1LVF6Sf-gkjcBKVnzAXihO_m-cFUk_zuk\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 10 &#8211; Look Who&#8217;s Talking<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 11 &#8211; Look Who&#8217;s Talking, Now<\/h3>\n\n\n\n<p>This tutorial mirrors tutorial sixteen in my A Summoner&#8217;s Tale tutorial series. It does some refinement on conversations and sets up being able to read and write them.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1hWNozUnu9SAXvp0OKCvQfkSCr5kVtkz0\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1hWNozUnu9SAXvp0OKCvQfkSCr5kVtkz0\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 11 &#8211; Look Who&#8217;s Talking, Now<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 12 &#8211; Mechanical Engineering, Sort of<\/h3>\n\n\n\n<p>In this tutorial, I create the bulk of the character generator that uses the SPECIAL system. You assign twenty-two points to the character&#8217;s attributes, where each attribute begins at two and goes to a maximum of nine. Attributes will not change as the character levels up. There is the potential that there will be items that change the upper limit.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1JfcUuEMEURNCL6iWEvF8y1iv8YD2TEbT\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1JfcUuEMEURNCL6iWEvF8y1iv8YD2TEbT\/view?usp=share_link\" target=\"_blank\">Tutorial 12 &#8211; Mechanical Engineering, Sort of<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 13 &#8211; Mechanical Engineering, Sort Of &#8211; Part Two<\/h3>\n\n\n\n<p>I continue on with creating characters in this tutorial. I actually create the character using the values in the right-left selectors. I also fix a defect that was pointed out in the Look Who&#8217;s Talk and Look Who&#8217;s Talking Now tutorials. Because I often use Point variables, I added some extension methods to the SpriteBatch class to draw items using points rather than having to convert them manually. Part of the writing once and use many paradigm.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1fzSO0XUZ6NELe8OTo--OYdGg0hKhM6rI\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1fzSO0XUZ6NELe8OTo--OYdGg0hKhM6rI\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 13 &#8211; Mechanical Engineering, Sort Of &#8211; Part Two<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 14 &#8211; Mish Mash<\/h3>\n\n\n\n<p>Okay, so the title wasn&#8217;t so clever. I could not come up with a cleaner one, though, so it stuck. In this tutorial, I cover adding mobs. First, I define a class that represents a mob. Then, I create a layer on the map to hold encounters between the player and other entities.<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1naJkLckjTm0wL0uXZ73Oiay0ll3f2Lqa\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1naJkLckjTm0wL0uXZ73Oiay0ll3f2Lqa\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 14 &#8211; Mish Mash<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 15 &#8211; Encounters<\/h3>\n\n\n\n<p>The title says it all. This tutorial is about having encounters. It is the first of two, maybe three, on the subject. In this tutorial, you can trigger an encounter by pressing the E key when you are beside a mob. You will jump to an encounter map, which is filled with obstacles. You can walk around the map but not through obstacles.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1ZTOW_49QATaQdB1T7U8IGxA1VYhgbJMo\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1ZTOW_49QATaQdB1T7U8IGxA1VYhgbJMo\/view?usp=share_link\" target=\"_blank\">Tutorial 15 &#8211; Encounters<\/a><br><a href=\"https:\/\/drive.google.com\/file\/d\/1XXsU_BVkbD9zHAu83B_G_TXHMS1YaOik\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1XXsU_BVkbD9zHAu83B_G_TXHMS1YaOik\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Project 15<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 16 &#8211; Encounters Part Two<\/h3>\n\n\n\n<p>This tutorial picks up where the last tutorial ended. It is about having fights between mobs and the player. It is a turn-based system where you take a turn, and the mob takes a turn, then back to you.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1LPs0G-_6zbPOGz0jBt2xY7YUrdu3-1Ae\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1LPs0G-_6zbPOGz0jBt2xY7YUrdu3-1Ae\/view?usp=share_link\" target=\"_blank\">Tutorial 16 &#8211; Encounters Part Two<\/a><br><a href=\"https:\/\/drive.google.com\/file\/d\/1VAysffap09yQjyw__yFxz1UvoFVUZWIH\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1VAysffap09yQjyw__yFxz1UvoFVUZWIH\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Project 16<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial 17 &#8211; Encounters Part Three<\/h3>\n\n\n\n<p>Continuing on with encounters, this tutorial covers creating moves for attacks and the mob moving around the map. Ranged attacks will be coming next!<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1omk2jeNet1fhxMBtoH_o4PveW1Vs9pZM\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1omk2jeNet1fhxMBtoH_o4PveW1Vs9pZM\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial 17 &#8211; Encounter Part Three<\/a><br><a href=\"https:\/\/drive.google.com\/file\/d\/1JeBYzrD5EAE44XDJ3XqUurliEEpSgIAB\/view?usp=share_link\" data-type=\"URL\" data-id=\"https:\/\/drive.google.com\/file\/d\/1JeBYzrD5EAE44XDJ3XqUurliEEpSgIAB\/view?usp=share_link\" target=\"_blank\" rel=\"noreferrer noopener\">Project 17<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am rebooting Eyes of the Dragon again. This time, though, I am following a fully cross-platform design, and I have what I want to accomplish already planned out. It will very much resemble this video. That is my game Silver Prophet. While the graphics won&#8217;t be quite the same quality since I don&#8217;t own &hellip; <\/p>\n","protected":false},"author":2,"featured_media":0,"parent":149,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1055","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/pages\/1055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/comments?post=1055"}],"version-history":[{"count":24,"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/pages\/1055\/revisions"}],"predecessor-version":[{"id":1311,"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/pages\/1055\/revisions\/1311"}],"up":[{"embeddable":true,"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/pages\/149"}],"wp:attachment":[{"href":"https:\/\/cynthiamcmahon.ca\/blog\/wp-json\/wp\/v2\/media?parent=1055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}