#source-control

1 messages · Page 50 of 1

river tinsel
#

coz, how p4 would know if it is just asset meta data or full asset ?

dawn pewter
#

@river tinsel
-yes

#

-i doubt it (too much work)

#

-depends on how epic games implements it. might need some typemap work but shouldn't really make that much a difference compared to what is around nowadays anyway

river tinsel
#

you are probabaly right, still hoped for some dedicated VCS for binary assets, would make easier to integrated it with git -

dawn pewter
#

tbh I would prefer ascii based uasset option, but afaik this will be a longer process that might or might not be part of an Engine overhaul (would love to see it in UE5)

river tinsel
#

I say text or no text, assets like meshes are going to be big

#

or textures, this is what the git is most struggling with

dawn pewter
#

yah.. but you have to differentiate between raw data and UE settings of those assets. The Raw data doesn't change except if someone reimports it or changes the settings in the Editor (and even then afaik it is non-destructive so the original Raw Data is kept). so decoupling them and make the settings part text based and raw data binary would allow us to pretty much version those things too.
But that's really not that important.. Having text (ascii) based options for any Node based uasset as well as maps would greatly improve the ability to work with source control. So no need to reinvent source control, but it would need quite some rework on the engine side I guess.

blazing tapir
#

SO just a heads up I think I may have found the solution to my problem... and It was kinda stupid.

#

My local IP had changed and so the port forwarding was all screwed up.

woven sluice
#

(you might be able to make your server's local IP static or manually assigned around DHCP in your router's settings)

south plover
#

Hey guys, i'm using P4V with windows client and yesterday i had to undo some changelists and get an earlier revision. However, there are some assets now in UE4 with an exclamation mark. And when i sync them, they get updated with the ones i undone.. How can i force those files back into perforce? Or how can i make an older revision to the actual?

blazing tapir
#

@woven sluice I ended up setting up a static IP address. Can I set my server IP separately?

#

Follow up question: if I have my VPN on, can I tunnel split so that my server is still running in my normal IP?

woven sluice
#

if you're running P4D in a virtual machine then you might be able to use a unique local IP for the virtual machine but I don't know if there'd actually be any benefits to bothering to set that up. just some security improvements for your actual PC maybe. no idea about tunnel splitting

blazing tapir
#

Hmmm... yeah I was going to ask about security

#

What kind of security can I setup for my server?

woven sluice
#

in my experience simply changing the ports used by any risky software on your PC that can give someone powerful access will basically cut out all traffic. e.g. if your machine has SSH access set up on default port 22... make it something else. I don't think anyone targets perforce for brute force attacks because it isn't common software but simply using a different port than 1666 for it should hide it from pretty much any bot net traffic anyway (if a real h4cker wants to park a van outside my house and do something they'll probably get in, but ... I'm not worried about that)

blazing tapir
#

Okay. Im not the most tech literate person in the world so Im not sure what port my SSH is set to. Ive been reading up on stunnelling and Perforce. Is there any value in that?

digital pike
#

@blazing tapir you have to port forward the port "1666" in your router

#

ok nvm , did not see that message

limpid obsidian
stuck jacinth
#

Hey everyone 👋
Is there any how-to guide on setting up CI/CD with ue4-docker for automation builds for multiple platforms?

analog lodge
#

Soo...I´ve got perforce up and running on my vps, set up a protection table that works like a charm across multiple users and got a typemap to keep binary asset revisions low for storage saving purposes.
All fine and dandy.
Now I got two more things to iron out. One is more cosmetical, one more serious:

#
  1. Staying within the free 5 users/20 workspace limit, but having to deal with an online collaborative project, where people drop in and out all the time, sometimes without notice (well, the dropping out part)...
    How do I reflect this in my user setup?
    I was thinking to assign task specific user accounts like "environmentA" "environmentB" or "lighting" and then have a workspace naming convention, that includes the actual users name.
    The other way is too just have new userprofiles for every new user and then deleting the old ones immediately.
    The latter probably makes more sense, just interested if anyone else is dealing with this and if so how.
#
  1. Backups...Before I start reading up on this...any pointers about how to deal with backups?
    Is this done within perforce itself or is that a vps thing?
    I´m (probably naively) thinking: "Well, if the vps goes down, I still have my local workspace I usually have in sync, so I might just loose a days work if at all and can just rebuilt from that. And vice versa".
    Whats wrong with that thought?
analog lodge
#

Mind you, I don´t do any programming on that project, so I don´t worry much about branching etc.

woven sluice
#

right now our team has 4 people and we're using standard user-based logins... we're using a Streams depot and I've learned that if we grow to 6 users it's fairly trivial for me to
• delete all users except the Admin account
• create generic users like you described (I was going to use Admin, Coders, Artists, Designers, Misc)
• have everyone change to a new login, create a new workspace selecting the same stream and project root on their PC they were working on before

in my quick one-off test, it all "just worked". I didn't have to re-download the project, it read and accepted the existing files on disk for the new user/workspace. one nice thing about Streams depots is you, the administrator, are responsible for setting up the different Workspace mappings. With traditional depots and traditional username logins, each user is responsible to set up their own mapping. Using the shared login to exceed the 5 user limit will, however, require some trust on everyone's part. Since two human beings could cause some havoc deleting other workspaces that aren't supposed to belong to them.

#

for backup topics, keywords are "journal" and "checkpoint" ... I haven't set up backups yet myself as our project is young and I don't care if we lose version history yet but I think the process is something like to "rotate" the journal and optionally copy the rotated out-of-use file off-site

#

@analog lodge

analog lodge
#

Thanks for the input!
Still gotta look into streams one more time.

woven sluice
#

with shared logins you could also, in theory, change your PC name to match someone else's PC name, download "their" workspace on your PC instead, make stupid changes and commit them claiming they did it instead of you. you'd obviously have to be working with seriously immature assholes for this to become an actual problem though.

#

otherwise if everyone is using their own workspace it's still easy to tell who did what, just add the Workspace column to the Submitted changelists view in P4V

limpid obsidian
dawn pewter
#

As an alternative you could use the backup options provided by your VPS hosting (most likely “simple” snapshot). Your service provider probably already does some kind of backup in case their server crashes (depends on the provider and tier though), but having snapshots is an easy way to backup the current state of a server (they are stored on different hardware). This in combination with the fact that the data is spread out to every user (but not the revision history) should be enough for most indie projects.

#

But you could always go on and do daily backups/snapshots of the server.

dusk dove
#

we have it set up with a simple script that will create a p4 checkpoint just before the server itself is backed up by linode

young prawn
#

Does anyone know if there is a way to change the email address with which Unreal wants to make the connection to Git?

fossil willow
#

Anyone know the best Multi-User Editing SVN to use for UE4..i never used one before

rough wadi
#

Anyone has ever seen this fckery by Perforce? We did a 20 hours lightbuild on a scene. Saved it, uploaded, all good.. Worked on some stuff, and somehow the light build got fucked up. Alright classic UE stuff, it happens. Let's roll back the file to the previous revision. I get the specified revision, then check out the file. It tells me it's not the latest version, do I want to get the latest? I click NO. Then I go into submit and it tells me I cannot submit because it's not the latest. I need to get the latest, but it WILL NOT OVERWRITE my current file. So I right click it, press get latest, and behold, that sucker just overwrites the file with the latest version. Doesn't let me resolve, nothing.

quaint obsidian
woven sluice
#

@rough wadi all sounds completely normal? you can't just switch to an older snapshot of the depot, modify it, and treat it like changes to the current version, that's not how VCS works. it's like time travel, that would create a "time travel branch" starting from some old state. there's an undo command you need to learn how to use which you can run from the current/latest version of the file.

#

(yes, it is hella confusing when you're getting started with it)

#

this is also annoying because it might mean you 1) get older version to test, 2) decide older version works, 3) go back to current version, 4) run undo to "update" to older version ... I don't know if there is some way to run steps 2/3/4 "all in one"

young prawn
#

Thanks @quaint obsidian !

minor tulip
#

hi frens, is there a way to submit color palettes to Perforce?

rough wadi
#

@woven sluice The problem is, when we had to roll back in the past, this method worked perfectly fine. Even P4 itself states that getting latest INSIDE the submit menu, WILL NOT OVERWRITE THE LOCAL FILE. Then I could resolve with target - in the past - and voila, I could upload it as a new changelist, that also kept the rest, so this way we essentially had all versions on P4. Now even tho it states it will not overwrite the local file, it does. Everyone whom I know and uses perforce extensively was just staring at the video of it happening like "What the fuck?"

fossil willow
#

Does anyone know if the free version of Perforce is enough for users who just need source control and multi-user editing

woven sluice
#

@rough wadi misread it. perforce is "smart" (read: dumb) enough to check and realize that you didn't make any changes to the old revision, so there's nothing to resolve when it runs Get Latest. unchecking this might fix it but I'm not sure if it might cause other problems https://i.gyazo.com/d5ab515005adf36fd17e5d1619c9faf1.png

rough wadi
#

Afaik I have that disabled. For now I could resolve -pun not intended- this issue by simply getting an older revision, copy it to a separate place, get latest, check out amd overwrite with “old copy” then submit

woven sluice
#
    Added a new Server Data preference, " Automatic Safe Resolve (no
    merging) when syncing files". This preference is turned on by default.
    As a result, when syncing files (Get Latest...), P4V now runs a safe
    resolve (no merging).```
rough wadi
#

Thank you for helping!

woven sluice
#

yeah. it's always nice to learn how to use the tools "right" rather than needing to do hacks like the copy-out-and-back lol

#

unchecking that appears to have made it ask me to do a resolve from the steps you said though so go doublecheck I guess, maybe you forgot to set it again after a reinstall at some point or something

rough wadi
#

Will do! Thanks a lot 🙂

peak drift
#

Hello, if I change something inside the main player blueprint and somebody else changes something else inside the main player too, how do we give each other the main player blueprint without losing what one added? ( eg I add a jump function and he adds a dash, and we want to give each other the blueprint to have both the jump and the dash added )

woven sluice
#

You can't. You already messed up if that happens. You can try duplicating or copying some of your blueprint work into another blueprint or https://blueprintue.com and then try to manually merge it after one of you gets the other's work

winged vessel
#

experience with Git ??

rotund bobcat
#

who?

winged vessel
#

i have been using svn thinking above moving to Git using a local hosting via Gitea

fossil willow
#

Im following this video, anyone know if its accurate for a 2 person team that just needs multi-user editing with source control

https://www.youtube.com/watch?v=eH9LGAu-nlw

Source / Version Control:
This playlist will cover multiple ways to work with source control with UE4.

This Video:
In this video, we install the P4D server and the P4V client app. We then bring it all together to get a perforce repository integrated with Unreal.

Links:
(FR...

▶ Play video
lost quiver
#

I need urgent help from anyone with Git LFS experience
So we have a data pack for our data repo and says it resets in 30 days so it mustve reset the other day but we've already used 70gb out of 50?? How can I fix this and how can I bring the amount down or is it stuck there until it resets?

hollow badge
#

what engine branch is the 4.26 water in. I'm in the rendering branch and I'm not seeing it here

#

@fossil willow multi user editing only works on local network as far as I know

jolly fog
#

how do you setup perforce in an Azure instance?

#

just use a linux vm?

solar totem
#

Hi is someone from germany here who can help us with our perfoce Setup?

winged vessel
#

check pinned messages

solar totem
#

Yes I saw the links and tutorials but for some reason is the connection (Get latest Revision) very slow (about 2 Mbits)

analog lodge
#

I´m from germany, but I can´t help with your speed issues....:)

static ridge
#

Can someone call me and just guide me through using lfs properly, I have two commits waiting and when I push origin it says they are over 100mb

#

ping me

dawn pewter
#

@jolly fog Never used Azure, but as long as you get one of the common linux distro running (like Ubuntu, CentOS,etc.) it should work.

static ridge
#

@dawn pewter Could you help me out?

magic belfry
#

anyone a perforce admin? Was curious about jobs and if theres a way to force users to specify a job before submitting their changelist

#

its so hard to find the answer to this question on google

#

is this something you'd have to write a trigger for?

hidden ibex
#

Hey guys, currently using Perforce.

When I Get Latest, Perforce is causing a lot of inconsistencies. References to textures etc are breaking

#

Looks like it's always happening on every Get Latest. Any help will be appreciated

magic belfry
#

@hidden ibex run a clean before syncing

#

while ue4 and visual studio are closed

#

then get latest

#

replace missing references if needed, submit.

#

thats what I would do

obsidian thistle
#

Is there a way to know the progress of a reconcile ? Since I got the UI with the diff and now look like it's endless

fossil willow
#

Anyone here had an issue with a new user not connecting to a Perforce server

magic belfry
#

@obsidian thistle I dont think so, or at least, ive never noticed it. I think you just have to wait.

vernal sierra
#

I'm new to source control, trying to set up github for my project but I'm stuck at something

#

I found out I have to use something called git lfs so I downloaded and installed it

#

But as I understand I have to specify every "big" file type to it for it to process as big files?

#

There is no automation for that? Can't I just point my project folder and let it do its thing?

static ridge
#

@vernal sierra I had this problem too

#

I uploaded a 16k 300mb hdr

#

And everything broke

#

but just don't upload anything crazy until your project is really advanced

rotund bobcat
#

and at least with sourcetree, dno about other software, it will warn you if you push a rather large file and ask if you want to add it to lfs instead

noble knoll
#

@vernal sierra github LFS is 5 euros for 50 gb bandwdith a month

#

get ready to pay out of the ass, really hard for anything stored on github LFS

#

its also 50 gb space, but thats nowhere near as bad as the bandwidth limit

pale walrus
#

Hi everyone!
I just installed raider from JB, but cannot establish perforce connection. There were no problems with this connection, when i did it in VS + Perforce extension, but here I set up same parameters, but it show up this. Any ideas?

woven sluice
#

For this reason I switched to using a P4CONFIG environment variable, I put a P4CONFIG file in the root of my project containing my client spec and ignore file name. You also have to set rider to use perforce by directory or project, instead of by entire solution. Look more in rider settings. I'll give more info in a bit @pale walrus

pale walrus
#

You also have to set rider to use perforce by directory or project, instead of by entire solution.
@woven sluice
I've looked in it, but didn't found anything about how to do it. If you'll help with this, this would be really nice of you! Really want to test raider features but setting up perforce connection is really pain in ***. Appreciated.

hidden ibex
#

Guys what's the right way to Pull from Perforce?

#

Get Latest Revision or is there a pull feature from Unreal itself?

pale walrus
#

Get latest revision

hidden ibex
#

Hmm

#

Sounds inefficient. Feel like Unreal should be checking for new files as well

pale walrus
#

Kinda, but imagine if you have poor connection, always download any asset that anyone added may be costly. and not only this, so it makes sense. Anyway you can do it by pressing 2 buttons in editor after establishing source control connection.

solar totem
#

hi, please help me my friend cant use "get latest revision". There is only an infinity blue loading screen...

#

there is no loading progress

woven sluice
#

well how big is your project and how fast is the server

pale walrus
#

@woven sluice Is it for me?

woven sluice
#

nah Tadopai. actually that was a stupid question - is the friend's project folder increasing in size?

solar totem
#

its about 4Gb and the server is fast enough but the connection is a bit low.. But when i look for the connection (while dowloading the files) the is no big worload

#

workload

#

about 100-500kbts

pale walrus
#

Thanks a lot! You are my savior @woven sluice.

solar totem
#

@woven sluice He has the files on his local drive (and in his perforce workspace) but perforce wont detect the files

#

I send him the files

woven sluice
#

you manually sent him the files to copy into it?

solar totem
#

yes

woven sluice
#

yeah that was a waste of time

solar totem
#

-.-

#

ok and why is my network load very low

woven sluice
#

first, is it copying files or not. if you're feeling totally lost I would scrap his entire setup, remake a new workspace, and start a fresh Get Latest. then he can tell you if his folder is being populated with files or not.

#

if it's slow, that's probably because by default perforce runs single-threaded with a single file transfer running at a time. there's a way to set it up to perform parallel transfers. I haven't done it yet

solar totem
#

hmm His folder semms to increased but very very slow

#

I have read, that Kaspersky can make serveral issues? I use Kaspersky on my server. Could that be the reason?

woven sluice
#

maybe. they have blog entry about that specifically, although everyone always complains about any AV slowing stuff down usually. just be like me and don't use antivirus

solar totem
#

Its working!!!!! Thank you @woven sluice !!!

woven sluice
#

you think your antivirus was slowing it down even more then?

solar totem
#

yes I removed "Kaspersky Anti-Virus NDIS Filter" with the command line and in the windows safe mode (with network drivers) and it worked

woven sluice
#

neat

obsidian thistle
#

Hi, is there a way to apply my new p4ignore file to my workspace ?

#

because I don't think ignored file will be mark to delete if I reconcile 🤔

woven sluice
#

no, you can't "apply" an ignore file to a workspace. perforce simply looks for any ignore files during ops that can use it, and if it finds one... it uses it

#

looks for an ignore file based on your environment variable setting

#

and no the ignore file doesn't mark stuff for delete if you've already submitted it before

#

it only prevents adding new files

obsidian thistle
#

@woven sluice thanks 😄
I didn't submit those files yet, you mean when I will submit ignored file will not be submit ?

#

ok yeah it only prevent to add file to pending list

woven sluice
#

if they're already in a changelist they will get submitted. yeah there you go

obsidian thistle
#

@woven sluice ok I figured out my issue by simple revert with the -k arg which revert without changing my local files, like :
p4 revert -k -C WorkspaceName //DepotName/Folder/...

#

and remade a reconcile on it

autumn sail
#

@obsidian thistle So, will that remove all of the files from the server that are in the p4ignore file?

obsidian thistle
#

@autumn sail no it just reverted my files without change my local files

#

and luckyly I didn't submit those files yet

autumn sail
#

Ok. I'm new to perforce and some things seem to be more complicated than I was expecting.

woven sluice
#

-k "keep workspace files" 👍 (I didn't know about this either. learn a little bit every day HaroldHaha )

#

usually don't need to use the command line with perforce when you're new, but yeah it is extremely confusing

obsidian thistle
#

for advanced thing you need to sadly, P4V didn't expose all

autumn sail
#

I also need to figure out how to remove a bunch of old revisions without destroying the entire project.

#

I had to dig into the command line because a teammate checked out the entire project and couldn't get it checked back in.

woven sluice
#

you generally never purge old revisions in any version control system. perforce has a system in place that lets you limit the number of revisions of files it will store though which is much more useful (typemap)

autumn sail
#

How do I set that up? I really don't need 11 revisions of a 500mb map.

woven sluice
#

just google p4 typemap to research the subject a bit. also, right click on a file in P4V and choose "Change Filetype". the menu that pops up will explain what all the options mean in the typemap entry file. note: after you set up your typemap, its settings are only applied to new files when they are checked in. for any existing files in the depot you have to go around and manually set up the typemap on the files, as far as I know

autumn sail
#

Ok, so text+s6 will only keep the last 6 revisions?

woven sluice
#

filetype (text there) instructs perforce how to store and generally treat the file, then yes S6 (not s6) stores max 6 revisions

autumn sail
#

So, in that example there's the megacity file at revision 19/19, but the filetype is text+S10.

#

How would we remove the extra 9 revisions?

woven sluice
#

they don't exist

#

i can't retrieve them

#

when i submit revision 20, revision 9 will be destroyed

#

when i submit revision 21, revision 10 will be destroyed. etc

autumn sail
#

Ok, so the 19/19 just shows that there's been a total of 19 revisions, even if there isn't a copy of all of them on the server?

woven sluice
#

yep

autumn sail
#

But for every file that I have in the server that hasn't has a filetype applied to it, I'm going to have to manually change it then?

woven sluice
#

that's right. I've also never tested if you specify e.g. a +S2 on a file that has 10/10 revisions, if it will instantly delete revisions 1 through 8 or what. not sure what happens when you change the filetype of a file with a long history.

autumn sail
#

I guess we'll find out. Worst case scenario I'll just wipe it all and reupload it with a proper filetype and p4ignore setup.

#

Thanks for all the help

woven sluice
#

yeah you could always back everything up, do a mass obliterate and reupload if you had to. I bet it'll just erase the old revisions, maybe after you submit the next rev or something at worst.

marsh tide
#

Hey guys I am trying to get perforce setup and following the tutorial in the ue4 docs, i have an issue with a step AFTER creating a new workspace I'm not getting a pop-up to select my project folders I want included. I got the pop-up once but cancelled out and have yet to ever see it again. So now I'm really stuck trying to figure out how to initially add my project files

woven sluice
#

you should be able to just copy files into your workspace folder and then go hit refresh in P4V, you should be able to see all the files (with blank icons because they're not in perforce yet)

#

you don't need that wizard dialog

#

e.g. it should be possible to create a new depot, create a workspace for it, then go into UE and set up a new project inside your workspace folder, then go into P4V and add the files for perforce

marsh tide
#

hey, it's working, connecting with ue4 and then adding the files was the trick

tall scaffold
#

I'm trying to set up UGS (unreal game sync) for my project and I really do not even know how to get started

#

usually in other projects ive worked on, its already set up before i get there

#

but on this project, its my own so I'm left to start from kinda nothing. When I'm looking at the documentation I cant really find what im looking for...

#

I kinda just wish I could find the actual thing that runs unreal game sync and just point it at my project file and go from there. probably naive to say, but is that how it works?

#

but please let me know if anyone else has anecdotes or if this method seems to be the way

hidden ibex
#

Do project settings get updated in Perforce when changed in Unreal? Such as if I change Game Modes or Inputs

still obsidian
#

I believe those settings are stored in the .ini files within the project, in the Config folder. So if those folders are in Perforce then yes. I think.

hidden ibex
#

Thank you

#

I'm trying to push some changes (Submit to Source Control from Unreal)
VS throws an exception: CoreUObject.pdb not loaded.

#

Anyone encountered this before?

marsh tide
#

Hey I'm trying to grasp concepts with source control, is it accurate that external devs would need to have basically the entire game on their personal pc/ workstation ? If my game is 100s of gigs, seems like an issue 😕

rotund bobcat
#

depends what source control you use

#

but with git yeah

#

and I mean, if they need to actually use the game, they would probably need the entire thing anyway

marsh tide
#

I setup perforce

rotund bobcat
#

can't really boot a game with half the files

woven sluice
#

No offense but are you from 2005 or something? 100 GB of hard disk storage today is worth like $5... $25 if you roll with the fastest nvme...

rotund bobcat
#

I don't get how you'd want developers to work with half a project though

#

maybe if you mean source files yeah

#

but maybe keep those separate from your project itself

woven sluice
#

Perforce is made to handle it all effortlessly though, doing anything else would be abuse of the poor tool 😄

#

Anyway. If you have modelers and other artists contributing and you don't want them to have access to the project, you could filter their view of your depot to just a "content source" folder. If they don't know how to use perforce they will likely prefer to just give you files and let you integrate them.

mental stirrup
#

you could boot up a level or a dif project with just the logic

#

not the level assets

#

ur issue is not drive space but managing ur crap 😛

#

most likely

autumn sail
#

In your p4ignore file, what do you need to ignore level builddata files
I have *_BuiltData.uasset but it doesn't seem to do anything

autumn sail
#

_BuiltData.uasset seems to work.

marsh tide
#

No offense but are you from 2005 or something? 100 GB of hard disk storage today is worth like $5... $25 if you roll with the fastest nvme...
@woven sluice Not sure if this was directed at me? But my issue would be transmitting the 100s of gigs through the network 😋 I need to trim down my project for sure, it's sitting at just over 200 GB in my content folder atm.

woven sluice
#

fair enough, it is usually assumed you'll have a half decent internet for a perforce server and that any new devs will have to spend a whole day syncing any large project but yeah. is that all uassets or did you put a bunch of asset source files in there that are ballooning it? there are ways to filter out stuff fairly easily with perforce depending on what depot type you're using and such

marsh tide
#

I have a lot of assets, many of which Im not using. My project is 2yrs old and has ballooned a bit

woven sluice
#

at the end of the day it is what it is but if you have a bunch of like WAV or BMP files, you could move them into a separate folder and filter them out of other streams or workspaces to save others from having to download them. I personally don't do anything like this because I want the whole team (we're only a few people) to have a full project copy. just a super easy form of project backup.

rotund bobcat
#

We just share the project itself, but not the source assets, we keep stuff like fbx and things on a separate SVN servers that only the artists use, we only need the imported version for development anyway

woven sluice
#

^ exactly this, except since you've set up perforce you don't need multiple solutions, you can just do it all with perforce

pearl slate
#

So im assuming unreal doesnt offer any type of Collabaration like unity?

quaint obsidian
#

@pearl slate could you elaborate?

pearl slate
#

Unity has something called team collab and your entire project is stored in the cloud and can be shared kinda like Git but much more intuitive and made by unity

#

Just like source control but way more intuitive and works through the game engine

quaint obsidian
#

source control works within the editor

#

there's no need to make a separate tool for it in UE4, it just uses the already robust source control tools out there and integrates them into the editor

robust jacinth
#

Christ, I hate Git.

#

For a client, I've cloned (forked?) 4.24 and uploaded it to their BitBucket.

#

Trying to figure out what's the best UE4 Git repo to client P4 flow we can have.

#

Does it make sense to make a new branch for our edits to the engine?

#

Or should that not be a new Git branch?

pearl slate
quaint obsidian
#

@robust jacinth yeah that should be a new branch

dawn pewter
#

@pearl slate
Nothing UE4 with SourceControl (versioning and traceability) and a Build server („cloud“ build) can‘t do.. might need a little more setup but it‘s not like it is impossible. If you talk about the ease of access, then sure.. would be nice, but not really a priority in my opinion. Together with the experimental collaboration feature in UE4 that allows for realtime (level design focused) collaboration similar to a certain third party solution for unity and ue4, the packaged seems to cover most of collaboration scenarios I could imagine.

wary salmon
#

@pearl slate I remember it having some sort of "multiplayer" on the editor. Can't recall now.

#

Then ofc you have perforce github and the like

grand cliff
#

Hi all. Can anyone of you explain to me, what causes "librarian checkin / checkout" issues with Perforce? We encounter this from time to time and in most cases I can obliterate the bad revisions or rename the folder the affected files are located in. The explanations I've found so far weren't very helpful in terms of what could be the cause.

coral heart
#

I'm currently using Helix/P4VS and whenever I remove a file from my solution explorer (VS2019) it doesn't prompt to delete the file, only removes it from the projects filters. Is there a way to fix that? I've had to manually go into the depot, mark for delete, find the files on my hard drive, manually delete them, and then also remove from filters. I've done it in the past where I just click remove in VS and it would prompt to delete the file AND mark for delete. Wondering how to get that back?

ornate willow
#

@hidden ibex in VS solution explorer, try right clicking the project and "set as startup"

@coral heart do you have p4 for VS plugin?

coral heart
#

@ornate willow Talking about helix and such right? yeah. For example if I modify a file it'll auto check it out in perforce.

dawn pewter
#

@grand cliff
The error itself is due to a missing revision or permission issues on the server (depends on the actual error message because there are multiple reasons you could encounter librarian errors).
Did you check the rcs file that represents the missing revision on the server? If it is/they are missing there or are empty it could as well be a server problem.

Additional things to check:
-path length
-Server resources (available disk space/ram usage)
-Server version and change log of newer versions, maybe there was a bug that got fixed in a newer version.

river tinsel
#

@robust jacinth If you can spend some money, and don't need hisotry, but want DVCS

#

I can recommend Plastic SCM

#

when I finally stoped trying to sync git repo to plastic directly and instead just dumped it

#

it is actually far better to work with than p4 or git

#

it took bit of experimentation to get best workflow for it

#

but now it is, far easier than p4

runic trail
#

is it possible to use perforce locally? I just want it for my own side project not anyone else

woven sluice
#

yep

#

install a local server or create a separate depot on the remote server

runic trail
#

thanks!

#

when using VS 2017 with perforce

#

how do i sign in to perforce on visual studio like the unreal engine does

woven sluice
#

do you already have the P4VS plugin

runic trail
#

nah i just downloaded it from the perforce site

#

installing it now

woven sluice
#

👍 give it a try

runic trail
#

ah i just found their documentation

#

it wasn't coming up before

#

ill give it a run

#

thanks

#

how would i make my new depot start it's own changelist numbering and not use the original's?

#

would it be a branch?

woven sluice
#

i don't think you can do that, because a changelist can affect multiple depots. changelist numbering must be global at the server level

runic trail
#

ah ok thanks

runic trail
#

What does "file(s) not in client view" mean for the p4vs?

#

in vs i selected my workspace but im getting that error on all the files

lean yoke
#

hey all, I'm trying to set up our artist with our UE4 project on perforce, and I've committed the binaries to the depot like it says in the UE4 docs, but they still can't open our project. Can anyone explain to me what I'm doing wrong or have a link to a tutorial I could see how this is done? I've dumped 2 days into this and google isn't helping

runic trail
#

did you commit the entire project?

woven sluice
#

maybe you figured it out by now but if files aren't in the client view, it means that the files you're trying to add aren't inside of the workspace mapping... usually happens if like you try to P4 ADD a file from C:\SomeFolder when your workspace root is C:\DevStuff\Project

#

more simply: files you're trying to add aren't in your workspace root folder (or a subfolder of the same)

lean yoke
#

@runic trail I committed everything except intermediate folder

runic trail
#

do they have the same engine version?

lean yoke
#

yeah, I zipped up the source engine we're using and sent it to them, and they selected it using "switch engine version" from the .uproject file

runic trail
#

hmm

lean yoke
#

it says that all modules are missing and need to be recompiled, do they want to do that

#

of course since they don't have vs, if they say yes it says c++ is missing

runic trail
#

you could try just going from scratch. have them install the engine straight from epic launcher, and you commit the entire project folder

#

and they do a fresh grab

#

they'll also need vs if it's a coding project

woven sluice
#

no they won't need vs

#

stupid question but you didn't compile and upload debug binaries instead of development did you

lean yoke
#

no, definitely development editor

#

I've tried it with .pdb's and without .pdb's

#

it gives me the same issue regardless

#

we originally tried with the engine from the epic launcher

#

same thing, so that's why i sent him the source engine pre-compiled

#

I mean, I'm not against having him download VS but I've never had to do that before at previous studios, we just had the binaries submitted, but always writable

runic trail
#

@woven sluice this my p4v client file, and below it is my depot structure in p4v (the first depot is also called depot because i didnt know any better). This is the error i'm getting ```
c:\Perforce Depots\ProjectLancers\ProjectLancers\Intermediate\Build\Win64\UE4Editor\Inc\ProjectLancers\ProjectLancersGameModeBase.gen.cpp - file(s) not in client view.

#

my view looks to be matching in my client file and my workspace in p4v

lean yoke
#

@runic trail do you have a .p4ignore?

woven sluice
#

I always get confused with classic depots and their annoying folder layouts, there might be an extra ProjectLancers on one side or the other... but Raven is right, have you researched files you're not supposed to commit

#

but usually you would just map it like //ProjectLancers/... //Anthony/...

#

actually I don't know, with pulling multiple depots in. like I said I hate the classic depots now because of how confusing they are I always have to trial and error it 😄

#

only other thing I see for your direct problem would be space in root path - I would imagine this is supported but I've never checked, I never put spaces in any dev paths

#

but I'm guessing you had a working setup before with "Perforce Depots" and are modifying it

lean yoke
#

@runic trail under view I would expect to see //depot/... //workspacename//...

#

so if the 2nd depot is named Projectlancers, //ProjectLancers/... //workspacename//...

woven sluice
#

Ravenwolf a much, much, much stupider question: there's no chance your artist has a 32 bit OS is there? lol

lean yoke
#

haha, no

#

I'm having him download VS Community

woven sluice
#

yeah we're using a launcher engine, simply committed the 4 files in Binaries\Win64 and we were off to the races

lean yoke
#

that's all I've ever had to do in the past

#

I even had him to clean install of p4v, delete all workspaces, pull clean from depot

#

I've dumped too much time into it already, it won't hurt him to have VS.

#

my boss is setting my discord on fire for updates and to get it working

woven sluice
#

well it'll waste a few minutes of his time every time you make a change for him but otherwise

lean yoke
#

this is just temporary until we get a break so I can research it further

#

we have a demo tomorrow

woven sluice
#

yeah that's fair of course

lean yoke
#

and he's got lighting work to do

#

so sometimes you have to use a band-aid to get through until tomorrow, lol

woven sluice
#

I recently finished building a continuous integration setup for our team. coders never have to worry to remember committing binaries anymore, just submit code and artists just sync. it's great. lot of effort though

#

anyhoo

lean yoke
#

oh man

#

you use jenkins?

woven sluice
#

yeah

lean yoke
#

was there a specific guide you used?

#

I want to get Jenkins set up for us so badly

woven sluice
#

and switched to Streams depots - much easier to admin and set up for this kind of thing, don't even have to set up ignores and stuff technically

#

ah I might be able to find a few of the reference sources I used, there were... several I had to cherry pick from. I can provide some screenshots/more info over time if you get into it and remmeber my name

runic trail
#

@runic trail do you have a .p4ignore?
@lean yoke not yet

lean yoke
#

@woven sluice I just friend requested you - I'd love to get more info when you have time

runic trail
#

so if the 2nd depot is named Projectlancers, //ProjectLancers/... //workspacename//...
@lean yoke workspace name is Anthony-PC so it should be //ProjectLancers/... //Anthony-PC//...?

woven sluice
lean yoke
#

@runic trail ok so that appears correct then

runic trail
#

Well right now it's using my client name not my workspace

#

//ProjectLancers/... //Anthony//...

#

is client

#

//ProjectLancers/... //Anthony-PC//...

#

is workspace

lean yoke
#

hmm

#

files are only local?

runic trail
#

nah i just created a new depot on the server

#

so "depot" was my first depot

#

been using for months

woven sluice
#

so wait your mappings aren't set up right? Anthony isn't your workspace name?

runic trail
#

Anthony-PC is my workspace name

#

Anthony is my client name

#

but if i delete my new depot, ProjectLancers, everything works totally fine

#

like i've been using my first depot, "depot", for months

lean yoke
#

I haven't seen it where the client follows the depot name

runic trail
#

I can change it to the workspace name and see

woven sluice
#

I'm not used to that weird text view you generated I just use P4V to view/edit my workspaces but I don't know how that mapping could possibly work, if Anthony isn't a workspace then it's not a valid destination for the files to get put into

runic trail
#

how do i do it in p4v?

lean yoke
#

@woven sluice you get that text by typing in p4 client into cmd

runic trail
#

ah hold on

#

i think i see the issue

lean yoke
#

Connection->Edit Current Workspace

#

or Views->Workspaces

#

and then select the one that's not working and edit

runic trail
#

yeah that fixed it

#

for some reason

#

p4v is creating a workspace

#

that has the client name automatically

#

I have to delete it

#

This is my first c++ project, is there anything I have to do in VS before i add it to the depot? do i have to build the project or anything?

#

i compiled the project in the engine, but i saw some people talking about a separate build in vs?

woven sluice
#

there's no difference whatsoever except the additional challenge of sharing binaries with non-coding team members (if there are any such members). make sure you have a proper ignore file setup to ignore visual studio files, Binaries, Intermediate, Saved

runic trail
#

is my p4ignore file per depot or one for the whole server?

woven sluice
#

it's usually interpreted by perforce per folder (including subfolders)

#

like P4V looks for a file matching the ignore file name and if it finds one, applies it to everything recursively down the filetree until it finds another one

#

I think

#

I always just stick one in workspace root and be done with it

runic trail
#

ah ok that's what ill do

woven sluice
steady void
#

hey source control people, I'm still grossly confused by working with this stuff and I could use some help

#

I've finished up a feature branch and I want to merge it back into the dev branch but I'm not sure how to do that

#

I thought it was with a pull request but when I go to do that it says "these branches are equal"

#

when I look at the files in my repository I can clearly see that one branch has more stuff in it

#

so idk what the deal is

runic trail
#

@woven sluice so i should ignore the .sln files for coding projects?

woven sluice
#

yeah

runic trail
#

should i ignore the Source folder as well or no?

woven sluice
#

no that's where all your code goes

runic trail
#

ah ok

#

this is my project folder, so i should be ignoring .vs, binaries, intermediate, and the .sln file?

woven sluice
#

and Saved

runic trail
#

ok

#

huge help, thanks

#

ah damn it i deleted the sln file and now its not in the depot lmao

#

how do i rebuild it

woven sluice
#

right click on .uproject, regenerate project files

runic trail
#

you were a life saver

#

thanks

kind laurel
#

For the past week or so, I have been doing a massive refactoring. I'm not happy with it, and I'd like to go back to where I was a week ago. I submitted in Perforce just before I started the refactoring, and I haven't submitted since. There are no simple tutorials on backing out, so I want to make sure I don't screw this up. Should I commit the changes and then undo the changelist, or do I "Revert Files" on the pending changelist without submitting? I have added numerous files (probably 25 or so) that are marked for add in the current changelist, if that makes a difference.

woven sluice
#

if you just want to 100% scrap everything you've done since your last submit, running "Revert Files" on your pending changelist will do just that (assuming that all of your work is actually in the changelist - good practice to run a Reconcile Offline Work first if you're unsure)

for added files, when you run Revert it should ask you if you want to delete the local copy of the files that were marked for add - if you press Yes, perforce erases them as it removes them from the changelist. if you press No they stay on your hard disk and are only removed from the changelist, and you can go delete them manually or do whatever you want with them

#

@kind laurel

jolly fog
#

@kind laurel instead of doing a massive reversion of all files, have you considered doing individual uasset reversions? this way you won't lose potentially valuable data in a big wave of one big reversion.

kind laurel
#

@woven sluice and @jolly fog , thank you very much! This is very helpful.

kind laurel
#

The revert went great, and I was able to happily dispose of 1-1/2 weeks' worth of work! Not glad that the work was useless, but at least I learned how not to do it.

woven sluice
#

@lean yoke there are a ton of errors right now and it's missing little bits of info all over the place but I'm working on a write-up of how I created a starter CI Continuous Integration setup with Jenkins/Perforce (Jenkins on Windows, Perforce on Linux). It should be fixed up a bit better in a few more days. If you (or anyone else reading this) has trouble following any parts of it, ping me https://www.ue4community.wiki/index.php?title=Jenkins_Example_-_Windows_Installation_-_Perforce

lean yoke
#

@woven sluice this is a great starting place - I'm going to carve out some time to go over it shortly and if you want I'll let you know how it went

woven sluice
#

Sadly the community wiki is still undergoing setup and their thumbnails system is currently broken, the massive embedded images are a bit of a reading pain 😄

lean yoke
#

no worries

arctic stump
#

whats your guys prefered git gui client?

hushed granite
#

There's a source control button in UE4. It's broken when using with git right ? There's Git SCM included with git bash afaik

#

I think you're gonna use git bash pretty soon

jolly fog
#

i use gitkraken @arctic stump

#

i like it a lot

#

any git client is just a wrapper around the command line though so you can no prob use the command line for your things

kindred arch
#

the git plugin works pretty well in Editor, you need to enable the plugin and make sure you have git and git lfs installed and working. Then first time you press the SCM button you can configure the paths etc. Otherwise many decent GUI's GitKraken is nice but not free Git Fork is very nice too

still obsidian
rotund bobcat
#

I use sourcetree for the easy stuff, command line if it gets messy

jolly fog
#

Atom is fairly good for quick edits / pushes / amends. I git commandline alternatively.

Atom is a free and open-source[7][8] text and source code editor for macOS, Linux, and Microsoft Windows[6] with support for plug-ins written in Node.js, and embedded Git Control, developed by GitHub. Atom is a desktop application built using web technologies.[9] Most of the extending packages have free software licenses and are community-built and maintained.[10] Atom is based on Electron (formerly known as Atom Shell),[11] a framework that enables cross-platform desktop applications using Chromium and Node.js.[12][13] It is written in CoffeeScript and Less.

hearty fossil
#

does Git LFS work at all anymore?

#

cuz I've never been able to get it working

quaint obsidian
#

Yes it works, what's wrong?

hearty fossil
#

well, I've tried this tutorial, and I've done all of the installation for Git LFS but it ever seems to work
https://youtu.be/FXMTHrLWFKQ

Source / Version Control:
This playlist will cover multiple ways to work with source control with UE4.

This Video:
In this video, we cover all of the steps required to get a GitHub repository and the Git desktop app working with the Unreal Engine. As an extra, I also cover s...

▶ Play video
#

cuz isn't Git LFS supposed to compress large files?

hearty fossil
#

?

arctic stump
#

it just stores an extra referene, it makes it faster to interact with larger files, its still gonna have to store them

#

i believe thats roughly how it works @hearty fossil

#

redirector if you will

hearty fossil
#

but do I still need to buy storage for GitHub?

arctic stump
#

¯_(ツ)_/¯

jolly fog
#

github pricing search on google should tell you the price tiers. github.com › pricing - 500 MB free @hearty fossil

woven sluice
#

500 mb omegalul

gray cliff
#

I am a solo dev, working on a silly little 2D game primarily to learn how to use UE the way it was designed to be used and fully understand every part along the way.

Anyway, this is my question for y'all:

What exactly, in terms of assets, should I be checking into my git repo? Specifically, should I check in assets that are what-I-have-come-to-call "external", i.e. things that proper UE .uasset files would either be imported, derived, or extracted from, and most likely created in a separate program... things like .pngs or any other of the various image/bitmap formats that textures are extracted from, or fbx files containing skeletal meshes, rigs/animations, or UV maps, or raw wav files for sounds, cues, etc? I ask about this specifically because I've experienced some difficulties in working with these [non-]assets when dealing with them from within the editor or... honestly I can't remember the exact details but I know I've seen the engine treat them as if they didn't exist or didn't matter or both, so that's why I ask.

Are there any other things that should be included or specifically excluded, or should or should not be named in a certain way? I am currently under the impression that, basically, all you need to push is the entirety of Content/, Config/, Source/, and YourProject.uproject and your .gitignore and (optionally?) YourProject.png (logo), and that should do it. UE seems to be a little fickle when it comes to project organization (especially concerning renamed/moved/symlinked files and/or their character encodings) and just meta stuff from your project in general (I have doubts as to whether I've included everything I need to in order to pull my game's repo down onto some random machine with a fresh UE install and actually have UE think it is a valid project and open it...), and so if there are any further bits of wisdom anyone could throw me in that regard, I'd greatly appreciate it.

Thanks ahead of time 😉

woven sluice
#

@gray cliff two key concepts:
• version control
• backup

In some cases you can kill two birds with one stone: Put everything into your version control system, and then occasionally create a backup of your server. This is relatively easy if you get experienced with and use a VCS designed to store binaries like perforce where you can just dump everything into it with appropriate settings and back up the server once in a while and you're done [edit: but it will always use more storage space than just backing up latest files]. When you're using GIT however, you will eventually start to worry about things like always-increasing storage requirements and VCS performance as your project grows, since you can't selectively remove old history. You may wish to make decisions about what you really need under version control, and what you can accept simple backups of. The simple answer is that anything which you might want to "roll back" to a previous version obviously needs to go in version control. At the very least this would be anything that runs any sort of code, both C++ and blueprint code.

Many people will have a ContentSource\ folder which contains raw textures, models, and sounds. If you have to use GIT, it might be reasonable to say that losing version history for these files wouldn't kill you, so they could stay out of version control and just get automated backups.

gray cliff
#

I don't expect those types of files will change very often for me. As a solo dev, once I make a shitty artistic asset, it basically stays put until I can't stand looking at it anymore hehe

#

I was more just making sure there wasn't some crucial must-do or must-not-do that another copy of UE would choke on when trying to open my project from a repo pull

#

I've had a few hiccups when it comes to mal-formed .uasset files I've tried to migrate unsuccessfully, etc. Usually cuz of "missing files", i.e. bad redirectors

woven sluice
#

for a new/empty project those four items you identified (plus an ignore file and any other additional things like logos, plugins) are indeed all that need to be shared

gray cliff
#

or duplicate files (also stale redirectors that the editor refused to delete even though I did the fix redirectors for every directory from the project root on up)

woven sluice
#

I think I've seen some people get burned in here by using special characters in filenames like #. I have never had to use symlinks in any way, can't comment there

#

a UE project is fairly simple otherwise to share or put into VCS

gray cliff
#

@woven sluice I'm on a Mac and I created the following symlinks to eliminate spaces in UE-relevant filepaths (good advice in general to avoid errors from poorly written software that doesn't escape paths properly):

cd /Users/Shared && mv Epic\ Games EpicGames && ln -s EpicGames Epic\ Games
cd ~/Documents && mv Unreal\ Projects UnrealProjects && ln -s UnrealProjects Unreal\ Projects

When I create projects via the Epic Games Launcher (or just from the editor > File > New Project...), I even tell it to create them in the space-removed path (which is now the hard link due to the mv commands) so that when I execute the "Generate IDE project files" command or whatever it's called, it produces build files that reference the space-removed paths as well.

Other than that everything is as normal.

I just wanted to check and see if there was anything I should know that I might not already about what a "valid" UE project consisted of, exactly. And especially about the ContentSource/ stuff (I like that name better than "ExternalAssets/", too).

hidden ibex
#

Hey guys, how do I share plugins across source control? I just bought a plugin that my team also needs for use in the same project.

dusk dove
#

just check in the plugins folder

#

(with the same ignore rules as the main project inside each plugin, so no binaries/intermediate)

south gust
#

any one help me

#

UATHelper: Packaging (Windows (64-bit)): ERROR: Could not find NetFxSDK install dir; this will prevent SwarmInterface from installing. Install a version of .NET Framework SDK at 4.6.0 or higher.

dusk dove
#

have you tried doing what it says

south gust
#

installing

frail falcon
#

is there any reason why I could not use onedrive as our SVN storage location?

arctic stump
#

is it recommended to leave LFS off when using git with unreal?

#

ran into a few issues with it already, just seems kinda dodgy in overall usage

rotund bobcat
#

no

#

you should definitely use lfs

quaint obsidian
#

if something seems dodgy, you're probably doing something wrong

solar kindle
#

This isn’t really related to Unreal, but I need help with something git-related that I don’t know how to fix

#

All the files in my repository have /blob/master/ in front of their url on github, and I want to get rid of that. Does anyone know how I’d go about doing that?

neat grotto
#

@solar kindle That's the way GitHub URLs work, and I don't know of any way to change it. blob is a link to a file, tree is a link to a directory.

#

Why is it a problem for you?

solar kindle
#

@neat grotto nevermind, I misunderstood something and it's fixed now. Thank you for responding though!

acoustic void
#

How can we run our own perforce server without buying or renting other?

woven sluice
#

in a nutshell: first you install it on a machine. and then you run it.

#

most people will rent a VPS and run it on that. If you need cheap cheap, run it on a machine you own just make sure you set up backups offsite however you can of course

fringe abyss
#

was wondering how to best manage a global team, right now we are using svn with 1 server , but it seems like either we put the server in the country with 1 team, and the other team in another country loses speed, or we do the opposite and its vice versa...

#

whats a good solution for having global source control?

woven sluice
#

my perforce server is on the other side of the world... sure, it takes an additional 0.2s to launch any operation but i haven't considered that as slowing me down at all

fringe abyss
#

i might have just picked a traffic heavy region then(india)... im going to centralize it and see if that improves it

acoustic void
#

most people will rent a VPS and run it on that. If you need cheap cheap, run it on a machine you own just make sure you set up backups offsite however you can of course
@woven sluice one doubt, using this method
Other team members are able to access and updated anytime or there is some restriction?

woven sluice
#

like administrate the perforce server? anyone who has login info and knows what they're doing.

#

not sure I understand what you are trying to ask

acoustic void
#

Consider if I made some changes in project and if other members are trying to update their as well, do the administration server has to be live the whole time?

woven sluice
#

yes... obvious answer applies, if the server isn't running then nobody can access it

acoustic void
#

Thanks @woven sluice for clearing all my doubts!

rocky snow
#

Hey! Anyone here has already setup external diff in Plastic SCM in order to diff blueprints? thinkfenfrf
[Solved It ablobsmile ]

smoky trench
simple lodge
#

was wondering how to best manage a global team, right now we are using svn with 1 server , but it seems like either we put the server in the country with 1 team, and the other team in another country loses speed, or we do the opposite and its vice versa...
@fringe abyss
We did it before with master/slave proxy servers

#

But that requires a significant amount of expereience with source control

cloud wren
#

hello, I have been trying to delete a branch on my github desktop, but i keep getting this error, how do i fix this?

#

i looked for that file inside my explorer and i don't see it at all, it doesn't exist on my desktop

simple lodge
#

Did you check if the file is versioned in git, that looks like an LFS pointer issue

cloud wren
#

i switched off git and started using plastic scm instead actually 😂

#

ill probably just kill the repository and remake it

vital wraith
#

@simple lodge one option is to use something like cloudflare dns around your source control. It has been great for me in these types of situations

#

They have some extremely good routes for global routing

simple lodge
#

Depends on team size too

#

If you have really big teams you need local proxy cache

vital wraith
#

local proxy is of no use unless all of the team members are on the same WAN connection

simple lodge
#

local can be geographically local

#

rather than local network

vital wraith
#

right, it depends on your server of course as well

simple lodge
#

haha, we had 2x 24 core servers and it wasnt enough

#

maybe 22 core actually

#

cant remember

#

I think was 24, with 2x 12 core xeons in each

vital wraith
#

yeah, source control itself can be demanding if it's utilized by a lot of team members, then caching is a good option, but difficult to get right

#

but on the other hand, once you get it right it won't be a headache

simple lodge
#

once i set up all the replicatin and stuff it was flawless

#

probably is still working fine to this day

jolly fog
#

after pulling from a git branch to my repo, was having some compile problems in engine tht I shouldnt have. So I tried the deleting of temporary folders (saved, intermediate, binaries) and rebuilding the project. The compile failed, so I went into the vis studio and tried to build there. A ton of errors of objects having undeclared identifiers. But the project is the same as the one on my team members, or at least git says they are identical, and he doesnt have any of these problems. Just my end that cant rebuild

quaint obsidian
#

git config --global user.email

frail kestrel
#

does anyone know why my project cpp/h files dont show the changes in GitHub Desktop? All it says is, Binary File has changed

astral steeple
#

Hiya. I seem to be having an issue with UE4 and GitHub Desktop

#

I tried to revert to a previous commit after making a mistake that screwed up my project.

#

However when I tried I got an error saying "To finish reverting, please merge and commit the changes"

#

And it added a couple boxes to the changes tab

#

If I try to commit those changes I get another error. "Exit Code 1"

#

So I'm stuck with a dead project.

upper merlin
#

Does anyone know of a best practices guide for handling Perforce+binaries in source control to ensure artists don't need to have VS installed and compile / recompile their own builds.

I'm not compiling the engine from source (just using the one in the Epic Store) but I use a plug-in that recompile my project editor binaries (and the plug-in binaries), and these need to be distributed, along with the content the plug-in adds to the project.

sour vine
#

Every time I open our project, his info is there instead of mine

#

Is there a file that is being overwritten?

upper merlin
#

@sour vine could it be that the EditorSettings or PerProjectUserSettings are being submitted to source control (from the Saved / Config folder)?

sour vine
#

very likely. Tried looking in there but no idea which file is responsible for the info in the screenshot

upper merlin
#

It's SourceControlSettings.ini

#

Saved and Intermediate folders should not be in source control.

The guide here has a screenshot of which folders to submit and which ones you don't need to.

#

assuming Perforce is your source control. sorry.

sour vine
#

it is

upper merlin
#

oh, actually that's on the screenshot 🙂

sour vine
#

yep

#

ok similar question:

#

every time i open the project, these are all reset to thomas's values

#

is this also sourceControlSettings.ini?

upper merlin
#

I'd any file in Saved/Config is in source control, the last person to check theirs in will overwrite everyone's settings

#

Like, editorwide

#

Best thing to do is to remove it from source control, you could delete the files too, they'll be rebuilt with defaults

sour vine
#

ook. so I should delete them entirely from the server?

upper merlin
#

*if

#

Anything in Saved. Usually. It you want some settings to apply to everyone in the team, you can change the defaults, and submit those

sour vine
#

so i should delete them from the server AND from my workspace, and that will cause unreal to remake the files locally/in my workspace?

upper merlin
#

that's right. when other people in the team sync to latest, it will delete their local settings too

#

or, thomas's local settings in this case (as everyone is probably just using his settings).

sour vine
#

so he would just have to redo his settings once and everything will be as it should. What about folder colors? Do you know which file is responsible for that?

upper merlin
#

so, I'd let Thomas know you're deleting his settings from source control

#

you can always save a backup of the settings before deleting from the workspace.

#

then you just copy them back to the folder after removing them from the depot

#

so he would just have to redo his settings once and everything will be as it should. What about folder colors? Do you know which file is responsible for that?
@sour vine not from the top of my head.

sour vine
#

ok I will have to do more digging. This is good to know if II were the one responsible for file management.

#

Saved/Config/Windows/EditorPerProjectUserSettings.ini.

woven sluice
#

@upper merlin basically someone/something has to compile the binaries and upload them, artists have to download them. have you ever heard of/considered trying to create a continuous integration setup?

upper merlin
#

I have, but it seems like overkill at this stage with 2, 3 people on the project touching the editor. I will for sure move onto a CI solution later, hopefully by then with a least one dedicated DevOps person on the team.

#

One thing that bothers me is the way the editor works with the modules file and new versions of the DLLs with random numbers added to them. I can see the binaries folder in the depo becoming a mess of files.

#

Or should I just clean up the files and rebuild a clean folder every I need to push a new version out since P4 will handle the versions?

#

I will read Yo your doc though because my assumptions may be wrong and it your solution may fit my needs.

#

@woven sluice Thank you!

woven sluice
#

What random numbers? There are no random numbers on dlls

#

Are you hot reloading?

#

Maybe live coding makes them too I guess I can't remember but those files are garbage as far as sharing

#

It is a fair bit of work to set up CI - couple days depending on how far you want to go. I also made a discord bot that posts updates but it's not shared anywhere yet

#

Might be one days work if my guide becomes useful enough

#

I had to stumble and trial and error a lot

upper merlin
#

@woven sluice every time I need to rebuild code the ".modules" file points to a new dll, that has a new version number on it (eg UE4Editor-ProjectName-xxxx.dll) the first compiled dll doesn't have a number, any subsequent one will have a number, which is not sequential as far as I can tell) and it just bloats up the binaries folder with new versions every time I recompile.

woven sluice
#

@upper merlin hot reloading is REALLY bad - don't do it 😄

#

To answer your direct question yeah I would just do a clean and build before submitting for other team members

simple lodge
#

I have a working CI/CD system that builds the game (and other bits) and deploys it - it will be possible to get access to it soon-ish

#

If you commit the module source, then the launcher binary should give you a messagebox to build the plugin/module on launch

woven sluice
#

Only if you delete the previous dlls though which is a nuisance to ask artists to do every code update

simple lodge
#

it can be automated 🙂

rotund bobcat
#

we submit the binaries for the game in a separate folder and then have a git hook on the artists' pc to automatically copy it over to the right location

upper merlin
#

@upper merlin hot reloading is REALLY bad - don't do it 😄
@woven sluice The content updates imported with the plug-in I'm using generates code that gets compiled using Hot Reload. At least that's the default behavior. I'm going to investigate if I can change that.

river tinsel
#

RIP

#

just when I started to use it

river tinsel
#

and they removed Team Licensing

#

without it

#

you can just as well buy perforce license

#

which price is close to Enterprise Plastic license

#

they screwed it

woven sluice
#

One thing I've always been confused about with plastic, all their pricing models include cloud storage. Do they actually not have an option to only run your own server?

I think I've read that perforce is $40/month/user ... You can realistically actually use it for around 15 people free for one project and then the price would suddenly jump from $0 to like $10,000 per year 😂

robust jacinth
#

Anyone ever integrated Artifactory into UGS?

woven sluice
#

I've never been happier than I am with my team's setup anyway (perforce + jenkins). When I designed it, I wanted there to be no extra steps for anyone and I achieved it... Coders don't have to submit binaries, artists don't have to set up any local hooks or anything, everyone just works.

robust jacinth
#

Setup UGS and artists won't have to manually get binaries either. 😉

woven sluice
#

Don't need UGS. Can UGS also handle my deployments to steam in one click? alex

robust jacinth
#

No, but a hammer also makes for a poor eating utensil - kind of besides the point.

woven sluice
#

Can UGS work with launcher engines?

robust jacinth
#

Yes, though it still expects the engine to be side-by-side with the project folder.

woven sluice
#

Does it require coders to submit binaries manually?

robust jacinth
#

No, because UGS is not a replacement for Perforce or Jenkins.

woven sluice
#

I should (honestly) learn more about it but I don't know what it would add for me

robust jacinth
#

UGS has a handful of super helpful features, especially for non-engineers. The most helpful part is that, if configured, it can download a zip file of all the necessary binaries from your Perforce depot and unzip them to the correct location, each time you sync a changelist.

#

It will also stop you from syncing a changelist for which binaries do not yet exist, so you don't meddle with assets using the wrong binaries.

woven sluice
#

That last statement could be mildly nice

robust jacinth
#

It can also function as a more usable UI for non-engineers to launch the editor with various startup arguments.

#

And if you setup the "metadata server", you can have your CIS tag changelists as good/bad and UGS can surface that information at a glance.

#

Users can also tag builds as good or bad locally (and have that appear for everyone universally).

woven sluice
#

You said it doesn't replace perforce - but you can use it solely to sync to perforce changes instead of say P4V I assume?

#

Or rather you must have to use it for those features to operate

robust jacinth
#

Yes. You need Perforce installed as well.

#

It works via Perforce.

woven sluice
#

Well sounds like it has a couple small QoL features but nothing earth shattering. The workflow we've adopted (without UGS) does bestow one simple requirement: coders should only commit compiling code to mainline. If they do that, everything's easy for everyone so far. Thanks for the info anyway, maybe if we grow I'll want to give it a second look

robust jacinth
#

UGS doesn't change that, for what it's worth.

#

The minimum you would want it for is to automate the process by which artists get binaries.

woven sluice
#

shrug with my setup, coders submit cpp files, 5 minutes later artists open p4v and press get latest and get binaries.

robust jacinth
#

Fair enough. You remember to make Perforce only keep so many revisions of those binaries?

woven sluice
#

Yep.

#

And I have a discord bot that tells everyone when it starts compiling and if it succeeded or failed for extra nerd points 😄

robust jacinth
#

My client has something like that, but for Slack.

woven sluice
robust jacinth
#

Neat!

upper merlin
#

I went down a rabbit hole of trying to setup UGS (but if felt like overkill for what I needed from the build distribution, at this point in my project)
but @robust jacinth , you mentioned that you can set it up with launcher downloaded engines, but you still need the project structure to be setup up in the specific way (I saw that info on Andrew Haining's Gamasutra post).

But doesn't that mean that I still need to check in the engine into perforce? I want to avoid doing that if possible as folks can just download the engine from the launcher. I'd rather stick with submitting project specific files and binaries.

I would be grateful for an example of it (a blog post, a use case) of UGS being used along the launcher builds, if you know of one.

robust jacinth
#

I don't know of one, I don't even recommend using "launcher" builds of the engine.

#

You may need to tweak things to make it work without submitting the engine to Perforce.

#

But mostly it cares about being side-by-side.

upper merlin
#

as in //UE4/Games/ProjectName

#

eventually we'll migrate into building the engine from source, (I did a dry run here, and had fun times with CoreRedirects) to manage to get it working.

robust jacinth
#

Ostensibly, you don't need to actually build it from source even if you have it in Perforce.

#

You could put the "launcher" build into Perforce.

#

Can't guarantee you that everything will just work without source, as far as the automation for UGS.

upper merlin
#

I see. thank you for the insight @robust jacinth . Both @woven sluice and yourself have been massively helpful.

robust jacinth
#

NP

#

As a general thing, you should treat the engine as though it could disappear overnight. If Epic was wiped out by a meteor, you should still be able to make your game. That means having your own copy of the engine and its source.

upper merlin
#

that's good advice

coarse heart
#

unity just bought plastic scm

#

I wonder what that means for unreal users

river tinsel
#

well i wrote about earlier

#

tl;dr

#

shit did go down instatly downhil

potent field
#

Hey folks. I wanted to ask about sharing my project via github. I bascially want to set up a github project so folks on my discord server can poke the UE4 and look what's done in the project. It's nothing big just some experiments
I want this to be legit. What would you suggest?

dusk dove
#

rip plastic

umbral violet
#

Huh? git LFS has a 1 gb limit and requires you to purchase upgrades? sad

neat grotto
#

On GitHub, yes.

#

1 GB of storage and bandwidth for free, then you buy packs of 50 GB storage/bandwidth for $5 each.

#

Does anyone know how to verify whether Perforce triggers are working? I thought it showed up in the P4V log but I don't see it.

woven sluice
#

Hmm well they'll be server side so I don't think they would show up anywhere in p4v when they run properly

#

I did get errors in p4v when I had them written wrong

simple lodge
#

Does anyone know how to verify whether Perforce triggers are working? I thought it showed up in the P4V log but I don't see it.
@neat grotto I always do it by firing off an API call with my trigger - makes debugging 1000x easier - I think you have to check server log but its been a while since I perforce'd

#

Hey folks. I wanted to ask about sharing my project via github. I bascially want to set up a github project so folks on my discord server can poke the UE4 and look what's done in the project. It's nothing big just some experiments
I want this to be legit. What would you suggest?
@potent field You want them to get binary or source access?

potent field
#

@simple lodge source for the assets, but engine source is not needed, this about scripts and such

simple lodge
#

Ok so uproject source

#

not the compiled game only for distribution

#

So yes github or other git hosting would work -> are you married to github for any particular reason>

potent field
#

Yeah, i'm a coding lemon and I only just figured out how to use github :)
What's the legality of including starter assets like the topdown template and such? I don't want to include anything off the marketplace, just the basic stuff that you start with.

rotund bobcat
#

anything that comes with unreal engine itself is open source as long as there is credit for the original source and is not redistributed closed source

#

afaik

simple lodge
#

is there any particular reason they need the project source?

#

@potent field

potent field
#

So we can poke UE4 together. I don't know anything about version control, or setting up project for multiple users. It's pretty much all about "hey look at the script thing I made"

simple lodge
#
I want this to be legit. What would you suggest?```
#

This sounds like a private project is actually fine

#

Assuming you are working as a "team" on a game?

#

I think github allows free private repos these days

#

May I shoot you a message?

pale glade
#

Hey!

Is anyone using jenkins with Plastic SCM to automate builds?

woven sluice
#

@pale glade I use perforce but... you gotta put some effort into it fam. What error is jenkins throwing. Why do you think it's throwing an error for intermediate files (I saw #cpp ), do you not have it setup properly to exclude the intermediate folder somehow (I also don't know anything about plastic, sorry)

pale glade
#

@woven sluice Put in some effort? Been troubleshooting all day.

woven sluice
pale glade
#

That’s true! 😊

#

The problem is just that it points to the folder we've excluded as "Could not find a part of the path".

#

When trying to get latest from jenkins

#

and can't find anything about it

woven sluice
#

yeah I have no idea about any plastic-specific behaviour but somehow the way you're running jenkins has to be different from the way you're running your own client

#

time to recommend switching to a non-Unity-owned VCS HaroldHaha

simple lodge
#

I was planning on supporting plastic with my UE4 build/ci tool

#

not sure if I will or not now

#

guess it depends on the demand

woven sluice
#

you made a CI tool? 🤔

simple lodge
#

A bunch of logic to automate hooking up CI to a repo with a few clicks

#

basically, add a ci file to repo, push to repo - job done

woven sluice
#

sounds too good to be true but I look forward to seeing what you came up with

simple lodge
#

It works well 🙂

#

Got a few clients using it already

#

Just a few things I have to tie up and it will be good to go publicly

#

And yes it builds lighting and stuff as well

jolly fog
#

Hey everyone, basic bitch question here, is using Source control a good way to share the project files between remote team members.

rotund bobcat
#

yes

#

that's one of the biggest uses of it

#

that and the actual file history are the reason you use vsc

jolly fog
#

Sweet, time to learn how Git works then. Thanks a lot man.

#

I personally have never used anything of the sort, so would git be easy enough, or is there one which would be easier to use for beginners.

rotund bobcat
#

couldn't really tell you

#

only used git myself

#

Perforce is pretty good, but costs a bunch of money if you have a larger team, and dno how easy it is to set up

#

but git is pretty straightforward

#

be sure to also use git LFS though

jolly fog
#

any tools I need to enhance git functionality

rotund bobcat
#

so definitely git LFS for the unreal files

#

and if you're not really a command line guy, use github desktop or sourcetree, great GUIs for git interaction

woven sluice
#

Perforce is a little harder to learn and set up, although you'll never need to learn another VCS if you learn it (unless unity buys it out from us too MonkaFukt ). GIT is fine until your project grows very large, but eventually it starts to suck.

rotund bobcat
#

define very large

woven sluice
#

I don't have a number. It's been a long time since I used GIT. but it's still a fact.

rotund bobcat
#

my project folder is like 150GB+ and git still seems fine

#

with LFS of course

jolly fog
#

Hmm, so I got the github desktop

#

and setup a github repo

#

Does one need to have both git and github desktop installed, or do they both serve the same functions

rotund bobcat
#

git is the source control

#

github desktop is just user interface to work with it

#

you could completely use git from the command line if you wanted

woven sluice
#

nothing wrong with learning git anyway, it's good vcs for what it is. Until it features limited binary file history and is guaranteed to never have performance issues dependent on repo size though, it isn't a reliable competitor against perforce ¯\_(ツ)_/¯

#

Also don't you have to buy data packs if you use github (only saying as an honest warning for Ashen)

rotund bobcat
#

idk

#

I use bitbucket

#

I think the repo itself is free with like unlimited bandwidth and then you pay 5 euros/month for 50GB of lfs or something

#

I don't know the details, I don't pay it 😄

neat grotto
#

GitHub's LFS data packs cost $5/month per 50 GB of storage and bandwidth.

#

You get 1 GB of storage and bandwidth for free per account, not per repo.

simple lodge
#

I have git LFS (non UE4 repos) over 1TB

#

so its possible

#

@woven sluice if your setup is good then its fine past 1.5TB, but I dont deny perforce is a little better for that use case

peak crane
#

Hey guys!

#

I'm not sure how to use GitHub with Unreal Engine projects?

#

Like there's obviously a good .gitignore that collabs use to prevent going over the Repo limit

woven sluice
#

that's great that GIT LFS allows us to push a square peg that far down a round hole 😄

#

i remember several years ago in older GIT implementations and without LFS, you were pretty much dead once you hit like 15 GB with a few thousand files

simple lodge
#

Oh sure

#

we killed a git repo within a gamejam weekend

#

myself and other programmer made 50+ commits each with levels, BPs and stuff

quaint obsidian
neat grotto
#

I think that GitHub info is out of date. Private repos are free for everyone. Upgrading your org to GitHub Team costs $4/user/month.

quaint obsidian
#

it's not out of date, i was just explaining the most economical option for each.

#

github pro is $4/month flat and gives you features in private repos available usually available to public repos only

#

Required pull request reviewers
Multiple pull request reviewers
Auto-linked references
GitHub Pages
Wikis
Protected branches
Code owners
Repository insights graphs: Pulse, contributors, traffic, commits, code frequency, network, and forks

#

github org is a lot more expensive, but you can use it for free if you need the organizational features more than the repo features

neat grotto
#

@quaint obsidian Ah, OK. Misunderstanding then. You didn’t mention Pro in the original message.

quaint obsidian
#

I guess I should have written personal private repos through Pro

neat grotto
#

Yeah, since personal private repos with basic features are free now (which is fantastic).

jolly fog
#

okay so we setup git, and lfs

#

Now the thing is pushing the project to origin seems to take forever

#

any ideas how long it should typically take

jolly fog
#

Now it has gone to upload 596/356

simple lodge
#

git lfs out of the box isnt hyper optimised for UE4 projects -> when I setup for clients i usually do a bunch of tweaks to all sorts of params. But to answer your question, its primarily bound by cpu power for doing compression or upload speed

jolly fog
#

I see

still obsidian
#

git lfs out of the box isnt hyper optimised for UE4 projects -> when I setup for clients i usually do a bunch of tweaks to all sorts of params.
@simple lodge What sorts of tweaks?

simple lodge
#

filescan sizes and concurrent transfers and stuff

barren lake
#

Is it still best to use Git from outside of the Editor? Or is the plugin safe to use?

lyric spruce
#

Anyone here use redmine and perforce together?

quaint obsidian
#

@barren lake use UE4GitPlugin in GitHub

barren lake
#

How safe actually is that to use? Experienced any issues?

jolly fog
#

What is a good option for source control, where i am working as a single developer, but potentially I would be working with maximum 4 people? 3 users is fine as a current compromise

simple lodge
#

@quaint obsidian That plugin crashes on pulls a fair amount

#

@lyric spruce I think i set one up for someone, long time ago tho

#

GitLFS works pretty well, plastic I heard was decent (but with the whole unity thing you may want to avoid) and ofc always 5/20 or 20/20 perforce

jolly fog
#

Was my question bad enough I got muted from here?

dusk dove
#

it's not the plugin that crashes on pulls

#

in-editor sync just doesn't work - the official perforce one crashes my editor every time I use it

quaint obsidian
#

i think there were a few fixes to pulling on the new git plugin

kind laurel
#

@jolly fog I've been using Perforce, and it has worked well. The documentation isn't great, but lots of good people here to help. It is free for individuals or a few users. Much better than Git because of the file size limits that Git has.

jolly fog
#

@kind laurel lucky I justy installed it

kind laurel
#

👍

lyric spruce
#

@simple lodge i would love to know how you did that

#

my partner who im working with on our game would really appreciate having redmine integration with perforce so we can link tasks together

#

so for example, when a revision is made in p4, it might close an issue in redmine

simple lodge
#

I just wrote a bunch of code 🤷‍♂️

lyric spruce
#

i know redmine is made in rails

#

so i was thinking maybe i could just write ruby code

#

to do it myself

simple lodge
#

Think i did some post commit hooks and then some API requests

lyric spruce
#

from a p4 trigger

#

lol

#

i see

simple lodge
#

It was like 2-3 years ago

lyric spruce
#

long time ago

simple lodge
#

Exactly

lyric spruce
#

;;(

simple lodge
#

ATM I am bashing my head into the brick wall that is docker bugs

#

Or specifically windows bugs that docker dont include a workaround for in their code

lyric spruce
#

I wish I knew how to use Docker

woven sluice
#

@lyric spruce you might want to learn about perforce "jobs" usually those are used to hook up to task management. Never done it myself.

lyric spruce
#

docker is by far the most confusing thing ive ever seen

#

@woven sluice whatrs the diff between jobs and triggers

simple lodge
#

its fine.. mostly

woven sluice
#

Jobs are like user defined/described goals. I've never really used them yet either just know they exist. You connect some change lists to a job and you can probably do something like run code when a job is submitted I'd guess

lyric spruce
#

ah

#

it would be cool if we could setup our jobs

#

to our redmine site

#

and integrate them together

#

like when a job is created in redmine, create a p4 job, and vice versa

woven sluice
#

Also the first Google result for perforce redmine jobs says "redmine supports perforce well except for jobs" so beware I could also be sending you down a wild goose chase omegalul

#

P4DTG looks like the tool to research

lyric spruce
#

yeah

#

ive seen it

#

it only works for redmine with MySQL

#

and we are using postgresql

#

:/

#

its rly stupid lol

#

all it does is connect to the database backend

#

and make queries i think

woven sluice
#

doh

simple lodge
#

If its Open source then you can just mod it pretty easilt

#

ughhh this looks like another Windows Kernel bug

lyric spruce
#

yeah

#

i was probably going to just do that i think in the end

#

just make a ruby script

#

and use active record

#

to create the records in the db that i need

alpine beacon
#

Is anyone outside of Unreal using Unreal Game Sync ?

clever mist
#

Is anyone using git-hub with unreal? I'm comfortable with git and git-hub, but I don't know how to use the integrated git hub with unreal.

#

I've followed along with some tutorials for this, but I just haven't been able to make it click.

rotund bobcat
#

I use git with bitbucket with unreal

#

not from within the editor though

south ingot
#

Is LFS included in Git for Windows by default now?

clever mist
#

@south ingot I think you have to download it and git (in two pieces, and run the LFS installer from the git command line.

#

it seems like it's just a quick initialization setting but I had to take two steps

#

@south ingot do you have any links to instructions for using github with unreal that seem to work? (I've followed a few sets of instructions and it seemed like they were missing some inportant steps.)

warm oyster
#

Silly question: I've forgotten what I named my new Perforce server now that it's time to connect a remote user. How do I find that name?

simple lodge
#

Is LFS included in Git for Windows by default now?
@south ingot no

#

Silly question: I've forgotten what I named my new Perforce server now that it's time to connect a remote user. How do I find that name?
@warm oyster all you need is the IP

warm oyster
#

Ahhh, of the host machine? @simple lodge

simple lodge
#

aye

warm oyster
#

Thanks! And it would follow that if the remote box isn't on the same network, then a VPN connection would do fine as a bridge for such?

keen cipher
#

hey, so, which do you recommend between GCP and AWS for hosting a perforce repo?

simple lodge
#

None of the above @keen cipher

#

Thanks! And it would follow that if the remote box isn't on the same network, then a VPN connection would do fine as a bridge for such?
@warm oyster Sure, you can do hop box, open port or all sorts of other things

kind olive
#

did unity buy Plastic?

woven sluice
#

yeah

kind olive
#

Ok, yeah I see they did.

#

I was about to setup a server for a new project and saw the Unity logo on their webpage. I was really hoping to avoid perforce. not sure how I feel about setting up with Plastic in light of that though.

#

What would anyone suggest for using with a server located on a local network? Looking for simplicity.

limpid mason
#

@kind olive whats wrong with just using Perforce? Price?

tranquil walrus
#

is there any standard practice for upgrading the version of unreal on a project in source control? Should I create a branch or anything like that? I've already made a duplicate of the project and upgraded it to make sure going to the next version doesn't cause any issues, but I like to learn about standard practices for this kind of thing

limpid mason
#

Branch, do the upgrade, test, commit to branch so CI and build infrastructure can also confirm, test the artifacts out of the CI, once all confirmed, merge branch

tranquil walrus
#

thanks let me see if I can figure that all out

tranquil walrus
#

hmm... I may have done something wrong here. I created a branch and did the upgrade. verified everything was fine and pushed that. Did a little clean up and I want to merge that back into the master, but I don't seem to have that option

#

I'm using Fork.

#

currently looks like this, how can I get the upgrade-test back into the master

limpid mason
#

@tranquil walrus Typically I would push the second branch and do a merge or pull request from one branch into the other.

tranquil walrus
#

Yeah, i managed to figure it out, I needed to check out master then merge upgrade into master

#

it ended up not creating any kind of branch graph though, I think because there was no separate work done on master before merging.

limpid mason
#

It would depend how you merged it. If you did a fast-forward merge, my preference, there wouldn't be a merge commit and so no branch history

tranquil walrus
#

yes, that's what I did.

simple lodge
#

@kind olive if you are within p4s free usage tier it is pretty ok (the UI does really suck tho), otherwise you can make git work or I have heard some decent things about plastic

kind olive
#

I've used it extensively. I just don't like it.

simple lodge
#

Thats fair, let me grab a slide from one of my talks

kind olive
#

I'll probably end up using it though.

simple lodge
#

The tldr: you can make git perform nearly as well as perforce

kind olive
#

Every few months I go looking for an alternative and Plastic has been about the only thing that fit the bill.

simple lodge
#

IF you know how to tune git properly

limpid mason
#

@simple lodge at what scale?

#

Our P4 repo is 4 TB

simple lodge
#

Biggest LFS repo ive done is ~1.65TB atm

kind olive
#

Mine tend to be around 500GB at most, but can run higher.

#

Never more than a few users though.

simple lodge
#

@limpid mason Sure, p4 does scale well

#

because they use i/o stream with no delta compression

#

biggest problem with p4 is their pricing is not very friendly for indies

limpid mason
#

Yeah, we have 70 P4 licenses and our P4 depot grows 100+ GB a week, at least

simple lodge
#

I havent checked, but last time I looked it was ~$1k + $379yr renewal

kind olive
#

It's very pricey at any reasonable amount of storage

simple lodge
#

Im talking about self hosted variant

#

cloud one is dumb

#

@limpid mason biggest (single) p4 repo I worked on was >1PB

kind olive
#

AWS is really the only option. I have a tornado proof shelter that I keep a server in and fiber optic is coming in the next few months.

simple lodge
#

not rlly

#

you use a dedi and do proper backups/syncs and you be fine

#

It just requires some proper architecting

#

Not that I have had to do it for a while, but my p4 repo was a dedi server that got backed upto my NAS and my office NAS every 6? hrs

#

These days I just use git because I am working on much smaller stuff

kind olive
#

keep a server in it with all my files.

simple lodge
#

and with git its even harder to lose data because unless yo are doing shallow clones every machine holds a copy of the whole repo

#

That works, I just have a room in the house thats fireproofed

kind olive
#

How hard is it to use git compared to p4?

simple lodge
#

and backups to backblaze etc

#

With LFS its pretty easy to be "up and running"

kind olive
#

I thought it was problematic because of the file types and had a hard time tracking changes with things like bp?

simple lodge
#

but peak performance requires some pretty extensive tuning

#

Sec lemme grab a thing

#

using git

#

Moving away from git is pretty easy (delete the .git directory) and push to perforce [just be aware this nukes history so keep a backup somewhere of the whole repo]

limpid mason
#

Not only is Git a cheaper option, and easier to backup, but most of us understand how to use Git better and like the Git workflows better than P4 and Streams

simple lodge
#

+1

#

I am pretty comfortable with both, but unless you are really going big, git is almost just a better choice now

limpid mason
#

We keep most of our code that isn't part of the actual game in Git as well

simple lodge
#

Also, I am launching a CI + some other stuff tool that uses git soon 🙂

kind olive
#

I dislike P4 tremendously. Too many things are more complicated than they should be. things like restoring a depot, backing it up, restoring a changelist , checkpoints are all needlessly complicated.

simple lodge
#

Have you considered that maybe you just arent a fan of dev/ops work

#

(which is ok too)

limpid mason
#

the checkpoints and journal are a pretty standard way of doing things

simple lodge
#

Best tip I can give you with p4: the UI is garbage, learn the command line and its somewhat more sane

kind olive
#

I work by myself so anything that takes time away from actually work on a project I resent. P4 has better documentation now but it use to have nearly none.

#

If I could use Git though I'd look at that. I've used it before on smaller things and liked it.

#

I just thought it wasn't an actual option.

simple lodge
#

You can make git work pretty well (it does have some small downsides, like push/pulls take a little longer than perforce, but with some tweaks you can get pretty darn close to a bone stock perforce)

kind olive
#

any suggestions on where to start looking for info?

simple lodge
#

git + lfs = profit

#

Then add uasset, umap and whatever other binary files in

kind olive
#

Thanks. Found a write up on it.

simple lodge
#

What git backend did they use?

#

protip, unles you need it dont use the in-engine git plugin, due to the way UE works it has to iterate over each file so with mega huge commits its slow (its fine for smaller commits tho)

kind olive
#

I was actually just about to ask about that, since I see there's other plugins for it out there.

simple lodge
#

Just grab sourcetree or tortoise and profit

limpid mason
#

Fork is a great Git GUI as well

simple lodge
#

I have a custom UE plugin thats really good (but it a> is something that was done for a client I cant release, and B> completely ignores a lot of epics coding practices and requirements)

#

its basically just a wrapper around a cd ./path/to/project and git add . && git commit -m msg"

#

@limpid mason can I pick your brain a mo?

limpid mason
#

whats up?

simple lodge
#

Do you run a lot of tests on your unreal projects?

kind olive
#

Thanks. I'm going to give Git with LFS a go. Looked over two write ups on it and it seems straight forward.

limpid mason
#

@simple lodge normally yes. Currently no. I just recently joined this company and they don't have a good build pipeline. I am here to fix that.

simple lodge
#

Ahh 🙂

#

Might have to poke you a bit later (I didnt ever have to do much test framework usage), but I want to include some functionality in my CI tool

limpid mason
#

A clean build of our project right now is 6+ hours... with DDC... fucking RIP.

simple lodge
#

yikes

#

For how many platforms on what hardware

limpid mason
#

win64 client, win64 server, linux server

#

AMD Threadripper 3970x, in a VM though with 16 cores and 60GB of memory per VM

simple lodge
#

What storage backend?

limpid mason
#

We build to local NVMe

#

Our DDC is on an Intel Optane drive

simple lodge
#

youll probably hate me: this is my CI tool pipe for one platform (including building lighting and other bits)

limpid mason
#

All our machines have 10 gig networking

simple lodge
#

It does support a lot more platforms, but for testing I usually only have one active (less time consuming)

#

Ok so storage isnt crappy, raided NVM-E is something I am looking at right now to see if the perf is worth it

limpid mason
#

Depends what you're trying to do with it. We run Intel Optanes for the DDC since they have such high random read. Their raw read speed isn't THAT much more than an NVMe, but the random specifically is just worth it. We max out 10 gig networking on the DDC server.

simple lodge
#

Aye

#

For this tool I am building DDC each time

#

If its a public tool, I cant realistically cache ddc

limpid mason
#

I dunno, depends, if people are paying for it, the cost of a DDC is well worth it

#

It shortens build times so much

#

You will make back the cost of compute quickly with time saved

simple lodge
#

Aye, but this is targeted at smaller indies/solo devs

limpid mason
#

Ah yeah OK

simple lodge
#

If you are doing projects that big its called contact us + enterprise option where that is possible

limpid mason
#

The company uses TeamCity, but they don't have the build broken apart. It all has to be run at once. They have some custom build shit going on. We are working on fixing that. Getting back to standard tooling and breaking apart the build into multiple stages so we can really take advantage of TeamCity features.

simple lodge
#

Ive written it to be incredibly flexible (its based off work I did for clients), but the mass user version will have some of the stuff lopped off to make it cheaper to run

limpid mason
#

Hit me up when it's publicly available, would love to see it.

simple lodge
#

Will deffo do

limpid mason
#

The biggest thing in TeamCity for me is how well you can define dependencies and only have to trigger stages that have changes. Helps a lot to be able to use build artifacts from previous builds if the relevant source assets haven't changed.

simple lodge
#

Aye, ups the storage requirements a significant amount tho

#

btw have you noticed how UE4 builds are sooo write heavy now

limpid mason
#

Hence why we are on bare metal, AMD Threadrippers were a game changer.

simple lodge
#

Im using 3950X's with 4x NVME-E drives in raid 0 for my testing cluster

limpid mason
#

Aside from fixing our outrageous build times one of the next things on our list is building a Ceph cluster so we can affordably scale our storage.

#

Which motherboard you using that you fix 4 NVMe?

simple lodge
#

Well the steps so far dont require significant GPU (or any actually), so Im using a 2080Ti at x1 for display out (will drop in a crappy gpu later) and then the main x16 slot for NVM-E Raid

limpid mason
#

GPU so you can run some automated tests not just builds?

simple lodge
#

Aye eventually maybe

#

right now automated tests arent a focus

#

Because most indie devs are not going to write tests anyway

#

they are gonna playtest the built game

limpid mason
#

Are you running your builds in VMs? Or straight on the baremetal?

simple lodge
#

ATM baremetal for my clients, but working on containerising

#

I managed to get a compiled container going yesterday (with vs2019 and a modified ue 4.25.3)

limpid mason
#

A clean checkout of our P4 depot is 200GB, once you do a build the local workspace is almost 600GB

#

I hate it so much

simple lodge
#

Cant have debug symbols for editor tho because of a docker+winio kernel bug

limpid mason
#

Yeah, we are using Windows VMs because of shit like that

simple lodge
#

It builds

#

I just cant use any copy process on a file >8gb

#

I don't think its a big issue yet

#

but its annoying af (took me 3 days to work around)

#

because error 0xc37a is somewhat meaningless when undocumented (its a generic process exit error)

limpid mason
#

lol

simple lodge
#

bug has been around in various forms since windows 10 1709

#

its like ffs MS

storm vortex
#

Is there a way to limit the number of revisions of a file in git lfs?

#

My repo is getting massive because of revisions of the map data

#

my repo right now is 23GB!

#

totally crazy

rotund bobcat
#

lmao

#

cries in 320GB repo

woven sluice
#

no. stuff like this is generally why people use perforce, but... for 23 GB? you might find increasing your storage easier than switching to perforce

#

alternatively, destroy your entire version history and restart it once in a while BigBrain

storm vortex
#

I'm not worried about storage so much as the time it would take for new devs to clone the repository

#

if it ever got to 320GB it would take like a day or more to clone the whole thing even on a fast connection

rotund bobcat
#

you know you can make a shallow clone right

#

e.g. just clone the state from the last commit

storm vortex
#

Oh no I didn't know that, let me look into that

#

Nice this looks like it will work

#

Thanks for the tip

rotund bobcat
#

yw

simple lodge
#

23gb is tiny 🙂

rotund bobcat
#

size doesn't matter

outer wedge
#

Hi.
We are currently using git(lfs) in our project and working with a mirror from https://github.com/EpicGames/UnrealEngine.
Everything is great.

But now we are porting the game to ps4. We have all the approvals from sony, we have access to perforce repo, which has everything to build for ps4.
But in github version (https://github.com/EpicGames/UnrealEngine), these platform-specific things are not available.

And question: how did you get platform specific things into git(if you using similar approach) ?
Ideally, I would like to get the source of the scripts that EpicGames use to transfer commits from perforce to github and customize them for myself.

rotund bobcat
#

you can just get the platform specific things for the engine from their ftp

#

and I guess just push those files to your repo

river tinsel
#

Or you can ask for Perfoce access

#

merging changes from ftp

#

is going to be so much fun ;

rose spade
#

hi, i'm trying to orchestrate a company that has multiple ue4 projects bound to different versions of the engine. sometime with their own modifications to the engines.
we're under perforce and i'm sort of new to the stream thing.

what's the best way to manage changes?

should you create a main stream and checkin the ue4.25.3 source code. Then create a development stream for the company's changes and then development streams from that development stream for individual projects?

or is it better to

create a main stream for each project's version of the engine?

#

Vanilla Stream->company development stream->projectA development stream
or
Vanilla main stream
company main stream->company development stream
projectA main stream->projectA development stream

rotund bobcat
#

anyone know if there is a way to prune the lfs storage of an online bitbucket repo

limpid mason
#

@rose spade Are all your projects in 1 depot or individual depots?

rose spade
#

lets assume a single depot with a bunch of streams for the different components (projevts/engines)

#

(AFAIK, external repo were forced to readonly so it's kind of annoying to send your changes back to the shared repo)

limpid mason
#

fuck, that makes things a massive mess to handle...

rose spade
#

having multiple depot comes with its own maintenance issues

#

but i think my question is irrelevant of multiple depot vs single depot

#

you would separe your streams the same way and just split them across depots no?

limpid mason
#

I figured it would change how you use things like import, but I guess since those specify both depot and stream it doesn't really matter...

#

anyways, to answer your question this is how we handle it on new projects:

  • A depot for the Unreal Engine
  • Streams in that depot for each version of UE4
  • We aim VERY strongly to encourage teams to NOT touch the engine, if they do it's a stream off of that engine version
  • We then build and deploy each version of the engine for use by UnrealGameSync
  • Each project is its own depot
rose spade
#

we had multi depot setup and it was a freaking mess as well. not only did we needed the build engineer to create new projects, we would end up with something like:
//shared_depot
//projectA_depot
//projectB_depot
all on different servers.

UE source code would live on shared depot.
you would create the company branch on the shared depot.

you would import that inside porjectA as an external depot.

you would need to create a branch from the external depot to make your own changes.

and then when came time to propagate those changes back to shared... you're sh*t out of luck and you have to do it manually

#

yeah... the best way to handle this is to not modify the engine.

#

yet, we do it for almost every single project

#

right now i just want to integrate FastBuild to see if it can speed us up.... you have to modify the engine

limpid mason
#

Do share your changes across projects or are they unique changes per projct?

rose spade
#

some changes are shared some are not

#

genre the company branch and the individual project branch

#

but the flow of development dictates that changes are authored in project branch.
the problem comes when you want to propagate those changes back to your shared repo that lives on another server

#

p4 seems to only support read only external repo

limpid mason
#

Yeah so with regards to that we basically enforce changes to the engine happen in distinct commits to the engine source code regardless of the project. Once your changes are into the engine your project gets the changes and can use them.

rose spade
#

and that's a freaking pain in the ass on its own

limpid mason
#

It's not so bad if you're seriously limiting your changes to begin with

rose spade
#

and have people to maintain the shared repo

#

but yeah... limit changes

#

i think p4 should support non read only external repo and that would solve that problem

#

because you can ask the extact same question for shared plugins/modules/etc

#

it breaks the flow of development (unless there's a trick that im not aware of)

limpid mason
#

We are working on creating a dependency system for plugins. So we can keep them all external. The goal is in your project you just specify a list of plugins and their versions, the engine version you need, and then it pulls it all together as needed for builds

#

But yeah, if you're making lots of changes to the engine having it in the same depot as your project makes sense

#

I would probably use imports in the stream view, but exactly how i am not 100% as I don't have that setup infront of me.

woven sluice
#

(import+ ?)

rose spade
#

external repo = read only

woven sluice
#

oh, external server?