FAQ

Who's developing Ark?

Hi! My name is Nuno Afonso, and I'm currently the solo developer for Ark. I've been in the games industry for 16 years, working on games like Shadow Warrior 3, Cyberpunk 2077, Thronebreaker and Gwent, among other smaller projects you probably haven't heard about.

It was my frustration with the current state of the art in version control, combined with having to use this kind of software for the rest of my life, that pushed me to start this project.

I'd like to thank everyone that has supported this project, and I hope you'll find it interesting too!

Can I start using it in my projects?

Ark is still not 1.0, and it is a quite complex project with a lot of moving parts, so I strongly encourage you to please backup your projects often, specially when getting into more complex scenarios like branching / merging and when upgrading to newer versions.

When using it with an important project, I'd recommend to use it for a while in parallel with your current VCS before making a complete switch.

Where does Ark save data?

Data is saved in the following places:

How can I merge files?

Whenever you get latest and there are files that you've locally changed, you'll have a conflict. To resolve a conflict you need to add a diff/merge application, which you can setup on File->Preferences.

At the moment there's support for WinMerge and P4Merge, but you have fields to define how arguments should be passed for any other application.

How do licenses work?

All information regarding licenses is available in the Pricing page.

Will there be Linux / MacOS version?

Since 0.6.0 Ark ships with a Linux binary with Server and CLI support, and since 0.8.0 Ark ships with MacOS with Server, CLI and GUI support (i.e. feature parity with Windows version).

Why a centralized VCS?

A distributed VCS adds a layer of complexity that on a day-to-day usage in game development - and perhaps in every other industry - doesn't solve any actual problems.

One of the benefits that will come from this is having a sequential number for changelists, making it easier and more intuitive to work with than with hashes, but it also opens the door to many other features.

Why use trunk-based development?

This is a matter of development philosophy. Some people claim that branching for everything is the best way for development, but some of us disagree.

What we believe works better is trunk-based development, which very broadly means that everybody is developing and integrating things in the same spot. This has a bunch of benefits:

If you want to check out more about this subject, check Jason Gregory from Naughty Dog talking about it at HandMadeCon 2016.

It may sound counter-intuitive, but when following this approach development is faster and the project is globally more stable (specifically the complicated obscure bugs).

Does trunk-based development use branches?

Following a trunk-based approach doesn't mean that you don't have branches. It means that branches tend to be created more towards stability, e.g.

trunk____________________________________________________________
    \                                                           
     \                                                          
      staging_1.3_____                                          
                      \                                         
                       \                                        
                        live_1.3__________________              
                                    \             \             
                                     \             \            
                                      hotfix_1.3.1  hotfix_1.3.2
		

So in the case above, you branch from trunk because you want to stabilize for release 1.3. Then eventually that version is released (live branch) and is patched twice (hotfix branches).

In the meantime fixes done on these branches get copied over to trunk, the process for that depends on the studio, but imo the version that works best is that when you fix something, you immediately merge it back to trunk yourself.

This doesn't mean that you can't do feature branches for example, but specially when working with non-coders it's much better to minimize branch swapping and use functionalities like shelves.

Why case-insensitive?

Having "Somefile.txt" be different from "SOmefile.txt" is just adding problems without really solving any important one.

When case sensitive is used, it happens that some developers have different cases in their folders and files. This generates a mess, with multiple versions in the server, and some users have one while others have another.

So if case-sensitive is important to you, Ark is not the right VCS choice.

What is Ark built with?

Ark is being built with Jai programming language. At this point it uses GLFW for window management and Dear ImGui for the GUI.




Can't find the answer you're looking for? Feel free to get in touch with via Discord, email or Twitter.