tag:blogger.com,1999:blog-24467096297625888172024-02-07T14:22:51.731-08:00Mike Makes StuffThis is my personal blog for tracking my hobby programming development. Any opinions expressed here do not represent my employer in any way.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.comBlogger46125tag:blogger.com,1999:blog-2446709629762588817.post-10033226343353324852022-07-08T19:17:00.001-07:002022-07-08T19:17:27.954-07:00How to scaffold a game in RPG Maker<p>I'm so glad you've decided to join us on this merry adventure this month. The place to start when you begin making any RPG is to create a scaffolding for you to hang content on. You can't paint the walls of a house without first putting up the drywall. It's the same with an RPG. If you are really excited about the story or the battle system or the character art and you start there, neglecting the bones of your game, then chances are you'll burn out with something that isn't actually playable. Therefore, the first thing we need to do is make our game playable from start to finish.</p><h2 style="text-align: left;">The Structure of an RPG</h2><p>Isn't it a lot of work to make an RPG playable from start to finish? Not at all! It's actually very easy. We're going to make a Minimum Viable Product (MVP) before we do anything else. We arent' going to concern ourselves with battles or map design or anything else. So what is the bare minimum that you need for an RPG? Let's think about it.</p><p>Pick your favorite JRPG and think about it. They all follow the same basic pattern:</p><p>First you find yourself in a town or a dungeon. This is the beginning of the story. Where we introduce characters and get excited about the journey we're about to go on. We'll call this the "Opening".</p><p>Next, you'll find yourself in a place to catch your breath, gather yourself, retreat to if you run into trouble. It might not be a town per se, but it's a safe place where you aren't in danger. We'll call this a "Town" because areas like this usually end up being towns.</p><p>Then, you'll need to leave that town to go be challenged by something. Monsters, new game mechanics, etc. These are "dungeons" through and through. They may not be a proper dungeon under a castle, but that's what we're going to call them for convenience.</p><p>Then you'll repeat this cycle, moving from Town to Dungeon to Town to Dungeon and so on until finally you reach the "Ending" where the conflict is resolved and the heroes go off to their rest at the finale of the story.</p><p>These are the bones of any RPG and they look like this:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3f1T-RXTXeq2g5yBUsHRaI9_1v8RBw0nkv-uNi2eNg3TVtnHn-igWRBvtsWvRh4BFJiLoWiTT6qNSOwPGmBeDDs1FIWfss4j_4fgBCR_MP6RNmvsqKA2H-Do733Y7pj5jYuaY682BZhaMPbu3PIGSrwEUPA9QGEJSfrjUzwelqHkvdMyAeNicTw/s408/Screenshot_4.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="408" data-original-width="354" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3f1T-RXTXeq2g5yBUsHRaI9_1v8RBw0nkv-uNi2eNg3TVtnHn-igWRBvtsWvRh4BFJiLoWiTT6qNSOwPGmBeDDs1FIWfss4j_4fgBCR_MP6RNmvsqKA2H-Do733Y7pj5jYuaY682BZhaMPbu3PIGSrwEUPA9QGEJSfrjUzwelqHkvdMyAeNicTw/s320/Screenshot_4.png" width="278" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><p></p><p>Creating Your Maps</p><p>I'm going to start up RPG Maker and create a new project. I'll be using RPG Maker MV for the pictures, but I'll try to shout out differences to XP or VX Ace where I can. Don't feel like you need to do this yourself right now, but when you do start your own project I would recommend starting your own project this way.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_hqd5bypmD7ggA3hvzGQRu0o-1ttJh1XbDiaOJvNSKRKANMjBBsAM5ILe8ywcD1fHGxLeVnZnR5RTDOVOYpEF6HCvRyiJ2YysNDjYQsx5jDnz-JrIXwR3_wW7l_x1MrE6B2OGuwOtbLU_36EOnDxp0__AJGkKhOdUoTPlcgRiXRcOUXHEkWtew/s642/NewProjectExample.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="411" data-original-width="642" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_hqd5bypmD7ggA3hvzGQRu0o-1ttJh1XbDiaOJvNSKRKANMjBBsAM5ILe8ywcD1fHGxLeVnZnR5RTDOVOYpEF6HCvRyiJ2YysNDjYQsx5jDnz-JrIXwR3_wW7l_x1MrE6B2OGuwOtbLU_36EOnDxp0__AJGkKhOdUoTPlcgRiXRcOUXHEkWtew/s320/NewProjectExample.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Creating a new project is easy!</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_J3I3CicWF6h4rOHIxfCdPY9AJwankJR6U2SUWDssLK-u89JKdxS4-emdVThojpNMtJtVn3Ghxz7ug825Ge3W6ggiusgermDhce12i1X5tvVGZb9z57ssSZybEzzXEhuGvClnD0M_ewE0znJqlkNfRCmYbyW7b9kIyP2AkZK3B366nocKPaa38w/s896/NewProject.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="591" data-original-width="896" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_J3I3CicWF6h4rOHIxfCdPY9AJwankJR6U2SUWDssLK-u89JKdxS4-emdVThojpNMtJtVn3Ghxz7ug825Ge3W6ggiusgermDhce12i1X5tvVGZb9z57ssSZybEzzXEhuGvClnD0M_ewE0znJqlkNfRCmYbyW7b9kIyP2AkZK3B366nocKPaa38w/s320/NewProject.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Ah, a new project! Endless possibilities.</td></tr></tbody></table><p><br /></p><p>If you look down in the lower left corner you'll see a small list with one entry in it called New Map. This is our list of maps in the game. To add more maps, we need to right click on the name of our project and select "New" or press the "Enter" button. </p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSVvrSkpPVa3S6yzW8t5yzN7Aq902FlIVwB5gUZje8VU1yHuYbOmZUEYTAzxImnRt8LzA17gwFiD3tCA6hDGn-OkjV6-d1GvXB6B14WwYBI1bnSl2d6G30DF0tpCDzkNzHByJqSzqIyAsZoZTVLvF6u9ELNtmlgVd4xJtrFNulgWXp8rPE56hQQ/s861/NewMapDialog.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="648" data-original-width="861" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSVvrSkpPVa3S6yzW8t5yzN7Aq902FlIVwB5gUZje8VU1yHuYbOmZUEYTAzxImnRt8LzA17gwFiD3tCA6hDGn-OkjV6-d1GvXB6B14WwYBI1bnSl2d6G30DF0tpCDzkNzHByJqSzqIyAsZoZTVLvF6u9ELNtmlgVd4xJtrFNulgWXp8rPE56hQQ/s320/NewMapDialog.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Adding a new map is easy. <br />The only things we care a lot about right now will be the Name and the Tileset options.</td></tr></tbody></table><p></p><p></p><p>You can rename a map by right clicking and selecting the "Edit" option and then changing the name of the map. I'm going to add and rename maps until my project looks like the one below. These are all the maps we'll need to play our game from start to finish.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaTscr9T04gJbm9qalbOv4A0lsUhYE-SXIOl-pJvFv1ccnwS1ytKilp48RURnQHivKEY_2QrobEcKuQRELw3T5L6pyt2uf7pn5v8Oa9HLvBtZ_qhYYUhyRPHkdon1HWZLeGUxh-rc1sabuXsvsrx2-yy4deA5BBThe7gAJlkPmg2WN5_8b7NR9Lw/s277/MapScaffolding.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="157" data-original-width="277" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaTscr9T04gJbm9qalbOv4A0lsUhYE-SXIOl-pJvFv1ccnwS1ytKilp48RURnQHivKEY_2QrobEcKuQRELw3T5L6pyt2uf7pn5v8Oa9HLvBtZ_qhYYUhyRPHkdon1HWZLeGUxh-rc1sabuXsvsrx2-yy4deA5BBThe7gAJlkPmg2WN5_8b7NR9Lw/s1600/MapScaffolding.png" width="277" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">These are all you need to have a complete game. Really!</td></tr></tbody></table><br /><h2 style="text-align: left;">Add the Opening</h2><p>First, let's open the "Opening" map by double clicking on it. Pick a spot in the map and right click and over over "Set Starting Position" and then choose "Player". This is how the game determines where the player starts the game at after selecting "New Game".</p><p>Events are their own large topic for another time, but for now you need to know that they're how our game is glued together. Events are how you make things happen in the game. I'm setting up a simple event that displays a text box that says "This is the opening" and sends us to the next area. In the photo below, I've added some map features to help remind me where the exit is.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lW3e8i_lxRGnwKRwsM-Kb8FkD7F7aVcH_Uv3AgxO99W-TiuDUEFvCC5AWoH0VBNU6ROtzCG5q1Ug8wr-EjHwIgS4hZD6xhGuSG2TwjXTI_ey32ApsCP3u-6aIwtFgGhS0NDXNEoH4tQ2Lw-HwNwAgyShS_FsWrv7eH4xixPXWDXqh6OduU7Kpg/s832/Opening.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="548" data-original-width="832" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lW3e8i_lxRGnwKRwsM-Kb8FkD7F7aVcH_Uv3AgxO99W-TiuDUEFvCC5AWoH0VBNU6ROtzCG5q1Ug8wr-EjHwIgS4hZD6xhGuSG2TwjXTI_ey32ApsCP3u-6aIwtFgGhS0NDXNEoH4tQ2Lw-HwNwAgyShS_FsWrv7eH4xixPXWDXqh6OduU7Kpg/s320/Opening.png" width="320" /></a></div><br /><p><br /></p><h2 style="text-align: left;">Adding the Town</h2><p>Next, I'll go into the "Town 1" map and set that up. I'm going to include an NPC (he's implemented with an event) and when you talk to him, he'll give you a key. I don't need much on the map to make the bones of our game here, but I've included a bit of a path from one side of the screen to the other and a door to use the key on. If you try to open the door without the key I'll show a little message that says the door is locked, but if you have the key then it will open. We'll look at how to set this up exactly in a later article. For now, it's enough to know that when you open the door it takes you to the dungeon.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcD4O5h_mLprv7x2rP9HY8bUTDNtME2Set0VqmbWHitU4jwV6zyKVfZGmDYk3i8Y-ksA9eKrQ7y1NtOXda5SfRtVenYJZCQkp7LNUSJEWve0yGZ1Se3swKjoSadYmF7WTz5XXI7hRuwoHh3NmsXWWa6riB2oCXGQDFXLOLdboLa4-d4UYj4WiAqg/s678/Town1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="678" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcD4O5h_mLprv7x2rP9HY8bUTDNtME2Set0VqmbWHitU4jwV6zyKVfZGmDYk3i8Y-ksA9eKrQ7y1NtOXda5SfRtVenYJZCQkp7LNUSJEWve0yGZ1Se3swKjoSadYmF7WTz5XXI7hRuwoHh3NmsXWWa6riB2oCXGQDFXLOLdboLa4-d4UYj4WiAqg/s320/Town1.png" width="320" /></a></div><br /><p><br /></p><h2 style="text-align: left;">Adding the Dungeon</h2><p>With the town taken care of I'm ready to set up the dungeon. Now normally there's a whole lot of thought and consideration that goes into this, but for now the important part is that there is an end to the dungeon and we can get to that end. Therefore, I'm going to set an NPC down on the map (I'm not even picking a new character, I'm reusing the same old man from Town!) and make it so that when you talk to him he says "Blargh! I'm dead!" and then the game takes you to the Ending map.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMLfuGpGx7SGSGMYWwrSwzR3cYVypXqFx4-h_Zz7AhS-CW90aUHke7puZ4zYhuCp8WJ05QKLGlD3mVya3GZUR-TeE13qS7Z4mxMpjPhpl9-yj9dEj2K2RsyAAqKm05-eDF7K2mOWrQQNP-YPYmUv9n1MPWym6uB35KapwY8f021Z1kcsJ1lQf3Yw/s648/Dungeon1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="492" data-original-width="648" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMLfuGpGx7SGSGMYWwrSwzR3cYVypXqFx4-h_Zz7AhS-CW90aUHke7puZ4zYhuCp8WJ05QKLGlD3mVya3GZUR-TeE13qS7Z4mxMpjPhpl9-yj9dEj2K2RsyAAqKm05-eDF7K2mOWrQQNP-YPYmUv9n1MPWym6uB35KapwY8f021Z1kcsJ1lQf3Yw/s320/Dungeon1.png" width="320" /></a></div><br /><p><br /></p><h2 style="text-align: left;">Add the Ending</h2><p>Finally, I'm at the ending. This would be where all the resolution happens but I'm going to set this up to be more or less like the opening. A message appears that says "Ending" and then the game takes you back to the title screen.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc5fPOoJnHiQFZ1z2oG2BONfzLlsTPzhX6k23eY4eNKMi9XufPas-h4APBRBJUlQxN1BB3qx6KVl7mQ_OBhX11a9ZAQSOHqL3kMHogxmvngEY3ykXoEa1KK-V8LXisy5e1cV9t6PyrEvfRUQxNJvY7Uk-6n4S95m2dGZ7OytL82QqF50DcmO74hQ/s678/Ending.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="505" data-original-width="678" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc5fPOoJnHiQFZ1z2oG2BONfzLlsTPzhX6k23eY4eNKMi9XufPas-h4APBRBJUlQxN1BB3qx6KVl7mQ_OBhX11a9ZAQSOHqL3kMHogxmvngEY3ykXoEa1KK-V8LXisy5e1cV9t6PyrEvfRUQxNJvY7Uk-6n4S95m2dGZ7OytL82QqF50DcmO74hQ/s320/Ending.png" width="320" /></a></div><br /><p><br /></p><p>Our game is now complete from start to finish. It isn't much, at all, true. However, the game has a beginning, middle, and an end. It has one "puzzle" even! This is not interesting, fun, or compelling, but it is a complete game. You could sit down and play it from start to finish. I<span style="white-space: pre;"> </span> didn't customize the characters, the art, the music, or the game systems. This is about as barebones as it can get. To prove it is complete though, you can watch my thrilling playthrough in the youtube embed below.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/AGuizwdYnFc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><h2 style="text-align: left;">What Comes Next?</h2><p>Now that I have the bones of my project I can pick an area of the game to improve and start fleshing it out. Some ideas might need their own bones made (like, if I wanted to make a crafting system or a mini-game or whatever) but each one falls somewhere into the flow of the game that I've already made. In the coming articles we'll explain some of the things we glossed over here and show how to expand upon them. How do you design a map? What exactly is an event and how does it work?</p><p>Stay tuned.</p>JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-69061273303648076212022-07-06T20:19:00.000-07:002022-07-06T20:20:15.705-07:00Final Dantasy I<h2 style="text-align: left;"> Welcome to Final Dantasy I!</h2><p style="text-align: left;">In this month, we will be using RPG Maker to create a short JRPG. The goal of this event is to encourage people to explore the RPG Maker tool of their choice and build experience and confidence. Building the next great JRPG is hard, but building a JRPG that someone can get 10-60 minutes of enjoyment from is easy!</p><p style="text-align: left;">Let's define our terms and scope. What do we mean when we say "JRPG"? I'm referring to a 2D game with a top down view for exploring towns, dungeons, and other maps with random encounters that handle conflict resolution via a turn based battle system. You can do a lot with RPG Maker tools and almost all of it is editable if you dig deep enough and are willing to learn, but RPG Maker will let you do a lot for you if you let it. There are built-in graphics packs, battle systems, characters, and even a few items and monsters. We'll leverage all of these in the coming month to create similar, yet distinct, small games.</p><p style="text-align: left;">Each group build needs a theme and the theme for this one is "One Dungeon"! Or, "One Dangeon" if you prefer. In order to keep us all roughly on the same page while still allowing for creativity we're going to each make a short game with the following rules:</p><p style="text-align: left;"></p><ol style="text-align: left;"><li>Your game must have one hub.</li><ul><li>A hub is a map where the player is not presented with challenges to overcome. Any resources that the player needs to complete your game should be found here.</li><li>The hub might be a town, a field, a campsite, a spaceship, a cave, an item store, the town square, or anything else you want. You are limited only by your art assets and imagination.</li></ul><li>Your game must have one dungeon.</li><ul><li>A dungeon is one or more maps where the player is challenged and presented with new mechanics to learn and overcome.</li><li>The dungeon might be a cave, a volcano, a forest, an abandoned ruin, a modern office building, or anything else you want. You are limited only by your art assets and imagination.</li></ul><li>Your game must include one major character named "Dan" and they must use the provided Dan sprites (modifications are allowed).</li><ul><li>We're in Dan's server so we should pay him homage. You can make him the main character, the villain, or perhaps event a damsel in distress.</li><li>I will provide you with sprites and a portrait for this character. You may have more characters with the same or similar names, but everyone having this one common element will help tie things together and will be fun.</li></ul><li>Your game's title must begin with "Final Dantasy: "</li><ul><li>For example:</li><ul><li>Final Dantasy: DANger Zone</li><li>Final Dantasy: The Godhands Within</li><li>Final Dantasy: Day of the Jegan</li></ul></ul></ol>That's it! If you're familiar with RPG Maker already, this might sound a bit slim. It is! I could knock this out in a few hours of improvisation and then a couple more hours of testing. Even if you're unfamiliar with the tools, this might be a fun weekend project. If you do an hour each week then with the help of myself and your fellow Final Dantasy participants then you, too, can accomplish this!<p></p><p style="text-align: left;">You may be thinking "This sounds great, but I would like to incorporate this effort into my epic, sweeping fantasy setting that I want to develop" and if so I am here to tell you NO. In a creative project like a video game, it is easy for things to get out of hand and not be finished. We're going to practice the absolute basics in this group build and set our sights on a finished product, no matter how small and limited it might feel. </p><p style="text-align: left;">If you truly feel like you can do more, then that's great! I don't want to stop you; nor can I! However, please first finish a version that meets the requirements for the group build and submit that. After that, go on and expand upon it to your heart's content. Or start over and make a second entry (a month is a lot of time)! There's no wrong way to go about this except to not submit anything because you got too ambitious.</p><p style="text-align: left;">In the lead up to the start of the event I will be giving out free advice on how to make your entry. With my years of fiddling and concerted effort and dramatic failures, I would like to impart to you the fruits of my labor. I'll be going over, in brief, the following topics:</p><p style="text-align: left;"></p><ul style="text-align: left;"><li>How to scaffold a game in RPG Maker</li><li>How to make a map</li><li>How to make events</li><li>How to design a dungeon</li><li>How to use the database editor in RPG Maker</li><li>How to balance enemies and battle encounters</li></ul><p></p><p style="text-align: left;">In addition to all of this, I will be around weekly in voice chat on Tuesday nights to answer questions, troubleshoot and provide advice and guidance. I will also be available to respond to private messages over discord all week.</p><p style="text-align: left;">And that's it! The group build beigns on Friday July 15th and runs until Monday August 15th.</p><p style="text-align: left;">This means you have a few days to get your tools ready and ensure the program boots up. Please do not leave this until the last minute!</p><p style="text-align: left;">The Humble Bundle with RPG Maker is here: <a href="https://www.humblebundle.com/software/rpg-maker-resurgence-software" target="_blank">Humble Bundle RPG Maker Resurgance</a></p><p style="text-align: left;"></p><ul style="text-align: left;"><li>For $25 you can get RPG Maker MV (my preferred version) and a ton of art and music assets via Steam.</li><li>For $1 you can get RPG Maker VX Ace (my previously preferred version) and a couple of art and music bundles for use in making games.</li></ul><p></p><p style="text-align: left;">If you want to participate but aren't sure if you can get a copy of the tool, please get in touch with me and we'll see what we can do.</p><p style="text-align: left;">I hope you'll join me on this exciting adventure into the world of RPG making and I look forward to seeing what you can create!</p>JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.comtag:blogger.com,1999:blog-2446709629762588817.post-25901217805539089912015-12-06T18:22:00.000-08:002015-12-06T18:22:30.436-08:00New Project: Unnamed RPG Maker MV Game!It's been a while since I last posted anything on this blog and a lot of projects have come and gone in the meantime. The simple fact of things is that I've been busy (getting a new job, moving, having a baby, etc). But it's time to start a new project, this time in RPG Maker MV!<br />
<span style="font-size: large;"><b><br /></b></span>
<b><span style="font-size: large;">RPG Maker Again?</span></b><br />
<br />
When I was a kid, I went over to my buddy Drew's house a lot. One day, Drew showed me some weird, half-translated program he'd downloaded somewhere called RPG Maker 95. From there, my life was changed forever.<br />
<br />
This past October, Degica released the new <a href="http://www.rpgmakerweb.com/products/programs/rpg-maker-mv">RPG Maker MV</a>! It boasts a number of improvments over previous iterations, most notably replacing RGSS3 (their proprietary Ruby build) with JavaScript (something I'm much more familiar with as a web developer) and mobile app export capabilities (though as it turns out there are some significant downsides to this).<br />
<br />
To get used to the application, I've decided to make a small game in it. If possible, I'd like to release it on my new (upcoming) website. I figure I'd like to document the steps I'm taking as a way of thinking through things a bit more.<br />
<b><br /></b>
<b><span style="font-size: large;">Oh, So The Game Makes Itself For You With RPG Maker?</span></b><br />
<br />
No. No, no, no, no, no. It vastly lowers the barrier to getting started, sure, but making a good RPG Maker game is hugely more difficult than what people typically expect when they hear about this tool for the first time. With this lower barrier to entry, lots of people pump out low-effort games and perpetuate this other weird perception that games made with RPG Maker can't be good (some Steam releases sure haven't helped with this). It would be more accurate to say that games made with RPG Maker can more easily be bad. If you look at <a href="https://starstealingprince.wordpress.com/">good RPG Maker games</a> you'll see that not only are they possible, but they can be <a href="http://store.steampowered.com/app/206440/">downright amazing</a>! They just take a lot more effort.<br />
<b><br /></b>
<b><span style="font-size: large;">What Makes Your Game So Good?</span></b><br />
<br />
The games I linked above are both VERY customized. They have custom art assets, custom music, and a lot of time and effort poured into their mechanics. As evidenced elsewhere on this site, I am not great at spriting or drawing and it may surprise you to discover I am not good at making music either. The most I can hope for is to make a game with some interesting mechanics and then to make it available for little or no money (this is a complicated topic that I'll expand on later as the game draws closer to completion).<br />
<br />
<b><span style="font-size: large;">What Mechanics Are You Offering Then?</span></b><br />
<br />
I'm going to be combining things I've learned from past projects documented on this blog and elsewhere to create a short, open-ended adventure with the following neat ideas:<br />
<br />
<ul>
<li>Multiple paths story paths</li>
<li>Class based skill system</li>
<li>Monster ecosystem and population modelling</li>
<li>Light supply & demand modelling</li>
</ul>
<br />
This is all subject to change, of course, and I'll be expanding upon these ideas more later, but I think this is a good starting point. Please look forward to my next entry where I'll discuss the game's critical path.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-59082413283179702672015-12-06T16:54:00.001-08:002015-12-06T16:56:05.779-08:00How to Enhance an SNES Game With the MSU-1 - Part 3: Failure and SuccessPrevious entries in this series are <a href="http://jumbocactuarx27.blogspot.com/2013/08/how-to-enhance-snes-game-with-msu-1.html">part 1</a> and <a href="http://jumbocactuarx27.blogspot.com/2013/10/how-to-enhance-snes-game-with-msu-1.html">part 2</a>!<br />
<h3>
<span style="font-size: large;">Utter Failure</span></h3>
<div>
<span style="font-size: medium;">In my first post in this series, I said I was going to document my foray into the world of SNES romhacking and I did. I learned a lot of assembly and had fun for the most part. But did I successfully create a patch for Zelda 3 to use MSU-1 music? As you may have guessed by the 2+ years between the last entry in this series and this one, the answer is a resounding "no." And that's okay.</span></div>
<h3>
</h3>
<h3>
<span style="font-size: large;">It's Not So Bad</span></h3>
<div>
Frankly, I just didn't know enough about what I was doing. I didn't know enough about the MSU-1. I didn't know enough about the implementation of it in the SD2SNES. I didn't know enough about the SNES assembly language. I still don't know enough to do this sort of thing! That's okay, I've got plenty of other interests to pursue.</div>
<div>
<br /></div>
<div>
So why am I posting again after all this time? Well, I did want to document what has happened since I wrote the last entry in this series since those two posts are by far the most popular on this blog (and rightly so). I feel obligated. It's just taken me a while to get around to it. If you're reading this to attempt writing your own MSU-1 patch, perhaps I can offer you just a bit more guidance.</div>
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>What Little Advice I Can Give: Ask For Help</b></span></div>
<div>
<br /></div>
<div>
The one thing I didn't do enough of was asking for help. There are plenty of people in the romhacking community who have already done this sort of thing. There are forums where you can post and ask them questions. There is absolutely no guarantee that they'll respond, and nor should there be. I didn't ask for help almost exclusively because I didn't want to bother these people. What right did I, a total newbie, have to ask for help if I hadn't tried myself first? Well, I did try and I wasn't getting anywhere. I should've asked for help. </div>
<div>
<br /></div>
<div>
I want to stress that <b>I am not one of the people you should ask for help</b>. Everything I know about the MSU-1 I've documented here in these articles. I've provided links to everything I found. Ikari_01, developer of the SD2SNES even reached out to me on the comments offering to help. I should've taken them up on it, but by the time they reached out to me, I was already fed up with romhacking and had moved on to other things. If you're reading this, Ikari, thank you for your offer. If I ever try this sort of thing again, I'll not pass up such opportunities. As it stands, though, I got so frustrated with my lack of knowledge and progress that there's no way I can bring myself to try again.</div>
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>A Link to the MSU-1</b></span></div>
<div>
<br /></div>
<div>
So where does this leave Zelda 3? It's gotten the patch that I always hoped it would, actually! Back in October 2014, Conn79 got in touch with me over GitHub where I'd posted my patch source code telling me that he'd been working (with others) on a similar patch. Luckily for everyone, he had succeeded where I'd failed! You can check out the thread about his patch <a href="http://www.zeldix.net/t453-enable-msu-streaming-music-for-alttp">here</a>!</div>
<div>
<br /></div>
<div>
It turns out that all my work wasn't entirely pointless though, as it gave him the clue they needed to get SD2SNES working. You can read our <a href="https://github.com/mwreichelt/Zelda3-MSU-Audio/issues/11">discussion</a>, with a bit more technical details of how it was accomplished as well as a link to the <a href="https://github.com/qwertymodo/MSU1-Zelda">disassembled patch</a> that was finally produced. And did you catch that bit at the end of our discussion? They asked for help.</div>
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>Final Thoughts</b></span></div>
<div>
<br /></div>
<div>
Romhacking is super cool and I'd love to learn more about it and give it another shot some day, but for now I'm happy to sit on the sidelines as folks who have more experience than I do crank out <a href="http://agtp.romhack.net/">great translations</a> and <a href="http://www.romhacking.net/utilities/1147/">cool patches</a>. I'm perfectly happy to focus more on my programming craft for my day job and my hobby game development that I've covered elsewhere on this blog.</div>
<div>
<br /></div>
<div>
If there's any questions I can answer or any notes I can publish from my romhacking attempt, please let me know and I'll make it happen.</div>
<div>
<br /></div>
<div>
Good luck, all you MSU-1 folks! Please make lots of great music patches for me to play!</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com3tag:blogger.com,1999:blog-2446709629762588817.post-69735294149076627932014-08-11T17:07:00.002-07:002014-08-11T17:07:43.597-07:00End of July Progress Report: I have taken a breakMy goal for July was to take a break from programming my game and not do any programming outside of work! I was tired every day from my day job and forcing myself to work on the game was getting more and more difficult, so I wanted a break.<div>
<br /></div>
<h3>
<b>Did I meet my goal?</b></h3>
<div>
Yes! I did almost zero programming in July outside of work!</div>
<div>
<br /></div>
<h3>
<b>What did I learn?</b></h3>
<div>
I learned quite a few things, actually. First, I was reminded of the importance of pacing myself and being flexible with my schedule. I've actually delayed making this post for so long because I was going to Otakon this year and it just seemed like I didn't have the time for writing this up until today. Going forward, I intend to set myself a flexible schedule that still has some hard requirements that'll force me to keep making progress.</div>
<div>
<br /></div>
<div>
Also, by taking a break I allowed myself a lot of time to reflect on my project and consider it from different angles for a long period of time without having to fret about whatever I was changing that week. It has made me reconsider the worth of the voice mimicking in my game and later this month I'm planning on reviewing the code for it entirely and either removing the feature or streamlining it further.</div>
<div>
<br /></div>
<div>
Finally, I was reminded of the importance of doing things other than playing and making games. I haven't watched a lot of TV or read books lately. Being at Otakon and sitting down to watch some shows I hadn't seen before reminded me of how much you can learn just by doing things that aren't "working on your project." I need to block out time specifically for this each week as well as blocking out time for working on my game. It feels awkward, or even wrong to be spending time on "frivolous" things that don't contribute to my project goals, but it's super helpful overall.</div>
<div>
<br /></div>
<h2>
<b><span style="font-size: x-large;">Goals for August</span></b></h2>
<div>
This month, all I want to do is focus on level design. When I think about how to make a level for my game right now, I'm frankly just not sure where to start. How do I keep levels from feeling boring? How do I make levels interesting? How should I make levels at all? By the end of August I want to have some sort of answer for those questions, however incomplete, and also have at least started working on 5 different levels for my game.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com1tag:blogger.com,1999:blog-2446709629762588817.post-49985663563239931832014-07-01T20:00:00.001-07:002014-07-01T20:03:24.119-07:00End of June Progress Report: I'm taking a breakThis'll be a short post.<br />
<br />
I'm taking a break from game development for the month, even though it's killing me to do so. My day job has been really stressful and consequently I haven't had a lot of time to do game development in my free time. This has really sucked, but there's been no way around it and I keep beating myself up about not doing more, but that really doesn't help with my stress levels (and I would like to note here that I feel I am typically quite good at dealing with stress).<br />
<br />
I'm feeling burnt out and work isn't going to be less stressful for another month at least, so I'm giving myself permission to not work on game development. In fact, I'm going to force myself not to work on it with the assumption that this break is just for the month of July and that this will help me be more energized to do the work in August.<br />
<br />
No small part of me worries that not being able to handle this all at the same time means that I could never make it in the games industry. However, I've been reminding myself that if I were in the games industry, I (probably) wouldn't be working literally all day for six days of the week.<br />
<br />
I don't know. Guess this is just another part of my grand experiment. Feeling kind of down this month.<br />
<br />
On a positive note, I finished my first playthrough of <a href="http://www.ahatestory.com/">Analogue: A Hate Story</a> tonight and it was great! Also, I'll have some more things to post about the MSU-1 soon, so hopefully people will look forward to that; especially the people who have been posting in the comments of part 2 of that article series!JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com1tag:blogger.com,1999:blog-2446709629762588817.post-29468447159104668002014-06-01T08:28:00.002-07:002014-06-01T08:28:26.281-07:00End of May Progress Report: Core FeaturesEarlier in the month, I made a decision to really challenge myself and make my Ludum Dare 29 entry ready for a full release on PC and/or Android by the end of June. I also posted a list of things I wanted to do to the game before I released it. I've reorganized my list into several categories of descending importance: <b>Essential</b>, <b>Secondary</b>, <b>Polish</b> and <b>Dead Last</b> items.<br />
<h2>
<span style="font-size: x-large;">What's done</span></h2>
I don't have as much done this month as I'd like because of things at my day job cropping up and causing a ton of stress. However, here's what I do have done (and keep in mind that I've omitted a lot of technical detail and additional notes under each of these items):<br />
<br />
<h3>
<span style="font-size: large;">Essential</span></h3>
<ul>
<li>Make rooms you can go into from the hallway</li>
<li>Add suspicion for the NPCs when you are in an infected host</li>
<li>Add voice mimicing mechanics</li>
</ul>
<div>
Adding rooms (and a method of travelling between rooms) is a big upgrade for my game since the ludum dare version is nothing but a series of hallways. Now I can make much more interesting mazes that can be more convincing as a science facility.</div>
<div>
NPCs will now act with suspicion when they see you. If you're outside of a human host, you get recognized as an escaped alien parasite instantly and they will react appropriately (Scientists will attempt to run away and call guards and guards will attempt to murder you on sight). However, if you're inside a human host when you're spotted by an NPC they'll stop and consider you. Perhaps your eyes aren't aligned quite right, or perhaps your human host is twitching oddly, but eventually any NPC looking at you will notice something is wrong, assume you're an alien, and react appropriately.</div>
<div>
The coolest feature, in my opinion, that I've added is the ability for the player to hear certain phrases spoken by NPCs and then, when inside a human host, parrot those phrases back. So, for example, early on you can learn to say "Hello." This comes in handy when a guard or scientist is suspicious of you but has not yet decided you are an alien in disguise, you can say "Hello" to them and they will respond back with something like "Oh, hey Jim." and their suspicion is eased.</div>
<h2>
<span style="font-size: x-large;">What's left to do</span></h2>
<div>
There's plenty left to do from my list, but near the top of the list is creating a method of deciding what thing the player wants to say when they're inside a human. I've been working on this, but Unity's GUI tools have a long history of not being great. Recently, however, there was <a href="https://www.youtube.com/watch?v=EOX6itCuKOc">an announcement</a> about new GUI tools that are coming out some time this summer. In light of that, I'm going to write a quick hack to get around not having a UI and then try to put it off for as long as possible in the hope that I can use the new GUI system.</div>
<div>
<br /></div>
<div>
Here's the rest of the to do list (again, abridged):</div>
<h3>
<span style="font-size: large;">Essential</span></h3>
<ul>
<li>Make a menu or something to set the voice clips</li>
<ul>
</ul>
<li>Add switches that toggle doors on and off</li>
<li>Remake the first two levels with the new stuff (e.g. rooms)</li>
<li>Add at least three new levels</li>
</ul>
<h3>
<span style="font-size: large;">Secondary</span></h3>
<ul>
<li>Clean up my code base</li>
<li>Make new art for all the new levels</li>
<li>Fix the resolution on the windows build</li>
<li>Add touch screen controls</li>
<li>Make an animation for background doors opening and closing</li>
<li>Make an animation for hall doors opening and closing</li>
<li>Make animations for characters walking into and out of doors in the background and make them play</li>
</ul>
<h3>
<span style="font-size: large;">Polish</span></h3>
<ul>
<li>Add music</li>
<li>Add sound effects</li>
<li>Add a menu</li>
<li>Add an ending</li>
<li>Fix movement bugs</li>
<li>Fix guard animations</li>
<li>Tighten up the elevator script</li>
<li>Make new art to make the levels feel lived in</li>
<li>Add more voice work</li>
<li>Maybe add a sound effect and a start-up time to bursting so that you can't do it on accident?</li>
<li><span style="white-space: pre;">Fix Bugs</span></li>
</ul>
<h3>
<span style="font-size: large;">Dead Last</span></h3>
<ul>
<li>Test all my new levels and mechanics</li>
<li>Release the game for $1 on PC</li>
<li>Release the game for $1 on Android and iOS</li>
</ul>
<h2>
<span style="font-size: x-large;">Goals for June</span></h2>
<div>
I'm going to stick to my guns for now and try to knock out all of these things by the end of June. I am, however, very doubtful that this will happen. I may miss my deadline and this will take until sometime in July. Releasing this game is an important step in my quest to get a job in game development.<br />
<br />
Next month should also have screenshots since, as soon as I'm done with this post, I'm starting on reworking levels. The changes this past month weren't very visual.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com1tag:blogger.com,1999:blog-2446709629762588817.post-23712030986007178562014-05-10T06:58:00.000-07:002014-05-10T06:58:32.956-07:00A Change of PlanI work best on a tight deadline and I acknowledged as much during my last blog post. That fact has been stirring around in my head for a few days now and I think I'm going to do something crazy and change my May goals.<br />
<br />
Below is a list of all the work I have left to do on my Ludum Dare 29 game, Beneath Your Skin (not necessarily in this order):<br />
Add music<br />
Add sound effects<br />
Add more voice work<br />
Add an ending<br />
Fix movement bugs<br />
Fix the resolution on the windows build<br />
Add suspicion for the NPCs when you are in an infected host<br />
Add voice mimicing mechanics<br />
Add at least three new levels<br />
Add touch screen controls<br />
Make new art for all the new levels<br />
Make new art to make the levels feel lived in<br />
Make rooms you can go into from the hallway<br />
Tighten up the elevator script<br />
Fix guard animations<br />
Test all my new levels and mechanics<br />
Release the game for $1 on PC<br />
Release the game for $1 on Android and iOS<br />
<br />
My new goal for May is to do at least half of that list. My goal for June is to do the rest.<br />
<br />
Why the rush? I've known for a while that the best way for me to get a job making video games is to just start making video games. The problem is that I'm not finishing anything. To fix that, I'm going to do something crazy and just devote as much as my free time as I can handle to just shipping a game. The game will probably not be as good as it could be, but it <u>will</u> be something I feel good about releasing to the public and that will have to be enough.<br />
<br />
Release or bust.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com2tag:blogger.com,1999:blog-2446709629762588817.post-69122732832174162432014-05-05T17:24:00.001-07:002014-05-05T17:24:41.823-07:00End of April Progress Report: Ludum Dare 29!Last month ended pretty shamefully with me not working on my prototype much at all. However, it's May now, and I need to review what I did manage to accomplish last month and determine what I'm going to try to accomplish this month. Let's start with my prototype that I made (largely in January and February).<br />
<br />
<h2>
<span style="font-size: x-large;"><b>Power Game Prototype</b></span></h2>
The "Power Game" prototype is currently dead in the water. Editing the script is a huge pain right now and the whole project is larger than I can handle at the moment. Mostly the failure for me here is a lack of experience with Unity combined with a large scope and no art. It's being indefinitely moved to the back burner until it becomes feasible.<br />
<br />
<h2>
<span style="font-size: x-large;">Ludum Dare 29</span></h2>
Ludum Dare is a 48 hour game jam where you try to make a game according to a theme all by yourself. No existing private code is allowed and any art/sound assets must be made by you within the 48 hour period. It's pretty intense; especially if you have problems with scope like I do. Compounding it further is my own lack of artistic talent, which is a problem when you have to make all the art yourself.<br />
<br />
The theme this year was Under the Surface, so I decided to make a game where you played an alien parasite who burrows under people's skin and controls them from inside before bursting out of their chest like in <i>Alien</i>. My lack of artistic talent makes the game less violent looking than it sounds from that description, but I guess the violence is just implied. That's fine though because the more realistic the graphics got for a game like this, the less palatable it would be.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBkAIuN4bZoYoOxlz0P90AikVOBro3-e5d5H0oNGrpLTVCIqnl-uf72RY-0NytEy73XjOSbyAzKWU9k9g1PFwA4CsSoYtktRbpQ0lGKuQKshm1u8dwZ2pCdgIQ-OJi6uSADHgk9FS-/s1600/UnderYourSkin4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBkAIuN4bZoYoOxlz0P90AikVOBro3-e5d5H0oNGrpLTVCIqnl-uf72RY-0NytEy73XjOSbyAzKWU9k9g1PFwA4CsSoYtktRbpQ0lGKuQKshm1u8dwZ2pCdgIQ-OJi6uSADHgk9FS-/s1600/UnderYourSkin4.png" height="159" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The exit is just behind this blue-locked door! But how to get there...</td></tr>
</tbody></table>
<br />
<h2>
<span style="font-size: large;">What went well</span></h2>
<ul>
<li><b>The art </b>looks great (considering the artist). I'm pretty hard on myself for not being a very good artist, but when it came time to scratch together some art for Ludum Dare this past month, I feel like I nailed it. The art isn't super awful, and it's pretty easy to tell what everything is. </li>
<li><b>Unity </b>made adding new content easy. After several attempts (including "Power Game") at making a lot of code to drive the game forward, I feel like I really got close to The Unity Way of doing things. As a result, when it came time to start building new levels, it only took me an hour to put together the entire second level of the game. Most of that was fine tuning, since I was able to drag and drop almost everything else.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgO-_iCyRyl2qmCq_d5aphhoSpexcDiOKyC41grvnIH80vIpmVCmJYEp0XNmv-iMBcTE5TZzRTh0LVMgz_5R7hlv4pGuW-vkCfT0hE8if77SnisPal2WMMldgtKcs5Ogg2I7NtJL-m/s1600/UnderYourSkin5.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgO-_iCyRyl2qmCq_d5aphhoSpexcDiOKyC41grvnIH80vIpmVCmJYEp0XNmv-iMBcTE5TZzRTh0LVMgz_5R7hlv4pGuW-vkCfT0hE8if77SnisPal2WMMldgtKcs5Ogg2I7NtJL-m/s1600/UnderYourSkin5.png" height="162" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hello there officer, I'm certainly not an infected human being <br />controlled by an alien parasite.<br />No, sir.</td></tr>
</tbody></table>
<div>
<br /></div>
<h2>
<span style="font-size: large;">What went poorly</span></h2>
<ul>
<li><b>Unity and Monodevelop </b>(the code editor for Unity) crashed on me several times. Monodevelop also stopped responding to mouse input on the list of opened files frequently, which would have been a problem if I wasn't already used to using keyboard shortcuts to navigate. More problematic was on Sunday around 9 hours before the deadline when I clicked between Monodevelop and Unity too fast (I think?) and got an error telling me that my code solution was unable to be overwritten. At that point, Monodevelop stopped being able to debug my game code. This persisted even after I more or less fixed it, and breakpoints only work in <u>most</u> areas of my code. This caused me a lot of frustration and stress. I lost about an hour or so to figuring out what was going on.</li>
<li><b>Levels </b>went poorly specifically because I should've made more of them. There are only two levels in the current version of the game. My general unfamiliarity with Unity and uncertainty of what exactly I was going to build for levels made me over-engineer a bit and I took too long working on making the game work and not long enough making levels. Ideally, I would have spent less time debugging Unity's crashes (as mentioned above) and integrating art into the project (animating individual sprites for characters took longer than I was expecting because I couldn't simply swap out spritesheets) and a little more time working on more levels. I think a reasonable number of levels to shoot for would have been five.</li>
<li><b>Sound</b> is very lacking in my game. There is no background music or sound effects. I had been planning on using www.abundant-music.com to generate looping background music, but that fell through when I realized Unity didn't support MIDI and I had no way to make up for that with the time left in the competition. I did take some time to pull out my keyboard and try to make a 10 second loop, but it ended up being really grating on the ears after more than a few loops, so I just cut it entirely. The sound effects got dropped when I found myself spending the last hour or so of the event debugging a small error that completely broke the game.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih9DuSNPL28W_kVzUiLhLyHpQwHaOiMWbUcMv16qDQO1C9Tv5V6S2QT4Ipd-1G-hheaB4Bp4e6MdWeCC3u5VhK1Q3fUpxIVISKUSFvBqtjNI_cKACfxiZxQ7SCGOUznHcgwKzy-GH2/s1600/UnderYourSkin3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih9DuSNPL28W_kVzUiLhLyHpQwHaOiMWbUcMv16qDQO1C9Tv5V6S2QT4Ipd-1G-hheaB4Bp4e6MdWeCC3u5VhK1Q3fUpxIVISKUSFvBqtjNI_cKACfxiZxQ7SCGOUznHcgwKzy-GH2/s1600/UnderYourSkin3.png" height="108" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Just a parasite hanging out in an air vent.</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<br /></div>
<div>
Overall, Ludum Dare went extremely well and really bolstered my confidence. I'm looking forward to seeing what feedback I get on it and I'll detail that here next month.</div>
<br />
<h2>
<span style="font-size: x-large;">Pigeon's Quest</span></h2>
Pigeon's Quest is a game where everyone dresses like birds for some reason. I mentioned the title to my wife sometime late last year and it's been in the back of my mind ever since. Only recently (last month?) did I have the epiphany that it's based on the game Snake. If you've never played Snake before, you can play a basic version of it <a href="http://www.xarg.org/project/html5-snake/">here</a> using the arrow keys to move.<br />
<br />
So far, I've got basic snake gameplay implemented. You move a smiley face around a game area and when you run into other people, they follow your smiley face appropriately. If you pick everyone up on a stage, it instantly takes you to the next stage. There's a lot to do, and after Ludum Dare I've got some ideas about streamlining what's already there. This is definitely a thing I want to work on some of the time, not all of the time.<br />
<br />
I've got some neat ideas for innovating on the snake gameplay, so I'm excited about that. I'm very worried about the art though and when I come to that point, I think I'll just save up some money and hire someone who is far more talented than me to make the art. I'll update my end of month posts with any progress I make on this though.<br />
<br />
<h2>
<span style="font-size: x-large;">Goals for May</span></h2>
When I left off with my April post, I mentioned that I wanted to use Ludum Dare to kick me out of my slump and I think I succeeded in that. As I type this, there are two pages of improvements and level sketches in my game ideas notebook for my Ludum Dare game. My goal for May is two-fold: I want to spend some more time developing my Ludum Dare game into something closer to complete and I want to work on Pigeon's Quest some more. I don't know if I can get either to a finished state by the end of the year, much less a state where I feel good releasing them, but I figure it can't hurt to try, right?<br />
<br />
<h2>
<span style="font-size: x-large;">Scope</span></h2>
In closing, as I've mentioned I have been thinking about scope a lot lately. How big is too big? How do I recognize when my scope is too big for a project? How do I better estimate how much work I can do in a set period of time (a month, a day, a year)? How can I trim down scope for ideas I come up with that are too big?<br />
<br />
I don't have any answers for that yet, but I am reading about it. For example, I recently found <a href="http://tinysubversions.com/2014/05/thoughts-on-small-projects/">this article</a> where a guy talks about how he loves making small stuff. I don't think that style and speed is for me, but it's definitely a good viewpoint and there's plenty of advice I could use in there.<br />
<br />
Do you have any tips for dealing with scope issues? Do you have any links handy to articles or talks about people dealing with project scope? Please let me know in the comments!<br />
<br />JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-31548009224883335982014-04-17T13:50:00.002-07:002014-05-05T10:09:23.799-07:00End of March Progress ReportOh wow! March just flew by didn't it? Well, time to put our best foot forward and work hard this April. It's going to be a month full of hard work and-<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2y3QPOIggD6bYijoijrt3p3UpSWQ798TEZlPLbNQfKQFoK7LSe0nk3SGsEIKzFkYQ6hKMF9tTiuH6H1JgTv7U4ljGeymN-pmvneNF2Ao7K8AsyFUXuUdp84uvR4s-xdmIPDtO5hOK/s1600/AprilDate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2y3QPOIggD6bYijoijrt3p3UpSWQ798TEZlPLbNQfKQFoK7LSe0nk3SGsEIKzFkYQ6hKMF9tTiuH6H1JgTv7U4ljGeymN-pmvneNF2Ao7K8AsyFUXuUdp84uvR4s-xdmIPDtO5hOK/s1600/AprilDate.png" height="232" width="400" /></a></div>
Oh... geez, April's already half over...<br />
Well, uh, I guess I've been making good progress on my "Power Game" prototype that I've been documenting all year. Yeah, let's take a look at the progress I've made on that!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbifmUHJmtGZqB0bI8yWgfXGX1ZS13vf8fUgxxVV-pIVhA80Yc38tvvN7RxZ9MbuRXquVTPLfCui77xvQFkR3Wq3wFN2W1Wa8nlcAOzM1UksbmZ0tX6Axtbs2ZZBJ3y5h0cgHGUsFS/s1600/PowerGameModified.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbifmUHJmtGZqB0bI8yWgfXGX1ZS13vf8fUgxxVV-pIVhA80Yc38tvvN7RxZ9MbuRXquVTPLfCui77xvQFkR3Wq3wFN2W1Wa8nlcAOzM1UksbmZ0tX6Axtbs2ZZBJ3y5h0cgHGUsFS/s1600/PowerGameModified.png" height="50" width="400" /></a></div>
Uh... well, shit.<br />
<br />
<h2>
<span style="font-size: large;">Real Talk</span></h2>
<div>
So, what happened?</div>
<div>
The answer is a lot of things happened. Work at my day job started to get really hectic towards the end of February and that's still going strong, so I've had a lot less energy by the time I get home each night. Then there's been some tough times for friends of mine, so I wanted to be available to them, further diminishing time I had for working on the adventure portion of my game. When I did work on my game, I managed to make it really tedious to put text into the game and since my plan had been to write out the story, that made me loathe to work on the game. </div>
<div>
Perhaps the biggest problem though, is taking a step back and looking at my project's scope. I've designed an art heavy game and I have no means of making the art. I mean, I've been making do with my horrible approximations of art, but it really doesn't do much for morale. I see what other people are doing in less time and I feel like their smaller, simpler (graphically) games are doing more for them because they're actually learning things and making finished projects.</div>
<div>
<br /></div>
<div>
I haven't been completely delinquent in my game development though. I've created a few small projects experimenting with different parts of Unity, and while that's been fun it hasn't created anything very impressive or fruitful.</div>
<div>
<br /></div>
<h2>
<span style="font-size: large;">So What Now?</span></h2>
<div>
Well, I've identified my problems, and I've taken some time this past week or two to recuperate. I'll probably take most of next week easy as well, but my goal for April is to have a small finished game. There are three things I think will propel me towards hitting this goal:</div>
<div>
<ol>
<li>Greatly reduced scope. Despite my best attempts to check myself before I wreck myself, I keep trying to make games that are beyond the amount of time I have available. So part of what I'm doing with these small projects I've been making is busting myself down to the smallest possible scope I can let myself have. It sucks, but it has to be done.</li>
<li>Ludum Dare 29 is happening on the 25th of the month. I'm going to participate and make a small game in 48 hours. The last time I did this, I actually came out of it with something, so hopefully a small scope and a hard deadline will kick me out of this slump.</li>
<li>There was a job opening at XSEED Games for a Localization Editor. From the job description, it sounded like a dream job for me. I thought I met all the qualifications rather well and then some, but they told me that my background was too technical for that position and that I didn't have any sort of English degree or professional writing background. They're absolutely right, of course! I've taken five years of creative writing classes throughout high school and college, I've completed nine first drafts of novels in the last ten years and written several short stories, but none of it has ever been published! Tons of people have done this as well, so I'm really not special in that regard. If I want to get that sort of dream job in the future, I need to get published. I need to have work I can point to and say "I don't have a degree in English, but this is what I've done and here's how people have responded to it." Basically, I'm disappointed but determined to not miss out on such a chance in the future.</li>
</ol>
<div>
So for now, I'm going to try to relax and be in a good place for Ludum Dare on the 25th, keep up on my small projects in Unity, and come May 1st I'll reassess where I am and figure out what I can do to make a game in eight months. I'm down, but I'm not out yet.</div>
</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com3tag:blogger.com,1999:blog-2446709629762588817.post-51307122740830157752014-03-01T10:35:00.002-08:002014-03-01T10:35:37.624-08:00End of February Progress Report: More Prototype (also HDD failure)<h2>
<span style="font-size: x-large;">Prototype Progress</span></h2>
Not a lot got done this month due mostly to a lot of stress coming from my day job. However, I did manage to find some time here and there to flesh out the framework for the Adventure portion of my game. Unfortunately, there isn't a lot of visual stuff, so here's a single .gif that shows off all the new stuff:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb6_rBQWzrqUY6XuI3UlbvvswMrtyddY9ngQKXZBsVRUkaKQ7Rm6b1uLPJdrnwGBX-8qXo9RKnwV5P97BuW6mEJr5Nk_WAadX_RLB71U8u9xZdGKRDLAYJ6euGLeDUDoJ-a9l4Ro3u/s1600/2014_03_01-1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb6_rBQWzrqUY6XuI3UlbvvswMrtyddY9ngQKXZBsVRUkaKQ7Rm6b1uLPJdrnwGBX-8qXo9RKnwV5P97BuW6mEJr5Nk_WAadX_RLB71U8u9xZdGKRDLAYJ6euGLeDUDoJ-a9l4Ro3u/s1600/2014_03_01-1.gif" height="158" width="320" /></a></div>
<br />
Here's what was in that gif:<br />
<ul>
<li>A Config menu skeleton</li>
<li>Working saving and loading functionality</li>
<li>A title screen</li>
<li>UI Event scripting (e.g. display this portrait at this location, animate the portrait, change the portrait, remove the portrait, etc)</li>
<li>Word wrap in the message box</li>
<li>A lot of data validation and error handling</li>
</ul>
<div>
This is all pretty basic adventure game-y stuff, but it felt good to get it all set up and the work I did this month will make things easier for me down the road. Luckily, these things didn't take as long as they could have because of previous experience I have from making two Adventure game engines in the past.</div>
<div>
<br /></div>
<div>
<h2>
<span style="font-size: x-large;">Goals for March</span></h2>
</div>
<div>
It has come to my attention that March is <a href="https://dischan.org/devblog/2012/03/whats-nanoreno/">NaNoReNo</a> which basically means that there's a bunch of internet people making visual novels this coming month. It sounds like fun and will probably be motivating, so I want to participate. The only way I can do this though and have it not stop progress on this project is if I put together a rough draft of the adventure portion story! So that's my goal for March: <b>create a rough draft of my adventure story IN ENGINE. </b></div>
<div>
Those last two words are important because my engine is definitely not finished. As I go about creating a rough draft, I'll learn a lot about what my story is even going to be about and I'll run into things I want to do that the engine can't perform yet. Finding these things will lead to me implementing those features at least in a first-pass form. With this goal in mind, I should also end up with a lot of rough art and features that will make for a very lovely post next month.</div>
<div>
<br /></div>
<div>
<h2>
<span style="font-size: x-large;">Roadbumps</span></h2>
</div>
<div>
A big part of the reason that not a lot got done this month is because of stress from my day job, but as hinted at in the title, the rest of the reason is that my windows drive is dying. All my work has been backed up, but watching my computer slowly die has really slowed down progress and everything else on my computer as well. An SSD should arrive today (Feb 28th) so hopefully by the time you read this post, everything will be resolved. (Edit: Everything took longer than expected, but all data is safely on a really fast SSD now)</div>
<div>
<br /></div>
<div>
<h2>
<span style="font-size: x-large;">Feedback</span></h2>
</div>
<div>
Please let me know what I can talk about in the coming month or what I can do better on posts in the future in the comments below.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com3tag:blogger.com,1999:blog-2446709629762588817.post-9190538782389864902014-01-31T07:31:00.000-08:002014-01-31T07:31:06.411-08:00End of January Progress Report: I Have a Prototype!At the start of the year, <a href="http://jumbocactuarx27.blogspot.com/2014/01/a-new-year-and-new-goals.html">I resolved to focus my efforts</a> on making one game this year and making as best I could. I said that I wanted to spend January on designing the basic concept for my game and picking an engine. So, here's what I've accomplished this month:<br />
<h2>
<span style="font-family: Courier New, Courier, monospace; font-size: x-large;">
Design 1</span></h2>
I've written down some bare bones designs for three games. The first idea is a game that I call "Legally Distinct From Chibi Robo" because that pretty much sums it up. There was recently a new Chibi Robo game on the 3DS which is not quite as charming as its predecessors, and I was musing on how I would make a game of that sort. I sketched out some ideas and wrote a bit about what I thought would work.<br />
<h2>
<span style="font-family: Courier New, Courier, monospace; font-size: x-large;">
Design 2</span></h2>
The next idea is one I've had mulling around in my head for a while and will probably end up trying to make eventually, though it will not be my focus this year. It's a fusion of falling block puzzle games like Tetris or Puyo Puyo and the Visual Novel genre. This idea is pretty dumb and I'm honestly not sure how fun it would be, but also I'm not entirely sure how I'd pull it off, so it's gonna stay on the back burner. I did, however, write down a bit about it for future reference, so I wanted to mention it.<br />
<h2>
<span style="font-family: Courier New, Courier, monospace; font-size: x-large;">
Design 3</span></h2>
Another idea I've had was to make a series of Warioware-esque microgames and string them together with a loose story and themes. Simple one or two button games that could be a fun distraction for an hour or two. I've had this idea in the past with rhythm games, but I lack any sort of musical talent, which makes rhythm games pretty much impossible.<br />
<h2>
<span style="font-family: Courier New, Courier, monospace; font-size: x-large;">
Design 4</span></h2>
The last idea is a fusion of adventure game exploration and 2D platformer arena fighting with RPG elements. Your character is entered in a tournament where every fight is to the death. Winning fights allows you to increase your stats so that you can be more powerful next time as well as affecting the adventure portion of the game. The other big feature of this idea is multiple branching story paths, some of which are only available after you've cleared the game once. Ideally, the game shouldn't take long to play through start to end, but there will be plenty of (sometimes radically) different endings to see and different things to do.<br />
<h2>
<span style="font-size: x-large;">
And the winner is...</span></h2>
As you may have guessed by now from the level of description, I'm going with the final idea for my game this year. I really wanted to do "Legally Distinct From Chibi Robo" but 3D art is currently just out of my reach. Even for placeholder stuff. It's a problem I really need to address, but I keep putting it off. The second idea is much simpler than the one I'm ultimately going with, but I'm less confident about it being good or fun in any way. It really needs some prototyping and I think it needs more time on the back burner anyhow. The third idea I think could easily be done inside of a year, even with my hefty art handicap, but I want to try for something a smidge more ambitious. For now, it's relegated to being a fallback plan.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIX8lgDDgT2ipV4xfvUeXP0tFvMWaQ4iyL54gJ3PWi7L3nj1IhS_8o8jqFJpEtyZzNkQK-QdCyuGA6R4tTCmy2NmSi1CIfQsxN2U_q0y8aeC-rcKez1BFYUBoxsiSPXGqFx0UsSg-5/s1600/call_of_duty_ghosts_4_0.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIX8lgDDgT2ipV4xfvUeXP0tFvMWaQ4iyL54gJ3PWi7L3nj1IhS_8o8jqFJpEtyZzNkQK-QdCyuGA6R4tTCmy2NmSi1CIfQsxN2U_q0y8aeC-rcKez1BFYUBoxsiSPXGqFx0UsSg-5/s1600/call_of_duty_ghosts_4_0.gif" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Design 3 inspiration...</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKX6LQx7rgD8UxBNFKHsDXp_3x9mEJ_tYikaHZ7OzUQ6UHykUn61b6GaclJ3DNu_HM9aLIyajGMGtpPE3Mo8THGwDeo5GUnYXqmbMcFALcOKSbVYUl7EIe855VMRyKXxOsLma8OqxN/s1600/dogzoom.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKX6LQx7rgD8UxBNFKHsDXp_3x9mEJ_tYikaHZ7OzUQ6UHykUn61b6GaclJ3DNu_HM9aLIyajGMGtpPE3Mo8THGwDeo5GUnYXqmbMcFALcOKSbVYUl7EIe855VMRyKXxOsLma8OqxN/s1600/dogzoom.gif" height="153" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">...and this is what I made. <br />
The zoom and mouth close are triggered when you push the "A" button.<br />
This is art.</td></tr>
</tbody></table>
<br />
<h2>
<span style="font-size: x-large;">Engines</span></h2>
So what about picking a game engine? I'll get right to it: Unity 4.x is the only possible choice for me. I've got a bit of experience with other frameworks and game engines though, so let's quickly run through them to see why they aren't going to be the right choice for this game.<br />
<br />
<b>XNA</b> is a very powerful framework based in C#. If I made my game with it, I could easily publish to PC Desktop and Xbox 360. With more effort, I could probably also port to Mac and Unix. However, part of my game's design this year calls for action segments that play sort of like a 2D platformer. <a href="http://jumbocactuarx27.blogspot.com/2012/05/how-is-mega-man-clone-at-start-of-this.html">And I</a><a href="http://jumbocactuarx27.blogspot.com/2012/05/progress-update-for-582012-5112012.html"> have a</a> <a href="http://jumbocactuarx27.blogspot.com/2012/05/progress-update-for-5192012-5252012.html">storied history</a><a href="http://jumbocactuarx27.blogspot.com/2012/06/progress-update-for-622012-682012.html"> of</a><a href="http://jumbocactuarx27.blogspot.com/2012/06/progress-update-for-6232012-6292012.html"> frustration</a><a href="http://jumbocactuarx27.blogspot.com/2012/07/progress-update-for-63012-7612.html"> with</a><a href="http://jumbocactuarx27.blogspot.com/2012/07/progress-update-for-71412-72012.html"> making</a><a href="http://jumbocactuarx27.blogspot.com/2012/08/progress-update-for-72812-8312.html"> platformers</a><a href="http://jumbocactuarx27.blogspot.com/2012_09_01_archive.html"> on XNA</a>. XNA would work, but I'd rather develop in an easier environment if possible.<br />
<br />
<b>RPG Maker</b> is pretty neat, and is actually flexible enough to include the sort of platformer and adventure gameplay that I want, but like with XNA it's a bit too much work to get it to happen. I really love RPG Maker though, and I feel like people give it a harder time than it deserves, but really it's better for games where RPG elements like stat building and equipment management is a bigger focus. Also, RPG Maker can only really deploy to PC Desktops, which is fine but I'd like to potentially port to more systems.<br />
<br />
<b>Construct 2</b> is a really fun little game engine. It deploys to the web with HTML5 and it's very newbie friendly. This makes it fantastic for prototyping and the editor is really good about visualizing your design process for you. However, it's a bit too newbie friendly right now. Debugging is a nightmare and it's really hard to go in and make major changes to big systems due to the very visual nature of the programming involved here. Recently the engine has been getting better, but I need something that I can easily debug right now.<br />
<br />
At this point, my options are <b>rolling my own engine</b> (nix on this because it'd be even more work than all of the above put together), using <b>GameStudio</b> (I'm really not familiar with this and past attempts to familiarize myself had not gone well) or <b>Unity</b>.<br />
<br />
I'd actually tried to learn Unity 3.5 before, but gave up because I didn't have any 3D modelling skills and Unity is a very asset driven environment. What has changed now is that Unity 4 has been released which contains a bunch of new features which includes expanded support for 2D games, which just happens to be what I want to do (and what I can make crappy placeholder art for)!<br />
<h2>
<span style="font-size: x-large;">
Prototype Progress</span></h2>
In order to make sure that Unity was the right choice for this year's game, I decided to try prototyping a bit with it. I goofed around for a while and read tutorials and looked at sample projects before starting, but once I got started, I was surprised at how quickly I was making progress. With that in mind, I want to show you my prototype game.<br />
<h2>
<span style="font-size: x-large;">Adventure</span></h2>
Part of my game will be very story driven. You'll explore a city of unfortunates, oppressed by those in power. There will be different people to meet and, as the story advances, different choices for you to make. One of the big things I want to do with this game is let the player take the story in a lot of different directions and cause many different outcomes. In the animation below, you can see the map mode, which will let players travel about the city (it's very basic right now and only lets you go to the arena or quit out of the map). Then, you see a city street where the player can interact with people (who will be) on the street. You can also check your character's progression on the stat screen and level up your abilities for the fighting portion of the game.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU1812iyNV_vRI6hJZ_3RYko9vqyG7KLof8bbwSWzi3MZ7NPmD0Taj-M6qQ_YmHXfrGJdq2XKWItDSEseDUfKmBinN8MD1pMKHgqeEzqCE_4uvVTEXzO1DAhaHCs2HU9BHpVsm-spl/s1600/adventureloop.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU1812iyNV_vRI6hJZ_3RYko9vqyG7KLof8bbwSWzi3MZ7NPmD0Taj-M6qQ_YmHXfrGJdq2XKWItDSEseDUfKmBinN8MD1pMKHgqeEzqCE_4uvVTEXzO1DAhaHCs2HU9BHpVsm-spl/s1600/adventureloop.gif" height="152" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This will eventually look more like an adventure and less like a first grader's art.</td></tr>
</tbody></table>
<h2>
<span style="font-size: x-large;">Action</span></h2>
When not exploring the city and being wowed by character drama, you'll be in the arena, fighting to the death against various opponents. This part of the game is tricky to make work right, and will need a lot of attention. It needs to be fun and deep enough for seasoned players of games like Mega Man X and accessible enough for players who maybe don't care as much about the fighting bits. I also want to include mid-battle cutscenes and dialog to spice things up depending on choices you've made in the adventure section. Finally, while I have some great ideas for the different battles players will come across, there won't be too many of them. This is for reasons of scope and ability, after all, I'm only one person and everything cool I add will need art and I am, obviously, not great at art.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXSscQbBwhyphenhyphenuXqfojAs_mJADkecKqRHyN1rWUSqXmE909iaNmIHpgmD4QO4tUlYFWhgAFihBm1UvcvPlC6GOfD3JtUrQTyigY1S3Y7NO8KyJMb_HPGyqHTtDHYStWNB6qYeDovwilv/s1600/characteranimations.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXSscQbBwhyphenhyphenuXqfojAs_mJADkecKqRHyN1rWUSqXmE909iaNmIHpgmD4QO4tUlYFWhgAFihBm1UvcvPlC6GOfD3JtUrQTyigY1S3Y7NO8KyJMb_HPGyqHTtDHYStWNB6qYeDovwilv/s1600/characteranimations.gif" height="149" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is some of the progress I've made on the placeholder player character.</td></tr>
</tbody></table>
<h2>
<span style="font-size: x-large;">Technology</span></h2>
Speaking of art, one of the things that has always impeded my progress in the past is taking the time to animate all the characters and such in a game I want to make and then putting it in the game and finding out it looks horrible. One of the chief reasons I wanted to pick Unity 4.x over other engines is that it has support for creating 2D animations of a given collection of sprites very easily. I <i>could</i> do things the old fashioned way and draw separate frames for each animation or I could front load a lot of the work and animate each piece of the character individually. As a means of demonstrating what I mean, take a look at this:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivpx9Nbdq_PrbG2A9y38kjiXWv3ayxh1VTRYNXidiZ-ZETiaTKYZcHfvcBk6zqYzNkjHaTRaTebOsIDEjZnhYi588NLJ5NmeQvHMDCE3bw4b0-9qBlWZXqPcWuZjrqOmUfryi4Y7tS/s1600/CharacterBits_Sword.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivpx9Nbdq_PrbG2A9y38kjiXWv3ayxh1VTRYNXidiZ-ZETiaTKYZcHfvcBk6zqYzNkjHaTRaTebOsIDEjZnhYi588NLJ5NmeQvHMDCE3bw4b0-9qBlWZXqPcWuZjrqOmUfryi4Y7tS/s1600/CharacterBits_Sword.png" height="320" width="268" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cut my life into pieces</td></tr>
</tbody></table>
What you see above is all the art for the placeholder character. Each piece of the character was chopped up and loaded into it's own gameObject in Unity which allows me to create animations by dragging parts around and rotating them- rather than drawing key frames and flipping between them at a convincing speed. This placeholder art isn't perfect by far and there are lots of weird areas in the gifs I've posted above that you can see some strange things (like a hand becoming disjointed). But also keep in mind that I was able to create that art and all the animations you see on this page in about three hours.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKN94vBeWfDvNr3ABzG7UeHrSiaDVphF1ak-31uD0eUkzDPiHhC306GPqssYJAltC-AsDkvuEykQFWFLoT52H_CjXK4CAuLVcmeMJeYh2rOwAMPkpCPWMI9VZEMaRtCr-bmMID-I5f/s1600/walkingloop2.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKN94vBeWfDvNr3ABzG7UeHrSiaDVphF1ak-31uD0eUkzDPiHhC306GPqssYJAltC-AsDkvuEykQFWFLoT52H_CjXK4CAuLVcmeMJeYh2rOwAMPkpCPWMI9VZEMaRtCr-bmMID-I5f/s1600/walkingloop2.gif" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I gave my game a walking loop.<br />
Games love walking loops.</td></tr>
</tbody></table>
<h2>
<span style="font-size: x-large;">Conclusion</span></h2>
<div>
So, did I achieve my goal for this month? Very much yes. I have a design, I have chosen an engine, and I even have an okay prototype. This month was a resounding success. However, it's all uphill from here. This month will ultimately mean nothing if I don't keep moving forward with this.</div>
<h2>
<span style="font-size: x-large;">So what about next month?</span></h2>
<div>
February's goals are going to be for me to flesh out the adventure portion of the game code wise. If I can get a solid foundation there, then I'll be in great shape to tackle the fighting arena portion of the code in March. This means that there may not be a lot of great screenshots for me to post a month from now, since all the juicy bits will be related to things like text processing, but that's just how it goes.</div>
<h2>
<span style="font-size: x-large;">Feedback</span></h2>
<div>
I know this was a long post, so thank you for reading this far. Please feel free to give me some feedback in the comments or directly via my e-mail. I welcome suggestions to make these blog posts better and if you have any comments or suggestions about the content of the article I'd love to hear that, too!</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com4tag:blogger.com,1999:blog-2446709629762588817.post-46387610173556927032014-01-09T05:12:00.000-08:002014-01-09T05:12:56.464-08:00A New Year and New GoalsLast year, I sat down and decided that I was going to release one RPG per month. They didn't have to be complete games and they didn't have to be very good, but they had to be kind of done and I had to release them. Looking back, it uh... well, it went incredibly poorly. I released two games, one of which wasn't even an RPG, and made a lot of progress on another, but mostly I was just feeling frustrated with myself. Eventually I got interested in the MSU-1 and did some stuff with that instead (which I'm still working on, by the way. I just haven't had much progress to report lately).<br />
<br />
This year, I'm not doing that stuff. I want to settle on one game design and work steadily towards it over the course of the entire year. I'm not saying I should be done with the game by the end of 2014, but I want to be able to look back and be proud of how much I've done.<br />
<br />
I feel like it's a personal flaw that I can't release one game per month for the entire year, but... I just can't. I want to make games for a living, but I just need to focus on what I can do for now. I can focus on trying to live up to my personal expectations later when I have more experience.<br />
<br />
My goal for January and February is to create a design document for my game for the year, and also to select an engine. This may take a while because I want to explore game engines that I don't have a lot of experience with, such as Unity. So there might be a lot of learning involved in these two months. Either way, at the end of each month I'm gonna post my progress here and possibly solicit feedback.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com3tag:blogger.com,1999:blog-2446709629762588817.post-18155424338280727622013-10-11T18:13:00.001-07:002015-12-06T16:57:30.209-08:00How to Enhance an SNES Game With the MSU-1 - Part 2: Slow Progress in the Face of Adversity<h2>
</h2>
When last we left off, <a href="http://jumbocactuarx27.blogspot.com/2013/08/how-to-enhance-snes-game-with-msu-1.html">everything was terrible and there was no documentation anywhere</a>. Well, there's still very little in the way of documentation, but not everything is terrible any more!<br />
<br />
Update: <a href="http://jumbocactuarx27.blogspot.com/2015/12/how-to-enhance-snes-game-with-msu-1.html">Part 3</a>, the climatic conclusion to this series is now available.<br />
<h2>
<span style="font-size: large;">
And thus, progress was made.</span></h2>
Let's get right to the good stuff that I really want to show off: MUSIC!<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/SsTvdtSy35c?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
The biggest development since the last post is that I now have music playing in the game and it sounds pretty frickin' sweet! I have about half the soundtrack replaced in the game right now and the only tracks I have that aren't in the game are the epilogue and credit scroll. So you can't play from start to finish without noticing that things are missing, but you can wander around much of the game and not notice!<br />
<br />
<h2>
<span style="font-size: large;">
How did this happen?</span></h2>
This is a great question and not one I can entirely answer. I was working with my patch code and trying to figure out why nothing was working when it just started working! There's very little in the way of helpful documentation out there and I've been largely unsuccessful in getting help in forums (though admittedly I haven't tried as hard as I absolutely can... yet) but I think that the reason it began working has something to do with getting my assembler to write with 8-bit registers instead of 16-bit registers. I'm not 100% sure on this though, but I've been thoroughly avoiding looking this gift horse in the mouth for the time being and just focusing on getting everything else working before going back and fixing this.<br />
<br />
At the end of this adventure, whether it ends in success or I give up out of frustration, I'd like to post what code I've got online in the hopes of helping others somehow. Perhaps when they come looking for a way to program for the MSU-1 on Google!<br />
<br />
<h2>
<span style="font-size: large;">
Why isn't this done yet?</span></h2>
There are, of course, problems still. The music doesn't play in the latest version of Higan and it doesn't play in bSNES v060 (which is the oldest version I can find online and the one that has debugging tools). Instead, it only plays in bSNES v075. I have no explanation for why this is, though I'm sure it relates to why my code suddenly started playing music. Time will tell on this one.<br />
<br />
Another problem is that although I've got about half the soundtrack inserted into the game, I don't even have the other half of the soundtrack! As you can hear in the video above, I've been using the <a href="http://www.zreomusic.com/z3">Zelda ReOrchestrated</a> album for A Link to the Past as a source for the music. The main reasons I've done this is because these songs sound great and they're pretty close to the in game tracks in terms of pacing and such, so they match up with cut scenes and events in-game well. Though perhaps the most important reason I chose to use ZREO's soundtrack is because it's free to download. Anyone can download the soundtrack, convert the music via an application (WAV2MSU) and a batch file I can distribute with my patch and then just have everything work together in the same folder. I could die happy if <a href="http://syntheticorchestra.com/">Blake Robinson</a> did the entire soundtrack to this game so that I could just use that, but then people would have to pay for the soundtrack, and I'd like to have a freely distributable version to go with the patch. The ZREO soundtrack is not complete though, and missing tracks are things such as the Guessing Game House theme which people don't cover very often since they aren't as memorable as, say, the Dark World theme. So not having half the music in the game is a big problem.<br />
<br />
Then there's still a handful of programming problems to tackle, with the main one right now being fading the music out. In Zelda 3 when you transition between areas and the game tells the music to change, the SPC code gently fades out the currently playing music for about a second as the screen changes, then the new music kicks in. Since I'm bypassing the SPC almost entirely now, I don't get this and there are sharp transitions between pieces of music as you can see in the above video with the transition from the church to the light world theme or the transition into Kakariko Village towards the end.<br />
<br />
<h2>
<span style="font-size: x-large;">
Things are looking up</span></h2>
The good news is that all of the above problems are being dealt with. Where the last blog post on this ended in despair and uncertainty, this new one ends with hope.<br />
<br />
<a href="http://www.byuu.org/">Byuu</a>, the guy who made bSNES/higan, is pretty active on his own forums so figuring out why the rom plays music in one version of his program and not another is probably just a matter of getting his attention for about five minutes so he can point out what I'm doing wrong. Then I can go and correct it. Even if I can't flag him down though, things are at a point where it works SOMEWHERE which is a lot better than when it didn't work at all anywhere!<br />
<br />
A music major friend of mine, <a href="http://www.youtube.com/watch?v=1I8A1jgt42o">Shane Johnson</a>, has agreed to help fill out the soundtrack! So there won't be any sudden silences or shifts to the original soundtrack. This is fantastic news and is much better than my fallback plan (learn to compose).<br />
<br />
Finally, I've been trying to get the fade out loop to work with varying degrees of failure. In theory it should be pretty simple, just check to see if we're fading out and if so decrease the volume by a smidge and do this once per frame. The problem is finding the right way to do this without throwing off the rest of the program. For example, I would think that the NMI function would be the place to do this, but when I do, I get something like this:<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i1.ytimg.com/vi/u_g7exJMB48/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/u_g7exJMB48?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/u_g7exJMB48?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
Which is not ideal. I'm confident that I can fix this if I just spend more time experimenting and studying the code, but it might take a while.<br />
<br />
If you know anything about any of this or would like to offer your help in general, please feel free to get in touch with me!JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com13tag:blogger.com,1999:blog-2446709629762588817.post-26140094815057666442013-08-25T11:54:00.000-07:002015-12-06T16:56:41.481-08:00How to Enhance an SNES Game With the MSU-1 - Part 1: There is No Documentation AnywhereUPDATE: Here's <a href="http://jumbocactuarx27.blogspot.com/2013/10/how-to-enhance-snes-game-with-msu-1.html">part 2</a> if you've been here before!<br />
Extra Update: Here's <a href="http://jumbocactuarx27.blogspot.com/2015/12/how-to-enhance-snes-game-with-msu-1.html">part 3</a> if you've been here before!<br />
<h3>
<span style="font-size: large;">
Introduction</span></h3>
Hello! In this series of articles, I'm going to document my first foray into the world of SNES romhacking. I have a specific goal in mind that I want to achieve, but it will be easier to show you rather than tell you. Please watch a bit of this and in particular, pay attention to the sound:<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/xf2IO7P5DVA?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
That's the game I want to hack. Zelda 3, more popularly known in North America as The Legend of Zelda: A Link to the Past. What I want to do with it is this:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/HnAg2T7d6uU?feature=player_embedded' frameborder='0'></iframe></div>
<div>
<br />
<div style="text-align: left;">
How this is possible requires a brief history lesson. Back in the day, Nintendo worked with Philips and Sony to try and get a CD drive add-on to the SNES. <a href="http://en.wikipedia.org/wiki/SNES-CD">It didn't work out.</a> However, in developing his highly accurate SNES emulator <a href="http://byuu.org/higan/">bSNES (now called Higan)</a> a person by the name Byuu implemented a co-processor chip called the MSU-1. The MSU-1 allows for the SNES to, among other things, play CD quality audio. The guy in the video above, as far as I can tell, never released his code for getting the MSU-1 to work with Zelda 3 though, but since I know it's possible, I've decided to attempt to replicate his work myself.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
I'm afraid that the basics of assembly are too much for me to go into here (not to mention my own tenuous grasp on them), so instead I'll refer you to <a href="http://en.wikibooks.org/wiki/Super_NES_Programming">some</a> <a href="http://www.defence-force.org/computing/oric/coding/annexe_2/">tutorials</a>.</div>
<div style="text-align: left;">
<br /></div>
<h3 style="text-align: left;">
<span style="font-size: large;">
Getting Started</span></h3>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So let's say we have our game's rom file, a hex editor and either the latest version of Higan or an <a href="http://sd2snes.de/blog/">SD2SNES</a>. These are the minimum tools we need to get this show on the road. Now, there's a very nice guide <a href="http://helmet.kafuka.org/msu1.htm">here </a>which tells us roughly what code we need to get the MSU-1 to play audio. I call this the Kawa document, and we'll be referring to it several times in our quest for MSU-1 audio in Zelda 3.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So now we have the code we need to get audio playing. Using the Kawa document, we also note that we need an audio file to play and an XML file. The XML file in the Kawa document says that part of it depends on the ROM. Sadly, I have been unable to find any sort of reference document which states exactly what goes into the XML file. There is a tool called <a href="http://helmet.kafuka.org/thepile/SNESPurify">SNESPurify</a> though, which will generate an XML file for us, and then all we need to add is the <msu1> element from the Kawa document's example. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Also mentioned in the Kawa document is that we need a data file, either <i>gamename</i>.msu or msu1.rom. What is in this file? The Kawa document doesn't say exactly and I've been unable to find much in the way of definitive documentation on that either. However, I did manage to find several forum posts which say that the file simply needs to exist, without any data in it, to signal to Higan that the code being executed uses the MSU-1. For the time being, I'm assuming that the empty .msu file is what I need.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Next we'll need some audio to actually play during our game. After a lot of looking around, I decided to use the <a href="http://www.zreomusic.com/z3">Zelda Reorchestrated soundtrack for Zelda 3</a>. It's free to download and stream and it's a very nice sounding take on the original soundtrack. It might not be perfect (for example, I haven't checked to see if this soundtrack will loop properly) but it's good enough to get started with. With a quick application of <a href="http://helmet.kafuka.org//thepile/Wav2msu">wav2msu</a> tool, we have some valid .pcm files to use.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Now all that's left is inserting the code from the Kawa document into the rom.</div>
<div style="text-align: left;">
<br /></div>
<h2 style="text-align: left;">
<span style="font-size: large;">
Editing the Game</span></h2>
<div style="text-align: left;">
The first thing we need to do is find where the game changes the background music. This is a bit tricky and varies from game to game, but the general bits of it are the same. The SNES SPC-700 is the chip that deals with the sound in your SNES and the way you communicate with it is by reading/writing memory addresses $2140 - $2143. If you follow the code with <a href="http://www.romhacking.net/utilities/241/">a debugger</a> you can find where it writes a value to memory and signals a change in music track. Once you have found this point in the code, you've found where you need to hijack the code.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
In Zelda 3, for example, at 09F4A6 in RAM (LoROM I think?) we get the code to load value 0B into the accumulator and then store that value to $012C. This plays the fairy theme at the file select. This is the point where we need to hijack the code to play our own MSU-1 fairy theme. There is some unused space in the ROM at 04EC1C where we can write our own function to play our music. So our first step is to jump to a subroutine at that location. We start at 0004F6A6 in the ROM (which is 09F4A6 in LoROM). Together, the LDA and STA there already use 5 bytes, so we have to make sure our own code matches. Here's the code I'm using presently to replace those 5 bytes:</div>
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;">22 1C EC 04<br />EA </span></blockquote>
The first four bytes are a JSL jump to our unused space in the ROM where we're going to write our function, and the last byte is a NOP in order to not disturb the code around the hijack point.<br />
<br />
The next thing to do is to convert the code in the Kawa document to something we can use. Combining code from the section about checking for the MSU-1's presence and the section about playing an audio track, we get this assembly:<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;">LDA $2002 \ Checks the first letter of the MSU ID<br />CMP #$53 |it should be 'S' which is hex 53.<br />BNE #$13 / If it isn't, we skip over the MSU-1 code.<br />LDA #$FF \ Set the volume to 100%<br />STA $2006 /<br />LDA #$01 \ We set the track number to track 1<br />STA $2004 /<br />STZ $2005 | The MSU-1 won't play until we set $2005<br />LDA #$03 \ We set the MSU-1 to play the selected track<br />STA $2007 / on repeat.<br />RTL | We return to the hijack point. This is the end of the MSU-1 code.<br />LDA #$0B \ This code is only hit if we skip over the MSU-1<br />STA $012C | code. This just plays the normal non-MSU-1 song.<br />RTL / This is useful if the rom is played on something which doesn't support the MSU-1.</span></blockquote>
Compiling that code by hand, we get:<br />
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;">AD 02 20<br />C9 53<span class="Apple-tab-span" style="white-space: pre;"> </span>D0 13<span class="Apple-tab-span" style="white-space: pre;"> </span>A9 FF<span class="Apple-tab-span" style="white-space: pre;"> </span>8D 06 20<br />A9 01<span class="Apple-tab-span" style="white-space: pre;"> </span>8D 04 20<br />9C 05 20<br />A9 03<span class="Apple-tab-span" style="white-space: pre;"> </span>8D 07 20<br />6B<span class="Apple-tab-span" style="white-space: pre;"> </span>A9 0B <br />8D 2C 01<br />6B<span class="Apple-tab-span" style="white-space: pre;"> </span></span></blockquote>
So, we take our hex editor to 00026E1C (04EC1C in LoROM) and start copying that hex in. At this point, assuming that our folder and files are named correctly, we should be able to run the game in Higan or the SD2SNES (or any other emulator that correctly implements the MSU-1 chip for that matter) and be able to hear a nice CD quality musical version of the fairy theme when we reach the file select screen. Except we don't.<br />
<br />
<h2>
<span style="font-size: large;"><b>What Goes Wrong</b></span></h2>
1) Higan currently doesn't care for the Kawa document. At the very least it doesn't like .xml files, opting instead for a format called .bml which seems pretty similar, but there still isn't any information I can find about what exactly is supposed to go in there. Just a few scattered example files that people have posted for various games. Even using these examples as a template, I've been unable to get Higan to load my edited game at all. In fact, the only version of the program I've gotten to work with it is bSNES v060! And even then it suffers the same problem as when I try to run it on the SD2SNES...<br />
<br />
2) SD2SNES doesn't play the MSU-1 music either! This is especially unfortunate since this is the platform I care about getting this to work on the most. Unfortunately, if Higan's specifications for using the MSU-1 have moved on, then the SD2SNES has been left behind and any new tutorials that will be written for the MSU-1's use in Higan won't apply to the SD2SNES.<br />
<br />
3) The SD2SNES apparently doesn't recognize the MSU-1's presence! When I run my code on the SD2SNES, it appears to compare the MSU ID but then it branches and plays the normal music track. I used the bSNES v060 debugger on my patch and noted that the value it was getting from $2002 was in fact not #$53, leading me to believe that I must be doing something wrong in my code because I have other MSU-1 enhanced files that play fine on the SD2SNES. It is just mine that doesn't seem to work. It doesn't help that every example I can find online doesn't seem to do anything different from what I'm already doing.<br />
<br />
4) The documentation for this chip is too scarce. I've sifted through every forum thread I can find on google that mentions the MSU-1 looking for some sort of technical information, but rarely have I found anything concrete and the Kawa document is the closest thing I've been able to find to a tutorial on how to use the chip. Also a bit maddening is that many of the resources that are linked point to byuu.org which makes sense since Byuu is the one who made the MSU-1 A Thing. However, back in May of this year, he redesigned and migrated his website and hasn't reposted all the old content yet. After a lot of frustration and thinking, I found that the wayback machine has <a href="http://web.archive.org/web/20130121233936/http://byuu.org/snes/msu1/development">a cached copy of the MSU-1 article from his site</a>, but unfortunately it doesn't have much that helps me with my above problems.<br />
<br />
5) I've posted a thread asking for help on a rom hacking forum, but no one has replied yet. I'm at the point where I'm attempting to post on Byuu's personal forums asking for help, but I really wish I didn't have to bother the people who frequent it since I'm sure they have better things to be doing than helping some stupid newbie. Another roadblock to posting on Byuu's forums is that I need to get my account approved by an administrator which hasn't happened yet despite having signed up a week ago.<br />
<br />
<h2>
<span style="font-size: large;">Conclusion</span></h2>
I'm pretty much at a dead end right now. I would LOVE to be adding the ability for myself (and others) to put a custom soundtrack into Zelda 3 and other games, but I'm finding myself unable even to get a single song to play!<br />
What's the most frustrating though is that I can't figure out what's wrong. I've tried following every example I could find online, but none of them have been able to get this working on either SD2SNES or Higan (or any of the many versions of bSNES I've downloaded).<br />
Unless I can get someone to tell me what I'm doing wrong and nudge me in the right direction, there will never be a part 2 to this series.<br />
<br />
Update: Good news! There is a part 2 to this series now! <a href="http://jumbocactuarx27.blogspot.com/2013/10/how-to-enhance-snes-game-with-msu-1.html">Click here</a> to check it out!</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com6tag:blogger.com,1999:blog-2446709629762588817.post-80741486738630012932013-04-28T15:54:00.000-07:002013-04-28T15:54:47.348-07:00Ludum Dare 26 out of nowhere!Well, this isn't an RPG, but it's my 1 Game a Month this month!<br />
<br />
I heard on Friday that this weekend was Ludum Dare 26, a 48 hour game competition/72 hour game jam. More info can be found at <a href="http://www.ludumdare.com/compo">www.ludumdare.com/compo</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-IIJEKr_oji74-nd-8Cq5ZrrbGn4xJ8llHYjPToCQwx3nrhTsPmvT0LMcYGJeJ7MEAtOm5T4r2DBzTe_hnTpVurXCroApN0myZqex3Dv-SmYzjMF5-6S9QkCVJBjfhzUcz6oUoUKT/s1600/Screenshot05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-IIJEKr_oji74-nd-8Cq5ZrrbGn4xJ8llHYjPToCQwx3nrhTsPmvT0LMcYGJeJ7MEAtOm5T4r2DBzTe_hnTpVurXCroApN0myZqex3Dv-SmYzjMF5-6S9QkCVJBjfhzUcz6oUoUKT/s320/Screenshot05.png" width="320" /></a></div>
<br />
<br />
<br />
Anyways, I decided almost unconsciously that I was going to do it and... well, I did!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRa64TQAxyRW0iJ2gPw5ir2m-YCyBP04799xBF80108a5ioAW44bG0ZZYKDnGY2IlrRQ4XX_9be5c_zIu_CFzqX_MhwbIILhubB-LK0yglzHOa2nssb5H45cpGGrx0DoAIapHJ6PqR/s1600/Screenshot06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRa64TQAxyRW0iJ2gPw5ir2m-YCyBP04799xBF80108a5ioAW44bG0ZZYKDnGY2IlrRQ4XX_9be5c_zIu_CFzqX_MhwbIILhubB-LK0yglzHOa2nssb5H45cpGGrx0DoAIapHJ6PqR/s320/Screenshot06.png" width="320" /></a></div>
<br />
Click <a href="https://dl.dropboxusercontent.com/u/8404998/War%20in%20a%20Bottle/index.html">here</a> to play my game, "War in a Bottle" right in your browser! Can you beat it? Probably! It isn't very long! I apologize for some of the jumps being tough.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOYfGyydeJgM5vb6LtR9H_aoMqedA9jEj68rFZJilobWU4bHUIV-4w4XVuxB9O6VqZc9uCmZbJ_Kv2nZN579mJu-Lyl4qV_1PjevBvVlBmVbwG_aGlBAuXPiV35-DTFd0HujpZyUgw/s1600/Screenshot07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOYfGyydeJgM5vb6LtR9H_aoMqedA9jEj68rFZJilobWU4bHUIV-4w4XVuxB9O6VqZc9uCmZbJ_Kv2nZN579mJu-Lyl4qV_1PjevBvVlBmVbwG_aGlBAuXPiV35-DTFd0HujpZyUgw/s320/Screenshot07.png" width="320" /></a></div>
<br />JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-16004155333027938142013-03-30T09:43:00.000-07:002013-03-30T09:43:08.932-07:00Resolution Smesolution: Adventurers University Part 1Last month's RPG was a resounding failure on nearly every level, and I haven't posted anything here about the current month's RPG so it must be going equally terribly and will miss its end of month release as well, right? The answer here is yes and no.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWb1Mnn8aziAYIKGtVnfucKmS4jhEQXKsTpD6cKz-HOqT0UTyFW5VrN8XOF71ks-AHVtYCW9glKa5XjBNfxNUG_z9yNIGNi4UgI1vurZ5yISaclXFhyphenhyphencaNO80JbwsLBOKjJrf_0HNi/s1600/March1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWb1Mnn8aziAYIKGtVnfucKmS4jhEQXKsTpD6cKz-HOqT0UTyFW5VrN8XOF71ks-AHVtYCW9glKa5XjBNfxNUG_z9yNIGNi4UgI1vurZ5yISaclXFhyphenhyphencaNO80JbwsLBOKjJrf_0HNi/s320/March1.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Character creation courtesy <a href="http://forums.rpgmakerweb.com/index.php?/topic/5775-composite-characters-in-game-character-creation/">Neon Black</a>'s composite character script!</td></tr>
</tbody></table>
<br />
<br />
First let's talk about the current month's RPG. In my last post I mused about maybe making an episodic game which would let me reuse certain assets like maps and characters between games and ideally help me to put out better games on a more timely schedule. Specifically when I said this I was thinking about Adventurers University (abbreviated afterwards as A.U.).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHogOkU1It35BZ-JogaeyFGGV0IlLypv9TiPr64VnDqpPUyt-7RdDTFHaHdnM-8L0-q2Zu_jhPHXGyWpVNQ954tXasJ3buZf8vazUq2q1-8GAr2qfkPkBSTiuhv-82I4Woy5feomlW/s1600/March3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHogOkU1It35BZ-JogaeyFGGV0IlLypv9TiPr64VnDqpPUyt-7RdDTFHaHdnM-8L0-q2Zu_jhPHXGyWpVNQ954tXasJ3buZf8vazUq2q1-8GAr2qfkPkBSTiuhv-82I4Woy5feomlW/s320/March3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I should mention that all the dialogue you see in this post is first draft.</td></tr>
</tbody></table>
<br />
<br />
A.U. is an old idea a friend of mine had when we were running a Dungeons and Dragons campaign together. It was a school dedicated to crafting the finest adventurers and attracted all the best talent. The curriculum wasn't stuffed with boring lectures, but was hands on and mission oriented. Each student was matched up with a team of three other students and managed by a mentor (an experienced adventurer who had proven themselves and likely retired from full time adventuring). When I ran my first quest with my group in this setting one of the players called it "the best session I've had in years." So after February's crushing failure, I think it's not unreasonable for me to want to revisit something that had previously gone so well.<br />
<br />
In this month's game, you are a new student at A.U. after being forced to leave your hometown. Luckily, you were recruited by a teacher at A.U. who was passing through your village at the time. The game begins with you arriving at the university and meeting your teammates. Then you're quickly whisked away on your first mission to the once great town of Loamhurst where all you have to do is deliver a package. However, trouble is afoot in Loamhurst and the task may not be as easy as you first think...<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwwBXKJ4fEU6rY-jTg_4DoC4O1zaPjb_xFp0myeA8S9Nu7d8piNUccGHsKyb5Pjp5GeJ5cm3QI_7eTw3F_TP16gMphLSrIrCypm1S8Bs-1jVru0Y_R1l9aBeuHlzhHw5sR79KWImC2/s1600/March6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwwBXKJ4fEU6rY-jTg_4DoC4O1zaPjb_xFp0myeA8S9Nu7d8piNUccGHsKyb5Pjp5GeJ5cm3QI_7eTw3F_TP16gMphLSrIrCypm1S8Bs-1jVru0Y_R1l9aBeuHlzhHw5sR79KWImC2/s320/March6.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I feel like choices are really important in RPGs and JRPGs are usually lacking in them. I'd like to change that.</td></tr>
</tbody></table>
<br />
<br />
I lost all my notes from the first time I ran this game back in college, but it's stuck with me and I recall pretty much all of the important details. The challenge is in adapting this all to a computer RPG. In my original run of the game time management was an important part of the adventure as was a bit of code breaking. These are easily adapted (or discarded as in the case of the code breaking aspect) the challenge is replicating the feeling of having a living world for the player to interact with. In Dungeons and Dragons the person running the game just needs to adapt to whatever the players decide to try, but in a computer RPG you have to plan all the contingencies and all the things that the player wants to try in advance. In short, you need to offer a convincing number of choices.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2WhNGAWwtCcLLkKCoiudHxKvGONYeByM3cPKLY7B9AiHKhQnu3uSThgRxlwCk9VkELFQjibmCon7vNGqY2zrRmi3aquN96_lumvZ4-OMvuCUZZQbMNQS_F1lL4zAs5uzaVFpXcVw/s1600/March11.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2WhNGAWwtCcLLkKCoiudHxKvGONYeByM3cPKLY7B9AiHKhQnu3uSThgRxlwCk9VkELFQjibmCon7vNGqY2zrRmi3aquN96_lumvZ4-OMvuCUZZQbMNQS_F1lL4zAs5uzaVFpXcVw/s320/March11.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Choices should always matter! Even the small ones.</td></tr>
</tbody></table>
<br />
The problem here is that doing this game right means a lot of choices and a lot of choices means a lot of dialog. I can do this, but the chances of me getting it done by the end of March is slim. There's just too much to write, balance, playtest and fix before the end of the month. So this game will probably miss its end of March release date.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-otV9CoWggIo1gI2enfa0IsRes7XaUNGKF7iAwR71lWC227gk2gGCs9xiZNE2z2qPoHdzj0MczgNuhty1lDv6IdGmT9lwoPf4O-lc9lvZRX9MyiPDoN8PGpyJbgNHEEn4YaHo0Pa/s1600/March9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-otV9CoWggIo1gI2enfa0IsRes7XaUNGKF7iAwR71lWC227gk2gGCs9xiZNE2z2qPoHdzj0MczgNuhty1lDv6IdGmT9lwoPf4O-lc9lvZRX9MyiPDoN8PGpyJbgNHEEn4YaHo0Pa/s320/March9.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">There will be a lot of recurring characters in future months. If all goes well...</td></tr>
</tbody></table>
<br />
<br />
At the same time, this is going too well to just get abandoned. Also, I really will be able to reuse assets from this game and that will be a big help. So what I'm saying is that while it'd be really cool to release one game each month, I can't always do that, but if I keep abandoning unfinished projects at the end of each month, I won't ever release anything (also I'll just get burned out). This month gets a pass then, and if I don't release this game by the end of this month, then it <b>will</b> be released by the end of next month.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-37449100493980106812013-02-28T16:33:00.001-08:002013-02-28T16:33:26.692-08:00February RPG: "Red Strings of Fate" Not Being Released!Well that month went by quickly.<br />
<br />
Sadly, February was a spectacular failure on my part to actually put rubber to the pavement and get the work done. It's so embarassingly unfinished that I can't even bring myself to put what little there is up for download. Instead, I'll use this post to explain what my goals were and what actually managed to get done. Since February has Valentines Day in it, I decided that it'd be great to do some sort of romance themed game.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbp8SAAVjavZp7F3v9KK5CoFp9PdnsivEUkhRXBIvfRkWA3WU-BLNecd2Eq8S7WqfZTx8vQNo11FX0CuwccqIQedYLYyDO4v6czXnBRAQz_U_CNX7Sy2g3xCVInbh-kkho_94B6dGP/s1600/Feb1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbp8SAAVjavZp7F3v9KK5CoFp9PdnsivEUkhRXBIvfRkWA3WU-BLNecd2Eq8S7WqfZTx8vQNo11FX0CuwccqIQedYLYyDO4v6czXnBRAQz_U_CNX7Sy2g3xCVInbh-kkho_94B6dGP/s320/Feb1.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Here's some pictures of my failure in progress.</td></tr>
</tbody></table>
<br />
<h2>
The Plan</h2>
<br />
In my head, you'd be able to choose between a few different characters or create your own of either gender and then select one of 4 - 6 romantic interests (also spanning both genders). The story would begin with your character lamenting their lack of high school love life in the way that teenagers do, but then your character would mention finding a summoning spell.<br />
<br />
At this point the lights come up on the protagonist's room where we find that you've already managed to summon Cupid to your aid. Cupid, being trapped until you fulfill your goal, lends you the power to see and manipulate (to an extent) the red strings of fate that attach soulmates to each other in myth and legend.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaP8NBX89cGbhkl09Kvl9nHjDtewcM4Su9CEykX5sQN6oLci8ttlnQSJXUkYdHpQaXblZ4deSpwAlJz_btosLpsUabs_o5C4f2lG6HENdd1UGxcMLPBAIa-fUpBSHeNIbK0sugwcqZ/s1600/Feb2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaP8NBX89cGbhkl09Kvl9nHjDtewcM4Su9CEykX5sQN6oLci8ttlnQSJXUkYdHpQaXblZ4deSpwAlJz_btosLpsUabs_o5C4f2lG6HENdd1UGxcMLPBAIa-fUpBSHeNIbK0sugwcqZ/s320/Feb2.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">She's such a unique character.</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0mO_GigWqMU1Dt3pmufzawM2tFbCkKkh0mY5ziDQpC4fXNuXSkmr0AttH1P8SuDwRuF__bCHUXXcf939omtxYRjMxTZVL5TcDJTPK4Kyo6vK_jvFnyXxq1PBwKCyqTn5oZG_KjsQL/s1600/Feb3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0mO_GigWqMU1Dt3pmufzawM2tFbCkKkh0mY5ziDQpC4fXNuXSkmr0AttH1P8SuDwRuF__bCHUXXcf939omtxYRjMxTZVL5TcDJTPK4Kyo6vK_jvFnyXxq1PBwKCyqTn5oZG_KjsQL/s320/Feb3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Your choices are so diverse.</td></tr>
</tbody></table>
<br />
<br />
Then you are fully equipped to set out on your quest to woo your chosen one. You set out and endear yourself to them with the aid of "endearment points" which let you see a bit into the future relating to your loved one. So for example, in the screenshot below, Helen is about to run out of fabric for a sewing project. Wouldn't it be so handy if you were just passing by later with the fabric she needed? So you go out and grab some fabric and after you give it to her your red strings of fate are closer together. After you repeat this twice more (giving me a nice three act character arc for each romantic interest) your strings are close enough that you can go to an endearment point at a location close to your interest's heart and twist your strings together, thus binding the two of you together for eternity.<br />
<br />
Now what I wanted to do here was let you get to the point where you are about to twist those strings and then decide that you're manipulating their feelings towards your end and that's not how relationships should work. Your character dismisses Cupid and works towards a lasting relationship with the romantic interest the old fashioned way: without super powers. The game ends on a positive note.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikBY1HI0z8es_hI1FF3_eFstXHsuA8Ogt8Ed_Kg1rGyOalM89MWEivic1-jgL7NHxsMqGbjyGp0hcm46s5-CMoU15OBP29BenLdG6FN7uT36i8snkFZtIN7HefmIz6sXzAGhW503yn/s1600/Feb4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikBY1HI0z8es_hI1FF3_eFstXHsuA8Ogt8Ed_Kg1rGyOalM89MWEivic1-jgL7NHxsMqGbjyGp0hcm46s5-CMoU15OBP29BenLdG6FN7uT36i8snkFZtIN7HefmIz6sXzAGhW503yn/s320/Feb4.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This screenshot shows you being far off from some lovin'.</td></tr>
</tbody></table>
<br />
Initially I was going to just have some sort of "bad end" where you ended up with this more or less completely devoted love-slave and your character goes on doing their thing. The more I thought about it, the more this didn't sit well with me because in a lot of games where pursuing a romantic interest is the goal the player doesn't consider the feelings of the (fictional) character that they're pursuing and wouldn't this be a great place to say something about that?<br />
<br />
My revised "bad end" wasn't an ending at all. Instead, your character would throttle Cupid and take his powers for yourself and select a new romantic interest from the previous list (minus your new boy/girlfriend who is totally okay with this because they're your mind-slave) and continue the game with your previous conquest at your side. Eventually this would again escalate and- well, I won't bore you with all the details but you get the idea.<br />
<h2>
What Went Wrong</h2>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3lRTN-yKphnjxDbCD_LXm3Kl1ajwdSBcLA-J0QesNx66UWLtKGnKkreQJJb7N7Mo8NSlxtdbASWvz0tXK_WA1W2ZfjRUALE_0ER5vzqjPfhmFdiDMPaihxKPRoSUGHj-HusR62Ep/s1600/Feb5.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3lRTN-yKphnjxDbCD_LXm3Kl1ajwdSBcLA-J0QesNx66UWLtKGnKkreQJJb7N7Mo8NSlxtdbASWvz0tXK_WA1W2ZfjRUALE_0ER5vzqjPfhmFdiDMPaihxKPRoSUGHj-HusR62Ep/s320/Feb5.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I am a master map designer.</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<br /></div>
<div>
There were three major problems that led to my disaster this month. The first is that, as you may have guessed, my scope was WAY too big. There's just no way I could've done all that work in one month; not that I expected to in the first place, but just having such lofty goals can be discouraging. The second was wanting to use art assets I didn't have. I envisioned this as a modern day setting RPG and I couldn't see it working any other way. I didn't have art for that setting already, so I had to go and get some because as I've mentioned elsewhere on this blog, art creation is not my strength. Not having acceptable art led to me spending way too much time looking around on the internet for proper art assets and then fiddling with them to get the art just right and then trying to build maps so that I could build the rest of the game. The result was incomplete maps that I wasn't happy with and no game.</div>
<div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivz7UqUGlImx5f6WbNhETiTHADP4S6O9l3X8ACOguj7b-vH3uEUALXxYt1mIOSsFi2BXi4KgIgL3DJeZq6neUrsidqUChpI936azrY3oT6th5RLTzRi25OgtAhMPy0r_aFyQpBAdP3/s1600/Feb6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivz7UqUGlImx5f6WbNhETiTHADP4S6O9l3X8ACOguj7b-vH3uEUALXxYt1mIOSsFi2BXi4KgIgL3DJeZq6neUrsidqUChpI936azrY3oT6th5RLTzRi25OgtAhMPy0r_aFyQpBAdP3/s320/Feb6.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This map isn't so bad though. Just not good.</td></tr>
</tbody></table>
<br />
<br /></div>
<div>
Finally, I just didn't put in enough time. At the start of the month I knocked out the red string of fate interface pretty quickly and was happy with that, but then I stopped working on the project for most of the rest of the month. There were days here and there where I'd pick it up and do a bit of work, but it was never enough to actually get anywhere. Then, when I was reaching the end of the month in the past few days I was panicking and cutting scope drastically but there just wasn't enough to build on.</div>
<div>
<br /></div>
<div>
I can blame things like Fire Emblem Awakening coming out or claim that maybe I had some burnout or something, but at the end of the day the fact is that I just didn't put in the time to make it good. Which sucks, but I guess that's the lesson I need to take away from this: just because I'm using a tool (RPG Maker) that does a whole lot for me up front, doesn't mean that I can slack off on working consistently. Like Perry Dawsey would say, "Ya got to have discipline."<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_AF277HI8yGVvLc5VnOvZeOXFUuigL540teeTi55oYdKyVTvg6Ckk_pUD_jGVx6p6DObckrLhErEqjU3vTHscbhw06a4Oo6uMBGfQKLzxsaMX5GWrhd4hx2ft4Z7VB153jTRSYbFS/s1600/Feb9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_AF277HI8yGVvLc5VnOvZeOXFUuigL540teeTi55oYdKyVTvg6Ckk_pUD_jGVx6p6DObckrLhErEqjU3vTHscbhw06a4Oo6uMBGfQKLzxsaMX5GWrhd4hx2ft4Z7VB153jTRSYbFS/s320/Feb9.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is the point last night where I gave up.</td></tr>
</tbody></table>
<br />
<h2>
Looking Ahead</h2>
<br />
So even though I'm a bit dejected from my failure this month, I'm mustering up hope for March. I want to do something that doesn't require any extraneous art assets and something that can keep me motivated from month to month. I think this means that I should shoot for some sort of episodic thing. I don't know. Gonna keep thinking about it and worst case, I'll just wing it tomorrow. Whatever I do, I want to make more blog posts about what I'm up to, so stay tuned.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com1tag:blogger.com,1999:blog-2446709629762588817.post-13823866411753031012013-02-03T08:21:00.001-08:002013-02-03T08:21:52.456-08:00January in ReflectionI wanted to take a moment and reflect on what I learned from January's RPG.<br />
<br />
<h2>
<b>Things That Worked</b></h2>
<b>Random dungeons</b> worked well. They aren't always perfect, but they're fairly flexible and reliable for reproducing the same layout given a seed number. The only downside is that without a large varieties of rooms with a combination of edge types, the dungeons look a bit samey since the same rooms are repeated over and over. Overall though, this was a great success I feel. I'll definitely be looking into using this in the future.<br />
<br />
<b>Using default assets</b> was amazing. Not having to worry about making my own art or finding someone else to make art for me was wonderful if not a bit limiting. I'm not an artist even on my best day, so having the RTP at my disposal was a blessing.<br />
<br />
<b>RPG Maker VX Ace </b>was fantastic to work with. Despite having messed around with the program for years in my childhood, I had avoided using RPG Maker to make "serious" games. I felt like there was a stigma attached to it and that I would be better off writing my own game engine in XNA or C++ or whatever. However, the engine has turned out to be more than flexible enough for my needs this past month and that was a pleasant surprise. Perhaps even more surprising though was...<br />
<br />
<b>Ruby</b>, and specifically RGSS3, the scripting framework that ties RPG Maker VX Ace together. Before January I had no experience with Ruby at all (though I did have some experience with Python) so it was nice to find that Ruby was easy to use. I'm not really clear on a lot of minuta still and my coding style with it is still a bit too Java/C++ judging by the samples I've seen around the web, but I'm getting there.<br />
<br />
<b>Cutting content</b> I didn't have time for. More on this below.<br />
<br />
<h2>
Things That Didn't Work</h2>
Doing all the <b>balancing</b> on the last day. I was so focused on getting the dungeons generating well that I ignored any semblance of balancing equipment and monster stats against the player. The result was a frantic five hours as February slowly approached. I think I did an okay job in the end, but the difficulty curve is still a bit too steep especially at the beginning of the game. I did my best to compensate for this by letting you easily run past enemies and growing in power very quickly but it's something that should be improved upon later. Ultimately, I think I can improve upon this by planning out my month better.<br />
<br />
<b>Bugs</b>. I say that these are prototypes in part because I anticipated not spending as much time on these as I would if I was going to call it a full game (or even think about charging money for it). There's quite a few bugs I noticed while doing a final pass for January. Chests would spawn when they shouldn't, they would spawn on top of each other and a few enemies spawned in walls pretty consistently. But to the best of my knowledge, there aren't any show-stopping bugs. The few story sequences all play out just fine in my testing and the game plays fine. If anything, the game is broken in the player's favor.<br />
<br />
<b>Infinite dungeon mode</b>. This was the thing that I really wanted to get in for January. I envisioned the game's real value in being able to get a high score in this mode and then challenge a friend to try to one up you using your password. In my head, the password would seed the RNG so that everything spawned the same way on both playthroughs. Unfortunately, this mode only partly works. It was thrown together at the very last minute, maybe two hours before my self-imposed deadline. There are a couple problems with it, but the two biggest problems are that the monster spawns are always slightly different even given the same password, and the adaptive difficulty is a bit too hard. Unfortunately these were both things that were notice right before midnight so... they got pushed out of the way and I just had to release with them.<br />
<br />
Worst of all in Infinite dungeon mode, it doesn't work! Trying it out in the initial release just generated a screenshot of the dungeon generation! Argh! This has since been fixed and anyone who downloads it from the previous blog post after 2/2/13 will get the fixed version. But still: argh!<br />
<h2>
Cut Content</h2>
<div>
I wanted to just quickly list a bunch of stuff that I had cut for time constraints:</div>
<div>
10 floors instead of just 8</div>
<div>
More random floors</div>
<div>
More bosses</div>
<div>
More room variety</div>
<div>
Optional ally partners</div>
<div>
Optional rivals</div>
<div>
More floors in infinite mode (currently it cycles through three sizes)</div>
<div>
More monsters</div>
<div>
Better balancing</div>
<div>
Generated puzzles (like the room rotation and gate sections)</div>
<div>
Different kinds of generation methods on different floors</div>
<div>
<br /></div>
<h2>
Looking Ahead</h2>
<div>
I'm feeling good about February. Aside from some games coming out that are going to eat a lot of my free time, I've got a better handle on my workflow and I have more experience with the tools now. I've even figured out a way around balancing issues for this month (spoiler: no battles). There'll be some new challenges and I'm taking my time this month and will be using today and tomorrow to plan everything out so I don't have to cut as much. Tuesday will see the start of a new game though, and the theme for this month will be "Romance."</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-32786363375534523592013-01-31T21:15:00.001-08:002013-02-02T14:03:53.209-08:00January RPG, Living Dungeon: In Search of Master! Released<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM1Epv3E_Ec_3Reu0nWtEcjc_UtkzNlEGYPCiy__mDrM0HKV0Kl7msklPNVYlQ9rxHdAuEtmBjwKWIr0SrRonW3vZYKJ2Jp6oKCVpUHqqH4vUZHwrb-WlLH_N45W92sWnl9ZOjoBVX/s1600/Infinite2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM1Epv3E_Ec_3Reu0nWtEcjc_UtkzNlEGYPCiy__mDrM0HKV0Kl7msklPNVYlQ9rxHdAuEtmBjwKWIr0SrRonW3vZYKJ2Jp6oKCVpUHqqH4vUZHwrb-WlLH_N45W92sWnl9ZOjoBVX/s320/Infinite2.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Took a lot of doing to get this far.</td></tr>
</tbody></table>
Just moments after January ended, I am pleased to announce that my RPG prototype for the month is available for public consumption. I'll be writing up a bit more about how it went and what's to come later since my immediate priority after getting this download working is to fall asleep, but in the meantime, please play the game and let me know what you think.<br />
<br />
Update:<br />
I changed<br />
You'll need the <a href="http://www.rpgmakerweb.com/download/run-time-package">RPG Maker VX Ace RTP</a> installed, then you can grab the game <a href="https://www.dropbox.com/s/uc6qsmtzqcs5joi/January.exe">here</a> (5MB).JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-84892928443453658052013-01-16T14:46:00.000-08:002013-01-16T14:46:02.933-08:00Making Semi-Random Dungeons in RPG Maker Part 3<br />
Quickly recapping one more time, my goals for my dungeon generator are as follows:<br />
<br />
<ol>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Easily reproducible</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Feel hand crafted</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">At least reasonably interesting to move through</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Always has a path to all pre-placed events on the map</li>
</ol>
<div>
I have accomplished the first two by now (and arguably the third) and only the fourth remains. </div>
<div>
<br /></div>
<div>
After some more polishing on the room generation methods I outlined in <a href="http://jumbocactuarx27.blogspot.com/2013/01/making-semi-random-dungeons-in-rpg_11.html">part 2</a> of this series, the rooms that are generated on the fly are looking much better and there are far fewer small inconsistencies in the tileset as these rooms are integrated into the dungeons.</div>
<div>
<br /></div>
<div>
The major problem left to us is ensuring that there is always a path to each pre-placed event on the map. With our current method of generating maps, this isn't easy to do as we place the rooms since there's no guarantee we won't suddenly find ourselves in a dead end situation. Instead of trying to guide the floor creation process as we go, I've opted to check for a path between points after we're done generating the level and then creating a new path if one does not exist.</div>
<div>
<br /></div>
<div>
Before we can ensure a path between two points exists, we need to be able to check to see if there is already a path between two points. I elected to create an n-ary tree data structure with a given point as the root and then each other room that the room at the given point connects to as its children. Once the tree is built, we can traverse the structure looking for another point and if we find it, then there is a path between the two points.</div>
<div>
<br /></div>
<br />
With that problem solved, I can move on to creating a new path where there isn't one. Here are the steps that I came up with:<br />
<br />
<ol>
<li>Create a tree from point A (treeA)</li>
<li>Create a tree from point B (treeB)</li>
<li>If there is no path from point A to point B, find the closest point to pointB in treeA</li>
<li>Look at the squares adjacent to that point</li>
<li>If one of those squares is in treeB, then connect it to the closest point in treeA, and you're done</li>
<li>Otherwise connect the closest point in treeA with the closest adjacent point</li>
<li>Go to step 3</li>
</ol>
<br />
<br />
I'm sure it's not the best way to solve this problem, but it is easy for me to wrap my head around and it works well. Here's a map that my algorithms generated without path ensurance from the start of the floor to the end:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrPcamwJ1wBEoTYEuyk6mj_U9TSjYIi80DFuL11Pk0muiAgUEFXQYMafnCP1nCJelz8hoisfbKiUhOOu8ZmJtB_wZfX2PLJgGG9RQfSoiIQrJAn5msmEEAY2PQqnysuguG3EujKXiG/s1600/109.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrPcamwJ1wBEoTYEuyk6mj_U9TSjYIi80DFuL11Pk0muiAgUEFXQYMafnCP1nCJelz8hoisfbKiUhOOu8ZmJtB_wZfX2PLJgGG9RQfSoiIQrJAn5msmEEAY2PQqnysuguG3EujKXiG/s320/109.png" width="320" /></a></div>
<br />
<br />
This is a great test case because it involves more than one room being created in order to link up both points. Here's a picture of the same floor after implementing path ensurance:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI7r0-2uWgaUhEVXPYqdy4cfomJICbF26nnxQAUwVVCuIgdH12rNWhu6UR06lOS3VASfaYEoRyCFZXV-2dyGKT9guStRSMeqDhjUhFSDsyCdCWneOek8Y4rY6ixsOtjh5AAUzvlfRy/s1600/Map.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI7r0-2uWgaUhEVXPYqdy4cfomJICbF26nnxQAUwVVCuIgdH12rNWhu6UR06lOS3VASfaYEoRyCFZXV-2dyGKT9guStRSMeqDhjUhFSDsyCdCWneOek8Y4rY6ixsOtjh5AAUzvlfRy/s320/Map.png" width="320" /></a></div>
<br />
So the section that bridges the two parts (and thereby creates a path from the start of the floor to the end) isn't the most interesting bit of dungeon design ever, but it's functional and can be easily improved upon.<br />
<br />
I mentioned at the top of this article that you could argue that I'd already met my third goal of having dungeons that were reasonable interesting to move through. I feel this is true because as I generate maps with more varieties of pregenerated rooms at my disposal, rooms appearing several times in a row happen less frequently and the map feels less copy/paste overall. The screenshots above aren't good examples of this, so here are some that are:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY0cQxxgzSBCKu-OfeXpGtdntLSA7JshRzP6er0YAPs-EA61i2rpBvxLgKaLzwOneuQ9VIDHCiSAPNJTMiBQguYN7D2vpQSgjlnsh-ymq6HSWwLffAFIIo3eD195O2wAlZ9LIjynOn/s1600/166.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY0cQxxgzSBCKu-OfeXpGtdntLSA7JshRzP6er0YAPs-EA61i2rpBvxLgKaLzwOneuQ9VIDHCiSAPNJTMiBQguYN7D2vpQSgjlnsh-ymq6HSWwLffAFIIo3eD195O2wAlZ9LIjynOn/s320/166.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">What a great interconnected map!</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8vF5EYT_gt67JL-b02sG1jqlYMnPi4mfjqY0GqNABl1OUwetWtDeVZ41fUHSQ1ncV3AF47TOud9P1scXglRPhDLh2-QZlfDmcTkRHjlARiHbFF4ARCbsl_g_THVH_lwQc6PpnxRf/s1600/72.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8vF5EYT_gt67JL-b02sG1jqlYMnPi4mfjqY0GqNABl1OUwetWtDeVZ41fUHSQ1ncV3AF47TOud9P1scXglRPhDLh2-QZlfDmcTkRHjlARiHbFF4ARCbsl_g_THVH_lwQc6PpnxRf/s320/72.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I like how this one is very maze-like. It's the perfect kind of map to put lots of treasure at the end of dead ends.</td></tr>
</tbody></table>
<br />
<br />
As I add more variety of rooms, the look of the dungeons will feel more and more interesting. At least, as far as I understand what makes for interesting dungeon design, they will. The ability to place static pre-made rooms on each map as well will offer me chances to include gimmicks like switches or doors that require keys that would otherwise not show up with my current generation algorithms (though there is no reason I could not alter my algorithms to generate these things).<br />
<br />
One last thing I want to mention before I conclude this series of articles is that I had initially intended to have different dungeon generation algorithms handle different floors of the dungeon in the game, to give some more variety. Unfortunately, if I were to do this, I would not be able to fulfill my new years resolution of putting out one prototype a month, because in my heart these prototypes must be as complete as I can make them and not buggy or near unplayable.<br />
<br />
Articles of other generation methods:<br />
http://donjon.bin.sh/dungeon/about/<br />
http://kuoi.com/~kamikaze/GameDesign/art07_rogue_dungeon.php<br />
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation<br />
http://angband.oook.cz/forum/showthread.php?t=927<br />
<br />
One especially for RPG Maker VX Ace (which I didn't find until about a week ago):<br />
http://forums.rpgmakerweb.com/index.php?/topic/5478-random-dungeon-generator-with-demo/#entry57750<br />
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-44762101544563947892013-01-11T17:08:00.000-08:002013-01-11T17:17:33.769-08:00Making Semi-Random Dungeons in RPG Maker Part 2So to quickly recap, my last post outlined how to quickly get a semi-random dungeon generator going in RPG Maker VX Ace that was reproducible (thanks to using a seed for the RNG) and also felt a bit handmade (thanks to actually making each 10x10 room). This fulfills two of my four goals for the random dungeon generator, the full list reproduced below:<br />
<br />
<ol>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Easily reproducible</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Feel hand crafted</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">At least reasonably interesting to move through</li>
<li style="margin: 0px 0px 0.25em; padding: 0px;">Always has a path to all pre-placed events on the map</li>
</ol>
<div>
Finally, this is a screenshot of what we had when we left off:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR3Y4R9yXaoPak5UJf2Z9coJMco6wLRoAbrd3siiH03-cjeVKNtDhyphenhyphen2pRUJW_9U4gHDdVjSoRY-RTrf3Zr74oMZABz4luoeZN_b8SfzNbqz03THoOl3uFITll2zzdxsSTm1Rlq_5B4/s1600/JanRPG3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR3Y4R9yXaoPak5UJf2Z9coJMco6wLRoAbrd3siiH03-cjeVKNtDhyphenhyphen2pRUJW_9U4gHDdVjSoRY-RTrf3Zr74oMZABz4luoeZN_b8SfzNbqz03THoOl3uFITll2zzdxsSTm1Rlq_5B4/s320/JanRPG3.png" width="320" /></a></div>
<div>
<br /></div>
<div>
A few observations about the above photograph, then. First of all the exits to the starting room are not exits as they do not align properly with the exits from adjacent rooms. Second of all, the borders between the rooms are quite clear and ugly. These two problems must be dealt with because they conflict with 2-4 of my dungeon generation goals. </div>
<div>
<br /></div>
<div>
The second issue is the easiest to deal with and explain. In RPG Maker VX Ace there's heavy use of autotiling. This means that when you place a tile it will change depending on what tiles are around it. It's easier to show how this works than it is to explain with words, so I'll do that now:</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioW0gh02uewhIoZ3A9EtVaofXHdubZgsCrL6yQOuwlgejRzTOG56fNht2g7N9ZI5AH2UKp0DAi86b1UYAEdDfs7q5_8C9ZYXeSSvbz7rIPu8EJ_GFwEyO3IaoJKnPRz_P5CvHIZgNl/s1600/JanRPG8.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioW0gh02uewhIoZ3A9EtVaofXHdubZgsCrL6yQOuwlgejRzTOG56fNht2g7N9ZI5AH2UKp0DAi86b1UYAEdDfs7q5_8C9ZYXeSSvbz7rIPu8EJ_GFwEyO3IaoJKnPRz_P5CvHIZgNl/s1600/JanRPG8.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Placing a single block yields the top part of the above picture. <br />
Placing another block of the same type next to it yields the bottom part of the image.<br />
None of the placed tiles in the image above have the same id. Three different tiles, three ids, even though we never placed a different looking block from the selector section of the editor.</td></tr>
</tbody></table>
<br /></div>
<div>
<br /></div>
<div>
When we create a room for the generator to place, the room is in the upper left corner of the screen and any wall or ceiling tiles act as if there is another tile of the same type above and to the left of it, just off screen. However, any tiles that are next to a blank tile, will act as if they are a border which is a problem when we place them down next to each other in a level. You'll get nice thick lines between rooms like you can see in the first picture posted in this post.</div>
<div>
<br /></div>
<div>
Thankfully, this is relatively easy to fix by placing additional tiles down on each room map that will not be copied over when the dungeon floor is generated. In other words, we're taking maps like this:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgWFpE4-lX17hPc-GBCyrKFjlb_DfyKkYhMcvkVhes7xjxEi4hW_JVbn2PvhR9waRLxlVKaU_KJ_oQx72JbR_1siYFwaeFqHonHVm8-0E-SnQGabR6cvzIg1Cq7FFuz9Yl5qTa5Ixp/s1600/JanRPG10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgWFpE4-lX17hPc-GBCyrKFjlb_DfyKkYhMcvkVhes7xjxEi4hW_JVbn2PvhR9waRLxlVKaU_KJ_oQx72JbR_1siYFwaeFqHonHVm8-0E-SnQGabR6cvzIg1Cq7FFuz9Yl5qTa5Ixp/s320/JanRPG10.png" width="312" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
and turning them into this:</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTuMRXZ3dEIq3nEcWVu1UFtFRgiQg5kmtqPpG4W_b6I8E0Dpopq9531SbxD7uo6Ipb8KgHm_Hvw34ieqSM07mulJRlyAS8txfXxb9DZ4b1zxc9f3LAy4DUk6vWYg5higFQtTkz9lbe/s1600/JanRPG9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTuMRXZ3dEIq3nEcWVu1UFtFRgiQg5kmtqPpG4W_b6I8E0Dpopq9531SbxD7uo6Ipb8KgHm_Hvw34ieqSM07mulJRlyAS8txfXxb9DZ4b1zxc9f3LAy4DUk6vWYg5higFQtTkz9lbe/s320/JanRPG9.png" width="317" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Everything inside the rectangle is what will actually appear in the game. Everything outside is for auto-tiling.</td></tr>
</tbody></table>
<br /></div>
<div>
<br /></div>
<div>
This works because it cheats the autotiling system but we don't copy those extra tiles over later anyways.</div>
<div>
<br /></div>
<div>
The other issue, of the exits to the starting room not lining up, is much more of a problem. In order to solve it properly, we need to know what edges a room we are trying to place has and what edges are surrounding the area we are trying to place a room. In my first attempt to solve this problem, I created a method which looked at the tiles along a given edge and checked to see which tiles matched the floor tile id I've been using, then returned a number representing the edge type as noted below.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfmllxi1QYC3N1AHEOXgIGNKOpnMabzmRbq8mqCmzYNjvtZzNdmsDZESR-6Q34KYqa0qE6Fcf1RTuig1fJSy_SfREJFn9Prh1iD2RLz7seqwrznBUTSMctY2ePE3H-RjEr-c64tKhv/s1600/JanRPG11.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfmllxi1QYC3N1AHEOXgIGNKOpnMabzmRbq8mqCmzYNjvtZzNdmsDZESR-6Q34KYqa0qE6Fcf1RTuig1fJSy_SfREJFn9Prh1iD2RLz7seqwrznBUTSMctY2ePE3H-RjEr-c64tKhv/s320/JanRPG11.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Each of the edge types, shown here from left to right as 1 - 5.<br />
The red squares indicate tiles that the player cannot pass through.<br />
The magenta tiles indicate tiles that the player can move through to travel to another room.</td></tr>
</tbody></table>
<br />
<br />
This worked for a while (and was in fact used for all of the screenshots from the last part), but had some big disadvantages. First of all, it's a method that is limited to the tileset used. If I changed to a different tileset, or even just had a different floor tile id, then my function would not work. This actually happened when I noticed that anywhere that edge type 5 appeared, it was being matched to edge type 1 because the square floor tiles were being read as not walkable! Another disadvantage that this method had was that it was difficult to add more edge types in the future. The function would have to be entirely re-written if I ever wanted to move it to a new project.<br />
<br />
A new, simpler method was needed. What I ended up doing was pretty hacky, but it works well. Since the rooms I'm copying from are all their own individual maps, the player will never visit those maps and thus there's no need for encounter groups to be specified. So I specified encounter groups whose ids matched the edge types for the rooms, since those can be read from scripts. Now my function can reliably return the correct edge type (and do so faster).<br />
<br />
However, this still isn't ideal since any pre-placed bits of a dungeon won't be accounted for and we have no way of knowing what their edge types are. In order to account for this, I needed to keep track of where rooms were placed, and what locations had pre-placed sections and what their edge types were. I used a three dimensional array (with the third dimension being five items deep for room id and then the four edges) to take care of this since the room sizes are all necessarily a standardized size, tracking the map ids of rooms that are placed in each location with any pre-placed locations marked as -1 (their edge types are stored below their id on the table).<br />
<br />
At this point, we've almost got a well working dungeon generator, but we still a big problem to deal with. Sometimes when creating your dungeon layout, the generator will find a combination of edge types where there isn't a room already created that matches all the surrounding edge types. For example, there's a type 2 above the location, type 3 to the left and a type 5 to the right and bottom, but you haven't made a room with that edge type combination in that order. Previously, I used the four way intersection for this, but that isn't ideal, especially with more than two edge types.<br />
<br />
I can think of two ways to avoid this problem. Either create a room with every combination of edge types or find a way to create rooms on the fly. Creating a room for every combination of edges is not a great option because of the large number of rooms that must be hand crafted. To create every combination of edges for our game, which has five different edge types you would need to create 5^4 = 625 rooms! That's a bit much for me, but I suppose if you were dedicated, you could make it work. Instead, I'll be making a function that returns a top, left, right or bottom part of a room for a specific edge type.<br />
<br />
We need to get the data for the pieces from somewhere, and while we could store this in a script somewhere, it's much easier to edit if we allocate a map to the purpose. Below, you can see that I've got a bunch of 10x10 rooms (since that's the size I've been working with, we could change the size if I wanted to) of each edge type. You can see in the next picture how each room is divided into pieces.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw_75Lwh7kI3TUCauPK6uUuEmBY4IBIDJWEWEKttqx0Zrj7ZcQUxNYP86qIFkDug7jWAHmTajyyO2-JJ6NkTOfMjrEvsLM6S1l2KyqzpU101TRlaaKisT4ISEO2PQ4UO0k-DpBe8mm/s1600/JanRPG6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw_75Lwh7kI3TUCauPK6uUuEmBY4IBIDJWEWEKttqx0Zrj7ZcQUxNYP86qIFkDug7jWAHmTajyyO2-JJ6NkTOfMjrEvsLM6S1l2KyqzpU101TRlaaKisT4ISEO2PQ4UO0k-DpBe8mm/s320/JanRPG6.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Edge types with their ID numbers below them.</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8YhnjpHY6-nM4zY-i0ZZLGsMbTmDAdJTmQnX7xJR7Fz-i3RVKVC-1LMsE1fWnpV020MChSmT6Su6pFynS64mgCny_I6dss3PuD9SEAlygHzqlDYQ4CFfPYTiPHd6hq96wfuOsa09I/s1600/JanRPG7.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8YhnjpHY6-nM4zY-i0ZZLGsMbTmDAdJTmQnX7xJR7Fz-i3RVKVC-1LMsE1fWnpV020MChSmT6Su6pFynS64mgCny_I6dss3PuD9SEAlygHzqlDYQ4CFfPYTiPHd6hq96wfuOsa09I/s320/JanRPG7.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Each region here represents a different section for the merged room.</td></tr>
</tbody></table>
<br />
<br />
<br />
Keep in mind though, that this method is difficult to get just right on its own. Various combinations of edges can bring up ugly tile inconsistencies where there looks like there should be a border somewhere and there isn't, for example. As a result, these Frankenstein rooms still don't look entirely right. I'm still in the process of fixing it (though they work just fine functionally) so I even have an area set up to generate a random (or specific) combination of the pieces. Here's some pictures of that.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWSCg-OW0qyowMBqFgHqbFm3W0BBsLSoc3shz8P8iatvcMkv_7uAj2w7kq8pnNCpSo3aNcq3AxyfhRiFtdPvt9OjzIGg038ezPieGnsdi188SB5o9WAg4F6KG9dDg5kB4r8lDogB5/s1600/JanRPG16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWSCg-OW0qyowMBqFgHqbFm3W0BBsLSoc3shz8P8iatvcMkv_7uAj2w7kq8pnNCpSo3aNcq3AxyfhRiFtdPvt9OjzIGg038ezPieGnsdi188SB5o9WAg4F6KG9dDg5kB4r8lDogB5/s320/JanRPG16.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuB0zMlo9dU85apxt12YsTKkTjNXihJCZkwBOkNOZ0MmApegUClgqRriyESJjRqekXjep50LEdGdvzOrZuX2JcDusHGZWjpyAkpSdcUoJSRPikwBNuKo06IdpNKp6_3cAiVEkzBElw/s1600/JanRPG17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuB0zMlo9dU85apxt12YsTKkTjNXihJCZkwBOkNOZ0MmApegUClgqRriyESJjRqekXjep50LEdGdvzOrZuX2JcDusHGZWjpyAkpSdcUoJSRPikwBNuKo06IdpNKp6_3cAiVEkzBElw/s320/JanRPG17.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhvm9kqo70cRPC9qynX3q-93kS6o9k5dAPlBtrXOBK8A2ikjF0ZRapLRDpDZmC-lMCrOYaH6RWUSIgNgkLj_Oh-_FcFHD0A5KuPrTovu-vcTfvRTcDdzxCXIhfj7grOAULr_vF6H2/s1600/JanRPG18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhvm9kqo70cRPC9qynX3q-93kS6o9k5dAPlBtrXOBK8A2ikjF0ZRapLRDpDZmC-lMCrOYaH6RWUSIgNgkLj_Oh-_FcFHD0A5KuPrTovu-vcTfvRTcDdzxCXIhfj7grOAULr_vF6H2/s320/JanRPG18.png" width="320" /></a></div>
<br />
<br />
That's where we are now. There's still a few more things to be done which I'll cover later (since this post is already long enough), such as ensuring there's a path from the start to the exit and adding in random items and other events. Finally, of course, there is always polish that needs to be added. Please let me know if there's anything I can explain further (or fail to explain further) and any sort of screenshots that might be interesting.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-71414996763929651072013-01-03T14:00:00.001-08:002013-01-11T17:17:19.310-08:00Making Semi-Random Dungeons in RPG Maker Part 1There are a lot of good articles out on the internet about generating dungeons, so I'll try to stay specific to the topic as it concerns my prototype specifically and RPG Maker. But first, a quick bit of background:<br />
RPG Maker gives the user a lot of easy to use controls to create content and string it together. The stringing together part, crucially, is translated to Ruby code behind the scenes. RPG Maker also introduces a lot of flexibility by allowing the developer to modify and write their own Ruby files. Some things remain off limits (e.g. the functions that decrypt and extract information from resources) but most everything else from characters to scenes is open for fun.<br />
<br />
Now then, my goals for the random dungeon are pretty simple (I think). I want a dungeon design that is:<br />
<ol>
<li>Easily reproducible</li>
<li>Feel hand crafted</li>
<li>At least reasonably interesting to move through</li>
<li>Always has a path to all pre-placed events on the map</li>
</ol>
<div>
Let's tackle the first one of these requirements first. RPG Maker is very much all about using static maps for the games that you can create with it. There is a custom dungeon generator included in RPG Maker VX Ace, but it generates the maps in the editor before compiling which means we can't leverage it to our advantage here. If there was a way to access this feature via scripting it would be a different story, but from what I can tell this is not possible.</div>
<div>
<br /></div>
<div>
The route I've decided to go will be to write a Ruby module which takes input such as a seed number and then generates a dungeon level based on that seed. This allows us to easily reproduce the exact layout of the dungeon floor as long as we don't lose the seed and we don't change the other variables that go into the map generation algorithm.</div>
<div>
<br /></div>
<div>
Inspired by other "mysterious dungeon" games I've decided that under certain circumstances the dungeon layout will change. So long as the player does not rest for the night to recover their HP & MP, they can leave and then go right back into the dungeon and it will be just as they left it. As soon as they rest though, the floor layout changes when a new seed number is picked. This decision unexpectedly helped me out when I realized that I couldn't save a generated layout to the map files (due to them being encrypted), but the engine already accounts for saving some variables for me, so I can just stick the seed in there for each floor and the player can save and load their game with no worries!</div>
<div>
<br /></div>
<div>
The next aspect I want is for it to feel hand crafted. If I wanted to be truly random here, all I'd have to do is pick a random number from 0 to whatever the top tile id number is and shove it into a map's data table. This dungeon would be very unlikely to be playable though. Instead I've decided that it would be good to make the individual pieces of the dungeons myself and then just have my generation algorithm place them as it sees fit. Hopefully this will make the map feel more like someone took the time to craft each little bit by hand, even though I'm not about to do that.</div>
<div>
<br /></div>
<div>
We'll come back to the other two requirements I have next time. For now, we have enough to get something basic working, so let's get to that. I'm going to talk a bit about the "technical" bits on how to do this, so if that's not your cup of tea, feel free to skip down to the screenshots.</div>
<div>
<br /></div>
<div>
Looking at the RGSS3 documentation, we can see that the Game_Map object has an accessor for a table called "data." The table is actually a simple implementation of a three dimensional array, containing exactly four integers for each x,y coordinate. Initially I thought that at least one of those four integers would be for storing which event (if any) was present at that coordinate, but on further research it seems like all four integers are for layers of tiles at that coordinate (which is not unexpected given that past versions of RPG Maker allowed you to access different layers to put tiles on top of each other, but sadly that is not the case with VX Ace).</div>
<div>
<br /></div>
<div>
I've chosen, completely at random, to make my dungeon floors 100x100 tiles in size and all my hand crafted rooms that will be randomly placed are now 10x10 in size. Each map is assigned an id which is directly related to its filename, making it easy to randomly pick a number from 0 to N where N is the number of rooms I've made (this is stored in a variable) and then add the id of the first room (right now it's 22). At this point, it just takes a little bit of scripting know how to whip up a couple of four loops that randomly choose a room and copy the data from it to the dungeon map every 10 tiles.</div>
<div>
<br /></div>
<div>
Before we do that though, I decided that it would be nice to place some things that are static on each dungeon floor, for example, a starting and ending area. The reason for doing this isn't too complex: I want to be able to have something I know will always be there like landmark or a place to teleport the player to when they go down a floor or something. I can also use this to create boss battle rooms or similar events that I might want to keep unique to a floor. With this in mind, before any room is chosen to be copied over to our dungeon floor I check the upper left most tile in each 10x10 set. If that tile has a tile id of 0 (that is, it is blank) then I go ahead but if it has any other tile id, then I assume that the 10x10 set it represents is already filled and I skip it.</div>
<div>
<br /></div>
<div>
After that's written, the next problem is figuring out how to call it on each floor. This is actually pretty easy due to the handy Event system in RPG Maker. On the map for each dungeon floor we'll add an event whose trigger type is Autorun. This means that the event will run automatically when the map is loaded. Using the script command we'll pass the map's data table and seed value into our algorithm and generate the map each time it's loaded, then we use the "Erase Event" command to keep it from firing over and over again.</div>
<div>
<br /></div>
<div>
Here's what it looks like after everything I've described is wired up:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnXGaKexUnhOHY31897FuXNsuu-C0kBRXJy8bklthKb3y-KNbb1j5RlwYl2rHQgSUJsapEOfhDMR831tG8iI9jDP-4nI9DE0lZvIgZoFY2eGc53R0tUcW0burUokL4SHPxS7mwlI_3/s1600/JanRPG5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnXGaKexUnhOHY31897FuXNsuu-C0kBRXJy8bklthKb3y-KNbb1j5RlwYl2rHQgSUJsapEOfhDMR831tG8iI9jDP-4nI9DE0lZvIgZoFY2eGc53R0tUcW0burUokL4SHPxS7mwlI_3/s320/JanRPG5.png" width="320" /></a></div>
<br />
For comparison, here's what it looks like in the editor:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPU8J2RdCcnx-HkIycJo0_zzAmiQdLR8Yl7lf80pR_b6aNr2lm-AVx9FS4I05b37b0jJIgFk-plgQdYaWmRXWdMNmWTjPVB9RWD8Ap6tXXn8zmrmxsG19DQYwzcFpal1YJ4B43_xrs/s1600/JanRPG4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPU8J2RdCcnx-HkIycJo0_zzAmiQdLR8Yl7lf80pR_b6aNr2lm-AVx9FS4I05b37b0jJIgFk-plgQdYaWmRXWdMNmWTjPVB9RWD8Ap6tXXn8zmrmxsG19DQYwzcFpal1YJ4B43_xrs/s320/JanRPG4.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is at 1/4 zoom. That's the starting area down in the right and up on the left is the end of the floor.</td></tr>
</tbody></table>
<br />
<br /></div>
<div>
<br /></div>
<div>
It still has some problems though, where room exits don't always match up. Like this:</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR3Y4R9yXaoPak5UJf2Z9coJMco6wLRoAbrd3siiH03-cjeVKNtDhyphenhyphen2pRUJW_9U4gHDdVjSoRY-RTrf3Zr74oMZABz4luoeZN_b8SfzNbqz03THoOl3uFITll2zzdxsSTm1Rlq_5B4/s1600/JanRPG3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR3Y4R9yXaoPak5UJf2Z9coJMco6wLRoAbrd3siiH03-cjeVKNtDhyphenhyphen2pRUJW_9U4gHDdVjSoRY-RTrf3Zr74oMZABz4luoeZN_b8SfzNbqz03THoOl3uFITll2zzdxsSTm1Rlq_5B4/s320/JanRPG3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Too bad I can't get to the next room!</td></tr>
</tbody></table>
<br /></div>
<div>
<br /></div>
<div>
My next post will address the other two dungeon generation goals and fix problems like the ones above.</div>
JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com1tag:blogger.com,1999:blog-2446709629762588817.post-30971125329147386902013-01-01T11:22:00.001-08:002013-01-01T11:22:07.733-08:00January RPG: Randomly Generated Dungeons<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhafPfx24XO5QWwYpe1EMbCfkSO5PAJpXk9h8GbrkDaaxMAPN6VcQIYtmJOtLn9mbahnIumDz7YSLU65xroJzxbj3a36BMwOhpC4eqlxN1aKLnBTM1mdGTqqrDXajsFadJUHaZ9n_7e/s1600/JanRPG1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhafPfx24XO5QWwYpe1EMbCfkSO5PAJpXk9h8GbrkDaaxMAPN6VcQIYtmJOtLn9mbahnIumDz7YSLU65xroJzxbj3a36BMwOhpC4eqlxN1aKLnBTM1mdGTqqrDXajsFadJUHaZ9n_7e/s320/JanRPG1.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">It is a test of game design. I will probably fail it.</td></tr>
</tbody></table>
As mentioned in my previous post, my new year's resolution for 2013 is to make one RPG prototype each month of the year with RPG Maker VX Ace. Each month I'll focus on a different aspect or idea and hopefully come out of the year with a handful of prototypes and a lot more experience with game design. To further solidify my commitment, I've signed up with a website I found this morning: <a href="http://www.onegameamonth.com/">www.onegameamonth.com</a> It seems like I'm not the only person crazy enough to do this! Without further adieu, my topic for this month will be rather uninspiring: randomly generated dungeons.<br />
<br />
I should come clean: I'm already going to cheat a bit here and not have completely random dungeons. Completely random dungeons would likely end up not being playable. There's no guarantee that I'd be able to walk from point A to point B! So I need to have some method of ensuring that I have a allowable path from any two points on the map. Then there's the problem of ending up with something more like a maze than a dungeon. A random generator wouldn't care much about room aesthetics, decor, etc. Such a thing would likely end up feeling very haphazard.<br />
<br />
So I'm shamelessly stealing how I think Dungeons of Dredmor's generator works. I'll specify a number of room layouts, then I'll specify some events that I want on each floor, and then upon entry to the map, the game will plop random rooms down on the map, ensuring that there's a allowable path between the exit, entrance and all events on the map.<br />
<br />
At the start, I'm just going to shoot for one randomly generated floor with static events, encounters and entrance/exit points. Depending on how easily the dungeon generation slides into place, I'd like to add randomly placed treasures, events, encounters, exits and entrances. The problem here is that I both cannot find a lot of encouraging information on randomly generating a map in RPG Maker and also that I am not terribly familiar with Ruby as a programming language. These things will slow me down, but I am sure that I'll reach my goal by the month's end.<br />
<br />
Entire games have been based around just the notion of a dungeon that changes each time you enter it, and I'm certain that if things go very well I can just spend all month making better and better dungeons. So what about everything else that goes into a game? Well, this is where RPG Maker shines because I'm not going to do a damn thing about anything else. I'll be making a simple hub area for the single player character to return to in order to upgrade equipment, heal, etc. But things like story, custom assets or a custom combat system will fall by the wayside this month. These things are not directly related to the dungeon generation I want to focus on this month so I'll just ignore them where I can and let RPG Maker's default assets sort out the rest.<br />
<br />
I'll post more here later about how this is coming along and the things I'm trying and how horribly they blow up in my face. For now though, here's a screenshot of the hub area I've created. It's probably going to be the easiest bit of the prototype this month:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNsZmWFrvMmnhnND8xV0Rf4Igvdj6FMHVj8-zZFkAg0cQjE_7YhB5Ivv0ztvBwqzUGWpJgBzqgBb0tBa8r5HwafRPGaAUn8aRmKH6F_wNSP5zlgfVTEdYcoMNgfK4iNlxTZ6Jzg-ic/s1600/JanRPG2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNsZmWFrvMmnhnND8xV0Rf4Igvdj6FMHVj8-zZFkAg0cQjE_7YhB5Ivv0ztvBwqzUGWpJgBzqgBb0tBa8r5HwafRPGaAUn8aRmKH6F_wNSP5zlgfVTEdYcoMNgfK4iNlxTZ6Jzg-ic/s320/JanRPG2.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">So romantic.</td></tr>
</tbody></table>
<br />
<br />
<br />
Well, time to get started!JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0tag:blogger.com,1999:blog-2446709629762588817.post-86261625025359021852012-12-21T03:36:00.001-08:002012-12-21T03:36:17.731-08:002013 Is The Year of The RPGA week or so ago, RPG Maker VX Ace debuted on Steam. I had spent a lot of time in my youth messing around with RPG Maker 95, 98 and XP. I remembered those days fondly for a moment, and then passed it by. I simply didn't have $70 to spend on it. Steam's Winter Sale started yesterday, and the program was 20% off. Even at this much more reasonable price, I couldn't afford it. That's when my roommate gifted me a copy of it over Steam.<br />
<br />
I've been thinking about what I could do with this that would be meaningful and also forward my own development efforts. If you check the date of the previous post before this, you might be under the impression that I haven't been doing any game development lately. This is partly true. November is eaten by National Novel Writing Month every year, and after that 30 day thing, I was just too burnt out from all the rush. I have spent some time working on games though, just not enough to warrant any sort of blog post. There was some fiddling with the platforming engine, some XNA experiments, a lot of article reading, and finally I decided to make a simple JRPG in Unity which got as far as me working out the stat systems and displaying a map before November hit. I've got lots of ideas, but the startup cost for trying them out is always too much because I'm working in XNA or Unity where I have to either start from scratch or spend time understanding other people's frameworks before I can try out the thing I wanted to play with. This is no longer an issue.<br />
<br />
With the aquisition of RPG Maker VX Ace, a tool I'm familiar with, I can create basic JRPGs very quickly. The biggest new feature to this version of the program is the scripting editor and it looks very flexible and easy to understand. So I'm going to jump in head first and start doing things: I've decided that 2013 will be the year of the RPG for me. My new years resolution is to make one JRPG prototype per month and I'll release it here on my blog at the start of each new month.<br />
<br />
My plan is to focus on one core idea each month, and build the rest of the game around that idea. So for example, I want to dive into the scripting system, so maybe I'll do random dungeon generation for January. Everything else will be incidental, so I'll be skipping over steps I'd take in a more polished game like creating custom art assets. Or really any sort of resource. I'm a programmer and aspiring game designer, not an artist. It simply isn't feasable for me to do the art for my prototypes and RPG Maker accommodates that.<br />
<br />
Early on in the month, I'll post what my theme is for the month and what my progress is like. I'll try to post about challenges and the process of getting an idea working and fun. Ideally, this will result in me gaining some experience as a game maker and some cool things will come out of it. I hope you'll be here with me whether I have soaring success, or miserable failure.JumbocactuarX27http://www.blogger.com/profile/06371210212229716132noreply@blogger.com0