What is Ark?

Ark is a centralized Version Control System (VCS) designed specifically to handle complex projects that use a large amount of binary assets, such as the ones in video game development.

It comes as an alternative for developers who are dissatisfied with mainstream solutions like Perforce and Git. Ark not only addresses the limitations of these solutions, but also strives to set a new standard of what a modern VCS should be, always prioritizing ease of use and high performance.

Getting Started

Ark has a client <-> server architecture, which means that you need to have a server running independently and then the clients will connect to it.

If you're working with a team, you'll want to setup a server in a dedicated machine that is always running, so that anybody can connect to it at any time. Then each client needs to setup their workspace on their machines and connect to the server.

If you're a solo developer, you'll most likely want to start by creating a workspace with a built-in server so that any time you run Ark it just handles the server for you.

Platforms

Ark is a single executable, which contains server, cli and gui. We currently support 3 platforms:

Currently the Linux binary does not have gui, but it is planned.

Concepts

There's a few concepts that you should be familiar with when using Ark.

Server

To start a server, you'll need to use the cli server command.

ark.exe server -path -port <port (default 9000)> -log_level <level (default info)> -allow_dv_upgrade <bool (default false)> -allow_non_empty_path <bool (default false)>

It requires the path to be explicitly passed if the server is being initialized in order to prevent errors by just running the server in an empty folder.

If the path is not passed, it will only run the server if it is already initialized in the current directory.

Valid log levels: debug, info, warning and error. Keep in mind that this only affects what is printed to console, the logs always use debug.

In order to prevent errors, you also have to explicitly pass these 2 flags:
Make sure to backup your server before any data version upgrades, as this process is irreversable.
After a server is already setup, you can just run from inside its folder with:
ark.exe server

When a server is created, it will by default generate a RSA key pair and certificate for SSL encryption with the clients, but keep in mind that you can always manually create your own and place them inside your server folder.

Configuration

When connected to a server, you have access to a Server Configuration panel, which you can access via Server->Configuration menu:

It allows you to edit certain server settings directly from the client.

Firewall

If you have a server with access to the internet, you'll constantly be prodded from random IPs. Even though we're confident about the security mechanisms put in place, it will just fill your server logs with trash.

So in order to improve this situation, you can have a server firewall working. It basically allows you to whitelist IPs that will always have access, and blacklist any that shouldn't.

If you static IPs, you can simply whitelist them and then in the blacklist section add an entry *.*.*.* and every other IP will be discarded on connection except for your whitelisted IPs.

However, static IPs are not that common, so to help with this situation there's an automatic blacklist feature. It will blacklist any IP that will act in bad faith (e.g. trying to mess with SSL handshake, or sending invalid messages).

It will also blacklist IPs that fail login with password 5 times within a short time span.

You can manually edit the white/blacklist from the server configuration panel.

Integrity Check

Even though there are some checks during commit that validate that the data that the client was going to send is exactly what we were told, it is natural to be worried about the safety of your data.

On top of that, disks can fail, and having a version control system does not replace a backup system.

To mitigate these worries, Ark comes with a built-in tool to validate the integrity of the data stored. You can access it via Server->Integrity Check menu.

This panel allows any Admin user to trigger from the client an integrity check that will uncompress and checksum the data from all the committed changelists to verify that what we're expecting to have there is what we're actually able to load from the disk.

Depending on the size of your projects, this process can take some time. Besides being able to manually trigger it, it is also configured by default to run when the server upgrades to a newer Ark version. This behaviour can be changed in the server configuration panel, however it is encouraged to leave it on.

If any changelist fails this check, that project is most likely corrupted and you should restore a previous backup.

Client / Workspace

Each user that wants to connect needs to run a client. A client runs from a local folder called a workspace.

A workspace will connect to a server and map to a specific branch of a project.

You can change switch your workspace to another branch / project whenever you want, however it is advised to only follow this approach if you're low on available disk space or if the differences between them are minimal, since you'll have to override the files in the workspace.

Create Workspace

To create a workspace, run ark.exe by double clicking it.

You can also it from the cli using the gui command.
ark.exe gui

Upon launching, since you don't have any workspace, you'll be presented with an option to create a workspace.

A workspace folder does not have to be empty. Also, just because a file is inside the workspace it will not be automatically become version controlled, it will be flagged as an add but you can always ignore files you don't want version controlled.
Address follows the format <host>:<port>, where <host> can be a hostname, ipv4 or ipv6 address, and <port> needs to be a valid port. Examples:
  • my-server:43000
  • 192.168.1.100:5000
  • [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:7777
  • localhost (since port is not defined, it assumes the default port 9000)

After creating a workspace, you'll now have a new layout with some panels. Ark will automatically try to login to the server, and since it is the first time you'll be asked to set a password.

Passwords are not sent to the server, they are hashed and only the hash is sent to the server. This means that even if you have access to the server, you cannot see any password, so if you forget your password you'll need to reset it.
The first user connecting to the server will auto register and become an admin for convenience. All other users need to be explicitly added by an Admin / Manager.

When you create a workspace it will have .ark/ folder created. It is inside this folder that Ark will store everything related to this workspace.

It is very important to not edit anything inside .ark/ manually or you'll risk corrupting your workspace. If your workspace is corrupted, the best course of action is to delete the .ark/ and recreate the workspace, which will get all the data from the server.

Create Workspace

To initialize a workspace via cli, you'll need to run the init command inside the folder you want to use.

ark.exe init -email <email> -host <host:port (port default 9000)>

If you already have a workspace initialized, you can run the same command if you want to switch email or host.

When asked for your password using cli it will not display any keystrokes.

Built-In Server

If you want to run as a solo developer, when creating the workspace simply check the Built-In Server option. This only works with GUI.

Inside your workspace, a .ark_server/ folder will be created, from which the GUI will start / stop the server for you.

A built-in server is a full fledged server, so you can convert it to a standalone or vice-versa at any point simply by moving the server's folder.

Git Import

If you have an existing Git repository you can import it to Ark, bringing in the commit history. To do so, you need to have the .git folder on the root of your workspace folder and go to Workspace->Import From Git.

You'll be presented with a wizard that allows you to choose which branch to import. It will give you the option of importing users, commits and tags.

Besides presenting clearer information on the progress, it also allows you to stop the import process in the middle. Just remember to copy the short hash you stopped on in order to continue the next time.

Git Import

Since version 0.12 Ark has a GUI importer, which is far superior than the cli version was. It allows you to import users, commits and tags, and in a way that is far more intuitive than the cli command was.

The cli command may return at a later date, however for now please use the GUI git importer.

Convert Server <-> Built-In Server

To convert a server to a built-in server all you need to do is:

The GUI client will now automatically start / stop the server for you.

Conversely, the steps to turn your built-in server into a server simply:

If you moved your built-in server to another machine, you'll need to adjust your workspace's connection to the new IP.

Changelist

A changelist is the base unit of work that a developer can create, like the name implies it is a list of changes (e.g. file A got added, file B got modified). It has 3 possible states:

When you shelve your changelist, it gets assigned an id, and the data is copied to the server.

Once you decide to commit your shelf, the server simply changes the state of the changelist to committed, given that all the data is already on the server.

This flow means that even if you choose to commit a workspace changelist, it will still follow this path of first shelving and then committing.

One of the benefits of having a centralized VCS is that you have a unique provider of ids for your changelists. Ark's changelist ids are incremental starting from 1, so the higher the id the later a changelist was committed.

This allows you to reason in a much more intuitive way about the state of your project, because if you're currently on changelist 1074 you know that you'll have any change committed in a changelist with a lower id.

Shelved Changelist

Quite often you end up in a situation where you need to collaborate with somebody, or you may simply want to store a snapshot of your current work in the server, while not disrupting anybody else's project. This is where shelves come in.

You may be familiar with them from Perforce, they are basically a way to store a changelist in the server without actually committing it.

Once a shelf is created, you can revert your local changes because you can always get them back from the shelf.

A shelf will now have a unique changelist id, and with this id other users can also unshelve your changes, allowing them to get changes without affecting anybody else.

However, Ark takes shelves to a new level. In Perforce, shelves are one way street, meaning that if user A shelves something, user B can only unshelve it, they cannot update or even commit this shelf.

Ark's shelves are two-way, it allows for any user to contribute to this shelf, and when there's changes users will get notified.

This makes them de-facto super lightweight branches, where people can collaborate on small tasks without going through all the hassle or creating, switching and merging branches.

Shelve / Unshelve

To create a shelf you right-click on any workspace changelist and select Shelve....

It will bring up a window like the commit window, in which you can add / edit your message and then shelve.

Once a workspace changelist is tied to a shelf, it will have a changelist id.

When your workspace changelist is tied to a shelf, it will give you the following visual feedback on your files:

When there is a new revision of your shelf the comment will be displayed in orange, and you'll be able to get latest by right-clicking and choosing Shelf -> Get Latest.

To unshelve, you first need to open the changelist's window by going to Workspace -> Go To... and passing it the shelf's changelist id.

You'll now get a changelist window, in which you can go through all the revisions of this shelf and unshelve any of them.

Shelve / Unshelve

Not currently supported.

Remove File From Shelf

To remove files from a shelf you right-click on them and select Remove From Shelf. This will create a new shelf revision without those files.

Remove File From Shelf

Not currently supported.

Delete Shelf

There's currently no way to do this, you just have to revert changes and delete your workspace changelist, the shelf will continue to exist in the server.

Delete Shelf

Not currently supported.

Committed Changelist

Commit is the act of making a changelist officially part of the history of the branch it was committed to. This means that anybody on that branch getting latest will get those changes copied locally.

Commit

To commit a changelist you right-click on it's header and choose Commit.... It will open a new window in which you can change the commit message, and then commit the changelist.

You can also select only some files and right-click on them to commit them. This will create a new workspace changelist and move all the selected files to it.

Commit

To commit a changelist via cli you use the commit command.

ark.exe commit -ws_cl <workspace changelist id> -message <commit message (optional)> -keep_locks <bool (default false)>
Workspace changelist id is an identifier that gets attributed locally to each one of them. To know what workspace changelists you have you can run
ark.exe changes

And to see the content of each one of them you can run

ark.exe changes -ws_cl <workspace changelist id>

History

When a changelist is committed it becomes now part of the history of the branch.

The history is basically a stack of committed changelists, with growing id.

The changelist at the top is called latest or head.

In Ark you can only be in one changelist at the time, your current changelist. This is by design, to prevent issues like you can have in other VCS like Perforce.

The reason for it is that if somebody tells you that they are on changelist 602 and they don't have any local changes - which Ark tracks automatically for you -, then you're guaranteed that if you switch to that same changelist you'll have the same content that the other user has.

This sounds like a basic thing, but if you ever worked with Perforce you most likely encountered a situation where somebody either has untracked local changes or has part of their code tree at one changelist and part at another, making it quite a frustrating endeavour to figure out what's wrong.

Current Changelist

The current changelist is displayed on the window title bar and also on the Views -> History panel, being the changelist with white outline around it.


Current Changelist

Not currently supported.

Get Changelist

To get latest, the easiest way is to just click the Get Latest button. However, you can also just right-click any changelist in Views -> History and choose Get Changelist.

Get Changelist is meant for you to go to a specific history entry, so if there's 3 changelists in the middle they will also be fetched. If you onlu want the changes of a specific changelist and not change your current changelist use Download Changes instead.

Get Changelist

To get a changelist you use the get command.

ark.exe get -cl <changelist id / tag name>
For convenience, if you want latest changelist you can pass -cl latest.

Download Changes is currently not supported.

Tags

Tags are a way to mark committed changelists to be able to track more easily important changelists. For example, if you built a demo for an event you may tag it with 'demo_2025' tag and more easily go back to it.

Since we want to allow some commands to work on both changelist ids and tags, there's a few restrictions with what is considered a valid tag name:

Add Tag

To add a tag to a committed changelist you right-click on it in the History panel and choose Add Tag.

This will bring up a dialogue where you can input the tag name.

If the tag is already set on another changelist, you'll be able to move it to the new one.

Tags will be visible bellow the comment, next to the username.

Add Tag

To add a tag you use the tag-add command.

ark.exe tag-add -name <tag name> -cl <cl id> -project <project name/id (optional)> -allow_move <bool (default false)>

If you don't pass the project it will use your workspace's current project.

If the tag is already assigned to another changelist, it will only be moved if you pass -allow_move true.

Remove Tag

To remove a tag from a committed changelist you right-click on it in the History panel and choose Remove Tag and click on the one you want to remove.

Remove Tag

To add a tag you use the tag-add command.

ark.exe tag-remove -name <tag name> -project <project name/id (optional)>

If you don't pass the project it will use your workspace's current project.

List Tags

To view all tags in a project you open Views -> Tags panel.

You can switch the project on the combo box at the top, and you can right-click and click Open Changelist In New Window to jump to that changelist.

List Tags

To list tags you use the tag-list command.

ark.exe tag-list -project <project name/id (optional)> -cl <changelist id (optional)>

If you don't pass the project it will use your workspace's current project.

If you pass a changelist id it will show only the tags of that changelist, otherwise it will show all the tags in that project.

Ignore Files

All projects have files that we don't want to commit, and Ark follows a similar path to Perforce and Git.

There's an .ark_ignore file in which you define rules to ignore or not files / folders.

By default and for convenience, when connecting to an empty project Ark will add a default .ark_ignore with common rules, but you can always go in and edit these rules (specially removing rules that are not needed, given that the less rules the faster it will be).

Given Ark's approach towards performance, we keep the ignore rule system simple by not supporting regex. Here's what you need to know about it:

Here are some examples of all of this put together:

Ignore Inspector

Whenever projects get too big, ignores can get a bit out of hand, and some times it's quite annoying to find out why something is or is not ignored. To help with this Ark comes with the panel Views -> Ignore Inspector.

When you click Gather Ignore Data it will reconcile the whole project and collect information about the ignores. You can then hover each entry to find out why it was added or removed from the ignores.

Smart File Locking

When working with multiple users on binary files, it's very important to be able to control who has currently ownership of the files in order to prevent losing work. This concept is generally know as file locking.

Ark's approach tries to improve the standard provided by other VCS.

Instead of locks being exclusive to one user, Ark uses a lock queue approach, in which the user at the head of the queue has ownership but others can queue behind them to get the lock as soon as it's released.

It also allows you to request / give the lock ownership to another user in the queue.

To configure which files should lock by default, you edit the .ark_lock file. In it you define rules - following the same pattern rules of the .ark_ignore file - of files that you want to be automatically locked when edited.

You can also explicitly lock a file, even if it is not matching any of the .ark_lock file rules.

Lock / Unlock File

To explicitly lock a file, you right-click on it and choose Lock. If there was nobody locking the file, you'll become the lock owner. If there was already locks on the file, you'll get added to the back of the queue for that file.

If anybody is locking a file, you'll see an icon in front of it. Here's what each one represents:

To unlock the file you right-click on it and choose Unlock.

Some actions, like commit, allow you to automatically unlock files locked by you when performing that action.

Lock / Unlock File

Not currently supported.

Request Lock

Some times users will have by default a file locked because they edited it, but quite often they don't really need it. To help with this process, there's a mechanism to request the lock ownership from the current owner.

To do so, right-click on a file you already locked and choose Request Lock Ownership.

If the lock owner is online, they'll receive a notification requesting approval. After they make a decision, the requester will get a notification informing them of the decision.


Request Lock

Not currently supported.

Users

Like mentioned above, the first user connecting to the server will become an admin. Afterwards, all other users will need to be manually added.

A user can have one of the following roles:

Keep in mind that even though we login using email, the actual user is identified by a unique user id (starting from 1). This means that a user is free to change their email / username and it will display the updated version even on older changelists.

That being said, the email and username need to be unique between users.

There's no functionality to delete users, if you want to remove access to somebody you need to set them as inactive. This approach is to guarantee coherence in the project's history. Also, since Ark's license is based on seats - i.e. unique users currently logged in -, there's no need / incentive to re-assign an old user to a different person.

Add User

To add a user, go to Workspace -> Users and choose Add.

A user doesn't need a username set, but it's highly recommended since otherwise we'll display the email instead, which usually is much more verbose.

Add User

To add a user you have the user-addcommand.

ark.exe user-add -email <email> -username <username (optional)> -role <normal/manager/admin (default normal)>
If a username is not passed, it will create based on the email (i.e. 'peter@company.com' will set username as 'peter')

Edit User

To edit a user, go to Workspace -> Users and right-click on the user you want to edit and choose Edit....

To reset the password of a user, when editing it check Reset Password?. This will allow them to define a new password on login.

Edit User

To edit a user you use the user-edit command.

ark.exe user-edit -user <username/email> -new_email <email (optional)> -new_username <username (optional)> -new_role <normal/manager/admin (optional)> -is_active <bool (optional)> -reset_password <bool (optional)>
The user-edit command is also the way to reset the password for a user, allowing them to define a new password on login.

List Users

To see a list of all the users you use the user-list command.

ark.exe user-list

Projects

A project can be seen as a depot in Perforce or repository in Git. Projects are self contained, they have their our assets, branches, changelists, and history. Usually what you'll want to do is to setup a project for each individual game/application/website you want to develop.

When creating a new server, it will automatically create a project for you with a random name from [Alpha, Beta, Gamma, Delta, Epsilon, Kappa, Lambda, Sigma, Omega] and a root branch called dev.

Like everything else, projects are identified by a unique id (starting from 1), so you can change its name freely. This implies that project names cannot be numbers.

A project can only have one root branch (we call it dev, but some people call them trunk or master) from which all other branches come.

Add Project

To view the projects of the server this workspace is connected to, open Views -> Projects. By default it will show your current project and a list of its branches.

To add a new project, click the dropdown and choose Add Project....

You can now define the project's name as optionally a description.

Even though projects are identified by a unique id, you cannot assign the same name to multiple projects, since for convenience a lot of cli commands allow you to pass both project id or project name.

Add Project

Not currently supported.

Edit Project

To edit a project you go to Workspace -> Projects and choose in the dropdown which project you want to display.

After you've chosen which project you want to edit, you open again the dropdown and choose Edit Project....

This flow is too confusing, so expect changes to improve usability.

Edit Project

Not currently supported.

List Projects

To list the projects you have the project-list command.

ark.exe project-list

Branches

If you're familiar with Git then you'll be familiar with how branches work in Ark.

Branches allow you to split your current code base into multiple versions, like for example to stabilize a build for a demo or release.

We highly recommend you to follow a trunk-based approach to development, which means that people work as much as possible on the same branch (traditionally called trunk, hence the name trunk-based development) and only jump to other branches when necessary.

With this approach, branches are usually done for stabilizing or for very disruptive development (e.g. you want to replace the physics engine).

Working in this way has a lot of benefits:

All of these combine to create a much more stable project. If a lot of branches are used (and the longer they live the worse), then things tend to get much more unstable when merged. Don't just trust us, Jason Gregory from Naughty Dog at HandMadeCon 2016 goes over this subject.

That being said, Ark still allows a workflow that is branch-driven, and we try to make our branching and merging process as simple and fast as possible.

Add Branch

To add a branch right-click on the changelist you want to branch from and choose Branch....

Please note that like with the projects, branches are identified by a unique id, however we still require unique branch names since in cli commands we allow to reference branches by both id and name.

When creating the branch you have the option of just creating it or to create and switch. If using Branch and Switch the workspace's current branch will now be the newly created branches.

Even though branch names can have spaces, it's highly recommended you don't use them otherwise you'll need to wrap them with quotes (i.e. "my branch") when using cli commands.

Add Branch

To add a branch use the branch-add command.

ark.exe branch-add -project <project name/id> -name <branch name> -desc <branch description (optional)> -cl <root changelist id> -auto_switch <bool (default false)>
A branch can only be created from a committed changelist.

Edit Branch

To edit a branch you open Worksapce -> Projects and choose the project the branch you want to edit belongs to. Afterwards, the list of branches from that project will be displayed, and you can right-click on the branch you want to edit and choose Edit....

Branches are identified by a unique id, which means that you can change its name.

Edit Branch

Not currently supported.

List Branches

To list the branches of a project you have the branch-list command.

ark.exe branch-list -project <project name/id>

Switch Branch

You can switch branches by using Switch Branch button or right-clicking any committed changelist from that branch and choosing a Switch To <branch>. Keep in mind that almost always you want to switch to the latest committed changelist for that branch!

There's 4 options you can choose when switching:

Give the possibility to lose data, please make sure to shelve or commit any changes between switching branches. A warning message to confirm reverting local changes will be added in the future to prevent mistakes.

Switch Branch

To switch branch you have the switch-branch command.

ark.exe switch-branch -project <project name/id> -branch <branch name/id>
Currently this command can only switch to latest, eventually options present in gui will be available in cli too.

Merge Branch

Merging branches is always done to the branch you are currently on, so the first thing you need to do is to make sure you're in the branch you want to merge to.

After you're on the proper branch, you need to right-click the committed changelist from the other branch that you want to merge and choose one of the merge options.

Changelists that have been merged will appear with full color, and if they haven't been merged they'll be greyed out.

All Up To <cl_id> will merge the whole branch up to that changelist, which is what you usually want. However, there are some use cases where you want to just get that specific changelist (e.g. a specific bugfix), so for those cases you choose the Cherry Pick Only <cl_id> option.

Ark will figure out what needs to be merged. If there are no conflicts with that file it will be copied to your workspace and appear in the workspace changelist as merged.

If there are conflicts, the local files will be left alone but flagged as having conflicts that need to be resolved.

Once all conflicts are resolved, you can now commit your workspace changelist with the merge. The history panel will reflect that this changelist has been merged.

Merge Branch

Not currently supported.

Conflicts

Conflicts can happen in 2 situations: when getting latest and when merging changes.

When getting latest is the most common occurrence, it's when the files you're working on had changes committed in the meantime.

Likewise with merging branches, if the assets have been changed in both branches they will be flagged as being in conflict and you'll have to resolve them.

There's 3 options to resolve a conflict:

Resolving conflicts is non-destructive, which means that before we do any changes to your workspace file, a copy of it will be saved inside .ark/. This allows you to always change your conflict resolution decision or even reset the conflict back to unresolved, since we bring your original workspace file before you made any decision.
A file needs to have its conflict resolved before being able to be committed.

Resolve Conflicts

To resolve conflicts, you right-click on the files or workspace changelist and choose one of the Resolve Conflict options.

After it is resolved the conflict icon will change to reflect that.

You can also choose Open Window, which will open a specific conflict resolution window for bulk resolving.

Resolve Conflicts

Not currently supported.

No Commit / #nocommit

When working on a file, you'll quite often find yourself in a situation where you have local changes that you don't want to commit accidentally. To help with this situation there is a feature called #nocommit.

There are two ways to use #nocommit. The first - and more convenient if you're programmming - is to simply add #nocommit keyword inside your text files. When parsing text files for changes, Ark will look for this keyword and flag your file. To remove this state, you simply remove this keyword from your file.

The second way is to explicitly mark the file by right-clicking on it and selecting Set No Commit, which is specifically useful for binary assets.

When using the explicit approach, you'll then have to use right-click Clear No Commit option to remove it.

Keep in mind that a text file can have both in file and explicit #nocommit, and you can see that state in the file's tooltip.

In case you have a lot of files that you want to prevent committing - perhaps part of a bigger feature -, you can also mark the workspace changelist with #nocommit by right-clicking on it and selecting Set No Commit. In the case of workspace changelists, it will always just append #nocommit to its comment, which means that you can also just write it yourself in the comment. To remove it, you can either manually remove it from the comment or right-click and select Clear No Commit.

#nocommit keyword is a client only feature, which means that you can edit it to any other keyword you may prefer in File->Preferences.

Print

The print command allows you to print out information about changelists, users and assets.

ark.exe print -cl <changelist id / tag name> -utc <bool (default false)> -offline <bool (default false)>
ark.exe print -user <user id / username / email> -offline <bool (default false)>
ark.exe print -asset <asset id / path> -offline <bool (default false)>
Passing true to the -offline option means that it will print out this information based on local data, without connecting / syncing with the server. Assuming you have already that data, it will make these commands much faster.

Crash Dumps

When Ark crashes, it will generate a crashdump that the user can then submit a bug report with. They are saved along side that session's log in:

Game Engine Plugins

Ark is a standalone application, but there are some cases where having a plugin is helpful, because it allows for a tighter integration, like being able to see in the game editor that an asset is outdated or locked by somebody else.

It is also necessary when using editors that are not very VCS friendly, like it is the case of Unreal Engine (UE). Unfortunately, when UE loads an asset it keeps a hold of that asset, which makes it impossible for Ark to then make changes to it. By having a plugin, you can have a communication channel between Ark and the game editor to address these issues.

Unreal Engine Plugin

Install

To install the plugin simply place the ArkSourceControl folder either in the Engine (e.g. <path_to_engine>/Plugins/Developer/) or in the Game (e.g. <path_to_game>/Plugins/).

After relaunching your UE Editor, go to Edit->Plugins and enable Ark Source Control plugin.

Setup Unreal Editor

To start using Ark as you version control system in Unreal Editor go to the lower right and select Revision Control->Connect to Revision Control...:

Then choose the Ark Vcs as the provider, and configure all the settings:

The Ark workspace will default to your project's root, however you may want to change it if for example you are using Unreal Engine Source.

After you click Accept Settings and Unreal Editor will launch Ark for you. If you close Ark, then you'll be disconnected from source control. To reconnect just open this window and click Accept Settings again. When you're connected to version control it will display a green checkmark on Revision Control button:

The plugin will only be working if Ark is connected to the server.

Afterwards you simply use version control like you would inside Unreal Editor.

Lock Requests

If you're used to Ark, you'll know about how our locks work, and some mechanisms that it has like being able to request lock ownership from another user.

These mechanisms will also work from inside Unreal Editor. If you try to lock (i.e. checkout in Unreal Editor nomenclature) a file that is already locked by somebody else, you'll be presented with a notification asking if you'd like to request the lock ownership:

If you receive a request, you'll also get a notification asking if you want to give the lock away:

You'll also receive notifications with the response to a lock ownership request, and when you eventually receive it.

File Status Icons

One of the benefits of using the plugin is that you'll be able to get visual feedback on your assets:

Here's a listing of all the icons Ark uses:

You don't need to memorise these, when you see an icon on an asset just hover it and you'll get all the information on the tooltip.