Version control for #gamedev is a serious problem you have to get on top of early as an indy.

At one studio, the artists were just sending each other files via chat. They had no source control for maya files, psds or any source assets. Their concept art was on usbs.
A second issue is that artists and programmers work totally differently with their data.

Files fall into two types- you have your text based stuff (ascii) and your data stuff (binary).

A script would be text based, a photoshop or Blender file would be a binary file.
Now when two programmers work on the same text file, you want to merge their work.

But artists pretty much never want to merge their text files.

Artist text files are things like shader code or level scenes. Merging these is going to explode shit badly.
This is a fundamental problem that causes a lot of pain. A LOT of pain.

Artists, therefore work better with timestamp based systems.

Adele changed the tree at 1pm.
Billy changed the tree at 2pm.
Adele changed the tree back at 2.15pm with a stern message to leave her shit alone
This issue is solved using check out and check in based systems. Basically, Adele checks out the tree from the library. Billy tries to edit the tree, but the system says fuck no Billy, that shit belongs to Adele right now. Go ask her.

This stops overwriting binary files.
Programmers, however, want to fuck off into their own head space and work on their own stuff for a while, (called a branch or fork) and then when they are happy they try to merge their shit into the main project.

Someone checks over any conflicts and everyone prays.
Artists cannot do that. If you do, you cannot merge, you get overwriting.

Artists need to collab fast. I can make an asset and plug it in, and that can mean a tweak needs to be made to something else- and that artist can tweak that and it goes back to the lighting artist...
...thus the artists require their repository to be completely current. If we branch off, then those components aren't working with the other artists conditions. We need to be in synch.

Coders don't like that.

Thus you get a split in the way repos work. It can be a nightmare.
As an artist you need two repositories. One for the game itself, and one the source files... your maya files, zbrush files, substance files and so forth.

That second repo is going to be FUCKING MASSIVE.

Holy shit.
So that brings up another issue. That second repo is so big, you don't want to clone the whole thing and bring it all down all the time. Therefore something like GIT is just bang out, even with the LFS bolted on.

You need something that can selectively pull down files.
Okay, so that means you have several repositories, several systems, some locked files and others doing merging. People are bottlenecks to reviewing and approving merges.

The less painful you make fixing this, the better.
In short, don't use a 'diff' and merge based system for artists, such as GIT.
Use a timestamp based system with a check in/check out file lock (ensuring everyone has the option to break the lock when someone is away/ill/asleep) for artists.

Tortoise SVN, perforce etc
Don't use fork systems for art, animation or levels.

Be extremely careful with merges for things like shaders and scenes.

And invest money in a good solution because otherwise you will lose thousands, if not tens of thousands of dollars in lost work.

X
Also, you can export some binary files to ascii to help fix issues... maya files can be saved as either binary (default) or ascii.

The latter allows you to find corruptions such as broken links repeating over and over to bloat your file (this saved my ass on god of war)
So you cannot just assume a merge is needed based on if it is text or binary.
Personally, I hate GIT from the very bottom of my soul. It has caused so much damage to all the projects I have had the misfortune of working on that used it.

I am at the point if a studio insists on using GIT for the art team, I will just move to another art team.
Perforce and tortoise SVN have been the best ones for the art team in my studios, and I have never been on an Alien Brain team, so cannot comment on that.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Delaney King 👩🏻

Delaney King 👩🏻 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @delaneykingrox

Mar 25
Thanks for all the new #gamedev follows. Here is todays mini lesson...
If (!strangersToLove){

me.rulesKnowledge = true;
you.rulesKnowledge = true;

}

svn commit /what/Iam/Thinking/Of/* --FULL
Read 4 tweets
Mar 24
Got a DM question about how to maintain texel density when unwrapping game meshes.

I unwrap using Maya LT at the moment, and it has a feature called get and set under the scale transform of the uv tools.

Got "get" the texel density of a polygon, and the "set" the others.
Maintaining texel density is most important at seams, where it becomes very clear when there is a mismatch between the two.

However the actual truth is you don't have to maintain a perfect texel density across all of a model. Some parts just don't get seen by the player...
For example who gives a rusty old damn if the inside of a character's mouth, guns inside barrel or the underside of cars mudflaps are lower res than everything else?

You can often cheat density to allow key features close to the camera are crip.
Read 15 tweets
Mar 23
Quick #gamedev #gameart lesson.

Interpenetration is when you stick an element of an object through another. In some cases it can be handy, but it isn't always the best idea. Image
In the early days of 3D, interpenetrating geo saved us a lot of polygons. But engines worked differently then... polygons where expensive.
In this example, if I welded the beam into the block, it would increase the polycount by whopping... wait for it... 6 whole triangles. Image
But the rules are different now, 3d cards use a whole new set of rules.

The texture takes up more memory than the mesh you save, so if you bake like this, some of the texture will be wasted.

Either way, the saving isn't as big as it used to be.
Read 9 tweets
Mar 22
#Gamedev advice for students.

Your passion for games can and will be weaponized against you by companies.

You desperately want to be part of the magic of the thing you love, and will work yourself to burn out point.

You need to keep perspective.
If you are serious about working in the games industry, it will serve you to remember it is an industry that turns passion into profit.

Trade your time wisely for a fair compensation.
My advice is work hard at the start to secure a "NO fund". Savings that you can live on so you can say NO and walk away from a company that is harmful and find a better job.

This can be hard, but resist spending your early earnings on cool stuff until you have this.
Read 7 tweets
Mar 21
So, in closing... the real question isn't which Doctor Who has fucked their respective incarnation of The Master/Missy, the question is which Doctor is the bottom in each incarnation.

Thank you for coming to my lecture.
Bottom
Bottom.
Read 29 tweets
Mar 21
For the HD version of Stellaris, our team had to create all new high detail icons as the original ones looked too muddy when scaled up to 4k.

I used big blocks of colour, dark lining and sharp contrast so when the paintings were scaled down they would be crisp and clean.
Here is another painting from that project- again, big blocks with dark outlines so they would scale down and become crisp, easy to read icons.
I think Jack and I did like a few hundred? It was a lot.
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(