#source-control
1 messages · Page 50 of 1
@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
you are probabaly right, still hoped for some dedicated VCS for binary assets, would make easier to integrated it with git -
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)
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
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.
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.
(you might be able to make your server's local IP static or manually assigned around DHCP in your router's settings)
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?
@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?
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
Hmmm... yeah I was going to ask about security
What kind of security can I setup for my server?
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)
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?
@blazing tapir you have to port forward the port "1666" in your router
ok nvm , did not see that message
If anyone is interested in a perforce video course, let me know: https://twitter.com/cannabis_cod3r/status/1283974962982731779
@HighlySpammable I've often thought about offering a course on how to setup a Perforce server in the cloud. There's a lot to it and it's rather niche. It's difficult to gauge the level of interest, so I thought I would throw this out there: https://t.co/9donPwtfkE
Hey everyone 👋
Is there any how-to guide on setting up CI/CD with ue4-docker for automation builds for multiple platforms?
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:
- 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.
- 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?
Mind you, I don´t do any programming on that project, so I don´t worry much about branching etc.
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
Thanks for the input!
Still gotta look into streams one more time.
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
Perforce back up and recovery docs: https://www.perforce.com/manuals/v15.1/p4sag/chapter.backup.html
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.
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
Does anyone know if there is a way to change the email address with which Unreal wants to make the connection to Git?
Anyone know the best Multi-User Editing SVN to use for UE4..i never used one before
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.
@young prawn git config --global user.email info@example.com
@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"
Thanks @quaint obsidian !
hi frens, is there a way to submit color palettes to Perforce?
@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?"
Does anyone know if the free version of Perforce is enough for users who just need source control and multi-user editing
@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
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
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).```
Thank you for helping!
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
Will do! Thanks a lot 🙂
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 )
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
experience with Git ??
who?
i have been using svn thinking above moving to Git using a local hosting via Gitea
Im following this video, anyone know if its accurate for a 2 person team that just needs multi-user editing with source control
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...
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?
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
Hi is someone from germany here who can help us with our perfoce Setup?
check pinned messages
Yes I saw the links and tutorials but for some reason is the connection (Get latest Revision) very slow (about 2 Mbits)
I´m from germany, but I can´t help with your speed issues....:)
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
@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.
@dawn pewter Could you help me out?
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?
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
@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
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
Anyone here had an issue with a new user not connecting to a Perforce server
@obsidian thistle I dont think so, or at least, ive never noticed it. I think you just have to wait.
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?
@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
we use these extensions for lfs https://pastebin.com/3Ac3D1Nt
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
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
@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
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?
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
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.
Guys what's the right way to Pull from Perforce?
Get Latest Revision or is there a pull feature from Unreal itself?
Get latest revision
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.
hi, please help me my friend cant use "get latest revision". There is only an infinity blue loading screen...
there is no loading progress
well how big is your project and how fast is the server
@woven sluice Is it for me?
nah Tadopai. actually that was a stupid question - is the friend's project folder increasing in size?
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
Thanks a lot! You are my savior @woven sluice.
@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
you manually sent him the files to copy into it?
yes
yeah that was a waste of time
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
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?
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

Its working!!!!! Thank you @woven sluice !!!
you think your antivirus was slowing it down even more then?
yes I removed "Kaspersky Anti-Virus NDIS Filter" with the command line and in the windows safe mode (with network drivers) and it worked
neat
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 🤔
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
@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
if they're already in a changelist they will get submitted. yeah there you go
@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
@obsidian thistle So, will that remove all of the files from the server that are in the p4ignore file?
@autumn sail no it just reverted my files without change my local files
and luckyly I didn't submit those files yet
Ok. I'm new to perforce and some things seem to be more complicated than I was expecting.
-k "keep workspace files" 👍 (I didn't know about this either. learn a little bit every day
)
usually don't need to use the command line with perforce when you're new, but yeah it is extremely confusing
for advanced thing you need to sadly, P4V didn't expose all
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.
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)
How do I set that up? I really don't need 11 revisions of a 500mb map.
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
here's my current typemap https://hastebin.com/uhimikecon.cpp
Ok, so text+s6 will only keep the last 6 revisions?
filetype (text there) instructs perforce how to store and generally treat the file, then yes S6 (not s6) stores max 6 revisions
the current type a file is set to is shown in the left window of P4 on any files in your workspace, if you want to go through your project and set things like maps or megascans to binary+S2 or something similar https://i.gyazo.com/e549d0a1f3f88193f05d6c6ad81ccbb0.png
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?
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
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?
yep
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?
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.
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
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.
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
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
hey, it's working, connecting with ue4 and then adding the files was the trick
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...
An overview of UnrealGameSync (UGS), an internal tool used by developers to sync their Workspace with a project's stream.
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?
literally looking for a way to get to this screen:
upon further research, I found this: https://www.gamasutra.com/blogs/AndrewHaining/20191202/354908/Unreal_Game_Sync__Migrating_to_Internal_UE4_Builds.php
but please let me know if anyone else has anecdotes or if this method seems to be the way
Do project settings get updated in Perforce when changed in Unreal? Such as if I change Game Modes or Inputs
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.
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?
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 😕
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
I setup perforce
can't really boot a game with half the files
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...
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
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.
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
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
_BuiltData.uasset seems to work.
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.
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
I have a lot of assets, many of which Im not using. My project is 2yrs old and has ballooned a bit
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.
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
^ exactly this, except since you've set up perforce you don't need multiple solutions, you can just do it all with perforce
So im assuming unreal doesnt offer any type of Collabaration like unity?
@pearl slate could you elaborate?
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
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
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?
This is what Unity has https://unity.com/unity/features/collaborate god i wish unreal had something like this
@robust jacinth yeah that should be a new branch
@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.
@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
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.
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?
@hidden ibex in VS solution explorer, try right clicking the project and "set as startup"
@coral heart do you have p4 for VS plugin?
@ornate willow Talking about helix and such right? yeah. For example if I modify a file it'll auto check it out in perforce.
@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.
@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
is it possible to use perforce locally? I just want it for my own side project not anyone else
thanks!
when using VS 2017 with perforce
how do i sign in to perforce on visual studio like the unreal engine does
do you already have the P4VS plugin
👍 give it a try
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?
i don't think you can do that, because a changelist can affect multiple depots. changelist numbering must be global at the server level
ah ok thanks
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
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
did you commit the entire project?
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)
@runic trail I committed everything except intermediate folder
do they have the same engine version?
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
hmm
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
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
no they won't need vs
stupid question but you didn't compile and upload debug binaries instead of development did you
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
@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
@runic trail do you have a .p4ignore?
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
@runic trail under view I would expect to see //depot/... //workspacename//...
so if the 2nd depot is named Projectlancers, //ProjectLancers/... //workspacename//...
Ravenwolf a much, much, much stupider question: there's no chance your artist has a 32 bit OS is there? lol
yeah we're using a launcher engine, simply committed the 4 files in Binaries\Win64 and we were off to the races
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
well it'll waste a few minutes of his time every time you make a change for him but otherwise
this is just temporary until we get a break so I can research it further
we have a demo tomorrow
yeah that's fair of course
and he's got lighting work to do
so sometimes you have to use a band-aid to get through until tomorrow, lol
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
yeah
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 do you have a .p4ignore?
@lean yoke not yet
@woven sluice I just friend requested you - I'd love to get more info when you have time
so if the 2nd depot is named Projectlancers, //ProjectLancers/... //workspacename//...
@lean yoke workspace name is Anthony-PC so it should be//ProjectLancers/... //Anthony-PC//...?
also built a little discord bot 😄 (P4 is just a webhook) https://i.gyazo.com/b4cbefb8be2fd5ce2516c6686668f00b.png might throw it up on github some day
@runic trail ok so that appears correct then
Well right now it's using my client name not my workspace
//ProjectLancers/... //Anthony//...
is client
//ProjectLancers/... //Anthony-PC//...
is workspace
nah i just created a new depot on the server
so "depot" was my first depot
been using for months
so wait your mappings aren't set up right? Anthony isn't your workspace name?
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
I haven't seen it where the client follows the depot name
I can change it to the workspace name and see
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
how do i do it in p4v?
@woven sluice you get that text by typing in p4 client into cmd
Connection->Edit Current Workspace
or Views->Workspaces
and then select the one that's not working and edit
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?
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
is my p4ignore file per depot or one for the whole server?
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
ah ok that's what ill do
here's one of my oldish ones if you want to cherrypick it. https://pastebin.com/Y2FHqXLK
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
@woven sluice so i should ignore the .sln files for coding projects?
yeah
should i ignore the Source folder as well or no?
no that's where all your code goes
ah ok
this is my project folder, so i should be ignoring .vs, binaries, intermediate, and the .sln file?
and Saved
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
right click on .uproject, regenerate project files
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.
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
@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.
@woven sluice and @jolly fog , thank you very much! This is very helpful.
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.
@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
@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
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 😄
no worries
whats your guys prefered git gui client?
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
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
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
I use Git Cola, https://git-cola.github.io/screenshots.html, for the simple day-to-day stuff. The command line for anything complicated, which is pretty rare.
I use sourcetree for the easy stuff, command line if it gets messy
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.
Yes it works, what's wrong?
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...
cuz isn't Git LFS supposed to compress large files?
?
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
but do I still need to buy storage for GitHub?
¯_(ツ)_/¯
github pricing search on google should tell you the price tiers. github.com › pricing - 500 MB free @hearty fossil
500 mb 
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 😉
@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.
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
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
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)
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
@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).
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.
just check in the plugins folder
(with the same ignore rules as the main project inside each plugin, so no binaries/intermediate)
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.
have you tried doing what it says
installing
is there any reason why I could not use onedrive as our SVN storage location?
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
if something seems dodgy, you're probably doing something wrong
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?
@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?
@neat grotto nevermind, I misunderstood something and it's fixed now. Thank you for responding though!
How can we run our own perforce server without buying or renting other?
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
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?
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
i might have just picked a traffic heavy region then(india)... im going to centralize it and see if that improves 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
@woven sluice one doubt, using this method
Other team members are able to access and updated anytime or there is some restriction?
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
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?
yes... obvious answer applies, if the server isn't running then nobody can access it
Thanks @woven sluice for clearing all my doubts!
Hey! Anyone here has already setup external diff in Plastic SCM in order to diff blueprints? 
[Solved It
]
Needed to get some shelved files from perforce but I had read-only access so here's a script to get around it. Could be useful!
https://github.com/jackknobel/P4Scripts/blob/master/P4Retrieve.py
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
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
Did you check if the file is versioned in git, that looks like an LFS pointer issue
i switched off git and started using plastic scm instead actually 😂
ill probably just kill the repository and remake it
@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
local proxy is of no use unless all of the team members are on the same WAN connection
right, it depends on your server of course as well
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
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
once i set up all the replicatin and stuff it was flawless
probably is still working fine to this day
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
does anyone know why my project cpp/h files dont show the changes in GitHub Desktop? All it says is, Binary File has changed
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.
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.
Anyone know why UE4 is detecting a team members login stuffs?
Every time I open our project, his info is there instead of mine
Is there a file that is being overwritten?
@sour vine could it be that the EditorSettings or PerProjectUserSettings are being submitted to source control (from the Saved / Config folder)?
very likely. Tried looking in there but no idea which file is responsible for the info in the screenshot
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.
How to setup Perforce so that you can share assets with other on your team.
assuming Perforce is your source control. sorry.
it is
oh, actually that's on the screenshot 🙂
yep
ok similar question:
every time i open the project, these are all reset to thomas's values
is this also sourceControlSettings.ini?
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
ook. so I should delete them entirely from the server?
*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
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?
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).
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?
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.
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.
@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?
I have a work in progress writeup here https://www.ue4community.wiki/jenkins-example-windows-installation-perforce-z98w4map
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!
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
@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.
@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
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
Something like:
Only if you delete the previous dlls though which is a nuisance to ask artists to do every code update
it can be automated 🙂
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 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.
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
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 😂
Anyone ever integrated Artifactory into UGS?
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.
Setup UGS and artists won't have to manually get binaries either. 😉
Don't need UGS. Can UGS also handle my deployments to steam in one click? 
No, but a hammer also makes for a poor eating utensil - kind of besides the point.
Can UGS work with launcher engines?
Yes, though it still expects the engine to be side-by-side with the project folder.
Does it require coders to submit binaries manually?
No, because UGS is not a replacement for Perforce or Jenkins.
I should (honestly) learn more about it but I don't know what it would add for me
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.
That last statement could be mildly nice
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).
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
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
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.
shrug with my setup, coders submit cpp files, 5 minutes later artists open p4v and press get latest and get binaries.
Fair enough. You remember to make Perforce only keep so many revisions of those binaries?
Yep.
And I have a discord bot that tells everyone when it starts compiling and if it succeeded or failed for extra nerd points 😄
My client has something like that, but for Slack.
Neat!
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.
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.
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.
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.
I see. thank you for the insight @robust jacinth . Both @woven sluice and yourself have been massively helpful.
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.
that's good advice
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?
rip plastic
Huh? git LFS has a 1 gb limit and requires you to purchase upgrades? 
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.
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
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?
@simple lodge source for the assets, but engine source is not needed, this about scripts and such
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>
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.
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
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"
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?
Hey!
Is anyone using jenkins with Plastic SCM to automate builds?
@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)
@woven sluice Put in some effort? Been troubleshooting all day.
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
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 
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
you made a CI tool? 🤔
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
sounds too good to be true but I look forward to seeing what you came up with
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
Hey everyone, basic bitch question here, is using Source control a good way to share the project files between remote team members.
yes
that's one of the biggest uses of it
that and the actual file history are the reason you use vsc
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.
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
any tools I need to enhance git functionality
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
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
). GIT is fine until your project grows very large, but eventually it starts to suck.
define very large
I don't have a number. It's been a long time since I used GIT. but it's still a fact.
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
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
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)
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 😄
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.
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
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
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
Oh sure
we killed a git repo within a gamejam weekend
myself and other programmer made 50+ commits each with levels, BPs and stuff
https://discordapp.com/channels/187217643009212416/375019235853729805/715253228048220221
I made a compilation of git pricing
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.
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
@quaint obsidian Ah, OK. Misunderstanding then. You didn’t mention Pro in the original message.
I guess I should have written personal private repos through Pro
Yeah, since personal private repos with basic features are free now (which is fantastic).
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
Now it has gone to upload 596/356
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
I see
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?
filescan sizes and concurrent transfers and stuff
Is it still best to use Git from outside of the Editor? Or is the plugin safe to use?
Anyone here use redmine and perforce together?
@barren lake use UE4GitPlugin in GitHub
How safe actually is that to use? Experienced any issues?
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
@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
Was my question bad enough I got muted from here?
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
i think there were a few fixes to pulling on the new git plugin
@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.
@kind laurel lucky I justy installed it
👍
@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
I just wrote a bunch of code 🤷♂️
i know redmine is made in rails
so i was thinking maybe i could just write ruby code
to do it myself
Think i did some post commit hooks and then some API requests
It was like 2-3 years ago
long time ago
Exactly
;;(
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
I wish I knew how to use Docker
@lyric spruce you might want to learn about perforce "jobs" usually those are used to hook up to task management. Never done it myself.
docker is by far the most confusing thing ive ever seen
@woven sluice whatrs the diff between jobs and triggers
its fine.. mostly
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
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
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 
P4DTG looks like the tool to research
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
doh
If its Open source then you can just mod it pretty easilt
ughhh this looks like another Windows Kernel bug
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
Is anyone outside of Unreal using Unreal Game Sync ?
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.
Is LFS included in Git for Windows by default now?
@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.)
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?
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
Ahhh, of the host machine? @simple lodge
aye
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?
hey, so, which do you recommend between GCP and AWS for hosting a perforce repo?
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
did unity buy Plastic?
yeah
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.
@kind olive whats wrong with just using Perforce? Price?
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
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
thanks let me see if I can figure that all out
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
my branches and remotes
@tranquil walrus Typically I would push the second branch and do a merge or pull request from one branch into the other.
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.
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
yes, that's what I did.
@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
I've used it extensively. I just don't like it.
Thats fair, let me grab a slide from one of my talks
I'll probably end up using it though.
The tldr: you can make git perform nearly as well as perforce
Every few months I go looking for an alternative and Plastic has been about the only thing that fit the bill.
IF you know how to tune git properly
Biggest LFS repo ive done is ~1.65TB atm
Mine tend to be around 500GB at most, but can run higher.
Never more than a few users though.
@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
Yeah, we have 70 P4 licenses and our P4 depot grows 100+ GB a week, at least
I havent checked, but last time I looked it was ~$1k + $379yr renewal
It's very pricey at any reasonable amount of storage
Im talking about self hosted variant
cloud one is dumb
@limpid mason biggest (single) p4 repo I worked on was >1PB
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.
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
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
How hard is it to use git compared to p4?
I thought it was problematic because of the file types and had a hard time tracking changes with things like bp?
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]
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
+1
I am pretty comfortable with both, but unless you are really going big, git is almost just a better choice now
We keep most of our code that isn't part of the actual game in Git as well
Also, I am launching a CI + some other stuff tool that uses git soon 🙂
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.
Have you considered that maybe you just arent a fan of dev/ops work
(which is ok too)
the checkpoints and journal are a pretty standard way of doing things
Best tip I can give you with p4: the UI is garbage, learn the command line and its somewhat more sane
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.
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)
any suggestions on where to start looking for info?
Thanks. Found a write up on it.
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)
I was actually just about to ask about that, since I see there's other plugins for it out there.
Just grab sourcetree or tortoise and profit
Fork is a great Git GUI as well
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?
whats up?
Do you run a lot of tests on your unreal projects?
Thanks. I'm going to give Git with LFS a go. Looked over two write ups on it and it seems straight forward.
@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.
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
A clean build of our project right now is 6+ hours... with DDC... fucking RIP.
win64 client, win64 server, linux server
AMD Threadripper 3970x, in a VM though with 16 cores and 60GB of memory per VM
What storage backend?
youll probably hate me: this is my CI tool pipe for one platform (including building lighting and other bits)
All our machines have 10 gig networking
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
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.
Aye
For this tool I am building DDC each time
If its a public tool, I cant realistically cache ddc
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
Aye, but this is targeted at smaller indies/solo devs
Ah yeah OK
If you are doing projects that big its called contact us + enterprise option where that is possible
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.
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
Hit me up when it's publicly available, would love to see it.
Will deffo do
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.
Aye, ups the storage requirements a significant amount tho
btw have you noticed how UE4 builds are sooo write heavy now
Hence why we are on bare metal, AMD Threadrippers were a game changer.
Im using 3950X's with 4x NVME-E drives in raid 0 for my testing cluster
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?
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
GPU so you can run some automated tests not just builds?
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
Are you running your builds in VMs? Or straight on the baremetal?
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)
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
Cant have debug symbols for editor tho because of a docker+winio kernel bug
Yeah, we are using Windows VMs because of shit like that
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)
lol
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
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 
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
you know you can make a shallow clone right
e.g. just clone the state from the last commit
Oh no I didn't know that, let me look into that
Nice this looks like it will work
Thanks for the tip
yw
23gb is tiny 🙂
size doesn't matter
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.
you can just get the platform specific things for the engine from their ftp
and I guess just push those files to your repo
Or you can ask for Perfoce access
merging changes from ftp
is going to be so much fun ;
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
anyone know if there is a way to prune the lfs storage of an online bitbucket repo
@rose spade Are all your projects in 1 depot or individual depots?
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)
fuck, that makes things a massive mess to handle...
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?
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
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
Do share your changes across projects or are they unique changes per projct?
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
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.
and that's a freaking pain in the ass on its own
It's not so bad if you're seriously limiting your changes to begin with
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)
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.
(import+ ?)
external repo = read only
oh, external server?