<?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: Yuki Arbel</title>
    <description>The latest articles on DEV Community by Yuki Arbel (@yuki_diversion).</description>
    <link>https://dev.to/yuki_diversion</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%2F1049817%2Ffdbd789c-6907-4801-9c7c-a326ecbfe1f5.jpg</url>
      <title>DEV Community: Yuki Arbel</title>
      <link>https://dev.to/yuki_diversion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yuki_diversion"/>
    <language>en</language>
    <item>
      <title>3 Reasons Game Developers are Looking for Perforce Alternatives</title>
      <dc:creator>Yuki Arbel</dc:creator>
      <pubDate>Mon, 29 May 2023 12:31:10 +0000</pubDate>
      <link>https://dev.to/diversion/3-reasons-game-developers-are-looking-for-perforce-alternatives-1ebm</link>
      <guid>https://dev.to/diversion/3-reasons-game-developers-are-looking-for-perforce-alternatives-1ebm</guid>
      <description>&lt;p&gt;Version control is key to software development of any kind and games are not different in that sense - any serious game developer (from indies to AAA) use some shape or form of version control as part of their development infrastructure.&lt;/p&gt;

&lt;p&gt;Nevertheless, Game development requirements are somewhat unique so version control tools stack up slightly differently than the way they do for “generic” software development. Perforce (or more accurately HelixCore from Perforce Software) is known to address many of these unique requirements pretty well. In a &lt;a href="https://www.diversion.dev/blog/version-control-for-game-devs-survey-results"&gt;survey&lt;/a&gt; that we conducted among game developers, we learned that Perforce was used by 28% of respondents - a huge market share compared to its foothold in other software market segments. Perforce themselves report that they are in use by 19 of 20 top AAA game vendors.&lt;/p&gt;

&lt;p&gt;Speaking to many game developers as part of our exploration of the domain - we learned that even game developers that are heavily invested in Perforce as a version control system have “one eye open” for a Perforce alternative. Some assign the search to a special task force, and for others this is only a wishlist item for the infra team… but it is always present - and here’s why:&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It’s Attractive
&lt;/h2&gt;

&lt;p&gt;Perforce has been around for many years and many of the competitors it had in the 90’s are no longer with us. When Perforce started, Git was not even conceptualized. During that time, it has built robust software and a broad set of features, but if you look at its current focus, it is game development companies, and other vendors that have to manage versions for very large projects and very large files. This is because Perforce is known for its &lt;strong&gt;scalability&lt;/strong&gt; - the ability to handle very large files and repositories. &lt;/p&gt;

&lt;p&gt;Another key feature that is attractive to game developers is the &lt;strong&gt;ability to integrate perforce into the IDE’s&lt;/strong&gt; of the two leading game engines - &lt;a href="https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/SourceControl/Perforce/"&gt;Unreal Engine&lt;/a&gt; from Epic Games and &lt;a href="https://www.perforce.com/integrations/perforce-and-unity-integration"&gt;Unity&lt;/a&gt;. Interestingly enough, Unity has recently &lt;a href="https://venturebeat.com/business/unity-acquires-codice-software-to-manage-3d-workflows/"&gt;acquired&lt;/a&gt; a version control tool Plastic SCM (now rebranded as Unity Version Control), so it remains to be seen to what extent this integration will still be maintained.&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;h2&gt;
  
  
  And - What the Challenges Are
&lt;/h2&gt;

&lt;p&gt;One major complaint about Perforce is the complex setup and maintenance it requires. As a tool developed back in the 1990’s, and not undergoing an architectural overhaul since, Perforce server is software that needs to be installed on a dedicated server. Being in the era of SaaS (with version control tools like &lt;a href="https://github.com/"&gt;Github&lt;/a&gt;, &lt;a href="https://about.gitlab.com/"&gt;Gitlab&lt;/a&gt; and &lt;a href="https://bitbucket.org/"&gt;Bitbucket&lt;/a&gt; available as SaaS), developers are reluctant to invest excess IT resources running legacy infrastructure and the fact that Perforce still requires them to do so is considered as a drawback. &lt;/p&gt;

&lt;p&gt;Another related disadvantage is the &lt;strong&gt;smaller set of modern integrations&lt;/strong&gt; it has compared to other cloud native version control tools. Perforce did start pivoting towards a &lt;a href="https://www.perforce.com/perforce-and-cloud"&gt;cloud offering&lt;/a&gt;, however it’s more or less the same software, installed on a server provisioned in the cloud - and still requires complex maintenance and configuration.&lt;/p&gt;

&lt;p&gt;Finally, probably the key reason game developers are looking for Perforce alternatives is its &lt;strong&gt;cost&lt;/strong&gt;. Perforce pricing (per-seat) is considered to be very high compared to alternatives, and combined with the cost of setup and maintenance you end up with a pretty high Total Cost of Ownership (TCO) making it prohibitive for smaller players, and a noticeable expense for the larger ones.&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Consider when Looking for a Perforce Alternative
&lt;/h2&gt;

&lt;p&gt;When looking for alternatives, there are a few evaluation criteria that are unique to the game development industry. First and foremost: &lt;strong&gt;scalability&lt;/strong&gt;. Game projects tend to be large and include many large binary files. Version control tools have to cater for that and apparently not all of them do this all that well. Git, for example, has a limit on its file and repo size, and game developers typically have to use &lt;a href="https://git-lfs.com/"&gt;Git-LFS&lt;/a&gt; to be able to use Git reasonably (but even that &lt;a href="https://andrewzuo.com/git-lfs-a-solution-that-wont-work-to-a-problem-that-doesn-t-exist-dfbb60de7730"&gt;doesn’t work all that well&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Another key criteria is the &lt;strong&gt;simplicity of use&lt;/strong&gt;: game development companies typically have game designers and artists as part of their staff, and they typically prefer simpler interfaces than those offered by version control tools.&lt;/p&gt;

&lt;p&gt;The main alternatives game developers have to choose from are &lt;a href="https://git-scm.com/"&gt;Git&lt;/a&gt;, &lt;a href="https://subversion.apache.org/"&gt;SVN&lt;/a&gt; and Unity &lt;a href="https://unity.com/solutions/version-control"&gt;Version Control&lt;/a&gt; (which is how Unity packaged their acquired Plastic SCM). A recent &lt;a href="https://dev.tourl"&gt;article&lt;/a&gt; in &lt;em&gt;The New Stack&lt;/em&gt; provides a good roundup comparing between the various alternatives. Spoiler: no tool is perfect and something’s got to give…&lt;/p&gt;

&lt;p&gt;We at &lt;a href="https://www.diversion.dev/"&gt;Diversion&lt;/a&gt; are looking closely at the needs of the game development community and are building a modern, cloud native version control tool to make their life easier. If you’re looking for a Perforce alternative, be sure to check it out &lt;a href="https://diversion.dev/"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>scm</category>
      <category>git</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>The Key To Proper Asset Management In Game Development</title>
      <dc:creator>Yuki Arbel</dc:creator>
      <pubDate>Tue, 21 Mar 2023 20:11:11 +0000</pubDate>
      <link>https://dev.to/diversion/the-key-to-proper-asset-management-in-game-development-23mh</link>
      <guid>https://dev.to/diversion/the-key-to-proper-asset-management-in-game-development-23mh</guid>
      <description>&lt;p&gt;The world of software development has changed and evolved significantly over the last two decades from when Git was introduced.  The world of cloud and microservices, CI/CD and automation have introduced scale, efficiency and velocity made possible through as-a-service models for both software and infrastructure.  However, there is an entire industry that could not derive the same benefits that traditional software has seen, due to its own unique complexities.  Much in the world of game development has not significantly or sufficiently evolved, due to its inherent limitations of size, performance, and collaboration that look quite different in the game development world.&lt;/p&gt;

&lt;p&gt;A core piece in the complexity is a byproduct of how gaming assets are created, managed and versioned in game development, which is quite different from typical software engineering disciplines. From 3D models to audio files, textures, and other media, game assets are critical components of any game development project. This is why managing game assets efficiently is essential for creating high-quality games, and source control systems can play a significant role in this process––both in managing the assets and from a collaboration perspective. &lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;p&gt;With much of the modern software delivery world relying heavily on Git and the SaaS tooling that makes git source control available at scale (from Github to Gitlab and Bitbucket), the world of game development requires different capabilities, as noted in previous posts––leaving game developers to work with a different set of SCM tools.  As a byproduct, there is often much less community and ecosystem support and help that focuses specifically on these unique complexities. &lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;p&gt;In this blogpost we’d like to focus on this specific area and  explore the different source control systems that are optimized for game development, alongside best practices for how to manage game assets effectively. We'll cover the benefits of using source control systems. We’ll focus on the basics of asset management, version control for asset management, and how this applies to your source control of choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Asset Management?
&lt;/h2&gt;

&lt;p&gt;Assets are a core component in games, and asset management is a crucial aspect of game development that involves organizing and tracking all digital resources used in the game. &lt;/p&gt;

&lt;p&gt;‍&lt;br&gt;
Asset management is typically comprised of several steps in the process, as follows:&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset Creation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;‍Asset creation involves creating digital resources such as 3D models, textures, animations, audio files, code, and other resources that are what constitutes the game elements. This process can be done by in-house artists, sound designers, and developers, or outsourced to external contractors. Depending on the type of asset, it may require close collaboration between asset creators and engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset Organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;‍After assets are created, they need to be organized and stored in a central repository for collaborative work. This repository could be a version control system, a cloud-based service, or a local file server. A good practice is to organize assets based on their type, such as 3D models, textures, or audio files, and should be easy to locate and access by team members.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset Integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once assets are created and organized, they need to be integrated into the game engine. This involves importing the assets into the engine, optimizing them, and testing them in the game engine to ensure that they work as intended. Integration can be done by artists, designers, or developers depending on the asset type.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset Tracking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;‍As assets are integrated into the game, it's essential to keep track of changes made to them. This is typically done using version control software, which allows teams to track changes made to assets over time, collaborate on asset creation, and revert to previous versions if needed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset Reuse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;‍Like other software development disciplines that leverage boilerplate code, and reuse types and other objects, game developers often reuse assets across multiple projects to save time and reduce costs. Asset reuse requires proper documentation and organization of assets to ensure that they can be easily located and used across projects.&lt;br&gt;
‍&lt;br&gt;
With all of this in mind it is really critical to have a strong version control and source management solution that is optimized for the diversity of collaborators and stakeholders in the game development world.  This is where the right SCM comes into play, and has a huge impact on the speed, quality, and productivity of game development teams.&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Your SCM is Important for Asset Management in Game Development‍
&lt;/h2&gt;

&lt;p&gt;Version control software (AKA source control management––SCM) is the backbone of modern engineering practices, and it provides essential features for efficient asset management critical in today’s engineering processes. A good place to get started is this post, on the current state of the SCM union for the game development world (read: &lt;a href="https://thenewstack.io/unleashing-git-for-the-game-development-industry/"&gt;Unleashing Git for the Game Development Industry&lt;/a&gt;).  &lt;/p&gt;

&lt;p&gt;‍This begins with structured workflows that all of the collaborators and stakeholders in the organization can align with, making it possible for teams to manage their assets in a more organized and efficient way.  Another mission critical capability that version control will provide is backup and recovery: Using a version control system allows teams to back up and recover binary files, which can be especially important for these large and complex files that would take a significant amount of time to recreate.&lt;/p&gt;

&lt;p&gt;‍As the name implies, version control also provides much-needed versioning and change history of binary files, which can be used to track progress, understand changes made, and document the development process.  While merging is not possible for binary files, version control software still enables collaboration by allowing multiple team members to access and work with the same file. Some version management tools also allow checking-out/locking a file so that it is not modified by two people in parallel to avoid conflicts.  One way this comes in handy with version control software is branching. This allows teams to create separate branches of a binary file, which can be useful for experimenting with different versions or testing new features without affecting the main branch of the file.&lt;/p&gt;

&lt;p&gt;‍Finally no piece of software is complete without verifying its quality, through reviewing and approval processes.  Your SCM will enable you to review changes made to binary files and approve them before they are implemented in the game engine. This can help to ensure that all assets meet quality standards and are error-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right SCM for Game Development
&lt;/h2&gt;

&lt;p&gt;The first step though, and likely the most important is choosing the right system for your needs.  This is an entire blog post unto itself (and we plan to release one soon on this topic - so subscribe if you’d like more on this topic), but just to touch on this briefly––this should be based on factors such as the size of your project, the number of assets you're managing, and the type of assets you're working with, as well as other SW development practices and processes you apply across your company. The popular tools leveraged for game development include Git, Perforce, SVN and Unity PlasticSCM.&lt;/p&gt;

&lt;p&gt;There really is a lot that can be said about each of these, but the most critical pieces you would need to explore is large binary file support, performance with large repositories, branching and merging capabilities, as well as collaboration through permissions and access control to files and repositories.  Each of the popular tools in the ecosystem plays to different strengths and use cases, and we’ll be sure to dedicate a post to this in the coming weeks.&lt;/p&gt;

&lt;p&gt;Once you've chosen a source control system (check this post out for some stats on &lt;a href="https://www.diversion.dev/blog#"&gt;version control for game developers&lt;/a&gt;), you can start applying best practices for asset management, which we’ll dive into below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asset Management Best Practices
&lt;/h2&gt;

&lt;p&gt;Once you have proper version management in place for assets, you are halfway to having an efficient process for asset management, as basic aspects, regular backup, are covered for you.  &lt;/p&gt;

&lt;p&gt;‍Let’s dive into some good practices around asset management processes and workflows that are built around how you leverage your SCM and play to its strengths.&lt;/p&gt;

&lt;p&gt;‍Like software pipelines, assets should be handled in a similar fashion.  It’s a good practice to establish a clear and well-defined asset pipeline to manage the flow of assets from creation to implementation.  This will also ensure that all team members are aware of the process.&lt;/p&gt;

&lt;p&gt;Another good practice that contributes to effective teamwork and workflows is defining a consistent naming convention for assets. This makes it easier to locate and manage files that multiple collaborators need to work on. Suggested methods are to include information such as the type of asset and the date it was created.  Once you have good processes, and naming conventions, knowing where to find these key assets is important.&lt;/p&gt;

&lt;p&gt;‍This is where your SCM or cloud storage comes in to provide a central repository where all assets should be stored that is easily accessible to all team members. This helps to prevent duplicate files and reduces the risk of lost or misplaced assets.  When these types of files are stored in a centralized location, their size can impact cost and performance, and this is where asset optimization comes into play.&lt;/p&gt;

&lt;p&gt;‍Optimizing assets such as textures and models can reduce file size and improve performance. This can be achieved by reducing polygon counts, compressing textures, and using LODs.  Storage is also expensive, so the additional value of reducing file size is that you can also derive cost benefits.&lt;/p&gt;

&lt;p&gt;‍After all is said and done, one of the backbones of great collaboration that is often underestimated is documentation. By taking the time to create great documentation regarding the creation, modification, and usage of assets you can ensure that all team members are on the same page and can easily refer to previous decisions and iterations.&lt;/p&gt;

&lt;p&gt;‍Finally we come to actually making use of your assets, and no engineering assets should be pushed to production without proper testing.  Make sure to take the proper time to test your assets in the game engine to help identify issues early in the development process, and ensure that assets are working as intended.&lt;/p&gt;

&lt;h2&gt;
  
  
  ‍SCM &amp;amp; Proper Game Asset Management
&lt;/h2&gt;

&lt;p&gt;Eventually game development is not much different than other software engineering disciplines. There are mission critical assets that need to be properly maintained, backed up, versioned, and managed for productive teamwork and operational best practices.&lt;/p&gt;

&lt;p&gt;‍Choosing an SCM that is optimized for game development will help you overcome some of the unique challenges in the game development world when it comes to asset management and collaborative work.  Once you have a good SCM to help with the version control, backup and collaboration, you can then set out to apply best practices for processes and workflows to ensure you manage assets properly in the long term.&lt;/p&gt;

&lt;p&gt;‍In &lt;a href="https://diversion.dev/blog"&gt;our next posts&lt;/a&gt; we will dig deeper into the game development world, and provide more insights into unique challenges for gaming engineers.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>scm</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
