<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" >

<channel><title><![CDATA[hiddenone's Resource Warehouse - Game Making]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making]]></link><description><![CDATA[Game Making]]></description><pubDate>Sun, 09 May 2021 12:33:25 -0700</pubDate><generator>Weebly</generator><item><title><![CDATA[Storing Information: An Abuse of Arrays]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/storing-information-an-abuse-of-arrays]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/storing-information-an-abuse-of-arrays#comments]]></comments><pubDate>Mon, 27 May 2019 17:00:00 GMT</pubDate><category><![CDATA[Eventing Idea]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/storing-information-an-abuse-of-arrays</guid><description><![CDATA[Information is a super important part of my game, since without it how could players choose which Hero to send to which World?&nbsp; So finding a good way to share all that info is something I've been spending a lot of time on, as you can see with the current version of the World Info sheet:         There's a lot of room for details there, but how is it all stored in the game?&nbsp; In variable arrays.      Variable arrays are possibly the most used thing in my game right now, I use them to stor [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Information is a super important part of my game, since without it how could players choose which Hero to send to which World?&nbsp; So finding a good way to share all that info is something I've been spending a lot of time on, as you can see with the current version of the World Info sheet:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/world-info-layout-v2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">There's a lot of room for details there, but how is it all stored in the game?&nbsp; In variable arrays.</div>  <div>  <!--BLOG_SUMMARY_END--></div>  <div class="paragraph">Variable arrays are possibly the most used thing in my game right now, I use them to store all sorts of info, from the Hero details to the MC's current mood and employment status.<br /><br />Which means I have a pretty big autoevent that sets everything up.&nbsp; That's not too bad, but it did make it hard to look at the event and be able to easily judge what each script call was setting up.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/array-set-up-event_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">A shortened version of the first autoevent iteration.</div> </div></div>  <div class="paragraph">Just look at that horizontal scroll bar!&nbsp; It may not be too tough to find right variable like that, but it is definitely tough to make sure I'm tweaking the right part of the array when I'm testing things.<br /><br />&#8203;I knew I needed to change how I set these up, just for my own ease of use.&nbsp; So I decided to have only one variable per script call, and separated each section with a comment just so that I can quickly tell what I'm looking at.&nbsp; I also used one of the minor bonuses of arrays, the comma, to break up the script call onto multiple lines.&nbsp; Now while the event is much longer to scroll thru, it's much easier on me to be able to find just what I'm looking for.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/array-set-up-event-2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Part of the current event.</div> </div></div>  <div class="paragraph">I'm happy with how the event is set up now, since I can make edits to things as I go a lot more easily now.&nbsp; It makes adding new Heroes and Worlds a lot simpler, which is great!&nbsp; Now I can add as much as I want without ending up too lost in the event.</div>]]></content:encoded></item><item><title><![CDATA[Why Reincarnation Assistant?]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/why-reincarnation-assistant]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/why-reincarnation-assistant#comments]]></comments><pubDate>Mon, 20 May 2019 17:00:00 GMT</pubDate><category><![CDATA[Game Updates]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/why-reincarnation-assistant</guid><description><![CDATA[Instead of another week of eventing details, I thought it'd be fun to explain why I'm even making this game.&nbsp; I'll be setting it up as a question-and-answer thing, so if you have any questions of your own feel free to ask them in the comments!  Why make a game? You're a resource creator, not a game dev!  It honestly seems to surprise some people when I tell them I like to make games.&nbsp; That's what got me involved with making resources in the first place, I wanted some sprites that didn' [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Instead of another week of eventing details, I thought it'd be fun to explain why I'm even making this game.&nbsp; I'll be setting it up as a question-and-answer thing, so if you have any questions of your own feel free to ask them in the comments!<br /></div>  <h2 class="wsite-content-title">Why make a game? You're a resource creator, not a game dev!</h2>  <div class="paragraph">It honestly seems to surprise some people when I tell them I like to make games.&nbsp; That's what got me involved with making resources in the first place, I wanted some sprites that didn't exist for my project so I learned how to make them.<br /><br />My main love has always been games, and finding new ways to make RPG Maker do what I want it to.&nbsp; Making resources is fun too, but just can't compete with bringing a project to life.</div>  <div>  <!--BLOG_SUMMARY_END--></div>  <h2 class="wsite-content-title">Why Isekai?</h2>  <div class="paragraph">The reason is stupidly simple: I was reading a lot of isekai stories when I came up with the idea for Reincarnation Assistant.<br /><br />The whole idea of isekai lends the perfect backdrop for a game where you have to send the right people to do certain jobs.&nbsp; It also means I can mix and blend concepts from genres like fantasy and sci-fi naturally, since summoning people from multiple worlds means I'm not trapped in a single genre.</div>  <h2 class="wsite-content-title">Why a business office?</h2>  <div class="paragraph">Because it's an uncommon location for RPG Maker games, and it's funny.&nbsp; I could have set the game in a fantasy temple, but that makes it feel more serious to me.&nbsp; The juxtaposition between fantastical concept and the sterile feel of an office building just felt more amusing to me.&nbsp; And since I want this to be a comedic game, setting it in an office made the most sense.</div>  <h2 class="wsite-content-title">Who is the player character?</h2>  <div class="paragraph">The player takes control of Mana (who they can rename, if they want), a new person at the company who&nbsp;<span>takes on the job of assistant to a very laze God of Reincarnation.<br /><br /></span>The player can choose between three appearances: man, woman, and tentacle blob.&nbsp; Mana's personality is formed by player choice, so the more you choose the 'sarcastic' option the more likely Mana will reply to comments with a snarky comeback (of course, you could make Mana polite as well).</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/mana-pic_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">The three current appearances for Mana</div> </div></div>  <h2 class="wsite-content-title">How many possible heroes and worlds will there be?</h2>  <div class="paragraph">As many as I can come up with!<br /><br />A more serious answer would be around 20 of each.&nbsp; That feels like a good number to me, enough to give players a lot to do and play around with without making so much work that the game will never get done.&nbsp; I'm planning on having at least a few different reasons for each world to need a hero, so even if there are only 20 worlds there will still be a lot to do even if you have sent a hero to each world once.<br /></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div class="paragraph">Those are some of the questions I thought would be interesting to have answers to, but if y'all have other ones just comment and let me know!</div>]]></content:encoded></item><item><title><![CDATA[Sharing Hero Information - Superhero Stat Cards]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/sharing-hero-information-superhero-stat-cards]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/sharing-hero-information-superhero-stat-cards#comments]]></comments><pubDate>Mon, 13 May 2019 17:00:00 GMT</pubDate><category><![CDATA[Game Updates]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/sharing-hero-information-superhero-stat-cards</guid><description><![CDATA[Information about the available heroes in my game is important, since knowing enough about the hero could be the difference between sending them to a world that they can help, and sending them to a world that will eat them up and spit out their bones.&nbsp; But too much info could be just as bad, since the player could end up confused about which info in important to know and what's just there to fill space (the hero's race was one box I considered adding, but decided that the image should conve [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Information about the available heroes in my game is important, since knowing enough about the hero could be the difference between sending them to a world that they can help, and sending them to a world that will eat them up and spit out their bones.&nbsp; But too much info could be just as bad, since the player could end up confused about which info in important to know and what's just there to fill space (the hero's race was one box I considered adding, but decided that the image should convey that info well enough).&nbsp; So I needed to find a way to get enough info across, without overwhelming the player.<br /><br />There's already been a lot of improvement from the first version, but there's still more I know can be improved.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/842467174.gif" alt="Picture" style="width:100%;max-width:1100px" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div>  <!--BLOG_SUMMARY_END--></div>  <div class="paragraph">The biggest issue I was having was with the actual stat box.&nbsp; I put numbers in it, but exact numbers aren't going to be important when picking a hero.&nbsp; Obviously choosing a hero with a low Attack to send to a world that needs a strong warrior would be a bad idea, but it wouldn't matter if the hero had an Attack of 8 or 9.<br /><br />So I considered using words instead.&nbsp; It gives the player enough info without dealing in numbers... But something still wasn't feeling quite right.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/stat-display-comparison_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Numbers vs. words: which is better?</div> </div></div>  <div class="paragraph">That's when Biestmann on the forum made an amazing recommendation: using an icon-based rating.&nbsp; It shows all the info I want, and even fits the look I want better than words!&nbsp; So I went ahead and added them in.</div>  <div><div class="wsite-multicol"><div class="wsite-multicol-table-wrap" style="margin:0 -15px;"> 	<table class="wsite-multicol-table"> 		<tbody class="wsite-multicol-tbody"> 			<tr class="wsite-multicol-tr"> 				<td class="wsite-multicol-col" style="width:50%; padding:0 15px;"> 					 						  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/stat-display-with-stars_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>   					 				</td>				<td class="wsite-multicol-col" style="width:50%; padding:0 15px;"> 					 						  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/stat-display-with-stars-v2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>   					 				</td>			</tr> 		</tbody> 	</table> </div></div></div>  <div class="paragraph">I'm hearing mixed opinions on whether the different ratings should have different colors or not, but luckily it's simple enough to switch the numbers in the \i[n] icon command. ^^<br /><br />Since icons don't take up all that much space, I could resize and reorganize the entire hero info layout.&nbsp; Now it should be easy for the player to take a quick glance at the info and see what's important.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/hero-info-layout-v4_1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Yes, his name is Example Hero. He's the Harold of Reincarnation Assistant's available heroes</div> </div></div>  <div class="paragraph">Information for the world's is set up in a similar manner, though it still needs tweaking.&nbsp; But it shows the most important thing, the 'Hero needed:' box, and that means I can rough out the hero selection mechanic now to allow for more heroes and more randomization.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/world-info-layout_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Example-opolis is not the most exciting world, but at least it exists</div> </div></div>]]></content:encoded></item><item><title><![CDATA[Eventing a Picture-Based Menu]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/eventing-a-picture-based-menu]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/eventing-a-picture-based-menu#comments]]></comments><pubDate>Mon, 06 May 2019 17:00:00 GMT</pubDate><category><![CDATA[Eventing Idea]]></category><category><![CDATA[Game Updates]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/eventing-a-picture-based-menu</guid><description><![CDATA[Since so little of Reincarnation Assistant is a normal RPG, the default menu just doesn't fit.&nbsp; Instead of finding or requesting a plugin, I decided to event it.This isn't a tutorial, just a look at how I'm doing things.&nbsp; If y'all would like a more in-depth tutorial, leave a comment and let me know.&nbsp;First Iteration - Putting the basics inTime to get the basics in.&nbsp; I only need Items, Save, and Exit really, so I can just start with three pictures and highlight the one the play [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Since so little of Reincarnation Assistant is a normal RPG, the default menu just doesn't fit.&nbsp; Instead of finding or requesting a plugin, I decided to event it.<br><br>This isn't a tutorial, just a look at how I'm doing things.&nbsp; If y'all would like a more in-depth tutorial, leave a comment and let me know.<br></div><h2 class="wsite-content-title">&nbsp;First Iteration - Putting the basics in</h2><div class="paragraph">Time to get the basics in.&nbsp; I only need Items, Save, and Exit really, so I can just start with three pictures and highlight the one the player is currently choosing.</div><div><div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"><a><img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/menu1_orig.gif" alt="Picture" style="width:auto;max-width:100%"></a><div style="display:block;font-size:90%"></div></div></div><div><!--BLOG_SUMMARY_END--></div><div><div id="568410605164899811" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><button title="Click to show/hide content" onclick="if(document.getElementById('menu1') .style.display=='none') {document.getElementById('menu1') .style.display=''}else{document.getElementById('menu1') .style.display='none'}">Menu 1 Event</button><div id="menu1" style="display:none"><div style="background-color: white;"><pre><font color="black">&#9670;</font><font color="magenta">Change Menu Access&#65306;Disable</font><font color="black">&#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 255, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 200, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font><font color="black">&#9670;</font><font color="blue">Loop</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('right')) || (TouchInput.isTriggered('right'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # += 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 8</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('left')) || (TouchInput.isTriggered('left'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # -= 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 4</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 7</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('ok')) || (TouchInput.isTriggered('ok'))</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Item);</font><font color="black">      &#9670;</font><font color="blue">Break Loop</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Save);</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">      &#9670;</font><font color="indigo">Show Choices&#65306;</font><font color="navy">Exit Game, Return to menu </font><font color="gray">(Window, Middle, #1, #2)</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Exit Game</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.goto(Scene_Title);</font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Return to menu</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">End</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('cancel')) || (TouchInput.isTriggered('cancel'))</font><font color="black">    &#9670;</font><font color="blue">Break Loop</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="green">Comment&#65306;Change picture tints</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 175, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 175, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="crimson">Wait&#65306;1 frame</font><font color="black">  &#9670;</font><font color="black">&#65306;</font><font color="blue">Repeat Above</font><font color="black">&#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">for (var i = 5; i &lt; 7+1; i++){ </font><font color="black">&#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.erasePicture(i); }</font></pre></div></div></div></div><div class="paragraph">A lot of the basics stay the same between each iteration, so I'll just go over the main things quickly.</div><div><div id="745301121632830202" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">&#9670;</font><font color="magenta">Change Menu Access&#65306;Disable</font><font color="black">&#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 255, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 200, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font></pre></div></div></div><div class="paragraph">This sets up which picture the menu starts on, and adds all the images to the screen.<br><br>The rest of the event (minus the very last command) is put into a loop, so that it will repeat until the player want to leave the menu.<br></div><div><div id="422628964631365004" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('right')) || (TouchInput.isTriggered('right'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # += 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 8</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('left')) || (TouchInput.isTriggered('left'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # -= 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 4</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 7</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('ok')) || (TouchInput.isTriggered('ok'))</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Item);</font><font color="black">      &#9670;</font><font color="blue">Break Loop</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Save);</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">      &#9670;</font><font color="indigo">Show Choices&#65306;</font><font color="navy">Exit Game, Return to menu </font><font color="gray">(Window, Middle, #1, #2)</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Exit Game</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.goto(Scene_Title);</font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Return to menu</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">End</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('cancel')) || (TouchInput.isTriggered('cancel'))</font><font color="black">    &#9670;</font><font color="blue">Break Loop</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font></pre></div></div></div><div class="paragraph">Some conditional branches to check which buttons are being pushed.&nbsp; If the player hits the right arrow key then the choice moves to the the right, and if the player hits enter then it selects the highlighted menu option.<br><br>The variable is set to not go beyond 5-7 just because those are the picture IDs I choose.&nbsp; There's no deep meaning to it, but it is important to know for the next part of the event:</div><div><div id="912610834531136149" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">  &#9670;</font><font color="green">Comment&#65306;Change picture tints</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 200, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (288,324), (100%,100%), 175, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (576,324), (100%,100%), 175, Normal</font><font color="black">    &#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (864,324), (100%,100%), 255, Normal</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="crimson">Wait&#65306;1 frame</font></pre></div></div></div><div class="paragraph">This is where the event changes the picture that's highlighted.<br><br>The wait is there because otherwise the event tries to run constantly, and lags the whole game.<br></div><div><div id="367625504273980017" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">&#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">for (var i = 5; i &lt; 7+1; i++){ </font><font color="black">&#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.erasePicture(i); }</font></pre></div></div></div><div class="paragraph">After leaving the menu, it's important to erase all the pictures so they're not in the way.&nbsp; Instead of using a bunch of Erase Picture commands, I use this one to get rid of all of them at once.<br><br>So the menu works, but it's not all the exciting... Time to complicate it!<br></div><h2 class="wsite-content-title">Second Ite<u>&#8203;</u>ration - You spin me right 'round baby</h2><div class="paragraph">Instead of having the pictures stay static, it's a lot more interesting to have them move to be centered when they're selected.&nbsp; It doesn't take too much extra work to do it really, just have to set up some move picture commands in the conditional branches.</div><div><div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"><a><img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/menu2_orig.gif" alt="Picture" style="width:auto;max-width:100%"></a><div style="display:block;font-size:90%"></div></div></div><div><div id="434022852884763481" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><button title="Click to show/hide content" onclick="if(document.getElementById('menu2') .style.display=='none') {document.getElementById('menu2') .style.display=''}else{document.getElementById('menu2') .style.display='none'}">Menu 2 Event</button><div id="menu2" style="display:none"><div style="background-color: white;"><pre><font color="black">&#9670;</font><font color="magenta">Change Menu Access&#65306;Disable</font><font color="black">&#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (576,324), (100%,100%), 255, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (864,324), (75%,75%), 200, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#7, menu_exit_icon, Center (288,324), (75%,75%), 200, Normal</font><font color="black">&#9670;</font><font color="blue">Loop</font><font color="black">  &#9670;</font><font color="red">Control Variables&#65306;#0009 namebox icon test = Random #</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('right')) || (TouchInput.isTriggered('right'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # += 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 8</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('left')) || (TouchInput.isTriggered('left'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # -= 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 4</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 7</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('ok')) || (TouchInput.isTriggered('ok'))</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Item);</font><font color="black">      &#9670;</font><font color="blue">Break Loop</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Save);</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">      &#9670;</font><font color="indigo">Show Choices&#65306;</font><font color="navy">Exit Game, Return to menu </font><font color="gray">(Window, Middle, #1, #2)</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Exit Game</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.goto(Scene_Title);</font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Return to menu</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">End</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('cancel')) || (TouchInput.isTriggered('cancel'))</font><font color="black">    &#9670;</font><font color="blue">Break Loop</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="green">Comment&#65306;Change picture tints</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # &ne; namebox icon test</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#5, Center (576,324), (100%,100%), 255, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#6, Center (864,324), (75%,75%), 200, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#7, Center (288,324), (75%,75%), 200, Normal, 30 frames </font><font color="gray">(Wait)</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#5, Center (288,324), (75%,75%), 200, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#6, Center (576,324), (100%,100%), 255, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#7, Center (864,324), (75%,75%), 200, Normal, 30 frames </font><font color="gray">(Wait)</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#5, Center (864,324), (75%,75%), 200, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#6, Center (288,324), (75%,75%), 200, Normal, 30 frames</font><font color="black">      &#9670;</font><font color="purple">Move Picture&#65306;#7, Center (576,324), (100%,100%), 255, Normal, 30 frames </font><font color="gray">(Wait)</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="crimson">Wait&#65306;1 frame</font><font color="black">  &#9670;</font><font color="black">&#65306;</font><font color="blue">Repeat Above</font><font color="black">&#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">for (var i = 5; i &lt; 7+1; i++){ </font><font color="black">&#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.erasePicture(i); }</font></pre></div></div></div></div><div class="paragraph">I did need to add in a fail-safe though, since the menu will try to keep moving the pictures and lock up without them.</div><div><div id="279023196698638889" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">  &#9670;</font><font color="red">Control Variables&#65306;#0009 namebox icon test = Random #</font></pre></div></div></div><div class="paragraph">I find another variable that doesn't need to remain the same during the game, and set it to equal the menu variable at the very start of the loop.&nbsp; That way it will not change even if the player hits left or right until the next loop occurs.</div><div><div id="410576268751580709" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # &ne; namebox icon test</font><font color="black">    &#9670;</font>Conditional branches go here!<font color="black">  &#65306;</font><font color="blue">End</font></pre></div></div></div><div class="paragraph">Then all I need to do is put all the move picture conditional branches in the above conditional branch.&nbsp; It simply checks to see if the player hit the arrow keys, if they did then the variables won't match and the pictures will move and if the variables do match then the event skips it.<br><br>Now the menu looks a lot more interesting, but there are still issues.&nbsp; The pictures are tied to IDs, which means some of them move under other pictures but over the last one and that can look a bit odd.&nbsp; I needed to find a way to alleviate that issue.<br></div><h2 class="wsite-content-title">Third Iteration - Adding some extra spin</h2><div class="paragraph">My awesome coding buddy <a href="https://forums.rpgmakerweb.com/index.php?threads/animation-curves.108388/" target="_blank">Galenmereth released a cool plugin</a>&nbsp;that let me put in some fancy movement to the pictures, so I grabbed it and ran with it.<br><br>Instead of having the pics in a straight line, I set them up in an oval so it looks like they're rotating into place.&nbsp; To make it easier on the player to see, I put in a background to hide the map.<br><br>I also added an Options menu option, since it makes sense to let the player change music volume and such while playing.</div><div><div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"><a><img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/menu3_orig.gif" alt="Picture" style="width:auto;max-width:100%"></a><div style="display:block;font-size:90%"></div></div></div><div><div id="180333097694857107" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><button title="Click to show/hide content" onclick="if(document.getElementById('menu3') .style.display=='none') {document.getElementById('menu3') .style.display=''}else{document.getElementById('menu3') .style.display='none'}">Menu 3 Event</button><div id="menu3" style="display:none"><div style="background-color: white;"><pre><font color="black">&#9670;</font><font color="magenta">Change Menu Access&#65306;Disable</font><font color="black">&#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#1, SF_CyberSpace, Upper Left (0,0), (100%,100%), 255, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#5, menu_item_icon, Center (576,324), (100%,100%), 255, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#6, menu_save_icon, Center (864,250), (75%,75%), 200, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#7, menu_options_icon, Center (576,150), (50%,50%), 150, Normal</font><font color="black">&#9670;</font><font color="purple">Show Picture&#65306;#8, menu_exit_icon, Center (288,250), (75%,75%), 200, Normal</font><font color="black">&#9670;</font><font color="blue">Loop</font><font color="black">  &#9670;</font><font color="red">Control Variables&#65306;#0009 namebox icon test = Random #</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('right')) || (TouchInput.isTriggered('right'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # += 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 9</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 5</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('left')) || (TouchInput.isTriggered('left'))</font><font color="black">    &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # -= 1</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 4</font><font color="black">      &#9670;</font><font color="red">Control Variables&#65306;#0001 Random # = 8</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('ok')) || (TouchInput.isTriggered('ok'))</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 5</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Item);</font><font color="black">      &#9670;</font><font color="blue">Break Loop</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 6</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Save);</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 7</font><font color="black">      &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.push(Scene_Options);</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="blue">If&#65306;Random # = 8</font><font color="black">      &#9670;</font><font color="indigo">Show Choices&#65306;</font><font color="navy">Exit Game, Return to menu </font><font color="gray">(Window, Middle, #1, #2)</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Exit Game</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">SceneManager.goto(Scene_Title);</font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">When </font><font color="navy">Return to menu</font><font color="indigo"> </font><font color="black">        &#9670;</font><font color="black">      &#65306;</font><font color="indigo">End</font><font color="black">      &#9670;</font><font color="black">    &#65306;</font><font color="blue">End</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Script&#65306;(Input.isTriggered('cancel')) || (TouchInput.isTriggered('cancel'))</font><font color="black">    &#9670;</font><font color="blue">Break Loop</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="green">Comment&#65306;Change picture tints</font><font color="black">  &#9670;</font><font color="blue">If&#65306;Random # &ne; namebox icon test</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 5 ) {var left = 8} else {var left = ($gameVariables.value(1) - 1)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(left, 1, 288, 250, 75, 75, 200, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">$gameScreen.movePicture($gameVariables.value(1), 1, 576, 324, 100, 100, 255, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 8 ) {var right = 5} else {var right = ($gameVariables.value(1) + 1)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(right, 1, 864, 250, 75, 75, 200, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 7 ) {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = 5} else if ($gameVariables.value(1) == 8 ) {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = 6} else {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = ($gameVariables.value(1) + 2)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(back, 1, 576, 150, 50, 50, 150, 0, 30);</font><font color="black">    &#9670;</font><font color="black">  &#65306;</font><font color="blue">End</font><font color="black">  &#9670;</font><font color="crimson">Wait&#65306;1 frame</font><font color="black">  &#9670;</font><font color="black">&#65306;</font><font color="blue">Repeat Above</font><font color="black">&#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">for (var i = 1; i &lt; 10+1; i++){ </font><font color="black">&#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.erasePicture(i); }</font></pre></div></div></div></div><div class="paragraph">While setting up the plugin commands for that plugin, I realized that I could condense all the conditional branches into a few script calls if I was smart.</div><div><div id="841550145333133782" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><div style="background-color: white;"><pre><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 5 ) {var left = 8} else {var left = ($gameVariables.value(1) - 1)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(left, 1, 288, 250, 75, 75, 200, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">$gameScreen.movePicture($gameVariables.value(1), 1, 576, 324, 100, 100, 255, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 8 ) {var right = 5} else {var right = ($gameVariables.value(1) + 1)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(right, 1, 864, 250, 75, 75, 200, 0, 30);</font><font color="black">    &#9670;</font><font color="indigo">Plugin Command&#65306;</font><font color="navy">AnimationCurve BackOut</font><font color="black">    &#9670;</font><font color="indigo">Script&#65306;</font><font color="slategray">if ($gameVariables.value(1) == 7 ) {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = 5} else if ($gameVariables.value(1) == 8 ) {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = 6} else {</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">var back = ($gameVariables.value(1) + 2)}</font><font color="black">    &#65306;</font><font color="white">Script</font><font color="indigo">&#65306;</font><font color="slategray">$gameScreen.movePicture(back, 1, 576, 150, 50, 50, 150, 0, 30);</font></pre></div></div></div><div class="paragraph">Using script calls meant that I could check the menu variable and up keywords (like 'left' and 'right') so that the proper picture is moved.&nbsp; It's a lot simpler than having four conditional branches that have all the commands for each layout possibility.<br><br>&#8203;The menu is close to what I wanted now, so the last step is to add in just a few details to make it easier for the player to navigate.<br></div><h2 class="wsite-content-title">Current Iteration&nbsp;</h2><div class="paragraph">Happy with the new spin, all the event needed was a few labels (added with <a href="https://forums.rpgmakerweb.com/index.php?threads/text-window-manager.96436/" target="_blank">kido0617's Window Manager plugin</a>) so that it was clear which picture does what.&nbsp; For now, I've made what I wanted so I can move onto the next thing.</div><div><div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"><a><img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/menufinal_orig.gif" alt="Picture" style="width:auto;max-width:100%"></a><div style="display:block;font-size:90%"></div></div></div><div><div style="height: 20px; overflow: hidden; width: 100%;"></div><hr class="styled-hr" style="width:100%;"><div style="height: 20px; overflow: hidden; width: 100%;"></div></div><div class="paragraph">Now that I'm happy with my abilities to event again, I'm ready to jump back into getting the main mechanics implemented...<br><br>I see a lot of variables in my future.</div>]]></content:encoded></item><item><title><![CDATA[Deciding on a style, & How to Resize Ace tiles]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/deciding-on-a-style-how-to-resize-ace-tiles]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/deciding-on-a-style-how-to-resize-ace-tiles#comments]]></comments><pubDate>Mon, 29 Apr 2019 17:00:00 GMT</pubDate><category><![CDATA[Game Updates]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><category><![CDATA[Tutorial]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/deciding-on-a-style-how-to-resize-ace-tiles</guid><description><![CDATA[While working on the mechanics for my project, I realized that since the game all takes place in an office building that I should go through my immense collection of graphic packs and see if any work fit.&nbsp; And I found one!&nbsp; The DS+ pack has a lot of tiles that are perfect for a modern office, and it's in a nice pixel style too.&nbsp; There is a problem though...The pack is for Ace, not MV.&nbsp; While I could&nbsp;use a plugin to have the tiles all work well, I didn't want the maps to  [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">While working on the mechanics for my project, I realized that since the game all takes place in an office building that I should go through my immense collection of graphic packs and see if any work fit.&nbsp; And I found one!&nbsp; The DS+ pack has a lot of tiles that are perfect for a modern office, and it's in a nice pixel style too.&nbsp; There is a problem though...<br /><br />The pack is for Ace, not MV.&nbsp; While I <em>could&nbsp;</em>use a plugin to have the tiles all work well, I didn't want the maps to all feel really small due to the different between tile size and resolution, so I've decided to resize the tiles to work.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/ds-resize-test_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Resizing all the tiles is still a work in progress</div> </div></div>  <div class="paragraph">Unfortunately Ace tiles can't just be doubled to work in MV.&nbsp; Since I'm sure there are other people who'd like to know a way to do it, here's my method!</div>  <div>  <!--BLOG_SUMMARY_END--></div>  <h2 class="wsite-content-title" style="text-align:center;">Resizing Ace (32x32 pixels) tiles to fit MV (48x48 pixels)</h2>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Step 1: Resize</div> </div></div>  <div class="paragraph">First things to do is resize the tile by 150%, with Nearest Neighbor turned on.&nbsp; That will keep things from blurring, though it does mean we have uneven spots in the tile (compare the top of the paper holder to the bottom and you'll see what I mean).</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Step 2: Remove all double pixels</div> </div></div>  <div class="paragraph">Next, go in there and remove all the points where pixels tried to double during the resize.&nbsp; We don't need everything to be thicker, just larger overall.&nbsp; Don't worry about things looking perfect right now, we'll go in and clean in all up later.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-3_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Step 3: Clean up one part of the tile</div> </div></div>  <div class="paragraph">I'll focus on the loose paper and pen first.&nbsp; The pen is simple enough, it just need to be straightened and thinned down a bit so that it doesn't look like an over-sized kid's marker.&nbsp; The paper is so simple that it barely needs any attention, I just removed on row of pixels so that it wasn't quite so tall.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-4_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Step 4: Clean up rest of tile based on Step 3's finished result</div> </div></div>  <div class="paragraph">That just leaves the paper holder to finish.&nbsp; I don't want it to be giant, since it's just meant to hold a few sheets of paper, so I shrink the width of it to be closer to the paper's size.&nbsp; The shading is already almost perfect, so just a bit of touching up is needed.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-5_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Step 5: Final tweaking and adjustments</div> </div></div>  <div class="paragraph">Last thing I do is look it all over and decide if anything needs tweaked.&nbsp; The paper in the paper holder is too small, I decided, so I made it a pixel taller to look more like the loose paper's size.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tile-resize-gif_orig.gif" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">And that's it!&nbsp; Now we have a tile that doesn't seem too small for MV's default tile size.&nbsp; Of course more complicated tiles, such as plants, will take more work to get looking right, but these basics should get me through all the tiles.</div>  <div class="paragraph">I've only finished upgrading a few tiles, but you can already get an idea of how it will all look at the end.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/tileex-map_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div class="paragraph">With a style settled on and side mechanics roughed out, the next thing I should focus on is getting the main gameplay mechanic, the 'sending heroes to worlds' mechanic, fleshed out from the one-map challenge game's version.</div>]]></content:encoded></item><item><title><![CDATA[A New Game, & An Abuse of Variables]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/a-new-game-an-abuse-of-variables]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/a-new-game-an-abuse-of-variables#comments]]></comments><pubDate>Mon, 22 Apr 2019 19:05:20 GMT</pubDate><category><![CDATA[Eventing Idea]]></category><category><![CDATA[Game Updates]]></category><category><![CDATA[Reincarnation Assistant: 9 to 5]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/a-new-game-an-abuse-of-variables</guid><description><![CDATA[If you check out all the pages on my site, chances are you've noticed a new page under 'Game Making'.Reincarnation Assistant: 9 to 5&nbsp;is the current game I'm working on.&nbsp; It'll be the full version of my short One-Map Challenge game, where Mana is an assistant to a God of Reincarnation who ends up being forced to send people to different worlds that require an Isekai hero to come help.&nbsp; This full version will have a lot more to do than just that, as well as having more than two char [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">If you check out all the pages on my site, chances are you've noticed a new page under 'Game Making'.<br /><br /><strong><em>Reincarnation Assistant: 9 to 5</em></strong>&nbsp;is the current game I'm working on.&nbsp; It'll be the full version of my short One-Map Challenge game, where Mana is an assistant to a God of Reincarnation who ends up being forced to send people to different worlds that require an Isekai hero to come help.&nbsp; This full version will have a lot more to do than just that, as well as having more than two characters.<br /><br />The fact that there will be more than two characters meant that I needed to find a good way to keep track of all their names and friendship statuses.&nbsp; While I could just write it out for each message and use a ton of conditional branches, I decided to find a cleaner way to do it: variables.</div>  <div>  <!--BLOG_SUMMARY_END--></div>  <div class="paragraph">First, some background as to what I even want.&nbsp; I'm using some of <a href="http://yanfly.moe/news/" target="_blank">Yanfly's plugins</a>&nbsp;to adjust the message size and add a name box, but I decided I also wanted to show an icon in the name box so that players can easily tell what the characters thinks of Mana (who's the main character).&nbsp; That's easy enough, thanks to Yanfly's plugin I can just stick this code into the message:</div>  <blockquote>&#8203;\n&lt;God of Reincarnation \i[97]&gt;</blockquote>  <div class="paragraph">And it'll make the name box appear like this:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/message1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">But the problem occurs when I decided that I wanted to be able to change the name of the characters and the icon image.&nbsp; If I continued doing it the way above, then I'll need to have a conditional branch to check what exactly is supposed to be displayed... And honestly that's way too much work to do and means there's so many chances of myself messing up (Dog of Reincarnation has already appeared in one name box, and I'm sure there are much worse spelling mistakes possible).<br /><br />I started by using two variables, one for the name and one for the icon number.&nbsp; It turns out that you can stick a variable inside the icon control character, which makes life so much easier~</div>  <blockquote><span>&#8203;\n&lt;\v[8] \i[\v[9]]&gt;</span></blockquote>  <div class="paragraph">That means that instead of having to write out the name box and have conditional branches to make sure the right one is shown each time, I can just change the variables to have the right things show!<br /><br />So I added those to my event, like so:<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/event1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">Which resulted in these options, depending on which choice was selected:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:0px;padding-bottom:0px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/message2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:0px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/message3_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">Perfect!<br /><br />&#8203;But I decided to make life even easier on myself, and grabbed Yanfly's message macro plugin so that I didn't have to remember which variables are for which characters.&nbsp; So now the name box info was all stowed in an easy to remember line:</div>  <blockquote>\m[re-god]</blockquote>  <div class="paragraph">While two variables are required for this method, I'm sure with a bit more work I could get it down to just one by using an array in the variable.&nbsp; But for now, I can safely move forward with roughing out mechanics and cutscenes without needing to worry about making a mistake in a name box while writing things out.<br /></div>  <div><div style="height: 0px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div class="paragraph"><span>I know this is a bit different than my normal resource blog posts, but&nbsp;</span>&#8203;I really want to share more about my personal game making methods so I thought a weekly(?) post where I talk about an issue I had while developing and how I found a way to work around it.&nbsp;<br /><br />&#8203;Hopefully some of y'all will find these useful in solving some of your own problems, or at least interesting to see how I over-complicate my dev life.</div>]]></content:encoded></item><item><title><![CDATA[IGMC 2018: Ready, Steady, Go!!!]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/igmc-2018-ready-steady-go]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/igmc-2018-ready-steady-go#comments]]></comments><pubDate>Thu, 01 Nov 2018 17:17:58 GMT</pubDate><category><![CDATA[IGMC2018]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/igmc-2018-ready-steady-go</guid><description><![CDATA[The IGMC (Indie Game Making Contest) started this week, and I decided to take part!&nbsp; I'm working with my team from last year's contest, and we plan on making an even better game than last time.What does that mean?&nbsp; More mechanics, more gameplay, and more beautiful art!      Art drawn by the incredible Plueschkatze       We decided on a side-scroller style game, focused on exploration and solving puzzles in an overgrown post-apocalyptic world.So far we've evented a few of the basic thin [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">The <a href="https://itch.io/jam/igmc2018" target="_blank">IGMC</a> (Indie Game Making Contest) started this week, and I decided to take part!&nbsp; I'm working with my team from last year's contest, and we plan on making an even better game than last time.<br /><br />What does that mean?&nbsp; More mechanics, more gameplay, and more beautiful art!<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/q5azg58_orig.jpg" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Art drawn by the incredible Plueschkatze</div> </div></div>  <div>  <!--BLOG_SUMMARY_END--></div>  <div class="paragraph">We decided on a side-scroller style game, focused on exploration and solving puzzles in an overgrown post-apocalyptic world.<br /><br />So far we've evented a few of the basic things we'll need, like an updating journal and a backpack to show all the items the player has collected (if you'd like to see an example of the prototype backpack in action <a href="https://drive.google.com/file/d/1QJUTue8o_vc-EkfZcvwxwrgHo5-06c-W/view" target="_blank">click here</a>&nbsp;since my site seems to dislike videos).&nbsp; It's all evented, so this contest will be a good chance for all of us to stretch our eventing skills.<br /><br />Story is currently our weakest thing.&nbsp; We know that we want the main character to be searching for their sibling, but we still haven't decided on the main reason why.&nbsp; Hopefully we'll figure out something by next week, or else it will be tough to get the dialogue written.<br /><br />It's still the start of the contest, but I'm happy with the progress made so far.&nbsp; Still have a lot to do, though!<br /><br />&#8203;Happy game making!</div>]]></content:encoded></item><item><title><![CDATA[Evented Place-able Crafting System]]></title><link><![CDATA[https://www.hiddenone-sprites.com/game-making/evented-place-able-crafting-system]]></link><comments><![CDATA[https://www.hiddenone-sprites.com/game-making/evented-place-able-crafting-system#comments]]></comments><pubDate>Wed, 23 Aug 2017 19:44:32 GMT</pubDate><category><![CDATA[Tutorial]]></category><guid isPermaLink="false">https://www.hiddenone-sprites.com/game-making/evented-place-able-crafting-system</guid><description><![CDATA[For my game I wanted a crafting system that was more than just an option in the menu. &nbsp;I wanted the player to be able to set down ingredients onto a table and then try to craft something with it. &nbsp;But there wasn't a good way to do that.&#8203;Until now.      Harold can now follow his dream to become a master chef! (Click to download the demo project)   What this system can do:  Let the player choose which ingredients to try to combineLeave ingredients on the table until the player eith [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">For my game I wanted a crafting system that was more than just an option in the menu. &nbsp;I wanted the player to be able to set down ingredients onto a table and then try to craft something with it. &nbsp;But there wasn't a good way to do that.<br /><br />&#8203;Until now.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a href='https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/crafting_demo.zip'> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/intro_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Harold can now follow his dream to become a master chef! (Click to download the demo project)</div> </div></div>  <h2 class="wsite-content-title">What this system <font color="#81c94c">can </font>do:</h2>  <div class="paragraph"><ul><li>Let the player choose which ingredients to try to combine</li><li>Leave ingredients on the table until the player either crafts or picks it back up</li><li>Lets ingredients be added in any order</li><li>Let the player use different methods to craft with the same ingredients to receive different results</li></ul></div>  <h2 class="wsite-content-title">What this system&nbsp;<font color="#da4444">can't&nbsp;</font>do:</h2>  <div class="paragraph"><ul><li>Make recipes for you</li><li>Keep track of which recipes the player has discovered</li><li>Make you a finished game</li></ul><br />Think this crafting is for you? &nbsp;Then read more to see how it's done.</div>  <div>  <!--BLOG_SUMMARY_END--></div>  <h2 class="wsite-content-title">Step 1: Decision Time</h2>  <div class="paragraph">Possibly the most important step and definitely the first thing to decide before getting things set up: just what do you want the player to be able to make?</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/harold-being-dumb_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">No, Harold, no you do not.</div> </div></div>  <div class="paragraph" style="text-align:left;">Since everything is evented for this system, it's best to keep things simple. &nbsp;If you want hundreds of possible recipes, perhaps it's best to go use a crafting plugin instead. &nbsp;You can use this system, but it's a lot more work on the developer to make sure everything works.<br /><br />You don't need to know every possible recipe, but it's a good to have a general idea of what you'll be able to make.<br /><br />For this tutorial I've decided that there will be 3 ingredients and 2 methods of cooking that will let Harold make 4 cooked dishes.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/what-we-can-make_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">That's much more manageable, Harold, thank you.</div> </div></div>  <div class="paragraph">Now that we know what we'll be making, it's time to decide how many possible ingredient spots we want the player to have. &nbsp;If you've already come up with all of your recipes, then it should be the maximum number of ingredients used. &nbsp;If you haven't decided on those, then consider with sticking with only 3 or 4. &nbsp;The more spots you have the more variables you'll need to use, and the harder it will be to keep track of all of your recipes, so try to keep it under control.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/open-spots_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Simple recipes don't need a lot of spots, 3 is good.</div> </div></div>  <h2 class="wsite-content-title">Step 2: Set up Your Variables and Items</h2>  <div class="paragraph">With the big decision out of the way, it's time to start setting things up. &nbsp;Let's start with the variables we'll need. &nbsp;Each ingredient spot needs its own variable to keep track of what ingredient was added (labelled for easy reference). &nbsp;We also need a variable that we'll use to store and compare the ingredients to later.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/variables_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><br />Next, let's get our items taken care of. &nbsp;Harold's already decided what ingredients and cooked foods we'll need, so we just need to stick them into the database.<br /><br />Since there are a few item types to choose from, decide whether or not you want the player to be able to see what ingredients they have. &nbsp;If you want them to be able to see them, choose either 'regular item' or 'key item', and if you don't want the player to be able see them pick 'hidden item A' or 'hidden item B'. &nbsp;There isn't a wrong choice for this, but make sure that all ingredients have the same item type (since we'll be using the select item event command later).<br /><br />For this tutorial we'll have both the ingredients and cooked foods be 'regular items'.&nbsp;<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/items_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">If you think you're going to add in more ingredients later, leave some spots open in the item list. &nbsp;It'll make life a lot easier, because once you start making recipes you shouldn't change the locations of the items in the database list.</div>  <h2 class="wsite-content-title">Step 3: Create the Ingredient Events</h2>  <div class="paragraph">Now it's time to start the actual eventing! &nbsp;We'll start with Ingredient #1's spot. &nbsp;The first command we add is 'select item', with the variable set to 'Ingredient #1 ID' and the item type set to 'regular'. &nbsp;This lets the player choose what item to put down onto the table.<br /><br />Next are some conditional branches that check what the variable we just set equals and removes the proper item from the player's inventory. &nbsp;We don't want the player to be able to keep putting down infinite items, now do we?<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/ingredient-step-1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Nice and simple, but it's not much to look at, is it?</div> </div></div>  <div class="paragraph">Of course, there are some issues with leaving the event like this. &nbsp;The player can add items, but can't pick them back up! &nbsp;So we need to include some more event pages that will both change how the spot looks and let's the player pick the item back up.<br /><br />One event page for each possible ingredient (remember when we talked about keeping things simple? &nbsp;The limit to event pages is one of the reasons to do that), with it's condition set to the corresponding variable. &nbsp;Interacting with the page will give the player back the item, and reset the variable to 0, so that the player can put down another ingredient if they want.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/ingredient-step-2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">That's totally a box of fish, not clams.  They're just clam-shaped fishes.</div> </div></div>  <div class="paragraph">Now the event's ready to use! &nbsp;Unless you've done what did in this tutorial and made both the ingredients and cooked foods 'regular items'. &nbsp;Doing that means that the player can choose to put done a cooked dish, and totally mess up the recipe!<br /><br />To prevent that, we'll include another conditional branch that checks if the variable is larger than the highest ingredient ID that tells the player they can't add that and resets the variable back to 0. &nbsp;Reseting the variable is super important, since if we don't do that then the recipe will fail later!</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/ingredient-step-3_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Now that's what I'm talkin' about!</div> </div></div>  <div class="paragraph">I added one final page to the event that has a variable &gt;= 4 condition and doesn't have a graphic, so that if the player does try to add something they shouldn't then there won't be any flash of an ingredient appearing.<br /><br />With Ingredient #1's event finished, we can copy and paste it to make the other two! &nbsp;We just have to make sure to change every spot where a variable is mentioned to the one that fits that event (so Ingredient #2's variables should all be 'Ingredient #2 ID').<br /><br />There is a way to remove the correct item with only one conditional branch if you use a script call:<br /><br /><font color="#d5d5d5">$gameParty.gainItem($dataItems[$gameVariables.value(3)], -1);</font><br /><br />It takes away one of whatever item the player selected. &nbsp;Check out Ingredient #3's event in the demo to see it in action!</div>  <h2 class="wsite-content-title">Step 4: Creating the Crafting Event</h2>  <div class="paragraph">With the ingredient spots finished, the only missing piece is the actual crafting event. &nbsp;The first and most import part of the event is this script call:<br /><br /><font color="#d5d5d5">var array = [$gameVariables.value(1), $gameVariables.value(2), $gameVariables.value(3)]<br />&#8203;array = array.sort(function(a, b) {<br />return a - b;<br />});<br />$gameVariables.setValue(4, array);</font><br /><br />Make sense to you? &nbsp;If it does, then you're better at javascript than I am. &nbsp;If it doesn't make sense, let's look at each part separately.<br /><br /><span style="color:rgb(213, 213, 213)">var array = [$gameVariables.value(1), $gameVariables.value(2), $gameVariables.value(3)]</span><br />This part is what takes our 3 ingredient variables and puts them all in an array as a single list. &nbsp;Say the player put Seaweed in spot #1, Fish in spot #2, and Rice in spot #3, that would make variable #1 equal 3, variable #2 equal 1, and variable #3 equal 2. &nbsp;This scriptcall takes those numbers and puts them into an array like so: [3,1,2].<br /><br /><span style="color:rgb(213, 213, 213)">&#8203;array = array.sort(function(a, b) {</span><br /><span style="color:rgb(213, 213, 213)">return a - b;</span><br /><span style="color:rgb(213, 213, 213)">});</span><br />This is where the real magic happens. &nbsp;It takes the array we just made and organizes it into numerical order, so if our array is run through this it becomes [1,2,3]! &nbsp;This makes it amazingly easy to compare to recipes now, since we only need the recipes to be in numerical order as well.<br /><br /><span style="color:rgb(213, 213, 213)">$gameVariables.setValue(4, array);</span><br />This last part takes our sorted array and puts it into our combined ingredient variable. &nbsp;And now it's ready to be compared to the possible recipes.<br /><br />Now that we sort of understand the scriptcall, we can put it into the event along with some conditional branches to compare the player's combined ingredients with the recipes we made. &nbsp;We're using another script call, this time checking to see if our variable matches a recipe (the recipe is presented as another array).<br /><br /><font color="#d5d5d5">$gameVariables.value(4).equals([0,0,1])</font><br /><br />So in this example it checks to see if the player added just one Fish to any of the spots. &nbsp;If they did, then it rewards them with a Roasted Fish. &nbsp;And that's it! &nbsp;You've just evented a crafting system!</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:5px;padding-bottom:10px;margin-left:0px;margin-right:10px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/cooking-step-1_2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">The simplest layout for the event, it just checks for a match and gives the player their reward.</div> </div></div>  <div class="paragraph">Of course, there are a few issues with leaving it like that. &nbsp;First off, the ingredient variables are never reset, so the player could just keep clicking the event and receiving Roast Fish.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/harold-is-dumb_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">That's because you're not a developer who's trying to make things balanced, Harold.</div> </div></div>  <div class="paragraph">So let's add a reset for those ingredient variables. &nbsp;There are two places you could put it, depending on whether of not you want the player to be able to retry with the same ingredients or not. &nbsp;If you put it above the conditional branches, then the items will be taken away, as if the player ruined them by failing. &nbsp;If you put it inside each of the conditional branches, then the player will be able to go pick the items back up and try something new. &nbsp;Do whichever one you want.<br /><br />We've also added some comments from Harold, so that the player is informed about what they made. &nbsp;At the very end of the event is the failure message, which tells the player that the combination they tried just didn't work. &nbsp;To make sure that that message doesn't accidentally play if the player is successful, we put an 'exit event processing' into each conditional branch, so that the event stops running once it's found a successful match.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/cooking-step-2_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Now we're cooking!  Literally!</div> </div></div>  <div class="paragraph">Once you've added all the recipes you want to include, you can truly call your crafting system completely functional!</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/harold-is-impatient_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Yes you can!  There's just one more step.</div> </div></div>  <h2 class="wsite-content-title">Step 5: Testing and Celebrating</h2>  <div class="paragraph">With all our events finished, we just need to test everything. &nbsp;Time to try adding all of your items to see if any sneak past, and to make sure that all of your recipes work. &nbsp;Double and triple check that you're using the right variables in the right spots (it's easy to forget to change one conditional event, and that can cause everything to break). &nbsp;Once you've tested things, then you can celebrate your success!<br /><br />If you'd like to take a look at how all the events work together, go ahead and download the demo project:&nbsp;<a href="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/crafting_demo.zip">crafting_demo.zip</a><br /><br />And that's it! &nbsp;The more ingredients and recipes you add, the more complicated this system can get, so start simply to get the hang of it. &nbsp;Good luck with your game making!</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a> <img src="https://www.hiddenone-sprites.com/uploads/7/1/8/7/71878507/harold-isn-t-so-bad_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%">Thanks for taking the time to read all this!</div> </div></div>]]></content:encoded></item></channel></rss>