#source-control
1 messages Β· Page 6 of 1
I may have figured it out. Seems like if I map //UE5/Release-5.2/... I cannot then go back and blacklist all the folders I don't want.
However listing all the files in that directory individually, and then including only the subdirectories I want, seems to work.
That's annoying. Yay P4 I guess.
If you do * instead of ... it only refers to the files in the directory
Oh? So like /Foo/* will do /Foo/bar.txt but not /Foo/Subdir/other.txt ?
Ya
Thanks. That's way better than listing out all the files. π€£
Depends on your team size, more than 5 members and perforce licensing will cost you.
There's not much in the way of cloud hosting for perforce, get your own VM with a 4tb ssd and you'll be fine.
Single, large, depot is the way to go. One per project.
We're a team of 15 and growing to 20-25 in the coming 10 months give or take. I'm looking now at possibly PlasticSCM as it seems way more affordable and better to work with?
Has anyone had some experience with perforce's Helix DAM?
I see theres a 15 day free trial but I cant find anything about the pricing for the life of me.
Id rather know if its way outta the price range before even bothering but they dont seem to list anything at all about the pricing
Hard to say, I don't have any experience of Plastic. IMO perforce is great, minimal admin once setup, and the cost, while not free, compared to dev team costs are negligible. And if you want to use UGS then you need to be on perforce.
Plastic SCM has better branching feature than P4V stream (stream is just usable but not great).
You may imagine branching in Plastic SCM is just like git.
But I've only setup Plastic SCM for a team size like 10. No idea if it is going to hundreds.
Hi guys,
Have any of you setup P4 to only let someone commit changes if the swarm review got accepted?
I'm currently researching it and cannot find any info about that.
@edit
I've found that you can do it inside triggerss, but is there any built in way? π€
Okay nevermind, just found out about Swarm workflow π
a link for anyone interested https://www.perforce.com/manuals/swarm/Content/Swarm/admin.workflow_configurables.html
This complete guide goes through all the steps of installing your own Helix Core server on AWS using the Enhanced Studio Pack cloud formation template.
Get the Cloud Formation template here: https://www.perforce.com/perforce-and-cloud
0:00 - Intro
2:23 - Create an AWS Account
2:40 - Get Perforce ESP Template
3:21 - Choose a Region
3:48 - Cre...
So I have had to use "Undo Changes" within Perforce for the first time, and have got a problem as it would appear that Perforce has not been adding all files to the Depot, causing me lots of issues when trying to revert.
I'm mainly now wondering why Perforce hasn't added all Content folder files into the Depot and if there is a way to actually do this as its rapidly looking like I need to start from scratch and don't want to be in the same scenario in future
Use "Reconcile Offline Changes" to get a list of every file in your workspace that is different from the depot. (Includes all new, changed or deleted files).
Warning: This operation can take a very long time on large repos with slow Internet connections.
Once you see the list of changes, you can decide what to revert or what to submit to the server, etc.
Has anyone tried building UnrealGameSync with 5.1? It doesn't build out of the box with VS2022 (Implicit conversion errors) and when we fix those we have unhandled exceptions parsing dates
If I add someone to our Perforce and I want them to be able to get latest and edit some Blueprints but not have those changes updated in the depot, just saved on their local drive, what is the process? Instead of checking out files, do they just make them writeable?
Sure, that should work. Remove read-only from all the files in their local workspace where you want them to work without dealing with Perforce at all. If you decide later you want to save some of that work you can reconcile and save the pieces you want.
Thank you! So when they get prompted by UE to check out the file, they'll just click make writeable instead? Alternatively, you're saying that I could make them all writeable for them on their local drive? How does one do that and is that recommended? Any changes they make on these files then won't be reflected in Perforce unless we reconcile them later, is that correct?
In PowerShell, you can remove read-only from ALL files in the current directory (and all its sub-directories) with this command:
Get-ChildItem -Recurse | %{ if($_.IsReadOnly) {$_.IsReadOnly = $false} }
Then you'd want to DISCONNECT the Editor from Source Control, so it just lets the person edit anything/everything without prompting them about checking stuff out.
(They won't be able to diff stuff if you do that).
Then yes at the end, you can reconcile.
Note that binary assets CANNOT BE MERGED, so if someone else changed one of the binaries this person changed... You cannot merge.
Thanks @fair monolith this is beyond helpful information for a noob like me
We all start out noob. I got lots of help from others here, I'm happy to pay it forward. π
Thanks for the positive attitude in Discord for a change
@fair monolith are you using UGS?
I haven't yet learned UGS.
I spent 2 weeks learning how to set up reusable, shareable dev depots in P4 so I'm enjoying being back in game coding and not thinking about infrastructure for a while. π€£
I do plan to learn it soonish. It seems to be required to distribute binaries to artists on the team.
For now my team can all compile the binaries themselves.
Yeah that's why we are trying to set it up, but we are running into issues
This is an extremely dumb question but how do I do a pull from my perforce depot to my workspace folder?
I deleted everything in my local folder and I want to download EVERYTHING from my depot, basically get a fresh copy from the server
If I do "refresh" or "get latest" it does nothing
anyone good with perforce here?
Try "Clean"
If that doesn't work, do p4 sync -k and when it completes then p4 sync
If I manually remove some files from the p4root folder how do I tell the server to sync to it?
If I do refresh on a client p4v it still shows the deleted files in the depot
Reconcile Offline Work
is there a command for it from the server?
Google p4 reconcile
fyi xist doesn't use p4v for whatever personal reasons - the other correct answer for this would be to right click on your workspace root folder, press "get revision", and use the dialog to get latest --- turn on the "FORCE" option
and this one, reconcile offline work is also just a command you can use by right clicking on folder. it will compare your local workspace to the server and you can then add the changes to a change list. you can then either submit the changes (in case you were "working offline" and were actually doing permanent work) or you can revert the changes (if you want to make your workspace match the server again)
(the command will only compare stuff in that folder and subfolders - so you can reconcile smaller trees of your workspace only, if you think the rest is all clean)
Thank you!
I live in SourceCodeLand, where everything is text and/or command-line. π
I have issues. β
heyyo. quick question. if someone on my repo (me on another computer) makes changes to a c++ class of a project, builds, tests, etc. then pushes to the repo, if i pull it should i have to build the project too to reflect the code changes?
my gut says yes but would just like confirmation lol
depends if you submit your binaries too (which you shouldnt)
okay, i don't.
then you will have to build after pulling
thanks π
Recently managed to setup UGS
Is there anyway that I can help you with?
Hey Sam, yes please. Did you have to change any Code? What VS and .Net version did you use to compile it?
2022 and not sure about .NET version
Anyone know why switching branches in UE source results in a full 90min rebuild of the engine? Changes between the branches are minimal. Building the same changes without switching branches takes a minute max.
Using git with UE5.1 source
Because switching branches changes the "last modified" time on your files which is what vs or UHT tracks. It thinks those files have changed so it recompiles everything
Thanks @mighty light. Know any workarounds to avoid this? By the way, isn't the timestamp the same for the unchanged files between branches?
Hello, I am implementing perforce in my project to work with a friend, how can I make him connect to my perforce and start using my version of the project? You already created the account and connected to Perforce
@fair monolith do you have a good tutorial on P4 you could recommend to a newbie girl just coming from Git? I'm so puzzled on streams, branches and relations to CLs and how they affect my file system and code. Git is easy to me: I have branches and can branch around making changes and cherry-pick by file from other branches. But P4 is so confusing for me.
I feel your pain! π€£
Try this: https://x157.github.io/Perforce/
IMO stay away from Engine depots, they're so incredibly large it's a pain all in itself. Practice with some relatively small new projects IMO.
How to set up a Perforce (P4) server for an Epic Games Unreal Engine project, including example Stream setup and working PowerShell examples for a UE5 custom engine and a UE5 Lyra game.
Streams work very similarly to branches.
A very important key to using P4 is you must have good tools.
The default P4 tools are garbage, especially if you're used to Git for text SCM.
But if you have a nice IDE, this can be mitigated.
I use Rider for example. When I turn on Perforce mode in Rider, it's relatively similar to a Git dev experience.
Tools are ~ 80% as effective as Git tools, but at least in the ballpark.
Native P4 tools are really frustrating for source diff/merge/etc when coming from a Git background.
Read thru the procedures of doing the merging from Epic into my custom branch and then into a game branch.
It's all PowerShell, should be very easy to interpret even if you don't write PowerShell.
I'm actually very at home with PS. Just the native tooling client is so sluggish and confusing.
I use Rider too.
Good IDE helps with responsiveness too.
You configure it to never ask you about checking out, and just auto-checkout anything you modify.
Then you can look at your changelist, and it's always staying updated, similar to git status
Without this automation, p4 is soul crushing.
p4 reconcile is worth knowing well.
What is the basic unit of work for P4? Git commit matches a P4 CL, right?
Well not every CL gets committed, some get deleted, but otherwise yes.
Some CL are just temporary values. (Maybe because I'm a P4 noob π€£)
So CL is a layer above commits, a non-permanent modification?
It's just like a commit. But you have to reserve a # for yourself to work in.
Sometimes you decide you don't actually need that #.
Oh Jesus...
But when you do, you submit it (same as commit)
So, it is in a sense a non-commitment commit? π
Staging for commit, let's say.
Sometimes it gets committed, sometimes no.
You choose.
I hate choices, frankly.
pending CLs are just like staging stuff in git, except that you can have multiple places to stage things.
A submitted CL == git commit
The less choice I have, the less cognitive load I have to endure besides my actual work.
and shelves are like git stashes
Nice remark, thank you.
That's a nice tutorial checklist there on the link. Will have to go and try using it. But these answers were immensely helpful about CLs, shelves and submits.
Is there a way to remember a comment in Discord, a library of sort like in Slack?
I don't think discord has saved messages
you could just copy the link and save that somewhere
but at that point just write down the info lol
Will do. Does it happen by any chance some of you build engine from source?
yes
Why can't I connect to Perforce?}
The work around is don't switch branches all the time. It seems like a weird workflow anyway. A better(ish) alternative would be to clone all the branches you need to separate directories. This will eat up your disk space though but you won't run into such problems
Hi, I'm trying to figure out how to merge a branch that's made changes to a blueprint (only minor changes like a static mesh component's mesh, and transform) into a branch which has also made changes (blueprint script). it will be a merge conflict
I'm understanding that you cannot diff blueprints?
You can diff blueprints. You cannot merge blueprints.
ohh right. i think i meant diff->merge.
so, is it just easier to redo what i've done (or duplicate the file and merge that, then open both on the same branch and copy-paste changes etc)?
Anyone got the newest gitignore I can have?
Hello everyone, I recently hired DigitalOcean and I did the basic configurations, I was able to make the connections of the project to perforce and I was able to do some push
My question is, if my friend joins the project and I create a user in Perforce for him, how does he download the files to be able to work in real time with me? Thank you
How can I setup something like this for Perforce?
I thought each folder would be a depot so I can restrict access to the UE4 depot for non programmers for example.
I always read "use streams" but with streams a Workspace can only be tied to one stream and not show multiple ones.
A workspace is basically just a client mapping between the stream and local file system. You set up a workspace for each stream you are interested in and swap between them, sort of like swapping between branches in git
Is there a way to set up a worksspace stream view to exclude /Blah/X/ but include /Blah/X/Y/ ?
None of the documentation seems to give an example of it.
I do something like that here: https://x157.github.io/Perforce/
How to set up a Perforce (P4) server for an Epic Games Unreal Engine project, including example Stream setup and working PowerShell examples for a UE5 custom engine and a UE5 Lyra game.
I show examples of streams for both project depots and engine depots.
That's what I was doing the other day and you helped me with! π
Nice!
In the client view, you can - the dir you don't want, then include the subdir you do want
-//UE5/Release-5.2/Engine/Restricted/... is giving me an error baout not being able to use a null directory
do I need the /... bit?
You may need to use the * instead of ...
Null directory (//) not allowed in '-//UE5/Release-5.2/Engine/Restricted/*'.
Hmm... Null directory? Haven't seen that before.
I'm assuming it's complaining about the // at the start.
Oh, maybe this is client view?
Oh yes it is!
Try without the leading //UE5/Release-5.2/
That worked, but I don't know what it's done!
Meh. It deleted everything in the change view box
I'll stick to my batch file system.
The documentation and examples for how to do advanced view things is definitely scarce.
They are non existent.
Maybe it's the other field where you have to say exclude Dir/... ?
Or maybe that's just for streams
It's so amazing that they have like 4 different syntaxes for very similar things. ππ
When I get to the computer I'll look what I did and copy it
Thanks!
Null directory (//) not allowed in '//UE5/Release-5.2/* //workspace/*'. this should work at least. π¦
This is what worked for me (UDN P4 server), I wanted everything in the Engine folder except for the HoloLens platform which does annoying things given that I don't use HoloLens.
The key was the *
That isn't the box I can work with, though.
π¦
This is in the "edit workspace" view
Yeah, same. I don't have that box :/
FWIW i also do not have such a text box
maybe xist using and old ass version of p4v
I'm using the old ass version
seems legit
2021 dec 22
When I go to "Edit Workspace" it looks like this (the Basic tab):
And I can edit the Workspace Mappings
mine doesnt look anything like that
You are looking at the folder UI. Click the white box next to the 3 blue boxes on the right.
text view one?
Yeah.
read only
You may have elevated permissions compared to me, Xist.
If so then someone made a mistake! π€£
(It was probably me π€£)
I didn't do anything special.
I did create my workspaces using command-line
@fair monolith so do you have this same edit page, but "View" instead of "Change View" ?
I'm not using any special hostname, just the default UDN p4 for my region
You know
It might be that the stream is called "Release-5.2 (Release-5.2)" and not just "Release-5.2"
I doubt it, though. That's surely just a label, rather than part of the path.
I literally have nothing at all special going on that I'm aware of
Maybe you can only set it up when you first create the workspace?
Try to create a new workspace (command-line!) and set the View: in the text editor when it appears
I'm not even really using the 5.2 one yet, so I'll just delete it and remake it.
The workspace mappigns fields is writeable when I make a new WS...
Oh
That worked without complaint.
The change view field is still blank after creating though.
Yeah I'm not sure what "Change View" does or is for...
I definitely configured my "View" when I created the WS.
In my case it was the difference between downloading 200 GB or 450 GB.
So I took a few extra minutes to figure it out before any download. π€£
How do you determine the size before updating?
Ah.
Actually Workspace Mappings is set to read only when I pick a stream.
Did you select a stream or do it manually?
In my case when I had even less of a clue how P4 works 6 months ago (if you can imagine that), I downloaded //UE5/Release-5.1 in its entirety.
It took 24+ hrs (I'm throttled to 50 Mbps from P4)
Also I got hate mail from my home ISP that month.
So I was determined not to download that much again. π€£
Not using a stream and setting the workspace mapping manually didn't help.
It's still downloading restrict stuff :/
What does your View: look like?
(those last 2 lines are 1 line)
Oh fffs
Typod the restricted folder.
No Engine/
Omg it worked!
The key was not selecting a predefined stream.
That locks you into to a specific workspace mapping
You have to create your own mappings from scratch.
hi, i have set a new client up on perforce and when they have got latest and built, they are getting a lot of blueprint errors.
does anyone know why? source control is connected, same ue4 version, project built and got latest.
Hello everyone, I recently hired DigitalOcean and I did the basic configurations, I was able to make the connections of the project to perforce and I was able to do some push
My question is, if my friend joins the project and I create a user in Perforce for him, how does he download the files to be able to work in real time with me? Thank you
What do you mean "in real time" ?
That is, that he can work on the project that I am working on.
He'll need to download your project files, yes.
How?
I created a test user, but it doesn't give me the option to download
I don't know anything about perforce admin, I'm afraid.
Okay, no problem, thanks
I'm moving my P4 repo to a Docker (Ubuntu) container. Should be quite simple to deploy it anywhere in the cloud with a setup like this. For now I deployed it onto the NAS on my LAN.
I made the Dockerfile and setup scripts public in case it helps someone:
https://github.com/XistGG/docker-perforce-server-for-unreal-engine
Setup a perforce server, with the p4ignore do i just drop into my local directory and then upload to the server for it to take effect? or is there any Command line or admin work that needs doing to tell it to use it?
FYI using digitalocean
just add it to your repo and submit it to the server.
You typically create a workspace per PC and user from a development stream, then you get latest on that workspace ( this pulls changes into the workspace from the stream ), resolve any merge issues then submit your changes through changelists from the workspace, to the development stream ( similar to push )
You then synchronize development and feature streams with mainline, and vice verse, if changes wen into mainline, features streams need to merge them down, you can then get latest on each workspace, resolve merge issues etc.
These are pretty basic perforce functions, maybe you need to do a few tutorials I think. that would help.
FWIW this is what you get when viewing a workspace, not editing it.
I think I understand where you're going, but I don't know how I can download the files or clone the repository from another account that hasn't created the workspace so that I can make changes to my project
The user who created the workspace is not the only one that can pull/push, you can change the workspace , and you should def not share workspaces, 1 workspace per stream per user per PC, you should have 1 and your team members should each have 1 ( 1 user can have multiple workspaces if you have multiple PC's for example ), all pointing to the same stream, the workspace is not important, the stream is, that is where the files are on the server, the workspace is where your files are on your local PC
Right click on the stream, choose new workspace, fill in the details you want, like name, location, then select the root and choose 'Get Latest'. That will pull the latest changes from the stream into the workspace on the current device, do not share this workspace with someone else, that will break your workspace, and you will have to resync, workspaces are not meant to be shared.
Do not check the workspace out onto another device either, that will also break the workspace on the other place, when you issue a get latest on one, then on the other ( and using the same workspace )
the behavior becomes very undefined, because perforce thinks you already have latest, it does not check file MD5/timestamp etc.
You friend needs to do exactly the same, install perforce client, point to your server with their credentials, right click on the development stream ( dont work directly on mainline ) create a new workspace and 'Get Latest', then you both are poitning to the same stream, and working with the same code/project, there is no "download/zip" using perforce
switching workspaces feels cumbersome. With static depot I can map multiple depots in my client mapping within one workspace.
Thank you! That's what I needed. But still I kinda wish I could map multiple stream depots (Project depot + Engine depot) in one workspace.
Can a p4ignore be set for all users at once? So not everybody needs to set their p4ignore themselves?
You can checkin the p4ignore file, but each user needs to setup the environment var to point to it
well, I prepare a .bat file then that will do that for other users.
Are .p4ignore used per workspace? or per "PC"
@fair monolith so after all that, UGS doesn't work with Epic's p4 without using a specific stream and you can't submit CLs or do preflights either. Yay...
I think you can do this, I'm just not sure how.
I still haven't actually gotten UGS up and running.
It's a future-me problem.
Future you might need to setup a second workspace, point it at the same folder and subscribe to tbr stream to get ugs to work π
That would be very bad though.
There are good docs that describe .p4ignore
https://www.perforce.com/manuals/cmdref/Content/CmdRef/P4IGNORE.html
What I hear you saying is: Keep the team small, technical people only, everyone compiles their own binaries so Xist doesn't have to set up UGS. π π€£
Exactly!
This page alone doesn't really answer my question, or I'm just not understanding something. I think I have to understand more about how perforce is configured in general for one client.
Run p4 ignores -v for detailed dump of what files were read and what rules were gotten from each file.
Okay I switched workspaces and got two different lists on what gets ignored when using p4 ignores -v. So a .p4ignore gets applied on each client workspace.
$HOME/.p4ignore may also be in effect, if it exists. Try it out.
Like make a .p4ignore file in your home dir, then see if p4 ignores -v output changes.
I think if you do have a $HOME/.p4ignore it might set essentially global defaults for your user account.
okay, I'm trying..
I'm playing around with my local p4 server. I think $home is not setuped.
When I set the p4ignore with the $home variable it doesn't work.
g:\Projects\PerforceTest>p4 set p4ignore=.p4ignore
g:\Projects\PerforceTest>p4 ignores -v
#FILE - defaults
#LINE 2:**/.p4root
.../.p4root/...
.../.p4root
#LINE 1:**/p4settings.txt
.../p4settings.txt
#FILE g:\Projects\PerforceTest\.p4ignore
#LINE 1:.test
g:/Projects/PerforceTest/.../.test/...
g:/Projects/PerforceTest/.test/...
g:/Projects/PerforceTest/.../.test
g:/Projects/PerforceTest/.test
g:\Projects\PerforceTest>p4 set p4ignore=$home/.p4ignore
g:\Projects\PerforceTest>p4 ignores -v
#FILE - defaults
#LINE 2:**/.p4root
.../.p4root/...
.../.p4root
#LINE 1:**/p4settings.txt
.../p4settings.txt
g:\Projects\PerforceTest>
Interesting.
Looking at the docs it seems you may have to explicitly enable this via something like: ```powershell
$env:P4IGNORE = "`$home/.p4ignore;.p4ignore"
βββ **Note the escaped ``$`** βββ
So it's an optional feature you can enable - whether or not to apply `$HOME/.p4ignore` (or some other file you choose) as a global default for your OS user.
https://www.perforce.com/manuals/cmdref/Content/CmdRef/P4IGNORE.html
okay gtk. Thanks a lot for the help @fair monolith π I'm going through your Perforce guide, love it π
How come I don't see all the available branches on my Github Fork? 5.1 and 5.2 exist on the Epic Games Github but not on my synced fork
On Github, select the UE 5.2 branch, then choose to create your own fork. Uncheck the "copy the release branch only" option, that probably does the trick.
Does anyone know a good free online hosting service where I can host perforce on for a week?
a week?
Assembla offer hosted perforce service and it looks like they have a 14 day free trial.
I doubt you're going to find a VM with a free trial.
Yeah! for a game jam :)
Thanks! I'll look into it rn!
There's like those free low performance services like Heroku and I'm trying to find one I could use
I think I remember someone hosted an instance on the free AWS EC2 tier
Even if you have to pay a small instance won't cost much for a couple of weeks.
I can't seem to find Perforce as an available repository option on the Assembla portal website π₯²
ooooh bless you, I didn't have the right trial! Thanks! :D
How can you effectively use branches in Unreal? As far as I know, Blueprints can't be merged. How then do you fix a bug in Blueprint in a branch and then bring that fix into another branch, where that Blueprint might have undergone changes since then?
For example, I would like to do this:
-Create a branch for update 1.1 to my game.
-Keep working on future content in the main branch including edits to the logic in the Blueprint file Banana.uasset.
-Update 1.1 releases and there's a bug in the Banana Blueprint. So we fix that bug in the 1.1 branch and release update 1.1.1.
-Now I want to bring this bugfix into the main branch, but the Banana Blueprint there has local changes. How do I merge those without just making the change again by hand?
I come from an in-house engine that was all C++ and mergeable text files, so this workflow worked excellently there. I'm trying to wrap my head around how to do this in Unreal.
It works the same as every other project, whether in Git or in Perforce.
You merge C++ code and INIs.
You copy BPs, they cannot be merged.
TLDR don't try to build reusable systems in BPs, that is a non-starter idea.
This is why you probably want to use Perforce as well, if you have a large team. Perforce handles locking binary assets so only 1 person changes them at a time.
Because they can't be merged.
For small teams, just coordinate who edits which binary when.
We use SVN for exactly that reason. Works well with the locking.
But ugh, that sucks. We have a lot of logic in Blueprint, especially things around UI and tutorials. That works great and really enables technical designers to shine. But it combines really poorly with games-as-a-service where there are always new features on the horizon and things that need final polish for a release soon.
Especially since the bits that are in Blueprint are also the most error-prone bits (UI and tutorials, in other words: user interactions)
Are there a lot of studios that use Blueprint less for this reason, or do people work around this in some other way?
BP is great for some things. Extensibility and Reusability are not some of them.
I dunno. They're pretty reusable!
In a single project sure, but trying to copy changes across projects is really hard, lots of manual work.
C++ is so much easier for reusable cross-project systems.
ah in that sense. Yeah, I imagine you're right about that
Blueprint is also pretty terrible for refactoring. So far that seems sooooo much easier in C++.
If you find that you're needing to merge BPs @outer spade maybe that indicates it's time to refactor those BPs as C++. It gets enough use that multiple people are changing it in multiple ways.
Then they keep their BP functionality but it makes it a lot easier on you in the long run.
Yeah I'm thinking my biggest lessons on our first bigger production in Unreal so far are:
-Split Blueprints up much further into very small units so that you get less cases of wanting to lock a file that someone else locked
-Move more stuff from Blueprint to C++
-Think better about design of Blueprint classes beforehand because refactoring later is such a pain
I've basically brought a C++ mindset into Blueprint and that turns out to not work as well as hoped.
This is an interesting video, about Perforce, but with general SCM concepts applicable to SVN too. In particular, this section:
Q: How do we version control binary BPs?
https://youtu.be/JxXydvG4mlI?t=3264
Full annotation:
https://x157.github.io/UE5/Annotations/Inside-Unreal/EpicGames-Version-Control-Fundamentals
.
At the core of any successful project lies planning, tools, and execution. To reduce risk and improve collaboration between developers, agile teams often implement Version Control systems to record changes to files over time, allowing them to easily recall specific versions at a later point. On this week's livestream, Arran Langmead will walk us...
One simulant attempts to share insight with others.
Thanks for the link, I'll have a look!
And thanks for the insights into how to Unreal! π
Hello all,
I am currently running a perforce server on AWS. I was watching a tutorial on how to setup my workspace and such for UE5 and after looking through it, I realized that I made a few mistakes. Now, I want to go back and redo what I did.
Now, I already pushed files up to the perforce server. Is there a way for me to delete my workspaces and the files that I pushed up?
I ma open to deleting my AWS instance and starting fresh but I would like to use that as a last resort.
if you want to just nuke it all, delete your workspace in p4v (view > workspaces, right click the workspace) and then delete the depot from p4admin.
Basically, I want to start fresh but retain the settings of the server
so do what I just said...
Alright, will do, thank you
When you delete it, make sure you "obliterate" all files.
If you obliterate everything, then it will allow you to make a new depot with the same name.
If you don't obliterate the files then the depot name may be "reserved"ish.
In that case just obliterate the files explicitly and you should then be able to make a new depot with the same name.
@tall owl ^
(Sorry I replied to you @merry verge, accidental π)
No problem, thank you for the tips. I havent done anything with it yet. Making a backup of my project first just incase
Quick question, how do I obliterate the depot using command line? I know that it is p4 obliterate but I am not sure what comes next
Thanks, I think that I was able to do it!
Hey All, New to this discord server! My first time posting a question, so kindly forgive any mistakes made.
I am thinking of using perforce as source control for my project. Would my friend be able to connect to my project and download the files if he is on a different internet connection? I would be hosting all files on my own system (not a separate server).
Would portfowarding be required? or some kind of VPN like Radmin/Hamachi?(I do not have a static IP)
Kindly suggest links to a tutorial if possible, that would be of great help! I searched for it a lot myself, but never found a proper guide to the above scenario.
Using a VPN network with Hamachi will make it super easy, yes. This way you will share a "local" network.
Hey, thanks a lot for the reply. I shall try this out. Hope it works out though
Yes it will, I do use a local P4 server on Windows: you perhaps have to accept the Windows Firewall security prompt the first time, or add an exception manually for the process later, but I don't remember doing that
So, Git Add in cli is taking hours to run. 80 gig proj file.
Like, I'm familiar with p4 and the cli for git taking hours to do an add is interesting.
I just added a new gitignore to the directory root to see if that helps.
I just don't think it should take hours to do an add even for a 80 gig file
So, I started fresh and now after doing the git p4 clone command: my Importing Revision is hung at 50%, is that normal?
andre@L MINGW64 /d/BridgeWVS
$ git p4 clone //Worlds_FPS/WVSBridge@all /d/BridgeWVS
Initialized empty Git repository in D:/BridgeWVS/.git/
Importing from //Worlds_FPS/WVSBridge@all into D:/BridgeWVS
Import destination: refs/remotes/p4/master
Importing revision 2520 (50%)
Guys, I'm trying to import project from SVN to P4 and for now everything went well, but...
The p4convert.jar is not able to connect to my ssl server.
the error looks like this:
com.perforce.p4java.exception.ConnectionException: Error occurred during the SSL handshake: invalid SSL session
from what I've read on the perforce site the issue can be with ssl.tls.version.min which i just set via p4 set on client and via p4d -c "set ssl.tls.version.min=10" on server.
But the issue persist.
The weirdest thing is that I can normally connect to the server via p4 command or P4V client on the same machine...
Do you have any idea what I'm doing wrong?
Maybe I'm setting the variables in a wrong way?
Hello all,
I am having an issue with the UE5 editor. I recently put my project under the perforce source control. In doing so, I deleted the binaries folder, the dervidedDataCahe, and intermediate folders per hte instructions of a tutorial. (I made backups of these folders just in case). Now when I launch the UE project, I am getting a message saying
The following modules are missing or built with a different engine version:
SWGUE5
Would you like to rebuild them now?
I click yes and then:
SWGUE5 could not be compiled. Try rebuilding from source manually
So then, I open my VS project and build the solution. However, I also get these errors:
Severity Code Description Project File Line Suppression State
Error Could not find definition for module 'SWGUE5', (referenced via SWGUE5Editor.Target.cs) SWGUE5 C:\Users\user\Perforce\WorkspaceLaptop\Intermediate\ProjectFiles\UnrealBuildTool 1
Severity Code Description Project File Line Suppression State
Error MSB3073 The command ""C:\Program Files\Epic Games\UE_5.0\Engine\Build\BatchFiles\Build.bat" SWGUE5Editor Win64 Development -Project="C:\Users\user\Perforce\WorkspaceLaptop\SWGUE5.uproject" -WaitMutex -FromMsBuild" exited with code 6. SWGUE5 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44
Is there anyone out there that can help me with this error?
Show Target.cs that it's complaining about
Also this is not really related to source control
Every time I try to build and run my project, I see this log Attempting 'p4 fstat.... and it takes forever to load up the editor. Is there a way prevent this?
I keep getting this error when inputting my perforce server info. Shouldn't it be asking for my password after this step?
hello guys, why is the engine recompiling shaders everytime one is launched? I launched an existing project, it compiled shaders, then I launched the engine exe to create a new project, it compiled shaders. I created a new project, it's compiling shaders. Is this normal? Engine is 5.1.1
Try p4 -P passwd password
Hey, Thanks a lot for the help! The perforce connection worked really well with a tool called 'Radmin'. Tunneling ports to my friends pc gave him access to my local workspace. I did try using Hamachi, but it seems to keep getting blocked out by my firewall (Even after allowing the app through firewall and creating Inbound TCP rules). But thankfully it works now. All that's left is to connect ue5 in-editor to source control. Cheers!
wait why did you say "access to my local workspace" ?
what are you doing here
what is radmin
Hey, I was trying to enable source control on my project. But the person trying to connect to my project is in a different state (totally different internet connection). My first tries were unsuccessful, learnt the hard way. Perforce has its initial basic setup to work only on local networks. Hence Radmin (a neat little VPN tunneling software) gave my friend a way to connect to my computer network and act as a locally connected user. This way he was able to successfully connect to my perforce server, which is on my system. Hope I explained that correct.
alright, so they're actually connecting to your perforce server as their own user and making their own perforce workspace right? they're not remote accessing your (perforce) workspace?
(also: perforce definitely does not "only" work on a local network but that's a topic all on its own to figure out, and if you're happy with what you've got, maybe not worth going into today)
Yep, exactly! They make their own workspace
Yeah, I did run into a page that gave instructions on getting perforce to run on port:80, or something like that. I was too confused to follow that, hence the use of Radmin.
typically you would just pick your own port for it... default is 1666 but leaving anything at defaults just increases hacker pinging... and then forward the port for the machine running perforce on your router (and modem too, if it's an annoying modem that needs it). people seem to be losing the old age wisdom of how to forward ports easily though π
Oh boy! Port forwarding indeed was a pain initially for me (setting up game servers). Lucky for me I do not use a modem. I only need to worry about the router, but then the ISP has blocked all outgoing ports and deny me access to a static IP due to my internet package being a 'user' based one.
About the 1666 port - is it possible to change a port that I am using for a project that has already been set up?or would I need to? Kinda worried now if people can actually hack in to my network just cause I was lazy to change something π₯² . Thanks for the help though!
i'm not a networking expert but basically forwarding a port just lets outsiders get access to send packets to that port... if there isn't anything running on that port on the local machine, you've just given them an open door with a brick wall behind it typically. where the most obvious risks come in are if the open port permits them to attempt SSH logins or stuff like that (big nuisance with linux VPS, china bots will try to brute force connect to servers using default SSH ports, I deleted like 10 GB of logs of failed password attempts before i changed my linux VPS's port, lol)
Well I hope that wouldn't be the case for me. Have not forwarded any ports, just using Radmin to VPN into my network. They did mention that it was all SSH connections for security purposes.
hello, i was wondering if it was possible to share a workspace between computer that would sync the code between them, even if it was just one being being a read-only copy
why would you do that? but no, not a good idea.
make a second workspace on the second computer, and use shelving to move work-in-progress changes around
ah interesting, that would do the trick, i just want to run a dedicated server on one machine and the client on another
In that case you should make a Client and Server package on the same machine.
Copy the server package to the remote machine and run that.
i wanted to debug the server and client
If you're smart you can even setup visual studio so it will launch the server on the remote client allowing you to debug on one machine
oh you can do that
remote debugging?
You need to copy the server package to the remote machine first of course, to ensure the data is matching between server/client, but if you are iterating on code only then it's quite speedy
Guys, do you know how to install Helix Core Server Extensions?
I'm trying to find a way to do it but there's no info on where to find it
Hello guys, Does anyone know why perforce takes away so much performance? Everything is much worse since I use perforce, blueprints take time to open, when I save something it takes time to save, the world takes time to compile, how can I improve this?
It's because Perforce is garbage, and does everything over the network.
So your entire workflow is slowed down based on your network speed.
You can either put a Perforce server on your local PC (which is still relatively garbage), or you can use Git (which doesn't work for teams with non-technical people on it, or for large teams in general if you have binary assets in your project).
TLDR welcome to Perforce. π
Also note that I moved my P4 server from a 16-core server to a 2-core NAS, and I noticed a massive slowdown.
So make sure your P4 server has plenty of cores. It needs them.
I have the perforcfe server contracted at DigitalOcean, I did not pay attention to the benefits
1 vCPU
2GB / 50GB Disk
Its very simple server
You will notice better performance with more than 2 cores. I don't know how many exactly, but 2 is not enough.
tbh, that depends largely on your team and project size... i moved my perforce from a 1 core VPS to 2 cores and noticed absolutely zero change. it went from "100 ms of lag because my server is in europe and i'm not" to "100 ms of lag because my server is in europe and i'm not"
It's true, if your network connection to the server is bad enough, then the server hardware may not be the bottleneck.
I'm on a 10 Gbps LAN with my P4 server. 2 cores is not enough in such an environment.
It's functional, just noticeably slower than it was on the 16-core server.
Clearly now I need to add another server to the LAN. π€£
i would say you're completely missing something
unless you're running it at a company the same size as epic
I have 2 depots. 1 with 5.2 engine, 1 with a Lyra project.
but 16 cores is not needed for bob & jay's 2 man team
I'm not saying 16 cores is needed. I'm saying more than 2 makes a noticeable difference.
Maybe 4 is the magic number. Maybe it's 8. I haven't tested it.
NAS uses SSD or HDD? NAS CPU speed vs the previous machine?
Also note that I am compressing the file contents, which I imagine is what is eating up the CPU.
i think my local dual core NAS was slower than my 1 core VPS in europe
ah, yes that would be a huge factor
i've never even tried using compression
Perhaps it's not the right way to go. π€£
It was working great on the 16-core machine.
But on the 2-core, even things as simple as switching workspaces is slow.
Make and submit a CL with a single CPP file = 10 seconds delay. It used to be instant.
none of that with a single core machine here
just the expected lag from travelling around earth and back
Anybody know why my project wont load up, instead crash every time I run it?
yeah you should disable compression
This "Default Uncontrolled Changelist" used to contain 4 items that were related to a plugin. After a Undo Operation in Perforce it now contains thousands of things, they appear to be all Engine content. Should I be concerned?
What is this to do with source control? If you're using the launcher engine, then verify the files
Well what does it show in P4V? Are you using OFPA?
Hey, can someone help me with my perforce server? Today randomly my client(me) won't connect to my server. When I run p4 info on the server it works, when I run p4 changes -t -m 10
p4 changes -t -m 2000 it works fast and doen't hung, the port is set correctly, and for some reason, when on my client I click on "users" i see all the users of my server
but when I try to connect it goes
"Connect to server failed; check $P4PORT.
TCP connect to game.rout0r.org:1666 failed.
connect: 116.202.122.172:1666: WSAETIMEDOUT, A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. "
if I stop the server, then when I click on users, it doen't find any, so it seems like it almost connects and then doen;t? The "Fixing a hung helix core server" guide doen't tell me what to do in this situation π *Also when my friend tried to connect, I got this in the p4d server log "'user-login -a'
--- failed authentication check" so we can reach the server but suddently it won't authenticate us?
I don't see any the files in P4V. The Folders and Files that are in this "Uncontrolled Changelist" are not in in Workspace or Depot as they seem to all originate from the "Engine" or "Plugins" folder and neither is included in Perforce. OFPA is disabled
What is certain is that there is nothing better than perforce currently, right?
That is subjective.
Objectively speaking, Epic uses Perforce.
So after spending more time on this, I haven't fixed but I have a more precise question now
"Why would a perforce server that worked perfectly for 2 weeks, randomly stop authenticating users all of a sudden"
Worked yesterday, today, it doesn't want us anymore
Thanks, you are awesome
Well I donβt know where else to request help
How would I verify the file, I deleted and reinstalled the engine but still didnβt work
verify by clicking the wee drop down arrow
I appreciate, Iβll try it out
I know BFG can delete files in commit history and will preserve latest commit on main branch. Is there any way to preserve latest commit on ALL branches instead of just main?
I tried out the verify and it didnβt work unfortunately. This is the error I keep getting
hey devs , i switched from git to Perforce and can someone explain what is the differnce btw "Add"(Mark for Add) and Checkout ? is "Add" == "Indexing" in git and "Checkout"== "Commit" in git ?
no
add is for files that haven't been tracked and submitted to the server. Checkout is for files that have been submitted and you want to modify.
UPDATE! Thanks to the previous comments I was able to overcome this new issue by installing the βEpic Games Launcherβ as suggested then copy the files found in: \Program Files (x86)\Epic Games\Launcher\Engine\Binaries\ThirdParty\Windows\DirectX\x64 into my build location (replacing dxil and several other dlls): \Epic\Engine\Binaries\ThirdPart...
seems to be a couple potentially fixes from other users in there, but make sure you are sure of what you are doing. I haven't attempted any of this nor have I looked into each advised step. Just posting as a starting point that might help you
appreciate the help ill try it out
(Git) Is there a protocol for storing a source compiled engine version with a game's project files? I assumed it'd be like UT where you essentially put the project root folder next to the /Engine/ folder but
a) how does that work with a .gitignore?
b) would that cause problems for either compiling?
UT was actually using Perforce, not Git. With Perforce you'll typically deploy UGS
https://github.com/ProjectBorealis/PBSync is a UGS-like project I've seen for Git
so uh I have a massive problem
I did some weird things with the assets and now they don't appear anymore in the unreal content browser (although the folders and files do exist)
how do I re-import them without breaking them? If I drag and drop the files in the right folders it says something about references being broken
Failed to reimport (object redirector)
if I do "fix up redirectors" it just deletes the files off of my hard drive which isn't ideal
'I'm using perforce and I thought I fixed the problem in another workspace
HI, sorry for necro-reposting, but I just had the exact same problem and I can't find a solution. Did you figure out how to solve it?
I do have a .NET 6 port of the metadata server on GitHub which I forked from a .NET 5 port. It can be deployed to Linux/Docker which the official one does not support being .NET Framework and all
Updated/Custom Version of the UnrealGameSync MetadataServer. - GitHub - sswires/UnrealGameSync: Updated/Custom Version of the UnrealGameSync MetadataServer.
oh that's cool. We would like to use the official one to avoid problems when asking for support to epic (UDN), but we could try yours. It's weird because we had it working in a previous project using ue4, but no luck with ue5
The old one is barely supported and the API is stable. A UGS metadata server is in Horde and that appears to be what Epic uses internally
i want to get into source control for versioning and project sharing. i got some smol experience with stuff like github but i am unsure how to do anything with large size sources
whats the UE community goto repo service for this?
after looking around i cant really find any good options but selfhosting repo and just use svn/perforce/git for version control
Have you ever used source control before? How many others are on your project? Have they used SCM before?
ive worked a bit with git and svn
its only me on the project but i have some reasons to share the source with atleast one other person
For a small team, Git should work just fine.
Maybe SVN too, but honestly I haven't used SVN since Git was invented.
its a flavour, mostly used SVN in corporate contexts
eiter way i think just sharing the whole project outside a source control and then set up a folder for source control
seems smoothest
yeah
You can change SCM whenever you want
this was mostly an exploration if there was project share + version control as a service
for free
ie server + space + client
With a large team, not so easy. But small team, go with what you know.
I think someone said Azure has done free VMs on a trial maybe
That's limited time tho surely
yeah after my quick rundown of options i just figure a self hosted solution is best either way
Hey alll - we have our project on a repo. We are using svn. We have recently added c++ code to the project. This has updated the uproject file and added a module. Once this was commited. No one else could open the engine so we have since revert the change. However the c++ components are no longer appearing. They only appear once the module has been added to the uproject. But again this stop everyone else opening the build. I feel we are missing something simple. Any help is much appreciated
Fixed
Hey, I'm trying to get a git repository going for my project. I have a visual studio solution with both the UE5 built from source and my Project in it.
But all the built in git related functionality seem to be tied to the engine only, how do I change it to make and manage a repo for the game project instead?
hi i was wondering if there were any more steps i needed to do when updating my unreal engine 4 project and committing the unreal engine 5 version to github
just seems like there should be a lot more file changes unless i am over thinking things
There are some deprecated functions and variables and name changes, but you'll quickly find out if you use those when you build. But it's mostly like a big engine patch.
right i will do a test build to see if i got any issues like that thanks for letting me know
just with GitHub have always had problems in the past with not setting it up probably.
Project Tracked using Git SCM, Reinstalled windows 10 and now project is not recognizing it's source control link how do I reconnect it to Git without losing git history?
The git history is saved in the .git folder. Just don't delete that folder and you will keep the history.
Connecting it won't destory git history ? it is asking in UE to initialize the repo even tho it is initialized.
When in doubt, back it up. Make a zip of that entire directory structure, put it somewhere safe.
In the shed.
i accidently deleted my Source folder before comitting.. anyone know if theres a way to restore this through the editor?
there's a weird issue with unreal and perforce
perforce makes the project folder read only and now unreal takes forever to hit play/stop on the viewport editor
if I check the log it tries to access/delete the .ini files and isn't able to, that's why it hangs
and if I check the project folder it is trying to write tmp files constantly lol wth
pretty sure someone else in here complained about that 6-18 months ago but i'll never remember what they did wrong
can I just say f*** perforce
literally dumping the project files on a private github worked flawlessly for us (except for the parallel working part)
parallel working? if you were happy with git dunno why you'd switch (i switched because i wasn't happy with git but i switched a loooong time ago)
oh, private?
the exclusive checkout stuff is nice (when it works)
you weren't using LFS??
what does LFS have to do with it?
well... because vanilla git is generally horrid with binaries, and because vanilla git has no way to implement locking
yeah we just literally pushed and pulled the project whenever one of us was working on it
which meant no "parallel" working (as in checking out different actors/etc.) - with perforce we can now
well, anyway. your perforce is set up wrong but i don't know how... if you actually want help you should share some info and maybe someone will remember. otherwise, maybe consider going back to git with LFS if you liked it
also there seems to be some wrong perforce config in unreal cached somewhere
maybe in appdata? could it be?
I mean issue is that perforce puts the folder in read only and unreal cannot delete stuff in it
Even though the source control is set up
share some info
what infoi
what you're seeing, you keep talking about files and this and that, none of it is going to be in front of anyone else
screenshots, logs, info
oh. did you skip setting up an ignore file maybe?
no it was there
this was from an older issue where perforce spazzed out about having multiple depots and I have to brute force in files manually
i don't want to know
π
Is there any way to automatically "mark for add" newly imported assets in my project?
Source control is enabled obviously
About the new Source Control Changelist view in 5.1.
There is the option to Reconcile Assets, but it also adds Engine content to the Uncontrolled Changelist. Is it possible to only reconcile Assets in the Content folder? So I only reconcile Assets specific to my Project?
I'm trying to get "Shared Collections" working across multiple machines - is there some file I need to mark for add in the config? I thought creating the shared collection might be enough but I wasn't sure how UE handled the collections (and no one could tell me what local config file handles it)
I'm using Perforce for source control and for some reason it's been acting off. Things were being pushed but not syncing right with the cloud as though I never pushed stuff....when I would go to do a clean it was showing folders under my Content Folder that were local and not on the server, so I had to mark them for add and manually force them onto the Repo
It's not doing it anymore but he still seems to be having trouble staying in sync with me
Anyway if anyone has seen this before and might know the cause let me know
Yeah it's under your Saved folder
Somewhere under there you will find a Collections folder
I don't know if that's just local or not though
It's not a file type that's normally ignored right, it's just the save folder typically isn't included in a typical p4 setup, right?
Yeah
That's correct, the saved folder is normally ignored. I'm not honestly sure if that collection folder is it. More then likely that's for local collections only
Are you sure your connected properly?
Like to the workspace and all of that?
Nm, yeah idk
that's odd
even weirder - the collections folder is empty even though I am looking at the collections in the content browser
I restarted the editor but it still says that
Something happened to my perforce, it knows there are changes but wont display them, and only does it if the change was made in unreal. It was working fine just yesterday. It shows an empty file list and wont submit anything.
I can submit from in unreal. When I submit changes made outside unreal, it doesn't submit those ones. After submitting the 'default' changelist goes back to blue but if I hit refresh it turns back to red, again empty
Yeah something sounds off. You didn't make it and then have the engine crash did you?
Things tend to get lost sometimes when that happens
Nope, they are still there in the engine
Wish I could stop running into random uninstigated issues that completely prevent me working
As far as google knows, this issue doesn't exist
IF you make a brand new project and new perforce, can you duplicate the issue
I noticed unreal had the wrong user stored in the settings, stuff got messed up I think when I was modifying stuff in the Saved folder to fix yesterday's engine bug. Putting the correct user fixed this bug
Yeah that can get you for sure
so what's up with this?
Strange, sorry man. Wish I could help you but I'm at a loss too. I've only tested that once and it showed up for the other guy without me having to setup anything
the errors went away, but where is this located?
I'm not sure exactly...I assume the Local ones are in the Save folder but I imagine that the Shared ones are placed somewhere else
So I got it working for a NEW shared collection but I can't do it with an old collection
how much is perforce?
i know for 5 seats its free but like between 5 - 10 people?
id budget $450/user/year
thanks.
is that first 5 people free and then 450 for an additional 5 people?
nope thats for everyone
if you have more than 5 people then everyone is on a full licence
so your original free 5 people are now costing you $2250USD/year
double that for 10 people
averages about $45USD/week for 5 people
damn thats a lot.
using github and sourcetree at the moment by myself, just wanted to think about the future.
but its getting annoying just seeing binaries in the change list so might swap for my next project.
what does binaries in your depot/repo have to do with extra people though?
i wanted to know about how much it costs but i was just saying i might swap to it now instead of waiting until i have a team because i would like to diff and see changes.
you can diff changes in github and sourcetree already though?
this the only thing i know about that shows changes
you cannot diff binaries
you can set up your mergediff tool to diff a text version of the binary but that might only work for p4v
when u connect unreal to perforce u can diff blueprints?
oh you mean in editor, then ye. that shouldnt be dependent on your source control though since the editor supports git?
o can u?
ill look into it. haven't done too much research into cos i was trying to learn about git and perforce last year and jsut using source control in general
cheers for hte help
I'm getting an error while trying to submit files to depot on P4:
d:\Project\SomeFile.uasset - file(s) not in client view.
I checked stackoverflow but I didnt understand anything as I'm not experienced with P4 much
Can anyone explain what could be the issue?
There are also multiple different answers for same question on the web which isn't helping much to me to understand what's going on
This is happening on a fresh depot, and fresh workspace
apparently this error can happen if you are trying to submit a file that does not belong in the mapped folders. eg if your your workspace root is D:/Projects/Foo and you try to add D:/Projects/Bar/baz.jpg, it will yield that error
Hmm, no I put everything inside of the workspace root
Is there any chance this is a depot/server related issue?
ah alright. im not competent enough with p4v to try to remotely diagnose stuff sorry π’
No worries, thanks 
i thought i would try to help though and hope that was it
You should probably share your workspace properties and the actual file location
Actual workspace root:
D:\ClientProjects\ErenSM
One of the errors with full path:
d:\ClientProjects\ErenSM\Content\ProjectName\Blueprints\Items\Equippables\Something\Something2\SomeAsset.uasset - file(s) not in client view.
How can I check workspace properties?
I'm pretty proud of this
What would be causing this warning/error on start up?
"LogFileManager: Warning: DeleteFile was unable to delete 'C:/Perforce/Circadian House VR Experience UE5/depot/CH_VR_Experience_UE5.1/Config/DefaultEngine.ini', retrying in .5s..."
Is it related to Perforce? Should I make that file writeable?
Question.
I am trying to set up AWS with Perforce now.
What should I pick for P4D instance? Will have at most 3-4 users
IMO don't skimp on drive speed.
It will have a real impact on the amount of time you spend waiting.
I'm not sure tons of RAM is needed. 8 GB maybe, give or take?
Unknown how much of a difference CPU count makes. It's going to be mostly idle, but when you want it to do stuff, it's nice if it has some cores.
Again, how much do you want to spend to reduce time you spend waiting.
@hardy merlin ^
Depends, tbh I rather spend as little as possible at the start, then scale up, as so far there are 2 people on the project, so updates wouldn't be very frequent, so waiting isn't a problem
The waiting happens every time you try to submit a change to the server.
It's not just a matter of how many users.
If cost is your main consideration, then you can do 1 CPU and slow hard drives.
Just know that the price you'll pay will be in extra waiting.
Yeah, I know, I will likely do the submits in the night, before taking a shower and let it run 
I use Git daily and don't have any issues with it since 2017. What should I do, do you have any advice?
linux VPS with 1 core and 512 MB ram will very easily support a few people for small project
general ram requirements supposedly scale with project file count+size
I dont understand something about source control of github. If my project is 10 gb, how can i save it there if the limit is just 2 gb. Projects in unreal can get big really fast.
Is there a way to not upload things like textures and meshes? Or upload just the code? How does it work?
That limit is for non-lfs repos I believe. If you are using git you'd use the Large File Storage extension (LFS) and those limits don't apply. Different billing limits do though, so you'd need to buy data packs from GitHub to accommodate your storage and bandwidth usage. I hear Azure DevOps offers git+LFS repos free, but no idea how long that'll last.
You can just upload code, but it is recommended to use version control for assets too.
I've heard of some teams using git for code and svn or p4 for data, but that's definitely "you're on your own" kinda situation
Submitting a lot of files through p4 (100k+, 200 GB+) resulted in p4 hanging and not continuing with the submit. E.g. it gets to file No. 17k, and it stops there. I spend the day doing the submits in chunks, but preferably I would do this in 1 submit if I need to again in the future.
Any ideas what could cause this something like this?
I had a lot of problems like this when submitting the engine source. In the end I found p4v much more reliable for a big submit.
I started a ticket with Perforce support but we never managed to get to the bottom of it.
I guess it will probably become a problem again if/when we upgrade to 5.2!
Did Perforce support give you some suggestions as to what it could be? Sadly I had this issue with both p4v and p4 cli.
Luckily the source has been submitted now, and I don't have to do it again in the future π .. hopefully
We went down a few dead ends regarding networking setup and some SSL warnings in the logs, suspecting our P4PROXY setup, but tbh we didn't really get any leads. We enabled a whole bunch of additional logging on the server but never found anything that identified what the problem might be.
Once I successfully submitted the engine files I didn't have a test case that could reproduce the problem, so the ticket got closed due to inactivity.
I was able to submit multiple multi-GB test files with no problem. So possibly something to do with submitting a huge number of files, idk.
I also think it's not related to big files, as it also happened after submitting 1000s of very small files. The server doesn't seem to be struggling and then the client just stops submitting out of the blue. Server is fine though, it's the client that becomes completely unusable.
I'm having a crazy time getting perforce working. One step forward two steps back style. At workspace / project setup. Can add the folders to the depot, but perforce doesn't add anything. Says no open files. It sees them, they are in the drop down. Just can't submit them. No files listed.
Did you mark the files/folders for add?
Yessir, and says there was however many thousand. But on submit, no files in the drop down.
Do you already have the files in your depot? You might have the option to revert if unchanged enabled?
have you tried reconciling the whole workspace?
Are you following a certain guide?
Was following perforce website, then unreal perforce video on YouTube, now I'm grasping at straws. Nothings working out. Is there a good guide out there?
On one of my computers where I set up a Perforce workspace, it's always creating a "depot" folder where on another computer with a different workspace, it doesn't. Any idea why?
Here's more details on what its structure looks like. Do I want that "depot" folder their? On my other computer it doesn't have it.
I suggest the Helix Core Quick Start Guide for Unreal https://help.perforce.com/helix-core/quickstart-unreal/Content/quickstart/game-home-quickstart.html
This manual provides information on configuring the Helix Authentication Service (version 2022.1, released in 2022).
Problem solved, stream was missing.
Sounds like you might have mapped the depot differently on both computers
Yeah, seems like maybe a path was set as share //depot/... rather than simply share ...
Or perhaps the real intent is something like share //depot/stream/...
or I guess the view change in the workspace
It won't let me do it without depot in there which is weird...
what are you trying to do exactly?
Hey there, I have released a new version 1.8.0 of the Plastic SCM plugin for Unreal Engine 5, with support for Shelves within the new Changelists UX π
https://github.com/PlasticSCM/UEPlasticPlugin/releases/tag/1.8.0
with some luck, I can get it merged for the upcoming release of UE5.2 π
Though I fear that's playing too fast.
I'm just trying to be better at source control ahaha. If it's not an issue that's fine with me.
For example, this is what my Workspace mapping looks like. Is the fact it's adding "depot" as a folder one level below my Workspace root because I have it selected as "include tree"? Can I not include it as a "tree" and still include the folders below it?
TBH I don't know why you are messing with anything like that lol
perforce is very easy to set up β ignore most of the stuff not mentioned in tutorials lol
I'm learning more about source control, and for the last year my small team has just been using the local "depot" as our repository. However, we have to deliver a version of the project to another developer which is more or less a "first release" but we want to continue working on it ourselves. I have learned this is the point of "streams." My question is, since everything is in "depot," what's the best way to switch over to the "streams" workflow. Should I create a "streams" depot with a mainline, a ew Workspace on my local computer, and then copy the project files from the old Workspace to the new one? Then do I upload those files to the server? What about server space? Should I be deleting/archiving the old depot folders at some point?
Oh yes I see
Ahahaha okay I'll ignore it
Yeah!
I've also created a main stream
This is all in a separate Workspace which I learned the hard way
to prevent disk space from being wasted, don't create lots of streams that are populated with files
There are different types of streams, some of them do not use any disk space
Okay, but once I upload these new files to this main stream, what about my depot, should I just delete it and then get everyone on our team to pull from the new mainline?
Well the new stream depot you obviously want to keep.
The old depot, that depends on if you care about its contents or history. If you know you don't want anything else from it, and you are 100% positive you've gotten all your files from it into the new stream depot, then yeah you can delete it
Thanks! Sounds good.
When you say some streams don't take up space, what do you mean by that? Is there documentation where I can read more about this?
Cheers!
Virtual streams take zero additional disk space for file storage. Task streams are as lightweight as only the files you cange (until you change 50% of the contents of your stream). But also, depending on how you specify paths and propagate files, you can have a normal stream be lightweight too, and contain only the files you want it to. e.g., set the path to share /SpecificFolderOnly/... vs share ...
Thank you! And then one Workspace for each stream, correct?
Yes one workspace per user. Each user can move their workspace around to different streams
Slowly but surely understanding this, so thank you for your help!
no problem. I just went through that process of slowly and surely understanding it. I have a fresh recollection of all this so feel free to ping me to ask questions here
Thank you! Maybe one more thing. As you might have noticed in my photo, I have a "game assets" folder and a folder for "PureRef" files. We sort of use these folders like a Dropbox/Google Drive so that everyone has the latest assets in case they need to edit something. Should I make a "stream" for this sort of thing and not include it in mainline?
Or should those get moved to an actual Dropbox/Google Drive? What are your thoughts on that?
Interesting.
I have not thought about this give me a second
So like, that is your actual art creation source assets that are used to export the assets that you actually keep in your game project, right?
Yep! Like RAW texture sets, untriangulated models, uncompressed animations etc.
I know some people do store thos in perforce
It depends if you want to track every single change, etc.
but yeah where it is located doesn't really matter I don't think
you can create a whole separate depot if you want
Makes sense actually
I might just move them to Dropbox or Google Drive though
Especially if it's not something that's commonly practiced
stream, IMO, makes less sense. A stream seems to indicate that it is a whole thing. If you don't wanna make a depot for the assets, just include them in a folder in whatever stream you want them to be in
but only store them once β don't branch them
yeah Google Drive will store some limited version history for you
so it's a nice balance of disk space and safety
Thank you!
no problem
you're welcome
The perforce docs are confusing at first. They are broken up into different guides, and sometimes one guide will go into detail in an unexpected area, and some other guide will link you to that other guide. But, once you figure out what guides there actually are, you get more familiar with the tables of contents. Here are the guides you will need, IMO:
Welp, apparently markdown links don't work in discord lol whatever
This is mad help! I started searching them and they're very good as far as documentation goes. Thanks again.
Is there anything on my AWS server that's not in my "Depot Tree?"
I'm always wondering how stuff gets truly deleted from the AWS server. Does it like empty its own trash for you?
The depot tree is only what is the file contents. There are db.* files in your perforce P4ROOT directory, as well as the journal file, any checkpoints that were created, and a main log file (among other less important log files). Then, obviously, there is the server software installation itself but that has no bearing on your individual project.
The server should keep itself pretty clean, but if you make new versions of files, the space will get consumed more and more. I'm not familiar with any specific tasks that need to be performed to clear out any temp cache or anything.
The section in the Helix Core Server Admin Guide on Backup and Recovery talks a bit about the files that are needed to recover the server, if that is what you're interested in.
Basically, you only need the versioned files which are stored in your depot folders, any checkpoints you created, the newest journal file and that's it. But read the docs.
Thank you!
hey everyone, I started using github for my unreal engine game, is it okay to do this? Do I need to enable something to allow for 3d assets that are large in size?
When I log into my AWS server to increase its disk size, I noticed that it says there is upgrades available. Should I be doing these?
I think there's some YouTube videos on using Unreal Engine with GitHub
Can someone help me understand the Perforce workflow for branching? I've got some pending changes on a //Project/Dev stream that I would like to branch off and work on separately. Using git I would do git checkout -b "branchname" and my pending changes would follow. is there a p4 equivalent?
I've got a question regarding the Perforce "streams" workflow. If I have a setup like "mainline" and then "dev1.0" can I just use one Workspace and drag the Workspace icon amongst them? I saw that in the documentation. It would mean that I don't need to create multiple copies on my local hard drive. Is this correct?
Yes this is correct.
yes but be aware this can be slow if there's lots of changes between the streams and the server is remote
Perforce slow? How dare you to say that! </sarcasm>
Good Annoying, Fast Slow, Cheap Expensive - you can pick any two all three!
Additionally, does anyone know how to delete unnecessary files? on GitLab am I doing this using Housekeeping but on azure i have no idea how i can do it
hey guys , i have manually deleted one file from Workspace (Perforce) but not from Server , only from workspace , and now i want it back . File exists on the server but when i do "GetLatestRevision" this file isn't getting downloaded . All other files are getting updated , but only that deleted file isn't getting downloaded , Why ?
because it thinks you already have the file. Use "Get Revision...", set it to latest, and enable "force operation" to force it to redownload the file.
Yep, force get latest is the answer. Reconcile can also help to find any other changes in your local depot that perforce isn't aware of, and then you can revert them.
Is it expected that Locks on GIT LFS don't release when Discarding a Change to a file?
Cause I can't revert a UMAP in UE (doesn't want to cause the Map is "loaded" (even if I never open the map)) and discarding it in Source Tree isn't releasing the lock
I can't expect every person that works on the project to use 3 different things to manage the files (UE, SourceTree and Git Bash to manually unlock files..)
Apparently, SourceTree doesn't support Locks. It doesn't display them and has no options to lock/unlock. ..
Which explains while discarding ins't unlocking (if it's supposed to)
Uff, and the bug that files that are renamed and marked for add aren't being marked as writeable is also annoying :D
How do you merge two branches in Git? I mean, if the difference between one branch and another is 20GB, doing a checkout on the main branch just to update it with the contents of the feature branch is a hopeless idea. Is there a way to merge/rebase without having to switch to the main branch
do git rebase <branch_name> where branch_name is the name of that huge branch u don't wanna checkout.
You can also add -i to make it interactive, so you can squash commits or reword the messages, or drop them, etc.
In what situations should you use interactive rebase over standard rebase? This article answers that question and explores what a git rebase is.
It will probably take just as long as checking out that branch but either way it's a good way to put some new commits ontop of old commits when the old commits had no knowledge of the new commits when they were made (Ie, they do not relate to the new commits)
I use GitKraken. Resetting Git files seems to work fine in that case. The editor doesn't ever get notified that the files changed.
This isn't really an issue if you just don't use the editor SCM tools when connected to Git.
Diff, sure.
But for commits/resets, use a real Git tool IMO.
This is just one of those things that's annoying about Epic having gone all in on Perforce.
You'll need the editor to ensure people don't modify binary files twice
And GitKraken, based on what I googled, has no proper lock support either
Right I haven't attempted locking with Git.
Just editing. Locks are on the honor system with Git.
That's why I had to move to Perforce. π
Git is still great for small teams, but there is effectively no file locking.
lfs locks exist, they just suck
as has been noted, half the git GUIs out there don't even support them :/
That's because the idea of preventing people from modifying source is about as alien to Git's core design principles as you can get. π€£
What programs should I use if I'm just starting out and how should I do multi user editing with my friend
That's a very broad question but if you are talking specifically about source control there is a few options. Perforce is the industry standard but git and plasticscm are also used as well as svn. You can get free git+lfs (which you will need for unreal) on github, but you are limited in space I believe. Perforce, svn and plastic you will need to pay for hosting, or host your own server. For front end software, perforce has p4v, git has source tree, fork, gitkraken, tortoisehg, github desktop and probably 10k other clients. SVN and plastic I have no idea
ok
that sounds like a lot of work, right now I'm using git and still have to set up the multi user editing
I haven't really done much work like this before, do you have a good tutorial or something?
Not on hand. Is there a particular reason why you want multi-user editing?
@lilac scroll Sorry for pinging you, but based on name and profile picture: Did you release some Git LFS Scripts on GitHub for Un-/Locking?
Ah nvm, had a question cause I couldn't get them to work. Seems to have resolved itself with a turn off/on :P
It's sad that one even needs those scripts to unlock all locked files when working with Git LFS and UE
I had like 30 or so locked files from yesterdays session, which all didn't unlock cause I pushed outside UE (I guess UE would have unlocked them).
And Git LFS only offers single file unlock commands (..)
Can't you use git hooks to run the scripts?
Afaik there are no git hooks for local discarding for example
PlasticSCM being the quality product again
But that product will remain uninteresting until they add the ability to obliterate files from the repos.
what about git lfs unlock *
How do I unshelve these files? I keep getting this error too.
Yeah, my git stuff is here: https://github.com/sinbad/GitScripts.
Pretty sure it wants a proper file name
Yeah got it to work now. Had a bunch of locked files and couldn't be arsed to unlock them by hand :D
Yep, I never unlock individually unless itβs via revert in the UE editor, which does it
Yeah it doesn't for me if it's a umap
UE just doesn't want to unload the level :D
As well as if users don't commit through UE
The editor does tend to shit the bed on revert/reload sometimes esp with maps
Yeah currently pushing for the idea to expose an Editor Widget in the Git Plugin that shows all current locks + the ability to unlock them one by one or all selected fwiw
pretty sure that's easy enough to add given the Plugin already has GetLocks etc. logic
Would help not having to use git bash to resolve locks that are stuck
Anyone have experience with perforce and diffing for blueprints?
It works, but if I have the project open and I diff from perforce, it opens it a second time rather than using the one already open. There's gotta be a way to not do that...right? π€
you can do GIT_LFS_SKIP_SMUDGE=1 while checking out to avoid downloading anything
@faint cairn sorry for the delay by the way with fixing everything, i am unfortunately dealing with lots of sudden and urgent work elsewhere. very stressful but eventually i will get it done, by March
there's 2 revert modes in the git plugin:
if you have changes, it will only revert the changes and keep the lock. this was to facilitate behavior where multiple iterations of the file would be done after experimentation. the second revert while checked out but not modifications will unlock. however, auto checkout and other features have improved in unreal. so it may be better now to just do both always.
also, I'd be interested to know what your use cases are in using something like Sourcetree, I think you said you use this for submitting? Why is that?
Habit, I never used UE to submit via P4 either. The only reason I have UE with SourcesControl is to actively know when an asset is checked out.
I usually revert/discard outside of it cause UE crashes half the time (or in this case doesn't even revert some files), I organize change lists (commits) outside, I push outside. I do diff Blueprints in the Editor from time to time, but that's about it.
No one in my team uses UE for pushing files. Neither with P4 or with git
Again probably just Habit
No worries. I updated our own repo of the plugin with whatever is latest on GitHub and updated the sub modules on our projects to point to the newest commit. Will see if some stuff maybe already resolved.
The lock stuff is currently my biggest annoyance.
Having that extra window would probably resolve a lot of situations already.
Another bug I still have from time to time is that if I rename files, the newly created file that is marked for add is readonly.
Not sure what else I need to do, but I basically can't rename and then modify the file before manually removing the readonly flag on the file via windows.
Marked for add means it's staged iirc, but it's still read only, which seems a bit annoying :P I know perforce didn't have that issue
Also, shouldn't it be possible to inject context options into the right click menu of assets? SourceControl itself must be injected. Adding a Lock/Unlock option directly into the asset's right click menu should also be an option, even if the source control Provider stuff doesn't have that by default.
Hi there, I can't get rid of this shelved files list. I keep getting this error. These files were created when switching streams/workspaces.
This is what I get from Command Prompt
Hi guys I am trying to use TortoiseGit to avoid having to zip up my project for backups, Problems Using TortoiseGit I'm facing:
-How do I change the master branch to development branch
-How do I Ignore Folders
-How do I Ignore certain File Types
Okay its been a hot minute since I've done anything with Unreal and I'm not confident in the default GitAttribs/Ignores that I can default my repositories with that is meant for Unreal. Anyone got any suggestions for folders that can be ignored? I know intermediate is usually one but that seems to build a lot as soon as I create the project.
track only Source, Content, Config folders and only file that requires tracking in the root folder is .uproject that works for me.
Much appreciated. Kind of annoying how projects and repos have to be in empty folders. Have to move the project after creating it so that the gitignore properly tracks folders.
I used Git Tortoise for that as I found it's more like using Context Menu it's easier definitely but there are some naive issues I'm getting but overall i'm more satisfied with TortoiseGit then Github
Yeah I figured it would vary from repo and interfaces. Might have to give Tortoise a try at some point.
I'd say if you are comfy with one or the other don't change. it's chaotic like having two girlfriends or wives whatever fits for you.
I'll keep that in mind haha
.gitignore
Binaries
Build
DerivedDataCache
Intermediate
JSON
Saved
.vscode
.vs
*.VC.db
*.opensdf
*.opendb
*.sdf
*.sln
*.suo
*.xcodeproj
*.xcworkspace
This Git repo includes .gitignore and .gitattributes files that are great for a new UE5 project repo.
Hey! Has anyone used Gamelift with Blueprints (AWS) plugin from the marketplace? I'm having an issue with GitHub not tracking all the necessary files. Curious if anyone had a similar problem, and how they updated their gitignore.
Build should not be gitignored
this is typically where the automation project is, and on a lot of platforms, it's where a lot of build configuration files go
also that repo is GPL'd L O L
I just picked a random one. I thought GPL was free for people to use?
if I used these files, I would have to license my project under GPL
Build is not ignored. Only most of it. The interesting parts are whitelisted.
MIT better for free use then?
There are auto generated things in Build that should not be in SCM.
The configs are whitelisted.
I'll change the license to MIT.
no there aren't?
automation projects go there in bigger projects, platform build configs, and a bunch of other stuff which there aren't exceptions for
I figure any company large enough to deal with that is capable of editing .gitignore to suit their purposes.
This works great for indies and small teams starting out.
Changed license to MIT. Didn't intend to force anyone to use GPL for their projects. 
@mighty light I'm making a project with my friend
it would be nice if we coul both edit the project at the same time
Literally edit the same level at the same time in the editor?
Or just work on different parts at the same time?
Multi user editing is highly overrated for most use cases
I have a commit where I found a file to be over the size limit, i added a the file type to gitattributes but it is after the staged commit. I found this issue out on push so the stagged commit was already in place. Anyway I can force gitattributes to apply ahead of this commit ?
Actually this file is in saved folder is under gitignore but its not ignoring hmm
Why did you ping me lmao
@teal bone its a little late but I would like to be able to work on the same level but diferen't parts are ok too
it is just nice to be able to both be editing the same terrain so you can provide feedback and directly make changes
hey i'm faccing this weired issue every time i pull and merge git is adding these weired stuff in my source file
also in my defaultEngine.ini
Those are unmerged paths from Git, run git status, merge conflict if it happened after a merge. You'll need to resolve those.
That "weird stuff" you see is 2 revisions of the content you're viewing, it compares HEAD vs another commit.
The =====... is the divider, choose the revision you want to keep by removing everything on the other side of the divider up until the <<<<< stuffs.
To finalize the merge, you'll have to add the file again in Git to staging. e.g. git add DefaultEngine.ini, and commit these changes.
It's possible, but not good. You can use the multi-user plugin if you want to both work on the same level simultaneously. It's meant for LANs, though. You could probably set up a vpn or something.
@teal bone ok, thanks
I'd recommend using VS Code to resolve merge conflicts
it gives you a GUI for selecting which version to use
Yeah, I use vs code for a lot of random codey things.
I've been told by Perforce support that I need to upgrade my Perforce server. Has anyone done this before? Is there anything I should watch out for/be aware of? My Perforce server is installed on an AWS Linux machine.
I'm about to upgrade my Perforce server now too. Is there anything I should be aware of?
check the change log! i did an apt-get upgrade, i had to fix a few things i can't remember what
Thanks!
Can I raise the push limit? At least temporarily?
So wait, do I need to divide it into several smaller pushes to make it clear, since the total repo is over 5GB? Is that a problem that I will also have with pulling?
Wait. Am I really not supposed to have my art files included in my source control?
Binaries and what not?
Depends on your source control.
are you trying to use github without using LFS?
Would you recommend using perforce streams to separate stuff that goes into the live game from stuff that's in development or scheduled for later releases?
Quick question: WeΒ΄re planning to completely move to remote office and are currently looking into box.com for unlimited cloud storage to use with our 3D and editing department.
For Unreal Projects we currently have perforce setup on a VPS with attached cloud storage from the same provider.
Now weΒ΄re wondering if we could use the box.com storage for that instead.
Anybody have experience with this?
Or with Dropbox (as that is pretty similar)?
Is there a source control that will work with my art assets too? It would be a pain tracking them separately I think. Perforce is free right?
I dont think so, you need the VM of course, and the speed and latency of the depot storage attached to the VM is very important in my experience.
No, box.com is a separate thing
Fair enough!
Using Perforce is free. The server you'll need to host the Perforce server on together with some storage however isn't.
Yeah. Darn. It seems I'm out of luck for a free solution. Oh well!
I think Github LFS has 50 GB storage + bandwidth for free. You won't fit the engine source on it though.
It doesn't. I tried pushing to a GitHub repo and it complained it was too big after 6GB
You'll have to track certain files as LFS, otherwise GitHub will consider it as a normal file IIRC
I did. Didn't work.
Excuse me. Seems like the free option only gives you 1GB of storage and bandwidth..
My bad. Thought it was 50.
Yeah. Pity.
I will do the crude option and just upload a .zip to Mega once a month or so.
Or spend $5 on a cheap server, though I wouldn't know what Perforce is like on something like that.
You can also spend $5 on GitHub a month for the 50GB LFS storage/bandwidth, so you don't have to manage anything yourself.
@cyan jay Sorry for the ping but thought it'd be nice to let you know.
P4V doesn't make use of parallel submits by default. I've unchecked that and let p4v do submits using 8 threads. Besides it being faster, it also seems like the problem of the submit getting frozen has gotten resolved.
Downside is that you can't check in on the progress of the submit.
Azure Repos has free storage, but only up to 3 or 5 users (can't recall), then you pay for additional user only
I was, before I switched to GitHub. But I can't push more than 5GB at a time, or something.
With Azure I mean.
This is only for non-LFS files, probably you are missing something in your .gitattributes or added a first version of the file before including the .gitattributes
that could be. I think I tried it again and it worked?
Oh, were you talking about GitHub or Azzure?
This is not the only way. Depending on your project needs, it might be a bad choice to separate everything into multiple streams. Here is a GDC talk given by a tech lead at Rare, discussing their single-stream model for the service-based game Sea of Thieves.
https://www.youtube.com/watch?v=cKfz2nEgaX8
Thanks!
hello, i need a bit of advice, i am using perforce for my project, but a plugin provider is using git, I was thinking it would be great to be able to use git inside the project, pushing changes on branches to the plugin provider and committing gold code to perforce
i am only using the free edition of perforce
Anyone here used Helix4Git to import a git repo and its history into p4? From the limited documentation it seems like that should be possible. Also is there an easy way to install Helix4Git without having to wait to hear back from perforce?
hi guys i am having a bit issues while trying to clone Unreal Engine repo , any ideas how to fix it ?
error: RPC failed; curl 56 OpenSSL SSL_read: error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac, errno 0 error: 16730 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet fatal: early EOF fatal: fetch-pack: invalid index-pack output Completed with errors, see above.
Has anyone tried to integrate Sonarqube for static code analysis into Unreal projects?
I have tested multiple integration methods, but I am sure someone has a better approach. Currently, my setup involves using Sonar Community with the 'sonar-cxx' plugin. Below is the contents of my 'sonar-project.properties' file
# must be unique in a given SonarQube instance
sonar.projectKey=PROJECT_KEY
sonar.branch.target=master
# name displayed in the SonarQube UI
sonar.projectName=PROJECT_NAME
# path to the Unreal project root directory
sonar.projectBaseDir=./
# version of the project
sonar.projectVersion=1.0.0
# Comma-separated paths to directories containing Unreal source files
sonar.sources=./Source
# Comma-separated paths to directories containing Unreal header files
sonar.cxx.includeDirectories=Source
# SonarQube server URL
sonar.host.url=https://SONAR_SERVER_URL
# SonarQube authentication token
sonar.login=XXX
# Encoding of the source code
sonar.sourceEncoding=UTF-8
I have also tested SonarScanner.MSBuild based on this documentation https://docs.sonarqube.org/latest/analyzing-source-code/languages/c-family/#solution-with-mix but I did not get it to work properly.
C/C++/Objective-C analysis is available starting inΒ Developer Edition.
Hey guys, first time poster. My buddies and I are making a game in unreal and I was wondering what you guys use to distribute code/source control. Git hub caps at a ridiculously low amount of data.
Perforce is the "standard". It's what epic uses, and some tools are designed with it in mind. As for gitlfs, it's usually cheaper to host your own with gitlab or something, but that ofcourse has it's own complications. I hear Azure DevOps offers free unlimited LFS storage, but i personally wouldnt bank on that lasting forever
Thanks!
You could also use an AWS EC2 instance to host your perforce server, it's what I did in college. Epic has a learning video somewhere on it. All though I think the free tier caps out at 50gb
Any suggestions?
.vsconfig
{
"version": "1.0",
"components": [
"Microsoft.Net.Component.4.6.2.TargetingPack",
"Microsoft.VisualStudio.Component.VC.14.33.17.3.ARM64",
"Microsoft.VisualStudio.Component.VC.14.33.17.3.x86.x64",
"Microsoft.VisualStudio.Component.VC.Tools.ARM64",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.Windows10SDK",
"Microsoft.VisualStudio.Workload.CoreEditor",
"Microsoft.VisualStudio.Workload.ManagedDesktop",
"Microsoft.VisualStudio.Workload.NativeCrossPlat",
"Microsoft.VisualStudio.Workload.NativeDesktop",
"Microsoft.VisualStudio.Workload.NativeGame",
"Microsoft.VisualStudio.Workload.Universal"
]
}
What do you think about UE5 EC2 instant?
xd
Its source related tho isnt it?
No, source code is not related to source control
Oh my bad.
What do you mean "UE5 EC2 instant"..?
Hi guys, is there anyone with tests setup on Helix Swarm?
I have an issue that my testjob failed on Jenkins because I have not setup any parameters in its body, but the test is still ongoing on Swarm side :/
And I dont see any way to cancel it.
Even restarting Swarm didnt do anything...
Do any of youguys know how to cancel a test currently in progress in swarm?
Hey I know this has been ages, but did the recommended steps resolve your issue? I have pretty much the same issue atm.
I can't see my message. but, if it's related to the setting root to digital ocean volume. yeah that worked.
Okay that's good news. And is it just setting the root in the config or does it involve more?
there is this kind https://github.com/ScottArbeit/Grace
Iβm trying to gauge cost expectations running a Perforce server in a cloud backend for a fairly large scale project (approx 20GB + history). Any recommendations for a particular backend?
Not more than 5 users? The cost of the server will be insignificant compared to the cost of perforce if you go over 5 users.
I use Gandi.net... Lots of other popular options if you look around... Digital ocean, linode, maybe Amazon
I spend around $20-25/mo on a server for 5 guys and 100GB storage, unlimited transfer
We switched to Contabo recently. Best price point I found for large storage and performance is good.
https://contabo.com/en/storage-vps/
Hi ! I have a question about general-workflow with outsource developers. Probably I need to setting up sounds for my project so I will hire a developer for this. But I don't want give him full access to the project with full code base. What should I do? In my head I have remote machine with project and files marked "only-for-read" . So developer can read and use it but not send to anyone. Are there any services that provide such capabilities? Or Do I need to use another solution?
I have a perforce server running on a Digital Ocean droplet and I'd like to move it to the volume I attached to it. I know I need to move the root folder (by changing a config file?). How do I do that? Do I need to shut down the server for instance?
Stop the server, move all the files from the old root to the new root, change P4ROOT (or in your config files / service task command line etc, depends how you start your server), then restart server.
There's no way of stopping anyone from copying your files and redistributing them.
You either need to trust them, including setting up the various legally binding contracts etc, and give them the full project access.
Or they can just send you wavs and you can hook them up yourself, where they have no access.
Awesome thank you! By moving you mean simply using the mv command?
that should be fine
Ok thanks a lot π
recommend you take a backup first of course π
Well we have the project locally and the repo is kind of new so I think that suffices? Or should I backup the server itself as well somehow?
It's up to you! Worst case, you accidentally mess it up and have to build perforce server from scratch. You lose all your history to this point but you can restore from local files.
Maybe your VM provider allows you to take a snapshot of the machine you can use as a quick and easy backup?
Ah that's a good idea
I was also thinking I could just copy the files instead of moving them. And if it worked, delete the old ones
But I'll do the snapshot, already found the option to do that
sure you can do that, as long as you can ensure your new p4d setup is referencing the new root
you should stop the p4d service before taking snapshot so it's in a known state
just in-case anyone is checking in files half way through
also... don't wanna be THAT guy but you might want to think about a proper regular backup system for your server.
Ah good point
We're using a Digital Ocean Droplet and backups are enabled so should be fine?
Does that also backup additional volumes?
snapshot backup is an OK solution but it has some drawbacks such as: how do you backup additional volumes? what if snapshot is taken while someone is submitting files?
Using proper perforce backup addresses these issues but is a lot of work to setup.
Hmm okay I'll have to check about the volumes
Is it that much work to setup?
Depends π
Things you need to do:
Make sure server is regularly generating checkpoints (this might be done already depending how the server was setup).
Setup regular task to copy checkpoint and depot files to an offsite backup (I use wasabi but any files store will do).
Test your restore procedure periodically!
oh boy this is turning into a much bigger task than I thought haha. But better safe than sorry I guess
So you're kind of setting up version control for your version control?
Well, you're just grabbing the files and metadata every night, or whatever frequency you decide, and storing them in a different data centre. Then if the datacentre goes down, or your instance gets corrupted etc, you have everything you need to restore the server.
Yea okay makes sense!
@cyan jay so I'm fairly new to linux. I've been able to do everything so far and am getting used to navigating it. I'm trying to do mv perforce_depot -target folder name- and it says mv: cannot stat 'perforce_depot': No such file or directory. But I can just do cd perforce_depot and I'm in it. Also when I do 'ls' or 'tree' I can't see it but I can navigate to it. So i'm a bit confused about folders and file types and visibility here.
hmm, you might need to move it as sudo user?
if you run ls -l does it show up?
what about sudo ls -l ?
you gotta make sure the owner and group settings are preserved when you move them
so not sure what that means
sudo <cmd> means 'run <cmd> as root user'
so sudo ls -l means ls -l as root user (so nothing should be hidden based on permissions etc
Yea I figured. I meant I'm not sure what it means that it shows up in neither list
but I can navigate to it from root
ok thanks I'll try that!
oh hang on... the folder is /perforce_root ? if you do ls -l / does it show it?
Thank you. Then I will keep thinking about it
oh yes lol
what does this mean?
ok so mv /perforce_depot seems to have triggered something. Should've probably added some argument to see what's actually goin on, but I assume it's moving the files right now
Ok @cyan jay I got it moved to the volume and it's working again. Thanks a lot for your help! I'll look into backups as well
I read that the volumes of Digital Ocean are replicated over different machines to prevent any data loss. So I'm not sure if any additional backups are necessary. I can also take snapshots once in a while as extra measure. Do you think that's safe enough?
All depends on your appetite for risk! It sounds pretty good but they probably don't guarantee data integrity. I wouldn't rely on it for a company that was responsible for their clients data for example, but I might use it for a small company that was working on a prototype.
Hmm okay I see. And you recommend setting up a backup system with perforce itself to another separately rented server?
So when I initially set up our perforce I included a bunch of directories that should probably not be synced with the idea that nobody getting the repo would have to build lighting etc. Now I want to remove them from the repo, but if I do "mark for delete" the files will be deleted? So I can use a P4Ignore, but what happens to the files already on the depot that are now being ignored? Is there an easy way of cleaning that up?
Not afaik - you need to either backup the files locally, delete them, then copy them back. Or if they truly are temporary then you should be ok to delete them and regenerate them locally.
Actually looks like you can use the cmdline and p4 delete -k to delete it but keep the file locally.
that deletes it from the depot?
yep.
if you actually want to delete the versions from the server, you can use p4 obliterate command
Oh okay so "delete" doesn't remove the actual files but removes them from version control? And obliterate actually removes the files?
well, the deleted files still exist on the server as older versions. if you don't obliterate them then you can sync back to an old version.
Hmm ok. So delete removes any future revisions, but you can still access the original through perforce directly?
Hi!
I've a problem with the source control plugin for Unreal with perforce and a source built engine. Right now, assets using engine resources are not passing the plugin's validation, because they're not under source control:
the grace what i linked is said the evolution to git what is centralized version control
I have a perforce depot that was initially setup with a complete and large Unreal project. We didn't use p4ignore yet so none of us would have to build lighting etc. Now I've added a p4ignore after the fact (I know it's not ideal). Now we can sort of work as intended but I wonder if it would still be better to remove the files that are being ignore from version control entirely? Seems like a bad way of working with it, + all these files are read only which might also bite us in the ass later on. Thoughts?
No more than 5. Thanks for the suggestions. I'll look into it π
Thanks for the suggestion. I'm weighing it all up this evening π
Is there a command that returns the sum of sizes of all LFS files in the repository?
It's not uncommon to set p4 to automatically delete anything but the latest few versions of lighting builds and DLLs. Anything that can be rebuilt doesn't really need to exist in p4, but it can be convenient for the team to sync so not everyone has to build everything
in our team coders use a separate virtual stream which cuts out DLL files from their workspace, and artists use the normal stream which has DLLs. a build machine creates and uploads DLL files when there are code changes so that coders don't have to worry about managing DLL files, they just code.
if you just dumped a whole full running project folder in there without an ignore.... did you include Intermediates and Saved folders and other temp folders as well?
So you wouldn't say it's a bad idea to leave all the versions 1 files that are on there be in case new team members join or one of us sets up a new workspace? Another issue is the typemap, I've made some changes to it, to only keep one or two versions of things like light maps, but the typemap only applies when the file is added to the repo it seems.
Oh that's interesting. I was already thinking about what to do with that because I wouldn't expect everyone to build from VS but on the other hand it's not great to sync all that build output.
And kind of. I joined a long existing solo project and the dev removed what he felt comfortable with to start with. I knew it wasn't the right way, but I didn't know his project and setting up a perforce repo well enough to want to mess with it and figured I'd just exclude stuff after the fact. One of the reasons was stuff like light maps that take a long time to build, but I didn't know at the time those were in the same folder as the maps themselves so I guess I could've excluded a lot more from the start.
Actually I'm kind of considering setting up the repo again from scratch just to get the most out of the typemap and p4ignore
But on the other hand we have the benefit that setting up a new workspace comes with a lot of generated files so it might not take as (a lot of this might not change as the game is out in early access and changing those maps isn't planned in the near future).
What's the trick to making perforce only keep a certain number of revisions for just ONE file ?
change the type of that one file
in p4v, right click file > change type
this will not delete old submitted revisions
this one right?
yes
perforce i hate you
this is the 3rd time in a couple years that it has just gotten some weird ass corruption on binaries files which i'm submitting from jenkins (everything else has always been flawless, literally just jenkins-perforce fucking up) ... have to go in and copy some dummy files in place to make p4d think that the previous rev of files is present... wtf. I guess this is what i get for being one of "those people" who commits DLLs
wtf that's.... not good. Are you incorrectly stopping the service/daemon? are you running the journal cleanup stuff?
quick question, do I have to do something extra to get undo'ed files to depot?
25 files branched
it is only seemingly caused by jenkins' p4 plugin, and only seemingly when parallel sync is enabled on the server. lol. twice it's happened before, and both times i solved it by ssh'ing in and copying some other random file .gz packages over in place of the missing ones to serve as scarecrows. but this time i'm extra
going to try and upgrade the server in hopes it was just a bug in the verison i've been using since forever
Hi everyone!
Quick question about perforce, does someone know how to exclusive checkout a file across multiple streams?
Quick question...Has anybody had some experience with setting up a perforce workspace on a cloud drive?
WeΒ΄re moving our remote office to box.com and ideally weΒ΄d save all our Unreal workspaces locally in our box-folder.
This way weΒ΄d have an extra backup should our perforce server break for example.
But IΒ΄m not sure if that would maybe lead to file locking conflicts or similar...
So maybe its better to save the Unreal workspaces on a separate drive and then set up a scheduled sync with a different folder on our box space, than the one we put the rest of our project files in?
Maybe I'm totally wrong, but AFAIK, if it's the same operative system (Windows -> Windows or Linux -> Linux) you should be able to copy the entire directory and it should work fine
Install the P4 server engine, choose the same root for the repository, stop the process, and replace with the folder coming from the other PC
you should have everything working normally. Users, checkouts, history, etc
Thanks, but thats not exactly what I was asking. IΒ΄m more interested in wether realtime syncing a folder into the cloud, that is also the workspace folder for a perforce controlled Unreal project might cause any issues.
Testing it right now and so far no issues.
Well, some issues, but none that could not be resolved.
If I want to exclude the usual folders I exclude in perforce from being synced in the box app, I need to :
- unsync the folders
- Close the box sync app.
- Delete the folders in the cloud.
- Start the box sync app again.
I tried unsyncing and then deleting the folders locally first, after unsyncing, but as soon as unreal started up, it created the folders again, and since they were in a synced folder, they automatically started syncing to box again.
I added some of the paragon content to my project a few commits ago and my pushes to origin are failing because of azures 5gb limit. I didn't mean to include them in my commits and have since added them to my git ignore and done
git rm -r --cached .
git add *
I'm even tried removing my entire Content folder so it shows like this in git status, that is where basically my entire project is.
but no matter what I do, my attempt to push to origin shows the same number of Compressed Objects and "Writing Objects" and ends up being too big to push. From watching it try to commit it also seems like it is the same objects that are large.
there must be some solution to this or is my project just screwed as far as azure is concerned?
Honestly, not sure why you'd want to do this. P4 workspace is designed to be local only.
i would second noggs 100%, i see no good reason at all to do something this odd. if you really want something like this, use a program like Syncbak and just automatically dumb-copy your project over into your box.com folder once every couple days and just know that it "exists" in case you ever need it for some reason
if you ever need it, you will very likely and unfortunately already be undergoing problems so vast that you will not care about losing a day or two of work
Is there a disadvantage to using source control if you work alone? I like the idea of file versioning and UE5's autosave function is useless. Every time I crash and need to restore it tells me the files can't be checked out from source control even though source control is currently disabled...
The only disadvantage is that it is additional setup and management. But there are considerable advantages including, learning professional processes, storing history, future collaboration, etc.
What source control package do you recommend?
I'd recommend perforce as it's ubiquitous in professional gamedev environments and integrates best with Unreal. It's free for upto 5 users, but it does involve some sysadmin work to setup.
Thanks! Sysadmin work I can handle. π
This gitattributes for lfs is okay? would they add something else?
I use this
hello, with perforce can i make a folder always RW?
We don't only work with unreal. We produce linear content for tv/commercials and we're trying to move all our projects to the cloud.
So, unless we are using two project folders on different drives/partitiona for each project, where one contains only unreal folder and the other contains everything else, we're gonna have all our local workspaces in the folder synced to our box account.
Hence the possible interference with syncing to box while perforce is syncing to the perforce server.
I still think you'd be better off excluding that folder from cloud sync. Just asking for trouble IMO.
Its my gut feeling as well, I'd just rather base my decision based on facts rather than gut feelings, that's why I'm asking for experience with this
Well you can always try it if you need facts. Maybe I just don't understand WHY you want this folder synced to cloud. Especially if you have to do a dance regarding unsyncing folders etc. Unreal development produces a lot of 'temporary' folders in various places.
I dont WANT to sync it to the cloud, it would just be the default, if we keep all project files, including the unreal project folder, inside the same drive, because the whole drive is a network mapped drive made from a folder in the box sync folder.
So, we'd have to create another drive outside that to store unreal folders, which just introduces an extra layer of possible confusion etc.
And which also needs a separate backup solution, on case our perforce depot breaks, which is running on a separate VPS in the cloud
Keeping Unreal stuff inside the top folder, but then unsyncing it might be an option, it requires additional steps every artist would need to take, but its probably not more than having to deal with separate drives .
And I AM trying and didn't have any issues so far, but you know, I don't trust that as empirical proof...:)
Please do not consider that to be a backup of perforce in any way. You have unknown state of files in each cloud drive, maybe not all files, no history etc. Perforce server should be backed up separately.