<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sparkful Studios]]></title><description><![CDATA[Sparkful Studios]]></description><link>https://www.sparkfulstudios.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1637955288354/8f-xJiEQj.png</url><title>Sparkful Studios</title><link>https://www.sparkfulstudios.com</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 16:47:39 GMT</lastBuildDate><atom:link href="https://www.sparkfulstudios.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Echolite - Update #17 - All Things Machines! - Part 3]]></title><description><![CDATA[It’s always a great day when a new Echolite devlog drops! To date, the most viewed devlogs on this blog are the 2-part updates for adding machinery to the game. This included an ore machine and hatch drill to harvest specific resource tiles within th...]]></description><link>https://www.sparkfulstudios.com/echolite-update-17-all-things-machines-part-3</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-17-all-things-machines-part-3</guid><category><![CDATA[Godot]]></category><category><![CDATA[development]]></category><category><![CDATA[coding]]></category><category><![CDATA[creativity]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 22 Aug 2022 20:17:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661285365814/pB9udl_Qz.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It’s always a great day when a new Echolite devlog drops! To date, the most viewed devlogs on this blog are the 2-part updates for adding machinery to the game. This included an ore machine and hatch drill to harvest specific resource tiles within the first “ring.” In addition, a huge upgrade system was baked into these machines that allow the player to customize resource production as they progress.</p>
<p>With these larger hurdles already tackled, it’s an exciting time to finally introduce two new resource-harvesting machines! Given the extra time, I was able to put more effort into their animations, which was a challenging yet rewarding experience for my non-artistic self.</p>
<p>Let’s check them out!</p>
<hr />
<p><strong>Suction Pump</strong></p>
<p>I always wanted to have some kind of “pump” machine in the game, as I really felt the motion could bring some life to the environment. My approach to the design was quite different from other machines though, as I started with the animation first.</p>
<center><iframe src="https://giphy.com/embed/o7NxBxLa4FpmDyIf1q" width="343" height="480" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/transparent-o7NxBxLa4FpmDyIf1q">via GIPHY</a></p></center>

<p>As shown above, I messed around with making a wireframe of the pump sequence. I envisioned a bellow-esque “squash,” kind of like an accordion. This would allow me to use identical plate sprites on top of one another for easier shaping later on.</p>
<p>The biggest challenge was making the actual squash. My initial version simply had horizontal lines moving up and down, one after another. While this collapsed and expanded appropriately, it didn’t really give a feeling of pressure by the time it was fully collapsed. </p>
<p>My solution was to move the corner sprites up a pixel initially, and then transition to a straight line a frame later. This provided a nice curve as seen in the wireframe.</p>
<p>To shape and color the final machine, I had to consider what resource tile this would match up with. The Suction Pump best suited this acid/sap tile in the second ring, so I opted for a more green/blue color palette.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661285511526/3NY7xodYB.png" alt="image.png" /></center>

<p>This did spawn an interesting design option - as the machine is dealing with a liquid-esque tile, why couldn’t it also work on larger bodies such as the water pools and tar lakes?</p>
<p>I took out the legs in the original design and made it more rounded so it appears to float on the tile. This officially makes the Suction Pump the first machine to operate on multiple resource tiles, which allows it to feel more valuable to the player. Here is the final design as it appears in-game:</p>
<center><iframe src="https://giphy.com/embed/qNHUnSfmMImYZcExli" width="480" height="373" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/qNHUnSfmMImYZcExli">via GIPHY</a></p></center>

<hr />
<p><strong>Robust Scraper</strong></p>
<p>Sticking to the second ring, the other resource tile needing a machine is this interesting “dusty streaks” tile (unofficial name):</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661286004216/o3HtiKeM3.png" alt="image.png" /></center>

<p>This required some extended thinking, as the tile has a similar premise to the debris/coarse tile in the first tile. For that tile, we developed a hatch drill which was breaking up the sediments. My first thought was to have a “smashing” machine that would pound the tile. This could still work for a future machine, but when trying it out in this tile, it didn’t feel very satisfying. I still have an initial draft of that idea as shown below, which would have been a multi-tiled sized machine:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661285074048/12PfH5R1q.png" alt="image.png" /></center>

<p>I decided to change the central mechanism so that it still smashed down, but had teeth that would churn up the tile. It almost feels like a progression of the hatch drill while also feeling unique. </p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661285120185/PtdVoKDk5.png" alt="image.png" /></center>

<p>The animation is where it really shined however! The basic idea was to move down, rotate, and back up. This is still present in the final design as seen here:</p>
<center><iframe src="https://giphy.com/embed/K6pNiWXR1KsKdhWBkB" width="480" height="426" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/K6pNiWXR1KsKdhWBkB">via GIPHY</a></p></center>

<p>Notice the beginning pause? Yeah, that was a mistake with the ordering and duplication of frames. I must admit it’s the best mistake I’ve ever made! As it turns out, I accidentally leaned into a common animation principle - I think it’s anticipation? As I’ve said, I’m not a professional artist, but that’s what makes this process even more exciting!</p>
<hr />
<p><strong>What’s Next?</strong></p>
<p>New machines, wooooo! One thing that may have been on your mind though, is that we’ve seen resource gathering machines before. They are certainly a joy to create, but I’d like to push forward with machinery beyond collecting resources! </p>
<p>How do we push forward? With the help of conveyor belts AND mine carts! It might just be the next best thing after sliced bread (or fairly close at least).</p>
<p>Thank you as always for the support my fellow Sparks! </p>
]]></content:encoded></item><item><title><![CDATA[The Pros and Cons of Game Dev Tutorials]]></title><description><![CDATA[Game development, especially for indies, is an ongoing journey of learning, experimentation, and creativity. When starting out, one of the most popular types of resources that developers naturally gravitate towards is tutorials. With guided instructi...]]></description><link>https://www.sparkfulstudios.com/the-pros-and-cons-of-game-dev-tutorials</link><guid isPermaLink="true">https://www.sparkfulstudios.com/the-pros-and-cons-of-game-dev-tutorials</guid><category><![CDATA[Game Development]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Design]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 16 Aug 2022 00:00:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/7ukf-r-Oh-k/upload/v1660607915237/nEzbPotGs.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Game development, especially for indies, is an ongoing journey of learning, experimentation, and creativity. When starting out, one of the most popular types of resources that developers naturally gravitate towards is tutorials. With guided instructions, all necessary assets, and a specific end result, tutorials are an easy way to dive into game development. Are they truly the perfect method for learning though?</p>
<p>Let’s discuss!</p>
<hr />
<p><strong>Pro #1</strong></p>
<p>Tutorials provide a visual component to learning game development that documentation and other written tutorials can not always capture. Seeing how another developer navigates the space of a game engine and explaining how tools can be leveraged can be incredibly useful at an early stage. </p>
<p>This will certainly show up on every other point too, but this pro can largely depend on the tutorial. Finding videos where code, assets, etc… are fully explained while being implemented are extremely beneficial. If you find yourself walking through a tutorial where the developer simply asks “to paste in this simple code,” consider typing it yourself and breaking down each line.</p>
<p>Seeing how each bit of code is structured or how assets are imported and tweaked will help build those habits. This makes it easier to move beyond tutorials at a later point because you have done more of the work on your end.</p>
<hr />
<p><strong>Pro #2</strong></p>
<p>Tutorials provide a workable project that you can easily experiment with. This is super valuable because you can edit values or code directly and see how that changes across the game. You tend to learn more from this as you learn how each piece of the engine interconnects.</p>
<p>For those that are just beginning, I would highly suggest sticking with the tutorial and not copying the full project up front. After each video, take some time to experiment with the newly added features before moving on to the next lesson. As you add more features the complexity easily becomes overwhelming, so going more slowly between steps is easier to manage. It creates a nice moment of reflection to ensure you understand all of the newly working pieces of the game. </p>
<hr />
<p><strong>Pro #3</strong></p>
<p>One issue I often see within game dev communities (and the technology field as a whole), is the struggle to ask the right questions. I see a lot of new developers who innocently ask for help with their project “not working” with no other details given. While many people are willing to help, asking vague questions about a project only seen by one person is not exactly easy to solve. </p>
<p>With tutorials, even though this trap is still possible to fall into, I have found that the comments tend to ask more direct questions. This is because the individuals following along are able to provide line numbers, exact errors, etc… that they know other users have already seen. When they receive detailed responses, it helps reinforce the idea that asking direct questions with detailed steps already taken and info provided yields better support.</p>
<p>Essentially, using tutorials can help shape the way you ask for assistance within the game dev community, making troubleshooting a less painful process.</p>
<hr />
<p><strong>Con #1</strong></p>
<p>It is quite easy to fall into the “tutorial pit” - a place where developers spend more time searching for the perfect tutorial for their game instead of just working on it. Tutorials can provide an excellent launching point for learning game development, but the truth is that there is no tutorial out there that will create your game. If that were the case, it would already be made!</p>
<p>If you find yourself spending too much time searching for a tutorial, consider moving away from that for a bit of time. This is where you get to apply your new skills! Break down the feature or system you want to create into different steps and then search for guidance on the steps that are still confusing.</p>
<p>My best personal example of this was when I made conveyor belts for my game Echolite. There are some scattered videos about making conveyor belts in Godot, but they are not top-down, do not process items the same way, and are difficult to expand upon. At this point, I knew I had to build everything from scratch. I found that looking for smaller tutorials along the way, such as scene instancing, tweens, etc… both saved time and was more rewarding.</p>
<hr />
<p><strong>Con #2</strong></p>
<p>Tutorials provide a working solution, but it may not be the best solution. This point comes down to time as smaller games do not need to be as optimized or compartmentalized. For medium to large scaled games however, tutorials are not equipped with setting up projects that can easily be managed long-term. </p>
<p>One way of navigating this issue is to spend time after completing a tutorial trying to change the approach while still getting the same result. There are so many ways to achieve the same goals with the numerous tools provided through game engines, so finding alternative solutions can help you grow accustomed to tackling complex problems differently.</p>
<p>This helps a ton when expanding your game as you have a more in-depth understanding of the inputs and outputs for each subsystem. The more comments you can add into your project as well, the better!</p>
<hr />
<p><strong>Con #3</strong></p>
<p>Tutorials can set an unrealistic expectation for approaching game development. When you work through a tutorial, you aren’t seeing the many hours of planning, testing, etc… that went into it. This can create the illusion that developers simply open their engine, drop some pre-made assets, copy over some pre-existing code, and they are done. Maybe a developer out there can do this, and uh…the rest of us are jealous!</p>
<p>Part of the tutorial process should be considering how you would approach the system before you see how others do it. For instance, when attempting to build an inventory system, try writing out how you would approach it and then compare the differences. The tutorial may be a cleaner, more obvious solution, but it at least gives you a realistic idea of how game developers should approach problems before solutions.</p>
<hr />
<p><strong>TL;DR</strong></p>
<p>Tutorials work best when you work alongside them. Rather than copying every single step, try attempting the problem beforehand. Then, as you learn more, continue to experiment and reflect so that the information you learn is critically consumed rather than blindly followed. Even though tutorials won’t build your entire game, they can serve as a strong launching point for becoming a smarter game developer.</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #16 - Usable Tools, Revamped Placement]]></title><description><![CDATA[Welcome back fellow Sparks! We have a neat little devlog this week that both brings in the new and revamps the old!
The core gameplay loop is mostly complete at this point, in which development of the game can finally enter an exciting phase. New fea...]]></description><link>https://www.sparkfulstudios.com/echolite-update-16-usable-tools-revamped-placement</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-16-usable-tools-revamped-placement</guid><category><![CDATA[Developer]]></category><category><![CDATA[Godot]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[creativity]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 08 Aug 2022 23:21:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1660000859747/54TKWH_25.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back fellow Sparks! We have a neat little devlog this week that both brings in the new and revamps the old!</p>
<p>The core gameplay loop is mostly complete at this point, in which development of the game can finally enter an exciting phase. New features and subsystems will be added in to provide gameplay depth, in addition to revamping existing systems and jamming in tons of content! As prep work for entering this new phase, this devlog is focusing on building out usable items from the hotbar and redoing how placement is handled.</p>
<hr />
<p><strong>Usable Tools</strong></p>
<p>This isn’t limited to just tools either, but we need some way of using items in the world that go beyond placement. Currently, objects are queried when highlighted in the hotbar to see if they have a placeable scene counterpart that can be instanced. </p>
<center><iframe src="https://giphy.com/embed/wvqzAkkseEicLdLfYx" width="480" height="370" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/wvqzAkkseEicLdLfYx">via GIPHY</a></p></center>

<p>For tools however, we are not placing an actual object (and thus no placeable scene exists). This naturally led me to rewriting the hotbar to query the ItemData.json file I have in place to look up an item’s category. It is the same key/value that the crafting system uses so luckily this did not require any changes to the core data beyond giving each tool its own entry. </p>
<p>Now, when an item is highlighted in the hotbar (either by selecting numbers 1-9 or through mouse scrolling), an item category is queried first and then searches for a function based on what is parsed. From here, custom functions are added to default nodes and instanced as needed. The only difference is that they are not placed visually - just added to the hierarchy for as long as needed to perform the tool’s function.</p>
<p>The only work left is creating a new selection sprite for using tools. With object placement, red corners are used to denote invalid spots, and inversely green signifies valid tile placement. With tools however, I wanted to have a middle level to visually demonstrate that object placement is different from using items. To achieve this, I went with a recolored selector as yellow and added a moving arrow icon to better denote which tile is being targeted by the tool.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660000297389/KpIJkVpU8.png" alt="image.png" /></center>

<p>As a tease for one tool made during testing, here is a neat drill (name pending). Animations will come at a later point, but at least the functionality is there! This tool is meant to mine a special resource from those rock formations throughout the world. I wanted to give these cool world generation features a purpose beyond acting as collision points while trying to navigate. Right now the plan is to make this resource a more exclusive one since it can’t be automatically gathered by machinery, perhaps as a base resource for a group of items like all furniture.</p>
<center><iframe src="https://giphy.com/embed/jpDLAM6CrRAnnBCinF" width="480" height="406" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/jpDLAM6CrRAnnBCinF">via GIPHY</a></p></center>

<p>Similar to the drill, more particles and visual changes are needed to make this mechanic pop, but I am quite proud of how this turned out!</p>
<hr />
<p><strong>Revamped Placement</strong></p>
<p>For context, the placement system came at a point in the game where it needed to be built in order to introduce other features. Some of my favorite devlogs to write are showcasing new objects like machinery because they give so much life to the world. While the system was not rushed when initially developed, I certainly knew that it would need to be extended. Finally, today is that day!</p>
<p>There are numerous tasks I want to address with the placement system, but to stay motivated I will tackle one larger item. If you recall the current machinery options in game - the ore machine and hatch drill - one consistent feature is that they are both one tile in size. This became apparent when adding interiors to the tents in the base camp during the previous devlog. If I want to allow the player to place their own tents that aren’t pre-placed by the game, the current placement system would not cleanly allow that action. While it would place the item, it would only be assigned to one tile and mix up collisions.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659999685816/RSDh6mIPG.png" alt="image.png" /></center>

<p>To address this, I had to tackle two major changes. First, objects need a new JSON file that details placement and setting options outside of the main ItemData.json file. Second, placement needs to correctly scale from these set parameters and take all tiles into account for validity checks.</p>
<p>Addressing the first change, here is how I formatted the new JSON file:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659999799489/22fvCy2ZB.png" alt="image.png" /></center>

<p>You can see from this image that length and width are defined by integers, essentially just measured in tiles. Additionally, the valid tiles are defined for each object that help indicate where an object can be safely placed. Godot currently handles tilemaps with ID’s among other values, such as the first tile of “ore deposit” within my resource Tilemap has an ID of 0. This is why the JSON entries use numbers next to each defined tilemap. For cases where any tile type within a tilemap is allowed, I simply put “All.”</p>
<p>Next up is the second major change, starting with splitting up the selector sprite as previously referenced in the tools section. Each corner marker is now a separate sprite and cleverly uses the same length and width values with a multiple applied to auto-scale around any sized object. </p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659999896054/2JOSmWNrx.png" alt="image.png" /></center>

<p>Finally comes the magical coding logic which parses the new JSON file, scans the selected tiles, and places the object as before. Using the same length and width values, the top left-most tile is queried as the previous implementation did, but now repeats it for each tile. This builds an array of boolean values that highlight which tiles are valid or invalid. Assuming this entire array is valid (and no other objects exist on that tile), the object is placed as expected. The nice aspect of making objects separate saved scenes is that all of their individual logic for operating is handled separately. As long as consistently named functions are available on each object, this new placement system does not require any other rewrites. Here is an example of placing a larger table:</p>
<center><iframe src="https://giphy.com/embed/HnzsPv3wIP5S5UEzqJ" width="480" height="307" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/HnzsPv3wIP5S5UEzqJ">via GIPHY</a></p></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>By far, the highest viewed devlogs involve machines being introduced to the game (and for good reason). With these new changes, some new machines can finally be revealed that are larger and better than ever! I think this next devlog might just blow your mind!</p>
<p>Thank you again for all of the support! It helps keep me motivated and excited, and I can’t wait for the day when this game releases. Pending a Steam page being set up, the best way to support this work right now is simply sharing it around! The more eyes on this project, the better it will turn out!</p>
]]></content:encoded></item><item><title><![CDATA[Embracing The Many Hats Of Game Dev!]]></title><description><![CDATA[To be an indie game developer is to wear many “hats” - that is, there is an endless list of skills needed to plan, develop, promote, support, and more for every game you dream up. On the surface, it doesn’t seem too difficult. Just some art skills, a...]]></description><link>https://www.sparkfulstudios.com/embracing-the-many-hats-of-game-dev</link><guid isPermaLink="true">https://www.sparkfulstudios.com/embracing-the-many-hats-of-game-dev</guid><category><![CDATA[Developer]]></category><category><![CDATA[learning]]></category><category><![CDATA[General Advice]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 01 Aug 2022 15:24:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/_yVRLC75Ma8/upload/v1659540208792/4Qh61XQLm.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>To be an indie game developer is to wear many “hats” - that is, there is an endless list of skills needed to plan, develop, promote, support, and more for every game you dream up. On the surface, it doesn’t seem too difficult. Just some art skills, a bit of code, a touch of audio magic, and ta da! A game is instantly created before your very eyes.</p>
<p>Breaking this down though, we can quickly see how complex this can get. Let’s focus on just art for example (and this is coming from a relatively non-artistic dev).</p>
<p><br /></p>
<p></p><ul>
  <li>Physical
    <ul>
      <li>Choose the right materials</li>
      <li>Have a solid understanding of durability, texture, color, etc…</li>
      <li>Print, mold, etc… in a physical capacity</li>
    </ul>
  </li>
  <li>Digital
    <ul>
      <li>Texturing/UV wrapping</li>
      <li>Color palettes</li>
      <li>Understanding different art styles</li>
      <li>2D, 2.5D, 3D</li>
      <li>Modeling</li>
      <li>Rendering</li>
      <li>Animations/Rigging</li>
      <li>Shaders</li>
      <li>Asset pipelines</li>
      <li>Forms of UI</li>
    </ul>
  </li>
  <li>Other
    <ul>
      <li>Sketch/capture ideas</li>
      <li>Prototyping/boxing</li>
      <li>Concept work</li>
      <li>Marketing materials</li>
      <li>Adjusting shared assets based on use case</li>
    </ul>
  </li>
</ul>
<br /><p></p>
<p>Already we have an extensive list, and there are so many topics I likely left out just because I haven’t encountered them yet. Then going beyond art, there are the many facets of design, programming, sound (ambience, music, sound effects), organization, marketing, effective debugging, documentation, designing custom tools, game packaging/deployment, and so much more!</p>
<p>The point is that in order to be a successful game developer, which is seen as a single job, you are effectively managing the talents of (dare I say) hundreds of jobs. It can be extremely overwhelming, especially when that perfect idea for a game requires nearly all of this knowledge.</p>
<p>This is where I want to offer some advice. Game development should not be a daunting task meant to scare people from creating their dream games. It should be a rewarding journey of learning and adapting your strengths to form games that are unique and special to you!</p>
<p>With this in mind, let’s look at some interesting mindsets you can adopt.</p>
<hr />
<p><strong>Embrace The Outfit Change</strong></p>
<p>Wearing the same hat is usually the go-to move, but you do tend to appreciate it more when you wear other hats and then go back to your favorite one. Plus, it’s easier to not become tired of your outfits when you choose to mix it up each day.</p>
<p>Forgoing this extended analogy for a bit, game development can fall into a similar vein where continuing to focus on the same skills can easily lead to burnout. Personally, art takes longer to do because many of the techniques are unfamiliar, whereas programming is easier for me to approach. It’s still a challenge in both cases as all parts of game development can be a lengthy process, but motivation does tend to be tied to what skills you are most comfortable with.</p>
<p>This is why I suggest “embracing” the other hats of game development. Even though art is challenging for me, sometimes I find that taking a break from a complex coding scenario and just placing some pixels around in Aseprite helps refresh my mind. This is certainly a hidden luxury with game development that seems backwards at a first glance. We are able to set our own schedules, so use this to your advantage by rotating between the different demands of game development. You’ll likely find that you are able to focus better over extended periods of time and remain consistent with making updates to your game.</p>
<hr />
<p><strong>Know Your Favorite Hat</strong></p>
<p>As much as it is important to mix up development, it’s certainly okay to lean more into your strengths! There are lots of games where the gameplay isn’t super streamlined, but it gets a lot of attention based on the visuals. Similarly, games may have “weaker” visuals, but the core gameplay loop is extremely engaging. Even though it’s good to build up the skills you are less comfortable with, part of the charm for your game can come from the strengths you have. </p>
<p>Essentially, it’s important to recognize that not every part of your game will be perfect. Of course, you want your game to be a smooth experience and extremely enjoyable, but the first goal is simply to release it! So when it comes down to time and there’s too many areas to address, consider falling back on your strengths to get the most out of your development cycle. </p>
<p>I strongly address sharing your games while in development for this point alone. As an indie game developer, it can be difficult to know which aspects of development are your strengths or weaknesses. Showing your progress to various people and allowing them to give feedback can help you recognize what you are naturally capable of.</p>
<hr />
<p><strong>Try On Other Hats</strong></p>
<p>As a way of overcoming the many hats needed for game development, I suggest experimenting a bit with the areas you are unfamiliar with before implementing them into your game. One way I recommend doing this is by creating side projects within your preferred engine and messing around with what you are trying to learn. This allows you to avoid the complexities of your actual game and have a safer environment to practice in. </p>
<p>The neat part of this approach is that you can have a bunch of isolated example projects that you can reference at a later point when those skills are needed. This is partly why I recommend the Godot Engine because the node/scene system naturally creates modular components that you can easily adapt between projects. Most engines use this concept though, so you can’t go wrong with any of them!</p>
<p>A good place to start is searching up tutorials. The sad reality is that there aren’t exact tutorials for the game you are looking to build (otherwise, it would already be made). However, finding tutorials that focus more broadly on specific topics can help learn more efficiently. There’s no perfect route when it comes to tutorials, so you may as well just pick the first one that looks intriguing and then adjust from there. For instance, you may find a tutorial such as “Making Good Pixel Art” - it’s vague but it should help point you in the right direction. As you watch this video, terms such as shading, dithering, color palettes, etc… will come up that are completely foreign. This is where you can branch out into other tutorials that focus on those specific categories.</p>
<p>The central point here is that experimentation is a good approach to game development. I would argue that effective learning within this space is a separate skill on its own, but mastering it can greatly help you adjust to the many hats of game development.</p>
<hr />
<p><strong>TL;DR</strong></p>
<p>Game development involves many skills that can quickly become overwhelming. Use this to your advantage by assessing your “game dev mood” for the day to determine what you should focus on. This helps give variety so that you become less bored with your projects (avoid burnout), and keeps the creative juices flowing. Don’t be afraid to experiment with new areas of game development and maintain a solid understanding of your strengths and weaknesses as you continue to learn!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #15 - Crafting Improvements, New Tent Interiors]]></title><description><![CDATA[With the last two devlogs focusing on the main menu, we are finally able to dig back into the “meat” of the game! First up is some improvements to the crafting interface.

Crafting Improvements
The existing crafting system has worked well so far, so ...]]></description><link>https://www.sparkfulstudios.com/echolite-update-15-crafting-improvements-new-tent-interiors</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-15-crafting-improvements-new-tent-interiors</guid><category><![CDATA[development]]></category><category><![CDATA[Godot]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 25 Jul 2022 21:15:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658783575529/ZHqjDwUps.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With the last two devlogs focusing on the main menu, we are finally able to dig back into the “meat” of the game! First up is some improvements to the crafting interface.</p>
<hr />
<p><strong>Crafting Improvements</strong></p>
<p>The existing crafting system has worked well so far, so in this case I do not see an immediate need for a “revamp.” However, there are some nice quality-of-life items I want to implement based on recent testing. With more items being created over time, the catalog of craftable items has exponentially grown. Even though the GUI is currently able to handle tons of items, the act of scrolling through an extended list of recipes really breaks immersion. </p>
<p>This has encouraged me to divide objects into various categories, such as machinery, advanced resources, furniture, etc… As with most devlogs, we start with the assets which I am quite proud of how they turned out! Here is the mockup of the updated interface:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658783001171/O-M97Xh-j.png" alt="CraftingTabs.png" /></center>

<p>In terms of the item data, this requires an easy JSON edit. Going through each item in the ItemData.json file, a new category attribute is added and populated. Finally, the magical code is added in to handle the switches between crafting tabs and refreshing the recipe section accordingly. Everything else still functions as expected. One interesting choice I made in the design was wrapping the crafting tabs in a visibility function that other items can call in the world. This means that a basic crafting bench could purposely only display the crafting GUI with the machinery section available. Here is just one example of the advanced reagents</p>
<p>So in planning out future content, we can now choose different crafting stations that either choose a specific crafting category to target or any mix of them as the player progresses. It’s a neat example of clever game development where I was able to work backwards by taking an arguably “overpowered” all-purpose crafting menu, and spreading out that power to better fit progression. This also gives another aim for players who may want a late game crafting station that can handle all types of items.</p>
<p>Beyond tabs, I also wanted to mess around with basic cursor text displays, most notably with the recipe requirements section while crafting. All of the resources are scaled down to fit the GUI, but this also makes it difficult to see exactly what items are needed. To help players out, I added a new text field that floats above the cursor. Any part of the game can call on a special cursor function to display or hide text. In this case, when the player hovers over a resource in the recipe requirements section, it will now show the name of the item! This will certainly be leveraged more with other subsystems, so I’m glad that it’s being added in now for easier development!</p>
<hr />
<p><strong>New Tent Interiors</strong></p>
<p>Quality of life is great and all, but what about the world? The people? The things that make Echolite more immersive?</p>
<p>I have you covered! This week, the tents that have been sitting in the base camp during most of development finally receive some functionality! Adding interior to tents was a multi-step process, in which I’d like to highlight some of the notable achievements.</p>
<p>First, tent interiors require proper player “teleportation” to reach outside of the established world map. Only the first tent was being leveraged with the first NPC and crafting table for building those features, in which movement was hard-coded. To make this more dynamic, I added logic to the tents to locate which “interior” to connect with, alongside querying that space for the desired start point (i.e. the tent opening/entrance). </p>
<center><iframe src="https://giphy.com/embed/gnnGhghD7XiWskWAQg" width="352" height="480" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/gnnGhghD7XiWskWAQg">via GIPHY</a></p></center>

<p>This naturally goes into the next bit of work, which is establishing how interiors are mapped out. Similar to the liquid pools (water, tar, magma, etc…) that are generated in the world, I decided to use a similar auto-tiling approach with tent flooring. To keep it extra open-ended, I made basic colored tiles and hand-crafted some layouts. The outer rings represent the boundaries, while the other tiles define the shape of the interior and the location of the entrance. Here is an example layout:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658782479121/h9pkeEBMi.png" alt="image.png" /></center>

<p>Going back to player movement then, when the player (out in the world) enters the front portion of a tent, it searches the specific layout mapped to that tent to find the entrance tile. This is turned into a vector point and set as the player’s new position. In advance as well, a flooring tilemap is used and auto-tiled to form the remainder of the tent. Here is that result:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658782693784/Gl2nISrnO.png" alt="image.png" /></center>

<p>These spaces are fairly empty though, leading to many hours of piecing together artwork for starter furniture. I may allow the player to craft these same items in the future, but for now they are solely decorative to fill each interior. Finally, the NPC’s are added into their respective spaces, such as the Librarian, Syvil!</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658782759292/JjV98veCE.png" alt="image.png" /></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>It’s only natural for a game like Echolite to include useable tools! Being in an underground environment with an open-world aesthetic, it simply makes sense. Additionally, we revisit how world generation loads, more specifically the waiting period beforehand and how a loading bar can spice up that experience!</p>
<p>Thank you again everyone for the amazing support!</p>
]]></content:encoded></item><item><title><![CDATA[Help! My Game Dev Posts Aren’t Going Viral!]]></title><description><![CDATA[Welcome Sparks! This week we have a really interesting question from other indie game developers to discuss, and one that’s taken me a while to understand as well.

“Why do none of my game dev posts go viral?”

My hope is that everyone can become mor...]]></description><link>https://www.sparkfulstudios.com/help-my-game-dev-posts-arent-going-viral</link><guid isPermaLink="true">https://www.sparkfulstudios.com/help-my-game-dev-posts-arent-going-viral</guid><category><![CDATA[Game Development]]></category><category><![CDATA[Developer]]></category><category><![CDATA[marketing]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[creativity]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 19 Jul 2022 03:36:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/IrRbSND5EUc/upload/v1658201292805/Cw3mpZzGu.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome Sparks! This week we have a really interesting question from other indie game developers to discuss, and one that’s taken me a while to understand as well.</p>
<blockquote>
<p>“Why do none of my game dev posts go viral?”</p>
</blockquote>
<p>My hope is that everyone can become more confident in the way they share their awesome indie game dev creations with the world!</p>
<p>The more I continue to post content about my own game, the more I’ve noticed the variety in likes, upvotes, etc… between posts. I would imagine that this is a common struggle for all kinds of indie game developers.</p>
<p>As a starting dev who’s pouring all their passion into their projects, seeing that fluctuation can certainly be disheartening. I think we tend to look at the data incorrectly though, or at least fail to see the bigger picture. We need to learn what our metrics actually represent and continue to show our creative visions to the world in confidence!</p>
<p>With this, let’s explore the following items:</p>
<blockquote>
<ol>
<li>Viral Is Just That, Viral</li>
<li>Visibility Is Key</li>
<li>Use Data As Feedback</li>
<li>Leverage Community Culture</li>
<li>Respect The Grind</li>
</ol>
</blockquote>
<hr />
<p><strong>Viral Is Just That, Viral</strong></p>
<p>When starting out, we tend to set these grand expectations for how our game will appeal to the masses. It’s also easy to compare ourselves to other indie game developers who constantly trend with each post they make. What we fail to see here however, is how much time and energy they took just to reach a “baseline” of views. </p>
<p>Let’s say you have a YouTube channel, and you are getting one single view for a video while having  100 subscribers. For another channel, they may get 1000 views and be sitting at 100,000 subscribers! When you compare your single view to 1000 views, of course it’s going to be overwhelming. Overall though (assuming my math skills don’t fail me!), you’re still hitting the same ratio as that bigger channel. With consistency, you can just as easily hit the same amount of subs and views over an extended period of time. </p>
<p>In terms of going viral then, that same channel may have a viral video, but I doubt every single one of their videos is just as successful (unless they’re super good). You have the same chance of getting a viral video - the only factor is the number of attempts they’ve made. The more content you put out, the more likely it is that one of them will catch on with the masses. </p>
<p>Keep in mind that this does not mean quantity &gt; quality. Instead, simply recognize that continuing to share your work will be rewarded over time. It’s just hard to see that in the beginning when those expectations are not instantly met.</p>
<hr />
<p><strong>Visibility Is Key</strong></p>
<p>A lot of so-called “influencers” continue to flock to Tik Tok as the platform grows, and for good reason! The all-mighty “algorithm” tends to push content to more people initially. You could have a post with zero likes and still have 200+ views just from that initial push. If your post catches on and gathers additional views, then good job! If not, that’s totally okay too because that minimum number of views is still insanely good!</p>
<p>As a personal example, I have observed this behavior on the Echolite devlog posts I make on the Godot subreddit. Even though they only receive 1-20 upvotes, the number of people viewing each post is usually around 3,000! For reference, whenever I first post a devlog on this blog for Echolite, it will only get 1-10 views. After linking it as a side comment inside those Reddit posts to cross-promote, the blog posts suddenly skyrocket to 100-150 views. </p>
<p>The lesson here is to focus less on how many “clicks” your posts get, and instead focus on the visibility data. More people are likely seeing and interacting with your content than you likely realize!</p>
<hr />
<p><strong>Use Data As Feedback</strong></p>
<p>When sharing your game dev journey, it’s important to use the performance data of each post you make in order to better inform future posts. For instance, one of my most commented posts on Reddit for Echolite involved a question. This kind of post naturally led people to share their own thoughts because it made them feel valued. In comparing this to my other posts which simply show off a feature, this kind of feedback should push me to use more question-sided narratives with my posts to boost engagement. </p>
<p>Even looking at what communities you post in and the frequency can help show which items resonate the most with your target audience. Consider this - why continue to do the same format for all of your posts if they continue to yield the same limited results? Perhaps the best way to break out of this zone is to mix up the usual formula you use! As long as you approach it in good faith, experimenting with how you share your journey will be positively received.</p>
<hr />
<p><strong>Leverage Community Culture</strong></p>
<p>Every platform you engage with is completely different from one another. They all have their own established rules and cultures that users automatically expect from one another. Part of the reason why game dev posts can fail in these spaces is because they fail to match that culture. It’s worth taking the time to look at other game dev posts on your desired platform to see what performs best. Similarly, looking at the community guidelines for a site and looking at the language being used can help narrow down what content is preferred.</p>
<p>Through this review process, you can tailor your content to specific platforms. I can understand where this can be difficult on a creative front, as basing your marketing from the successful angles of others may not feel “unique.” The trick here is to not copy what others do - instead, be inspired by the posts that do go viral and add your own unique twists that still feel authentic to your own game. </p>
<hr />
<p><strong>Respect The Grind</strong></p>
<p>One of the most common replies I have continued to receive across various platforms has been along the lines of, “Wow it’s week 28 and you are still going strong, nice!” Essentially, users will notice over time the frequency and quality of your game dev posts, which show how dedicated you are to your craft. Of course, make sure to take breaks as needed and understand your limits so you can avoid burnout. I do like this idea of “respecting the grind” though, as being consistent alone can already be rewarding in the long run. People may not engage strongly with your first post, but as they continue to see more they begin to connect with your journey more. It’s both a way of building credibility and allowing people to see how far your projects have come along so they feel like they are also a part of the creative process.</p>
<hr />
<p><strong>TL;DR</strong></p>
<p>If your game dev posts on different platforms are not being engaged with as much as you expected, do not worry! Sharing your creative journey is always a slow process when starting out, but it does pick up the more you stick with it. Even if the likes/shares are not quite there, the views may tell a different story in the number of people you actually reach. </p>
<p>When it comes to strategies for boosting engagement - being consistent, mixing up your format, and matching community cultures can help improve your interactions with others. Don’t give up as we all have amazing, creative works that deserve to be seen!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #14 - Game Customization, Splash Screen]]></title><description><![CDATA[This update we wrap up the remaining items for our main menu! Specifically, the game needs a special stamp representing Sparkful Studios, plus some customization options for new saves. Without further ado, let’s do this!

Game Customization
What bett...]]></description><link>https://www.sparkfulstudios.com/echolite-update-14-game-customization-splash-screen</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-14-game-customization-splash-screen</guid><category><![CDATA[Godot]]></category><category><![CDATA[Developer]]></category><category><![CDATA[DevBlogging]]></category><category><![CDATA[creativity]]></category><category><![CDATA[Game Development]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 12 Jul 2022 03:20:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1657595591040/iAetyht3b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This update we wrap up the remaining items for our main menu! Specifically, the game needs a special stamp representing Sparkful Studios, plus some customization options for new saves. Without further ado, let’s do this!</p>
<hr />
<p><strong>Game Customization</strong></p>
<p>What better way to build a game than to have players do it themselves? Everyone plays games differently, and while I would like to have an “intended” experience, there's going to be more engagement and replayability with multiple game options. </p>
<p>So, what are some of the basic options to include when creating new file saves? I got you!</p>
<ul>
<li>Character selector</li>
<li>World generation seed</li>
<li>Game difficulty</li>
</ul>

<p>Using a simple background panel like other GUI elements, we can have a new page to hold these options like so:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1657595177552/lGK1q93X6.png" alt="image.png" /></center>

<p>In terms of the character selector, I only have the two original designs for now. While I did consider a character creator where you swap individual parts and colors, I still wanted to keep it a bit restricted. With a game that relies heavily on lighting, having too much character customization could jeopardize the experience. In future devlogs you’ll get to see more new character looks :)</p>
<p>In regard to the world seed, this goes back to the procedural generation we did several devlogs back. For testing purposes, a default string was used, but now the player will be able to enter their own! To make it easier as well, I added in a randomize button in case the player wants to jump into the game more quickly. My hope with this seed field is that players will be able to share cool world layouts they discover with one another.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1657595130578/B4qzZz4rP.png" alt="DevlogCover12.png" /></center>

<p>The game difficulty is stored as a selected value, but as with most development items, this will come more into play with future gameplay elements. It does influence gameplay a little though already, mainly in how frequently resources generate in the world and how quickly the player’s energy bar drains.</p>
<p>While this work seems pretty straight-forward, it did require a bit more time than anticipated. Essentially, the saved values of a world are located in a filesave, but until it’s created, where do those initial customization values go? This prompted a rework of loading and saving in the game. Now, a “Save Connector” script is used as a manager of sorts. Values outside of gameplay like the game difficulty configure the correct pathing in the Save Connector, which is then referenced once the actual save is run. It’s a bit confusing because it crosses so many different parts of the game, but it’s certainly a lot cleaner now!</p>
<hr />
<p><strong>Splash Screen</strong></p>
<p>This feature is something that is likely only exciting to me, but of course I still love sharing all the steps of development with all of you! Sparkful Studios as a concept has been floating around in my head for awhile, but after lots of planning and prep work, you finally got to see actual content at the beginning of this year (2022 for future readers). Now that half of the year has already passed (and super quickly at that!), it seems fitting to add in a splash screen as a way to reflect on the game's progress thus far.</p>
<p>Using one of my favorite nodes in Godot - the magical tween - I opted for some “snapping” and "fade" animations on both the logo and lettering. A splash screen wouldn’t be complete without a jingle though! The jingle itself is just a small amount of notes, but I think it nails the right tone. This sound did get cut out of the gif, but trust me, it's amazing! Here’s the final look:</p>
<center><iframe src="https://giphy.com/embed/Mo91vntlPAkvFnn42b" width="480" height="251" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/Mo91vntlPAkvFnn42b">via GIPHY</a></p></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>First, a good ‘ole thank you to everyone who has continued to follow Echolite’s development! I always love showing flashy content, so showing off a bit of the “boring” work can be difficult. It’s certainly necessary work though, plus it means that the game is nearing a playable state!</p>
<p>With that said, we are now stepping away from the main menu and diving into more of the actual gameplay! Crafting has become a major part of the game, and with so many new items coming up in future devlogs, some better management is needed for organizing recipes. Additionally, we will be going all the way back to one of the earliest developed pieces of the game - the tents! They look great on the outside, but what exactly could the insides hold?</p>
]]></content:encoded></item><item><title><![CDATA[Is That Feature Worth It?]]></title><description><![CDATA[It’s a relatively known fact that indie game devs tend to overscope their games. Even AAA game studios fall into this trap. There is an honest element to it, since everyone desires to make the best games possible and part of that process involves lot...]]></description><link>https://www.sparkfulstudios.com/is-that-feature-worth-it</link><guid isPermaLink="true">https://www.sparkfulstudios.com/is-that-feature-worth-it</guid><category><![CDATA[Developer]]></category><category><![CDATA[lessons]]></category><category><![CDATA[Discuss]]></category><category><![CDATA[features]]></category><category><![CDATA[planning]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 04 Jul 2022 20:06:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/NomETWcv2Fo/upload/v1656964963487/xgWIZN1z3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It’s a relatively known fact that indie game devs tend to overscope their games. Even AAA game studios fall into this trap. There is an honest element to it, since everyone desires to make the best games possible and part of that process involves lots of engaging content. The issue however, is that not every feature is critical and not every feature will actually make the game “better.” </p>
<p>The question then becomes - “is this new feature worth including in my game?”</p>
<p>In general, a feature will either:</p>
<ol>
<li>Improve your game</li>
<li>Expand your game</li>
<li>Ruin your game</li>
</ol>

<p>Let’s dive deeper!</p>
<hr />
<p><strong>Improve Your Game</strong></p>
<p>A new feature will improve your game when it fills a gap in engagement that was previously present. One solid example is the game “Raft” by <strong><em>__</em></strong>. In this game, you need to hook in items floating in the ocean and build your raft to survive the harsh environment. It’s a simple concept, and many of the core mechanics are just that - core ones. When developing, they likely faced the question “is the ability to hook in items worth including in the game?”</p>
<p>Indeed, the player could simply pick up items directly, so a basic tool seems like an unnecessary inclusion. In a game where the player has a shark constantly circling their small raft though, the player is not afforded the luxury of picking up items further out. The hook item suddenly becomes a key feature to aid (and reward) the player for wanting to gather as many items as possible.</p>
<hr />
<p><strong>Expand Your Game</strong></p>
<p>Continuing the examination of Raft, the idea of expanding your game is to provide depth, such as narrative or technical options. Many players desire a fishing mechanic in their game, and for a game where you are stranded at sea, fishing is a no-brainer. The catch here (pun intended) is that fishing does not introduce any subsystems that drastically change gameplay. When you fish, you collect new fish items that can be cooked for survival. It provides another option for gathering food and another way to relax within the game at the later stages.</p>
<p>Even with the rare treasures you can collect, they are mostly decorative and entertaining. This idea of expanding the game through fishing though is just as important as features that improve the game. It diversifies gameplay and enables players to make additional decisions on how they navigate the game. Whereas improving the game involves new systems to change the dynamics of the game, expanding the game seeks to stretch out the game in ways that better engage the player. </p>
<p>Essentially -  to improve your game, you add new layers. To expand your game, you stretch those layers.</p>
<hr />
<p><strong>Ruin Your Game</strong></p>
<p>Ruin is perhaps a strong word, but certain features do have the power to turn players away. I struggle to think of a good example through Raft, so I’ll turn to a different game - Minecraft. </p>
<p>A few updates back when the world generation was completely overhauled in a massive update, a new ore was added into the game…copper. For the record, I absolutely love Minecraft and when it comes to copper, I am super glad they added it for the decorative features it provides. When it comes to gameplay though, this ore is one of the most frequent ores that players will first encounter. The ore is used for decorative blocks, lightning rods, and a spyglass. I’m sure there are other uses I am forgetting in this instance as Mojang usually reuses items in future updates to extend gameplay. </p>
<p>However, in its current state, this early game material hardly “progresses” the game. It expands your color palette, protects you from lightning that could damage  the house you are…only starting to build, and offers visibility that is…already possible through settings…</p>
<p>I’m skipping some of the finer details here, but I think the main point is clear. For a new player, this early-game resource doesn’t provide a step forward in gameplay. Not every item needs to do so, but to have it apply here is a bit conflicting.</p>
<p>The risk is that players may feel that their time was wasted on gathering copper since they expected it to extend gameplay beyond aesthetics or nifty little features. Copper absolutely needs to be in the game, but I would argue that its placement within the supposed progression path is not ideal. </p>
<p>When faced with a feature such as this example, I think there’s two options that come up. First, you can scrap the feature entirely. Second, you can change or move the feature in a way that better fits the natural tendencies of the player in approaching the game. </p>
<hr />
<p><strong>TL;DR</strong></p>
<p>It’s worth saying that I don’t think there’s ever a “bad” idea in game development. Every idea has the potential to be good, given the time to either correctly implement it or change directions with it. With a positive mindset, you will confidently be able to determine the viability of every feature you dream up!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #13 - Main Menu, Save Slots]]></title><description><![CDATA[Welcome back to another epic devlog!
We don’t quite do the impossible work this time - instead, we do the necessary work. It’s the kind of work that isn’t as flashy or exciting, but for the sake of design transparency it’s worth showing. We need a wa...]]></description><link>https://www.sparkfulstudios.com/echolite-update-13-main-menu-save-slots</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-13-main-menu-save-slots</guid><category><![CDATA[Godot]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[gaming]]></category><category><![CDATA[Design]]></category><category><![CDATA[creativity]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 28 Jun 2022 02:14:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1656382329267/AHtducaXx.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another epic devlog!</p>
<p>We don’t quite do the impossible work this time - instead, we do the necessary work. It’s the kind of work that isn’t as flashy or exciting, but for the sake of design transparency it’s worth showing. We need a way to launch this game, which means adding in a main menu!</p>
<hr />
<p><strong>Main Menu</strong></p>
<p>When it comes to the main menu, one important item to include is the game’s title. Just in case the player forgets what game they have just launched or something…Truthfully though, making a logo for the game is an amazing milestone as a developer. If a game is considered a gift, then the logo is simply the bow on top - it represents all of the energy and passion that has gone into development!</p>
<p>So, how did I come up with an amazing logo? By working smarter, not harder! Given the player is a robot and machinery has a central focus, fitting in an industrial/steampunk look made the most sense. I took the time to search through dozens of fonts until I narrowed it down to one. Here is a link for those curious:</p>
<p><a href="https://www.fontspace.com/geosteam-font-f24054">https://www.fontspace.com/geosteam-font-f24054</a></p>
<p>This is how the font appears initially as an example (default text, not the game's title):</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656381143500/3PDE2MA5x.png" alt="image.png" /></center>

<p>I downloaded this font, scaled it up massively in a text editor and then typed out “Echolite.” From there, an image was exported and uploaded into my favorite pixel editor - Aseprite! Next was scaling down the image and reformatting lines to make the lettering more consistent. Then, basic coloring (using the GUI palette for additional consistency) was used to fill in each letter. Finally, some extra shading and detailing (such as pipes, screws, etc…) were layered on top to give it additional depth. Here is the final result!</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656380329161/PFXqKOFMh.png" alt="image.png" /></center>

<p>Those small differences really transformed this logo into something special that matches the overall aesthetic of the game. In the future, I would love to animate some of the gears, screws, wheels, etc... to give it even more character.</p>
<p>Moving to the editor, we are focusing on basic functionality. I opted for a “warm black” styled canvas as the background for all of the GUI elements. The logo is placed along the top (centered) and given a very straightforward animation. The AnimationPlayer node was used to move the logo up and down (very slow so that it's still readable). </p>
<p>Finally, some buttons were needed to interact with the game. In staying consistent with other GUI elements, I looked to <a href="https://opengameart.org/users/buch">Buch’s</a> Golden UI atlas for these designs. Luckily, buttons such as play and exit were already part of the  atlas, so the only work on my end was adding outlines for the mouse hover states. Staying true to most games, the buttons are centered and lined up like so:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656381390082/p46jdK0xk.png" alt="image.png" /></center>

<p>You may notice that I also added a small “message board” of sorts that displays a bunch of text to the left. This uses the same backdrop asset as our “quest options” panel (showing available quests for a NPC). The idea is that once the game reaches a complete build state, I will be able to note key items upfront to keep players updated, such as patch info and future plans.</p>
<p>The actual button functionality was not too difficult after working with them extensively in previous updates. The play button will navigate to the below section, while the exit button requires a built-in application close function in Godot. For settings, this will be handled much further down the line. Once keybinds, audio, etc… are in place, the settings page will naturally fall into place (both during game sessions and through the main menu).</p>
<hr />
<p><strong>Save Slots</strong></p>
<p>Given the nature of the game with procedural generation, different progressions styles, building, and more, restricting gameplay to a single save is not ideal. This is where save slots come to the rescue! For the save slots, I wanted to have these features:</p>
<ul>
<li>Chosen character (animated)</li>
<li>Time played</li>
<li>Active quest</li>
</ul>

<p>These elements should help differentiate save slots. I debated showing the active quest as the player could have multiple, but it still seemed worthwhile for providing a “snapshot” of current progression. In terms of art, a mix of existing character models, icon palettes, and GUI elements were combined to form this kind of panel:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656381524984/8vTiywMoF.png" alt="image.png" /></center>

<p>Keeping the design simple, these save slots are laid out in a new scene with an identical background to the main menu. The logo is also added again near the top (in case you happen to forget the game’s name after reaching this page!).</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656381557377/uoV9ljjEk.png" alt="image.png" /></center>

<p>Finally, a few options can be navigated through for selecting existing saves, deleting saves, and creating new saves. All of this simply uses common OS functions through Godot to create and edit directories. Each save is given its own folder for easy management, both as a developer to keep things organized and for players who like to backup their saves to be safe (highly recommend!).</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656381656178/w6_H9Ucro.png" alt="image.png" /></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>With the main menu and save slots in place, the core interface is starting to come together! Next up is adding a splash screen that plays before the main menu and implementing customization options for new save files. New characters? - Check. Custom world seed? - You bet! Difficulty options? - How could you not!?!</p>
<p>As always, thank you so much for your incredible support!</p>
]]></content:encoded></item><item><title><![CDATA[Handling "Loopholes" In Your Game]]></title><description><![CDATA[With so many moving components during development, the games we create often contain unexpected behaviors. Some of these interactions pop up due to unintended gameplay states being allowed, while others appear from a hidden mechanic occurring between...]]></description><link>https://www.sparkfulstudios.com/handling-loopholes-in-your-game</link><guid isPermaLink="true">https://www.sparkfulstudios.com/handling-loopholes-in-your-game</guid><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[features]]></category><category><![CDATA[ideas]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 20 Jun 2022 23:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/FlPc9_VocJ4/upload/v1655692728254/UfRHQlJM3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With so many moving components during development, the games we create often contain unexpected behaviors. Some of these interactions pop up due to unintended gameplay states being allowed, while others appear from a hidden mechanic occurring between subsystems. In either regard, these “loopholes” present an interesting question for game developers - should we keep them as-is or dedicate time towards patching them out? </p>
<hr />
<p><strong>Keeping Loopholes In</strong></p>
<p>Personally, I find the development process the most exciting when new ideas come up while implementing core features. You may suddenly think of a better approach to use, another way for systems to interconnect, or even a way to add more depth to a mechanic. The unexpected can be the special “sauce” that your game needs to feel complete. </p>
<p>Essentially, you want to keep loopholes present in your game when they open up additional gameplay options and enhance the player’s experience. A good example comes from one of my favorite games - Raft. As you float around the world, entering certain coordinates allows story-based islands to generate. These are meant to be linear in nature and grant items that help you progress at specific points in the story. </p>
<p>The “loophole” here is found in the loot that generates on the islands, as they can reappear whenever the player leaves a story island and then comes back. Narratively, this would not make sense as the player has already retrieved the items once. As a game developer I know this assumption skips many steps, but they could easily patch this out by tracking items picked up after leaving. </p>
<p>The developers purposely chose to leave loot respawning in place though, and there is a good chance that it came down to the gameplay value it adds: </p>
<ul>
<li>Players like collecting resources, so another method is enjoyable</li>
<li>The exclusive items are more reliable to collect</li>
<li>It opens up end-game content - players can now set up travel routes between story islands</li>
<li>It gives replayability to story islands</li>
</ul>

<p>I would not rule out the possibility that there was not enough time to address this loophole. However, once they saw how players responded by using the unintended feature to extend gameplay, there was likely less of a reason to address it. </p>
<hr />
<p><strong>Keeping Loopholes Out</strong></p>
<p>Conversely, loopholes should be removed when they compromise the intended gameplay experience. If a loophole decreases engagement, then it is simply blocking what the player is trying to achieve in the game.</p>
<p>Imagine playing Super Mario Bros and a specific checkpoint accidentally turns the star ability into a permanent one. Certainly, the player will feel overpowered for a while, but as the element of challenge slips away they will quickly lose interest. It may even be fun for the entire gaming session, but when the player is trying to decide what to play the next day, there is a good chance they will pick up another game that still holds “mystery.” For a game that relies on the vulnerability of the character and the complexities of platforming, this loophole completely erases that intended experience. </p>
<p>There is a popular phrase within the development community that captures this sentiment perfectly - “It’s not a bug, it’s a feature.” At least in my experience, this phrase is used when a loophole appears and provides “valid” reasoning for avoiding the difficult task of making necessary changes. What that decision does however, is push the flaws of the game onto the player in order to explain why “it is not a big deal.” </p>
<p>Suddenly, that loophole causes the player to maintain two tasks. They need to progress through the game while also subconsciously finding ways to explain why a bug still fits. Even if they can look past it, you can begin to see how loopholes can compromise gameplay experiences by breaking immersion.</p>
<hr />
<p><strong>What About Time Constraints?</strong></p>
<p>Game development is a dedicated process requiring tons of resources, time, motivation, energy, and more. When considering what loopholes to keep or remove from your game, you may also wonder if you have the time for it. Indeed, this can influence what decision you make! This is where the famous “minimum viable product” idea found on every indie game dev thread comes into play. Understanding where your game reaches a “1.0 version” or “pre-alpha state” provides an important threshold. </p>
<p>If you are just starting development, then you are more inclined to keep loopholes in. The goal is to spend the majority of your time achieving the baseline of your game. Unless they prove to be game-breaking, loopholes are oversights in design that are best addressed during the “polishing” stages of development. The best case scenario here is that leaving in loopholes will open up new design opportunities later in development that might not have been considered otherwise. Worst case scenario - you at least achieve a minimum viable product within a reasonable time and can afford to address it. </p>
<p>By the time you near the end of development, this is where you are more inclined to remove loopholes. With a nearly complete game, you are able to carry out testing far easier and have a better idea of how the indented gameplayer experience has translated over time. Essentially, you will have a stronger approach on how best to remove or change loopholes as compared to earlier development stages.</p>
<hr />
<p><strong>TL;DR</strong></p>
<p>When faced with a loophole - i.e an “unintended gameplay feature” - it is worth considering if it should remain in-game or have it patched out. The best approach is to consider if the loophole adds value to the game without affecting the player’s intended experience. Beyond this, consider what stage of development you are in as a way of making a more informed decision.</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #12 - "A Whole New World!"]]></title><description><![CDATA[A whole new world indeed! This devlog explores a major transformation of the game through new world generation and visual effects. The last devlog allowed for some of the initial work to be completed such as updating lighting and creating assets for ...]]></description><link>https://www.sparkfulstudios.com/echolite-update-12-a-whole-new-world</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-12-a-whole-new-world</guid><category><![CDATA[Godot]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[development]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 14 Jun 2022 00:37:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1655166883705/vYcjQTLjH.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A whole new world indeed! This devlog explores a major transformation of the game through new world generation and visual effects. The last devlog allowed for some of the initial work to be completed such as updating lighting and creating assets for new terrain features. Now, these items can be leveraged to design a world that feels alive (but also unalive). </p>
<hr />
<p><strong>Planning</strong></p>
<p>Since the beginning of the game’s development, the idea of having a ring-esque world design was always planned. This design will hopefully bring a unique gameplay experience that creates an interesting dynamic between the player and the world. Here are just some of the items that this new world design should accomplish:</p>
<ul>
<li>The player can travel in any direction - it’s a pseudo open world design without being overly complex. If one particular area is not ideal, then they can always travel in a different direction.</li>
<li>The player is naturally challenged to travel further and further. When starting, they may only be able to go a few spaces out before retreating back to the light. This encourages progression in order to see how far they can go. It’s kind of a roguelite setup while still allowing for the world to be shaped by the player.</li>
<li>It makes it easier as a game designer to stretch out progression without being severely limited.</li>
</ul>

<p>With each ring, the distance traveled to reach the next outer ring should increase. For the first ring, the tile distance should range about 50 tiles. It’s enough to feel complete and challenging without being too large as we still want the player to progress in reasonable time. For the second ring then, the tile distance should extend roughly 100 tiles. This is twice as large as the first ring, encouraging the player to use new resources and objects beyond their established strategies. From there, I plan to make the third/final ring about 200 tiles out. By that point, the player will be able to enter the late stages of the game and expand their operations as needed.</p>
<hr />
<p><strong>Remaining Setup</strong></p>
<p>Between the rings, there should be a few tiles that clearly show the division. At a later point, a bridge-esque object will be added into the game that the player can use to travel to new rings. The design is super basic as it should stick out to the player as a sort of “boundary” object:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655166188216/ZgEgNDcpu.png" alt="image.png" /></center>

<p>Plain, unexpected, and hard to see? Awesome, that was the goal!</p>
<p>With this “void tile” created, the only item left beyond importing the assets into the editor is creating a moveable camera scene. The camera currently follows the player, meaning that all of the new world generation will only be viewable as the player moves around. For testing purposes, we need a new camera that can be navigated with the mouse in order to have a better idea of how the world is formed. Rather than reinvent the wheel for a feature that is only used for testing, I referenced the following tutorial:</p>
<blockquote>
<p> <a href="https://www.youtube.com/watch?v=6CfhXBdhE2s">https://www.youtube.com/watch?v=6CfhXBdhE2s</a></p>
</blockquote>
<p>A little magic here and there….and….there we go! A controllable camera!</p>
<hr />
<p><strong>New World Generation (Finally!)</strong></p>
<p>As with everything in Godot, all features simply become a bunch of nodes and scenes. For this new world generation, a new scene is created with several tilemaps in one. While every potential tile could be piled into one tilemap, I have found the current editor to be a little clunky when making edits. If I need to make changes to a certain tile in the future, I would prefer to only deal with tilemaps that have 1-9 tiles total. That way, if one of the tiles is incorrectly numbered or does not align properly, I can avoid touching the entire generation system. Here is a top level view of this MapGenerator scene containing all of the tilemaps:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655165835671/V207Q4Y_n.png" alt="image.png" /></center>

<p>You may notice that the void tilemap has two entries - one with collision and one without. This does not come into play initially for world generation, but will be relevant when bridge pieces are made later on. Essentially, a unique workaround is being used to turn collisions off and on as doing this on specific tiles in a single tilemap becomes a bit tricky to manage. A similar workaround will be used on the other “liquid” tiles as well - just ignore the collision/no-collision for now though!</p>
<p>With these tilemaps in place, we can focus on the core logic of generation. The first thought is always to go through each tile separately and determine what type it should be in one “sweep.” This is difficult to code however, in which I chose to split out tile types by function and work through a list of “generation sweeps.”</p>
<p>First, we need to generate a filled-in circle of basic tiles. Until we set up an interface for the player to create a seed, a default value is needed. This seed is leveraged to determine which basic tiles are selected so that the generation is more interesting. As part of this step, a perlin noise map is used to create “blotches” throughout the map. Based on a certain radius distance, a certain liquid tilemap is referenced to fill in that blotch. This ensures that only certain kinds of lakes or pools show up within each ring. Here is the first sweep result:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655165067447/Wp1OVSLAZ.png" alt="image.png" /></center>

<p>From this point, features are added to this terrain, meaning that tiles need to be removed before new ones are added (to avoid stacked tiles). This is achieved through a basic function that is given a tile coord and then removes any potential tiles there from every tilemap. </p>
<p>Using this function, we can loop back through the entire map to set up void rings. Similar to using radius values to determine what liquid tile types should be placed, we use radius min and max values for each void ring.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655165926880/GT6I6aXoe.png" alt="image.png" /></center>

<p>Next up is adding in the resource and rock formation tiles. These functions leverage both the seed value and radius values to determine tile type and place them in a randomized fashion throughout the map. By this point, the base world generation is nearly complete. </p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655166027052/1ZROb1WQ_.png" alt="image.png" /></center>

<p>One small touch to add is clearing out a small rectangular region near the center. Having a random river running through the front of tents and blocking the player would not be an ideal gameplay experience. This uses another function to replace all of the tiles near the center with a plain basic tile. The terrain could certainly use more “spice” since it’s the main area, but for now we’ll keep it blank.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655166117570/tX5MOKWfK.png" alt="image.png" /></center>

<hr />
<p><strong>Final Touches</strong></p>
<p>The new world generation is incredible! At the same time, it feels a bit static. Some motion and visual flairs are needed to make this world feel more alive to the player. Since the resource tiles are a core part of gameplay that the player is constantly seeking out, they are the prime candidates for adding some new visual elements. </p>
<p>We already did this a bit with the sparkshroom tiles that glow in the world. Interestingly enough, that glow element is actually tied to the seed now. This gives it a more random “spark” vibe to it rather than a glow that consistently fades in and out. </p>
<p>For now, we can check out visual improvements to three other resource tiles (one per ring). Starting with the ore tile, this classic look features crystal-esque objects within a small crevice. To make these more appealing, a shine effect can be applied like so:</p>
<center><iframe src="https://giphy.com/embed/REbzHvRbvYOQABng3x" width="480" height="480" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/REbzHvRbvYOQABng3x">via GIPHY</a></p></center>

<p>This is achieved by applying a white pixel with a reduced alpha value over 2-3 pixels in the top left corner. From there, that line moves across the crystals until reaching the opposite corner. In terms of applying this effect to the world, we can establish a timer that continually picks out random tiles in the tilemap to overlay the effect. </p>
<p>Next up is the “Sporebell” resource tile. Yup, there is more vegetation beyond Sparkshrooms! This tile is found throughout the second ring and as the name implies, it shoots out spores/puffs periodically. Instead of an animated tile, we can use particle effects to create the spores. For the design of the particle, the “head” of the Sporebell blossom is rotated, slightly recolored, and then painted with the blur tool. It creates this neat transparent effect that fades more evenly outside of individually changing alpha values on each pixel. In Godot, this particle is set up to float upwards in a curved motion. I would like to improve the effect more such as adding more horizontal “swing,” but this should do the trick for now!</p>
<center><iframe src="https://giphy.com/embed/u2C9AI0WECaCRuZJ7k" width="451" height="480" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/u2C9AI0WECaCRuZJ7k">via GIPHY</a></p></center>

<p>Finally, we have the “geyser” resource tile. The name is still pending as it doesn’t quite capture the intended effect, but this tile should have air/steam quickly blowing out. This is also done with a particle effect, in which most of the magic comes from the particle settings rather than the design of the particle. We can actually leverage 3 particles at once and then configure different lifetime values. While all of the particles will go slightly up, this setting only allows some of the particles to go higher up. This creates both a fading effect near the top and a forceful burst from the ground. Here is the final result:</p>
<center><iframe src="https://giphy.com/embed/teMRBWzVHvYE3agDmI" width="451" height="480" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/teMRBWzVHvYE3agDmI">via GIPHY</a></p></center>

<p>To keep things mysterious, the remaining tiles will be shown off in more detail at a later point. Hopefully you enjoyed seeing this massive update!</p>
<hr />
<p><strong>What’s Next?</strong></p>
<p>The core gameplay experience is really coming together - it’s exciting, atmospheric, and engaging! To achieve a functional build state though, one crucial piece remains….a main menu! The next few devlogs will focus on this work, attempting to mix in some other neat elements to keep it interesting :)</p>
<p>Thank you as always for your support! If you are enjoying these updates, please consider liking and sharing this post. The more visibility and feedback this game gets, the better the final product will be!</p>
]]></content:encoded></item><item><title><![CDATA[Expanding the "Magic Circle"]]></title><description><![CDATA[The “magic circle” presents this idea where video games build a world that the player engages with to the extent of blurring the line between our world and fictional ones. Whereas everyone understands the fundamental aspects of the real world, such a...]]></description><link>https://www.sparkfulstudios.com/expanding-the-magic-circle</link><guid isPermaLink="true">https://www.sparkfulstudios.com/expanding-the-magic-circle</guid><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[development]]></category><category><![CDATA[Design]]></category><category><![CDATA[Godot]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 07 Jun 2022 00:35:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/67l-QujB14w/upload/v1654561702111/rH-yomIuR.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The “magic circle” presents this idea where video games build a world that the player engages with to the extent of blurring the line between our world and fictional ones. Whereas everyone understands the fundamental aspects of the real world, such as the rules of physics, the digital worlds we create often contradict those rules (with exceptions). This is one of the core reasons why people enjoy playing games. They offer escapism in ways that our own world could never truly achieve. This begs the question then - as game designers, how can we improve the magic circle?</p>
<p>The first solution could be improved graphics like what we see in modern AAA titles. By adding those strikingly realistic models and environments, the line between worlds easily dissolves. This improvement has occurred for decades though in the industry, as seeing better graphics has become more of an expectation than a method of innovating the magic circle experience.</p>
<p>The next solution could be found in new gaming technologies such as VR/AR. Placing the player into the world through spatial means causes us to easily get lost in the magic circle. It is even more fitting that you can look in all directions in these games, granted it is more of a magic sphere, but the idea still stands! The issue though is that not every game can (or should) translate into VR/AR. It is a new tool for developers to explore and has opened up some incredible opportunities, essentially an entirely new art form. It should not be needed for every game to expand on the magic circle.</p>
<p>This leaves us with a final solution - digging into the “meta” magic circle. Picture it as a magic circle within another magic circle (circle-ception). One solid example is “Stardew Valley,” where the player takes on the role of a farmer and develops relationships with the town’s inhabitants. In this case, the first magic circle that you, the human, enter is a foreign countryside land realistically made by pixels and ripe for exploration. We enter this magic circle by controlling the character with physical devices and interacting with the in-game world, which is largely a one-way communication. </p>
<p>A meta magic circle approach then, aims to create smaller magic circles within a larger one. In Stardew Valley, the player can opt to play mini-games inside a community tavern through arcade machines. Here, the fictional character enters its own magic circle within that fictional universe. This creates a level of abstraction where the character can dip in and out of the smaller magic circles to give additional depth to the world. At the real-world level, our physical controls not only move around the environment now, but also seamlessly work to transition between in-game moments. In other words, we the player are the ones who decide what inner magic circles the in-game character enters.</p>
<p>Having games within a game is not the only option though, especially as it has been present in dozens of games over the decades. Another option is to make worlds feel more “lived in” by the characters. This leans into the topic of believable NPCs as many of these characters appear to exist around the player. It is difficult to make them feel like they have their own lives and agendas. To achieve a meta magic circle, we would not just assign schedules to NPCs. Inside each random list of tasks there would be a multitude of ways that the environment changes. Note that these changes are not initiated by the player since that is already a core part of gameplay. </p>
<p>Going back to the tavern example, we could have NPCs that place cups and furniture in different parts of the tavern. Then, based on where items are there the next day, the owner of the tavern has a new list of potential actions caused by other NPCs. When the player finally enters the tavern again, both them AND the in-game character have meta realizations that something has changed.</p>
<p>Indeed, this adds a ton of complexity for developers because it presents dozens of states to account for over time. The changes can be small though. Maybe when a player enters an NPCs house at different times of the day, various dishes, bedsheets, etc… have moved around. The player gets to enjoy additional depth to gameplay, and the in-game character finds themselves in a world that does not necessarily revolve around them. None of these concepts are necessarily new, but I think they are important to consider if we want to continue pushing the boundaries of game development. </p>
<hr />
<p><strong>TL;DR</strong></p>
<p>Games offer an escape by allowing us to extend what is possible within our own world through the abilities, emotions, and experiences of digital worlds. To take this further as developers, we can consider how the ties between our physical actions allow our in-game characters to escape into their own worlds. Our characters can have feelings too and we have the potential to shape how they view their digital worlds through our own actions!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #11 - Proper Lighting, New World Elements]]></title><description><![CDATA[This devlog will certainly be one to remember! With the larger goal of revamping the entire world generation of Echolite in the next devlog, we get to tackle the initial work that sets the entire tone of exploration. Let’s do this!

Proper Lighting
B...]]></description><link>https://www.sparkfulstudios.com/echolite-update-11-proper-lighting-new-world-elements</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-11-proper-lighting-new-world-elements</guid><category><![CDATA[Developer]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[Godot]]></category><category><![CDATA[game]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 31 May 2022 01:21:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1653959975310/-ooT4CS61.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This devlog will certainly be one to remember! With the larger goal of revamping the entire world generation of Echolite in the next devlog, we get to tackle the initial work that sets the entire tone of exploration. Let’s do this!</p>
<hr />
<p><strong>Proper Lighting</strong></p>
<p>Back in the 4th devlog, some custom lighting was created that could be placed over the larger base camp and Sparkshroom tiles. The idea here was to have a flexible lighting solution that I could apply on different objects that would impact the player’s energy level. For a time, this feature worked well with the limited testing done. With some random tilemap placement however, I found that overlapping light sources did not behave as intended.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653959283060/79aWzRdSI.png" alt="image.png" /></center>

<p>This was one of those cases where the design did not cleanly adjust to future changes. Essentially, I assumed that the player’s energy levels would be tied to entering and exiting the area bounds of every light source. It was a simple boolean toggle that would allow the energy bar to either increase or decrease. The overlapping light regions that could potentially generate in the future though would toggle too many times and quickly reverse the behavior. When the player exited a light source, suddenly their energy level would increase and now the game was in a parallel realm where light needed to be avoided. While that could be a cool concept, it is definitely not what this game is built on.</p>
<p>It took me a while to realize what was happening until I recalled similar occurrences in real life. For rooms that have 2 or more light switches, all of them are simply a toggle for the lights. Let’s say that a room is unlit, and we have one light switch near the door and another one against the back wall. I flip the door switch up to light the room and then walk to the back of the room and flick the switch to turn the lights off again. When I return to the door switch and wish to turn the lights back on, now the switch behaves inversely. The door switch has to be flipped down to perform the same lighting action for the 
room. </p>
<p>If you are doing some face palms right now, I would not blame you! It is one of those things that we all know but hardly ever think about too closely. As indie game developers, we are inspired by real life events to create our games. I think a similar approach can be used for troubleshooting and testing our games as well.</p>
<p>With that, the custom lighting scene was redone to account for this oversight. My solution was to use an array that would contain all of the lighting sources that the player is currently standing in. Whenever they enter or exit any light area, this array is simply updated to either add or remove a listed lighting source. From there, the logic for affecting the energy level of the player is applied only to the individual array. Now, the player has to be removed from all lighting sources in order for the energy level to start dropping.</p>
<center><iframe src="https://giphy.com/embed/EMjrjJhlrzhXwQRXnz" width="480" height="267" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/EMjrjJhlrzhXwQRXnz">via GIPHY</a></p></center>

<p>Oh, and it gets even better! With every lighting source being tracked, this opens up the possibility of energy levels changing at different rates based on how the player interacts with the world. Plus, this fixed some visual issues with the energy bar (which was caused by inconsistent lighting logic from before).</p>
<hr />
<p><strong>New World Elements</strong></p>
<p>The world of Echolite is supposed to be barren and desolate. On paper, this is a fun aesthetic to work with since the element of the blank and unknown naturally creates a bond with the NPCs in order to not feel lonely. In game though, this means an uninteresting world to explore. If the most detailed area is the main base camp of the nomads, then the player will quickly lose interest in the world around them.</p>
<p>This is where creativity gets to run wild! The plan is to have the world designed in “rings,” so each ring should feel connected but also varied. Here is how we can achieve that visually:</p>
<ul>
<li>Add “pools” such as water the player has to navigate around</li>
<li>Add rock formations that initially serve as obstacles</li>
<li>New resource tiles</li>
</ul>

<hr />
<p><strong>Liquid Tiles</strong></p>
<p>Given that we will have three rings that center around the base camp, the “liquid tiles” will need to form in patches. If we left water as a single tile, then it would not feel different from all of the other nearby resource tiles. To achieve a patch look then, we need to construct an autotile map where the edges of the path will neatly fit together.</p>
<p>I highly recommend the following resource from KidsCanCode that shows how to arrange tilemaps so that all of the possible borders are accounted for: <a href="https://kidscancode.org/godot_recipes/2d/autotile_intro/">https://kidscancode.org/godot_recipes/2d/autotile_intro/</a></p>
<p>With this example, I first started with the general outline using the same color palette as the other basic tiles. The general approach was to maintain a distance of 1-4 pixels from the edge of a tile to form the border. Then, instead of straight lines, I moved up and down and placed 1-4 pixels in a line before switching rows again. This helped make the terrain appear more varied and natural without overthinking the design. Here is the initial frame:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653958940750/Cja_4cxpD.png" alt="image.png" /></center>

<p>The more I do my own artwork, the more encouraged I feel to take risks with the design. This is why I added a lined look around the border to add a slight bit of depth. I also figured that once the tiles are placed in-game, this unique pattern will stand out next to the player under their own light source. The other tiles will have even more elaborate designs!</p>
<p>On a separate layer, I drafted out the look of the actual water. This involved working through one color at a time and filling in the gaps as necessary. I tried to create patterns in what colors followed one another without being too repetitive. Once I had a single tile drafted out, I duplicated it to form a larger sheet and then layered the bordering on top. Ta-da!</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653959103273/eQV8BTHAA.png" alt="image.png" /></center>

<p>Water does not always remain still however, in which I created multiple frames. This was simply achieved by moving the underlying layer of water back and forth in a diagonal fashion. By slowing the movement down, this effect looks quite relaxing.</p>
<p>In terms of seeing this animation plus the other liquid tiles, I will save those for a later reveal - onto the next visual!</p>
<hr />
<p><strong>Rock Formations</strong></p>
<p>This part was perhaps my favorite artistic challenge yet! In sticking with the same 5 colors as the basic tiles, I wanted to find a way to create several different rock formations that could be scattered around the world. Since the colors remain the same, the actual shaping of each rock needed to be unique in some way. </p>
<p>Here is the very first rock formation I designed:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653959483418/ug8vSafyO.png" alt="image.png" /></center>

<p>The design approach was fairly standard. I used a single color to form a shape (random blobs essentially). Then, the other colors were added as shading to help add depth. With new found confidence in this first design, I went wild with many more designs! </p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653959599136/ywBuayN5o.png" alt="image.png" /></center>

<p>This leads me to a brief discussion on the use of both these rock formations and the liquid tiles. While they do not serve a functional purpose yet, my plan for them is to use them as additional resource points in the later stages of the game. Let’s say that the player has traveled far enough to reach the second ring. With the new materials they have collected, now they can build a special machine that collects from the water or rocks. This gives additional gameplay value to the initial area of the world and helps make the player’s progress feel even more important. It’s a light teaser, but also a good reminder that I aim to make every addition to the game multi-purposed so that the world feels more complex and engaging.</p>
<hr />
<p><strong>New Resource Tiles</strong></p>
<p>So far, we have only seen the first three resource tiles of the game which all exist in the “first ring.” Now, we get an exclusive look at some of the other resource tiles! If you recall back to the 2nd devlog, we had a discussion about the “types” of resource tiles we wanted. Essentially, there should be some variety between the more stoney/shiny elements and the general vegetation/life. The idea here is that anything can be considered a resource in this world.</p>
<p>Here is the result!</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1653958828116/k-4Y6Obj_.png" alt="image.png" /></center>

<p>While these are always subject to changes, I think they do an excellent job of capturing the vibe of each ring. With the world generation, many of these resource tiles will have animations of particle effects to make them stand out further. The more motion we can add into the world outside of the player, the more the player will want to explore.</p>
<hr />
<p><strong>What’s Next?</strong></p>
<p>Usually this section is more of a surprise, but given the 50+ mentions of the upcoming world generation, I bet you can guess what is coming next! I will say that the game is coming together more and more everyday. With several references to past devlogs and changes to existing systems, the game is slowly transitioning from the “core features” phase into the “add new side systems and content.”</p>
<p>While it will be quite a bit longer until any sort of alpha stage is reached, this time is just as valuable for gathering critical early feedback. Definitely let me know what you think either in the comments below or through any of the other social platforms (socials tab)</p>
<p>Thank you as always for your support!</p>
]]></content:encoded></item><item><title><![CDATA[How To Balance Your Game]]></title><description><![CDATA[Balancing any game is a difficult, and dare I say it, near-impossible task. It is especially difficult from the development side, where you are trying to ensure the player experience feels fair when the final product has not yet been realized.
With t...]]></description><link>https://www.sparkfulstudios.com/how-to-balance-your-game</link><guid isPermaLink="true">https://www.sparkfulstudios.com/how-to-balance-your-game</guid><category><![CDATA[Discuss]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[gaming]]></category><category><![CDATA[#howtos]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 24 May 2022 00:40:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/XJXWbfSo2f0/upload/v1653352573982/lEZcpOI_N.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Balancing any game is a difficult, and dare I say it, near-impossible task. It is especially difficult from the development side, where you are trying to ensure the player experience feels fair when the final product has not yet been realized.</p>
<p>With this, we need to have a couple methods for balancing our games that we can rotate between. </p>
<p>Let’s begin!</p>
<hr />
<p><strong>Make the character overpowered</strong></p>
<p>This idea is prompted from personal experiences with MMO’s. As they tend to retain player bases for many years and require constant updates of new content, they often struggle with balancing. The conventional method of “leveling up” is exciting when going from 1 to 20, but after several years when you have max levels nearing 200 under that same scale, it’s overwhelming. It also becomes challenging to create more interesting encounters in PvE and PvP, where players know exactly how to defeat enemies.</p>
<p>It appears that a bit more forward thinking would help balancing from the start. Essentially, I recommend during playtesting to make everything super powerful and wild. Perhaps the player can collect 100 resources at a time, have endless ammo, or do 15 jumps in rapid succession while midair. The goal is to see how crazy your mechanics can get, and then scale back down from there. You want to find the point in which the player feels powerful without jeopardizing the core experience of the game. </p>
<p>With this baseline established, you can now break up the “maximum power” of your character to scale with the game. This also helps with adding content - if you have an equipable item that gives stats nearing the overpowered threshold, then you can better determine rarity or adjust the values accordingly. Additionally, this prompts the idea of “resets” where the player may retain certain abilities but restart their rank (in order to level again further).</p>
<hr />
<p><strong>Mix and match certain abilities</strong></p>
<p>This method may not apply for all games, but it aims for flexibility where possible to easily make changes.You want to run the most problematic scenarios where the game is unbalanced, and then randomly cut out certain elements. By using trial and error, you can narrow down which specific aspects of your game lead to an unbalanced experience. </p>
<p>The interesting part of this method is that you may discover items that actually need to be improved. Through different combinations, certain items will stand out that are not having as much impact. By making those items stronger, the unbalanced elements will start to feel more fair for the player.</p>
<hr />
<p><strong>Gather feedback from others</strong></p>
<p>While we can continue to make changes and re-balance our own games, there will always be inherent bias as developers. We have certain expectations for how players will navigate games and our testing often focuses on those intended experiences. Even if your game feels balanced, players will likely adopt different play styles that will open up problematic solutions. </p>
<p>The best example in this case is online card games. Developers intentionally release new cards that they expect players to synergize into their own decks. Their testing may be extensive (even utilizing the previous methods), but with the number of cards increasing there will naturally be combinations left untouched. This is why card games require continued updates past release to tweak card stats and abilities. Assuming your playerbase is greater than 1, as an indie game developer your audience will exponentially provide more data behind the state of your game. </p>
<p>This is where the method branches off by genre. If your game is able to track this data and aggregate it elsewhere, you will be able to see the real-time information and plan out the necessary changes. If you are unable to gather this live data, then you will want to rely on communication channels with your playerbase to see how they feel. I would recommend a poll with several different options available. This allows every user to contribute and feel like they have an impact on the game. Not every piece of feedback may apply (time constraint, intentional mechanic, etc…), so lean more into the feedback where a majority of players responded similarly.</p>
<hr />
<p><strong>TL;DR</strong></p>
<ul>
<li>Trying to balance a game is challenging, especially with your initial rounds of development, so do not be discouraged if it does not resolve the first time!</li>
<li>Approaching it from different angles and giving yourself time to analyze both personal and audience feedback will go a long way. Experiment with other methods as well outside of the above points.</li>
<li>The best way to set yourself up for success is to design your games in a flexible way so that you can more easily make adjustments and run through multiple tests.</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #10 - Finalizing Quests, Adding Dialogue]]></title><description><![CDATA[A very special number has been reached - a double-digit number in fact! We are officially 10 devlogs into Echolite now! This equates to about 4 months of dedicated work on the game, which I consider a huge success. While there is a ton more work to b...]]></description><link>https://www.sparkfulstudios.com/echolite-update-10-finalizing-quests-adding-dialogue</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-10-finalizing-quests-adding-dialogue</guid><category><![CDATA[Godot]]></category><category><![CDATA[development]]></category><category><![CDATA[coding]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 17 May 2022 00:28:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652747060373/XnB_TsZl9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A very special number has been reached - a double-digit number in fact! We are officially 10 devlogs into Echolite now! This equates to about 4 months of dedicated work on the game, which I consider a huge success. While there is a ton more work to be done, I think this milestone helps show that finishing the game is possible. </p>
<p>Thank you so much for your support!</p>
<hr />
<p><strong>Finalizing Quests</strong></p>
<p>With the last devlog, we set up basic quest details that allowed the character to select available quests based on several variables. These are all triggered by NPC interactions which helped bring some much needed life into the otherwise barren world. One crucial feature was purposely left out though…actually completing the quests!</p>
<p>There are a few items to consider with a questing system. First, we have to understand the types of quests that the player can complete. We should offer multiple types in order to add variety to the player’s experience. Collecting a few geodes may be exciting at first, but after a few dozen times it becomes a grind that many players are not willing to commit to long-term.</p>
<p>So, what kinds of quests are planned?</p>
<ul>
<li>Collect - Fairly standard, but collecting can also be performed by machinery so less grindy. Plus, it does not rely on combat since that feature is not planned for the game.</li>
<li>Talk - The player needs to talk to specific NPCs in order to progress. A lot of the magic here will boil down to the quality of the dialogue, but for now we will focus on the logic.</li>
<li>Discovery - We can highlight a specific location on the map with an Area2D that will auto update a “locations visited” attribute on the character. The player will need to reach that location before reporting back.</li>
<li>Statistics - This will fit into the achievements system since statistics will need to be maintained in order to trigger certain statistics. We can use those same numbers for the more unique quest "events" outside of the other three that are more standard and restrictive in design.</li>
</ul>

<p>It is worth noting that these titles are moreso for internal reference - to the player, quests will not have a specific label. The dialogue will provide unique context around specific quests without being overly direct about the type of quests the player is completing.</p>
<p>My personal favorite is “statistics” as it enables a more flexible way of writing quests. Rather than focusing on a specific number of actions, quest completion can be tied to external events in the world or specific character relationships. It brings a more immersive experience while still allowing the player to feel in control. </p>
<p>As these types of quests will look at different systems in order to evaluate quest completion, they need to be labeled on the data side. This means updating our questing JSON from last devlog with special tags like "Talk" or "Collect":</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746614417/Ycf8ubzvu.png" alt="image.png" /></center>

<p>Since we already have the file open, we may as well add in the other necessary details. Based on the quest type, we can supply other fields needed to evaluate the status of a quest. For example, if we are collecting resources, we should specify what types of resources and how much:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746489481/nnWAQujj-.png" alt="image.png" /></center>

<p>The second consideration for a questing system is how to reward a player, especially in how those rewards scale with the player. This is where a lot of our early planning for the interactions in this game come into play! We can step a bit outside standard game design (at least to my limited knowledge) and scale quest rewards differently. </p>
<p>In many of the games I have enjoyed, quests will start off with small rewards, such as “25 experience points.” When reaching the late stages of the game however, this number quickly skyrockets to the millions with no realistic end in sight. One way to solve this is with rankings, but that only addresses the actual number from going up and not necessarily making it easier for the designer to plan out quests. </p>
<p>For Echolite, we can bring a closer relationship between quests, dialogue, and ultimately the NPCs we interact with. As a new robot, the nomads have no existing connections in which their rewards will be small (as expected). The more the player interacts with the NPCs though, the more likely they are to give better rewards. </p>
<p>In terms of the logic, we can have different statistics for each NPC that act as multipliers to the various rewards a player can receive. This allows things like “items given” and “experience earned” to properly scale without setting larger values for every quest. It also gives more weight to the player’s decisions during gameplay as they are in charge of what rewards are most valuable. </p>
<p>To keep things simple, a few attributes have been added to NPCs. They do not apply those multipliers to rewards <em>yet</em>, but the data is being saved for future implementation. A proper “relations” GUI will be built down the line and the rest of my TED Talk will appear in that update :)</p>
<p>As a teaser, here is what those stat symbols look like:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746859553/DcXIgXAHx.png" alt="image.png" /></center>

<p>You can see those discussions from the “All Things Machines Part 2” devlog applied here. For GUI elements that are moreso icons than backdrops, we have our own 4 color palette to use. This provides a nice level of consistency that helps make the experience feel more complete.</p>
<hr />
<p><strong>Dialogue System</strong></p>
<p>So, how does the player improve relations with NPCs? That is the fun part - dialogue choices! We return to our quest JSON and add in some new sub-dialogue elements. These entries will detail four “responses” the player can choose from alongside which attributes are impacted. We utilize tags like “SUB” and “ADD” to help signify how the statistics will update, but the player will not be aware of these items until they are chosen. This encourages the player to consider what dynamics should be built with each NPC, especially as they hold different values and perspectives about the world.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746670076/4J2mkwiWY.png" alt="image.png" /></center>

<p>For our dialogue system, we can code it nicely into the quest options logic from the last devlog. When the player approaches an NPC, it will first evaluate any quests that apply to them. If any actions are needed, they will proceed to do so before showing any potential new quests. The NPC may need to finish a quest with the player or even resolve mid-dialogue as part of an ongoing quest chain.</p>
<p>We can’t just add a giant system like this without some more artwork though! Credit to <a href="https://opengameart.org/users/buch">Buch</a> once again for his amazing Golden UI assets - like previous works, I have taken elements of his Golden UI atlases and stitched together some new ones. I really like how this dialogue interface turned out:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746430754/oqKR621f-.png" alt="image.png" /></center>

<p>For animations, a few small effects will add some major “oomph” to the experience. If that isn’t a real word…well, it should be! With the text, the usual dialogue reveal motion should work. Godot offers a nice property for text along the lines of “percent visible.” Using some tween magic, the dialogue is revealed over a set period of time. It is a super simple effect but it adds so much in convincing the player that the NPC is actually talking. </p>
<p>Another effect is the blinking/moving “clicker.” There really should be an official term for this in the game dev world if there isn’t already. Essentially, an indicator will appear in the corner of the dialogue panel that rotates and bobs up and down to tell the player to click. I could have used a tween for this as well, but branching out into different nodes is always good for learning. The AnimationPlayer proved to be useful in adding both effects at once. </p>
<p>Finally, a little popup should be leveraged near the experience bar and dialogue panel for when game elements are changed like experience or NPC stats. Here is a (somewhat buggy but proud) gif of these effects in action:</p>
<center><iframe src="https://giphy.com/embed/usFMpBlgtZlM62s6Hq" width="480" height="267" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/usFMpBlgtZlM62s6Hq">via GIPHY</a></p></center>

<p>And finally, here is how the dialogue choices are presented to the player:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652746342195/JJwbfhOVN.png" alt="image.png" /></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>While NPCs need a lot more love in the future, it’s time to branch out further with the game! Our eyes are set on some new, exciting world generation. The next devlog will provide the prep work for this massive change before diving into the bulk of the work. This includes lighting revamps and new terrain elements.</p>
<p>Once again, thank you so much for the incredible support! If you are enjoying these devlogs, please consider adding some reactions and sharing it around your own communities :)</p>
]]></content:encoded></item><item><title><![CDATA[Should I Develop in Unfamilar Genres?]]></title><description><![CDATA[Well...should I develop in unfamiliar genres?
This is indeed one of those questions where the answer is “it depends.” Many factors will influence your answer, such as comfort level with development, what you aim to achieve with your game, established...]]></description><link>https://www.sparkfulstudios.com/should-i-develop-in-unfamilar-genres</link><guid isPermaLink="true">https://www.sparkfulstudios.com/should-i-develop-in-unfamilar-genres</guid><category><![CDATA[development]]></category><category><![CDATA[life]]></category><category><![CDATA[learning]]></category><category><![CDATA[Inspiration]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 09 May 2022 23:53:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/p0j-mE6mGo4/upload/v1652140228995/j3edS2cZd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Well...should I develop in unfamiliar genres?</p>
<p>This is indeed one of those questions where the answer is “it depends.” Many factors will influence your answer, such as comfort level with development, what you aim to achieve with your game, established skill sets, and so on. In this dialogue, I’m going to give some pointers to help determine how far out into unfamiliar genres you should branch out. At the very least, it does not hurt to try!</p>
<p>Here are some steps you can walk through to help make an informed decision:</p>
<blockquote>
<ol>
<li>Ask Why You Want to Lean Into a New Genre</li>
<li>Play The Top Titles In New Spaces</li>
<li>Determine Which Aspects Stick Out to You</li>
<li>Experiment Through Tutorials</li>
</ol>
</blockquote>
<p>Let's begin!</p>
<hr />
<p><strong>Ask Why You Want to Lean Into a New Genre</strong></p>
<p>There are dozens of reasons for mixing up the type of game you want to develop. I would assume it narrows down to any of the following cases:</p>
<ul>
<li>You want a fresh development experience from what you’ve done before.</li>
<li>You believe it’s a more niche genre where your game is more likely to succeed.</li>
<li>You want to expand your knowledge with game development.</li>
<li>Your ideas (perhaps inspired by other games in the genre) will best fit in a new style.</li>
</ul>

<p>All of these are valid points - I would not argue against any of them as they all have positive intentions. What separates them though is the stage of development you are likely at. If you are making your first game, for the sake of staying motivated and having clarity in your design, it may be best to stick with the genres you love. There are popular titles in all game genres, so you shouldn’t worry about picking the “wrong” genre. </p>
<p>When indie game devs talk about avoiding certain genres or styles, such as “pixel art, 2d, top down RPG,” they are often noting that the market can feel oversaturated with those types of games. While this is correct, it shouldn’t steer you away from making a game in that space. The oversaturated market means there are more people who will potentially find interest in your game. Additionally, you have more reference points for making ideal design decisions when developing your first game. So for those who are wanting to explore an unfamiliar genre because of the external pressures surrounding familiar ones, perhaps return to those original ideas you have.</p>
<p>If you otherwise feel comfortable with your current game dev skills and are looking for that fresh experience with a new genre, I say at least give it a try. The other points coming up support this direction, but at this time you can recognize that trying out new genres can be a rewarding experience. It may just be temporary as you find certain genres are just outside of your preferences. Overall though, looking to change things up and expand your knowledge will provide benefits in the long run.</p>
<hr />
<p><strong>Play The Top Titles In New Spaces</strong></p>
<p>No matter the situation, if you’re still unsure on if you should develop in unfamiliar genres, the next best step would simply be to play games of that type!</p>
<p>In playing through the popular games, you may just find that your idea either best fits or contradicts the key elements of that genre. You will have a better understanding of what makes that genre “tick” and if that given “tick” is something you can work off of.  Another neat part of this step is that you may have fresh ideas for how to approach the genre. There may be a certain mechanic that is overused or hasn’t been mixed up across the popular games. Having an “outsider” approach in this case will appeal fairly well to the target audience (assuming the core mechanics are not dropped). </p>
<hr />
<p><strong>Determine Which Aspects Stick Out to You</strong></p>
<p>If you’re still undecided, then evaluate what parts of the above gaming process stuck out to you the most. The answer may be that developing in an unfamiliar genre is too foreign at that time, but there are elements you want to pull. For example, you may not enjoy the grindy aspect of RPG’s, but the side-mechanic of cooking as part of crafting could work in another genre you love. </p>
<p>When you cross these elements across genres, you’re more likely to hit a unique game loop that players unexpectedly fall in love with. It’s also a bonus that audiences from different gaming backgrounds will connect with your game. Even just incorporating one or two elements from another genre will help bridge relationships with audiences you otherwise may have missed.</p>
<p>The one pro tip here is to not mash random game systems together - they need to make sense in the context of gameplay. </p>
<hr />
<p><strong>Experiment Through Tutorials</strong></p>
<p>Personally, my ideas come up best during development, as I’m seeing systems come together and they are continually tested. This may also be the case for you, in which I would recommend following a tutorial or two under a different genre to see what clicks. Even if you decide early on that a new genre would be perfect for your game idea, I still recommend going through some initial tutorials. The development process always differs from how you picture your game. </p>
<p>Going through tutorials in new genres are a strong indicator on if it’s worth the time invested to branch out. Especially for circumstances where a game needs to be released in a timely manner, going through drastic development differences like from 2D to 3D may interrupt that goal. </p>
<hr />
<p><strong>TL;DR</strong></p>
<p>As you’ve seen, the decision to branch out into unfamiliar genres for game development is not an easy one to make. Your overarching goals, timelines, and skill sets will influence this decision, among other factors, but it’s certainly worth considering throughout your indie game dev career. The following items we reviewed will help you in weighing the pros and cons, but I trust you’ll make a great game regardless!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #9 - Introducing NPC's, Exploring Quests]]></title><description><![CDATA[We are back to our regularly scheduled program! After an exciting 2-part devlog setup to introduce machinery into the game, we are mixing up development again by introducing another core feature - NPCs and questing. 

Initial Planning
NPCs should add...]]></description><link>https://www.sparkfulstudios.com/echolite-update-9-introducing-npcs-exploring-quests</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-9-introducing-npcs-exploring-quests</guid><category><![CDATA[development]]></category><category><![CDATA[Developer Blogging]]></category><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[gaming]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 03 May 2022 02:55:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1651546357227/eMGdtVE80.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are back to our regularly scheduled program! After an exciting 2-part devlog setup to introduce machinery into the game, we are mixing up development again by introducing another core feature - NPCs and questing. </p>
<hr />
<p><strong>Initial Planning</strong></p>
<p>NPCs should add some much needed life into the world, but the challenge is making them believable to the player. Similar to how we added resources, machines, and more, we tried to find ways to make them complex. This complexity should not represent difficulty though. Instead, complexity means that there is a certain amount of depth that supports multiple playstyles.</p>
<p>For NPCs, this means that both their personalities and functions should be multifaceted. It is better to have a limited number of NPCs with several interactions in the world than a large number that only serve a single purpose. Here are the ways we can achieve that:</p>
<ul>
<li>NPCs have more than one job/function</li>
<li>NPCs move around the world</li>
<li>NPCs allow the player to choose how they respond</li>
<li>NPCs change the environment over time</li>
<li>NPCs have established relations with one another outside the player’s view</li>
</ul>

<p>Some of these items (such as AI movement) will come later since this will require other features to be implemented first. With multiple functions, we can center this around our initial NPC designs. </p>
<hr />
<p><strong>NPC Designs</strong></p>
<p>Thankfully, I did not have to look too far for some guidance with character creations! Thanks to <a href="https://opengameart.org/users/buch">Buch</a>, who you may recognize from previous devlogs in inspiring the game’s UI, they have also designed various character portraits. This is the original state for reference:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651545114851/a21cJqNKz.png" alt="image.png" /></center>

<p>These colors are quite vibrant however, in which a recolor is needed. The idea here is that similar to the UI being an “inner” HUD of the robot/player, the character portraits would be renderings of the people he interacts with. Given this logic, the characters can be reskinned using the UI color palette and then setting it behind gray backgrounds to help stand out. Here is the complete look (minus some characters not being used as they were not needed in-game): </p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651545161313/VXXS4Xe4d.png" alt="image.png" /></center>

<p>Free starter assets can only get you so far though! I need to continue working on my art skills whenever possible, and floating character portraits in the world are not quite “believable.” With these portraits, I went through many failed attempts before nailing the desired look within the world. It likely still needs a lot of work, but here is how they look so far!</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651545375409/EZ8nDEm1N.png" alt="image.png" /></center>

<p>What helped the most in designing these figures was sticking to a basic colored outline of the head, torso, arms, and legs. This provided an easy model to try out different looks while keeping the figures consistent and scaled correctly in the world. Perhaps my favorite phrase (all indie game devs can relate), but in terms of animations, that will come later!</p>
<hr />
<p><strong>Quest Options</strong></p>
<p>With NPCs in the world, we can finally dive into questing! We will tackle the initial setup here, and then (spoilers!), we will finish it in the next devlog. Questing is rather straightforward as many games approach it the same way. While we could deviate from standard design, staying true to certain proven subsystems is likely the route to take in this case. Essentially, we want the following to happen:</p>
<ol>
<li>Player approaches an NPC</li>
<li>Within a certain radius, they can interact</li>
<li>The NPC searches through available quests</li>
<li>If any are found, pull them up in a panel to be selected</li>
</ol>

<p>One small thing has been overlooked though…<em>gasp</em>....we haven’t added any quests! Like all other data in the game, we can create a QuestData JSON file. Here is how some of the starting data is structured for what we need right now:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651545867871/mIAqnWcq6.png" alt="image.png" /></center>

<p>Finally, we can get into the actual logic. Offering 100s of quests all at once to the player would be overwhelming so we need a few factors in place that determine when a quest can be selected. As usual, another fancy list (in no particular order)!</p>
<ul>
<li>Pre-req quest completed?</li>
<li>Correct player level?</li>
<li>Talking to the right NPC?</li>
<li>Is the quest already selected?</li>
<li>Is the quest already completed?</li>
</ul>

<p>For player levels, we can set some basic numbers for testing until questing is completed, as that will reward XP to level up. For checking the status of each quest, this will be handled by the one and only…arrays! If a quest is already completed, then there is no reason to display it again. If a previous quest that is required however shows up in this completed array, then that should allow us to continue. Furthermore, if a quest is already an active quest, then we can simply ignore it. This is regardless of its status, since active quests could have just been picked up or are ready to be completed by the NPC. For now, we leave a fun little comment in the code to add this next time.</p>
<p>The minimal GUI artwork here is not too wild compared to previous work, so you can just enjoy the magic now! Just excuse the placeholder location - a proper housing update will come :D</p>
<center><iframe src="https://giphy.com/embed/jDvovEjLORS1JhvAMh" width="480" height="267" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/jDvovEjLORS1JhvAMh">via GIPHY</a></p></center>

<hr />
<p><strong>What’s Next?</strong></p>
<p>The momentum thus far with questing will continue into the next devlog. When the player selects a quest, they will finally be able to complete it! This does mean that multiple different quest types will be added in order to provide some variety in the gameplay. The NPCs have also been rather quiet - that will change soon through a formal dialogue system.</p>
<p>As always, thank you for the support! &lt;3</p>
]]></content:encoded></item><item><title><![CDATA[How To Playtest An "Idea"]]></title><description><![CDATA[Playtesting in game design is generally regarded as a way of running through different iterations of a game to track engagement, identify bugs, and gain a sense of “game feel.” It is typically conducted in a technical sense, such as “playing x levels...]]></description><link>https://www.sparkfulstudios.com/how-to-playtest-an-idea</link><guid isPermaLink="true">https://www.sparkfulstudios.com/how-to-playtest-an-idea</guid><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><category><![CDATA[ideas]]></category><category><![CDATA[planning]]></category><category><![CDATA[Motivation ]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Tue, 26 Apr 2022 02:29:19 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/eBRTYyjwpRY/upload/v1650940026273/eMLCQn7V4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Playtesting in game design is generally regarded as a way of running through different iterations of a game to track engagement, identify bugs, and gain a sense of “game feel.” It is typically conducted in a technical sense, such as “playing x levels” or “spawning x enemies” to see how the game handles interactions and how the player feels about them. Being able to properly test games is a key step to success as it helps games lean into their strengths while correcting their weaknesses. The issue though, is that this occurs in the mid to late stages of development while features are still being built and polished. </p>
<p>If we want to identify what works well in a game during the earlier stages of development, then we need to figure out how to playtest an idea. It sounds silly because an idea is intangible - something we can never physically navigate or directly hand to testers. With testing being a critical part of feedback though, the challenge is worth pursuing so that we can make the most informed game design choices before investing more time and energy.</p>
<p>So, how can we playtest an idea? This is where we bust out a fun list, a “top x ways…” list, if you will! Here they are:</p>
<blockquote>
<ol>
<li>Scenario-Building</li>
<li>Listen Outside The Box</li>
<li>Make It Physical</li>
<li>Rotate Ideas</li>
</ol>
</blockquote>
<p>Let’s dive in!</p>
<hr />
<p><strong>Scenario Building</strong></p>
<p>This strategy involves the famous question that every game developer loves to ask - “what if?” We inherently love to ask this question because it gives us a way to expand ideas while still keeping them connected. For playtesting then, we shape this question to better understand the nuanced behaviors of our ideas. Let’s say that we pitch an idea for a size-based inventory system where an inventory holds a certain number of slots and different items will take up a different amount of slots. To playtest we may ask…</p>
<ul>
<li>What if the player wants to swap the placement of items with different sizes?</li>
<li>What if the player is continually left with a single empty slot?</li>
<li>What if the player wants to organize items based on size?</li>
<li>What if an NPC wants to give the player an item?</li>
</ul>

<p>These questions continue until every situation has been exhaustively identified. You will never anticipate every scenario unfortunately until the idea is brought to life, but many of those design headaches can be caught upfront. If the questions are somewhat answered, then your idea is likely solid and just needs some refinement. Conversely, if all the questions are left with no easy solution, then a completely new idea may be needed. </p>
<hr />
<p><strong>Listen Outside The Box</strong></p>
<p>Leading off the previous strategy, there is no way to identify every potential scenario. As individuals, we have limited insight into the pros and cons of our ideas. It is easy to get attached to them initially and ignore some of the underlying flaws. To help avoid this, we can turn to other people for feedback. Ideally, these are people who are not close to you and are not necessarily full-fledged game designers. Finding online forums such as Reddit to gather feedback is a great way to meet these kinds of people. </p>
<p>In a concise, organized manner, lay out the idea to these people whether it is the central premise of the game or a specific subsystem/feature. A great way to get people to respond is to present ideas as a choice. Continuing the inventory example, you could propose two ideas, such as a sized-based inventory system versus a weight-based one. By phrasing it as “which idea do you prefer,” you will find that people are naturally inclined to respond because they feel their choice is the best one. It gives direction for how people can respond and allows you to narrow down ideas.</p>
<hr />
<p><strong>Make It Physical</strong></p>
<p>Nope, this does not mean go straight into prototyping or full-fledged coding! Instead, we want to add physicality to our ideas and arrange them to see how they are interconnected. One great way to do this is to put ideas on separate Post-It notes and place them on the wall. Ideas that are closely related should be grouped together. Then, as you discuss how each idea relates to one another, you can move them around the wall. This allows you to see if any connections between ideas are impacted by new ones. </p>
<p>For example, we may have a bunch of ideas surrounding a statistics system. Then, we introduce separate ideas for quests that rely on tracked data as well as an achievement system. By laying them out physically, we can see how both the questing and the achievement subsystems both rely on a strong statistics system. In this, we can reevaluate how the statistics system can be set up to handle operations with multiple parts of the game at once. </p>
<hr />
<p><strong>Rotate Ideas</strong></p>
<p>Similar to the physical strategy, we can also use substitution as a way of playtesting ideas. When coming up with an idea, start making small variations to it and saving those as separate ideas. Then, when trying to sequentially line up different systems that all interact with one another, start swapping ideas with each small variation to see which one fits best. Here is an example:</p>
<center>Finish Quest &gt; Earn Reward &gt; Add Item to Inventory</center>

<p>In this example, we would have different ideas for rewarding the player:</p>
<ul>
<li>Display above character’s head</li>
<li>Float towards player (magnet)</li>
<li>Straight to hotbar</li>
<li>Drag over from pop-up single slot inventory</li>
</ul>

<p>All of these involve earning rewards, but they feature different ways of accomplishing that same task. We can walk through this specific case and rotate between the various “middle” ideas to see which path is the most engaging. </p>
<hr />
<p><strong>TL;DR</strong></p>
<p>Playtesting does not have to be reserved until the game is fully developed! Experiment with playtesting your initial ideas to iron out potential problems and nail down the vision for your game before drawing a single piece of artwork or typing a single line of code. Your future self will thank you!</p>
]]></content:encoded></item><item><title><![CDATA[Echolite - Update #8 - All Things Machines! - Part 2]]></title><description><![CDATA[Last devlog, we accomplished the foundational work for machines, essentially creating savable objects and allowing them to be placed in the world. While they look super cool once placed, they currently do not serve any functional purpose. That is abo...]]></description><link>https://www.sparkfulstudios.com/echolite-update-8-all-things-machines-part-2</link><guid isPermaLink="true">https://www.sparkfulstudios.com/echolite-update-8-all-things-machines-part-2</guid><category><![CDATA[Game Development]]></category><category><![CDATA[Games]]></category><category><![CDATA[gaming]]></category><category><![CDATA[Developer]]></category><category><![CDATA[development]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 18 Apr 2022 23:53:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1650325350187/R3CEDhr6z.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last devlog, we accomplished the foundational work for machines, essentially creating savable objects and allowing them to be placed in the world. While they look super cool once placed, they currently do not serve any functional purpose. That is about to change!</p>
<hr />
<p><strong>Planning</strong></p>
<p>Features are only worth including in a game if they add value in multiple ways. Crafting gives a use to resources, but that action alone is not engaging unless some of the resources it produces provide depth to gameplay. Having machines generate resources is a step in the right direction, but it’s not as engaging as it could be. When I set out to add factory-building to this game, I wanted it to feel fresh and different. Factorio and Satisfactory lead the factory-building genre with much of their gameplay revolving around automation and optimization. It's geared towards a niche audience (myself included), so we need to think of ways of expanding factory building to players who aren’t necessarily committed to the “numbers” side of these games.</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650322643640/SGr7INIhi.png" alt="image.png" /></center>

<p>Part of this challenge will naturally be solved by the roguelite element of going into the darkness and back. This will bring more importance to machines, since they allow the player to “make a mark” in the world and collect resources without having to risk their life every time. As a bit of a tease too, we will eventually add objects like conveyor belts so the player can have resources come towards them without venturing out. </p>
<p>The other part of this challenge can be solved by something “custom” - upgrades! We can allow the player to sink additional resources into their placed machines in order to change how they operate. This is a solid approach for a variety of reasons:</p>
<ol>
<li>It gives general gameplay more value. Instead of placing a machine and calling it a day, the player is now given several choices that allow them to form their own gameplay styles. The players mentioned above who still wish to automate and optimize can do so by maxing out machines and messing around with different configurations. Conversely, players can just place a machine, maybe pick one or two upgrades, and still progress perfectly fine without ever touching it again.</li>
<li>It gives resources more value. The player can choose to put resources into basic crafting or into existing machines. Essentially, they get to lean into whichever option they feel will help them progress faster.</li>
<li>It gives crafting more value. When a player creates machinery, they are investing a few resources for an item that offers tons of customization. It is like creating several objects and merging them all into one.</li>
<li>It gives placement more value. If a player wants to have multiple copies of machines with different configurations, they can choose to arrange/group them in the world based on their primary function.</li>
</ol>

<p>So, you may ask…what kind of upgrades are there? Here ya go!</p>
<ul>
<li>Loot Tables - Each tier in this category offers a new set of potential resources that can be generated by the machine. For example, you can try to go for a more “focused” tier that reliably offers a few different average resources or a “wider” tier that could potentially offer the worst or best resources.</li>
<li>Fast production - Each tier in this category decreases the amount of time it takes the machine to generate a resource.</li>
<li>Increased production - Each tier in this category can raise the number of resources generated at once by the machine.</li>
<li>Auto-Upgrade - Each tier in this category will present a list of resources that, if generated by the machine, will automatically become an improved version. For example, if the machine is about to generate “Emerald Shards,” it may turn those into “Refined Emeralds.”</li>
</ul>

<p>Already you can begin to see how these upgrades intersect. The player may choose a loot table tier that offers tons of different resources, then stack an auto-upgrade tier to turn the worst potential resources into better ones. Some players may choose to focus entirely on one upgrade category while others will rely on a mix of them. </p>
<p>Perhaps the best part of this “upgrade” mechanic is that it continually makes early game objects relevant. The player may need rare resources in the late-game in order to reach the highest possible upgrade options on basic machines. Or, the player can earn rare resources through better upgrades that allow them to create end-game objects. Even as the player ventures further out into the world, the earlier work they accomplished never feels wasted. They won’t need to discard/swap machines for newer ones and can instead focus on improving their existing machines to better fit new goals.</p>
<hr />
<p><strong>Data Prep</strong></p>
<p>Similar to other aspects of the game, these upgrades offer established options. Due to this exact data, we can store it in additional JSONs and then reference them as needed. With how large these upgrade categories could become with multiple tiers for each machine, separating them out into separate JSONs is likely the safest option. As an example, here is how the loot table JSON appears:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650323027594/qPocBubLI.png" alt="image.png" /></center>

<p>I think it is valuable to note why I chose to use JSONs in my game. Initially, I was hard-coding my data into scripts because I wanted everything to be “in-editor.” You can imagine the frustration later on as the project grew with numerous moving pieces. It became more difficult to find the spots where changes needed to be made, making the entire process of testing an absolute nightmare. By switching to JSONs, all of the upfront information used in the game is finally organized in one place and easy to manage. This is likely not a novel concept for most developers out there, but it is worth rehashing for the beginners like me out there!</p>
<hr />
<p><strong>Tying It All Together!</strong></p>
<p>Now that the data is organized, we can dig into the visual aspects of working with machines. First, we need some assets that denote available resources with machines. Cue the “it’s not much, but it’s honest work” meme:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650323152725/miTkbI8n0.png" alt="image.png" /></center>

<p>The timer that sits above a machine will simply use text, so luckily no custom artwork is needed there.</p>
<p>Moving to the upgrade categories, we need icons that help represent what that upgrade does. This means a list icon for loot tables, arrows for increased production, and so on. Here is how the icons turned out:</p>
<center><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650322853738/J0OEVnvFT.png" alt="image.png" /></center>

<p>The specific color palette used is rather interesting. You may recognize its prior use in “filling” the resource collection bar that appears above the player when they dig for resources. After using these four colors, it made me consider the use of consistent coloring for icons and other “minor” aspects of GUI panels. We already have a set color palette for the world/environment and larger GUI elements, so another consistent palette for items like icons and indicators is incredibly valuable. Expect to see more of it show up in future features!</p>
<p>Finally, we can design the actual upgrade interface. The nice aspect of this interface is that it merges a lot of the tools we have already created in the past. We are essentially crafting, but this time the output is an unlocked tier instead of an item. Based on which upgrade category is selected, the related tiers will show up on the second page. This allows the player to supply the necessary resources in order to “unlock” and set a certain tier. Here is the final result:</p>
<center><iframe src="https://giphy.com/embed/DaMNl2b654JR5jJixe" width="480" height="272" class="giphy-embed"></iframe><p><a href="https://giphy.com/gifs/DaMNl2b654JR5jJixe">via GIPHY</a></p></center>

<p>While some components like the description field, unused upgrade slots, etc... will need some additional work to wrap up this upgrade feature, the current progress should suffice for now. I would love to hear what you all think!</p>
<hr />
<p><strong>What’s Next?</strong></p>
<p>Adding basic machines into the game these last 2 devlogs has been an exciting endeavor, and while there are certainly more ways to expand it further, it is time to forge ahead with more core features! Litebot is rather lonely in the world and luckily there are some survivors living in the base camp that he can interact with. They may also have some special quests to offer…</p>
<p>Thank you as always for the support!</p>
]]></content:encoded></item><item><title><![CDATA[How To Stay Motivated]]></title><description><![CDATA[This is arguably one of the most important articles I could ever write, because motivation is hard to come by as an indie game developer and it's something that everyone struggles with. We have all experienced the initial excitement of coming up with...]]></description><link>https://www.sparkfulstudios.com/how-to-stay-motivated</link><guid isPermaLink="true">https://www.sparkfulstudios.com/how-to-stay-motivated</guid><category><![CDATA[motivation]]></category><category><![CDATA[development]]></category><category><![CDATA[Motivation ]]></category><category><![CDATA[Inspiration]]></category><category><![CDATA[management]]></category><dc:creator><![CDATA[Sparkful Studios]]></dc:creator><pubDate>Mon, 11 Apr 2022 17:12:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/WkfDrhxDMC8/upload/v1649696909462/Cr0lOKoBD.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is arguably one of the most important articles I could ever write, because motivation is hard to come by as an indie game developer and it's something that everyone struggles with. We have all experienced the initial excitement of coming up with a game idea and digging quickly into development. That excitement can last for days, weeks, even months, but as you start to approach numerous months and years for a single game, that excitement fades.</p>
<p>Some of these ideas may seem obvious, while others may feel new - in either regard, I hope this article can reignite your spark of creativity for your games.</p>
<p>Here is a formal list of the 10 items that I follow as a means for staying motivated:</p>
<blockquote>
<ol>
<li>Motivation Is Fleeting, Drive Is Not</li>
<li>Mix Up The Work You Do Each Day</li>
<li>Take More Creative Liberties</li>
<li>Stay Accountable Through Communities</li>
<li>Be Inspired By Other Game Devs</li>
<li>Document Your Progress</li>
<li>Play Other Games</li>
<li>Make Your Goals Physical</li>
<li>Adopt The Growth Mindset</li>
<li>Don't Guilt Yourself!</li>
</ol>
</blockquote>
<p>Let's dive deeper!</p>
<hr />
<p><strong>Motivation Is Fleeting, Drive Is Not</strong></p>
<p>Using "motivation" is a bit misleading, in that it only really captures the feeling you have towards your game. Everyone is excited about their game, even when they don't feel like working on it. In this case, you're always motivated for your game. The real struggle is the "drive" that stems from motivation.</p>
<p>Drive is habitual - it's the ability to continue working on your game no matter the circumstance, because you have specific goals you want to achieve. It shouldn't be unnecessary pressure, but a simple commitment you make to yourself each day to work towards your objectives.</p>
<p>Start with something small each day - if all you do is make a square in MS Paint, import it into your project and call it "Placeholder NPC," then that's already good enough! Every small action you do each day brings you closer to your goal, and it's better than a base of 0% progress. These small actions quickly add up over time until you've suddenly made massive progress on your game.</p>
<p>Just commit to a small amount of development to your game each day, and evaluate from there on if you can commit additional time.</p>
<hr />
<p><strong>Mix Up The Work You Do Each Day</strong></p>
<p>Game development requires numerous jobs - engine based toggles, scripting, scene setting, environments, music, sound bites, modeling, artwork, texturing, fonts, marketing, level design, brainstorming, testing, etc…</p>
<p>The list could go on forever, because there's just so many different skills that game development requires. Use this to your benefit as a way of continuing to work on your game each day. You may randomly wake up in a "coding" mood and suddenly realize how to fix dozens of bugs. Other days, you don't feel like touching the actual game, and would rather work on community-building and promotion.</p>
<p>Use these feelings as an opportunity to mix duties up every day, and it won't always feel like a chore. I've often found that walking away from a certain aspect of game design for a few days will re-energize my thoughts later on, which enables greater creativity.</p>
<p>Indie game dev affords a luxury that many people dream of - YOU decide what you get to work on each day, and how much effort you put in - use this to your advantage to vary the daily grind!</p>
<hr />
<p><strong>Take More Creative Liberties</strong></p>
<p>Creativity is what fuels game development, and that simple reminder can help re-fuel your motivation. If a certain aspect of development has become tiring and frustrating, take the time to step back and evaluate the "why" behind what you're trying to achieve.</p>
<p>One example is with my inventory system, specific to dedicated chests in my world that could store items. I spent ages trying to set up item limits for stacked items in chests, and being able to evaluate groups of similar items. At a certain point, I asked myself why this constraint was even necessary. I had only applied it because the mechanic was wide-spread in the genre, but my own experience with it was often annoyance. I decided to drop it and allow any quantity of items to be stored, and this worked wonders! Players during testing have appreciated this small detail, and have</p>
<p>In the end, I was able to cut development time and create a more elegant solution that players enjoyed. It wasn't the original design in mind, but in an effort to stay motivated, taking those creative risks was exactly the confidence boost I needed.</p>
<p>Taking the time to be more creative and open to changes with elements of your game is a direct way to overcome roadblocks that can otherwise tank motivation.</p>
<hr />
<p><strong>Stay Accountable Through Communities</strong></p>
<p>What's interesting about this point is that I stumbled across it unintentionally. As I've continued learning more about game development, I have been able to connect with tons of amazing individuals through platforms like Discord.</p>
<p>Beyond the help that indie game devs afford one another, there's also a level of accountability that comes up. In tracking the progress of other games, I've found those people to be extremely honest about how their development has progressed or stalled. This leads to rounds of encouragement that is always appreciated.</p>
<p>Development can be lonely, but it doesn't have to be! All developers have similar end goals, so it only makes sense to connect with one another and foster a community of positivity that desires the best for everyone.</p>
<p>Use indie game dev communities as a mechanism of accountability - it's a great way to push yourself in the right direction again when the motivation fades.</p>
<hr />
<p><strong>Be Inspired By Other Game Devs</strong></p>
<p>In a similar vein to staying accountable, viewing the work of other indie game devs can greatly help with the creativity behind motivation. This is more dependent on how you operate, as some may find a struggle in comparing their works to others. I've found it to be inspirational, where seeing the neat projects other devs are working on pushes me to continue working in order to show off my own progress.</p>
<p>Seeing how other developers approach similar challenges to you can also help reshape how you approach problems. You may find that your own design may need to be reworked, or that the mechanic you thought was crucial to add to your game did not have the same payoff as expected.</p>
<p>I especially recommend watching indie game devlogs, where creators share not only the progress they've made, but the time and effort it takes each day to reach their goals. The player will only see the final product, but other devs can appreciate the amount of time it takes to produce a polished game.</p>
<p>Do not be intimidated by other indie game devs - allow their journeys to be a motivator in order to continue working on your own game.</p>
<hr />
<p><strong>Document Your Progress</strong></p>
<p>Perfectly connected to devlogs as an example, findings ways to concretely document the progress you make is a great motivator. It's easy to forget just how much work you've already accomplished when there's still a lot to do. I've enjoyed documenting progress through Discord, in that I take the time to write up what I achieved after a few weeks, what lessons I have learned if any, and what I aim to do the next time.</p>
<p>Documenting progress has all of these benefits:</p>
<ol>
<li>Builds up marketing skills by communicating in an effective, engaging tone</li>
<li>Provides a solid source of work completed at an overview level to help break down remaining work</li>
<li>Excites both players and yourself about changes and new features</li>
</ol>

<p>It doesn't need to be elaborate - simply logging different types of progress during development wraps up the work in a more satisfying way that keeps you motivated for the next bit of necessary work.</p>
<hr />
<p><strong>Play Other Games</strong></p>
<p>We make games because we love games! We shouldn't stop playing games just because we start to make them. It's like a musician no longer playing their instrument while trying to compose music - it's doable, but why restrict yourself in that way? </p>
<p>Playing other games is a way to relax from the stresses of development, and also becomes a small reminder of what features make games enjoyable for us. I would also encourage you to branch out into new genres, especially if the genre you are developing is identical to the games you enjoy playing regularly. Using elements of different genres is a great way to mix up your game, and brings a renewed look at design during development.</p>
<p>Don't push yourself to develop 24/7 - Continue to spend time playing games that you enjoy to build motivation for your own game.</p>
<hr />
<p><strong>Make Your Goals Physical</strong></p>
<p>Whether you're looking to make the next AAA game, simply entertain others, or even just make lots of money, we all have greater goals as part of the indie game dev dream. I would encourage you to write out your larger goals, and place it where you can see it every single day. Maybe that's above your desk, on your fridge, or next to your bed - wherever you know it will be visible.</p>
<p>Having this physical reminder of the goals you wish to attain through game dev helps keep the bigger picture in focus. Yes, you still want all of your smaller, manageable goals lined out for daily work, but it helps to keep your larger-than-life objectives at the back of your mind too.</p>
<p>You may feel motivation slipping when the minor details are confusing, in which a physical, visual reminder of your goals will allow you the space needed to not get too caught up in the daily grind.</p>
<hr />
<p><strong>Adopt The Growth Mindset</strong></p>
<p>If you've heard about the "Growth" mindset before, I don't blame you for rolling your eyes, as I have a similar reaction as well. Despite its cheesy approach though, I think some elements are certainly worth adopting.</p>
<p>Essentially, the "Growth" mindset details that you're never done learning, and that everything you do should be for the right reasons (ex: get good grades because you want to do your best, not because the pressure is there to). If anything, this represents the strong desire needed to achieve goals, and the acceptance that not everything will always work out like you intended.</p>
<p>For game dev, this especially comes into play when you're either lost on the direction of your game or development becomes stalled due to complexities. The aim here is to change your mindset from "this failure means the game won't be as good" to "I needed to fail in order to succeed."</p>
<p>If motivation is faltering because you feel your skills are lacking or that the game is too ambitious, try to channel this energy into productivity. Instead of thinking of how to get over the roadblock, think of how you can go around it.</p>
<p>When you change how you view "failure," you'll realize you never truly "fail" - you have just taken a unique path to fully understanding the vision for your game.</p>
<hr />
<p><strong>Don't Guilt Yourself!</strong></p>
<p>I conclude with this point to help relieve any pressure you may feel from indie game development. It's completely okay if you feel lost or confused on the different aspects of development. There's no single right answer for how to approach game development. If there was, then every game would be exactly the same.</p>
<p>Pushing yourself to constantly develop when you're not in the mood will only lower your motivation further. You may finish your game in incredible time, but I doubt it will match the vision you had for it as closely as you desired.</p>
<p>Take the time you need to step away from your game - We all need space for our creative processes to re-adjust, and there's no reason to deny that from yourself.</p>
<hr />
<p><strong>TL;DR</strong></p>
<p>Motivation is not something you can easily nail overnight. It is a renewed commitment each day to continue working on your projects to the best of your ability. You have a great game to make and we all look forward to seeing it - push through (without jeopardizing your well-being) and it WILL be worth it! </p>
]]></content:encoded></item></channel></rss>