<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matthew Parke</title>
    <description>The latest articles on DEV Community by Matthew Parke (@matt_parke).</description>
    <link>https://dev.to/matt_parke</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51815%2F6e817a0d-deb0-42f9-90ad-12021b748cf0.png</url>
      <title>DEV Community: Matthew Parke</title>
      <link>https://dev.to/matt_parke</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/matt_parke"/>
    <language>en</language>
    <item>
      <title>Battle Engine Devlog #3 - Turn Based Combat</title>
      <dc:creator>Matthew Parke</dc:creator>
      <pubDate>Tue, 13 Aug 2019 14:36:35 +0000</pubDate>
      <link>https://dev.to/matt_parke/battle-engine-devlog-3-turn-based-combat-35i3</link>
      <guid>https://dev.to/matt_parke/battle-engine-devlog-3-turn-based-combat-35i3</guid>
      <description>&lt;p&gt;Now that we're adventuring, the next core part of Battle Engine is searching a zone for a monster to fight. You and your friends can then take turns using skills to defeat the monster that spawns.&lt;/p&gt;

&lt;p&gt;When thinking about how combat would play out, how people would interact with a monster when it spawns, a turn-based flow made the most sense. Here are some of the questions that went into the decision for turn-based:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how will characters be allowed to attack the monster?&lt;/li&gt;
&lt;li&gt;how do we prevent spamming commands in a text channel?&lt;/li&gt;
&lt;li&gt;how does everyone get a turn to act in the group?&lt;/li&gt;
&lt;li&gt;how do we pace the monster's response to being attacked?&lt;/li&gt;
&lt;li&gt;does the monster attack everyone or one person at a time?&lt;/li&gt;
&lt;li&gt;does the monster wait until everyone is done attacking or react to the player characters?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each character gets a turn to use a skill while in combat, and in-between character turns, the monster gets a turn to react.&lt;/p&gt;

&lt;p&gt;To start a combat with your party:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng fight
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A monster will spawn and you're now in combat!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6qzmhmooxjb3cuf3yfxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6qzmhmooxjb3cuf3yfxc.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up, we can &lt;em&gt;use&lt;/em&gt; a skill, by naming the slug we want to use. For starters, the primary attack skill all novice characters have is a good ole' punch.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng use punch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3ule6nt676yae8an7hlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3ule6nt676yae8an7hlp.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ouch! Looks like the wild boar fought back with a head butt skill. Every attack calculates the damage done based on a min/max damage range for the chosen skill, and responds with the remaining HP.&lt;/p&gt;

&lt;p&gt;A few more punches, and we can defeat the wild boar!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvo5wr6rv5gzz0xmypkw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvo5wr6rv5gzz0xmypkw3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of combat, win or lose, a summary will show. If the result was a win, the summary includes some assigned XP for all members of the party. If you lose however, your character will become incapacitated and you will need to return home before fighting again. As of writing it's unlikely that you will lose a combat, since skill additions and skill effect interactions are still in early stages.&lt;/p&gt;

&lt;p&gt;That's all for now, come say hi to us on discord! &lt;a href="https://discord.gg/cG2ReFR" rel="noopener noreferrer"&gt;Join Battle Engine Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to help out or report a bug? check out active issues and contribute to &lt;a href="https://gitlab.com/kamajigames/battle-engine" rel="noopener noreferrer"&gt;Battle Engine on GitLab&lt;/a&gt;. All skillsets and levels of experience welcome, whether it be content writing, art, development, or just ideas!&lt;/p&gt;

</description>
      <category>discord</category>
      <category>gamedev</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Battle Engine Devlog #2 - Adventure Time</title>
      <dc:creator>Matthew Parke</dc:creator>
      <pubDate>Wed, 07 Aug 2019 14:18:08 +0000</pubDate>
      <link>https://dev.to/kamajigames/battle-engine-devlog-2-adventure-time-21hh</link>
      <guid>https://dev.to/kamajigames/battle-engine-devlog-2-adventure-time-21hh</guid>
      <description>&lt;p&gt;Welcome back to the Battle Engine devlog! I'd like to show off the next major technical hurdle and core mechanic of &lt;em&gt;beng&lt;/em&gt;, starting an adventure.&lt;/p&gt;

&lt;p&gt;We had to decide how an adventure is started, where it's started, and how it's maintained. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in a group DM started by beng?&lt;/li&gt;
&lt;li&gt;in a text channel created by beng?&lt;/li&gt;
&lt;li&gt;in a pre-defined channel created by server admins?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We landed on pre-defined channels intended for adventure use for now, as it was the easiest to setup and clearly define. You can enter one of these pre-defined rooms on the server:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nWsjdt0_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qmb2j7ot9wjrwpnvio1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nWsjdt0_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qmb2j7ot9wjrwpnvio1f.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once in a room, simply ask beng to start an adventure. If there isn't already an active adventure in this channel, a new session will be created.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng adventure
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ggqQ9khj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/eath5645vq0qxlri2okp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ggqQ9khj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/eath5645vq0qxlri2okp.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you're adventuring, you can decide where you want to travel. We figured we would define different locations(zones) for variety. As of writing, one starter zone has been defined, the Crescent Woods!&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng travel woods
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N5r6E8HN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/675cci1z8vvdreo47z0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N5r6E8HN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/675cci1z8vvdreo47z0g.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a good time to stop and mention &lt;em&gt;slug&lt;/em&gt;(s), as "woods" is the slug for Crescent Woods. All designed information in Battle Engine will necessarily have a consistent identifier to be used via text to interact with that thing. Yes, slugs &lt;em&gt;can&lt;/em&gt; be changed, but it is unlikely as we will want to maintain consistency, backwards compatibility.&lt;/p&gt;

&lt;p&gt;The last, and possibly most exciting part of starting an adventure is inviting your friends. We wanted the best of two worlds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interacting with an adventure as a group of friends&lt;/li&gt;
&lt;li&gt;allowing other people to watch, and comment on the adventure without necessarily being engaged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To accomplish both of these goals, the party leader ( the person who starts the adventure ), can invite other users in the discord by name.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng invite @Blaschko#2026
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now we're ready to party! Up next time is the basics of turn based combat.&lt;/p&gt;

&lt;p&gt;Come say hi to us on discord! &lt;a href="https://discord.gg/cG2ReFR"&gt;Join Battle Engine Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to help out or report a bug? check out active issues and contribute to &lt;a href="https://gitlab.com/kamajigames/battle-engine"&gt;Battle Engine on GitLab&lt;/a&gt;. All skillsets and levels of experience welcome, whether it be content writing, art, development, or just ideas!&lt;/p&gt;

</description>
      <category>discord</category>
      <category>gamedev</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Battle Engine Devlog #1 - Introduction</title>
      <dc:creator>Matthew Parke</dc:creator>
      <pubDate>Fri, 02 Aug 2019 14:41:08 +0000</pubDate>
      <link>https://dev.to/kamajigames/battle-engine-devlog-1-introduction-9i4</link>
      <guid>https://dev.to/kamajigames/battle-engine-devlog-1-introduction-9i4</guid>
      <description>&lt;p&gt;In this first devlog post, I'd like to introduce Battle Engine, &lt;em&gt;beng&lt;/em&gt; for short, an adventure game discord bot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;beng&lt;/em&gt; is based on a game from a long time ago, revived to bring back a text-based, rogue-like dungeon crawler you can play with your friends.&lt;/p&gt;

&lt;p&gt;Setting up the game, everyone needs a user and a character,&lt;br&gt;
which you can create with the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng create
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You'll then receive a DM from beng asking what you'd like to name your character.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy3k35w5hlt7y3yl9wnkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy3k35w5hlt7y3yl9wnkx.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Providing your desired character name will create a user and character.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8wg5mhoch2aflr7n2tqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8wg5mhoch2aflr7n2tqz.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To check user status,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng user-info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0r2d2jnva9fxgfy5o0lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0r2d2jnva9fxgfy5o0lv.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To check character status,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fham0s4g78xo7xcjmx7vl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fham0s4g78xo7xcjmx7vl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next it's also possible to look at the complete list available commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.beng help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Next devlog, I'll walkthrough starting an adventure and inviting your friends.&lt;/p&gt;

&lt;p&gt;Battle Engine is brought to you by creators Jeff Secord (blaschko) and Matt Parke (munkymachine).&lt;/p&gt;

&lt;p&gt;Come say hi to us on discord! &lt;a href="https://discord.gg/cG2ReFR" rel="noopener noreferrer"&gt;Join Battle Engine Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to help out or report a bug? check out active issues and contribute to &lt;a href="https://gitlab.com/kamajigames/battle-engine" rel="noopener noreferrer"&gt;Battle Engine on GitLab&lt;/a&gt;. All skillsets and levels of experience welcome, whether it be content writing, art, development, or just ideas!&lt;/p&gt;

</description>
      <category>discord</category>
      <category>gamedev</category>
      <category>javascript</category>
      <category>node</category>
    </item>
  </channel>
</rss>
