#source-control
1 messages · Page 15 of 1
why won't it let me revert on my revision control?
Have you actually saved the asset?
I want to say yes but at this point i have no idea. I get to a certain point in my project and the who thing bugs out on me, crashing the project. this is the forth time, revision control saved me on the third time but no i can't even use the revisionn control.
If the asset hasn't been altered, it probably can't be reverted.
it has been altered in the past. I have a revision history on it.
Aaaand in p4 I don't think you can revert an asset before checking it out into a CL?!
Yes, but that specific revert action probably reverts it back to the current version you have checked out, destroying local changes. So if you haven't altered it since your last commit, it can't be reverted.
that makes sense. So how do I restore those assets?
i'
i'm still learning revision control.
Honestly I don't know. I've successfully avoided integrating source control into ue so far. I do it outside the editor.
I don't know what to do. I get to a certain point and now I can't open up certain blueprints without the whole project crashing.
What is the crash>?
Are you using c++ at all?
Yeah. That's a stack overflow right there.
Yeah, I thought the issue was because I was using a blueprint struct. So I made the Struct in c++ and that only fixed it for that only
You have something calling itself.
Like an actor creating a new instance of itself in its own construction script.
(though that's actually hard to do intentionally)
But it's something like that. Some loop in your graph.
And I don't mean a for loop.
Event X triggers Event Y which triggers Event Z and that triggers Event X again...
what do you suggest I do? I've apparently have made this dumb loop 4 times now.
I guess I'll start taking screenshots of my code before I close it. that way I'll at least be able to see if i'm doing that overflow loop.
I think I found out what's causing it. anytime I had my CardHand Widget into my HUD Designer, It causes my game to crash.
i don't know how to solve it though
Damn man, you were right! My CardHand widget had the HUD widget as a parent class. When added it to the HUD it must have caused that overflow loop.
🙂
I wish people could earn rewards from people they helped, so everyone could see the profile and know a lot of people on here know their stuff.
and how helpful they are
That's a dark path.
Got a question about sourcetree, after committing and pushing, I still have X number of files in "Commits". Then it still showing the files in the Unstaged Files section.
In Github Desktop, these files and X number of commits disappeared after pushing as in "these files are committed and pushed" type of way so let's remove them, which I liked. Am I missing a step? 🤔
Git Tortoise/Github client/SourceTree
If me and my friends are working on unreal project via version control what are some advices that we should incorporate in our workflow?
We were previously doing some stuff in unity and we have trouble getting started with version control in ue.
We use github and gitlfs with git tortoise for client.
Do we have to always close unreal engine editor before making pull?
Do we have to make something except saving project file before pushing commit?
We already had some peripeteia with pushing and pulling where one person's changes to for example postprocessing were not recognized as changes and were not pushed by git.
Anyone knows if I can move a workspace to another drive ,without breaking things?
I have a 100gb client project that prevents me from installing source build in D:\
I want to move it to C:\ to free some space
yeah you can change the workspace root folder/path setting
So I can just move the folder and then go to p4v and change path?
should work fine yeah
Thx!
@woven sluice I should press Copy, right?
project is 100gb
and my disk has around 90gb empty space
that's not what i envisioned
i would expect 1) move folder in windows, 2) edit workspace settings, 3) done
i would hit do not copy
moved folder from D to C, edited workspace settings -> workspace root -> select moved folder
ok lets roll with do not copy



Hello. Is there someone here with Perforce knowledge? I'm new to Perforce and I'd like to delete / obliterate a folder (accidentally had Saved synced which clogged up all of the available space on my server). I've read that there are commands you can use to do this, but I have no clue whatsoever on how to use those commands
I'm using Perforce addon on Digital Ocean (droplet)
Just use the admin app?
Hello, does anyone use Perforce with multiple projects? I've got into some troubles after starting working on a second project. Anytime I open the first one both the IDE and UE Editor tell me that they fail to connect to the server unless I manually tell them to use the server for the first project. However this never happens to the second project, i.e. the IDE and UE Editor automatically connect to the server associated with the second project. I suspect that I have some global P4 variables that are set to the second project, and that's the reason why only the first one fails to automatically to connect. If that's the case, is it possible to setup some config file relative to a project, so that it always uses the same connection credential?
don't use P4PASS P4USER P4HOST etc... use e.g. P4CONFIG=p4config.txt instead... place a p4config.txt in your workspace root folder and write P4PASS=XYZ inside it instead
If I would go with the P4CONFIG instead, would it be used over the other variables? I mean, if the Perforce can find a config, will it read the values from there rather than the global ones?
P4IGNORE=yourignorefilename
P4PORT=serveraddress:port
P4USER=perforceusername
P4CLIENT=workspacename
pretty sure p4config takes max priority but not sure
Alright, I'll give it a try, thank you
you can just go into windows environment variables and remove all of them except P4CONFIG if you want to brute-force be safe
Are you sure that the P4PORT includes address and the port?
Yes
Yeah, it works. Initially I thought that Perforce is already setup to use p4config.txt, but it wasn't. Running p4 set P4CONFIG=p4config.txt made it work. Thank you for helping me out 🥳
it seems to be working btw
no issues so far
why is it so painful to add a user to my Azure DevOps repo? every single person that I've tried to add in the last 2 months encountered it
this is a solution provided by MSFT but it doesn't even work
is it an org repo or personal repo?
Obviously with gitea right? Probably gitlabs actually
Alright, I've finally had time to go in and clean up my perforce stuff, the issue that I'm currently running into is that my partner cannot launch the game. When he tries to open the project he gets a build failed error. If he opens the project in VS2022 he gets a load of errors. When he tries to regenerate the project files he can't because of permissions (because the .sln is in perforce). I have most things ignored in perforce that I've read I should, but maybe I'm missing something.
Pictures coming below
don't checkin the sln to perforce...
Well, it would be nice if the documentation said that. Removing now, thanks.
I moved my .gitignore over the .p4ignore but I guess the syntax is a bit different for some things, for example I have !*.sln inside the .p4ignore is there some documentation to how the .gitignore syntax and .p4ignore syntax are different, as I understand that it accepted .gitignore syntax.
I noticed that this one doesn't have Binaries ignored, is it supposed to be included? I always run into permission issues when it's included and I've read to exclude it. For example:
0>Unhandled exception: System.UnauthorizedAccessException: Access to the path 'C:\Development\_\Binaries\Win64\UnrealEditor.modules' is denied.
When trying to run the project from IDE and if I try to use Live Coding
LINK : fatal error LNK1104: cannot open file 'C:\Development\_\Binaries\Win64\UnrealEditor-ArenaGame.patch_0.exp'
it depends ™️
if you want to distribute premade binaries to people so they don't have to build the editor themselves then you may want to submit your binaries. But if you're going to do so you should mark them as +w in the typemap so that the files are always writeable.
if people are going to build their own binaries anyway (or you're going to use UGS) then ignore binaries.
Okay okay, I see. That makes sense. Last question, why is it that we are ignoring the .sln here when typically practice is to include it? This is my first shared unreal project and most of my experience is in C# so I'm not sure if this is just an Unreal thing, or a C++ thing.
this is an unreal thing
unreal does not operate on sln or vcxproj files
it generates them for your convenience so that VS knows how to open the project
but they are generated, they contain no useful information for the build process or project.
nothing in them is meant to be saved because you can regenerate them as necessary from the uproject and other related unreal-specific files.
Ahh, okay. Thanks, that was confusing me a bit. I appreciate the help, getting perforce setup has been a little frustrating. It was extremely simple when we were doing blueprint prototyping but since I've started the C++ project it's been a bit of a headache due to inexperience and lack of straightforward setup instructions.
AKA: My git brain can't handle more than git add . 😛
if we are using UGS, should we ignore all binaries folder in Engine?
it's an org repo
you can make repos without making organizations?
I have perforce working successfully, got my project copied from the appropriate stream into an appropriate workspace. I can interact with Perforce just fine through p4v
However, when I go into the editor and try to connect, it fails. It also doesn't show available workspaces. This only happens on this computer, the rest work fine.
Does this problem sound familiar to anyone?
Never mind, somehow when copy/pasting the server address over, a digit changed???
yea copying is a know issue, already had this
this is so alarming hahahaha
My P4V server is connected to AWS. It is down like... 10-15% of the time. Anybody know why this might be the case?
moving this from #ue5-general :
attempting to use unreal with svn
committed changes seem inconsistent; attempting to commit changes to a level only sends "external actors" which are a list of uassets, the umap file itself does not seem to be recognized, and the level does not update for others
is there some special setup needed to use unreal with svn that I'm missing
It's been an unspeakably long time since I used svn, but as a general source control guess, perhaps you haven't told it to treat all of Unreal's file types as binary and that's causing issues?
I have not seen this anywhere, I don't think it was in unreal's own documentation for svn setup
one would think that'd be an important step
I cannot figure out what it's changing or what is supposed to be sent; at first it committed a bunch of things under "external actors"
I made another change and tried to commit that, but then more of these folders/assets spawned as non versioned
I have no idea what files it actually sent that were relevant to the level changes
it seems that they had their own local copy of the level they were editing, which was being overwritten by autosave
we cannot figure out how to get my version of the level on their end, it's now an incomprehensible uncorrelated mess of files that we can't piece together
I thought, okay, I'll make a change, commit that, surely that will cause a conflict on their end which will reveal the relevant files
but there were apparently none related to it, and the level did not change on their end
my only guess is there are now two sets of local files for each of us corresponding to our own versions of the level, which are not crossing over so we can't force the level to remain consistent in either direction
why is it like this, how the hell does one simply commit a level that the other person then has an identical copy of
those files are arbitrarily versioned and unversioned
I have no idea if it's broken or unreal is automagically managing this
I have no idea if I'm supposed to manually version the unversioned files it generates
there's... a built in thingy I'm supposed to be using
I'm gonna lose it
this whole project might be mangled to bits for all I know
we've been struggling with incomprehensible file lists and versions and conflicts
many things are not cleanly resolving or remaining consistent
man I'm gonna scream
all I found was things telling me to use external svn tools, I'm using tortoise
we may have no choice but to revert this entire project to square one
but the problem is that unreal assets don't seem to work like other engines, ie unity, where you can just pluck asset files out and put them back in
so we can't even export our important assets and port them back in
okay, so there is a way to port unreal specific assets, like materials
pretty annoying, I'd rather the low tech conveniences in most cases
I want an asset to be that particular file, not a definition and reference to a spaghetti web of arcane files across the project where moving any one thing destroys the natural order
that much makes sense
but what even is a level then
what are all the files that compose a level, how do I know everything is in order and consistent
"one file per actor" is an incredibly counterintuitive name for what this is
so, there is a way to turn it off
and just have a map file be a map
I'm not, wtf
why is all this crap on by default
I'm not making starfield here
it's not on by default though?
it only gets turned on if you create an open world level
which is world partition
it's technically usable (but experimental) outside of that but requires explicitly enabling it
yeah, we have more than one level designer, and we would want the level to be consistent between us, without local variations of what things exist in it
I assume that is just so we can work on it at literally the same time
among other reasons, yes. Though that's also the purpose of OFPA.
two people cannot be modifying the same umap at the same time
or rather, they can but someone is going to lose their changes
which may or may not have world partition and OFPA enabled. There are many types of levels.
And the open world templates should appear when going to file > new level
well, we created a "level" and it's using ofpa, on its own
so that appears when doing file > new level
but not when adding a level asset to the content browser
correct
which raises more questions
you don't get a choice of what template to use when adding via the content browser
it's an old (dumb) flow that should be removed/fixed
when adding a level asset directly, what template is it using, how do these differ
regardless, the default seems to be "empty open world" for some reason, but using the file menu will fix that.
open world is world partition
that's how they differ
pretty sure that panel outright refuses to show anything in WP
ah so if it's already on, I can't turn it off, cool
you're in world partition
so it's just stuck like that
how do I get rid of this thing
world partition off sesame
don't think there's an automated conversion back from world partition. Make a new level, copy everything into it.
alright so we're going to attempt a new project plus migrating what we have
fortunately we're not in too deep and it's manageable
as I understand it
we should connect unreal to the repository and let unreal directly manage svn
and "open world" = world partition = ofpa which requires keeping a set of files for a level consistent, otherwise it's just an oldschool one asset level
is it possible to use ofpa without world partition as a separate option
I assume that's what this is
yes
and yes
that said: OFPA for "traditional" levels is considered experimental. It's an option, but there can be odd edgecases.
Starting an entirely new project because you're having trouble figuring out OFPA on a map is quite a knee jerk
oh welp this convo took place like a whole year ago
I'm not quite sure where to put this, so please redirect me if necessary.
I've been using Unreal for a couple years and never encountered this problem: after making a duplicate map, changes in the duplicate are reflected in the original!
I'm using 5.1.1
Upon further testing, changes in level blueprint are reflected, but not blueprints
I'm the sole programmer on my project, and nobody else really uses Visual Studio. I presume that I should be including the Binaries folder in the project, correct?
by default you ignore ALL temporary products and build products. binaries are build products.
you only start overriding this logic when you discover a need to
Any idea how to reduce the number of time UE connect to source control? I have to create tens of IAC for a project, and having to wait for 2-3s each time I create or rename one is killing me.
can you diff Blueprint with git?
So will need to use Unreal Editor to merge with specific branch?
wait it supports perforce only? @late thicket
Authentic?
i did saw text version while trying to get it working with perforce...
dunno if we'll ever see it or atleast some sorta intermediary generated text for diff purpose only
epic made it work one way and said "ok that's good enough, abandon it"
Every copy and paste action in the editor for any uobject based class is likely to just be a text based thing.
As in the same object notation.
For a small 3 person team, is the free version of Perforce worth using? or would it probably be better to just run it with GIT/SVN/Plastic
I would say file locking is imperative for any team size > 1
But that is perhaps a bit extreme, it can be managed with good communication
But the potential for lost work is terrifying 😭
everyone's opinion is different, and every team's needs can be different too. a team of 3 generalists might have more trouble avoiding each other than a team which is expressly a coder, an artist, and an ideas guy. you will have to forge your own path and find what you guys like
Hi guys
Does anyone uses Azure DevOps?
I'm using it with my team, but anytime I try to push some files tracked by lfs, i get the same error:
batch request: unexpected end of JSON inputB/s
It could be a misconfiguration or it's an error on Azure DevOps?
yeah but ssh is faster and more secure then https
temporary I opened a ticket to Microsoft and I installed Perforce on my server
I have 2TB configured in RAID2, to I have a lot of space available now..
ah
sorry
my bad
I already use SSH
Maybe others will but I don't understand, can you elaborate what problem you're hoping to solve? Duplicate files?
When you add files to the stage area, they get copied to the .git folder (git/lfs/objects...). Dealing with text files is not a big deal, just a few KB/MB. However, things get tricky with binary files, especially larger ones like 10GB or 20GB. After a git add, you end up with double the space on your disk. Sure, you can run "git lfs prune --force" after a "git push" to clean up, but it feels a bit off having to copy, say, 10GB just to push and then promptly delete those copies (not great for your disk's lifespan).
It's almost comicall; if there's little space on the disk, you may find that you won't be able to push the changes because there isn't enough space for the extra gigabytes of copies
I realize that this is the nature of Git, a distributed version control system. However, when working with binary files, there is a lack of 'centralization' in directly uploading to the LFS server without creating local copies
https://github.com/git-lfs/git-lfs/discussions/5576#discussioncomment-7696534
Is there a way to change (or manually refresh) the timeout for requiring a password to be entered for Perforce? I'm trying to setup some macro stuff that involves loading everything (including Perforce) but I need to plan for that case.
are you asking about the Group settings for session/ticket timeout? accessible somewhere in P4Admin users panel?
That's probably it, I'll check there, thanks
y
# Auto detect text files and perform LF normalization
* text=auto
# Unreal Engine file types.
*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
# Raw Content file types.
*.fbx filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.xcf filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
# Anything in `/RawContent` dir.
/RawContent/**/* filter=lfs diff=lfs merge=lfs -text
it's definitely not faster, especially with LFS
and i don't know about more secure, unless you consider an SSH key more secure than a credential
Is there any reason why I shouldn't use GitHub for backups of my project files?
I mean e.g. for the "raw" textures, PNG files and so on.
I am starting a new project with Perforce as SC, in which I want to have MyProjectDepo/Engine/ and MyProjectDepo/Project/
Sanity check, does it make sense to have Engine end Project in the same depo (The whole depo is just for that project).
Does anyone have a tutorial or a blog post about automating the process to recompile binaries if code is updated? (for both project and engine)
If you have multiple parts of your project, e.g. some PHP files on a web server and the UE project, would you make two repositorys for them on GitHub or store them in one?
seemingly randomly ive been getting these Git Credential Manager prompts every 10 seconds or so, sometimes more frequently. i dont use Git Credential Manager and no matter how many times i close these popups they keep coming back and they only pop up when the editor is open. is there any way to stop these popping up?
ye using git+lfs
i cant use ssh because my git server is behind a proxy running in a docker container... its a whole thing
ok but even if i put in my username and password it just comes back
so it turns out it was because i restarted the git server so my session was closed and i cant login with my password because of 2fa so i needed to use my token. logged in through gitfork and not GCM and its all working now
I will be editing engine source code and want to keep track of it using perforce. (Aka I want to push engine to my perforce).
Other than using .gitignore (https://github.com/EpicGames/UnrealEngine/blob/release/.gitignore) as .p4ignore, any tips before I push it?
silly question but what's the git command to actually revert an asset from a pushed commit?
I tried git revert with the commit ID but I got an unlink of file failed error
Oh I thought I’d closed that bp but maybe I needed to close the engine
Merge commits?
Im not in a team
Oh
So what should I use when I want to revert from repo?
Oh alright.
Well I had committed and pushed and then needed to undo
Basically I was committing each step I completed, pushed to repo and then I messed something up and wanted to basically revert my local file to that last commit
Yeah ik bad terminology
Idk the right word
Yeah
well I hadn’t saved the new changes
But it wouldn’t let me undo cause 
So I was trying to go back in time
I attempted to, but it failed
Sorry, it’s late, brain slow. 😅
To clarify, I wanted to restore a file to a previous version, that was now pushed to the repo. I know how to discard a commit before pushing it, just didn’t know what to do once it’s published to bring the local file back to that state
The latter, sorry
I’m using VSCode (for source control only)
Ah gotcha. I didn’t quite understand what checkout did until now, ty
Makes sense
Oh nice. But abc123 is stand-in for the commit ID/ hash?
Oh ok so if I do git checkout HEAD^ - - file path that would pull the previous commit?
Oh neat
Ik, just avoiding discord formatting, didn’t feel like ```
No, yeah ik that syntax
I was just trying not to show it as —
Cause that’s what discord does lol
I’m on iOS rn
Ty for the git lesson
Im having an issue where movefile is struggling to move a .tmp file in a multiuser session with perforce. This only happens on a specific computer. This became suddenly a problem (after working for months) and reinstall of perforce + unreal engine did not resolve the issue. I've also deleted saved + intermediate without any luck.
Hey guys, starting to test UE5 with P4V and I've a issue to push a level in Unreal Engine 5.3 with Perfoce.
for example : when I push a level from home, I've a empty level at work ...
Don't understand what exactly happen 🤔
Have you imported a lot of new assets into the content folder? Make sure that you right click content folder in the visual client and mark for add
Is there anyway to get a more extensive log from the logfilemanager? Movefile was unable doesnt tell me anything, now that i've tried everything almost im clueless
I have a second computer which work perfectly on the multiuser session with perforce, and the computer with this issue can run the editor and check out files fine outside the multiuser session
I figured a solution, but not why this happened. The solution was to duplicate the project and push it to perforce. This way its a "new" project. There are some files (temp files) somewhere on the computer i cannot seem to locate which causes this issue.
I found a way, I need to add and submit everything are in the level to get them
But I'm pretty sure, it wasn't like that in the 4.27, or maybe I missed something to have the same thing automatically in 5.3 @late thicket @crisp widget
In the 4.27, I just needed to add the .umap, and P4V did the rest. How can I do that in the 5.3 ( with the same simplicity I mean )
Ive never done it that way, always when adding multiple new things on import, you need to do an save all, if you are migrating you have to right click content and mark for add. Atleast thats what i have been doing for years
same thing than you in the 4.27
In my opinion, I missed something in the UE5 configuration, or in the creation of the depot in P4V ...
Im using 5.2
or maybe a bad first add, fixed when I added all ...
If it was a migrate, then assets will stay locally with a question mark
otherwise import should have a * save icon on it, save all marks them for add
World partition as ive understood it
but you can still work with sub-levels right ?
I don't succeed to find it in the 5.3 :
I take a look to :
https://www.youtube.com/watch?v=z1huVK_hyfY&ab_channel=Anchorpoint
In this video we take a look at the world partitioning and revision control improvements in Unreal Engine 5.3. We will take a look at the benefits of using it and how one file per actor works. This allows us to work with multiple people on the same plane at the same time.
We use Anchorpoint for revision control, but the features explained in th...
I bet that this was experimental only in early versions of UE5 but is now production ready, so the config flag disappeared.
Hello everyone. I am having a big issue with Perforce and JB Rider on Linux :
- Everything works perfectly well in Unreal Engine
- In Rider I cannot connect, outputting an error when doing "Test Connection"
- I have a folder with a .p4enviro file. Then inside that folder I have different Workspaces and eahc one has its own .p4config file
- When I do echo $P4PORT I have the correct value, when I do 'p4 info' in server address I have server lcal address, like 10.1.1.x and not a public IP or the domain name I used
- I delete the .idea, .vscode, .code-workspace files... and regenerated them
my softwares are all updated
and inside RIder it's still trying to find an older username for an old perforce server
doesn't exist.
ok well... Rider just ocnnected itself out of nowhere, I haven't even restarted it... just in case something I changed is that I used the full path in source control settings :
anyone having similar issue while running setup.bat?
Just a quick question to anyone knowledgeable about Git;
Is Git LFS the most straightforward way to get past the 100mb file size limit?
The issue in this particular project is that the metahuman files are too large, unless there's another workaround for that.
@late thicket Interesting. I have very little experience with this stuff myself and am only asking around on behalf of someone else.
When I briefly looked up LFS it, at least at a glance, appeared to be open source and free. So I guess that's not the case then.
Ah, I'm beginning to understand the issue now.
I think it is Hub, yeah.
double checks
Spot on.
@late thicket I've been told by a few other people just now that metahuman data shouldn't really be kept on repo, but stored elsewhere.
Is this how it would generally be done?
Can't blame you. I have zero interest in it myself, but projects use them, and as an animator I'm gonna have to get my hands dirty....
Hi, we have recently installed FMOD plugin in Unreal Engine 5.3.1. In order to make it work in other computers, we were forced to upload the Binaries plugin's folder (after allow it in the gitignore). Now everytime we open the proyect, the source control detects changes in the FMOD Binaries, besides all these files aren't allowed in the gitignore. I can't understand what is happening but is annoying. I tried some new rules in the gitignore, but nothing is working, these bastards always appear after opening the proyect:
As a purely solo amateur, is there a need for proper source control? My main concern at the moment is just creating a back-up that I can go back to if something catastrophic happens to the project.
Would that be as simple as saving the entire project folder on a seperate harddrive after every work session? At the very least I want a quick backup if possible before I decide on what host to use for git etc.
I worked on a game for about 9 months without any source control, then I learned it. There were 2-3 times where a tool like source control would have been saved me some time, but it wasn't really necessary. Though it's a nice tool. For backups of the project, for the rare times where you need to look into older code and for a general better feeling of safety. Learning GitHub only takes about a day, so I would say it's worth a try. And if you decide for a programming career someday, you get extra points in the application for using source control.
I think it's certainly something I will get round to learning but I also kind of don't want to halt progress on my game while I decide what the best option would be for my needs. Is copying the project folder enough to make sure I can revive my project if my hard drive melted tomorrow?
Yes, everything you need is in the project's folder, except for plugins that are only installed in the engine's plugins folder. But if your hard drives melts down, you could simply reinstall them. So a backup of the project's folder should be enough.
Thanks.
Not sure if I am being dumb right now. Using GIT
I have a problem with an asset in my project and tried to checkout to a previous commit. Thing is, plugins have been enabled and .ini files edited which will not change back to the previous state and there will be ton of complaints when trying to open the project.
So how to I actually get the project directory to the exactly same state that it had at the commit I am checking out (tried restore . revert and whatnot but am not getting to it)
This may be slightly off topic, but it's related to source control. When I worked in Unity, I used git as my source control and that also worked well as a way for me to share my projects when I would apply for jobs. Now that I'm using UE, I setup a linux server and started using Perforce. It's been great so far, but I no longer have github as an easy link to share what I've been working on. Does anyone using Perforce have any suggestions as to a simple solution? Obviously, I can always create a portfolio website and thats not a bad idea, but I liked that github could show the consistency of how often I was committing work, shows that I am using good source control practices, gives an easy way to view all of my code, etc.
its release 5.3.2 is that old?
You can still use github to share you work, just initialize your project with Git and push to Github
even if it's just a snapshot it's doable, provided you don't have any asset bigger than 100MB, and that the whole project is not in the many GB size
I had issues when I first tried pushing projects to github. it seemed like not everything was getting committed, but maybe I had my gitignore setup incorrectly. I just found one online to try to use so maybe I should try again. Thanks!
You can just use the In-Engine old Git beta plugin I contributed and it will create a starting point .gitignore
Should be fine if you don't need to commit any binaries, but if you want you can then edit it to also add the Binaries
how do people keep Unreal engine and custom changes with perforce?
Is there more context for this? For the most part it's just the same as all other code/content where it's checked into perforce and modified in the same way as all the non-engine stuff. Deployment issues to non-engineers isn't really any different except you're possibly deploying more (engine exe/dlls) instead of just your plugins and project dlls. But that's a matter of scale and shouldn't matter if you're using an installed or custom engine.
like with a native build? because that's easy. always have a clean engine branch to merge engine upgrades from
To get started with perforce if i'm worried about data loss, I'd need a cloud account?
sorry this is what im struggling with
is the layout
do you use streams for the engine
or just depots
Well an engine stream or depot is something you integrate (ie. copy/merge) into your project's stream
We've got a stream for the engine which we import into the project stream.
(not that sswires's setup is wrong, it's not. just mentioning another possibility)
what do you mean by import
@pulsar parcel i mean how do you have you the stream laid out to handle merging
this is what i have so far, where Main is our working engine
but epic-pristine is not a merge up
its a copy
import is one of the stream definition options that allow you to map one stream into another without it physically residing there. So in perforce the game stream would only have game code, but when syncing to the stream you'd also sync the import stream.
As opposed to a copy where you'd see the copy of the engine source in perforce along side the game code.
But that's only if you want it setup that way. I can share more if you like when I get home and can screenshot some of my p4 setup (we've moved away from it at work for reasons that aren't great).
Looking at our streams here at work, the only difference is that we've made our Epic-Pristine a "release" stream instead of "development". That allows it to be a merge up to "Merge-Test". Our "Merge-Test" is then "development" like yours to do the merge-down/copy-up behavior with Main. Maybe that's an abuse of the release stream type, maybe not. It's not an internal release, but it is an Epic release.
yeah i did that
@silver token like this
import+ Engine/... //UnrealEngine/Main/Engine/...
import Templates/... //UnrealEngine/Main/Templates/...
import+ FeaturePacks/... //UnrealEngine/Main/FeaturePacks/...
import GenerateProjectFiles.bat //UnrealEngine/Main/GenerateProjectFiles.bat
import RunUAT.bat //UnrealEngine/Main/RunUAT.bat
import Default.uprojectdirs //UnrealEngine/Main/Default.uprojectdirs
import cpp.hint //UnrealEngine/Main/cpp.hint
import+ AresGame/Plugins/KaosPlugins/... //KaosPlugins/Main/...
import+ AresGame/Plugins/EpicPlugins/Audio/... //EpicPlugins/Audio/Main/...
import+ AresGame/Plugins/EpicPlugins/Gameplay/... //EpicPlugins/Gameplay/Main/...
import+ AresGame/Plugins/EpicPlugins/Utility/... //EpicPlugins/Utility/Main/...
import+ AresGame/Plugins/CommonPlugins/... //CommonPlugins/Main/...```
i keep a lot of the plugins in seperate depots
so they can be used across multiple projects
i use import+ to allow changes to the engine files, though not sure if thats good practice, but i hate having to fix plugins/change engine code in another workspace
Yeah, I do too. The multiple imports for the engine is a little weird to me, but I see what you're trying to do there and it shouldn't be a problem.
Is UnrealEngine your pristine? or your merged? it probably doesn't matter too much. That seems like a fine setup for the game stream
this is the Main (contains our changes)
Epic-Pristine is the pristine version
problem is, i want to copy from Pristine to Merge test
then merge main into Merge test
before copying back to main
but this does not seem doable
idea is merge test always starts with pristine
and we merge our changes into into it, fix them up
streams always confuse me slightly lol
You should be able to do what you want. You just need to move the little monitor to the stream that you want to work in. So when you're doing the copy-up from Engine Pristine, MergeTest would have the icon. After you've done the merge down, you'd move back to Main and do the copy-up from from MergeTest.
Is MergeTest supposed to be engine+engine customizations+game? or just engine+engine customizations?
just engine
Okay, let me get back to you. It'll be easier to screenshot my stream setup I've got at home than try to describe or draw it out (poorly).
You can have completely "unrelated" streams and merge them. Previously we had two depots, //engine-unreal and //projectname
The Unreal stream just got merged on top of the project
I would not recommend import(+)
The merge conflicts are the difference between your and Epic's changes whenever you upgrade
so you always have a copy of the engine
with the project
what if you have multiple projects
the use the same engine
Yes, that's what a native build is
thats a lot of merging
UnrealGameSync also expects that
Not really because modifications in the past have been project-specific
i mean UGS works with my current setup
not seeing any issues (regarding engine and pulling binaries)
You can import an engine stream into the project stream in such a way so that it's setup like a native project. You don't need them to be within the same stream to get that to work. For a while we had things separated out into their own streams and it worked just fine. We changed because of a snag when doing upgrades and folks got too antsy about investigating so just just collapsed it down, but it wasn't necessary.
Let me preface this by saying I'm not a perforce guru, maybe a little above average. I'm also somewhat new to streams, but this is what I have working that makes sense to me. There's one minor hiccup (the reason we changed at work that I'll get to later), but Ryan@Perforce seemed to think it was okay and I was able to find a reasonable workaround for that hiccup. I'm trying to have a setup that I think would work for a multi-project studio, even though at home I do my multi-projects with a foreign project setup instead of a native one (so they all share the same engine code). Also sorry for the massive text dump about to happen.
In this setup I've got the 5.2 and 5.3 streams which are the pristine engine source and release streams which are where my engine modifications are applied. So an engine upgrade consists of making a new stream, not applying the version update on top of an existing one. The theory here being that these streams are shared across multiple projects that when it's time to upgrade, there may be a project that is in lockdown for release and doesn't want to update quite yet. The thing missing from this diagram that I'd do in a studio would possibly be unique project releases for project specific engine changes that may or may not be merged up to be shared with the studio. After creating the pristine stream, I create the release stream (so now it's a copy of the pristine stream). Then I integrate CL's from previous release stream (Starfire.5.2 in this case) into the release stream for the new version (Starfire.5.3). Now I've got an upgraded engine version with my custom changes. This may or may not scale, I'm not sure. On the one hand, engine changes aren't something to be encouraged so the number should be small. But for a large team maybe there's enough to make this untenable. But over time the integrations consolidate. So 5 CL's in 5.2 become a single integration CL in 5.3. And that change plus 5.3 modifications become a single CL for 5.4. The biggest downside here is that anyone that is syncing after an engine update has to do a full engine rebuild. An in-place upgrade may or may not require a full engine build. As a solo developer I don't find this to be a problem as I'd have to do a full build of the new pristine source anyway. I don't really think this is a downside for multiple developers either since, realistically, they'd be doing this overnight anyway.
Next there's the RiderLink and Starfire streams which are the same as your plugin streams for the same reason, to be shared across projects. I put RiderLink in it's own stream because it seemed like a good idea and because it has to be located in a specific directory and I wanted that specified in the import instead of in the perforce depot. I still need to work out how the plugins (those in Starfire) would deal with engine releases and lockdowns. I think each project would have a release stream of Starfire similar to what I described for the engine streams so at some point they could just not take updates from the studio-shared stream. But that assumes no one wants to go back in time and try to make a 5.1+plugins build of the game when latest is 5.10 or whatever. 🤷 For work we also had another plugins stream for third party plugins, like stuff from the marketplace or git. Starfire are plugins that I've written so I'm okay changing whatever but third party plugins should be treated more like how the engine stream is handled.
Mainline is then the project stream. It contains only game specific code/content. This is the working stream and imports an engine stream and the two plugin streams. The imports could be + or not. At home, as a solo developer, I go with +. At work I advocated for not. If you go with just "import", approved engine changes can still be submitted without needing a custom workspace if you're willing to just edit the stream definition to "import+" for long enough to submit the change and then change it back to "import". There are other Perforce tools available to restrict checkins if you do "import+" for everything anyway so maybe it's not important.
The two staging streams are used for engine upgrades. I don't really need them at home, but I was trying to replicate the hiccup from work so now I have them. In this Mainline stream, the engine import is changed to the new engine version and the Mainline-staging imports Starfire-staging stream instead of the Starfire stream. Changes are made here to get the engine building and tested that are only visible to those that are working in that stream. When that work/testing is done, the changes are copied up and the engine import for Mainline is updated to the new engine release stream.
The first hiccup being that with this setup, there's no way to be working in a workspace that P4V (the visual perforce client) allows you to do the copy-up for both/all staging branches at once. For some reason, even though the workspace for Mainline can see/write to Starfire (due to the import+) it won't let you do the stream copy unless you're in an actual workspace for Starfire. That's not really ideal and was a deal breaker at work as doing the copies up from staging as a single atomic checkin was paramount. And doing multiple checkin from multiple workspaces was really cumbersome. However, since then I've found that it's only a limitation of P4V and not Perforce. You can do the copy-up from the Mainline workspace using the command line. Since engine upgrades don't happen frequently enough I'm okay for that one step to require a few commandline inputs.
The other possible issue is that with this exact setup, you run into a case where you can't easily sync backwards in time beyond an engine upgrade since it involves a change to the stream definition and that's not version controlled. This is where sswires' copy setup is definitely superior, but I'm entirely sure it matters. Personally I usually only care about syncing the game backwards a bunch and the engine doesn't matter, but it becomes really dependent on the engine changes that happened like if older code uses functions that aren't there in the new engine version. I think there's a way to solve this and keep the stream setup mostly as shown but I haven't tried anything specific. My first guess would be that the project version of the engine wouldn't be a release stream, but would still be a separate stream from the engine, but I'd need to work out some details there.
So I've made the mode to perforce
and I have a fairly large project I want to set up with perforce
but when I do it gives me errors for like 7 assets
but it doesn't explain the error and this completely locks up perforce from doing anything
I validate the assets in unreal and they check out perfectly fine
these are just simeple animation montage assets
I upload them with unreal and visual studio closed
I can't for the life of me figure out what is hitching with perforce with these assets
they're pretty fundemental animations. I suppose I could replace them but I would really really rather not
I'm really struggling to find info on these errors
any basic suggestions to try first?
...post the errors?
You'll have to forgive me it will take a moment to get the errors back since i restarted perfroce a few times since
ah it's 9 now
9 errors reported open for read: G:\PerforceWorkspace\RPGProject\RPG_Tutorial 5.1\Saved\Cooked\Windows\RPG_Tutorial\Content\ThirdPerson\Blueprints\Characters\PlayerCharacter\PlayerCharacter\Animations\Attacks\Sword_And_Shield_Slash_7_.uexp: The system cannot find the path specified. open for read: G:\PerforceWorkspace\RPGProject\RPG_Tutorial 5.1\Saved\Cooked\Windows\RPG_Tutorial\Content\ThirdPerson\Blueprints\Characters\PlayerCharacter\PlayerCharacter\Animations\Attacks\Sword_And_Shield_Slash_8_.uexp: The system cannot find the path specified. open for read: G:\PerforceWorkspace\RPGProject\RPG_Tutorial 5.1\Saved\Cooked\Windows\RPG_Tutorial\Content\ThirdPerson\Blueprints\Characters\PlayerCharacter\PlayerCharacter\Animations\ExtraAnimations\Sheathing_Sword_Montage.uasset: The system cannot find the path specified. open for read: G:\PerforceWorkspace\RPGProject\RPG_Tutorial 5.1\Saved\Cooked\Windows\RPG_Tutorial\Content\ThirdPerson\Blueprints\Characters\PlayerCharacter\PlayerCharacter\Animations\ExtraAnimations\Sword_And_Shield_Idle_3_.uasset: The system cannot find the path specified.
open for read: G:\PerforceWorkspace\RPGProject\RPG_Tutorial 5.1\Saved\Cooked\Windows\RPG_Tutorial\Content\ThirdPerson\Blueprints\Characters\PlayerCharacter\PlayerCharacter\Animations\ExtraAnimations\Withdrawing_Sword_Montage.uexp: The system cannot find the path specified. mkdir: streamsdepot/mainline/rpgproject/rpg_tutorial 5.1/saved/cooked/windows/rpg_tutorial/content/thirdperson/blueprints/characters/playercharacter/playercharacter/animations/extraanimations/sheathing_sword_montage.uasset,d: The system cannot find the file specified. mkdir: streamsdepot/mainline/rpgproject/rpg_tutorial 5.1/saved/cooked/windows/rpg_tutorial/content/thirdperson/blueprints/characters/playercharacter/playercharacter/animations/extraanimations/sword_and_shield_idle_3_.uasset,d: The system cannot find the file specified. mkdir: streamsdepot/mainline/rpgproject/rpg_tutorial 5.1/saved/cooked/windows/rpg_tutorial/content/thirdperson/blueprints/characters/playercharacter/playercharacter/animations/extraanimations/withdrawing_sword_montage.uexp,d: The system cannot find the file specified. Submit aborted -- fix problems then use 'p4 submit -c 3'. Some file(s) could not be transferred from client.
seems like you deleted some files
you should not be commiting the Saved directory to perforce
ok so here's what i've done
i used the wizard to get the project
then I went to submit it the irst time
then those files errored out
the issue is you commited stuff to perforce that should not be in perforce
and I was stuck unable to do anything
yeah I'm aware
I can't figure out how to start clean
so you need to do some cleanup to fix it
first you need to mark the saved directory for delete
every time I try to delete the files I get the same errors
and remove it
it won't remove
ofc it will
you can edit your submit
thanks
and untick the broken files
submit what you have
then revert the new submit that gets created
hmm ok i'll try
then you need to delete the Saved directory from you repo
what does it mean in the output log when it says no files open
ah it always says that
well i'm confused because i never managed to commit anything
i just have all this junk I can't do anything with in the workspace
well, you added stuff
but i'll try what you said
to your submit
and those file got deleted after the fact
without updating perforce
hence perforce still sees them as submittable even though they do not exist in your directory
ok
yeah I realize that
i jumped the gun because I was mislead by a bad tutorial
I didn't think I was even at that point yet
but I was wrong
I have a lot of files and there seems to be a select match button but it never finds a match
do you have any advice for using that?
I can go on the discord and share my stream
in like fort fivus or something
thank you so much for helping me
this is like my first hour in perforce and i'm very lost
yeah that's ok we can go to silent study and i'll just stream my desktop to make it more clear
Maybe you're all sorted now but I would have suggested to skip all the gaff and just obliterate Saved from within P4A if you didn't get it sorted
(And any other files/folders that should have been ignored)
they didnt even commit
just needed to revert all changelists
changelists were in a bad state @woven sluice
how can i hide certain stuff from specific groups?
for example artists should not see code, but if i hide code for them, then they dont see the latest binaries in UGS
You shouldn't really hide this (with permissions anyway) since UGS fetches the history of the Source directory to determine which CLs contain code changes
UGS does have a sync filters feature though which can help
I am pushing my UE project (2.3GB) to git for the first time but I am encountering some weird errors.
if someone is willing to help here are the details:
https://forums.unrealengine.com/t/cant-push-2-2gb-project-on-git/1606663
I thank you in advance.
I am trying to push my project to git, I created a new repo but am unable to push my 2.2GB project into the repo. I tried to do it with the GUI which gave the following error: then I tried to push it through CLI and got the following error Administrator@HauntedPC MINGW64 /c/UnrealProjects/HauntedProject (master) $ git push --all -u Enumerat...
uh you version build artifacts?
I did a merge & resolve in perforce and accidentally selected the wrong resolve target, how can I back that out and re-resolve?
Thanks hojo but yes KaosSpectrum was really patient and helped me a lot last night.
so I have a question about stream. it asks for a file path when making a new workspace, I've googled it and it seems to be something to help with sourcecontrol but I really don't understand
my team mates suggested we keep it blank and the documentation says if it is blank it'll default to something
but if anyone can dirrect me to something to help me understand what this is I would be really grateful
also I have looked up how to change workspace names a few times and every time I do it says perforce has a simple option to right click and select rename ont he workscpae or no way to do it at all in some versions
that doesn't show up when I right click but I am using the latest version which implies there is a way to do it
it's not a big deal but the generic names are not very descriptive
maybe it's a setting I have to select somewhere as the administrator?
best if you show screenshots of the UI bits you're wondering about
Go to "Get Revision...", select the version or two back, and then get that versions contents.
i kind of thought the merge & resolve action billy's talking about might have been modifying his local uncommitted work? if so i think it would be gone?... not sure though :\
Have tried that, that's where i am now. Trying to merge again complains that the revisions are already integrated
I haven't lost anything 👍
🤘
this is what I mean by stream
leaving it blank doesn't seem to cause any issue perse but I have no clue what it is about
i'm trying to ask you what do you mean by "file path"
is your depot a streams depot or a classic depot? (do you know how to tell)
streams depots have two squiggly lines on them
oh it is streams then
classic depots just look like a few stacked discs
i have no idea where I would have chosen that sorry
my understanding is streams is a different version of versioncontrol with extra options?
you choose it when you first create teh depot, it's a "serious decision" ™️ as you can't really practically convert between the two
yeah, don't sweat it's confusing when you're new
thank you
are there major trade offs?
it seems to be working as I want with streams not sure what the browse option is looking for
streams are a little more powerful to administrate. classic are a little more dumb & simple
that was what the documentation made me think
when you click browse it should list streams that you can "subscribe" to, that this workspace should reflect
tbh i've never not used it for a streams depot
ah well I see now, it does have only one option
I beleive i read somewhere that it defaults if empty
so my wild assumption is that leaving it empty is the same as selecting the singular option
well you have a manual workspace mapping typed in in the bottom
mapping //depot/... to this workspace name
i guess it makes sense that would result in the same under-the-hood mapping as picking the stream from the nice UI
or does it...
yep I just foudn a way to confirm it
so leaving it blank defaults to mainline so it's the same as if I did pick it
that's a relief at least
I checked by going into the workspace I created without entering anything's information and it was the mainline 🙂
and so I take it that stream at change is the manual spot you were talking about?
at least I can tell my team with some confidence about that part of the UI next time
just ignore stream at change, i think that option is for some weird way to sync to old stuff
ok ok cool
thank you so much for the answers
I'm watching the linked tutorials and trying to read up on stuff but some skip right over this stuff haha
do you know anything about renaming workspaces?
it's not a big deal but I'd love to know how
oh heck yeah I found the dark mode 
Yeah I'll try that, but like it's just 2.2GB that's not big enough, many people would have done that many times in the past but I'm not getting it.
I don't get it, How?
No 😶
@woven sluice im on the epic p4, i set it to main (cause i want to pull a couple of plugin changes)
but its puttling Release-5.3
p4 fstat -Olhp //UE5/Release-5.3/Engine/Build/PerforceBuild.txt //UE5/Release-5.3/Engine/Build/CompileShadersTest.xml //UE5/Release-5.3/Engine/Build/InstalledEngineBuild.xml {10 more items}
sorry I'm not on epics p4, no experience
1 warning reported
//UE5/Main/...#head - file(s) not in client view.
but my workspace is on main stream
so odd
you know why it would say files not in client view
Definitely not off top of my head :/ usually that's from some mismatch of the mappings in my experience but I though that common user error issue usually goes away when just choosing a stream...
yeah
its very odd, ill just create a new workspace and nuke this one
but even so, its odd
now its pulling from Main
so odd, oh well, my workspace must have been borked
Isn't this the second weird "just reboot" error you've had in the last couple weeks
Lol
Can long paths be an issue with perforce not being able to rename or save assets?
Seems weird, but suddenly we had a problem after moving assets to a spesific folder. Its struggeling to save in both normal editor, and a multi-user session, where it says cant save in persisent sandbox mode
its only happening for a few assets
I'm unsure if this is an interaction between Github or Rider, but sometimes I'll delete things from the level, and the next time I load the game, they'll be there. Just makes me worried about corruption or a bad workflow somewhere?
sorry I didn't really know where to go Thanks
I have a stream 1 and a task stream 2 (copy to stream 1, merge from stream 1). I'm trying to make workspace views (workspace 1 and workspace 2) for these streams that exclude a particular folder in the depot. I edited the mapping in workspace 1 to exclude the folder, and this works well. However if I do the same in workspace 2 for the task stream, I also lose in my workspace the files that are in stream 1 but not in stream 2.
I've also tried to include all the files from stream 1 in my view for workspace 2, but then I get an error when reconciling File#1 isn't in revision table
(this is in P4V)
I had to ignore the folder in stream 2, now it works
I am using perforce and am setting up the .p4ignore file
should i be ignoring the *_BuiltData.uasset files and the Developers/ and Collections/ folders?
i'd also like some reasoning to see for myself if i should ignore for my own use cases.
what about the Developers/ and Collections/ folders?
Those are handy to check in to source control (at least for the asset types you'd normally checkin).
They allow cross-developer collaboration on experiments or prototypes and allow version control over content that might not be part of the final game.
Would anyone be a hero and shared .p4ignore that works for engine? I am converting the UE5/.gitignore but there are way too many exceptions where p4 interprets it differently.
and im guessing i should also include collections?
I'm not aware of any reason they shouldn't be included. We've never run into any problems having collections in perforce on our projects.
I'm pretty sure we do
alright i think that sets me up
if you're newish to perforce don't miss that you can (optionally!) set up p4 typemap, to limit the history of build product files.
making it a little less irksome to have them in source control at all
i have already done that lol
p4 triggers ass pain... https://www.perforce.com/manuals/p4sag/Content/P4SAG/scripting.triggers.variables.html claims that %stream% can send the stream name out in the trigger data, but it don't heckin' work
perforce doesn't try to fill it in, just passes it as %stream% lol
also asspain...
triggername //....cs "scriptA"
triggername //....h "scriptA"
triggername //....cpp "scriptA"
triggername //... "scriptB"```
you would *hope* that if you submit a non-code file it wouldn't match the first three and it would execute scriptB. but nope it only executes scriptA.
bleh
trigger1 //....cs "scriptA"
trigger1 //....h "scriptA"
trigger1 //....cpp "scriptA"
trigger2 //... "scriptB"
trigger2 -//....cs "scriptB"
trigger2 -//....h "scriptB"
trigger2 -//....cpp "scriptB"
this does that
In the UGS documentation Epic causally mentions *Any of our release streams with the naming convention //UE/Release-4.xx should be fine to copy from.*
Any idea where/how would one get an official release stream of UE into my perforce so I can copy files to my mainline?
Also it is mentioned in one of the Unreal Fest talks.
I found this in UDN
Your team may have been granted a single account on Epic’s Helix Core server from which you can download the Unreal Engine source code.
So you need to get access from Epic support I guess
Thank you kindly for checking UDN. I am guessing that without UDN there is no luck in reaching anyone from Epic regarding this access, right?
I don't think you need UDN access for that exactly. It's more like if you have UDN access, you already have the Epic contacts for getting perforce access.
But ultimately you shouldn't really need it. It makes some things easier, but you can still access it through the github, and commit that to your perforce depot.
Yeah, I'm not sure what the deal is here - certainly UDN access will make it almost certain you can get the access. I would hazard a guess that established companies with published titles would get access fast regardless of UDN deal or not, but indies with no 'clout' may struggle to get any support happening
Thanks for the clarification. I think I will stick with Github to sync with new releases but it is shame that even the info, that Perforce streams are behind a contact, is behind a UDN. I wasted quite a few hours just searching for these mysterious official streams. Maybe one day I will get UDN accesss 🙂
I repeat, there is no certainty that it is gated behind UDN : I am just saying that is a certain way to get it faster
I would just go with the github route. We haven't actually bothered with the Perforce route ourselves, since we only have a couple of small changes to source
Git is great for pure code projects anyhow
Fully understand that, I was saying that the information that one needs to request access to the stream is behind UDN.
True, but they could at least provide .p4ignore publicly. (which according to the docs is not in git source but is in p4 source)
if you know how perforce works it's pretty obvious that they can't just make it a publically accessible front like github.
For any of you using UEGitPlugin or PBSync, we are now on UE5 internally, which means we can start properly supporting it. We had some limited support for UE5 before, mostly from user reports and other assistance from the community but now we can focus on greatly enhancing our tools by taking full advantage of all the amazing technology introduced in UE5 and beyond. Hope to see this come to fruition over the next few months.
This error is happening suddenly while using multi-user and perforce
Did you commit saved to version control?
No, saved is only local on every computer that is connected
The same issue happens on some assets outside the sourcecontrol + MU session.
Just a normal editor session has trouble moving or saving certain files
Hi guys, I would like to use Perforce to help me to transfer UE WIP files from home to office and vice versa.
I found the shelves options and I think it is a good way to achieve this, but I am encountering some difficulties.
For example, let's say that I put files from my home on shelve to retrieve them from the office, the workspaces will be different, so I don't see the files from my office even if I have the same user.
So I was thinking of using "change ownership" to be able to do this, and it works : I can see shelve files
But I don't found how to take files shelved at the office, even if I can see them in P4V
Can you help me ?
remove the workspace filter
yes, it's like that I can see files to shelve when I change the ownership to select the workspace of the office
But how I can "get" the shelve file at work ?
with a unshelve ? 🤔
show the unshelve window because I don't have p4v in front of me
So that should work unless you're working in different streams (then you map the streams). what is shown to you when you attempt the unshelve action?
I've a error, try to create 10 times a file already exist
Ok works with a "new" file ( I mean with a file not added/submited yet )
now I need to test and make it works with files already versionned ( added/submitted ) ...
after several tries, it doesn't seem so simple...
I've still this kind of error ...
1 error reported rename: failed to rename D:\P4\*****\*****_UE4\Plugins\******_sandbox\Content\BP_TEST_SHELVE1.uasset after 10 attempts: Cannot create a file when that file already exists.
I think I made mistakes in the commands order, ex: I need to checkout file at the office ? without checkout I can't write and update the file ...
aaaaaaah ... maybe UE needs to be OFF !
it was that ^^
I'll make some other tests, but seems was that
Yes, I always shut down editor when I am doing p4/p4v stuff - it usually hangs otherwise
Hi, I'm using git+github desktop+azure devops for revision control, and I've already had one project set up successfully. However I'm trying to set up a new project now, but I'm running into issues I'm not sure how to solve. I made a git repo from the project folder, copy pasted the things from azure to git cmd, made the first commit, then im trying to push it, it uploads the entire thing (I can see my internet upload bandwith working) but at the end it gives me this error and nothing shows up in azure repo. Any idea what this might be? Thanks!
what a seemingly random thing to do :D I'll try it, thank you
oh yeah that worked. Okay then 😅
When using Perforce and the build in plugin, can I somehow access the current changelist number?
I assume via the ISourceControlModule and the ISourceControlProvider somehow?
What do you mean by “current changelist number”?
UGS updates that in the Build.version file when you sync to a change list, but other than that there’s not really a concept of “current”.
You’d have to examine every file in your workspace to determine the cl of the have revision and use the largest.
But even that is iffy since you could have skipped change lists with an individual file/cl sync (ie not syncing the workspace to latest).
this was mentioned in the other channel, not a source build
I suggested p4 changes -m1 #have
Does UGS only work for source builds? Somehow I never thought that was a restriction.
If that project would have the setup for it, I would just feed it the number in some build step on the build machine
UGS doesn't even work with Source Builds if you aren't also uploading the Build to your damn P4
UGS works with native source builds specifically
hey guys , i made a commit yesterday there were about 17 files changed and on of it that i removed .uroject accidently , and pushed that commit , can somehow leave 16 files with changes and remove .uporject deletion ?
it is off ((
or i got to checkout to this commit first ?
it says this
got it than u very much ❤️
Anyone here used "GitCentral" for Unreal? The plugin? I'm wondering if it is better than the built in git one? Since currently I'm using SourceTree, but if I can it would be nice to have it all in Unreal for simplicity.
seems a bit overkill, I think the only bad thing about the built-in one is that it isn't LFS-aware (at least on 4.27 which I'm presently stuck with)
I tried opening my project from my work computer today - using Perforce and never had this problem before but I get this message. I am using 5.3.2 on both pcs but it says the engine release is different, assuming this is a Source contgrol problem but not sure?
Tried reinstalling/updating my engine at this end, as far as I know it is up to date on the other side also
GitCentral is not like any regular Git client, in that it tries to replicate a Perforce workflow: it allows to sync, change, commit and push changes to specific files without syncing the full workspace.
The default git (beta) plugin in-engine is Git LFS 1.0 aware (which is what was available when I developed it back in 2014)
After that I also implemented some first support for LFS 2.0 Locks but it was performing very poorly since there was no easy way to maintain a permanent connection like Perforce & Plastic SCM do
Hmm - weirdly it works fine and is not corrupeted on my home version but my office version seems to be corrupted. have tried redownloading/resyncing the project but get the same result - what do you mean by sync binaries?
I know its absolutely not ideal but im running everything on a real budget. But would this work for a perforce server?
Slow is better than nonexistent right?
Perforce does have a hardware guide: https://portal.perforce.com/s/article/2957
Slow is better than non-existent, yes.
That gives me calculations. For something i dont really know a lot about. In the team im the "pay for everything and manager/marketer" not really good with code. My main question is really "will it run" how much it stuters is a question for later.
Its more idk how much space it will take and ram used, total asset space atm is 67gb, and theres 2 devs on the project. With "spare time" development level work being done, like 20 hours a week at most
Atm they are simply trading files on a google drive shared folder
Start with what you can afford and expand if needed
Main bottleneck will probably be disk space
Idk isnt it free for under a certain size and generally better?
"Better than google drive" is the task atm
Is there a time limit?
Anything i should be aware of with devops? Good stuff is very rarely truly free
And im out of my depth. Is it something bad that my devs couldn't likely find a solution to or is it more "special case" thing?
Ah. But from the guy managing things who isnt a coder at all perspective. I just pay for shit. They code it. And then get 60% of revenue....
Im dumbdumb at code like to a comedic degree. It doesnt mix in my brain very well. Im better at "we hit a wall financially, how do we get around it"
Actually ive upgraded that to 3MB/s from 0.3, so its still slow, but its not like pathetically slow anymore. Though when away from the 4g hotspot im stuck on my phone which gets 15KBs
Legally registered business saves me again
It make zip nadda income atm but its saved me in so many ways
I do have a new budget... my single $30/month patreon Fan.
Being a prolific worldbuilder has perks
Yes which is why i ask here first
I get other income but its not steady. Woodworking makes good money but takes a LOT of time and effort.
Get $600 but spent a month making it
Then wait 3 months for next order
I ran a perforce server for several years using that low spec machine. At most we had 10 devs polling at the same time (this was before the 5 user/20 workspace limitation) and it ran just fine. You can definitely go ahead with this
So I have this error in rider, I understand that the roots are not matching in perforce but I don't actually know where I would go to change that in perforce?
struggling to find the answers on google too, any links or if you know where to change this let me know, thank you
ah I'm thinking this is due to my team setting up our perforce incorrectly
this server is a nitrous oxide fueled dragster for perforce for ~5 people (i.e. staying in the free tier)
what laura said though; use whichever you/your team has any preference towards, git or perforce
if you host something off-site (e.g. by using azure devops) your other team members might be happier about first sync and any future large transfers though, if you're still on slow internet... that might be by far your most important consideration
yeah offsite is kinda required
How is that your team's fault?
Rider uses .p4config
Hello, does anyone know how the UE Editor determines what P4 config it should be using?
I have multiple projects, and one of them is trying to use a config of another project. I have a separate config for each project under their root directory, yet the first project it trying to access the second config anytime I select "Use P4 Config" in UE's "Revision Control Login" window.
Following for more info
https://forums.unrealengine.com/t/editor-p4config/1585856
It appears that the Revision Control setting for Perforce to Use P4 Config doesn’t actually read the config file. I have my environment variable P4CONFIG=.p4config. When I open Revision Control in the editor and check this box it uses defaults like my computer username, computer name as the workspace and perforce:1666 as the server even though ...
It's not the same thing. They're saying that it's not working, while it does for me, but with some valid credentials that are used for another project
For me, things work when I have a config path set explicitly
Using a generic filename in root seems to be how it should work
How do you set up the config path? What's the generic filename? .p4config.txt?
you can see your current settings by doing
p4 set
let's see how was the set
p4 set P4CONFIG=p4config
Mine is set to .p4config.txt
the naming is completely free
Yeah, I get it
it can be a path, or it can be like .blabla
btw, another useful command to see your setup:
p4 info
It shows the config that is used for the other project, even though I'm under C:\Users\Name. Is it possible that I somehow setup it to be the global one? I recall making it so that it would read the config from the directory the commands are run from
Give it a fixed path for now I guess
it's not the optimal solution but it might be ok for now
p4 set P4CONFIG=<yourpathtoconf> should be global I believe
It's not going to be, as I work on both projects simultaneously. It's going to cause the same issue on the other project
I see I see
I'm sure this must be solved, can't be something that would have gone unnoticed for years
I might have done something to make config for the other project global. However, P4CONFIG is set to .p4config.txt, it doesn't have anything else. Is there some other variable that affects the config path?
yes, it's good to make sure your p4config file has correct p4client
It shouldn't matter since the identified config is wrong
hmm
It's been a while since I set these up on our builders, and there we have a generic
P4CONFIG=.p4config
and it seems to work ok
Yeah, but, as you said, the naming is free. However, I'll give it a try, maybe Unreal Editor hardcodes it rather than read the variable, that would be extremely weird, but it's worth a shot
Nope, nothing changed
Also, removing the config for the other project doesn't seem to affect p4 info in any way 🤔
As it turns out my p4user, p4client, p4port were set accordingly to the second project. Setting them to nothing makes "Use P4 Config" work exactly the same way as in the forum thread
also worth considering if you update environment variables then you'd have to restart the editor
env vars don't magically propagate when you update them
Are you sure? These variables got updated to me. In fact, without even closing the "Revision Control Login" window it changed the data read by enabling "Use P4 Config". I do understand that some variables are run on launch, but it doesn't seem to be the case
environment variables are used from when the executable launched
But how would you explain my statement?
"by enabling "Use P4 Config" might refresh them
i made an initial comit of my project in git.
im stuck
how do i load it up in github desktop? Am i supposted to do that?
i mean rn i should be able to just do commits and push/pulls
(well its a solo project so just pushes)
I'm not sure why you'd use GitHub Desktop, the WOATed Git GUI client
SourceTree is acceptable, Fork is better
it should show up in Github Desktop Automatically if it is connected to your github account
Hello, I have questions regarding Git + Azure DevOps
- How much storage do you get with Azure Repos? Some people on Discord have said unlimited but this document says otherwise: https://learn.microsoft.com/en-us/azure/devops/repos/git/limits?view=azure-devops
- Should I use Git LFS? Some people on Discord have said no unless maybe for file locking
Also for Git LFS this document says the file size limit limit is 50 GB: https://learn.microsoft.com/en-us/azure/devops/repos/git/manage-large-files?view=azure-devops
Thank you for the reply
Any fixes for this?
error: remote unpack failed: error TF402462: This push was rejected because its size is greater than the 5120 MB limit for pushes in this repository. Learn more at https://aka.ms/gitlimit
I tried using Git LFS but I got the same error and I'm not migrating repositories
Idk I might look at it tomorrow
If I shouldn’t be using Git LFS, does that mean there aren’t any issues regarding pushing larger files to a repo (Like game assets) with just Git + Azure DevOps? How do I push files larger than 5GB without Git LFS? I don’t know much about version control but if I could establish a workflow (E.g. Git + Azure DevOps for cloud storage, then Git terminal / Visual Studio Git) then I could learn from there. Is there anything else I should know about?
How do I push files larger than 5GB without Git LFS?
¯_(ツ)_/¯ but anyway, without lfs, the limit of the entire repo is 250 gb
https://learn.microsoft.com/en-us/azure/devops/repos/git/limits?view=azure-devops#repository-size
git gui https://fork.dev/
git book https://book.git-scm.com/book/en/v2
Thank you for the info
mygamelaunch.zip
Yeah I also wanted to see if Azure Repos could be used as a free cloud storage option for just random files on my HDD
Also would you mind explaining why you shouldn’t use Git LFS unless maybe for file locking?
#programmer-hangout message start reading here
Thank you very much, appreciate it
Is there a Plastic command that will remove a folder I should never have versioned in the first place from the entire history?
obliterate was only available in previous very old version of Plastic SCM
you can use either the purge command, or alternatively the archive command
- the first one is to permanently delete some revisions, but it will try to do it safely and won't allow to remove some stuff needed by other branch
- the second one can be use to remove revisions and save them on an offline archive disk; it has less safety so it's more powerful in the end https://forum.plasticscm.com/topic/23693-how-to-free-up-space/
I have not tested it myself to remove entire folders from the history: It could be helpful to ask support directly, some of them are expert users!
purge is quite new https://www.plasticscm.com/download/releasenotes/11.0.16.8060 but should be very well supported!
for references;
Thanks for the links @reef oriole.
So my team and I made a primary development stream and then made several smaller streams for the specific things each of us is working on.
I'm able to commit my changes to the stream I'm working on and it is a child of the development stream but the team and I can't quite figure out how to commit/move the changes into the top dev stream
merge sees nothing and copy says it does something but it doesn't actually when we check the files.
maybe we're missing something? or does it need some more set up?
ok it looks like we found a way after some tinkering, we opened the stream graph and maerged down and copied up from there and it seems to have worked.
I have perforce setup on an AWS server.
I am unable to connect about 25% of the time. Does anybody else have these issues? It is beyond frustrating!
I would try to see if you can locate some logs which might shed light on why that would be
I don't know why I didn't think to do that lol. Silly me. I'll poke around there and do some research, and if I can't figure it out I'll return.
Hey, everyone. I may conduct an interview with the developers of Diversion, a new version control system that just launched and purports to be great for game development. If you have any questions you think I should ask, please let me know.
I have evaluated it myself with Unreal and think it has a long way to go, but I would like to hear from others.
yeah, not sure I would really trust a brand new player in the VCS market. it's software you're entrusting with your entire project and its history afterall
the website doesn't really fill me with confidence, but it's a little bare of details. I couldn't come up with questions right now cause of how vague it is.
Or maybe I'm just institutionalized by perforce after all these years and can't see any source control clearly except through that lens.
I also don't see how you get major studios on board without a self hosting option. They're not going to want to store proprietary/NDA'd stuff on someone else's server, which is all "the cloud" is.
yeah I didn't like that website much. their UI looks reminds me of github desktop (lol), still talking about the cloud as this mysterious thing in CurrentYear, support link is a discord invite, docs are exceptionally thin
it talks about git compatibilty in a lot of places so... is it just git with more competently implemented locks?
well, something + cloud = $$$, right? Add cloud and that makes you a disruptor, right?
so the vibe I'm getting is that this is just git with a custom backend to make things like locks work, and all the "scary" details are abstracted away from you
don't forget, to get people to store stuff on their servers so that they can probably do "AI" things with it while you're not looking
Hi I deleted a username and made a new one but keep getting this error on Perforce. A new workspace was made and build redownloaded. Any ideas what could cause it? Thanks!
Super interesting and certainly a problem that I'd love to see solved well.
I'd be interested in learning about:
- Their open-source plans.
- What happens to the repo if they go out of business
- Pricing for > 1TB of data
- If self-hosting is an option they plan to offer and what the structure would be
yeah.... I love not truly owning my business critical data
well if ubisoft says we can't own our games, maybe they shouldn't own the data they used to make it. an ouroboros of no-one actually owning anything!
Gotta love the TOS
- Therefore, by posting Content using Service you grant us the right and license to use, modify, publicly perform, publicly display, reproduce, and distribute such Content on and through Service.
- The Services are not intended to be used as storage, backup or archiving services. It is your responsibility to back up your Content and you are responsible for any lost or unrecoverable Content.
- standard liability waiver (NEITHER COMPANY NOR ANY PERSON ASSOCIATED WITH COMPANY MAKES ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY, RELIABILITY, QUALITY, ACCURACY, OR AVAILABILITY OF THE SERVICES.)
- We may terminate or suspend your Account and bar access to Service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever and without limitation, including but not limited to a breach of the Agreements.
- We reserve the right to withdraw or amend our Service, and any service or material we provide via Service, in our sole discretion without notice.
jesus christ. why would anyone use this under those terms?
"The Services are not intended to be used as storage, backup or archiving services" what the fuck is it then
for most studios, I can't imagine this getting past a legal review
that might change if there were self-hosting options
yeah, maybe
Hello, 👋
I have a question about sharing .INI files via revision control. Is it possible to sync colour themes through Perforce? It would be great if all the artists had the same, synced colour palette to choose from.
I tried moving /Saved/Editor/Config/EditorPerProjectUserSettings.ini to /[Root]/Config and adding it to the depot but that didn't seem to work. 🤔
Any advice would be appreciated.
Cheers.
look at your IP, very carefully
The ini's that are in Saved/ are always generated locally from the Base and Default ini's.
Through ini's you can, at best, set the default value for something but, especially for user settings, there's no way to make sure they keep them.
Step 1) Create (if needed) and open DefaultEditorPerProjectUserSettings.ini in /Root/Config
Step 2) Copy the value from the Saved/ ini that you want to be everyone's default into the /Root/Config version
Step 3) Submit to perforce
Step 4) Get everyone to delete that entry from their Saved/ ini or get them to delete the whole thing
I recently did this to get everyone into the right settings for LiveCoding to hopefully prevent some repeat blueprint corruption
Thanks a lot for the detailed explanation. 🙂
I’ll give this a shot.
It should be pretty easy to test locally since you just delete your values in the Saved/ ini and you should see the settings from the Default when you start up your Editor
I guess Unreal looks for settings like this in /Root/Config first before moving onto /Saved/Editor/Config?
I'm not sure the order that it looks, only that Saved takes priority over Default. The Defaults are used to build up the Saved when they don't exist and then it just uses Saved from then on (or until you delete them)
Yeah, and Unreal will never write to the Source Controlled file in /Root/Config. Any time we need to update, we have to manually copy it all around again, eh?
It depends on the config. Probably not for user settings but there are plenty of the Project Settings that have a prompt at the top telling you that you can (or that it has) checked out the default ini.
This is where the "Config" and "DefaultConfig" class and property markup come into play.
As well as what actually types are marked up for config values.
Thanks again for the info. We were able to copy our palettes around the team this way. 🙂
should have just made a plugin that crashes the editor immediately if live coding is disabled!
dang that might be worth something on the marketplace...
hold my beer
Just a normal day with OFPA
wonder how i can get my perforce server to go
... i just ran speedtest on it and it does 300 down / 250 up, but i've never been able to get it to exceed 100/100 when i submit or pull from perforce (with parallel sync on with some random settings that seemed like they might make enough sense). or maybe this is just all that a little 1 cpu VPS can do.
There's a lot to consider. You could roughly profile the CPU and Memory usage while syncing/submitting to see if there's a bottleneck. Disk speed is v important too.
Can compress transfers for better bandwidth usage, but higher CPU/Mem cost both on client and server.
If it's network bound then parallel sync/submit can help. Can also improve TCPIP performance with server vars like net.tcpsize
This article has a few things you can try: https://articles.assembla.com/en/articles/1804524-speed-up-your-perforce-repo-with-p4v
net.autotune also can supposedly help, but we had to disable it as it caused some sync issues with linux server and some of our windows clients. (this was a few years back maybe things have improved on the Windows side now).
Ok, so moving a workspace from one drive to another actually means downloading everything rather than copying between drives
no it doesn't?
if it's a like-for-like copy, move the workspace first, then edit the workspace in p4v to point to the new location
Oh, I followed a different method
I edited a workspace to change its root, then P4V prompted me if I wanted to copy the content to the new location
oh yeah, don't do it. do it in that order and when P4V prompts you just don't do it
And now it's downloading everything from the server rather than the old location
I just googled it and followed the first stackoverflow result 😅
There's the P4V way, and there's the better way apparently
always, but I'm surprised it didn't just do a file system copy, but there ya go
because the method I mentioned shouldn't actually touch anything on the server
other than maybe the workspace record, but it shouldn't change the have list
There's a lot of stuff that's surprising with P4
Though I did manage to succesfully migrate our server so that's something
where can i see if i got source control
You should know if you have source control. you have to set it up on your own. source control itself doesn't come with the engine.
is there any way to see your previus save project?
ANY WAY
if you don't have source control and you didn't save a previous version somewhere else, no not really.
You might have some auto backup saves for specific assets but not for your project as a whole.
So I've got Git in Rider
And Git in UE Editor
How do I streamline this
Seems like they only see the things relevant to themselves? or maybe I have to tweak some settings to manage from only one place
I tend to use the versioncontrol client for most stuff, only checkouts and diff when needed in unreal / ide
Thank you for your input, and thank you @pulsar parcel and @silver token for sharing your perspectives.
I got a git related issue (I think?) when I try to build my project
have anyone encountered something like this?
important thing - I got this after porting my project from UE 5.0 to 5.3
What files from Engine/ should I version control/push to Perforce?
With a source build?
I git pull the engine source, because I don't have access to the Epic's Perforce streams. The question is about crafting p4ignore, which I am still a bit confused about. What exactly do I need to include to make stuff like UGS work.
Should I include everything that is in the Github repo and nothing else? (aka, before I run Setup.bat/sh)
With UGS, it's everything but build products
The p4ignore doesn't differ much iirc. Usual rules like no Binaries, Intermediate, Saved, etc
Thanks, how about the stuff that is in Binaries/ by default?
https://github.com/EpicGames/UnrealEngine/tree/release/Engine/Binaries/DotNET
My apologies, that still doesn't make sense to me. Why would I need to put dependencies downloaded in the Setup.bat stage into perforce for UGS?
- Artists get precompiled binaries
- Programmers run the Setup.bat -> GenerateProjectFiles -> Compile UE5 anyways, don't they?
Think about it as being the state immediately after running Setup.bat
That's pretty much what you get from Epic P4
So I'm having a strange issue
I have two perforce connections I use regularly
usually they are fine but today rider is connecting to the wrong connection and the wrong workspace
I'm not sure how to manually force it to connect to the correct workspace
or why it changes
Oh cool, I didn't know that Epic's P4 includes all of the dependencies you normally download externally.
What do you think would be a difference between pushing the state "before Setup.bat" and "after Setup.bat" aka without or with dependencies? Why would UGS need them? (Sorry for all the questions, just trying to understand the flow)
The binary dependencies you get from running Setup.bat are required to build/run the engine
Maybe check P4CLIENT variable? It could be taking it from there
But UGS doesn't build the binaries by itself and programmers run Setup.bat and compile the source anyways?
Is it just only to skip having programmers run Setup.bat?
um where would I look for that variable?
It's to skip literally everyone running Setup.bat
I've always had a clean engine in P4, so the process has usually been updating the git checkout, running Setup.bat and then reconciling
Then the clean engine gets copied (first time) or merged (every other time) to the project stream
Gotcha, sorry I always assumed that Installed Build (distributed to artists) doesn't need the dependencies from Setup.bat.
Thanks for the patience with me
p4 set P4CLIENT
Try executing this in command line
It should print the current P4CLIENT
ok it looks like it printed the correct path
in rider it says those values are not set though
"use environment values
P4CONFIG environment values are not set"
I think this is the issue?
if you use p4config then P4CONFIG will need to be set to the filename you'll use for your p4config
it's just a text file
each line is just the environment variable (eg. P4CLIENT) and its value
it's not particularly hard to make a text file with P4CLIENT=my_workspace_name
this is just new to me idk what it looks like
is it just p4config.txt then I put that code in?
yes if P4CONFIG is set to p4config.txt
and you may have to restart your IDE after setting P4CONFIG if you haven't already
ok
so I'll just make that file then use "set p4congif" and then put int he files name
Environment variable P4CONFIG P4CONFIG.txt not defined
maybe i need to do something different to set it?
if anyone has an article to share on this i'd appreciate it a lot
here is an example p4 config
P4HOST=xxxx/yyyy
P4USER=myname
P4CHARSET=utf8
P4CLIENT=myworkspace```
after you have set it, try these commands
p4 set```
while in your workspace root to see that everything looks good
ok so actually
now it looks like maybe I do have one set already?
when I put in p4 set it spat out a list like the one you showed already set with all my info
now i'm wondering why rider can't see that then
damn yeah rider always says no config file
then paths to the wrong perforce workspace
and I really am lost how to fix this
i didn't read the convo too carefully but... ignore using p4 set for setting up your work machine on windows, it's dumb. just go edit your environment variables. make sure the only P4_______ one you have is P4CONFIG
then all you have to do is have that file in the root folder of each project, set up e.g. like Karma's example
in Rider, Settings, Version Control, Perforce, config settings "Use environment values"
and Rider, Settings, Version Control, Directory Mappings, add the same project root folder set as Perforce
look at me blurring everything out but still leaving my username blatantly obviously at the top (oh well, i was only really blurring it out to highlight the one important line)
oh just saw this
sorry if this is a noob question but how do I reach that window you're showing me?
Type environment variables from the start menu
aaaaah
it's not in p4v
thank you
hmm but I don't see a p4config one
so maybe it doesn't exist?
I guess I'll just make a new one and conncet it to my P4config txt?
so it's asking me for a path, but if I have it in the rootfolder of each project that'll be a different path so do I just not put a path and just put the name like in your image example above?
I'm suprised it takes so much to just have two different projects
@woven sluice
you can delete that pic now I think
but i'm still lost on this
ok this might be worse now? I think I followed the instructions correctly and the error is a bit different now
now it can't find the config file for my workspace or perforce but it does say config file names used with the correct config file name
ah wait I think i misunderstood a step
ah ok
so I put them in both roots
it does seem like it has the right workspace now but there's still an error
so it does know about both config files but it's saying my client root is wrong because one is my workspace folder on one drive and the other is in the perforce folder on the other drive
so you've got a p4config.txt or whatever you set the environment variable to in the root folder for all your projects, and inside of it you've got all the perforce variables filled out, and it is connecting to the server at least but erroring on other variables?
yes i think so
ah wait
am I suppose to make the root for the one in the perforce folder the perforce folder?
man this whole thing is becoming a mess i'm starting ot regret even installing perforce on my OS hard drive, all the room is being eaten up by it and rider
What's a perforce folder
You don't have to do anything to the perforce installation no
Each project workspace gets a config file, to use different words
ah so I only put them in the workspaces
then maybe that's why i'm getting an error from the one I put in the root folder i thought i was supposed to put one there but that was a minsinterpretation
er wait
well rider doesn't seem to think so
now it just says no config file in my perforce root
You've got the directory mapping done right
"No config file in root" and "it does see config file" though?
it says no config when I take it out of the perforce folder so I put it back in
the error is the root
It doesn't pick up the second one, the game one, if you remove the config file from program files?
no it picks it up fine
it just gives the same error and says there's no config for the first path
is that path a mistake or something?
Can you screenshot it the same way after you've done that maybe
ok sure
Because that clearly says the game config is OK there before, wondering what I'm not understanding
here we are
so the bottom one is fine now which is good
but the top one is the one with the error
and now you can see it doesn't see a config file since I removed it again
That top one shouldn't even exist I think, it's not a project...
yeah maybe because I put it in there as a mistake
but now idk how to get rid of it
maybe I have to restart my whole computer? since restarting rider doesn't do it
well i might as well try that, see be back soon
nah that didn't do anything
same error identicle
sorry idk how to remove that part
afaik this is a problem because I have two hard drives right?
Where do you open that dialog from?
Nah I have like seven drives lol this must be set somewhere
it shows up automatically when I load up the sln for this project
it's a little error box in the bottom right and i click it and it shows this
yeah it shows up and says "perforce connection problems"
i've been lost a long time figuring out where these roots are even set
it's not in the config files afaik unless there's a line for that I can add
i'm having a hard time googling this
thanks for trying to help though
Yeah figures I can't find that damn dialog lol. In directory mappings you only have one entry right?
ah i actually have both
i'll remove the first one lets see if that's it
I think that might have been it
i must have done that earlier when confused
that dialogue only comes up when theres an error so sorry i'm not sure how to get it otherwise
gonna reload and try
I think that's it!
sorry for racking your brain with my mistakes
Cheers
now that i've done it it's all a lot clearer, i really wasn't grokking the solution for a while since i've never managed variables like that
thanks a ton and have a great day
Hello, I am looking for a way for some friends join me working on my projects on Unreal is there a way I can do that? Or do we need to have the same server?
Sorry to bother you with this again, but you said the P4 with engine in it should support the typical no Binaries, Intermediate, Saved etc. I am having a bit of a hard time with the no binaries ignore rule.
For example, when syncing with UGS on "artist" machine using precompiled binaries, engine doesn't start because it is missing xinput1_3.dll.
Which is located on the programmers machine on Engine\Binaries\ThirdParty\AppLocalDependencies\Win64\DirectX\xinput1_3.dll.
My question is, was this dll supposed to be packaged with the Installed Build (UGS) or was that supposed to be on the P4 server?
You need to install the prerequisites on the artist machines too. Can't remember specifically where it is but search the Engine folder for 'prereq'
Thanks for the tip, I guess there is PrereqInstaller (which I assume I would need to compile myself). Is that the one you are referring to?
Sorry for the stupid question, I found the proper ones in Engine\Extras\Redist\en-us\UEPrereqSetup_x64.exe
\Engine\Extras\Redist\en-us\UEPrereqSetup_x64.exe
Comes with the engine when you run Setup.bat (before you submit the lot to p4)
Yep, that did the trick. Thanks!
Third party deps are still included
And I thought it was clear. You basically take the repos' state after running Setup.bat
Literally every file but the .git folder
Thanks for the clarification, I really appreciate it. What way would you recommend me setting it up with p4ignore?
Since after Setup.bat step, there is about 10GB (33k of "default" files) in the /Engine/Binaries/ folder, I simply cant just put Binaries/* in the p4ignore, as I would normally do.
Making exception for each of the 33k files to not to be ignored would work, but would break if I were to merge with newer version. In that case, if any of them are renamed or new "default" files are added, they would simply be ignored.
Pushing the whole state after Setup.bat without any p4ignore and then adding p4ignore for Binaries/* would work, but again would not work if I wanted to update to 5.4 as the "mandatory" in Binaries/ would be ignored. In this case, any change to the default files would be ignored.
At this point my head is spinning with all the wrong options.
I wouldn't even bother with the engine directory since you're not really modifying it much, if at all
I am modifing the networking quite a lot, which is often not exposed/ is private. Therefore sadly editing the engine is quite common for my project/interests.
point still kinda stands, since what actually is the chance of committing an engine binary?
you would only get that from a reconcile
Right, I want to just distribute whatever came with the Setup.bat step and nothing after that.
For example, msdia140.dll
Engine\Binaries\Win64\msdia140.dll came in Setup.bat step and I need to have that on the depot.
But Engine\Binaries\Win64\UnrealEditor.exe each programmer compiles it's own or artists get it from compiled binaries, so I don't need that.
Is that correct assumption?
Making sure my p4ignore distinguishes between the two types of files (those ones I need and those that come generated) seems to be the biggest challenge for me.
I thought the pattern ignore Binaries / Intermediate / Saved works for both engine and game projects
I tried deleting the Binaries for the Engine after the Setup.bat step, but that prevents me even doing GenerateProjectFiles.bat
that doesn't mean you have to version them though?
Hmm, ok, checking our fork git:
According to @pulsar parcel we should version all files from git pull and Setup.bat step.
best trust sswires, he is strong
Yeah, just hard to pick out the files that came with the Setup.bat step and files that came from compiling in p4ignore
Nevertheless, I only have one file in Win64 ( ProcessSymbols.bat ) and have definitely compiled the engine on multiple PCs and Macs
I guess I'm not up to speed with the conversation. My fork looks pretty much identical to the EpicGames original, + my code changes, and that's it
Are you trying to achieve something special in how you intend to use your fork?
I just made some changes to networking I want to track and distribute using UGS. Very basic/simple stuff.
By default, there is about 6GB of files in Engine/Binaries/ThirdParty/ which seem to be very important to compile the engine..
yeah, working with source is a bit painful in terms of storage size : )
but like the Win64 folder for me is 30+ Gb, I don't see it making sense to version all that
But well, perhaps I'd best be wary of trying to advise too much, this is still the first time I have set up and maintained an Unreal source fork
True, I wanted to treat it quite seriously so I bought a server for that and dedicated 10TB, so I hope that will last a bit for p4.
Still no idea what should I version from that bloody Binary folder...
IF you just version exactly what you got from Epic, is there some problem?
That is the goal.
There are some ways to do that though, all of them awful.
- I can't just ignore
/Engine/Binaries/*because that contains the files from Epic. So I can create a list of ALL files (33k+ ) and tell it NOT to ignore those. - Initially push
/Engine/Binariesto the P4 and then start ignoring/Engine/Binaries/*
Both options break if I want to update to 5.4.0
If 5.4.0 contains new files or updates old ones, those would be ignored and never pushed to the p4.
Hmm... I have updated only twice so far.
The first time things got messy and confusing ( possibly similar to what you have now? ), so I just started clean and copied my changes over, since there were only like under a dozen small changes.
The second time I think it went something like this:
- started a blank workspace
- pulled my fork in
- then followed this https://docs.unrealengine.com/5.3/en-US/updating-to-the-latest-changes-from-epic-in-unreal-engine/
- then finally actually ran all the setup stuff again
Now I freely admit I have no idea if this is how it is supposed to go, and would appreciate also some links to guides of this area
Updating to a new version locally is one step, that is a bit annoying, but then PUSHING the new files to Perforce is bothering me.
For example, if in 5.4.0 is a new file added to /Engine/Binaries/Win64/A.dll that is needed and gathered in Setup.bat, how should would one detect that. If p4ignore ignores /Engine/Binaries/*, that file A.dll will be ignored and never pushed to the p4.
Can that be somehow combined with UGS?
By any chance do you have p4ignore from official stream? I just want to see how they handle it officially and paying for UDN is a bit out of my indie budget
I suppose I could request access to it, not sure what the e.t.a. on that would be ( we have UDN access but haven't bothered with the p4 stream of the engine, we just use the git version )
I suspect it would be functionally identical to the .gitignore
That would be great, I have to say I have hard time finding the "correct" way to start the project.
I would be happy to test out official p4 streams and report my findings for you if you can get an extra access 🙂
If your planned changes are not touching more than a handful of files, I wouldn't really overthink it. Make the changes, comment them well so you can find them again easily ( I used something like )
bla bla bla
// CUSTOM ENGINE END
surrounding my changes.
Then no matter how shocking the upgrades go, you can always just recover with some boring manual gruntwork : E
Giving out p4 access outside the company is out of the question I'm afraid
Thanks, it was worth a shot 😄 I think I will just p4 reconcile and try my best when new version comes out.
Thanks again for the discussion, love this community
Teams using Perforce even if they're not licencees with access to Epic P4, they'll have the engine in P4.
The easiest way is to have a clean engine depot that you merge from, so that when you engine upgrade, all of the conflicts are the differences in your own version of the engine
But if you have a serious project going, I would suggest reaching out to Epic because the license cost will be proportional to your budget
And it's much easier when dealing with NDA platforms