<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Claudia Fernandes</title>
    <description>The latest articles on DEV Community by Claudia Fernandes (@claudcsf).</description>
    <link>https://dev.to/claudcsf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1156423%2F280c7487-5dc1-4797-a0be-fd34bb8195e9.jpg</url>
      <title>DEV Community: Claudia Fernandes</title>
      <link>https://dev.to/claudcsf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/claudcsf"/>
    <language>en</language>
    <item>
      <title>Choosing a Game Dev stack 📋 [thorough list of options]</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Thu, 28 Sep 2023 17:41:18 +0000</pubDate>
      <link>https://dev.to/claudcsf/choosing-a-game-dev-stack-thorough-list-of-options-36b1</link>
      <guid>https://dev.to/claudcsf/choosing-a-game-dev-stack-thorough-list-of-options-36b1</guid>
      <description>&lt;p&gt;Choosing the right game dev stack is no easy feat, particularly how everything will fit in the release pipeline. &lt;/p&gt;

&lt;p&gt;Here are some KEY areas where the right software can make a difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Game engine&lt;/li&gt;
&lt;li&gt;Audio design&lt;/li&gt;
&lt;li&gt;Artificial intelligence&lt;/li&gt;
&lt;li&gt;Physics&lt;/li&gt;
&lt;li&gt;Animation&lt;/li&gt;
&lt;li&gt;Multiplayer&lt;/li&gt;
&lt;li&gt;Other specialized rendering&lt;/li&gt;
&lt;li&gt;2D and 3D art modelling&lt;/li&gt;
&lt;li&gt;Project Management&lt;/li&gt;
&lt;li&gt;CI/CD&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Game Engine
&lt;/h2&gt;

&lt;p&gt;Popular game engines like Unity, Unreal Engine, and Godot provide developers with powerful and flexible tools to bring their game ideas to life. When choosing a game engine, consider factors such as your target platform, programming language preferences, and available resources. For a more in-depth look at game engines, check out &lt;a href="https://gamedevacademy.org/best-game-engines/#Honorary_Mentions"&gt;Best Game Engines For 2023 – Which Should You Use?&lt;/a&gt; from GameDev Academy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Middleware
&lt;/h2&gt;

&lt;p&gt;Sometimes a game engine will meet most of your needs, but fall short in one or two areas. GamesRadar explains that game engines have a modular nature, which allows game devs to improve or adjust the game engine’s functionality by adding software. That additional software is called middleware and typically focuses on a particular area, such as audio, where the original engine underperforms. For a quick intro to common middleware tools watch: &lt;a href="https://www.polygon.com/videos/22791250/guide-to-the-first-15-seconds-of-every-game-middleware-explainer"&gt;A guide to the first 15 seconds of every game&lt;/a&gt; from Polygon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Audio Design
&lt;/h2&gt;

&lt;p&gt;Wwise and FMOD, along with other types of &lt;a href="https://www.gamedeveloper.com/audio/audio-middleware-why-would-i-want-it-in-my-game-#close-modal"&gt;audio design middleware&lt;/a&gt;, enable developers to create and implement high-quality sound effects, music, and voice-overs. Consider the specific audio needs of your game, and choose software that provides the necessary tools and capabilities for your audio design workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Artificial Intelligence
&lt;/h2&gt;

&lt;p&gt;AI middleware can be used for pathfinding or to enhance interactions with non-player characters. Kythera AI, Havok AI, and Mercuna are examples of popular navigation toolsets. &lt;a href="https://www.gamedeveloper.com/programming/ai-middleware-getting-into-character-part-5-conclusion"&gt;AI Middleware: Getting Into Character&lt;/a&gt; summarizes a series GameDeveloper.com published on character-focused AI middleware and includes overviews of AI.implant, DirectIA, RenderWare AI Middleware (RWAI), and SimBionic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Physics
&lt;/h2&gt;

&lt;p&gt;Middleware like Havok Physics offers an SDK that is optimized and proven to be stable so that your team can focus on writing code for your game, and not a physics engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;p&gt;Similarly, it can be time-consuming to get every small detail of animation the way you want, and predefined animations can get stale. FaceFX creates realistic facial animation from audio files, making face animation a much simpler process. Euphoria is a 3D human animation middleware that synthesizes character actions and reactions in real-time so that, each time you play, the character experience is unique.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiplayer
&lt;/h2&gt;

&lt;p&gt;There are several options when it comes to offloading your networking requirements and leveraging existing solutions for features such as lobbies, matchmaking, achievements, and leaderboards. Some options, like Azure Playfab and Demonware, can be used across platforms to unify your player base. There are also solutions that are tied to a particular console or platform and, while not traditionally thought of as middleware, they serve a similar function. The most notable platform-specific multiplayer solutions are Xbox Live (XBL), PlayStation Network (PSN), and Steamworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Specialized Rendering
&lt;/h2&gt;

&lt;p&gt;There are many more middleware tools that either fit into several of the above categories (like NVIDIA GameWorks) or they focus on an area outside those core categories, like these examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bink and CRI-Sofdec are full-motion video capture solutions that game devs can leverage to create movie-quality cut scenes.&lt;/li&gt;
&lt;li&gt;Simplygon is an automated 3D content tool that reduces and optimizes visual content, allowing artists to focus on quality graphics instead of optimization.&lt;/li&gt;
&lt;li&gt;Speedtree is a vegetation modeling middleware that works with Unreal and Unity.&lt;/li&gt;
&lt;li&gt;truSKY is a real-time sky and weather rendering middleware that works with Unreal and Unity, and includes APIs that can be called from custom rendering pipelines. It is also VR ready, which means you don’t need to do anything extra to get your weather simulation to run in VR.&lt;/li&gt;
&lt;li&gt;MiddleVR is a middleware that works with Unity to simplify 3D tracker setup, warping and blending graphics for the curved VR headset screens, and other tools to help port your game to VR.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2D and 3D Art Modeling Software
&lt;/h2&gt;

&lt;p&gt;Creating captivating visuals is essential in game development. 2D and 3D modeling software, such as Adobe Photoshop, Autodesk Maya, and Blender, allow artists and designers to create stunning graphics and 3D models. Consider the art style and requirements of your game and choose software that aligns with your artistic vision and skill set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Management
&lt;/h2&gt;

&lt;p&gt;A project management tool like &lt;a href="https://get.assembla.com/"&gt;Assembla&lt;/a&gt; assists in organizing tasks, tracking progress, and facilitating team communication. Assembla centralizes source code and game assets along with project management features like task assignment, progress tracking, and issue &amp;amp; ticket management. Choose a project management tool that suits your team’s needs and aligns with your preferred workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Control
&lt;/h2&gt;

&lt;p&gt;Version control software, like &lt;a href="https://get.assembla.com/git/"&gt;Git&lt;/a&gt;, &lt;a href="https://get.assembla.com/subversion/"&gt;Subversion (SVN)&lt;/a&gt;, and &lt;a href="https://get.assembla.com/perforce/"&gt;Perforce&lt;/a&gt;, allows teams to manage and track changes to their game’s source code, assets, and other files. It enables collaboration, facilitates code merging, and helps maintain a history of project revisions. Select version control software that integrates well with your chosen game engine and offers the necessary features for your team’s workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD
&lt;/h2&gt;

&lt;p&gt;Continuous integration/continuous delivery software provides tools for automating your build and deployment processes. While some studios choose to create their own, there are several production-ready options such as AWS, Azure DevOps, Jenkins, and Travis CI. The new Assembla and Travis CI integration allows game devs to easily synchronize their P4, SVN, or Git repositories from Assembla into Travis CI. This integration streamlines the process of developing games, testing and deploying in the cloud.&lt;/p&gt;

&lt;p&gt;What other key areas and platforms would you recommend to a beginner game dev?&lt;/p&gt;

</description>
      <category>perforce</category>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>godot</category>
    </item>
    <item>
      <title>Reducing crunch and burnout in Game Dev with... DevOps</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Thu, 28 Sep 2023 16:54:35 +0000</pubDate>
      <link>https://dev.to/assembla/reducing-crunch-and-burnout-in-game-dev-with-devops-572k</link>
      <guid>https://dev.to/assembla/reducing-crunch-and-burnout-in-game-dev-with-devops-572k</guid>
      <description>&lt;p&gt;As the conversation around &lt;a href="https://www.bloomberg.com/news/newsletters/2022-09-09/video-game-executive-faces-backlash-over-comments-about-crunch"&gt;crunch and burnout&lt;/a&gt; in game development continues, and studios struggle to find enough &lt;a href="https://www.gamesindustry.biz/how-game-developers-can-better-respond-to-the-talent-crisis"&gt;devs and artists&lt;/a&gt;, DevOps can be a valuable tool for improving workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does DevOps look like in Game Dev?
&lt;/h2&gt;

&lt;p&gt;DevOps in game development typically takes advantage of cloud storage and computing to improve communication and collaboration among team members. It can also involve Test-Driven Development (TDD) to speed up iteration and improve development cycles. DevOps practices can be leveraged to create repeatable processes for game launches, updates, and patches.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Benefits of DevOps for Game Devs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased efficiency through automation&lt;/strong&gt;: Game DevOps automation can be implemented across a wide range of areas, from process workflows to automated builds and deployment. Source code management solutions provide automated security and increased performance, and allow for easy roll-back to previous versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved project management&lt;/strong&gt;: In a DevOps environment, developers and producers work together to break work down into smaller and more manageable chunks, improve regression testing, create emergency contingency plans, and a host of other methods to improve productivity and eliminate waste. Using a suite of reporting and task management tools gives project managers valuable insights into their teams, and real-time progression tracking through UIs that visualize task schedules can help managers improve workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better scaling and less overhead&lt;/strong&gt;: In a DevOps environment, developers can quickly respond to changes in scale and adjust accordingly. Particularly for teams leveraging hosted DevOps tools, this gives smaller studios a head start with tools that can easily scale as the team grows. While an on-prem or dedicated cloud instance requires a significant resource investment, leveraging tools like &lt;a href="https://get.assembla.com/perforce"&gt;cloud-based Perforce VCS&lt;/a&gt; allows teams to stay lean and agile.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Transitioning to DevOps
&lt;/h2&gt;

&lt;p&gt;An effective transition to DevOps requires a clear understanding of your team's current needs and long-term goals. Another consideration is flexibility and support for extensions and integrations. Every studio and project is unique, so being able to choose the tools and practices that best apply to your current goals, with the ability to adapt as your needs evolve, is very powerful.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Archiving Files in Perforce (Archive Typemap)</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Thu, 14 Sep 2023 12:11:45 +0000</pubDate>
      <link>https://dev.to/assembla/archiving-files-in-perforce-archive-typemap-35a2</link>
      <guid>https://dev.to/assembla/archiving-files-in-perforce-archive-typemap-35a2</guid>
      <description>&lt;h2&gt;
  
  
  First, why you should archive files in Perforce
&lt;/h2&gt;

&lt;p&gt;The archive functionality in Perforce improves storage efficiency, streamlines backups, reduces network traffic, improves overall performance, space management, and scalability. These benefits contribute to a more streamlined and optimized version control workflow for development teams (usually gamedev teams). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp1525ufp7hfsadtfnpl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp1525ufp7hfsadtfnpl.png" alt="How to establish an archive depot: use p4 depot and specify its Type as an archive"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Archive Typemap works
&lt;/h2&gt;

&lt;p&gt;It allows you to store older or infrequently accessed versions of files in a compressed format, which reduces the storage footprint on your server and improves overall system performance. Only the most recent and actively used files remain readily accessible, while archived files are stored separately.&lt;/p&gt;

&lt;p&gt;Most importantly, you can streamline a workflow by archiving files; you can exclude them from regular backups and focus on critical data. This reduces backup time, storage requirements, and associated costs. Archiving also enables you to restore specific files or versions as needed without restoring the entire repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhiqva5s2y7zd2ewtl8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhiqva5s2y7zd2ewtl8.png" alt="Purge archives of specific files in the archive depot, use p4 archive -p. Optionally unmount the volume from which the archive files were purged"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it improves system performance
&lt;/h2&gt;

&lt;p&gt;Let’s say you have files that are not accessed frequently. Archiving large files or binary assets that are not frequently accessed can significantly reduce network traffic. This way, when you sync your workspaces or update your local copies, Perforce retrieves only the necessary files, resulting in faster sync times and reduced bandwidth consumption.&lt;/p&gt;

&lt;p&gt;It’s worth noting that the archive feature helps improve overall system performance by reducing the size of the repository. Smaller repositories result in faster operations such as syncing, branching, merging, and searching, mainly when dealing with large codebases or projects with extensive histories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq8sm65s4iwdmay96ja0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq8sm65s4iwdmay96ja0.png" alt="Restore archived files by mounting the volume: use p4 verify - A to verify files before restoring them. Use p4 restore to transfer files from the archive depot to a local depot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use it to manage disk space
&lt;/h2&gt;

&lt;p&gt;Archiving files helps you better manage disk space on your server. Whether you're using &lt;a href="https://get.assembla.com/perforce" rel="noopener noreferrer"&gt;Perforce in the cloud&lt;/a&gt; or on-prem, removing older versions or less frequently used files from the active repository frees up space for new development work and ongoing projects. This allows you to maintain a well-organized and efficient version control environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;More changelists, history, this means as your projects and repositories grow over time, archiving becomes even more valuable. It enables you to accommodate increasing file sizes and handle expanding codebases without compromising system performance or overwhelming storage capacity.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bugs in Agile Development</title>
      <dc:creator>Claudia Fernandes</dc:creator>
      <pubDate>Wed, 13 Sep 2023 13:32:05 +0000</pubDate>
      <link>https://dev.to/assembla/how-handle-bugs-in-agile-development-2ooh</link>
      <guid>https://dev.to/assembla/how-handle-bugs-in-agile-development-2ooh</guid>
      <description>&lt;p&gt;If you're using agile methodologies, it’s likely that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're a CTO, Development Manager, or Senior Developer, and&lt;/li&gt;
&lt;li&gt;You spend a majority of your time actually managing your development team’s workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, I'll share four ways that software teams can adapt current agile practices to make bug resolution easier and faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Allocate time in sprints for fixing errors and prevent bug overwhelm
&lt;/h2&gt;

&lt;p&gt;If a development team pushes code into production and relies on tests and a QA processes before deployment, it could be falling on your customers to find and report problems they encounter.&lt;/p&gt;

&lt;p&gt;Unfortunately independent research found that only 1% of users actually report issues.&lt;/p&gt;

&lt;p&gt;The best thing we can do to prevent revenue loss from errors is to have processes in place to both find and respond to errors before users even notice. How do most companies achieve this?&lt;/p&gt;

&lt;p&gt;Rigorous testing before deployment is certainly one of the best ways to maintain a company culture of producing quality code at all times.&lt;/p&gt;

&lt;p&gt;Buggy software means customers are having a poor experience – and as team leaders it’s our job to make sure that doesn’t happen.&lt;/p&gt;

&lt;p&gt;We can make the process a little easier by using our agile processes together with a continuous deployment strategy. For example, our friends at &lt;a href="https://raygun.com/"&gt;Raygun&lt;/a&gt;, discovered that “when a team gets locked into a sprint it can become much harder to recognize and fix bugs”.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;We actively avoid locking all but the lowest priority errors into sprints – rather we have time set aside inside our sprints to allow us to find errors and fix them on the spot. This way, it doesn’t affect our sprint work, and issues get addressed as soon as they come up, rather than waiting for an end user to find them.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The most important takeaway is to always keep your code deployable. By always keeping your master branch matching your production code, you can fix a bug and deploy knowing that other ongoing fixes and features aren’t creeping into a bug fix deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Improve communication between support and dev teams to keep customer relations strong
&lt;/h2&gt;

&lt;p&gt;Errors do slip through the cracks. Understanding how best to manage these errors and the customers who become affected is an important part of the error handling process.&lt;/p&gt;

&lt;p&gt;It’s not always easy for developers to replicate issues for customers so they can be fixed quickly. So sometimes errors do get lost in communication.&lt;/p&gt;

&lt;p&gt;This is especially true for last minute fixes and changes. When we ‘tweak’ code, inadvertently introducing errors becomes much more likely. Especially when there are strict deadlines to be met.&lt;/p&gt;

&lt;p&gt;Keeping your whole team looking at the bigger picture (from coding right through to how the user is experiencing the software) helps the dev team communicate with support so they can get information to customers quickly and effortlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get as much contextual information on errors as possible for faster fixes
&lt;/h2&gt;

&lt;p&gt;In agile methodology, traditionally bugs may appear on issue tracker backlogs or within your agile management tool as tickets/tasks.&lt;/p&gt;

&lt;p&gt;When tickets get assigned, the error can remain unsolved until deeper diagnostics on the issue are discovered.&lt;/p&gt;

&lt;p&gt;Getting full contextual information on an error is extremely difficult unless you have crash and error reporting software.&lt;/p&gt;

&lt;p&gt;Hands down, this is the biggest time saver and the best way to resolve errors in your current agile methodology.&lt;/p&gt;

&lt;p&gt;Most crash and error reporting software will pull extremely detailed information on location and damage caused by errors that slip through the testing process. Using a tool like &lt;a href="https://get.assembla.com"&gt;Assembla&lt;/a&gt; to deliver that information to a team member cuts the time in the communication process.&lt;/p&gt;

&lt;p&gt;If you have allocated time in your sprint to errors rather than locking in fixes, there’s still hard work to be done by your team. However, having the correct tools in your toolkit will greatly improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prioritize fixes (without leaving out the non critical bugs)
&lt;/h2&gt;

&lt;p&gt;Because of the flexible nature of agile practices, lots of small, last minute changes can be introduced into a developer’s workflow.&lt;/p&gt;

&lt;p&gt;This usually means two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common bugs make repeat appearances (meaning minor recurring bugs get through the cracks);&lt;/li&gt;
&lt;li&gt;Bug fixes can become stagnant under high priority tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, recurring bugs and ‘minor’ fixes are still affecting end users – someone is still getting a poor experience of your application.&lt;/p&gt;

&lt;p&gt;Staying on top of the errors inside your agile workflow is critical – which comes back round to practicing test driven development.&lt;/p&gt;

&lt;p&gt;Every bug is a chance to build a test. If you find a bug, write a test! This prevents recurring bugs and keeps the culture of producing quality code in your team strong.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>development</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
