Introduction

Version control is the foundation for your development pipeline. When it works, teams get the files and feedback they need quickly. They can collaborate without overriding files. When it doesn’t, velocity slows, and developers and artists are left waiting. If you are building the next great game or immersive cinematic experience, you eventually are going to push the boundaries of scale and performance. Picking the right version control will set you up for success.

Plastic SCM can work for smaller teams and repos. But over time, performance declines, causing major issues. Whether you are a current Plastic SCM customer, or you are going through a proof of concept, start here to learn about your options.

While this guide provides considerations for migrating, it should not be considered technical documentation. Perforce Professional Services can provide further insight on how to successfully migrate to Helix Core.

Plastic SCM vs. Perforce Helix Core Comparison

If you are just starting to look at Plastic SCM, compare functionality with Helix Core.

Functionality

Plastic SCM

Perforce Helix Core

Centralized (check files in and out from a central repo)

Yes

Yes

Distributed (push and pull between repos)

Yes

Yes — DVCS is also available for your teams to push and pull between repos.

File commit restrictions

Yes – Plastic SCM uses a per-changeset model that requires the entire workspace be up to date before being allowed to commit. This introduces unnecessary delays and restrictions.

No – In Helix Core, only modified files are required to be up to date before being allowed to commit. This allows developers to quickly commit changes without having to update the entire project every time they want to submit a change.

Time-lapse views

No — Plastic SCM users have been asking for this functionality and it’s been on their backlog for a while. They do offer version tree 2D, which does allow you to review a list of revisions to a file. But this feature does not show the entire history of a file. It lacks the ability to show merges impacting a file (cherry picked) and does not display revert actions, which can lead to confusion.

Yes – Scroll through your history to understand how your code evolves. With Time-lapse View in Helix Visual Client, you can review a single revision, incremental diffs, and even multiple revisions. This gives you a better understanding of not just when, but why the changes were made and by whom.

Workspace types for different GUIs

Yes — “Regular" workspaces for non-Glueon vs. “partial” workspaces for Glueon are not compatible with each other.

No — In Helix Core, all workspaces are the same. In Helix Visual Client, you can switch in between workspaces. Using Helix Sync — the desktop client for artists/designers — you can set up workspaces that allow users to drag and drop files into the depot.

Manage large to huge repos

Not Really — Plastic SCM’s own performance tests conveniently top out with a repo that is less than 8 GB, which is tiny in the modern game development word.

Yes — Helix Core was built to scale and can manage 100s TBs and millions of files in a single repo (without the wait).

Stores large files (binaries)

Yes — But it severely impacts performance.

Yes — Helix Core can handle everything with the speed required for high-performing teams.

Locks to avoid merge conflicts

Yes

Yes

Built-in code review

No

Yes — Helix Swarm, which is free with Helix Core, is a scalable code review and collaboration tool for all types of intellectual property. It seamlessly handles 100s or 1000s of reviews at once, regardless of file type or size.

GUIs for developers and designers

Yes —But they are completely disconnected. You cannot work on code and digital assets in the same workspace since they require different GUIs by performance.

Yes — Use Helix Visual Client (P4V) for code, binaries, and even Git files. Use Helix Sync for drop and drag version control, no matter your toolset. You can easily switch back and forth between them and work in the same workspace.

Task branches

Yes

Yes — Using Perforce Streams, developers can make task streams.

Detecting merges and showing history

No

Yes — Stream and revision browsers show the entire merge and version history, plus how files and streams have changed over time.

Merge process and automation

No

Yes — Streams light up red and green to show copy/merge events that are available, easily guiding the user through the merge process. You can even use Streams to automate.

Graphical model, Stream/branch workflow management

Yes — But there are some limitations. 

Yes – The Stream Graph allows you to create streams and determine the relationships between them. This helps automate the flow of your code and digital assets. You can even drag and drop to re-organize how you work.

Migration Checklist

If you already have Plastic SCM, you can seamlessly migrate to Perforce Helix Core. But first, it is key to review your entire development environment. If you do not have Plastic SCM, these steps and methods can be used with other version control systems.

1. Identify Your Stakeholders

Include IT and your Plastic SCM admins. It is important to incorporate daily users — developers, managers, and artists.

2. Assess the Current State of Your System

Document the version, server location, and any customizations. Run any data verification utilities. If you have corrupt data, it’s better to know about it up front.

3. Plan Your Deployment

Will you be deploying Helix Core on the same platform as your existing Plastic deployment?  Will your Helix Core deployment include multiple servers (standbys for High Availability, edges for locating data close to users, etc.)?  Determine the optimal approach for migrating your data, including a discussion with our Professional Services team.

4. Document Your Current Plastic SCM Configuration 

What is your branching strategy? How many releases do you need to continue to support? Migration is a good time to address any issues with your current configuration. Do you have in-house tools to support your users? Those may have to be ported to work with Helix Core.

5. Consider Key Milestones

Is there a big release coming up that can’t be disrupted? Migrations can impact release timelines. It is important to consider the improvements in switching to a new version control and how it may impact velocity.

6. Identify How Much History to Import

Will the latest file versions work — or do you need detailed history? Review Migration Strategies to learn more about your options.

7. Evaluate Integrations and Topology

What tools and automations interact with Plastic SCM? Do you use a game engine or other build runner integration?

8. Plan Your Cutover Strategy

Will your users transition to Helix Core at the same time or will you plan a phased approach? Do you need to continue supporting other version control systems, like Git?

9. Determine Training Required

Determine what level of training your users and admins will need — online or classroom-based Helix Core training, beginner or advanced.

10. Decide on Success Metrics

Possibilities include verification of imported data, reproducibility of important builds, and a measure of impact on productivity.

Migration Approaches

Determining what and how much history to import requires careful consideration. You may have different approaches for different products. This may depend on where they are in their lifecycle and importance to your organization.

Not all organizations need their entire imported history. For many, migrating over the milestones and art assets is enough. Figure out what you’ll really need before you take the time and effort required for imports.

There are three migration approaches you can consider: Tips Only, Detailed History Import (DHI), or Baseline and Branch Import (BBI).

Tips Only

This approach involves getting the latest file versions, or “tips,” from Plastic SCM (or other version control system) and adding them to Helix Core. No history is preserved. This approach is sometimes appropriate for documentation but is rarely ideal for source code, except for prototype and demo code. This is, in essence, a “start over” approach.

Detailed History Import (DHI)

This is the most comprehensive conversion approach. It captures as much detailed branch/merge information as possible. This allows you to conduct historical research in the new system without requiring the old one. A DHI captures elements such as properties, user descriptions, and check-in comments. With this approach, you can see your old history in a new light with Helix Core’s powerful visualization tools. Depending on your plans, you may or may not need all information. Many customers will do a BBI (Baseline and Branch Import) first, and if needed, proceed with a DHI.

Baseline and Branch Import (BBI)

The BBI approach offers a lightweight migration alternative to the DHI. It’s more sophisticated than the Tips Only approach and avoids the technical complexity of a DHI. The BBI approach uses a branch diagram to select the history to import. The diagram shows the baselines, which are snapshots of a directory structure at a specified time, and major branching operations. It imports branching operations at a high level, capturing the sum of merge operations. A BBI lets you get started quickly and is very reliable.

Technical Tips

As you move from Plastic SCM to Helix Core, consider the following technical tips to help your migration go smoothly.

  • Convert on the same platform as the server to prevent complications. After the migration, you can always change platforms.
  • Migrations can be hardware intensive, so you may want a separate migration server. (This applies mostly for DHI migrations).
  • Consider typemap, file types, and scripting. You’ll want to plan according based on the data types you have.
  • Use the flexibility of workspace mapping to manage other version control systems.

Reevaluate Your Branching Strategy

When setting up your version control, it is important to consider your branching strategy and what you want it to look like. Plastic SCM does offer standard branching capabilities — task branching, diff, and 3-way merge tools. They claim to handle complex integration scenarios like move/rename + readd better than Helix Core. But that is not true.

Helix Core handles merges for the world’s largest and most complex codebases. In continuing to deliver on its best-in-class capability, Helix Core’s latest release delivered improvements to the namespace merge algorithm.

With Perforce Streams — the branching mechanism in Helix Core ­— developers’ lives are easier. It helps them code more instead of dealing with overhead. The structure is built-in to support complex branching for development and releases (no matter your branching strategy). Plus, this foundation is flexible enough to adapt to how your team works.

Get a complete guide to version control branching >>

Perforce Helix Core Branching

Plastic SCM highlights their task branches and claims that 95% of scenarios and teams use this strategy. This may be true for smaller teams. But as teams expand and products become more complex, branching strategies need to adapt.

Helix Core has task streams, as well as other types of streams to handle different operations — from basic branching to implementing CI/CD. With Streams, complex workflows and relationships are made simple. There are several benefits for users:

  • Streams defines the purpose of each branch: mainline, development, task, or release.
  • Streams follow the mainline model — all changes flow toward the mainline.
  • Each stream (except the mainline, which is the root) has a parent stream that defines a clear hierarchy along which changes flow.
  • The Stream Graph identifies changes that still need to be propagated.
  • Client workspaces are locked to a stream, eliminating the need to set up the view manually. Client workspaces can be switched from one related stream to another. Only the files that differ between these Streams will be updated.

Types of Streams

Mainline: A stream with no parent. Expects merging down from more stable child streams. Expects copying up from less stable child Streams. Used as the stable “main” of a stream system.

Release: A stream that is more stable than its parent. Expects merging down from more stable child streams. Does not expect copying up from its parent stream. Useful for ongoing stabilization, bug fixing, and release maintenance.

Development: A stream that is less stable than its parent. Expects merging down from its parent stream. Expects copying up from its less stable child streams. Does not expect to have more stable child streams. Useful for longterm projects and major new features.

There are two additional Stream types with special characteristics:

Task streams are lightweight, short-term branches that can be used for work that affects a small portion of a full project branch. Task streams enable work to be done privately, let developers switch contexts quickly, and reduce the amount of metadata managed by the Helix Core server.

Virtual streams provide users with the ability to restrict the workspace view of a real stream. Virtual streams act as a filter. They are used to sync a particular set of files, rather than all the files in the stream view to a workspace.

Plastic SCM vs. Perforce Cloud

Plastic SCM offers a cloud hosting solution, which removes some of the ongoing maintenance requirements. However, any customers that need to work at scale quickly find that they need to move from their cloud offering to their enterprise offering. With Helix Core, you can get everything you need in your preferred cloud (AWS, Azure, DigitalOcean, and coming soon GCP) in just a few clicks.

With the Enhanced Studio Pack from Perforce, you get everything you need for development in a single, preconfigured environment. It includes:

GET FREE CLOUD TOOLS

Looking to spend less time backing up data and managing your server? There are a couple of solutions available. They can help you focus more on innovation and less on the technical details.

Helix Remote Administration

Looking for a solution where you choose your own cloud provider? Helix Remote Administration (HRA) lets you pick your cloud. Then our Perforce experts set up and manage Helix Core and Helix Swarm remotely, making sure you get the most out of your cloud investment. Think of Perforce as your admins. But instead of paying for someone to optimize your deployment, you get access to the people who know the product best.

LEARN MORE

Other Hosting Options

Sometimes you just want someone else to host and manage your environment. With Assembla, you get the benefits of Helix Core fully hosted and backed by Perforce Assembla pros. They can help you with regular performance checkups and security audits.

LEARN MORE

Key Terminology

Plastic SCM

Perforce Helix Core

Description

Branch

Stream

Branching is how development work is organized. In Helix Core, Perforce Streams is the branching mechanism used by teams. It helps to streamline workflows and guides changes. This is because Streams creates a “parent and child” relationship between related streams. This helps to reduce merge conflicts. Plus, Streams can be used to automate development and release process.
More on Streams >>

Main

Mainline

The main branch in version control in Plastic SCM is known as “main.” In Helix Core, it is referred to as the “mainline” stream.  

Repository

Depot

A depot is where you store place where all versions of files in Helix Core.

Workspace

Workspace

Workspaces refer to a directory where your project is located. Files from that workspace are worked on locally and then submitted back to the depot. In both Plastic SCM and Helix Core, you can use multiple workspaces in the same repo/depot.

Checkin

Submit

You use “submit “when checking changes into the depot.  

Changeset

Changelist

With Helix Core, every time you check files in it creates a numbered changelist. To help organize your submits, you can either put changes into your default changelist, or cherry pick changes and assign them a changelist number.

Update

Sync

To update files displayed in your depot or changelist, use sync.

Checkout

Edit

To work on a file, you need to check it out. In Helix Core, you can also use “exclusive checkout” to prevent other teammates from overriding your work.

Frequently Asked Questions

Does Plastic SCM Perform Better Than Helix Core?

On their website, Plastic SCM lays out a performance scenario that they refer to as “medium.” It makes sense that Plastic SCM would avoid comparing “large” and “extra-large” scenarios since they cannot scale like Helix Core.

Their “medium” test only involves a repo that is 7.16GB in total size. Helix Core would label this test “small” (if not “extra-small”). This test was run on a Windows environment. Helix Core install base is approximately split between Linux and Windows, but skews more heavily towards Linux.

In addition, this performance comparison was run against Helix Core version 2018.2. Recent changes to Helix Core have resulted in >10% performance gains on both “sync” and “submit” operations on Windows servers.

Does Plastic SCM Have a Better Artist GUI Than Helix Core?

Plastic SCM has a GUI — Glueon. It is positioned to be more user friendly. But not everyone on a team, especially artists and designers, want to learn a new tool. To avoid version control, some team members may even start using email or DropBox instead.

Helix Core has been serving teams of developers for years. Artists and designers that need to version and do not want to learn a new tool can use Helix Sync — the free desktop client.

Using Helix Sync, all assets can be stored in the same depot. Non-coders drag and drop assets to seamlessly version. Plus, teams know that assets are always protected and can be reused. With Helix Sync, teams get a single source of truth for all digital assets, leading to faster builds and seamless collaboration.

Does Perforce Helix Core Work With Git?

Plastic offers a 2-way sync with Git because plastic “adheres to the Git protocol.” Developers can push and pull and to Git, it just looks like another client.

Perforce also offers a Git solution. With Helix4Git, you get a mirroring system that allows developers to continue using their current preferred Git code hosting & collaboration solutions. To them, it looks like Git. But all the code is stored in the powerful Helix Core server. Teams get a single source of truth for all assets, and they can view code from both Git and Helix Core in a single Helix Core workspace.

You can also use our Helix TeamHub Git code hosting & collaboration solution to take advantage of unique to-Perforce Git functionality like multi-repo code reviews and the new hth-cli command line offering.

Learn More

Get the most out of your version control. With Helix Core, you can accelerate development and scale as your grow. Learn why 19 of the top 20 AAA game development studios trust Helix Core.

Get Started For Free

Try Helix Core for free and deploy your way.

TRY HELIX CORE FREE

Need Help?

Our team of experts is available to walk you through your migration.

CONTACT US