I don't remember the flags from top of my head... but iirc +l is the exclusive checkout, i.e. more than one person cannot work on it at the same time
+w means writable, since if you remember from when I've shown it to you, you first need to checkout the file before you can work on it (i.e. it's read only be default) meanwhile if you add +w it's writable and that means you can modify it even if it's not checked out
#source-control
1 messages · Page 21 of 1
exactly what klukule said, the w flag is usually just for bi-product like .exe or .dll files (assuming you were storing them, this lets them just update and be replaced with no effort)
Hello everyone,
I'm facing a significant challenge with setting up source/version control in Unreal Engine. Currently, I'm using GitHub LFS in conjunction with GitKraken Desktop. However, whenever I attempt to push my repository, the process reaches approximately 70% before disconnecting. I suspect this issue arises due to the large binary files involved.
To address this, I've tried adding data packs to GitHub, hoping it would mitigate the problem, but unfortunately, it hasn't resolved the issue. I've been searching for a solution without success, so I am now seeking insights from this community on the best practices for managing version control.
Any assistance would be greatly appreciated. Thank you!
Did you add lfs to your git repo?
yes
and its set up correctly to take in the correct binary files (and you did it before you added your project to the repo so you never committed/tracked those with normal git)
I believe I set it up correctly
FYI, leaving SSH on default port will cause your server to get hit by a LOT of spam... like i literally had several GB's of bot login attempt logs after not very long. it can be helpful to randomize your ports at some point. you have to be SUPER careful doing it, as you can lock yourself out of the house (if you just change your SSH port, but your firewall isn't set up to allow to that new port, you can't connect to SSH to open the firewall)
So, you mean that only after configuring Git LFS should I start adding my project files to the repository? If so, I believe I attempted to do it all at once
Yeah I would clone and setup the .ignore && lfs+.attribites and then make an init commit before bringing in the project
Thats the only thing I can think of, regular git just has a limit
You could also try a terminal - even just for the inital commit although I dont think it would change too much
(I use gitfork as a desktop client when I work with git btw so I never used kraken)
sounds like so much effort but needed, I dont have any extra firewall afaik so if I change the ssh port it should be fine but idk how. Can you give me a tldr?
god i hate git for game dev
UFW is your firewall
sorry I thought you were talking about the extra ones you manage from the hosting dash board (the ones they try sell)
how do you go changing or forwarding the ssh port 22
ah, there could be other options applied "outside" of your VPS i suppose but those aren't the norm... still look into it before you do anything
Yeah, I only use it for the engine fork and non UE projects
Personally I'd be careful about that, especially if you've never done it, as one bad move can cut you off the access unless your provider supports stuff like KVM etc.
yeah, some providers have like an emergency console where they give you root access to the raw disks through a temporary virtual machine
Thank you, I'm going to give this a try. Appreciate the help
well the way I see it, I can do it on an empty VPS and just destroy it once I learn it. its how I have stuff so far ahah, just a lot of effort though since I dont have some image its fresh every time
and in general, if you have decent enough password you can leave it exposed... yes, it might add some log attempts, but in general it's not that resource intensive to keep it open... though easy solution would be to set up your firewall to allow ssh access only from certain IP addresses if applicable
taht was first thought but what if my IP changes
but I think that if you search for something like open ssh change port ubuntu google will be more than helpful in this case 🙂
though again, be careful, since you also have to allow it through firewall first so you don't cut yourself off
the actual process to change it i can't remember, google change ssh port <linux distro> ... you'll edit a text file and then restart the ssh daemon process and then you'll get disconnected and have to reconnect
oh so I wouldnt be changing I would be opening a different port with ssh protocol and closing default one of 22?
(still changing but less confusing wording I think)
you open up the port in your firewall, change the port the SSH daemon uses (a config setting), then restart the SSH daemon and it will no longer listen on the default port
thks I will do this for sure later on a dummy one first
it might actualyl be possible to list multiple ports in the ssh config
don't know if i ever tried
I can google the rest, thanks
yeah at least one source says you can just write multiple Port lines for multi-port access... that would have saved me an hour once in my life lol
Hello! Could someone show me how to rename uassets with Git please?
I'm using the UEGitPlugin made by ProjectBorealis, but I have the same issue with the default Git plugin.
(Renamed BP_Taggable to BPT_Base)
(Fix up redirectors. BPT_Investor is a child of BP_Taggable, which is in the RoomConcept_Test_P level)
After fix up
(Mark BPT_Base for add)
The issue is that Git doesn't treat this change as a rename, and so I can't diff BPT_Base for any earlier versions since Git says this file was just created.
Also I'd prefer to not push anything to my remote repo until I know for a fact Git treats this change as a rename 🙂
Here is a long shot but you may be able to use the move command to rename it in a way that git can see, all that will be left is a manual redirector in your engine.ini you have to enter https://www.educative.io/answers/how-to-rename-or-move-files-in-git might help 
I am experiencing an issue with P4V regarding file management between our mainline depot and development depots. Here are the details:
We have removed five files from our mainline depot and updated the ignore file accordingly.
Despite this, when we merge changes from the mainline depot down to our DEV depots, these removed files are still being updated.
I just don't know what else to do .
Thanks for help! However I'm not sure if Core Redirects work for uassets
+ClassRedirects=(OldName="/Script/Papercut.BP_Taggable", NewName="/Script/Papercut.BPT_Base")
LogCoreRedirects: Error: ValidateRedirect(Type 2) failed to find destination Class for redirect from /Script/Papercut.BP_Taggable to /Script/Papercut.BPT_Base with loaded package!
The BP_Taggable asset no longer shows up in the content browser when git mv (ing)
Appreciate the help anyways though 🙂
That sucks dude, hope you can sort it out
Thanks mate 🫡 👍
Git should detect it as rename after it's committed (you don't need to push it). If you have Git client, it will show you the status as renamed
What happens if both streams are set to ignore before pulling?
Sadly Fork still says that BP_Taggable was deleted and that BPT_Base was added. I tried doing the same thing with other assets but I keep getting the same results. I appreciate the help though, thank you 🙂
blueprints are assets, /Script/ is exclusively for the native classes. your paths should be just names s if you renaming blueprints
Sorry, could you provide an example?
also you normally never write core redirect for blueprints as editor automatically replaces them in all used assets during rename / fixupredirects
+ClassRedirects=(OldName="OldBlueprint_C",NewName="NewBlueprint_C") <- _C is mandatory as thats the blueprint class
Cheers! I'll give it a shot to see if it works, but yeah I'll definitely look for a better solution 🙂
git is very bad at detecting binary asset moves, unless you run git mv manually. binary files change a lot
you can do rename in editor (without source control enabled),
then try magic
git reset oldname to recover old file temporary
rename newname newname_temp to save patched binary file after editor did refactoring
git mv oldname newname to make git staged move
rename newname_temp newname to replace file with patched file
but in most cases i saw everyone simply leaves files as deleted / new after binary renames
I'll give that a shot too, thank you!
I knew there had to be a way for BP assets, thanks
Sorry for the late response. I gave it a shot but I wasn't able to update the uasset references to refer to the new name. I'll just follow the herd and leave it be until I can figure out why Git (or the plugin idk) doesn't treat it as a rename. Seriously appreciate the help though, I've learnt a lot! Thank you 😄
Renaming in git will always be a delte + create operation rather than move, because the metadata of the asset have changed... so for git it's two different files
the only way for git to treat rename as rename for binary files is to have them remain exactly same. which in case of uasset rename will never happen (as internal binary data changes) or rename with git mv command
there is no way to manually tell "treat this missing file and this new file as rename"
Gotcha, my last bit of confusion though is that according to the plugin's ReadMe they do support renaming uassets. Probably missing something though idk https://github.com/SRombauts/UEGitPlugin (Under Supported Features)
I thought maybe this under Known issues, but I'm not sure how I've modified too much:
"renaming a Blueprint in Editor leaves a redirector file, AND modify too much the asset to enable git to track its history through renaming"
Are people storing their /Saved/ configs in version control? I only ask because without it you lose some of your editor customization
no, if need something to share i move it to /Config/Default .ini settings
for example live coding and some editor settings shared like that
Saved, Intermediate and Binaries folders usually don't go into version control.
Binaries can sometimes go if you're storing binaries in version control, but the others don't
Sounds dumb but just triple checking, the merge down, copy up method of main <-> dev streams is exactly how it sounds right? it will merge any changes down but do a direct copy or basically duplicate of the dev stream but on the main stream right?
I ask because what happens if you have many dev streams? You copy up and then merge the changes back into the other development streams (assuming you wanted those changes)
the merge down, copy up method is kinda just the UI imposing certain workflow, but sswires has said, you can just do p4 integrate which is the "merge" and do it both ways... I exclusively use integrate (and iirc so does epic etc..) especially because robomerge also only uses integrate.... and I've never had any issues with it
(I don't even remember the exact reasoning why it's set up that way in the UI anymore, I should probably re-read stuff again 🙃 )
my swarm still bugging out
Error in change specification.
'swarm' validation failed: ERROR: Swarm communication error (Couldn't connect to server)
hmm, this usually happens when swarm login token expires
the user you're using for swarm has to have unlimited session length
it does
swarm user with unlmited everything
but even the website is not working... so wtf/
ok, to be more precise, this means that perforce server cannot contact swarm as there's bi-directional communication
so, make sure the extension is properly configured etc.
it's php app, so there's no state
so as long as your apache is running then it's up
the redis server is running
perforce 28345 0.1 0.0 86756 8228 ? Ssl Jul08 8:56 /opt/perforce/swarm/sbin/redis-server-swarm 127.0.0.1:7379
what could cause my apache to just die
I'd check apache logs
wow someone doing shady stuff
[Tue Jul 09 07:15:25.421203 2024] [php:error] [pid 83230] [client 94.156.64.71:57142] script '/var/www/html/wp-apxupx.php' not found or unable to stat, referer: www.google.com
[Tue Jul 09 14:49:21.177171 2024] [authz_core:error] [pid 86744] [client 165.227.39.235:44900] AH01630: client denied by server configuration: /var/www/html/server-status
[Tue Jul 09 14:49:22.686855 2024] [authz_core:error] [pid 85894] [client 159.65.144.72:57554] AH01630: client denied by server configuration: /var/www/html/server-status
[Tue Jul 09 14:49:41.482538 2024] [authz_core:error] [pid 86744] [client 209.38.248.17:58496] AH01630: client denied by server configuration: /var/www/html/server-status
[Tue Jul 09 17:04:29.163478 2024] [php:error] [pid 588136] [client 213.136.93.171:42956] script '/var/www/html/wp-login.php' not found or unable to stat
[Tue Jul 09 20:16:10.881468 2024] [core:error] [pid 82986] [client 125.124.224.65:41330] AH00126: Invalid URI in request POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
[Wed Jul 10 06:49:44.105614 2024] [mpm_prefork:notice] [pid 28475] AH00169: caught SIGTERM, shutting down
but why did it sigterm
did you toy with php versions etc?
usually sigterm comes when there's error whiule communicating between php and apache or something like that
but that wold only make sense for php-fpm no?
I haven't used apache as webserver since forever ago, so not sure honestly
i mean i would have used nginx
all I know is that I'm running swarm inside a docker container and that's working flawlessly
it is
on my setup its not
perforce/helix-swarm is the docker image
and swarm can run independently from p4
they don't have to be the same machine
This is compose script that I'm using for my swarm
Do you mean if both the streams have the same ignore list, they do.
- forgot visible password
'swarm' validation failed: ERROR: Swarm communication error (<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://xxxxx/queue/add/98b8034e-4e6a-11ee-8ef5-0fe95ca08fa1">here</a>.</p>
<hr>
<address>Apache/2.4.41 (Ubuntu) Server at xxxx Port 80</address>
</body></html>)
``` grrr lol
here we go
that sounds like your perorce is trying to access it using HTTP
rather than HTTPS
and perforce does not follow redirects it seems
yeah i switched it to https
also I wouldn't expose Swarm or P4 directly to the internet, or at least without a strict firewall with an explicit IP allowlist
at a previous studio we actually made a pretty simple self-serve tool for people with dynamic IPs to update their IP if they woke up one morning and couldn't connect
both p4 and swarm are ok to be run via public internet, there are no known vulnerabilities - if you use latest versions - but yes, as always... if it can be hidden from public internet, hide it... better be safe than sorry
usually people tend to just hide it behind corporate vpn, or as sswires said, behind ip whitelisting
when working on a feature or re writing a system that isnt just a small "task" do you guys make a development stream and then delete in the future if you are all done?
in perforce sorry I should specify
They have sparse development streams, like light weight development streams and you can even convert them to dev/release later if you change your mind.
Its what I use personally and I haven't had issues, I don't know about the others though I am still fairly new to perforce
Does anyone know why unreal engine does not find a workspace in the server? It does not have any issues when I log in with the account they provided from the cloud which has admin rights.
The server correct since it works fine when I use the main admin account.
I am using helix core cloud
What comes up when you type p4 info in the terminal
I don't fully understand the terminal, is this automatically installed with the visual client and how do I access it?
Well I dont know how unreals p4 plugin works, I think it might use environment variables. If someone else knows more feel free to step in but for now I can try help with my little p4 experience I have
If it is embdedd into windows terminal then I just did what you asked and I get the following error:
Perforce client error: Connect to server failed; check $P4PORT. No such host is known.
yup
The visual client works fine when you are logged into the main account though
try set the environment variable then maybe p4 set P4PORT=ssh:ip:port
This is using the turnkey cloud solution from perforce on azure, I'm not sure if that changes things
I am not sure tbh, like I said I have little experience in all this, very new to it myself
just try that command but with the ip of the host and the port
yeah same here, I can use it when it works but when it breaks I'm lost
You might need to setup all your environment variables and then call p4 login
yeah I logged in via terminal
ill do p4 info
What is it you are looking for exactly as there is some sensitive data here
oh wow
I'd figure that loging into the visual client would have done this
Thanks a bunch
I have another problem with p4v, were currently running out of memory and we recently doubled our storage so I figure that I set something up the wrong way. How do I manage the file storage and free up some room on our p4v cloud azure server?
I paid for 800gb and just hope I dont need to worry about dealing with that or reformatting a drive/moving p4 to another dir
Cant help here
https://www.perforce.com/manuals/p4sag/Content/P4SAG/install.tips.disk_space.html mention of an archive
i have a question i used to work on unity with my friend i had the main project while he only make some scripts and send it to me and tell me how to attach it and what values i use but now when we switched to unreal engine 5 its almost impossible this way what is the best way to work as small team in unreal engine note that i use a mac and he uses a windows pc
Yeah, use a centralized source control and just work on the project together or in different branches, sharing files manually as you modify them sounds like a nightmare
yes it is 😦
turn that frown upside down
how can i undo what i have pulled?
If you overwrote your own local files, not much, unless they are already in a commit (git) or shelved in a cl (p4)
If you want to go back a step in git, you can check out an earlier version using the commit id.
so yeah i overwrote my files with other ones
but it dosent solve anything i already overwrote my files with the earlier version
it says there is some stash changes
Maybe they're in there?
idk is that it
it looks like those files but i cant get them
idk how to get that files back because they look like the ones im looking for
there's a restore button there
undo any active changes you have and then restore the stash
Wdym?
You can't restore the stash until your repository is in a clean state. That is to say, your Changes tab should be empty.
does anyone know why my source files aren't being submitted to perforce?
When I try to edit something in visual studio, it asks me to make a file writable to edit it and doesn't give me an option to submit content from the editor. I have to manually go into P4V and reconcile offline changes from there instead
oh
nevermind
Server was offline 🙂
I can't believe I'm saying this, but I think I'm going to switch my solo projects from GitHub to Perforce. The editor plugin in UE5 has gotten so much better. Easy changelist management and automatic dependency validation are very nice to have. I've gotten used to them on my larger projects that use Perforce.
yeah, its definately nice
I just use a local server because I am collaborating with a few friends
how did you get around the file limit with Github?
also I still have this problem 😦
I pay for Git LFS data storage. It's $5/month for 50 GB.
Don't you have to do use the command prompt for lfs?
and it also has its own cap, right
No. I use GitHub Desktop.
huh
What do you mean? It's $5/month for 50 GB storage and 50 GB bandwidth (this one is easy to run into for large, active projects).
I think individual files are restricted to 2 GB or smaller, but I am never going to commit a file that large.
its a simple git lfs install command and adding some .gitattributes if you wanted. But I do agree P4 > Git, its just really streamlined
👍
no, he just explained you can buy data bundles, they're a monthly subscription
k
I have long lamented using Perforce because it's really good at what it does, but very difficult to troubleshoot when things go wrong. P4V is a clunky app, too.
But UE5's editor plugin has gotten so good that I don't really feel the pain points as much as I used to.
yeah, but you don't really have to the app
do you know how to get source files submited through the ue5 editor or do I have to use the perforce app for that
I still open P4V every day before I get to work. It's easy to get the latest updates and launch the project from there.
But after that, I can work entirely in the editor nowadays.
The View Changes tab is, surprisingly, a joy to use.
its also nice if you have an local server
no subscription
I have gotten into the habit now of creating a changelist for a task before I touch any files. If multiple tasks overlap, I can create another changelist without disrupting any work. I find that workflow to be very intuitive.
Source files through the editor? Are we talking assets or c++ source? Source files I add myself and then I add them into the depot, for uassets, the editor auto adds them in source control and checks them out.
c++
Plus: drag-and-drop assets between changelists, automatic dependency validation, and other similar quality of life features.
I pay for a simple VPS.
I havent bothered too much with change lists, default is enough for me unless its some important specific thing I need to fix
One thing I will miss about Git is working offline, but if I'm honest, I can't remember the last time I needed to do that. It's just a nice-to-have feature that gives peace of mind. I know Perforce has a distributed mode now, so I could look into that if I really wanted to.
so you just use p4v for that?
are you collaborating with other people? because you can also setup the server core on the machine that you are using
for adding files? Really just depends, most of the time I just right click source and do a mark for add and let it add anything new
VPS > Personal hosting
if you can afford it or you have a really good reason to keep it in house
but is that through unreal or p4v
Yes, most of the time the p4v unless there is a command I want that I need console for.
No, but I prefer having the server offsite.
k, thats kinda annoying
k
why? p4 is suppose to be declarative, you also checkout files so it knows something changed, nothing is really "automatic" and thats the beauty, its intentional
It's just a lot easier to do it through unreal because I already have it open and not as many clicks 🙂 Not a huge deal though
You know how little you are adding new files as opposed to normally just changing existing ones?
- Adding a new file to the stream is a simple rightclick mark for add or a terminal command (you can wait til you make many to group that big hefty
p4 addcommand with many files for efficiency - Modifying an existing file, you can just set your IDE to auto checkout any modified files so no real need to checkout there
its not that hard?
i'm talking about changes, not adding files
how do you do the integration with an ide
plugin?
Yeah plugin, rider might come pre installed idk
Rider comes with built-in support for a few different source control types. No plugin needed.
Perforce and git are for a couple of them.
how do you set it up for visual studio?
install a plugin. I usually search for the helix one (since that's the official one from perforce) in VS's plugin manager
There’s a p4vs plugin from their website that is different from the one from the plugin manager
I’d which one to use
huh?
The official might be outdated
🤷 I've only ever bothered with the official one.
It's been a while though, 'cause I switched to Rider.
Deploy UGS and you can even remove that step
i've been working only with p4 since i started working in UE and it has been a very smooth ride imo, but their UI and the app in general seems to be stuck in 2007. its the main thing that i really wish they'd overhaul its in many ways unintuitive.
and yeah if something ever breaks its a real pita to troubleshoot.... it just works so smoothly and imo flawlessly when it is running as intended.
I work with launcher builds. UGS is not an option.
Sounds like we have had very similar experiences.
anyone know how review comments work in unreal editor? we have swarm up and working, but it doesn't seem to let us leave comments
We never had swarm doing anything but source. To get any binary assets we had to upload manual screen grabs.
Does the swarm review list the asset files? Are you expecting to see diffs in swarm? Are you expecting a review system from within the Editor?
Are you expecting a review system from within the Editor?
Well, yeah, I don't see any other reason they would add a "Review Changelist" button in the editor.
It's clear from the engine source that it's possible to review from the unreal editor - the question I have is how to actually enable this
There's an "Enable Comments" button that creates a swarm review for a changelist - but I don't see if/how it's possible to leave comments for a CL from within the editor
Wow, that’s a button I’ve completely missed.
Are you sure it’s just not creating a normal swarm review? Not doing something super special for asset changes?
But now I’ve moved companies and the new place doesn’t do swarm reviews. 🤷
void FSwarmCommentsAPI::PostNewUserdataComment(const FReviewTopic& Topic) const
This exists in the engine source, so
seems to send an API call to swarm
and posts a comment with it
so like, the capabilities are clearly here, but for some reason, either they don't show in the UI yet, or I'm missing something
according to unreal roadmap this was added in 5.3
I'm not a programmer just recently started YouTube course for UE basics and while it's not a part of a course I connected revision control via git so I could try my solutions to tasks and when revert back. My problem is that I forget I also downloaded 10GB pack of trees and they got added to git repository. I dont want such an expensive asset for small project so I switched trees for upscaled grass. But my git folder is sttill 12GB. I tryed reset to initial commit and deleting trees with rm -r then --amend but git folder is still 12GB. Right now I can simply delete repository (I dont have any remote, don't think I need it for learning proj) but I can easily imagine making same mistake in the future and I would like to know how to fix this (get rid of unwanted materials in git repo)
Anyone know why the initialize project with git button does nothing? Like no loading in the corner or anything and when I accept settings it says I need to initialize.
just do it from the cl?
Hey folks 🤙
We decided that we wanna switch from git to Perforce because we tested it yesterday and it worked without any issues (we are completely new to Perforce).
Now i wanna setup a fresh project but there are happening things i simply dont understand 🤔
I have deleted the depot on my Server via p4 obliterate -y //depot/... followed by p4 depot -d depot which worked as intented 👍
Now i have created a new Workspace but i have no idea how do i get my files into the workspace and after that to the server.
I tried to add them directly via explorer per drag and drop which is working but if i try "Mark for add" Perforce only recognizes the .uproject file and tells me in Log window "...- file(s) not in client view."
I tried this the exact way before without any issues and im totally confused now whats happening there....
I cant remember how i did it yesterday because we had no issues yesterday thats why im abit frustrated now tbh 🤦♂️
You need a depot pref a streaming depot
Make your streams and make sure your workspace has view of that stream
ive managed to get things working now thx
Hey there, I recently switched my computer and got this weird issue with perforce. I have the p4 desktop client, and whenever I make changes to any Unreal data like UMG etc, the changes are not recognized when I use reconcile offline work. Only .cpp / .h changes are recognized. In Unreal it is flipped - all object changes are recognized when I use the source control tab, but none of the code changes. It worked properly on my previous computer, therefore I'm really not sure why this is happening.
Honestly what you're describing sounds kind of impossible, all I can say lol
Almost sounds like you're working on 2 different copies....
I've had this sort of thing happen when my ide and Unreal Editor were accidentally using different users (because of a silly environment variable).
I ended up with things checked out in different default changelists.
anyone customized UGS?
ApiUrl = http://XXXX
ColumnWidth_CIS=200
ColumnWidth_AUTHOR=250
ColumnWidth_DESCRIPTION=600
ColumnWidth_EDITOR=200
ColumnWidth_Platforms=300
+BadgeGroups=Editor
+BadgeGroups=Platforms
+Columns=(Name="Editor", Badges="Editor", 200, 2)
+Columns=(Name="Platforms", Badges="And,Lin,PS4,PS5,XSX,XB1,Win,IOS,Mac,Swi", 300, 3)```
not sure what im doing wrong
im trying to customize the width of columns and supply special bages in a custom group
I think that you might need to specify all the variable names for the columns rather than it being implicit, I will check tomorrow evening though... I'm quite busy after getting back 🙂
kinda same as what klukule said, my config has
+Columns=(Name="Editor", Badges="Editor", Width=50, DesiredWidth=50)
for example
would give it a shot
still throwing it
************** Exception Text **************
System.ArgumentOutOfRangeException: InvalidArgument=Value of '-1' is not valid for 'index'. (Parameter 'index')
Actual value was -1.
tried just simply
+BadgeGroups=Platforms
+Columns=(Name="Editor", Badges="Editor", Width=50, DesiredWidth=50)
+Columns=(Name="Platforms", Badges="And,Lin,PS4,PS5,XSX,XB1,Win,IOS,Mac,Swi", Width=50, DesiredWidth=50)```
nothing else
think its Badges="And,Lin,PS4,PS5,XSX,XB1,Win,IOS,Mac,Swi"
maybe the columns needs to be in the same array, i dunno
StatusColum.Index is 9
but there is only 9 items in the listview SubItems
0 - 8
That was it, many thanks! The perforce source control settings in Unreal had a different user compared to my p4 client
if you didn't solve it yet, would you mind sending the content of the Details? as iirc that contains stracktrace which would point us to specific localtion where the execetption is thrown, which would limit the scope one needs to check a lot 🙂
I solved it
Hello! I anyone using the git plugin for Unreal and have any notes if it works well or not? I am considering to use it since I want to push my collections, and to be able to do that I have to enable this.
I haven't checked it for a while, but at the moment of UE5.4.3 is there still no auto-merging of blueprints for some simple cases like 2 different variables were modified in the same blueprint?
You can merge data-only BP I think. I don't know about auto-merging though, I doubt VCS would support that.
Are there any hosted Perforce providers y'all would recommend for those who don't want to invest in running their own Perforce server? Any that you've personally been satisfied with?
Helix Core Cloud
Assembla
this isn't a common thing that exists
i bet there are only a couple people here who have used either of these so you're probably not going to get any active feedback
Do you happen to know why that is the case? Are folks just super happy to roll their own server?
i guess so. their licensing for indies is absolute shit, so i'd imagine most indies want the cheapest path possible... larger companies have the capabilities to roll their own setup... very little middle ground market for attractive hosted options
Roger that. Being somewhat familiar with Github and how easy it is to throw something up in the cloud, this was interesting to learn more about. We're currently on Helix Core Cloud, but they're fairly early in their dev cycle and it's still somewhat bare bones. E.g. deleting a stream requires filing a ticket with support.
I wouldn't mind using git under the hood in theory, but I've been advised a few times already that it's a bit of a wild west.
It felt on the less permissive side for sure.
Yes, Helix Core Cloud instances currently block the 'p4 prune' command. If you can tell us the specific commands you'd like to run to prune the required streams I can make a request of or devops team to do it for you during a maintenance window on the server.
That is... interesting, p4 prune is explicitly made for purpose of obliterating files if you are not the administrator of the server... but at the same time I kinda understand why if the helix cloud is fully managed service as this is a destructive operation with no way back (unless restoring from backups)
(i.e. if you prune something you did not want to by mistake, they have to restore from backups etc... which is harder and more time consuming than running it by themself - albeit inconvenient for you)
there's a managed cloud service? I thought it was just an addon in azure
Interesting.. cost wise it's only slightly more expensive per user than our last renewal offer. I'd definitely consider Helix Cloud for a future project.
I guess as an Indie you miss out on the free for upto 5 users to get you started.
I hate the perforce licence fee.
The jump from free at 5 users to having to pay 6x licenses as soon as you need a 6th is quite painful. But the cost is tiny compared to developer wages. And once it's setup it's absolutely rock solid.
That's why having $39 a month per user for Helix Cloud is quite appealing. It's just part of the monthly cost of taking someone on.
free-6x is a bit annoying though, if only the first 5 free was perpetually part of it
but perforce knows they have this industry by the balls so they can have suboptimal licensing
with Helix Cloud, do you have easy access to your own data?
haven't used it personally, but by the virtue of it being version control, you have access to what you upload...
it's just a managed service where you don't have access to the underlying os and helix technicians take care of that themself from what I understand
yeah but with it being centralised, do you for instance have access to your backups so you can make offline copies of them?
and say I install helix core to my own VPS to enjoy 5 free users, is there a migration path to the cloud version once I grow beyond that?
that's a good question to which I don't know the answer to sadly
Anybody having issues switching accounts on Plastic SCM? I have multiple accounts and recently I'm not able to switch accounts to set up a new workspace. It just asks me to sign in over and over again.
sounds like a potentially large downgrade in QoL from self-hosted if you have to submit a support ticket and wait for another human to do something as 'trivial' as deleting a stream though lol
true, but personally I can't remember the last time I deleted a stream 😄
it's not really difficult enough to host a server to warrant the price increase for cloud services unless you've really got that kind of funding
buy a server, run p4d, optionally set up some kind of backup system, done
how do you guys like to diff files for perforce? p4 diff2 seems to give me a lot of useless junk
I sadly didn't have an amazing time trying to self-host on AWS earlier this year using their https://www.perforce.com/products/helix-core/install-enhanced-studio-pack-aws#define template. The version they offer there is from 2022 and even their support was surprised by how out of date the bits they gave us were. I wish I had more time to DIY but we just need a turnkey option given the limited bandwidth, womp.
Learn how to set up Helix Core on AWS in just a few clicks using our AWS template.
why do you need AWS or a template
you don't need a turnkey if it takes no more than 20 minutes to set up a server lol
this is why the options don't exist
it is quite literally, spin up VPS, sudo dnf install p4d (or whatever it is exactly), and then you create and start a server
I empathize with the ease of getting it up and running, I'm more worried about the long term maintenance cost of having to resize the instance, the disk, patching, backing up, making sure all of the security is in place so that I didn't accidentally let the Internet download all of our assets, etc.
i don't think i spend over an hour a month on any of that
security for p4d is just setting up HAS with whatever SSO provider you have
resizing a disk is 4 linux commands, patching can be a crontab
Yeah, I have 1tb of storage with automatic backups and a VPS for like 28AUD a month
I don't spend much time if any in the terminal ssh'd in after setting it up
You don't really need to, nothing to do 
I use Riders diff view, If you use VS I am sure it has one too
oh duhhh, yeah I have rider thnx for reminding
I probably spent like 80 hours learning enough to navigate l00nix and manage our server... And that part really sucks. But after that, same, it's hands off aside from an hour here and there a few times in the year
the kluk person above has a guide that helped me alot setting it up to begin with. He walked me through it, super helpful guy
yeah I installed linux subsystem just to learn it but it really wasnt too much
you don't really need to know much linux just to manage p4d, but if you plan on doing more like HAS, Swarm, etc. I would recommend it
It's the rare stupid edge cases you run into as a newb that eat up those hours... Like when you accidentally overrun your disk space and have to figure out how to expand disks for the first time just to unlock the stupid server after wasting time deciding that there's no way to just free up enough space to fix the problem without expanding the disks lol
is gitkraken free after the triall thing i cant tell ive seen different answers in different places
you'd have to read the license terms to be sure but i think maybe free for noncommercial usage, but with some additional restrictions like no private github repos
actually maybe the commercial use thing is old
maybe now just limited to single-user use (no multi-user corporations) and no private repositories on common hosting platforms
tbf, expanding disk size is probably one of the few things i'd agree is actually unnecessarily difficult
I'd say the first time I had to learn that, I spent more time figuring it out than I did maintaining P4 for a whole year
although, it took several days because it turns out I was using an encrypted partition, which needed extra steps. that no online guide mentioned. 🙃
Are there perhaps any recommended reading resources (or videos?) regarding setting up source control for a small sized team working on an unreal cinematic? I am mostly familiar with working with git through github so that's what I lean to (of course I understand we'll need to pay for LFS), but as I'm not familiar with cinematic workflows (or in fact with working with a team) I'd like to avoid potential costly pitfalls. I'm trying to think of 'things that could wrong' with a standard git repo setup, I'm thinking that generally as long as I enable the 'one actor per file' option and assuming there's some discipline with designers each working on their own environment things should actually be simpler than they are in a game setup. I also wonder what's the recommended level of 'modularity' here, does it make sense to create a different repo for each "scene/shot"? or perhaps unless each scene is massive there are benefits in keeping everything in the same project?
How big is the team? If its something like a cinematic project that means lots of editor work and binary assets, I would personally prefer a different solution that handles checkout and locking of binary assets, thats gits weakest part.
If your team is below 5 members I believe its free and you'd only need to pay for for the server and storage, which can be pretty cheap these days depending on who you go with, but I am a little bias because perforce is just so much better imo for unreal, git would work though you would just need to communicate about whos working on what a lot more clearly
Hey guys im new to this whole Perforce source control. A friend of mine and I are having troubles connecting us on a Server together.
After running the troubleshooting process from Perforce it told us that it's most likely a firewall issue. Since error Message check $P4PORT keeps popping up.
When trying to connect it also gives us the error showing in the picture. (its in german, hope its fine)
Now we are unsure how to fix this issue any help would be appreciated.
Well, WSATIMEDOUT is an error which means that the connection has timed out while trying to connect... make sure that the IP address you're putting in is publicly accessible, you have all the portforwarding set up correctly and also you have port 1666 enabled through the firewalls etc.
thanks for the quick response, so opening my ip adress for others would be in windows firewall - advanced settings - inbound rules - new rule and then putting 1666 in that box, shown in the picture?
sry for the mess but i have no clue about the safety of it so thats why i like to double check x)
well, you need to enable it on the server that's hosting your perforce
and at that case it would be outgoing rule
but indeed tcp 1666
so the pc of my friend would be in that case the "server hosting" so he needs to enable it is that correct?
he needs to set up portforwarding on his router to make the IP publicly accessible and add a line in his firewall to allow incoming/outgoing connections on port :1666
as for safety, enabling port forwarding and poking a hole in your firewall always adds a bit of extra risk as it creates a path with less resistance for bad actors.
ok thanks for all your help. just one last question there is no other option to work with perforce other then enabling this port and with that creating a loophole for potentionl bad actors?
if you want to you can transfer security liability onto a VPN system like ZeroTier, so that you don't have to expose your perforce server to the internet. just based on track records i think perforce is pretty safe to expose, but who knows
oki thx 🙂
My team is working in a level and pushing to Master Branch, can i edit the LEVEL BLUEPRINT at the same time? or will there be merge conflicts?
how can i make swarm reject code changes without a review, but allow content to continue?#
if you both make changes and commit there will be conflicts
so you have to take either yours or theirs
Are the level itself and the level blueprint considered the same file?
yes
://
I am using them as follows. I created a mini map texture-based, and my game will have multiple levels, each level will be responsible for informing the UI which texture should be used on the mini map
I've never done anything with swarm to that extent, but iirc it's not possible to define workflow to reject based on the content within - nor have I found anything about that kind of granularity in documentation itself)
though it's realtively easy to do with perforce/helix itself by using push-submit trigger
https://www.perforce.com/manuals/p4sag/Content/P4SAG/triggers.push.commit.html here's example about it, just change the logic so instead of checking the description it checks the list of submitted files
or it might potentially require use of push-content trigger (see next page in the documentation) as that one has access to more data like files etc... though I presume push-commit should be enough for just reading file names
You can extend UWorldSettings to add options to the level for that sort of thing
├─ Engine/
│ ├─ …
├─ Projects/
│ ├─ ProjectA/
│ │ ├─ ProjectA.uproject
│ │ ├─ …
│ ├─ ProjectB/
│ │ ├─ ProjectB.uproject
│ │ ├─ …
Hey devs, I'm trying to set up a perforce depot for engine source and projects. I'm wondering is there a way to set up a workspace that use the same engine but have 2 different projects in the local file while having to avoid 2 big source engine in the local files? I can think of settting up the both workspace but using the same directory however i think this is a bad idea as we might face some issue with workspace conflicts. I'm still a beginner to learn perforce workflow and I tried googling but couldn't find the result i'm expecting
You usually do:
|- Engine
|- ProjectA
|- ProjectA.uproject
|- ProjectB
|- ProjectB.uproject
and since projects are in separate folders you won't have any collisions
and then you can have one big workspace that syncs the engine and both projects, and it will work fine
hi thx for replying, we have 2 projects on their own depots and im wondering if we could have 2 workspaces in the same directory to avoid having 2 engine in separate folders eating up the local storage space? If this is not possible, do let me know and it will be great to get some advice on setting up p4 projects.
you could do that, but it's really inconvenient to do this client-side
it would be better to use stream mappings and map both project depots to one big stream containing engine and both project
i.e.
//MyGameEngine/Main - contains Engine folder
//MyProjectA/Main - contains ProjectA
//MyProjectB/Main - contains ProjectB
you then map the //MyProjectA/Main/... to /MyGameEngine/Main/ProjectA/...
and same for the project B
when you sync "//MyGameEngine/Main" you will also get both projects
if that makes sense
and then you can have one workspace locally that contains the engine and both projects
by stream mapping do you mean the share, import, import+ etc?
yes
ahh right i kinda get it know trying to process the info 😅
would that mean everyone will be working in the engine depot if i set the mapping to the engine depot's streams?
you'd be syncing to the engine depot, but stream mapping stores relevant stuff in the mapped streams
it's a convolutely and unintuitive thing, but there's not many seamless ways of using same engine with two projects... (well, one local copy of the engine)
because if you just want to use shared engine and don't care about having it twice on your computer, you could reverse it... and map engine to your project stream
that way any engine changes are shared, but your projects are separated and users push to the //MyProjectX/Main
Curious what people think of the new sparse stream type from Perforce.
https://www.perforce.com/manuals/p4guide/Content/P4Guide/streams-sparse.html
I personally wouldn't use them as they're super new and some people I helped had issue while trying to use them... but otherwise they're great if you're making a lot of streams where you'll just modify a file or two and then merge back to another stream
They sound somewhat similar to git branches in terms of lightweightness, if I'm reading it correctly?
task streams were already a thing and they confused a lot of tools
include unreal's source control integration
sparse streams are new thing and are more compatible
but still not perfect
especially as they're brand new thing since like version or two ago
well, the biggest difference is that in normal streams perforce branches all files and metadata immediately on stream creation, meanwhile sparse streams "just" map the source stream as read-only and on file change it does the branch operation only for the modified files
I'm not familiar with git innerworkings to tell you if they're the same or not in that regard
from what I've heard though it tends to cause a lot of "branch" spam as perforce creates new changelist for each branched file where it does the branching operation
but that's only something I've heard, not tested personally
What is the simplest vc to use? I just need a local backup incase I break my project. I have been using Perforce but it seems like it is overkill and slower to save.(like 10-20 sec) Got so slow I bailed on using it and just duplicate project folder every few days/weeks
I wouldn't switch out of p4. "Slower to Save"? I haven't really noticed any such issues, unless you are speaking of unreal detecting file linkages that need checkouts
I don't think the choice of version control is the issue here, perforce is pretty much industry standard
git is a pain
svn is old but might work
plastic is something i haven't tried with unreal
alrighty , thanks
I'll set it back up and come back here if i have issues
Hi all, I’m hoping to get some clarity on a few things related to Perforce.
Here’s my situation -
I wanted to move some files around within my unreal project (perforce source control enabled, perforce server on local NAS). I know moving anything in Unreal is a death sentence but I wanted to give it a try all the same 🤦. I made a commit to perforce before I moved anything so I’m covered. Lo and behold moving a few things (and attempting to fix up redirectors) resulted in immediate crashes and chunks of assets going missing from maps, aka completely broken project.
I’ve selected the content folder and chosen ‘revert’ from the source control menu and the process has been going for a few hours.
Now I presume one of two things will happen
- In a few hours it’ll pop back up and everything will be back as it was (I wish)
Or - Perforce will just revert a random set of files it thinks are worth reverting and / or not delete my moved files so I end up with duplicates. Aka completely broken project
As it’s clearly going to be number 2. What is the correct route to just deleting the local version and cloning the server version to my local machine.
Any help appreciated.
I never do just revert, I add things to a cl using reconcile and then revert them from there. Probably a terrible workflow, but it works. At least you know what perforce is going to be doing.
So are you using the p4v client as opposed to just the editor ui?
Yes.
I never use p4 from the editor.
I don't work very much on assets, though.
Even better, the p4 command line is a lot quicker than the gui. Or it used to be.
It’s amazing how using this app is like deciphering religious texts. No one person has the same interpretation or know whether their interpretation is correct.
I'm definitely an outlier. I do code plugins, so my asset interaction is limited.
Ok, so are you saying that there’s no way to revert my project via the GUI, and I should go away and learn command line to use perforce?
I’m not a software expert but I would have thought there would be a revert button somewhere within a piece of software that’s designed to revert files
Especially after so many years of development
No, I'm just saying my experience was quicker like that. Not something you should do if you don't even use the p4v client.
There is a command for it. 🙂
But you could close UE and try the p4v client.
Sanity Check
- when you made changes moving stuff around, was it in unreal or in file explorer ( if in unreal, all should be ok and easy to fix )
UE will probably be reverting each file one by one and updating things and adding redirectors as it goes. A slow process. If you just want thr state before you changed things, use p4v.
Regardless, recovery is possible without any fear
It was in the editor 👍, do you have any advice on fixing the broken files?
My steps, will take a moment to write
Gotcha, thanks for the insight
No problem
When I have done something I don't like and want to get back to clean repo state:
- I close unreal
- I check p4v for pending changes, and revert those
- If necessary I delete Intermediate and Binaries ( usually not a must, but might be )
- open unreal
- everything should be fine
1/2
Sometimes one might need to "Reconcile offline changes" to find weird stuff, but that is very very rare.
Reconcile just gives you a list of local changes.
It takes a long time, so best to do it on select folders as needed.
Usually it just finds some obsolete files hanging about that have been left behind by naughty devs
2/2
Bonus : If I want to roll back changes that have gone into the repo with a commit, there is option in p4v to "Undo Changes" which creates a new commit with the changes rolled back
Part 1 depends on you having let unreal check out all the changes you were making while renaming
I could write another brief on renaming best practices : )
Great answer thanks!
I suppose what comes to mind is that I know I don’t have any changes or commits I want to reconcile or in any way ‘send’ to the server.
I just want to delete my local version and get the server version - I don’t want any interplay that might accidentally commit my mistake. Hope that makes sense
Is there not a way to do that without becoming entangled in commits / reconciles / etc ?
Ah. Well, you can just delete all the files in the local explorer view and Get Latest again for that.
This should not really be needed in general though, I don't advise it. All the problems I have faced have been solved without full nuke and redownload
In the perforce client?
delete in File Explorer
Refresh, Get Latest in P4V
that will start you off totally clean for sure
Because I’m not a confident user of perforce I’m worried that I’ll accidentally commit my local version then getting the latest ‘good’ version will become harder
I generally recommend people stick to using p4v for commits - there it is all clear and people can use the same tools to check stuff is right.
Pending Changelist, Submit, can't do it by mistake
Great, this sounds good. I’ve, made a simple local copy of the partly broken project too, so I’m not totally reliant on the p4v system
I’ve wrestled with the client for a while, followed several hours worth of tutorials and read countless posts on it. I’m still not sure what I’m doing there.
It’s seems to be a tool aimed at people who have networking and command line experience. It’s not intuitive at all. Imo at least
I also strongly recommend people immediately name their "default" changelist to something intelligent to keep things nice and tidy
is this your first time using version control?
At this level yes. Obviously I’ve used plenty of consumer level backup apps before.
P4V is a bit tricky but you should get used to the basics pretty quick once you get the hang of the usual steps of the dance
Basically
- Always allow Unreal to Checkout stuff as you edit and save. In fact any time you start editing something, immediately save it so it prompts the checkout.
- now looking in p4v with Refresh as needed, you see the changes adding into the default changelist
- when you are happy, commit if you are solo dev or review as needed in a team
Using it to make commits / changelogs in the editor is great. The language is very human-friendly and the process is logical.
In the client it’s totally alien and there seems to be multiple different ways to do the same simple task - each with an insane amount of different considerations
Well, if you are happy in the editor that's fine, but problems can arise from time to time which are better solved via p4/p4v
Which is why I personally prefer to just learn and use the p4v as the primary tool
Yes, I agree. Especially if you make changes to the files outside of the editor
( which you absolutely shouldn't do unless you know what you are on about )
This is your main view: Depot/Workspace should be Workspace, and the Pending tab
sorry, meant you should always pretty much be viewing the Workspace
a sample checkout in the default changelist
Well, the launcher adds assets to projects outside of the editor, that’s one consideration
anything unreal editor project doesn't know about will have to be added manually yes
Plugins, etc
stay synced, good luck : )
Gotcha yes, thanks for the help.
I’m familiar with the general structure of the client. I just get stuck when it comes to knowing what exactly how to commit / pull.
There’s several different ways they seem to have to push and pull files.
In general the flow is this
- you start work, you Refresh and Get Latest
- start Unreal, do stuff
- commit nice changelists with clear cl descriptions
- always Refresh and Get Latest at least daily if you are in a team
Push = Submit Changelists
Pull = Get Latest of the whole project
Also, the client does not seem to want to let go of old changelists that have not been committed.
Occasionally I’ll ask it to reconcile, and it’ll make a change list, then, for whatever reason, I decide that I don’t want to commit that list it just hangs around in the pending area and I can’t delete it
any pending CL that you own and have created on this specific computer should be able to be deleted easily ( though it may prompt to revert or commit the changes )
Yes, gotcha, that’s what I’m hoping to achieve. I’m a solo dev btw
Ikr you would hope so, but they can’t be deleted
Bonus : using Shelve is very handy if you want to work from different locations but not commit something
or you want to "stash" something out of the way and not have it interfere
Just right click ‘delete changelog’ (or something) and the boop, you’re all clear, but you have to go through these hoops of commiting / shelving etc
It’s so tangled
It becomes very natural in time, don't be discouraged.
Keep changes small and clear, that helps.
You make change X, it works, commit it.
I try to encourage people to feel like things could be better done in more controlled pieces if more than 10 files change in a commit
Optimally changes are just a couple of touched files, with a nice clear commit with keywords like
FIX: bug x
ADD: asset y
CHANGE: behavior z
etc
Day to day thats fine, but obviously at some point someone is going to want to move some folders around and then p4v throws a fit
That’s pretty much exactly how I write my logs each day, I’m with you there
We should really pin a thread on renaming sometime
Renaming/Moving Stuff In Unreal Without messing up Version Control
- Always Rename/Move Files and Folders in Unreal ( not File Explorer )
- Try to keep changes small chunks, less than say 100 changes
- Immediately Fix Up Redirectors ( they will prompt more checkouts of each other file which has ref to the renamed file )
- Always run the game before committing
- Always save and close the editor before committing
- Always open and run the game once more before committing
- Never Ever just change a single letter case like "MyFileforgotcaps" to "MyFileForgotCaps" - use intermediate "MyFileForgotCaps-temp", commit that, then "MyFileForgotCaps", commit that
- DataTables require special care
DataTables had some special handling as well, but there's a way with those as well...
anyhow.
Stick to it, you will grok it as you use it more and more. The worth is so big if something goes wrong. And just knowing you can always roll back makes messing with stuff more confident
When you are familiar with version control, you never have to fear to touch stuff "what if this breaks?" - "No wucking furries, just revert"
<@&213101288538374145> could we get a pin on the Rename best practices there please? #source-control message
thanks
ok, so I deleted the local version, hit refresh in p4v and the log says 'no files updated' 🤷
I can see all the remote files in the depot. p4v seems to think there's no difference between all the files and no files
Remote Files should indeed be there, that's the Remote in the cloud / your local server
Workspace should be blank if you have just nuked the contents of your local folder
you may have to force sync
any sync will do at this point, just the one thing that perforce is supposed to do would be great right now
Forcing it:
Right Click the root folder
Get Revision
check "Force Operation"
ah yes there you have it
that is a quirk i have also noticed now and then, having to Force something. it can be annoying but pretty rare
ok, something is happening! Maybe Perforce could be useful for something - buried in the labyrinthine menus somewhere was a working function
One more note just in case : Unreal should always be closed when doing stuff with P4V
ye, it's closed. The process of reverting in the editor finished and, yes, everything was broken and missing
It will just hang on operations like Get Latest otherwise since editor has file locks on a lot of things
Files and folders are indeed appearing where they should be!
yay : )
back in business, you oughta be : )
cheerio
🤞
shaders recompiling
well, project has opened, but the folders I moved before are now empty 😦
ok, copied the folders over from another manual backup and things are looking better. Three broken blueprints - shouldn't be too tough to fix, let's see
I think I'll wrestle with this for a bit, thanks all!
ok, project seems stable and everything back where it was! Thanks again for all the help!
@wide raven @long mural What's now the best way for me to make a full checkpoint of everything? As in force the backup of all files? I suppose I should push to the stable branch too (I'm working in dev).
sry for the late reply, i understood and will be processing these infos now thx
Well, the fact that you had some stuff broken still after the full Nuke and forced Get Latest is a bit odd, but still, you can proceed thus:
- check for 'unintended' changes
- do Reconcile Offline Work on the Content folder
- see if there are local changes that for some reason now are different from repository
- Add and/or Checkout the files as needed and submit them
- check for 'intended' changes
- what does your Pending default CL look like?
- any changes there likely need to go into repo as well
Thank you, I'm following option one now. It's making a new CL (I think)
🤞
wow, 10k files...
I assume you are submitting a working state of the project : )
yes, that's the plan, hopefully all files on the server are now up to date. I think I'm going to do this once a week if it works.
Well, this sort of big submit is very unusual, I'm not sure what you mean by doing this sort of thing once a week
I realise most dev work is just adding / changing a few files day. But what about if I'm adding / changing large amounts of files from assets packs?
For example, this week I've bought several soundfx packs and then edited them outside the editor. This is pretty common for me to do. The editor doesn't know I've added these files to the project, nor does it know about the edits done outside.
Is there a better way for me to reconcile these files without doing a 'reconcile offline work'?
I would personally recommend importing massive asset packs into a temporary placeholder project ( or a Developer folder which is ignored by default if I recall correctly ), picking out the stuff you want and copying those into a proper folder in the project like Assets/Audio or whatever, and only adding those to keep things clean
That's exactly what I do
Excellent : )
But that wasn't my question
how should I make sure the asset files I bring in are properly backed up?
Is there a better way for me to reconcile these files without doing a 'reconcile offline work'?
If you know what you need to add, right click the folder / files and "Add"
Reconcile is kind of a cleanup search for stuff you have forgotten about / failed to add / remove / checkout properly
ok, I see, so manually add each folder as I go?
Understood.
So what's the negative to doing a full reconcile then, why should I avoid them?
Well, it just takes a loong time, and if you do it on the root of the project you will get a lot of unnecessary hits like stuff in Intermediate folders and whatnot, stuff that should be ignored by p4 anyway
I do it maybe twice a year just to clean up cruft
o ok, so it's just slow.
I have my ignore file setup to ignore the intermediate file, so that's not too much of issue (external actors folder is still a pain though - the engine seems to make millions of them and they can't be deleted without errors).
k, think it actually worked. I think it's the first time I've seen p4v actually backup something and restore something (albeit broken and missing most things) and it only took 20 hours and staying up until 3am to wade through hundreds of messages on Discord.
Industry standard 👍
I think there's definately room for a p4v 'lite' that just sets up a basic server for you and then just has a few buttons - eg. 'Backup all changes', 'backup changes to this' and 'restore all' / 'restore this'.
All the other numerous ways to do the same thing - 'diff' / 'reconcile' / 'undo' / 'resolve' / 'get' / 'submit' / etc etc should be under the hood if needed.
My guess is that it's a tool that's been gradually evolved by server admins, not designed with dummies like me in mind. A dummy-proof version would be great.
the issue with reconcile is that it has to take into account permutation of all files for the first time
i.e. it has to check every file with every file to detect moves etc...
once you start using perforce fully and keep the files locked/unmodified it speeds up the reconcile a lot by checking the locked flag and modification date
Even this full reconcile for me only took 20 minutes or so. So not the end of the world, but it would be nice if it was faster in future
- you ideally also need relatively beefy server to take full advantage of performance. I personally can upload whole unreal engine version from scratch in about 11 minutes because of all the tuning I've done to our perforce server... and reconciles take about 5 minutes when ran across whole stream
and parallel uploads help a lot too, but the more parallel you make that stuff the beefier server you need
I've got 48 core cpu in our perforce server and I can fully saturate it when jamming about 4-5gbps of traffic to it at once
I think that is what Plastic kind of aspires to be, last I saw they had 2 clients, one for the coders and one for artists
I have pondered a few years back whether it would be worth making a GitForDummies client, but didn't feel inspired enough to do it
ah, never heard of it, but just having a quick look at the Unreal plugin and it looks good. Will have to read into it more.
Any idea if it can run on a NAS?
(actually looks possible, though a bit convoluted)
use fast reconcile.
Thanks will give it a look
https://dev.epicgames.com/community/learning/tutorials/8JYW/setting-up-an-unreal-engine-studio-the-epic-way probably should be pinned with a better message than this, now includes the video from unreal fest
great video btw
Sooo... a couple of files are stuck in git ( on MacOS ), I can't discard changes
On branch x
Your branch is behind 'origin/x' by 18 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: BuildUAT.bat
modified: BuildUBT.bat
no changes added to commit (use "git add" and/or "git commit -a")
macstudio@Autobuilders-Mac-Studio BatchFiles % git restore BuildUBT.bat
macstudio@Autobuilders-Mac-Studio BatchFiles % git restore BuildUAT.bat
macstudio@Autobuilders-Mac-Studio BatchFiles % git status
On branch x
Your branch is behind 'origin/x' by 18 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: BuildUAT.bat
modified: BuildUBT.bat
Looking around, some seem to say this is because of lf/crlf line endings, but I don't quite see. They seem to be crlf in both original and changed
hmmm
BuildUAT.bat: DOS batch file text, ASCII text, with CRLF, CR line terminators```
.gitattributes should be forcing them to remain stable
# batch files require a CR/LF for labels to work properly, otherwise they may fail when labels straddle 512-byte
# block boundaries. This is important when files are downloaded through a zip archive that was authored on a
# Linux machine (the default behavior on GitHub)
*.bat eol=crlf
*.sh eol=lf```
tried converting them back and forth with dos2unix and unix2dos, still stuck... fooo
dagnabbit just let me revert it, wtf
ehh i gave up, nuked that attempt and started anew
Hi! Has anyone got the Diff against workspace tool to work in the Revision control for Git?
I want to diff against an older commit but i only get this error.
Right click a file and select Revision Control > History, then Right click a commit and select Diff against workspace file.
Im using UE 5.3
If I had to guess it would be the fact that it can't fetch the file containing older revision from LFS... but I've not used lfs and git with unreal ever, so not sure honestly
(I.e. sounds like limitation of the git integration or git itself, unless git can separately get you older revision and store it in separate file - as that's how this works, it downloads older revision to Saved folder and then runs diff on it)
what file are you trying to use this on?
We are not using LFS in the project. Just FYI, the Blueprint Diff works when I Right click a file and select Revision Control > Diff against Depot. In other words, It works when doing a blueprint diff against the local changes.
An actor component (Blueprint class)
and you're diffing from within the blueprint or did you right click the class?
I right clicked the file in the Content drawer
Where can I find it?
nvm that should be the same thing
do you have your revision control connected? so it shows up in the bottom right
Yep, it's connected and set up using Git
here in the blueprint menu you usually have this diff button
in the top left toolbar
yeah weird
It was from me testing things earlier
Hold on
Yep, it seems like I can select it now.
Let me just verify if it works on a different branch
Thanks Nonamed46!
It seems like I can access a lot more from this menu. It's strange that it gets that weird error when trying to do the same thing through the Revision Control > History. But it seems to work when I use the Diff dropdown inside the blueprint 🙌
alright! glad i could help
Btw, is there any way to get it to display the commit message instead of the "Revision X" message?
I noticed I can hover it to get more information, but it would be nice to have it display the message right in the revisions dropdown.
not that i know of sadly
Then I'll try to do some research. Thanks though!
It seems like the built-in Git plugin is outdated. I found the updated and improved version (where the original author has contributed to). I tested the feature that I described above and it seems like it works in this version. No more errors 🎉 yay
https://github.com/ProjectBorealis/UEGitPlugin
i'm familiar with clean -d but not clean -ad and not seeing the answer in the docs, what does it do
It's just -a -d
It removes files not in the repo and restores deleted files that are in the repo.
So I tend to do clean -ad and then update
To "refresh" my repo from time to time.
Hey guys, me and my team are using perforce, and we're working intensively on our map, but when we push and pull external actors folder still keeps old actors or assets, pls help xD
are you using the p4 integration in the editor?
I'm using git , is there a more effective way to use git with ue5 or is perforce the main tool here
git is a bit of a pain with unreal I reckon... perforce / plastic seems to be a much better fit, but I guess there are still lots of people using git as well
perforce is definitely what epic uses so all the tools are best maintained for that
that said i hardly use the inbuilt version control tooling any more, for anything except checkouts really
If you're going to git at least use the project borealis plugin
you should add the minimal version to this message, considering it was pinned. especially with some of the security risks in last years version.
for sure, I always forget to add it (even to my personal notes 😄 )
would you mind sending it again
k
any specific version I should set there?
kinda thinking of putting 2024.1 there since the configuration is applicable mostly to new users only
and they'll install latest version anyways
pretty much, and the 2023 versions have a nasty security flaw
yeah, that looks nasty, luckily it's "only" DoS rather than data exfiltration or some form of remote access
although, nevermind, the first one is priviledge escalation
but still, without an account there's nothing to escalate
(obviously not taking this lightly by any means, just saying luckily I don't have to go and upgrade asap, as it can wait until tonight at least)
yeah was about to say, theyre all just.... a bit of an "oof" moment for perforce imo. especially considering there have basically been next to no exploits found in prior versions of p4
the exploitability is low, but befinitely worth updating for.
I mean, there's some fun stuff to be found that I've reported, not security issue in a sense where you can target others, but still fun stuff
it's related to the licenses themself and that's where I'll keep it because NDAs and stuff
oh yeah its got bugs a plenty, but thats not a security risk
i wouldnt know about that, i don't use a paid license and never really looked at them, if i ever get to a point of needing more than 5 users i'd sooner switch to git because of the rediculous price jump
yeah... it's not cheap
yeahhh though tbf, its unlikely that i'll need more than even 1 user any time soon xD
really? u can re-use workspaces across streams etc. tho
i've never needed more than 1 workspace per depot so far
yes, but horde is opinionated about a lot of stuff
robomerge for example creates it's own for each branch spec and persistence... so if you have two "bots" it is at least 4 workspaces - and that is bare minimum as that means one stream per bot... which is pointless for robomerge
and... horde is like 🙂
hm interesting, i havent used horde and have no real use for it for now. but i do want to play around with it in the future just for the heck of it 😄
that's for 4 machines
yikes, thats dumb
though some of them are deprecated so I could easily remove those etc...
but in general horde has 1 workspace per one stream and machine at least
and the archive one is... well... for pushing precompiled binaries to perforce (which can be mitigated by using newer horde... but I'm still running relatively old build at this point in time)
etc...
TL;DR: once you start automation an CI it gets really out of hand
its the workspace limit
5 users is ok for a 2-3 people
but 20 workspaces eek
its funny cause you get 5 users free
but to get more workspces you have to pay for 5 users
i have 2 users, 1 for admin and 1 for my actual user account. but i've never needed more workspaces than i have depots so far.
though i can imagine that can easily become a limitation
that sucks. and tbh the workspaces have always seemed to me as such an arbitrary limit.
though i guess its probably to stop people from just using 1 user account across multiple people and all having their own workspaces
yup
though sharing accounts is a bit dumb
cause its hard to keep track of who is who in source control
yeah, it's because of that... but the thing is, there's no in-between step between the "free" and "full ham"
so it's unreachable for indies who don't have budget to burn
i always think they would earn a bit more money from just licening without the support
the big oof for me was that if you go beyond the 5 user/20workspace limit you have to instantly pay for 6 licences instead of 1, which is just rediculous
cause i dont fking what perforce support
same xD
as far as i'm aware you cant, you have to pay for the full amount of licences, including the 5 previously free ones
and i have heard they can sometime apply a discount
not that im aware off
i know a team that has 4 licence
4 user licence
well yeah but then u only have access to 4 users.
yeah but you get unlimited workspaces
we use one user for all our build stuff and horde
so say you have 3 user accounts, but run out of workspaces you have to pay for 3 licences instead of your previous 0 just to get unlimited workspaces which you could also get from 1 license. if you have 5 users u instantly pay 5 licenses.
its just odd to me the free licences are not included in the paid plans i guess is what i'm trying to say
though if you have a license then you can actually get up to 3 automation users that don't contribute towards the total
yes but it's annoyingly manual
you have to reach out to them iirc and they set it up on ur license
since you have to import a new license file
you can just email your account manager and ask for it
then your build bot or whatever doesn't count
basically anything that isn't a human interacting with p4
I used it at a previous studio for jenkins, robomerge, and swarm
right
i know our company is looking to move perforce, thats why im setting up this proof of concept for them
with the new project, showing all the features available
but yeah its about $10 more per user a month for perforce
4K for perforce licenses compares to the 2.8K tthey are paying now, so i need to prove to them its better lol
1.2k extra a year but if it boosts productivity its good
compared to what at the moment? on-prem git?
no plasticscm
yikes
we havent had much issues with it tbh
I hated that shit so bad when we tried it a few years ago
but its getting limiting
we dont use it to its "proper" intended ways
it doesnt work well with unreal like that
if you're definitely used to working more trunk style, perforce is going to sit very nicely
like "everything" should be a task and the tasks flow to main doesnt work
we just push straight to main
so yeah
problem is, the plastic software is much more usefriendly
than perforce (and more modern looking)
though unless you're a coder you don't actually need to interact with p4v
i mean artists will need to submit someitmes manually (if for instance they loose internet connectivity and may have to reconcile)
i really want Unreal Submit Tool 😛
ofc hopefully easily customizable to remove jira, etc
that is slate right?
yeah that looks like a standalone program
but it uses slate and some unreal engine stuff
cause look at the logs and stuff
LogSubmittool
yes, you can make standalone programs that use parts of unreal engine including slate
interesting
https://github.com/jashking/UnrealPakViewer is an example of one
I wrote my own submit tool, it has everything except for the preflight testing, as we mostly needed an interface to easily ping other users and attach jira issues without users manually typing that stuff
TL;DR: Submit tool (the one you've shown on the image) is... standalone slate application (C++) similar to other slate based tools
iirc epic mandates presense of #submittool and without that commit can't be submitted and they internally mandate use of submit tool as much as possible etc.. (you've probably heard in the presentation)
The UI itself is really easy to write in slate, the more complex stuff is all the interaction with horde, jira etc...
from what I understand Jira ticket gives you a window where you can select one or more jira tickets that the stuff you're submitting is related to, users and groups seems to use perforce user and group lookup (as far as I understand, haven't gotten any specific info about it, since... well... no programmer that worked on the tool was in Prague)
and the rest is some horde related black magic that is using the C++ horde api and other stuff like that
yh
Hi! I have a bit of a pain. I am using perforce for a project and we are using the recommended OFPA system, but generally there are some issues with certain files in the external_actors folder. For example say a whitebox wall stays behind, even if it has been replaced by a production asset. Is there some kind of trick in the build-in editor changelist verification tool that can mitigate this?
well, unreal sometimes doesn't save everything properly, so it's less of a perforce issue rather than unreal being stubborn 
so, one thing we've done usually is: A) make sure you have saved everything - ctrl + shift + s (save all) as sometimes ctrl + s doesn't save everything... B) make sure you submitted all and C) if you don't have stuff locally but others do, run reconcile offline work on the external actors folder (ideally only one of the subfolders to limit the scope)
as TL;DR: the external actor file itself doesn't get removed properly by unreal and thus is never removed in perforce because it's still on your computer... which causes it to stay there
Yeah the save all seems to not work always with external_actors folder, but i'll give the reconcile offline work thing a try. Thanks!
Some file(s) could not be transferred from client.
Some file(s) could not be transferred from client.
Some file(s) could not be transferred from client.
Some file(s) could not be transferred from client.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvassemble/nvassemble.rc' failed.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvcompress/nvcompress.rc' failed.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvddsinfo/nvddsinfo.rc' failed.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvdecompress/nvdecompress.rc' failed.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvimgdiff/nvimgdiff.rc' failed.
Transfer of librarian file '//UE5/Epic-Pristine/Engine/Source/ThirdParty/nvTextureTools/nvTextureTools-2.0.6/src/project/vc8/nvzoom/nvzoom.rc' failed.```
you know what would cause this
seems it doesnt like .rc files?
most likely invalid type
perforce quite often auto detects stuff wrong, so that's why my tool copies the types from epic's server directly before uploading
Question I'm running a personal perforce server on Linux with self signed SSL certs. I recently got a cloudy flare account I got it a domain working with https on the git lab but I cant seem to figure out how to resolve perforce SSL:IP:1666 to be the IP domain name Class A? Like SSL:p4.domain:1666?
The goal is to get a domain name working with perforce SSL
My IP is static also
cloudflare doesn't proxy anything that's not http(s) unless you pay them ransom money per GB transfered... but you can make simple A record of p4.mydomainname.tld and point it to your static IP
you will not get covered by cloudflare's certificate but you can either get your own, or just go with the self-signed one
the only difference is the popup "do you trust this server?" on first connect
and for example even epic uses self-signed (mostly because they're valid for like 10 years and you don't have to change them every year etc.)
Absolutely
I got pretty close I got the cloudflare cert working with SSL. I also solved issues with the resolv.conf file. I unlinked it and copied the contents and pointed it to 8.8.8.8
works now
however... I can't use proxy with ip address
so if I use a domain it works but it does expose my ip.
So I am trying to use cloudflares zero trust thing to create a tunnel. I got the tunnel working but it still seems to proxy the ip and I get same issue
I cant just put in a domain with DNS thats proxied and hide the static ip without it complaining
well, you're going to have ton of issues with any proxy
as perforce does not support the PROXY protocol... because unlike http, raw tcp traffic has no concept of proxy itself... so even if you get tcp tunnels working all the traffic to the perforce server will be coming from cloudflare's IP addresses instead of user ip addresesses etc.
I am basically trying to proxy my dns domain to an ip tunnel that resolves to my ip but the perforce p4v doesn't route
this is what I thought
so I have to create like a tunnel to the network
that's not a vpn
for proxying arbitrary TCP traffic you can use Cloudflare Spectrum as that's layer 4 proxy (TCP/UDP) but they charge huge amount of money for every GB passed through it
that's the cheapest and most performant option imo
anything in-between will add latency (i.e. zero-trust or spectrum etc.)
I've never used zero-trust so not really sure
zero trust or not its some kind of tunnel tool
I assume if I want to proxy it the way I am thinking I need to create a tunnel a private network
basically if I understand correctly
honestly, any form of tunnel where you're not connecting to your IP address first will cause issues with the proxying... one thing you can do is to set up VPN on some random server somewhere, connect your machine to such VPN and let others connect to that VPN
and you can then publish your A record to point to the internal ip address, internet won't care and won't be able to access your perforce server... but people from VPN will ber
(though at that point it makes sense to make private DNS server in the VPN and have some internal domain name)
the way I described it above is what companies generally do, as you have usually plenty of internal services and not only perforce... that way you can hide everything in the intranet and be done with it
(though companies usually host the vpn gateway locally on their public IP... but if your goal is to not expose your IP address then you're golden)
although... you could just give your users IP address so they connect to a VPN (without FQDN) running on your static IP... and well the rest is the same
but at this point we're slowly getting out of scope for #source-control
you want to hide your ip? you can use cloudflare connect and tunnels
tunnel will allow like perforce.mydomain.com to forward to your local machine and access a server
service
without revealing your private ip
just use tailscale.
I tried creating a tunnel I have it working. I tried routing to the domain name which is my public ip i think
then I tried connecting from p4v any time it proxies it breaks
if I understand correctly you need clodeflared/warped to accomplish this
I think warped is some kind of client you run and connect through like openvpn
this might work
Just discovered Diversion, And I'm really surprised the Devs are not on this discord. Even though @neat grotto talked to the devs in January. And they have an Unreal Engine plugin.
If anyone interested in alternative Version Control take a look on full video (they also have VERY indie friendly pricing...and FREE tier. I'm not affiliated with it. I really think people should know about alternatives)
https://www.youtube.com/watch?v=GDgEzTxAGSA
Try out Diversion for free: https://www.diversion.dev/?utm_source=youtube&utm_medium=video&utm_campaign=GDgEzTxAGSA
Join the Diversion discord for support: https://discord.gg/wSJgfsMwZr
Version Control for games is extremely important, however solutions that have been available so far all come with their caveats and issues.
Diversion is a new v...
Guys what is difference creating apk between package project part and project launcher part. When i create apk manuel, upload it to device and install it. It works well. But other way when i use project launcher part, its again opens well but in the game there is a button it is downloading a pak file mount it etc. its downloading the file but when i try to click spawn button game crashes. In summary, When create apk manually there is no problem i can download the actor and spawn it well. But From project launcher part i cant spawn it. Probably its not acces the file. I checked paths. I thought maybe paths are changing but no this is not the problem. One more note: When i create it manuel, i can not see all project file in phone directory. But Project launcher part i am able to see all of the project files contents assets etc. I dont no i am just stuck a little help would be great. Thanks a lot.
Are you sure it's the proper channel for this question?
#packaging and #mobile seems fit better
is Diversion the one with that super scary EULA?
and really just a SaaS wrapper around Git by the looks of it
9.6 The Services are not intended to be used as storage, backup or archiving services. It is your responsibility to back up your Content and you are responsible for any lost or unrecoverable Content.
yep, it's the one
Oooh. Holy...
ow. i thought i clicked it. Sry
Doesn't GitHub have the same thing? Though with fancier wording
https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#o-limitation-of-liability
I don't think many version control SaaS providers would go so far as to accept responsibility for data loss. "Version control is not backup" as the saying goes.
Well at least Git is an open source technology that's decentralised in nature
it's not even obvious if this actually uses Git or not
or how you'd get access to your repo for an offline backup
doesn't seem like it supports file locking, which at least for me is a huge deal breaker, unless you work alone
but otherwise the pricing looks great, though I'd prefer self-hosting since I don't trust any company with my data if possible
how can I remove the source control files so I can reset it?
I cannot submit anymore cause its complaining that some directories no longer exist cause I moved them
this is a killer decision for us also
we have servers for a reason
and why does the app look like github desktop
🤔
"Inspiration"
Also the tree view is the biggest waste of space I've ever seen (paddings/margins)
because they're "something new", "cloud based" and stuff
i.e. "we sniff through your data and teach AI on your stuff" kinda server - that's what my pessimistic me immediately goes for
yeah
thats why i hate cloud hosting (especially from new starts)
its fine for non sensitive stuff
but code and stuff is pretty sensitive
and it smells like git
some thing it would need: file locking, self hosted
I have a distrust of cloud hosting also- so far so good, but NOT even close to as safe as my locked local files on a drive NOT connected to net short of saves I make ( just me)
i mean we have servers on the net (for the team)
but the server is locked behind ip access
and dyou have to request access via the vpn like app
I tried git and gave up,unable to get it working in 5.3 sc
i am solo
just use perforce as a solo
Unreal loves perforce
i already do use perforce,just not happy its not a libre license
it's free for up to 5 users, though you have to self-host.
for a solo dev, its fine
20 workspaces and 1 userr plus maybe automation user
btw my perforce is acting weird
it kept trying to sync these same 10 files all day yesterday
only when i restarted my pc, did it stop
"Unable to clobber" constantly
rebooted my pc, synced, issue gone
d:\Ironward\SolsticeShooter\SolsticeShooter\Build\...#head - file(s) up-to-date.
no files updated
``` now its fine
😦
le sigh, horde
did i bork my config files?
@arctic hornet if i send my stream files over can you verify if i borked them
i don't think i did, but im running out of ideas
I can try, though I'm knee deep in rewriting mine 🙂
No matching clientspecs found!
Hi,
I'm currently facing this error:
Running AutomationTool... Parsing command line: RebuildLightmaps -project=D:\Repo\Project.uproject -map=Gameplay_CityNew -quality=Preview Command RebuildLightMaps requires P4 functionality. ERROR: No matching clientspecs found! (see C:\Users\Dom\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+UE_4.27\Log.txt for full exception trace) AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
while trying to run this command
"D:\UE_4.27\Engine\Build\BatchFiles\RunUAT.bat" RebuildLightmaps -project="D:\Repo\Project.uproject" -map=Gameplay_CityNew -quality=Preview
Did someone seen this error before? Or could someone could help me figure it out?
Sending Log file as well
you can use -nop4
as a parameter in RunUAT.bat?
add it to the end of your command
nothing changed
show your command
"D:\UE_4.27\Engine\Build\BatchFiles\RunUAT.bat" RebuildLightmaps -project="D:\ShipGraveyard2_repo\ShipGraveyard2.uproject" -map=Gameplay_CityNew -quality=Preview -nop4
hmm
maybe its hardcoded to require p4
maybe you can use the commandlet
UE4Editor-Cmd -run=resavepackages -buildlighting
I want to keep the original command because in theory i can integrate it in with Jenkins
you can integrate commandlet with jenkins also
I'm few hours late, but instead of -nop4 you have you use -p4 since this command requires perforce and stuff as this is really old command (same since early UE4 days)
the RebuildLightmaps is just a wrapper on top of other commands (as it more or less does stuff similar to what buildgraph does these days) so if you just use the editor cmd directly running the resave and buildlighting (as Kaos suggested) you can call that from Jenkins if necessary
Hello Folks!
Anyone stumbled upon the UE5.4.3 crash when trying to Tools->Sync Content from Perforce? New Blueprint-only project, newly created Perforce server.
Top (bottom?) of the stack looks like this:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION 0x000000070003ceb7
UnrealEditor_Engine!UMaterialInterface::PrecacheDefaultMaterialPSOs() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Materials\Material.cpp:611]
UnrealEditor_Engine!FGlobalComponentRecreateRenderStateContext::~FGlobalComponentRecreateRenderStateContext() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\ActorComponent.cpp:362]
UnrealEditor_Engine!UMaterial::PostEditChangePropertyInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Materials\Material.cpp:4755]
UnrealEditor_UnrealEd!UPackageTools::HandlePackageReloaded() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PackageTools.cpp:1160]
Noob p4 question: does copying a stream to another does what I'm expecting it to do? Completely overwriting the target stream with the source stream content, disregarding file revisions, most recent changelists, etc?
i've been working on a project for a long time
project is medium sized
i've never used source control and never used it with this project
am i able to still use source control / version control of some sort for this project ? if so, im assuming this will take quite a long time to backup , but which service would anyone recommend?
theres really only 2 to recommend, git or perforce.
personally i'd recommend perforce, but you'll have to host it yourself either locally or on a cloud server you rent.
As for starting to use it now thats completely fine, setting up source control for an existing project is pretty much the exact same as for a brand new one.
Also I would recommend to start off testing and learning the one you choose with a blank project so you can quickly test out the basics : adding, changing, deleting, reverting
Then head over to your actual project
I would recommend perforce, it feels like it fits unreal better. Git you can see people struggling with weird LFS stuff a fair bit
And remember to set up an ignore file, so you don't fill up your repo with useless cruft like Binaries and Intermediate
Just a heads up, 2024.1 seems too new for even the latest of the latest UGSes - the requirement might not play well with epic's custom magic sauce, gonna have to check what p4api they're including
👀 oh, well that sucks. i'm unfamiliar with UGS i must admit, i'm a fairly basic user as far as p4 goes, if it uses its own user login i wonder if you can add an exception specifically for UGS?
it uses shared credentials, though iirc it might report with some app id etc...
but the thing is, epic has built (honestly super robust and nice to use) wrapper on top of p4api and this seems to screw things up now
and this UGS build is as new as it can get since I built it directly from the source code from UE 5.5 (main branch) few hours ago
so it's not like I'm running old stuff
oh well
yea good idea
i do notice this, i will have to mess with it or watch a tutorial on it so i know how to use
yea im looking into "diversion" right now .. not sure if either of you have heard of it? @wide raven seems new and user friendly
Havent tried it. If it doesnt have file locking : ok for a solo dev, but if you do unreal teamwork it is best to have file locking working out of the box to avoid .uasset conflicts
Unfortunately it still shows the same error 😦
i looked at it and for now i would not recommend it at all, its too new and lacks key features. and no abillity to self host is a big nono.
as others have also pointed out it seems like its not built very well and doesn't bring anything new to the table.
and the UELA definitely doesn't inspire me with great confidence in their product.
combine that with the fact that once you become a bit more serious with UE alot of features are built for and targeted towards perforce.
and that it seems to provide you with a similar toolset as Git without all the community support/expertise and custom tools of Git.
just use perforce if you can, or Git if you want a solid (free) alternative.
yeah it just seemed like a Git wrapper to me
In Perforce, what's the best way to make sure that when you add new assets, they get included when submitting the changelist?
We just downloaded some Megascans textures and were trying to figure out why our landscape material was messed up on just 1 computer, and realized those textures were never added to Perforce.
"reconcile offline work" will go over the entire workspace and compare it to the depot, adding any discrepancies to the changelist.
-
Immediately "Add" things when you are importing them into the project / adding them to the project folders.
-
"Reconcile" is an option, but imo should not be the workflow to use. If the new assets are added in a sensible way into sensible folders and immediately added, everything should be fine.
thanks all!
I found out that the typemap for our perforce server was misconfigured (so things like uassets and maps weren't exclusive checkout).
That has been resolved, so new assets should have the right filetype settings.
I'm looking for a clever solution for dealing with the existing files in the depot. I can use p4 edit -t auto on depot directories to checkout files and update them and I could write a batch file to do edit, revert unchanged and then submit. But that requires a lot of syncing and client spec shenanigans.
What I'd really love is a way to do it all directly on the server without having to check anything out locally. Kind of like using the -v option with p4 copy.
type changing afaik cannot be done "virtually" (i.e. -v flag)
(and to complicate things, under certain conditions you'll have to use p4 reopen rather than p4 edit 🙂 )
such as? from the documentation it seems like it would only be necessary if the file is already checked out. I won't have to deal with that.
I don't remember the specifics, it might be the case, all I remember as I had to do this for my tool that syncs from UDN and mirrors the types to the ones at UDN.
okay. I'll keep an eye out for that I guess.
the logic is simple, if edit fails, you have to use reopen 🙂
for that specific file
So I’ve uploaded my project to a repo and I’ve done this specifically so my friend who is on a windows can take the project and build it for windows on his computer. The question I have is how would he be able to point the project file to his computers source engine so he can then generate fresh project files? I’m assuming he will just have to download everything? (Needs to be source engine for server target)
You usually upload your engine together with the game itself, your friend then downloads the repo and compiles it all then it will run for them
if you're syncing from git and using perforce, what you'd want to do is to clone epic's unreal engine, run Setup.bat and then upload all of the files to perforce, then add your project folder (exclude Saved, Binaries and Intermediate folders) upload that too
then both of you sync and compile editor locally
and at this point it might be easier for you to just use unreal game sync as it simplifies the syncing etc...
Damn I was afraid I should have done that… the uploading and downloading takes so long it wastes whole days 😭
What is unreal game sync?
iit's epic made tool that is more or less wrapper on top perforce which makes it easy to sync and build etc..
https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-game-sync-ugs-for-unreal-engine see epic's documentation
Epic Games Developer
An overview of UnrealGameSync (UGS), an internal tool used by developers to sync their Workspace with a project's stream.
or , here is simplified explanation by Ari https://youtu.be/102O0FOEzNY?si=2WZzqswvYwTkRgwu&t=927
Learn best practices on setting up an Unreal Engine studio when it comes to technical production workflows like version control, branching strategies, binary deliveries, virtual assets, shared/cloud DDC, UGS, and more.
Thanks for sharing. So for future reference I should include the source engine in the uploading next time
honestly, check the presentation I sent you as a whole, this is what more or less epic and large teams are running
if you focus on the basics (i.e. folder structure on perforce + UGS) it's quite easy to set up
and you can later expand it with stuff like Horde (build automation etc...) etc..
and it all kinda fits together
Makes sense, I’m actually just trying to get my friend to build it on windows , I’m the only one that is working on the project so not sure if I’d be the target audience
Wish there was an easier way to build / package for other platforms
ah, so you're not on windows I presume?
then UGS is sadly not for you, UGS is only for windows right now... well, there's ugs CLI which is cross-platform
but yeah... on windows you can build for windows, linux, android and game consoles... the only platform you have to use native toolchain for is apple
but on linux you can only compile android and linux afaik
and on mac, it's mac only iirc
Yea I’m on Mac which has been the most difficult part of my entire process thus far lol
They actually have built their own source engine on their computer and have it ready for the project but as I mentioned not sure how they are going to be able to get the project file to point to their source engine without downloading it. So assuming that will be my only option is to have them download the whole project and do things manually
You're "effectively" starting two parallel forks of your game project with this work flow. It's obviously a bit weird
Did you make any edits to your source engine... Did they make identical edits to theirs
Yea it is a bit of a forced workflow, I’d like to find a better one lol
No edits to the source engine tho
Then as long as you're both using the same branch / tagged release you're at least not getting into trouble, per se
but honestly i'ts kinda asking for trouble sooner or later due to some asset corruption if you modify something in one place etc...
Yeah... Tbh. Generally speaking getting into a project requiring dedicated servers way before you're experienced enough is going to probably be a bad business decision no matter how you swing it
Getting into any kind of game requiring more than a single player is probably a bad start.
Hey man I'm trying to break it to them easy
Lol I appreciate the concerns but I’m not going to stop now 🤣
I was just curious if there was a good way to build for another platform. There is nothing the other user needs to touch other than building and packaging the project as is.
Well it sounds like you haven't been using any source control before this but maybe you'll start now so that's a good step
Yea I’m the only person working on the project and I have a constant external hard drive backing it up
Gross
It’s worked great in my case. Never had any issues and I’ve had to revert or old versions many times
And tbh the only reason I’m using it now (source control) is cause I thought it would be easier than sending a zip file of the project via google drive lol
hello, not strictly a UE question, but P4 logs me out so often its annoying, i am sure i can extend the session time or something to a week
ah its on the group not a global setting
hmm now i can't get my discord webhook to trigger, i don't even see any log file from p4, hmm
I have to use Rider but also Perforce
Perforce needs read-only
Rider complain it cant save settings
any clue how to fix this?
it won't take Rider into account but it's a good start
to fix this you're going to have to manually delete all temp files from your depot (recommend force purge from P4Admin to free up the space)... or delete the whole depot and start over
so
I locally duplicate a backup
then try to force purge from the P4Admin