#source-control
1 messages · Page 25 of 1
no, multi-user editting is a feature of unreal
is has nothing to do with perforce
you ideally need to use some version control to get everyone to the same starting point, but after that unreal takes over
Although keep in mind that it's still a beta feature
but here is epic's documentation on that topic https://dev.epicgames.com/documentation/en-us/unreal-engine/multi-user-editing-in-unreal-engine?application_version=5.5
I will take a look.
perforce is not a good choice
trust me.
each liscence after 5 costs 1000 bucks.
this is not true, its 500per additional license per year.
on premise?
anywhere, unless you are using their managed cloud solution thats more expensive.
when i had a personal meeting with Perforce to make me an better offer
but then you also pay for them to hold and manage your data, servers, etc. and provide support
they said any additional liscence is 900
how long ago was this?
6 months ago?
this was what i was quoted at the end of February
dafuq.
thats pretty much standard, if you google around thats pretty much what everyone gets
then they tried to fool me idk
i doubt u''ll get cheaper unless you buy at least dozens maybe hundreds of licenses.
only thing i can think of that you were not informed of prices for a helix core license but for their managed solution, or a combination of licenses for multiple of their softwares
for instance the addition of helix DAM adds 275:
I was handed a helix core instance. I had initially tried asking for a windows VM. Our service dept said - “No, use perforce.”
Will this support multi-edit mode?
klukule already said it - multi-user editing has nothing to do with version control. you get version control because you want version control, not to support multi-user-editing.
To clarify, this is a student project hosted in a university dept. We work globally.
Using industry experience, we setup a GitHub based version control system with a nifty file server. In this case, we asked specifically for a Windows VM to setup multi-edit mode.
The response for our IT dept: “no, use helix core.”
Thoughts?
Let’s be more specific.
“A team of four windows based computers using Unreal 5.4.4 binary need to establish a good pipeline.
Define the best setup for a globally distributed network that allows users to collaborate on the same project in near real-time.”
This is for Computer Science.
Does this service exist?
Read my messages above for better context. I was handed a “solution.”
I was given perforce as an alternative to my windows VM request.
I think we are all on the same page - that solution does not fulfill the need.
Does anyone have tips for establishing multi-edit mode. Is it worth trying?
make an unreal project
copy paste it onto a USB drive
copy paste that onto another PC
you now have the same project on two PCs and you are now 100% ready to try using multi-user editing.
git, perforce, or any other version control systems replace those first steps with a much more robust system for team collaboration.
as an aside, i would wager almost nobody uses multi-user editing mode. nobody in the real world wants it. everyone has their skills and roles and does their job. if people need to have a quick chat to brainstorm/coordinate a bit, they just do a quick voice call and screen share what they're doing. i'm sure there are some people making very good use of multi-user editing out there somewhere, but it is not the norm.
Comp sci. We’ll make it happen. Thanks.
Received feedback from a prof. “this link seems to imply that, if you all have the same Unreal version, the same project (best way being by syncing the remote Helix Core repository, worst way, copying and pasting the project on each computer), one of the computer/laptop could start the server
We may need to use Tailscale for “localizing” the net.
Not sure if it was answered later down the discussion (haven't read that far yet) but I think that you and your IT are thinking of two different things... what IT thinks is the usual collaboration, i.e. you submit changes, people sync them, not real-time... for which helix core/perforce is the best... but it seems like you want realtime collaboration... which is the multi-user editing though I've never seen it used over WAN so you'll see if it works for you
Yep agreed with Klukule, if IT are telling you to use helix then there is a miscommunication on the needs of the project. You need to explain to them and show them a proof of concept (even a video online would be sufficient)
its possible to do over WAN but tailscale will definitely trivialize the process.
as mentioned, and i agree, there is probably a miscommunication between you and the IT people.
however, i would recomend going with the perforce/source control route as well, its far more industry standard, and more in line with what you would use in real world implementations, multi user editing is limited in its use sometimes buggy and fidgetty and all in all just not used by anyone but a select few, and from my experience the "real-time"multi user work flow does more harm than good.
We are all on the same page. Except IT…
As mentioned, it may work better this way. Multi-edit was just an idea. Even so, possible with a VPN and one person hosting.
I dont think there is no "better this way". What you want is live multi user input and collaboration. Source control does not do that live. You can probably script it to auto pull latest every second. but that's about as close as you are getting to "real time" multi user editing
But yes it's entirely possible to set up Multi user with a shared network and VPN and one main machine as the host. I think that's the standard for it. However, what it's not is anything like source control. Or any form of source / version preservation
Thanks for the replies. I wanted IT to initialize a VM so we could multi-share on the fly. But, we’re on the right track. We can work with the systems we have and use a VPN connect. The version control system will be king. Let’s see how global collab goes.
(Not that we will, but if we get stuck, we will brainstorm coding something custom.
the only thing that getting a VM would have done for you is given you a machine you could run Perforce on.
(i don't know why so many people on this planet think that multi-user editing is some sort of holy grail of project development...)
but yes, you're on some sort of right track now anyway
Finding the (Borealis) git integration in the Editor unworkably slow - can take 10 seconds of modal Revision Control dialogs just to move an asset. Sometimes even hangs.
If P4 the same here, or even worse due to remote repo?
p4 works fine to my experience
That's using the P4 integration in the editor, right? (as I find git command line or git clients ok)
Yes - I don't really use the editor integration much though. Checkouts, Moves, Renames and bp diffs mostly. I do everything else in P4V
p4 absolutely adds a delay but it should be proportional to your latency to the server mostly. it has to talk to the server for every single stupid file operation and it is a single-file queue
Similar, I just can't handle waiting.
Probably best I try it out in tandem - want to make sure Rider can handle partial file check-ins and P4 nicely handle existing git repos such as the engine and third party libraries.
it will (probably) work better than what you're describing but it's sadly... not as fluid as no version control 🤣
haha, no version control feels like not wearing a seat belt
Server will be local on a NAS, so hopefully fast enough.
i just don't know why humans can build 397 ft tall autonomous flying rockets that land on a dime but we can't build a little bit of parallel processing or even prediction and rollback features into a stupid version control system
damn clientside prediction of VCS actions would be sweet 👀 what did i just dream of
Because rockets are interesting. Imagine how boring working on a VCS would be.
So can P4 handle two people working on the same, easily merged text-based file at the same time?
yes : )
I have published a new release 1.12.0 of the Plastic SCM plugin for Unreal Engine on Github and on the new Fab marketplace
It adds support for Unreal Engine 5.5, improve the "create repository" wizard, and fix performance issues and bugs reported by our users.
Thread on the forums: https://forums.unrealengine.com/t/plastic-scm-plugin-1-12-0-released-with-support-for-ue5-5-and-bugfixes/2188134
Don't hesitate to reach out to me directly, even though I tend to be less visible here, our directly to our support team.
Cheers!
I’m trying to change my local p4 server to have not just my project, but my entire engine. How can I sort of “reset” my p4 server so that it prompts me to add new files as if it’s a blank server?
I obliterated the stream but it still doesn’t bring up that add file wizard when I make a new workspace.
When I mark for add it seems to just hang because it is a huge amount of files when I try to add the entire engine.
To clarify, I’ve cleared off the entire stream and am trying a fresh mark for add, but it’s like 376k files
p4 pretty smooth so far - just haven't found the ability to partially commit source files. Was hoping Rider handled this generically for all VCSs rather than relying on the VCS supporting it.
This seems like a series of bad decisions (why would you obliterate?) but you'll need to wait it out
Yeah it did seem like a bad idea but I wanted to clear the mainline in the hopes of being prompted to add new files like when I originally set up the stream. (It didn’t, womp womp) The folder that was my root was nested within the engine folder that I wanted to upload and I wanted to avoid conflict.
How long should that mark for add phase take? It ran overnight and was still going in the morning. I clicked submit which let that process begin, but I’m not certain if mark for add ever finished
I always do it with the command line, p4 add shouldn't take as long as a reconcile though, which would be an overnight operation unless you use the fast one
And wait, how did you lay out the depot?
I first tried a new separate depot which my client couldn’t see for some reason. There was no mainline folder in it fwiw.
That was when I decided to obliterate the mainline streamDepot. I have the files on 2 other computers so I’m not worried about losing it or worried about old versions at this point in development.
If it helps, I can share screenshots later. I’m not too terminologically gifted with p4
I was using the p4v visual client. You recommend cmd line with p4 add? It’s like, idk, 200gb of files?
Might help, might not, but worth a shot
And the other answer didn't really answer the question
It's how you're laying out engine and project
Oh. I think standard. UE 5.4 source engine, with the project folder in that root engine folder
So like
- UE
— vs
— engine
— game project
—-engine
—-content
—-etc
—etc
I was hoping for an actual screenshot because why would the project have an engine folder within it?
Because it’s a cpp project that I brought into the source engine. I can get a screenshot later when I’m home
well that's not even vaguely correct for doing a native source build anyway
Can you explain why? I’ve built and packaged many times over just fine
I was going off the information you told me and the first pin tells you the proper native build layout
Thanks, didn’t realize that. I’ll look into that
hmm, sorry am i reading this correctly - are you saying you want to be able to commit like half of your modifications to a file? i don't know if perforce supports that, you'd probably need to do something janky locally. that also just seems oddly dangerous to me. i wouldn't even allow it if i was team lead. you shouldn't be committing stuff that you aren't building/testing IMHO
best similar workflow i can think of in P4, quite janky, would be A) shelve your file's changes to the server, reverting the local copy, B) selectively re-applying the modifications locally so you can properly build and check your work before committing just those changes, C) commit and then unshelf the original modifications
What do you guys use for remote project sharing? Is GitHub the best? Or is there an alternative that might be better?
What do you mean by project sharing? A public repo that everyone can read and send PRs to?
We are a very small Indy group that are all remote. I’m trying to get some advice on what we should use to store our game so we can all share and work on the build independently
p4 has single file as the smallest unit of work possible. IDE cannot override that behaviour.
Have to say I didn't even know that was a thing in git, and I don't really see it being very useful
most people use Perforce or Git. a few people use Plastic. very rarely some people use SVN. there is also Diversion, which is a relatively new startup (Egal is reading this i'm sure).
i am not endorsing any in particular; every option will have pros and cons for different teams and their needs.
@wide raven Partial commits are very useful - allowing fine grained, focused commits, iterative development, harmless debugging code trying to help trap some unreproducible bug. Note git has 'squash merges' to prevent these fine grained commits polluting the remote repo history.
@woven sluice They're safe in git because you're committing locally and can fully test multiple commits and ensure there are no potentially unsafe modifications left uncommitted before pushing remotely. Automated pre-merge checks on server, w/ unit tests where feasible. Chatgpt explicitly indicated p4 doesn't do it natively but possible w p4 because Rider implemented it agnostically for all VCSs - but that ended up being incorrect.
Found a few others asking about partial commits in Plastic and p4 with that shelving technique suggested but can't see myself doing that with fluidity or confidence. Thanks for the suggestion though.
"but that ended up being incorrect" if I had a nickel for every time I've heard that with a chatgpt thing
When you have to check the answer on multiple LLMs, you know there's a problem.
haha. and yeah, fair enough about local commits with git i guess. we're all brainwashed by gamedev/perforce with rigid trunk dev here 
I can definitely see the advantages of both systems, but being predominantly code - I'll revisit p4 when assets become more of an issue.
Hey, I actualy have a project which I currently manage with GIT. Now I run into some issues because I work with c++ in Code so the Binaries for example aren't shared. I actually have two teammates that don't code (Audio and Artist) my actual work around for this is to send the binaries manual. Is there a better way for doing such stuff? I saw some comments that P4 is generaly better, but I don't have any experience with that and this is also my first Unreal Project. But with a project that will grow I may need a better solution for all of that 🫣 Maybe someone has tipps or links ?
What is a good source control option on essentially a non existent budget? Team of 2-3, I do have a fairly capable pc at home and 1gigbit network connection
If you can host your own server, I would recommend perforce aka Helix Core
same as above. Many people seem to be ok with git, but from what one sees on this channel, there are pain points
im assuming i can assign limits to how many of my resources it takes?
cause i still use my main rig like daily
possibly, though I would probably endeavour to set up a separate machine for it. That machine could then also run as a build machine in the future, when you are ready to set up Jenkins / TeamCity or similar
A server/builder doesn't need to be a beefy machine, and doesn't need a fancy GPU
yeah
my main rig has a 12gb 3060
with a 12700k
probably build something similar for perforce
theres really only 1 actual coder on the team currently
doesn't really matter, version control is absolutely mandatory for even a solo dev in my opinion
can save your ass in many ways
i mean we have a 2TB G-drive
which i can download a copy from and throw it in the big office safe
version control is better than a backup
- easily roll back specific changes
- file locking so people dont cause unnecessary merge conflicts ( .uassets are unmergeable )
true. the big thing is the near zero budget
fixed income and rent control can have its downsides
cant git handle the majority of it?
Yes, people use git. LFS is probably the typical problem area
azure ado does it free for up to 5 users
I've heard rumors of git even supporting file locking these days?
perforce is free for up to 5 users and 20 workspaces, which should be ok for your team of 3... and perforce can also run on pretty much any hardware configuration (including rPI) but the throughput will be abysmal
so the more resources you can give to perforce the faster it'll get
but for a team of 3 people, if you don't mind waiting a little for large changes can be handled by pretty much any computer with SSD (I do highly recommend SSDs due to the random iops performance)
Dell OptiPlex 7050 Micro Computer, Intel Quad Core i5-6500T up to 3.1GHz, 16G DDR4, 256G SSD, Windows 10 Pro 64 Bit-Multi-Language Supports English/Spanish/French(Renewed) https://a.co/d/gK6ROSj
Will this work?
I find 250 gig SSD quite small, but otherwise it would work just fine
I mean i have a set of 16tb hdds
I don't think those will fit into this chasis
I have 6 in RAID atm
it's also necessary to say that if your colleagues aren't on your LAN you'd probably need public IP address etc... so they can connect to your network
true, although here in europe it's normal even with 10 USD a month 1gbps residential connection
Yeah, i know. Downside of usa
it's got it's own upsides and downsides, like any other country
Upside is we have a ridiculous amount of family land and big workshop we can do motion capture in.
that's cool
oof
either way, the only thing as I've said is that I don't think that drives will fit into the chasis + as with any prebuilt computers you won't even have sata power cables most likely. And I still highly recommend using SSDs instead of HDDs for perforce due to the random read/writes you'll probably get. But with small team it should be fine, although migrating later down the line will be painfully slow
if you store whole unreal including engine source code on perforce (which I personally recommend, since it opens whole ecosystem of epic made tools for you) it's like 80 Gigs and about 300-400k files
Yeah, if we do migrate i have friends who own a DC in dallas, they will sell me a tray for the cost of power and ethernet to it.
Atm though. I cant afford that
tbh at the start you could host on your own computer if you don't mind having it on most of the time
perforce itself takes pretty much 0 resources unless there are some active operations going on
200% power gen via local solar, power costs me zero every month
mostly submits is what takes decent chunk of CPU because it's doing the file hashing etc.
Ping and rig resources would likely be the issue
that's what i would do too... run it on what you already have to start. you may want to ditch the in-house solution at some point and then you'll just have wasted the money on the little crappy box
Box is $140
And you can rework it for other stuff
I bought a bunch a while back for a physics experiment
i ditched in-house to improve ping response for my teammates more than anything, since it's so annoying how much longer every unreal editor operation takes once perforce is hooked up
in ue 5.5 more things are now done asynchronously so it's relatively fine now
that's what I said 
tbh, we're still self-hosting at my home, since I've got decent internet were ping across whole europe is sub 20ms for me... which is relatively fine even for perforce operations
yeah i'm in canuckistan and my mates are in EU so it wasn't as good lol
I have few folks from US and Australia helping us, the only thing with Australians si that their network infrastructure is even worse than the US spagetti and so their speeds are slow
I have 9-30 ping in all of continental us
yeah, you'd be fine with that
😂
anything generally about 200+ ms is noticeably slow
since ping is one way
and rtt is usually double that + some processing time... and waiting half a second for one operation is not great
On dsl i used to be happy with roughly 400 ping
especially since unreal is inefficient and tends to make ton of requests instead of batching them together
Imagine playing online games with 400-1200 ping
Or watching youtube with less than a 3rd of a megbyte
I can, while I was at uni we had shitty LTE internet and the moment you put any load on it it spiked like that
Yeah, I'm ok with my connection too 😄
yikes
Either way, we've got quite offtopic and I have some more work to do, so I'm going to stop flexing and start working 😄
Heh
@woven sluice I like to flex with google, since the thing is... my connection goes straight into the datacenter where local google servers are, so the route is: my router, my basement router, router in the datacenter, google router 🙂
so doesn't represent every connection, but cool nonetheless
Punk
man's got the fastest shitty ai-infuzed web searches in all the land
I mean, twitch's in the same building across the street from me
though that's not much better 
Hi guys!
Our team is working on an open-world project using OFPA. Overall, it's a very convenient technology that makes collaborative work more comfortable. However, it does have its downsides.
The main issue our level designers dislike is the fact that the autogenerated file names for saving are very difficult to associate with the actual objects. It would be much more convenient to display their original names when saving, and ideally even include some additional information (for instance, which DataLayer the object belongs to).
It seems that the engine doesn't provide any built-in functionality for this, but perhaps there are plugins or other third-party tools available? Does anyone have similar experience?
The engine very much does that when commiting/submitting from it (instead of third party tool)
Thank you for the answer! Sorry, it seems that I misunderstood level designer's message)) They want not just friendly names (you are right, they are already displayed in "Save Content" window), but more information - like for example to what DataLayer the object belongs to...
I'm learning about perforce and I'm a little confused about the use case for streams. What does having a separate dev and main stream accomplish?
Maybe if you're working on a system in dev and things are temporarily broken, I guess then you can still find a playable version on the game in main?
Would I ever want to use multiple dev streams? That seems like it would cause issues in that it circumvents checking out files and allows multiple people to edit one file (two versions which you'll eventually have to merge or override)
Yes, with files that can't be merged streams loose much of their utility. It's one of the reasons that perforce generally has a trunk based development for games. We tend to be very heavy on binary assets of one sort or another.
But for cases that can be code only, streams can be useful to temporarily break things during a refactor as you mention. And have a built in way to restore to the working state by just moving back to the main stream.
I use streams at work mostly to manage the flow of engine upgrade changes.
You can also use virtual streams to work in the same stream but filter out certain directories or add in new ones while still working in the main stream for binary content.
I see, thanks
We use streams mostly for engine merges same as Ramius, but if there is some long-standing effort, for example massive fixes/experiments to the core engine, we do it on separate stream just so we keep the mainline still up and running... but with Unreal in particular, it's generally best to stay in single stream to avoid as many issues as possible
even with robomerge epic is constantly having to stomp changes or redo their work (words directly quoted from Epic employee)
hello, how do I set myself as admin of the server i am hosting on my pc?
We had an issue a while ago where everyone had too much access then accidentally removed the privs from ourselves.
now dont have the ability to remove or add anyone or manage permissions etc
locked ourselves out sorta. can still access the project
but dont have privs.
I cant edit permissions through cmd
for anyone curious. Solved the issue.
Just had to stop the Perforce service, remove db.protect file in the server root, restart the service. then refresh p4admin window
why is revision control in UE so damn slow? git operations should be almost instant
it's especially bad in paritioned worlds
what does this mean in a Git context and why in the world is it taking so long?
it's basically unusable, going to need to disconnect Git completely
does anyone have any alternative recommended source control system?
Perforce
yeah i'm fine with git for now as long as i don't set up revision control inside of the UE editor
if i use external tools it's fine
but it'd be nice if i could turn it on in UE without it being dreadfully slow
someone mentioned 5.5 may have started making some VCS actions async which would be cool but i haven't tried 5.5 either
yeah if i was solo on git i would not turn on in-editor VCS lol
by VCS actions I meant specifically Perforce, not in general
afaik official git integration is kinda on life support
so I'd recommend using third-party git integration like the one developed by project borealis, since that one is better afaik (never used it personally though)
and also they might still be ue5-main only rather than merged to release branches, I haven't looked at it that much lately, all I know is that I saw some CLs related to optimizing perforce
I use this plugin for git. If you follow the set up in the README, it is a lot faster than the default git that ships with the engine. Personally, I disable git lfs locking for it.
https://github.com/ProjectBorealis/UEGitPlugin
@echo glacier if you disable git lfs, how do you handle large files?
I disable git lfs file locking. Not git lfs
super helpful, tysm
Not sure the best place to ask this. I'm working on a c++ project with an artist. When he first synced the project and double clicked the uproject file, it said the modules were out of date and built them. Great.
But when I update the source code it does not build the modules again. So far he deleted the binaries folder and it built them again.
But there must be a better way... is it possible to manually trigger a build-if-out-of-date step for non coders?
find laura's blog in #cpp pins, find the tips and tricks page
Sweet, thanks!
bForceCompilationAtStartup=True
hello! Anyone happen to know what could be causing Perforce to say certain files are not found but they clearly are there?
That's an absolutely awful screenshot. My phone is totally awful at rendering that screenshot.
You'll have to show us how they are "clearly there". We don't have anything to compare against.
sorry, i mean that if I go to the folder that has the file the file is present, when I mark it for add it is added to the pending changelist, and when I hit submit it gives the error
they are mostly dll files, the problem is any other dll get added and uploaded without issues, these specific ones do not no mater what
those aren't your files though
look at it. it's a mkdir command failing somehow
i think i've never seen that happen. paths too long? weird permissions issue? i don't know
is the server on a windows or linux box?
paths are not much longer than any other uploaded files, these are from compiling UE5, and this is on win 11
so I am trying to upload the engine to work with UGS, which I have not found any solid information, the only one tutorial I found just marked all for add and uploaded without any issues
all i can say is that this is perforce failing somehow to make its own file structure. every file is stored inside of a folder (see the ,d) and the different versions of the file are numbered in there, it's how it works, but i don't know what this failure is
yeah, not sure whats up, its just a normal file like every other file that I am just marking for add that just does not want to submit, there are also 2 png files that do not want to submit
What do you get from 'p4 diskspace'?
I just tried increasing my path length on windows, maybe that could have been the issue
Could be. Which does suck since you don't have control over most of that path.
well, the files seems to have gotten uploaded without my input... weird. eh well, thanks for the help!

Gitlab > everything else
Hey, so I've been really struggling to figure out what the go is with Perforce.
Is it possible to locally (onprem) host my own Perforce server via a LAN-connected second PC, and then somehow periodically upload backups to cloud storage?
What i'm asking is, is it possible to meaningfully backup Perforce data to the cloud/secondary physical storage without hosting perforce itself on the cloud?
I guess what I'm trying to achieve is minimize computation costs ( I already own a second machine) and only have to deal with storage costs, i.e. penny pinching, I guess.
is this kind of approach sane/viable at all, or do I just need to bite the bullet and pay for perforce cloud hosting?
ah yeah, of course there's a dedicated FAQ for it that I neglected to read. Thanks for bearing with me, I'll have a look - thank you! 🙏
Does somebody backup version files (depot files) in perforce? If yes, how?
I struggle archiving the version files (unreal engine source) to a .tar file.
My source control doesn't tell me when someone else has checked out a file, it doesn't mark the file, and it even lets me check it out too!
It's working otherwise, my team can pick up each other's changes after checking in. Is there some setting I might have the wrong way? I'm using Plastic SCM
Okay this is definitely some missed setting on my coworker's side. My checked-out files look like the first screenshot, but his look like the second. Note the lack of the "checked out" icon.
But I can't figure out which setting he's got wrong. We've already been over all the ones I know about
There’s a link like two messages before your post for how to backup perforce.
https://help.perforce.com/helix-core/server-apps/p4sag/2023.2/Content/P4SAG/backup-procedure.html
thank you for sharing, but I'm not talking about checkpoints or rotating journal files. I'm talking about backing up version files. I know where to locate them, it's just how do people backup these files, because it can be a very long process, especially when you have a depot containing the unreal engine source.
I’m not at my computer, but the last time I looked at that page (or maybe it’s other pages in that section) it covers that. Backing up perforce should include the version files too.
Anyone have experience with helix core becoming unresponsive (unable to connect as a user) with CPU spiking at 100% usage? Note, I haven't done anything with the instance today yet. Just getting started and attempting to connect now, so I've done no activities that would cause the CPU usage
This isn't the first time its happened either, and previously I've fixed it by straight up killing the droplet and bringing it back up. But that seems less than ideal
IIRC I use rsync to backup the files to a remote folder.
I setup two folders, and backup once mid week to one folder, and to the other folder at the weekend.
It's quick at skipping files that have not changed.
Obviously the first backup took a long time!
Do you upload your backup to the cloud? Or just on different disks I'm assuming?
To the cloud. Wasabi.
That reminds me I really need to test it, it's been a while since I checked it.
Do you just upload one of those two folders or do you additionally archive it?
There's no archive step on the machine. It does the journal/checkpoint etc, then backs up the depot root folder directly to the cloud end point.
okay, thank you 😃
Is there any downside to putting one's third party libraries under the Content folder into yet another folder for grouping? E.g. Content/BunchOfLibrariesA , Content/BunchOfLibrariesB, rather than have it all be under Content/ at the same level?
No. As long as you do it from within the Editor and produce/cleanup redirectors.
If you do it prior to checking in it may be able to update everything without redirectors.
I think the only downside might be higher chance of bumping into path characters limit? I forget if it's something like 200 characters still of if maybe that went away in 5.x
keep your folder names short, you normally shouldn't have filepath length issues unless you have multiple levels of nested folders and folder/asset names that are excessive in length.
consider LibCol_A (Library Collection A), or Libs_A rather than "BunchOfLibrariesA"
anyone here use azure and git?
Im having trouble cloning from azure using git, its slow and doesnt download the umap files for some reason
Hello. How can I migrate a Changelist from one perforce depot to another?
Are they on the same server?
Hey Ramius! No, they are two different projects that share a library I made. I did an upgrade to one and I want the other to reflect it.
I have access to a workspace for each.
Then, while using the workspace for the target location you should be able to select the submitted changelist and select 'Merge/Integrate using Submitted Changelist'.
You'll get a dialog box for the merge. Change the merge method (very top) to "specify source and taget files".
Fill in or browse to get the right target file/folder location.
If this is for your home projects, consider putting the library in a separate stream and importing it to both projects or leveraging the additional plugins directories (if you've updated to 5.5) to share them from one location on disk.
If it's for work, consider setting up streams so that you can merge from a project stream to a "studio" authoritative stream and then back out to project streams of the plugins.
Thank you. I'll do my best.
Any plugins out there that are useful for determining which assets are no longer being referenced by anything and you might want to consider deleting? Is this one of those things that people just script for?
Sounds like an #editor-scripting question. Not source control.
can someone teach me how to collaborate with people on ue5 so they can work on my project with me?
basically you need to learn how to use a VCS like perforce or git or plastic or diversion or svn
Good order of preference
I'm using that to version a source build, its working normally, just make sure you're using http and not ssh, and maybe check the .gitattributes file, other than that idk the problem what could be
ofc I assume you use git lfs, if not, you should
Is there such a thing as a git blame but inside of p4v, if I wanted to figure out the history of a particular line of code and what CL it was added as part of?
In perforce I am trying to figure out how to clear up some space on my server / I deleted a stream and any associated workspaces in that stream but in doing so it did not free up any space on my linux server? if I check the Depot I can still see the deleted stream but don't see any option to delete that off of the server? ... I guess what is confusing me is I added the project files and it took up space on the server but then I deleted the workspace and stream and it did not change the used storage at all on my server.
Not directly. Both Rider and VS can show you line blames. I think VS had it on by default at one point. Not sure where the option is in Rider.
Using P4V you can use the timelapse view to see the line changes and move back and forth in its history.
You can use obliterate to completely remove files from your server, but you have to be really, really, really sure that you don't need them because you (obviously) won't be able to retrieve information from those files any longer.
So my question would be if I reupload the project files I need in that dead stream is it going to replace the old ones or just add on top of it taking up even more storage
Basically the end goal I have 2 main streams I am working out of and before merging down I wanted to just duplicate them to run a test merger so I created two new streams and added the projects from both streams. After doing so some one made some changes so I wanted to bring those changes over to the "test stream copies" but was having issues so figured I could just delete those test streams and re-upload again with the current projects
If you re-add files, they'll added on top of the deleted files.
If someone made changes to one of the source streams, you should be able to do a simple merge of the changes from the source to your test stream.
But in that case, it sounds like it would be safe to obliterate your test stream and re-duplicate the streams into the test stream.
yeah when I initially did a merge i had like 3000 clobber errors out of nowhere and i tried the merge again with just auto clobber then other errors occured
do you have any more info on how to do the obliterate thing?
Roger, will investigate, thank you!
You've got to use the commandline interface for perforce.
The perforce documentation is pretty good.
https://help.perforce.com/helix-core/server-apps/cmdref/current/Content/CmdRef/p4_obliterate.html
Ah amazing, thank you. Didn't know about Timelapse View at all.
hi folks, quick Q for confirmation: the typemap applies to all depots in a server right so it must be tailored to target individual depots differently if desired?
Correct
and the p4ignore is set on a per-client basis and usually is a file that exists in the workspace?
p4ignore : technically per client, but we generally have it versioned and keep it the same for all devs
Exists in workspace yes
thank you. yes, versioned but must be set on each client machine
basically, typemap=server-wide and p4ignore=essentially workspace local
Anybody know why I'm getting this error? I'm logged in on Gluon (Plastic SCM) and I just set up the repo yesterday. I can checkout/push just fine for other projects. I have file locking setup the same as I do for my other project. I can even check out via the Gluon editor, but I get this error when trying to check out in Unreal editor. I am connected and it's showing the proper cloud server and my username.
^ Just found someone else post about this and they mentioned signing out of the Plastic editor and back in, so I'll try that now. Should have done a search before posting.
^ Just another little update.
SOLUTION: I had to disable version control from Unreal (switch back to none), then remove my account from the Gluon/Plastic editor to "log out", then login again, then reenable version control and now it's working.
Still dealing with the most frustrating issues regarding autosave, doesn't seem like many other people run into this. If the engine crashes and I try to revert to the autosave, I get the "Unable to Check Out From Revision Control!" message, on all projects, even those that have never had source control enabled, and even if the plugins and source control options are disabled.
Hoping someone has a solution!
Is there a good way to upload binaries for the artists that I'm working with?
We are using git for the source control.
I have seen that perforce is a good alternative for that but sadly we can't afford it as we are more than 5 people.
How many programmers do you have?
Just 3
Even then you're best bet would be an automated build system that can build and submit them.
A person could do this, as long as they're syncing to latest before they build and submit new binaries.
You want to avoid every programmer needing to sync latest and submit new binaries for each of their checkins.
It depends on the frequency. It's easy for one person to do it if they're just doing it in the morning.
But they also have to be careful that they not including unfinished local work.
Hm I see, how exactly would one setup an automated build system?
That I can't help you with. Especially with git. But I'm sure there are general git automated build tools that you can search for. that not an unreal specific problem with git and I vaguely recall them having something but I've never really looked too indepth at it.
Alright I get that, anyways thank you very much for your help 🙌🏻
To be fair, using perforce doesn't really solve this problem for you directly.
There's a tool from Epic, UnrealGameSync, but it requires you to have an automated build pipeline in place anyway!
yeah I heard about that, I'll definitely check it out
But just to be sure, at the end of the day I would still have to upload the binaries for the project somewhere that the artists then can pull, right?
Yes
Say I got a local automated build tool working, do I just have to upload all the binaries to some repo in the cloud or is there anything to take care of?
That should be everything.
Alright, thanks. Appreciate your help !
Even with perforce and UGS it works like this:
- build server builds and zips the binaries for given change
- ugs looks at available binaries and gets the appropriate zip
- extracts it
- launches editor
- before next sync it cleans them up
So I’m pretty sure that with bunch of elbow grease you’d be able to set something like this without perforce and UGS … probably with some off the shelf CI solution, S3 or whatever external storage… and most likely some git pre and post sync hooks
You can also build binaries on non-programmer machines fairly seamlessly.
- Install MS Build tools for the correct engine version.
- Set this in user settings file:
Config\DefaultEditorPerProjectUserSettings.ini
[/Script/UnrealEd.EditorLoadingSavingSettings]
bForceCompilationAtStartup=True
After syncing latest code, launching the project will build the binaries as required.
So I have a little perforce mystery I can't seem to get cleared up. On the Release stream I want to exclude a bunch of folders (non project files), which I did using the "Ignored" category in the advanced stream settings. This worked, but it turned out to also ignore files with the same word in it in all directories for some reason. So I assumed there's some kind of wild card at play here.
I set up a little test depot to try different cases and I'm a bit confused by the result. So if I mark Exclude/... as a directory to exclude, it will in fact exclude every file in the whole depot that has the word "Exclude" in it... I tried a few things like using quotation marks or using // to indicate it's root (but this was not allowed). I also tried both in "Paths" with the exclude command and in "Ignored" by just listing directories. But all of it has the same result...
So all the files marked in red are being excluded in the other stream:
Feel free to redirect me to a perforce community. I just haven't found one yet.
Hey there, I have included /Binaries/ in my .p4ignore file (with * before / and after /), yet when I reconcile offline work, perforce always finds f.e. the UnrealEditor-XXX-Win64-DebugGame.dll, or when I make a build (not in the workspace), he also adds the .exe and .target files, even though I would like to ignore them. Does anyone know why this happens?
hmm i have never seen these features misbehave, although i don't know if i've tried this specific scenario. really odd. perforce server reasonably up-to-date?
Binaries/... doesn't match AnyFolder/Binaries/...
trying putting both into it, e.g.
Binaries/*
Plugins/*/Binaries/*```
This is currently in my ignore file - does this look incorrect?
well, that would work fine if all of your project files exist in a subfolder in your repo
i believe * means any characters
but not no characters
My project is located in D:/Workspaces/ProjectName/
The ignore is in that folder, as well as the uproject file.
Then D:/Workspaces/ProjectName/Binaries/Win64/ etc..
So to exclude the whole folder I would rather use */Binaries/ ?
??
Here is our ignore file for ref ( in project root )
*.sln
# Ignore IDE files
.idea
.vs
/.idea/
/.vs/
/Plugins/Developer/RiderLink/
# Ignore generated folders
Saved/
Binaries/
Intermediate/
DerivedDataCache/
Developer/
Build/
# Allow specific build folders and files
!Build/Android/gradle/AFSProject/app/google-services.json
!Build/IOS/GoogleService-Info.plist
!Build/Android/PipelineCaches/
!Build/Android_ASTC/PipelineCaches/
!Build/Windows/PipelineCaches/
# Additional
log.txt
*.tmp
# Notepad++ backup files
*.bak
Thanks, I'll try and adjust mine
I could use some guidance. I forked UE5 on github with the intent of building my own prototypes, plugins, and tools for my portfolio and show them off on github. It seems like a mistake for the entirety of the engine to sit in my github repositories, though, because it's terribly inconvenient for any future recruiter or hiring manager finding my actual source code.
Has anyone had the same problem? Is it okay to add the Engine code to the git ignore file, or is it too late? Maybe I am supposed to simply download the source, move it into a git repository, and add the engine to the .gitignore file?
Why would you need a source build for this at all?
Honestly? I read it to understand how to use functions and how to write code using their style.
I think it's easier to read code this way than reading github, because I can trace calls and stuff. Maybe I'm being unorthodox?
The launcher engine has the engine source and you can download engine symbols
You mean the engine via the Epic Games Launcher?
Yes
Im going to be installing p4v soon and i have done it several times, only difference now is that my laptop has 3 different local users.
Im hoping my 3 user accounts can all use the same p4v client with the same workspace (folder).
do i need to do any work on my end to set this up? or is p4v just auto setup to work for all users?
Hi! I feel anxious about stacking questions.. buut:
I wanted to ask if someone here had recommendations for setting up version control for UE5.5.1 and a team of 5'ish students?
People online are saying Git is "bad" in general for this, so I'm avoiding that.
And when Perforce is mentioned it sounds like it's a better solution if you have a company and you're ready to pay for subscriptions and such.
No idea about PlasticSCM, but it also seems to be recommended..
(We're doing a blueprints prototype, and might consider adding C++ at somepoint)
Git works mostly fine for smaller projects
What do you mean you have 3 different local users?
workspaces are client (user) unique. Separate users can't use the same workspace.
Your different client workspaces could all map to the same location on the disk (folder) but you're probably asking for pain as perforce won't really understand what is sync'd or not for each user if you're switching between them.
as in C:/users/
then theres public and also your created users.
I usually have a desktop with only 1 user (obviously my own account in windows)
but this time around I have a new laptop with 3 different local windows accounts.
one is for work, the other is at home, and the other is for field work that I do.
Now, the repository is already ready to go is fully configured with different streams and everything, all I have to do is download p4v on this new laptop, but the thing is that all 3 users will need to use p4v.
when I install p4v, can I sign into any of my accounts and then startup p4v.exe? or will each additional user need their own installation of p4v because im trying to minimize it to one.
(I guess im jsut asking if p4v is installed per-user, or accross the entire system)
Oh. P4v should be accessible to every user (unless there's any weird windows permissions things going on, but that's not really a source control problem).
I think that's a different problem than what 2025 is describing.
That's multiple users (people) using the same client and workspace
While I haven't tried something like this, I would strongly advise having everybody have their own workspaces even if they are not working simultaneously. Much cleaner and clearer. Hardrive space may be an issue though...
it's 1 person with multiple user logins to a single machine
all of this seems to stem from having multiple users in the same device interacting with the same files at the same time, which just seems stupid in the first place, i wouldn't do that.
only 2/3 users will be writting to the repo, the 3rd is for reading. And they wont do it at the same time.
Then use the the correct login and only work from there...
But good luck, perhaps it may work : )
👍
Do you need full control over the SCM server or are you fine with it being cloud hosted?
What I read about "Plastic Cloud Edition" from here, just now, it sounds like we are fine with it.
Sorry I meant this: https://docs.plasticscm.com/cloud-edition/plastic-scm-version-control-cloud-edition-guide
Get into the key concepts of Plastic Cloud Edition, the hosted Plastic SCM server solution.
hi, should defaulteditor.ini and defaultinput be under version control?
Sorry for the late reply. I've set it up less than two years ago. The test depot 1.5 years ago. So I would think all of that should've worked well right out of the gate. I can't very right now. I'll have a look later.
ps. Topic: UE5 version control collaborations with Git
I went with Git for version control and collab for now since it's "free". Now there's a question of "which plugin to install?".
I saw this in the pinned messages: https://miltoncandelero.github.io/unreal-git Where the author rants about "ProjectBorealis" being superior to "the included one" https://github.com/ProjectBorealis/UEGitPlugin
I have no idea why or what to pick. I just want to have the least problems as possible. Thoughts?
i don't use git inside UE but yes the common consensus around here is that you don't want to use the built-in plugin
try borealis
Okay, thank you! (: ❤️
Though I don't think the Git integration is super important compared to say, Perforce
can't revert a file from a changelist, keep getting an error "failed after 10 attempts: Cannot create a file when that file already exists. "
anyone know how to fix? Dont want this file in the list
alright, well as a temporary workaround I was able to move it to a separate changelist
Though if you're doing that in P4V then I would've expected that if the editor is running
Perforce isn't ignoring folders that I set for some reason. I have P4IGNORE set and it shows 'P4IGNORE=.p4ignore (set)', the .p4ignore is in my workspace (with no hidden .txt extension) and I took a screenshot of how it looks. Is there anything I could be missing or did wrong?
I created this item by clicking in "Add New Item", why is this item "ignored"?
where is the file located?
show where it is on disk
go find it in your intermediates folder, move it where it is supposed to be, then regenerate your sln file
pay extra-close attention to the new file dialog (next time)
if you're using visual studio with unreal engine, it's best to never create any files directly within visual studio, either make empty files in file explorer or create new classes from within unreal... yes... this is annoying... but visual studio displays virtual folders (filters) - hence the blue funnel next to the folder icon... but in reality the physical location of sln file is inside intermediates (as you've found out yourself)
other IDEs usually don't have such issues because they properly remap (rider) - or - use raw folder structure instead (vscode)
I'm using engine from source. At some point I branched from 5.4-release (lets call my new branch My-5.4-release), because there was a bug with string tables or something that required 1 single line in a single file change to fix and it was already waiting as a pull request on the epic repo. Now I'm trying to update to 5.5, but I get this weird behavior where:
I want to merge epic/release to My-5.4-release, but a bunch of conflicting files appear. Like 60 or 70. How come? I expected at most 1 file conflict - the one tied to string tables fix 🤔
So overnight me and my team, we all got the same problem, where we cant save files and we get this popup on save file
the only thing we committed overnight was a .gitattribute with a lockable option added, we reverted that .gitattribute commit and it didnt change anything
we tried to disable revision control but that didnt change anything,
we went back a few days back through commits, like around 3 days ago and the issue still persisted
it must be unreal thing?
we truly have no idea what it is at this point, we use git lfs for version control
Hi, wonder if anyone knows.. im using github for my source control, we've got over 1800 commits going back 3 years, a lot of this is using git LFS so my .git folder in my project folder is just shy of 500GB.. is it possible to remove commits? i know for a fact i could get rid of at least 2 years worth of commits in the repo if its possible
Also keeps costing us to increase the data packs for more LFS storage
You could just start a new repo with the project as is ( though there might be a more 'correct' way I guess )
This seems to show one way of keeping the repo, but I can't guarantee anything - I have never done this
https://clearinsights.io/blog/how-to-remove-all-git-commit-history/
no, you can create files in VS just fine but you have to jump through the extra hoop of specifying the actual file location, which might be hidden unless you press more buttons. and TBH, recommending at all to create new files within unreal is just not great advice, i would never recommend that 😄
and creating them natively in the file system is fine but equally slower/waste of time IMHO
but i also say all this as someone who hasn't used raw VS in like 4 years
I wasn’t aware of the option to hop through the hoop in vs… and I know that other two options suck.. but yeah… (I’ve personally switched to rider and never looked back, especially now that rider has support for ps5 and Xbox debugging natively)
Hello, I'm new to source control. I did some searching and found that Perforce seems to not support operations on folders?
So if there are no files inside the folder, using Get Revision / Undo Changes / Mark for Delete will neither delete nor create the folder.
If I create a new empty folder locally, I have no way to sync it to the server and make the directory structure on both sides completely consistent??
Does Git have the same issue? I'm a bit interested in learning Git now.
Yes, this is accurate. Perforce can also (it's a workspace flag you have to set) delete directories that become empty when syncing an update.
Although you can do file operations on an entire folders of files (if there are files that exist in the history).
If there are no files in the directory, why does it need to be part of the directory structure?
In the rare occasions where this has come up, I'll just place an empty text file (placeholder.txt) in the directory in perforce.
I believe all source controls have the same issue since they all work exclusively on files, not folders.
Anyone know the sane way to setup ignores on svn?
Seems Epic's doc is just of absolutely no use at all, they just have no ignore and check in binaries lol
Hello, how do I get the revision number of a directory in perforce? I searched for it but couldn't find the answer.
When I specify the revision number for the Get Revision/Undo Changes function, I either get an inexplicable version or an error.
If directories don't have a revision number, then why is there an interface for it in p4v?
you cannot use revision for whole folder, folders are not versioned and don't have revisions of their own. If you want to revert multiple, what you are trying to do right now is to revert files in that folder back to 87th change of the files, if you want to revert to specific changelist, you have to select "Changelist" instead of revision
Revision is the "#XX/YY" next to every file... changelist is the number in the history/submitted tab.
Thank you, how can I find the Revision Number of a directory? For example, what is the Revision Number corresponding to Changelist 87 above?
as I've said, directory doesn't have revision number so you can't.
If you want to rever the changelists 88 and 87, just switch the "Revision" dropdown to "Changelist" and put the 87 there
it will go into all the files in the folder and get the file revision as of changelist 87 and revert to that
You're right, my main question is that the Undo Changes UI lets me enter a Revision Number by default, and when I enter some random 1 or 2 or something, it does roll back to some mysterious version that I don't know about.
That's because every file has the revision, which is this
and as long as all files in the folder have revisions less or equal to the ones you are entering it will roll them back to that revision
so you can imagine it like:
- Revision is the version of the specific file
- Changelist is a point in history
If you revert to specific revision, you just set the number and it goes, doesn't matter when it was submitted, as long as the revision number is valid
If you revert to specific changelist, it goes and reverts all the files in the folder/workspace/depot/whatever spec you specify to that point in time (i.e. to their last revision before the changelist was submitted)
if that makes sense, I can't sadly explain it any other way, so I hope this is understandable
Thank you, I understand what you are saying, but I am still confused about the relationship between Revision Number and Directories, especially when I perform Undo Changes on a Directory and Revision Number is offered as a default option.
When P4v gives me the following window by default, what exactly does the designer want me to enter and how can I use this interactive interface?
there is no relationship, you are always doing the operation on files. It just limits the undo scope to the files inside the folder recursively
at the top of the window you can see the D:\My Documents\Downloads\perforce_test\... which if you are familiar with perforce's FileSpecs, means "do the operation for everything the folder recursively"
so it goes, enumerates all the files in the folder (and the sub folders) and then revers them to revision you specify
for perforce folders technically don't exist, it's just files with different paths
Thank you for your reply. I think I understand what you mean. I'll go and experiment a bit more.
Why does my perforce instance do this? Go to start work and can't connect because the CPU is cooking at 100%. I have to wait like 30 min for it to die down every time it happens
I usually just use tortoisesvn to set it up in the root of the project.
depends on the way your perforce server is set up, if set up properly perforce by default does nightly checkpoints (which are like backups of the metadat, you can restore from - it does not include the versioned files themself, just the metadata) and depending on how powerful the server CPU is, it can load it quite a lot
(and some nightly procedures run p4 verify //... which goes through all the files and verifes the integrity of all the files etc...)
which would correspond with the high disk I/O you're seeing
Well, its definitely not nightly. Happens in the middle of the day. What's the best way to check if that's the culprit? And if it is, how would I go about changing the scheduling of the checkpoint?
well, I'd check server time, since many servers are set in UTC so it might correspond to "night time" UTC
I don't remember the specifics, as I've said, it depends on the way you installed your perforce server since it can be done through purpose built scripts, p4dctl etc... etc...
Gotcha. I'll look into it tomorrow. Appreciate the pointer in the (hopefully) right direction!
ya but how do you make them tracked by the server so when someone grabs the repo it applies those props
The ignore property in this case is "attached" to the folder. you commit that to the repo and when someone gets-latest they will get those properties as well.
does it work to just apply it to the root folder or only on sub folders
because for some reason it wasn’t appearing to work but yea i did expect it to work that way
thanks anyway i’l play around with it
The screenshot I posted is just for the root folder (as those files and folders don't appear anywhere else in the projects). But you can add recursive filters as well. The official docs are not too hard to read: https://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.ignore.html
ya sweet, do you happen to know if you can “unignore” certain files, overriding parent recursive global ignores?
like eg don’t ignore Binaries in a specific folder like a plugin
in gitignore usually you do !MyPath/ but I dont know that svn has the ability to do this
AFAIK this is not possible in svn but I've never needed to do this.
yeh fair
is there a decent type source control i can setup on my local machine? preferring to run up my electricity bill more than whatever it costs for remote servers
alright, so, i have a decent pc thats always up, zero electrical bill costs to worry about and gigbit internet with good ping just about anywhere
what can i do for source control when theres only one developer
perforce or git or plastic or diversion or svn
this comes down purely to personal preference and most people prefer the one they learn the best
perforce comes with the future benefit of working with more of epic's advanced studio tooling, but massive licensing costs for teams
are any of them moderately idiot proof? I have hardware and network, but im a total moron on servers and stuff, but my team wants it
im totally new to all of this
until now weve just been using a google drive with a lot of space
is this good enough to run a decent perforce with 1 primary user?
for one user you can run perforce on pretty much anything, although 300 gigs is not that much for large unreal projects ,those can easily get 400+ gigs
- just keep in mind that perforce is only free for up to 5 users
anything above that is ~50 USD a per month per user (including the initial 5 users) ... at least if I remember correctly... might be between 30 and 50 but as I've said I don't really remember anymore
I do recommend using linux for perforce if possible, since in general I/O heavy things are better on linux than on windows... but otherwise, general setup is:
- install p4d (perforce server)
- setup p4 typemap
- setup general security
- create stream based depot "MyGame" (or whatever)
- create "Main" stream in the "MyGame" depot
- push your project there, excluding "binaries", "intermediate" and "saved" folders
if you are running unreal engine from source code (not epic games store) - or are planning to utilize epic's tooling like UGS or Horde:
- make sure to structure your streams appropriately as per "the Epic Way" (I'll explain later and/or send links to some references)
- run Setup.bat
- submit engine and project (excluding Project Binaries, Saved and Intermediate folders)
These are guidelines for getting unreal to play nicely with perforce and epic's tooling... this is a quote from another server where I was speaking to people familiar with unreal, but general outline still stands:
I'll echo pretty much what Ryan has said, but the workflow we use and worked for us for many years:
- Sync from git
- Run
Setup.bat - (Optionally) download and include platform extension files
- Create and configure your workspace to not lock files
- Copy the
Engine/Extras/Perforce/p4ignoreto the root and name it.p4ignore.txt - Run mark for add (if it's the first time) or reconcile offline changes on the workspace, you want to reconcile everything other than
.gitfolder, as if you reconcile while not ignoring p4ignore you might miss some files (iirc it was the case at least few years ago)
(for reconcile I do recommend using https://github.com/brickadia/p4-fast-reconcile as it can trim multi-hour reconcile process into couple of minutes thanks to hash caching and whatnot) - Submit
On update just repeat all the steps and then just use the usual //UE5/Main -> //Project/Dev-EngineMerge -> //Project/Main integration (or whatever your studio workflow is)
You'll pretty much get 99% close to what Epic has, excluding some misc. batch files in the root and pdbs for bunch of the precompiled executables (and you might not have exact flags on some files but, it pretty much works if you use basic typemap anyways) - if you do it this way you will have seamless workflow when using things such as UGS, Horde etc.
This can be pretty much fully automated except for the platform extension files which do not provide any way to get the zips without using a browser (cookie based auth + the api and site are behind cloudflare iirc)
And here are some of my notes regarding perforce server setup:
Perforce server requirements:
Non-Unicode
Case-Insensitive
; Execute commands to set basic security settings:
p4 configure set security=3
p4 configure set dm.user.setinitialpasswd=0
p4 configure set dm.user.resetpassword=1
p4 configure set dm.user.noautocreate=2
p4 configure set dm.info.hide=1
p4 configure set run.users.authorize=1
p4 configure set dm.keys.hide=2
p4 configure set defaultChangeType=restricted
p4 configure set dm.password.minlength=8
p4 configure set net.parallel.max=48
p4 configure set net.parallel.batch=32
p4 configure set net.parallel.threads=8
p4 configure set filesys.bufsize=2M
p4 configure set net.tcpsize=2M
p4 configure set net.parallel.submit.threads=8
p4 configure set net.parallel.shelve.threads=8
; Apply following typemap:
# Perforce File Type Mapping Specifications.
#
# TypeMap: a list of filetype mappings; one per line.
# Each line has two elements:
#
# Filetype: The filetype to use on 'p4 add'.
#
# Path: File pattern which will use this filetype.
#
# See 'p4 help typemap' for more information.
TypeMap:
text //....asp
text //....cnf
text //....css
text //....htm
text //....html
text //....inc
text //....js
text+w //....log
text+w //....ini
text+w //....pdm
binary+Fl //....zip
binary+Fl //....bz2
binary+Fl //....rar
binary+Fl //....gz
binary+Fl //....avi
binary+Fl //....jpg
binary+Fl //....jpeg
binary+Fl //....mpg
binary+Fl //....gif
binary+Fl //....tif
binary+Fl //....mov
binary+Fl //....jar
binary+l //....ico
binary+l //....exp
binary+l //....btr
binary+l //....bmp
binary+l //....doc
binary+l //....dot
binary+l //....xls
binary+l //....ppt
binary+l //....pdf
binary+l //....tar
binary+l //....exe
binary+l //....dll
binary+l //....lib
binary+l //....bin
binary+l //....class
binary+l //....war
binary+l //....ear
binary+l //....so
binary+l //....rpt
binary+l //....cfm
binary+l //....ma
binary+l //....mb
binary+l //....pac
binary+l //....m4a
binary+l //....mp4
binary+l //....aac
binary+l //....wma
binary+l //....docx
binary+l //....pptx
binary+l //....xlsx
binary+l //....png
binary+l //....raw
binary+l //....odt
binary+l //....ods
binary+l //....odg
binary+l //....odp
binary+l //....otg
binary+l //....ots
binary+l //....ott
binary+l //....psd
binary+l //....sxw
binary+S2w //....exe
binary+S2w //....app
binary+S2w //....self
binary+S2w //....dll
binary+S2w //....lib
binary+S2w //....app
binary+S2w //....dylib
binary+S2w //....stub
binary+S2w //....ipa
binary //....bmp
text+w //....config
text+w //....target
text+w //....target.xml
text+w //....xml
text+w //....modules
text+w //....version
text+w //....xml.References
text+w //....plist
text //....ini
text //....config
text //....cpp
text //....h
text //....c
text //....cs
text //....m
text //....mm
text //....py
binary+l //....uasset
binary+l //....umap
binary+l //....upk
binary+l //....udk
; When submitting large changelist, use parallel submit, P4V by default does not use it for some reason, use the command:
p4 submit -c changelist_number_here --parallel="threads=8,batch=32"
fyi allow parallel sync is just a checkbox somewhere in p4v settings these days, don't need to switch to command line
these notes were written ~2019 so they might be little dated + I personally prefer CLI tooling... but good point
tbh ill probably get my backend guy to help with setup
my team calls me the "coding anti-christ" with good reason
Do folks have opinions on which Rider-related config files should go into VCS? Is there a best practice around sharing just enough project-related config among Rider users while still letting them decide their personal IDE settings? I'm thinking things like the automated styling details should be shared by the whole team, but I don't care what shortcuts you use 🙂
Are there specific files that you like to explicitly add to the depot?
imo none EDIT except for styling
granted, styling settings is a valid thing to share
I just install a .clang-format file in the root of the project. Then all coders, no matter what editor they use, must use it.
Hello, why is it said that Perforce is more suitable for version control of large binary files?
I just learned that Perforce does not support incremental storage and transfer of binary files.
According to the documentation, incremental transfer requires disabling the compression feature to take effect, which exacerbates the issue of space usage, so this feature is almost negligible.
At this point there seems to be no difference in the way Git handles binaries.
it's not in the way things are transferred but rather in general the way things are stored under the hood both in metadata (db) and on disk... perforce scales really well to millions and millions of large files meanwhile git bogs down the larger the gets.... so that's why it's said that perforce is more suited
the biggest difference is that git stores files inside it's structures directly, meanwhile perforce stores the metadata and bulk data separately resulting in more efficient storage - git has partially mitigated the issue with addition of git LFS (which pretty much works like perforce by storing large files separately from main git objects) but there are still some other reasons why perforce is used over git, things like consistency, file locking etc... which helps a lot + in perforce each file is versioned separately and you don't have to worry about merging and other things that are inherent to git when working in team
I agree with klukule that the way perforce handles binary files of any size is better than git since they can be locked. Dealing with multiple edits across multiple branches to a binary file just seems like a nightmare.
Is Blueprint diffing not supported with git (LFS)?
Blueprint diffing is only available using the Editor.
I think you can setup a way for perforce to specify the diffing program.
I don't know if there's a way to configure that in any way in git or lfs, but ultimately you have to launch the Editor (with commandline parameters) to do the diff.
with git lfs and gitattributes, how do I set specific files or recursive folders as not-lockable?
is it possible to squash and merge commit using github website, since I can't modify multiple files from github in a single commit??
I never done it before!
Check if GitHub Codespaces meets your requirements.
Hello, How does Perforce implement the solidification of environment variables into the cmd.exe process?
In p4v, opening cmd through the right-click menu will automatically use the current workspace and other settings as the environment variables for this cmd process. Additionally, multiple cmd instances with different environment variable settings can coexist. How is this achieved?
in general it's done through p4 set command which on windows uses registry for persistency afaik, but you can also use environment variables or p4config files etc.
it's layered approach, but in your case it would be the registry
With UE5.4 and SVN on windows, I cannot check out (lock) multiple files at the same time. It just says it failed. Trying "Get lock" through TortoiseSVN works for single files, but multiple files will prompt for a username and password for each file. The joke is: I'm a solo dev.
Thank you, I stumbled upon this phenomenon and didn't find anyone mentioning it in the documentation or tutorials.
These environment variables are bound to the cmd process and are unrelated to the values in the registry, and no .p4config file is created. They will change automatically as the workspace, the user and the connected server switch, almost as if the .p4config file has been set up by itself.
Rev. P4V/NTX64/2024.4/2695759
I use both UE and tortoise locking for multiple files every day. Have you tried from the command line? You might get more information.
look up cmd or .bat set command?
The output of the set command contains the environment variables for P4.
I'm not understanding,
p4 set is a global, registry backed state shared across your whole user space
$env:P4XXXX are process local variables (so cmd, etc...) if your script changes these, they'll be persistent for your cmd instance etc...
.p4config is "location local" i.e. if you're in folder with p4config file that gets used (I don't remember if it takes priority over enviro or not)
i think you're missing the point. cmd windows natively support local environment variables. it's a basic feature of windows.
is there a reason why you're asking? trying to solve or achieve something? or just learn?
In command line, single lock works fine, "svn lock file1 file2" prompts me for creds. It won't take my creds, eventually giving an Authentacation error.
@arctic hornet @woven sluice
Just learn, thank you.
I accidentally noticed that starting cmd.exe in P4V automatically sets process local variables, such as the current workspace and the currently connected server. I would like to understand how this is achieved.
Based on your responses, I now guess that P4V does not directly run cmd.exe, but instead creates a new .bat script with content similar to the following:
@echo off
set P4CLIENT=currentvalue
set P4PORT=currentvalue
set P4USER=currentvalue
set P4CHARSET=currentvalue
start cmd.exe
no, p4v just spawns new cmd process and porvides it the environment variables, which is what you can do in C++ when spawning new application (or to be more precise child project inherits it's parent's environment)
though using bat file would work too, in roundabout way that is
have you tried removing your authentication data in tortoise (settings > Saved Data > Authentication Clear All) and then trying again in tortoise?
@inland bay Thanks for the help. I don't think it worked, in fact now I can't lock single files with my creds. I think that gets me closer to the real issue though.
Might something to do with auth and default usernames
you could try (backing up) and deleting %APPDATA%\Subversion\auth or even all of %APPDATA%\Subversion
Hello, regarding your recommendation to set the server to Non-Unicode Mode, is there a reason here and how necessary is it? I really need Unicode.
well, client encoding doesn't matter that much these days afaik (don't quote me on that) but in general I recommend non-unicode simply because that's what Epic uses internally and as long as you don't use non-ascii characters in your path and file names (which unreal doesn't play with well anyways) you won't have issues
TL;DR:
- Epic uses non-unicode
- I personally had bunch of issues when using unocde encoding in the past
So I just tend to recommend what worked best for me
Hello,
Stupid question (I think).
Added 2 plugins to my project, one has been added fine (AGRPRO), the second (ue5coro) doesn't want to be added ?
It's not in the Git Ignore either ...
I had loads of issues with unicode too (when you helped me setup my server a year ago).
I don't recommand either ...
Ahhh, it's a submodule.
## This p4ignore file is a combination of Epic's documentation, but
## adjusted to work even if its not in the same folder as the .uproject
## file, and the p4ignore gist from Luis Placid
# The syntax for P4IGNORE files is not the same as Perforce syntax.
# Instead, it is similar to that used by other versioning systems:
#
# - Files are specified in local syntax
# - a # character at the beginning of a line denotes a comment
# - a ! character at the beginning of a line excludes the file specification
# - a * wildcard matches substrings.
#
# For example:
#
# foo.txt Ignore files called "foo.txt"
# *.exe Ignore all executables
# !bar.exe Exclude bar.exe from being ignored
#
# Files generated by visual studio should not be checked in.
*.csproj.*
.vs/*
*.pdb
*.suo
*.opensdf
*.sdf
*.tmp
*.mdb
obj/
*.vcxproj
*.sln
*-Debug.*
# Git generate file structures
.git/
# Ignore JetBrain's IDE folders
.idea/
!.idea/runConfigurations
.gradle/
# Python cache files
__pycache__
*.pyc
# egg-infos
p4util.egg-info
*.egg
# Unix specific generated files should not be checked in.
**/FileOpenOrder/
*.xcworkspace
*.xcodeproj
./Makefile
./CMakeLists.txt
.ue4dependencies
# Do not check in samples & featurepacks copies provided by the engine.
Samples/*
FeaturePacks/*
Templates/*
**/Engine/Documentation/*
# Saved files are overwritten by each person. Should not be checked in.
**/Saved/
# Ignore UBT's configuration.xml
Engine/Programs/UnrealBuildTool/*
*.uatbuildrecord
# Do not save results of local builds. (Locally compiled engine build from source)
**/LocalBuilds/
# Ignore built binaries and temporary build files
*/obj/*
*.csprojAssemblyReference.cache
# Intermediates
**/Intermediate/
# Intermediate folders created for various C# programs
Engine/Source/Programs/*/obj/*
# Saved folders for programs should not be checked in
Engine/Programs/*/Saved/*
Engine/Programs/UnrealBuildTool/*
# Derived data cache should never be checked in
/DerivedDataCache/*
# Ignore any build receipts
**/Engine/Build/Receipts/*
# Ignore personal workspace vars
.p4config.txt
# Ignore Unix backup files
*~
# Ignore Mac desktop services store files
.DS_Store
# Ignore crash reports
crashinfo--*
# Ignore linux project files
*.user
*.pro
*.pri
*.kdev4
# Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
# Ignore documentation generated for C# tools
**/Engine/Binaries/DotNET/UnrealBuildTool.xml
Engine/Binaries/DotNET/AutomationScripts/BuildGraph.Automation.xml
# Ignore version files in the Engine/Binaries directory created by UBT
**/Engine/Binaries/**/*.version
# Ignore exp files in the the Engine/Binaries directory as they aren't C/C++ source files
**/Engine/Binaries/**/*.exp
# Ignore Swarm local save files
**/Engine/Binaries/DotNET/SwarmAgent.DeveloperOptions.xml
**/Engine/Binaries/DotNET/SwarmAgent.Options.xml
# Intermediary Files
*.target.xml
*.exe.config
*.exe.manifest
# Ignore autogenerated files from HoloLens WMRInterop
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/packages/*
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/Generated Files/*
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/x64/*
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/ARM64/*
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInterop/x64/*
**/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInterop/ARM64/*
# Ignore all .code-workspace files
*.code-workspace
Hello, how about this .p4ignore file? Is it secure enough?
Specifically regarding the part about modifying the Epic documentation to fit a larger range of paths, could this unintentionally affect some files?
And I found that **/Saved/ and */Saved/* do not match the Saved directory in the root directory (if the .p4ignore file is in the same directory as the .uproject file). Is this the expected behavior?
p4ignore does only affect things inside it's folder and it's subfolders, it never goes up
so if you have p4ignore in your worksapce root, it will apply to the whole workspace, if it's in subfolder, it will apply only to that subfolder
unless your P4IGNORE variable has absolute path specified in which case the file is used anywhere
honestl,y for us, we just use:
# Here you can specify files to ignore when adding files to the depot.
#
# The syntax for P4IGNORE files is not the same as Perforce syntax.
# Instead, it is similar to that used by other versioning systems:
#
# - Files are specified in local syntax
# - a # character at the beginning of a line denotes a comment
# - a ! character at the beginning of a line excludes the file specification
# - a * wildcard matches substrings.
#
# For example:
#
# foo.txt Ignore files called "foo.txt"
# *.exe Ignore all executables
# !bar.exe Exclude bar.exe from being ignored
#
###############################################################################
# Epic's P4IGNORE.
# P4IGNORE doesn't work like GITIGNORE:
# http://stackoverflow.com/questions/18240084/how-does-perforce-ignore-file-syntax-differ-from-gitignore-syntax
###############################################################################
# Ignore root Visual Studio solution files. We do check in some sln files in subdirectories, so only ignore
# the ones found in the root.
/*.sln
/.p4sync.txt
# Ignore all Visual Studio temp files.
*.suo
*.opensdf
*.sdf
/Engine/DerivedDataCache/*
**/DerivedDataCache/Boot.ddc
**/DerivedDataCache/**/*.udd
# Ignore all Intermediate and Saved directories
*/Intermediate/*
*/Saved/*
# Ignore UBT's configuration.xml
Engine/Programs/UnrealBuildTool/*
*.uatbuildrecord
*.tmp
# Ignore built binaries and temporary build files
*/obj/*
*.csprojAssemblyReference.cache
# Ignore UBT's log output files
/Engine/Programs/UnrealBuildTool/*.txt
# Ignore Python cached files
*.pyc
# Ignore JetBrain's IDE folders
.idea/
!.idea/runConfigurations
.gradle/
# Ignore autogenerated files from HoloLens WMRInterop
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/packages/*
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/Generated Files/*
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/x64/*
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInteropHoloLens/ARM64/*
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInterop/x64/*
/Engine/Source/ThirdParty/WindowsMixedRealityInterop/MixedRealityInterop/ARM64/*
# Ignore files added by Finder on Mac
.DS_Store
# Ignore all .code-workspace files
*.code-workspace
and it's been working for us just fine for years at this point
*/Saved/* is not working. The file structure is as shown in the image. Is this expected?
well, we use the full engine rather than just the project and it would make sense why */Saved/* would not work, because the * at the start means "at there must be at least something there"
so /Saved would work, but not */Saved/*
in normal scenario you don't have Saved folder in workspace root (by normal scenario I mean if you work with engine source)
i.e. with structure like this, you always have at least Engine/ or ProjectNameHere/ in front of the saved folder and that's where */Saved/* works
Thank you, I'm just in need of best practice advice regarding the file hierarchy for depots and workspaces.
Should I allocate a separate depot (stream type) for each project and custom build of Unreal Engine? Or is it better to place multiple projects and engines into the same depot and workspace?
In the depot and workspace, should I create individual folders for each engine and project, or should I, as shown in the image above, place all files directly in the root directory?
Or should I place a project and a build engine into a depot together, as shown in your image? What if the same build engine needs to be used for multiple projects?
Custom build of Unreal Engine:
- if you plan on targeting consoles, or even using more of Epic's ecosystem like Unreal Game Sync (UGS) or Horde (build server and much more) then the answer is YES since all these things require use of engine source
One engine multiple projects or one engine per-project:
- this depends more on the scale of projects, size of your team and ton of other factors.... it mostly boils down to if all your projects can use the same engine version etc... I'd generally go with One engine per project, it's less space efficient, but it decouples the games from each other, and AFAIK it's also how epic does that, i.e. each major game project has it's own depot for example
//Fortnite/...and it has it's own engine instance (although in fortnite case it's muddy, since fortnite nad UE5 are one and the same on engine level)
The structure I've sent is as close to epic's structure as humanly possible without knowing internal epic sturcture etc... You can easily have multiple projects together with one engine (for example Titan is a project but inside Sandbox we have mutliple smaller testing projects) but if I had another big game I'd work on, we'd make separate depot and work inside there just so I can update engine versions independently
In general what I do is:
//UE5/Main - Clean engine from epic
//GameProject/Dev-EngineMerge - Where I merge the project and engine together during engine updates
//GameProject/Main - Where we do day-to-day development
//GameProject/Dev-XXXX - separate branch for long standing tasks that have potential to brick mainline stopping others from working
//GameProject/Release-X.Y - release branches when it's time to ship 1.0 we do Release-1.0 stabilize things and potentially merge changes back to main
on some projects we also had in-between branch like:
//UE5/Clean - Clean engine from epic
//UE5/Main - Customized engine with shared code and plugins
so we ingested new version from epic to /Clean, merge it with our changes in /Main and then promote that to /Dev-EngineMerge when specific project required such thing
to give an overview, this is the structure we have for one of my projects...
//UE5/Main - clean engine
//Titan/... - project specific things
//Payloads/... - for virtual asset payloads
//IT/... - for IT related things like horde configuration and other things (on another server we also have ansible scripts to deploy the infra etc...)
//InternalTools/... - tools like Unreal Game Sync and on other servers stuff like SubmitTool etc.. live here
//depot/NoRedist/... - usually contains AutoSDK stuff and on other servers we also have //depot/ArtSource/... wich contains raw FBX, PNGs, etc...
this server is currently work-in-progress so bunch of stuff is not deployed here just yet... (hence mentioning "other servers")
Thank you so much, so helpful, I need some time to think it over. May you be happy every day!
As an alternative (not that klukule is wrong at all), you can do individual streams for all of it. I have a stream for the game, engine, internal plugins, external plugins and RiderLink.
The game stream is the primary and it imports all the other streams.
One thing to remember is that the form on disk doesn’t have to be identical on disk.
I would also reinforce klukule about individual engine copies per project. We also do the same thing for plugins. We also isolate our own sandbox projects on an engine version not used by a project. I can share some pics of my personal perforce when I’m off mobile.
So every project or engine have its own stream depot? please share the structure of workspace and windows explorer along with it if you wouldn't mind.
Would you mind sharing your file structure for your workspaces and windows explorer? That'd be great
I’m out until the evening… and I’m not really sure what do you mean
Here my setup at home. You'll notice that I'm using the "foreign" project configuration (projects side by side with the folder that contains Engine) but there's nothing here that requires that. In fact we have the same stream setup at work (mostly) and use the "native" project configuration (projects inside the same folder as Engine). The other main difference is that for my home projects it's not worth it to have a unique engine per so I don't.
The only significant difference with what we have at work is that the streams are broken up into multiple stream depots. One for Epic, one for the studio, one for the project, etc. But it's functionally equivalent (just no nice stream graph) to what I have at home.
something like this, I’d like to see how files are organized in windows explorer, like their paths and all that ^_^
#source-control message
has a pic I posted last year about the overall stream structure I've massaged our perforce into.
Is there any further documentation on what the “operator” license type is restricted to in terms of commands for Perforce.
I’m building out a render farm and they only really need readOnly access so I’m trying to see if operator could be used in this case since there would be no other commands or features being used other than getLatest.
The perforce docs on releasing and updating licenses is pretty sparse about the types
Never mind,
Found it here. https://help.perforce.com/helix-core/server-apps/cmdref/current/Content/CmdRef/p4_user.html#Types_of_users
does not look possible for my scenario
Thank you! I'm new to Perforce, and I actually spent quite a while going through the documentation just to barely understand your images.
Could you show me how your files are organized under each of your depots and workspaces? If different stream depots are assigned for each project, which structure do you recommend between the two images below?
And using the 'foreign' project configuration, do the engine and project’s .p4ignore files have different contents because of the different file hierarchies? One needs */Saved/*, while the other needs /Saved/* ?
This is what my workspace looks like. At home I only have the one workspace that I use to edit multiple projects (both unreal and not).
At work I have multiple workspaces that each look like like this: #engine-source message
It looks like at home I don't even have any p4ignore files for some reason, so I'm not really sure. Maybe I just pointed things at the .gitignore instead.
If there is only one Unreal Project stored in a stream depot, which file hierarchy do you recommend? Just like the two images above show.
I'm not sure because neither one appear to include the Engine anywhere so I'm not sure how you're setting things up.
If you're using an installed build, the left one is probably fine.
If you're using a source build, the right one is more correct.
Our p4ignore at work just has Saved/ as the directory to ignore. That file is in the same directory as the projects .uproject file.
Could you please expand these directories to take a look? ^_^
RFtG, SRPG and Underworld are all project directories that have the .uproject files and all the directories of your left pictures from above.
UE_5.5 is the directory that has the Engine Source with an Engine directory, GenerateProjectFiles.bat, etc
I don't understand what you're trying to see.
I understand, thank you.
I'm trying to figure out how to check plugins into source control, so everyone on my project doesn't have to re-buy them.
I tried copy/pasting the plugin folder from the Engine directory to my project directory, and it worked! ...On that machine.
But after checking that in and trying it on a different machine, I get this error, and then it fails to compile.
Anyone have any idea what I'm doing wrong here?
Question : did you include the Binaries folder for the plugins?
In any case, we basically just have everybody on the team equipped with Visual Studio so they can build c++ project. This has been stated to be a borderline misuse of the free VS Community license however, so that should be taken with a grain of salt. If you have a BP project and can solve it by including everything needed, that would be best
Yes.
And note this isn't a plugin WE made, this is from the marketplace. I didn't need to build this thing with VS for it to work originally, I just installed it from the Epic Launcher
it should be built with your project
and the precompiled binaries you give to your team should contain whatever the result of that is
Okay but that doesn't explain why it builds with no intervention on my part on my desktop, and chokes and dies on my laptop and my coworker's computer after going through source control
also to have plugins in project, you must also have a C++ project
The whole point of this plugin is to manage files without using C++ lol
well I don't make the rules
huh, I hadn't realized that, good to know
you need to have a C++ project, and in case you don't know, you don't have to use C++ for everything
Okay but again, this plugin works fine without any of that crap when installed via the epic launcher
Precompiled by what? How does it know the version to precompile to?
None of this explains why Unreal is able to correctly compile the plugin when I install it via the launcher, but not when I sync those files via source control
Epic builds every plugin on Fab for each compatible engine version, and distribute the pre-built binaries when installed from the launcher
When you install it via the launcher to get precompiled binaries. You're not compiling them locally
Okay that makes sense. But both of these computers are running Unreal 5.3.2, why are the pre-built binaries from one install not working for the other?
Did you actually copy/paste the plugin locally? or did you move it?
If you copy/pasted it, you probably don't have problems because you've still got it in the Engine.
But everyone else only has it in the project and it needs to be compiled locally to use it from there.
I removed the engine version when I moved it locally
Are you sure you checked everything in? Nothing was ignored because of p4ignore?
Also
so everyone on my project doesn't have to re-buy them
Everyone that uses a Fab plugin on your team needs to purchase a seat for said plugin
Source: https://www.fab.com/eula (section 2.e)
e. Plugins. Code plugins that are being offered on the Epic Marketplace, including Unreal Engine Plugins and Unity Plugins ("Plugins"), are offered to you on a per-seat basis and may only be used by the number of users that you have purchased licenses for.
Oh god DAMMIT lol
All the directories were checked in. The files within them, on the other hand...
As a sanity check for fun, I just tried
- Fresh BP project ( 5.5 )
- Downloaded a random plugin to Engine
- Moved it to project
- Launched project, can see and use plugin
So, I don't get where the rule would kick in that all plugins must be in a c++ project, maybe unless the plugin itself has Source? EDIT the plugin does have Source folder, so that's not the key
Plus side: It works now! Yeah the "plugins must be built as a C++ project" thing is definitely not true, I've debunked that here as well
As for this, that's a good point about the rules but unfortunately, I'm committed to keeping it punk. That's one of our core values.
Best not to flaunt that sort of thing still.
Unfortunately, "if you've got it, flaunt it" is also one of our core values
I believe this is nowadays an official epic disco so that sort of thing may get one booted out - not that I've seen examples yet, but a word to the wise as they say
(I'm not actually in violation of the EULA here, we already re-bought the plugin because it was cheap and it took me too long to figure this out)
(Unfortunately for our commitment to keeping it punk, "if you've got it, flaunt it" also applies to the legal right to use this plugin)
hey, I might've overdone it a little while hanging out wirth friends so... I'll get to you sometime in next 12 hours... I've had 13 biers right now (just got home) and i'm in no shape to coherently comprehend and answer your question... so yeah... in next 12-ish hours I'll answer you 😄
beer* ... my german is splling our (bier is beer in german... and I'm not even german
)
This server is, and always has been, community owned and operated.
ok, I see I see : )
does anyone know why this says it was unsuccessful??
it's nothing out of the ordinary or anything to worry about
just wondering why do I have to see this shit every time I open the editor
for example i get this message
and i click restore anyways
something is definitely going wrong.
- what version control system?
- are you doing anything weird like fiddling with the r/w permissions outside of unreal?
well, it's not a single workspace for us, so what you saw on the image pretty much is what you can see here...
The goal with these workspaces is for them to be as close to root as possible because unreal path length limits
Thank you so much! It was super helpful and really cleared things up for me.
git has a nice way to 'tag' specific points in repo history - I looked at perforce tagging but that seems to be a bit of a different beast, like per file stuff. Anything similar existing for perforce?
I thought p4 tags were pretty much the same
I guess I have to try it out, the p4v mentions tagging files so I got scared : )
yeah unfortunately the current shop I'm at doesn't use p4 so I'm a little out of practice, but I'm sure you can tag a CL
hmm, doesn't show up in P4V history view at least
ah I can see it from the command line reference, yeah p4 tag -l labelname //depot/stream/...@1234 I can see some situations where the filters might be useful
since if you sync the engine from the licensee p4 they actually give the option of "minimal" labels, which exclude things like documentation files
Basically we want to tag a CL as the freeze point for a release in case we need to cherry pick stuff, and so we remember where the freeze was
well looks like you can do it like above just replacing @1234 with @ and the actual CL number
p4 tag -l Test Tag //depot/main/Content/Library/VersionUtilityFunctions.uasset@20336
you want to tag an individual asset?
you can do //depot/main/...@20336 as the filespec
no, a CL... but p4v interface does that. let me try from commandline
but it is pretty typical with p4 workflow (and mentioned in the epic way article) to use release streams for stablisation rather than your mainline
that's what robomerge is provided for too
yeah, we have dev->staging->release, but would be nice to have the tag in dev
ah so you want to tag the CL in main that the release stream was created from I guess?
oof no it starts tagging a huge amount of files ( like everything, I guess ) certainly not what we are looking for
https://help.perforce.com/helix-core/server-apps/cmdref/current/Content/CmdRef/p4_label.html an automatic label perhaps?
"tag all files"... I guess p4 just doesn't work the same as git in this area
which is a bit surprising, as that feature is really really useful in git
I guess we can just edit changelist description, to achieve somewhat the same result
Hi, all - we have a weird issue after a crash during UGS binaries upload. We now have 530/529 files because the server has this BAD version (as noted using P4 verify) #530 but the clients and depot won't take any new revisions because 530 exists... we've tried to follow the BAD and MISSING workflows on P4 website but the persistent error we get is "Archive information for '//GAME/Dev-Binaries/FILENAME.zip' revision 1.31813 doesn't exist."
Anyone had similar and worked a fix?
i don't know if i've had that specific issue, but a couple times i've had jenkins somehow bork my perforce server in a way that seems similar. it corrupted archive files for binaries.
at the time, I SSH'd into my server, found the files that it was erroring on, and then i literally just copied an older version overtop of the corrupt file. re-ran everything to advance to a new step and rebuild everything and carried on.
that kind of thing would definitely have me considering Horde for CI now since Horde can just store the artifacts directly without having the mega zip in P4
Yes thank you @woven sluice it was Mr Jenkins involved in this caper. Sadly it wouldn't take being updated, overwritten, "fixed" (MD5 BAD), or even obliterated. Thankfully it was the UGS precompiled binaries zip so we were able to work around it in the end and just bury that file as a dead body on the server. Yes, @pulsar parcel we are transitioning this month to horde so glad to hear that 🥂 thanks for your time guys
For those curious we followed the BAD and MISSING instructions on perforce docs.
lol. no fucking idea how jenkins can poison perforce like this
In the end just spun up another depot for UGS and pointed the precompiled there
when i did it i was literally copying over the raw p4d archive file in the unix filesystem
thankfully it just worked for me
As I understand (assuming) the file reached the server and registered but the server crashed before the DB registered it's archive history and so it was like.... "I have it (head#530), but it's not there and you are at (#529)"
in my case it started happening after i enabled parallel submits with jenkins. i ended up turning that back off and it ran fine for a while until i kicked jenkins out of my house
Ooh I'll let our DevOps guy know as that rings a bell
causation/corellation unknown, but a possible link anyways
Roger, appreciated
I’m Little late to the party here but… you can create virtual stream, virtual streams can be made of specific parent stream and mirror it (useful for narrowing scope) but also… can be used to mirror the stream at specific CL, similar to the p4 tag… except it doesn’t do any expensive compute (nor does it duplicate the files etc.)… when I’m by the PC Ill be able to provide bit more detail in few hours if you want
How do I restore a file I deleted a few changelists ago?? Can't see an option in P4V
file history and maybe from there?
Found a good description buried in another discord server, will post here for anyone wondering this in the future:
Open the "File History" for the Deleted File:
In the P4V workspace, go to View > Show Files in Depot.
Navigate to the folder in the depot where the file was located.
Right-click the folder or file (if it still appears dimmed or deleted) and select File History or Time-lapse View.
This will display the history of the file, including the changelist where it was deleted.
Locate the Version Before Deletion:
Look at the file's changelist history to find the last version before it was deleted.
Make a note of the revision number (e.g., #5).
Restore the File:
Right-click the version just before it was deleted and select Get Revision or Sync to Revision.
This will restore the deleted file as it existed in that revision to your workspace, marking it as a file under source control.
Mark the File for Addition (Optional):
If the file does not appear in your workspace after syncing, you may need to manually create it.
Drag the restored file into the folder in P4V, and Perforce will detect it as a "missing file."
Right-click the file and select Mark for Add to bring it back under version control.
Submit the Restored File:
Once the file is restored and modified as needed, add a descriptive changelist description and submit it to the depot.```
I think the option you want would be available from the file history view, instead of the changelist file list view.
@slender coyote
You'll just have to adjust your depot filter to show deleted files
thanks, will investigate
iirc you just specify your virtual stream spec as you'd do with any other virtual stream, but at the end, just put @XXXX to create a snapshot at certan CL
all righty, will give it a spin next week
Has anyone had issues with perforce's journal growing incredibly fast?
I think it was a locally running horde instance hammering the server with commands, not sure yet though 
Yeah, most likely the case… for this purpose we use partitioned workspaces for our build machines those get journaled separately (and partitioned journals aren’t checkpointed by default either) but in general rotating your journal often enough should be plenty even if you did not use them depending on the scale of your buildfam
oh cool thats good idea, thanks once again klukule 🫡
Hello! I have a bunch of questions I’d like to ask, please forgive me for having a mind full of questions 🥹
- What are the Uncontrolled Changelists in the UE Perforce plugin ? Are they files referenced in the project but located outside of the workspace? How can I quickly identify the reasons for the files appearing in the list, such as which asset is referencing a particular external file?
- Can Perforce modify submitted changelists, similar to
git rebase? - How reliable is the "Reconcile Offline Work..." feature? Is there a chance that changes might go undetected?
- And How reliable is Unreal's automatic checkout for modified files? Should I regularly run "Reconcile Offline Work..." manually to confirm the status of the files?
- Is it possible to change the location of a stream, for example, moving //depot_stream_2/main_streams/dev0.10 to //depot_stream_2/done/dev0.10?
And what does Windows Notepad.exe do to file encoding that causes p4 annotate to misinterpret the revision numbers for text lines? 😔
When I use Vim to add a number for each revision, everything works as expected (See image 1 )
But when I use Notepad.exe to do the same, it all gets messed up. (See images 2 and 3)
File History
I'm quite busy right now so I'll only answer quickly, when I have more time I'll answer properly, unless someone else doesn't in the mean time:
-
Uncontrolled changelists is a feature of unreal where unreal is tracking files that were changed in one way shape or form but are not tracked on perforce... so it's just unreal keeping track of things, ideally it should be empty if you have everything on perforce including engine
-
changelists are immutable, the only thing you can change are the metadata, so things like description etc...
-
Reconcile Offline Work is 100% reliable because it goes file by file and checks for it's presence on the server, compares hashes etc... the only files that are ignored by this feature are files that are ignored by peforce in p4ignore... keep in mind that Reconcile offline changes can be super slow if you go over large amount of files, since also compares every pair of files so it can do "Move" instead of "Delete + Add" etc...
-
I'd suggest not using the implicit automatic checkout feature, it's best to keep the "confirm" window enabled, since unreal will ask you if you want to checkout any uasset/umap file before, and it will warn if you can't checkout due to reasons like disconnected from the server etc. etc. ... otherwise it's super reliable due to the way perforce works
-
Stream locations are pretty much immutable in this regard, once they're made you can't change much about them other than the description
TL;DR: stuff submitted to perforce is pretty much read-only once submitted... or at least that's the general rule of thumb, there are obviously some arcane ways of doing this, but... that requires advanced knowledge of perforce and I would suggest against attempting that
if I had to guess that's easier a quirk in p4 annotate or simply line endings... as you can see the numbers on the right (which is the contents of the file) are still 1,2,3,4,5 etc... perforce does convert line endings for different platforms etc... so it can sometimes get confused
Thank you, how can I quickly find out why a file appears in Uncontrolled Changelists?
I copied an old project to a workspace and uploaded it to a server for testing, then I noticed some files appearing in Uncontrolled Changelists with paths to the original files in the old project.
The modification dates are not recent, the reason for their appearance might be that some assets in the workspace are referencing them, I guess? How can I find out which asset is referencing them and why this is happening?
it would probably be because uncontrolled changelists are stored in Saved/SourceControl/UncontrolledChangelists.json so it might've gotten copied over when you moved the folders
uncontrolled changelists isn't technically a perforce specific feature rather it's a thing in unreal
uncontrolled just means that version control doesn't... control.. the files
Your reply goes straight to the essence of the problem, I deleted the file and everything returned to normal.
And here is my guess on how the Uncontrolled Changelists feature works, please correct me if I'm wrong.
When a file is modified in UE, if Source Control is not enabled, the file is put into Default Uncontrolled Changelists.
If Reconcile Files is executed manually, files that are used by the project and have been modified after a certain date (e.g. the date of the project creation) and whose paths are not in the workspace (or Source Control is not enabled at all) are put into Uncontrolled Changelists.
You are partially correct, files are added when the file is locked (which is by default any uasset/umap when using perforce) and you force it as writable - i.e. when you are offline, or just say "mark as writable" (it might also do something when you don't have VCS enabled, I've not checked that as I always use p4)
that's all, there is no direct integration with perforce, perforce doesn't know about the uncontrolled changelists file etc... it's just unreal's way of tracking stuff...
at least as far as I know, again, I've not used that feature that much or checked it super deeply as we use perforce all the time
Evening all - I'm wondering if anyone has ever resolved a "Hang detected (Perforce connection (10)" error that persists while syncing pre-compiled binaries, and then resolves after a (seemingly arbritraty) wait time, when using Unreal Game Sync (UGS). We have quite a few machines that pull at various busy times of the day. However, for example, tonight we had one machine sync updates quickly, then get stuck waiting to pull pre-compiled binaries for almost an hour before it decided to sync them properly. Network traffic was low/zero for 45 minutes during this time...
Im using Perforce for a project that im working on with others, when i modify files and push my changes everything is good but lately i have been seeing that when i pull my files some random files data gets wiped and I dont know why, anything from a data table, data asset to state tree, no one is working on these files but me for clarification. If anyone can help that would be appreciated thank you
Is perforce actually syncing those files? If you're the only one making edits it shouldn't be.
I can't say that's behavior that I've ever encountered in my 20 years of using perforce.
I was looking at the history and I did see that it may not be syncing
which is probably an issue because changes should increment the number, and some files are still on #1
which means my changes didn’t go through
is there a way to make sure it syncs?
Yeah it sounds like you’re not submitting new revisions of the files. How familiar are you with Perforce? Are you sure they’re getting checked out first and that you’re submitting them?
yes I do just that, I started using perforce a couple of months ago, i normally use git. I normally check out the file, then save it, then submit my changes
that usual
turns out im probably missing a step
beginner mistake
Hello,
Is it possible to get local files deleted after a git commit ?
Do you mean you want to revert any changes after a commit? Or happening by mistake?
This happened to new files I wanted to commit to my repository. Usually i commit using Git Hub Desktop, but this time I did it through JetBrain Riders. I don't understand what happened. I want to recover those deleted files which are not in my repository.
I guess you could check your recycle bin... but sounds like something has gone wrong
I would sanity check on a test project perhaps to make sure everything is working as expected
does anyone know whether its possible to git clone in chunks?
I've been trying to download a big repo for like the 5th time and my internet farts out at 70-90%
I've struggled with the same issue in the past and found no answers : (
Just seemed to luck out after several attempts... Surely there must be a better way?
If you've got data tables and values that are wiping after opening the project (usually you close, pull and reopen then it happens) - I'd consider checking A) for circular dependencies, which we've had cause this issue before, and; B) Unreal editor versions that are out of sync, e.g. user X is on 5.4.1 while user Y is on 5.4.2 (or if engine source versions, you've different versions). Don't want this to be a goose chase for you as I'm no pro but those spring to mind.
@pure oak
How would I check for circular dependencies though? I’m not using c++ but blueprints
So I can’t check the header files
Our engine versions are in sync
Which is good
We use a circular dependencies plugin from marketplace
Ahh makes sense, so it either could be caused from circular dependent or a mismatch between engine versions
In my experience but it could have been we solved those and coincidentally the database issues went away. Best of luck!
Oh, we've also had datatables and things like tags wipe themselves when we've branched to another stream (i.e. copied the project) or upgraded engine versions, e.g. 5.2 to 5.4.
Just thought mentioning in case those situations have also occured for you
I appreciate it
Anyone able to offer general SVN server help? The server I'm hosting my projects on (openproject which runs svn via apache2) has been incredibly slow recently. The only conclusion I could see is that it's something with the svn server or apache- the machine's net conneciton is fine and recreating the repo with svnadmin did not change anything. All the config files are left as their defaults from the openproject setup, and the server is served over https. Additionally the openproject community forum is not super active.
Observed behavior is that large files download at expected speeds but starting actions has a substantial delay, like in engine when checking a file out or show-status runs
@long mural (or whoever) we've got someone trying to scam here, not sure what reporting policies are here 😄
banned ty
Hey guys, I have some files in perforce that show up as changed files, that do not exist anymore.
If I try to submit them I get an error the the path could not be found anymore.
Doing reconcile offline work, will not remove them from the change list.
What can I do?
first you will have to revert those files form the pending changelist
next if they were pushed to the server and you want to remove them, you will have to go and mark them for delete (which will remove them locally, and once you submit also on the server)
Thank you! 🙂
I'm not sure if i did the right thing, I created a commit/change (not sure the name), with all the files with the issue.
Then could not submit it (red triangle), then I right clicked that did revert files, now the triangle for that change is blue and i have no changed files.
Do you think that might be ok? 😅
And now deleted the pending change so everything appears to be fine
that's one way to do it, you could've also right clicked on the file and reverted one by one without crating new changelist
Ohh ok cool! Thanks a lot! 🙂
For me, coming from git, some of the things are still a bit mysterious 😅
perforce can be a bit weird especially coming from perforce, but once you get used to it you'll find it actually makes sense 😄
Yea, I'm always trying to keep in mind, that it has a completely different use case and also requirements than git.
My first thought would be drive errors, do you have access to the underlying machine?
DOesn't appear to be drive errors- I can ssh into the vm, I copied the svn db as a backup last night and it transferred at expected speeds. The vm runs on truenas and there's currently no drive errors.
I found that ssh is much more stable than https
now that you mention it, that might have been a solution
Great that's good news. The mod_dav_svn module does do some caching. Have you restarted httpd (apache)? Could it be an out of memory issue, is it swapping a lot? I presume you've done an svnadmin verify on the repo?
I've been restarting often, one of the first things I did was increase the amount of RAM on the vm from 8 to 12 gb. Though I haven't tried svnadmin verify, let me see what that does
12Gb is mid sized, is apache eating all that?
more good news, that was also quick... but unless you've got out of date apache+mods I'm getting low on ideas. Have you tried checkout out the repo on the server using the external name? svn co http://blablalah.com/repo.trunk
I previously did it over tortisesvn on a separate computer, trying it again on a test folder. Same behavior, it's like initializing the connections is taking a long time as I can see in task manager network and disk usage go up during a file download but then go down once the file is done, it's not like a continuous stream of files
and interestingly it appears the same thing is happening locally, if I clone it on the vm...
OK, I've never seen this before. I can only think something is misconfigured somewhere? Any recent changes to the OS, apache, or recent commits that are out of character?
the vm as I said runs openproject, I recently updated openproject to attempt to fix a different issue and perhaps in that something changed with apache or svn, as openproject manages those
Anything in the apache or svn config files that could be causing this? I'll see if changing the compresison level might do something, that's something I've seen when searching
My basic setup for apache is here: https://www.executionunit.com/blog/2024/08/21/how-i-setup-subversion-to-work-with-unreal/ (scroll down to Setting Up Subversion) KeepAlive is important. Also the SVNCache settings.
Hey! Has anyone ever made an automatic binary submitter using BuildGraph? I tried to find some of the docs but I got stuck trying to figure out what nodes are available tbh
well of course there's one for UGS already, but if you don't use P4 I guess you'll have to make something or look at PBSync
I set up svn over ssh and it's quite fast, practically confirming the issue to something with http... I looked at your config and adopted some settings but it didn't make a difference
The next thing I would try is disable all svn over http and get apache to serve one large file and see if there are similar issues. That way you can see if it's apache config or mod_XXX_svn config... well maybe. I've used Apache+SVN for 20 years and never not been able to saturate any connection (despite http being a terrible protocol for source control). I am sort of running out of ideas though. Maybe start asking on apache forums?
I think I found someone (10 years ago) who was running into the same issue as I am: https://community.openproject.org/topics/4536 maybe the bugs mentioned have something to do with what's going on?
I added some of the conf items mentioned here into the dav conf and it still doesn't seem to be making a difference. Committing a separate repo over http now, it's as if adding folders takes a second but maybe SVNAllowBulkUpdates seems to quickly upload multiple files?
Some of that is to do with branching which you aren't seeing. The SVNPathAuthz stuff could be causing it as that would block activity while apache authorises the client but if it's taking seconds either the auth file is megabytes in size (you'd need hundreds of thousands of users in one file for that) or there is an auth script that is taking a long time which implies it could be OpenProject auth that's taking time? I've never used SVNAllowBulkUpdates. Does openproject use a perl script to auth users? Could that be taking seconds to respond?
I think I mostly got the issues fixed- somewhere along the way the folder ownership for the svn repo changed, I set it to match the git repo folder that openproject also manages. Seems to checkout quickly, will have to test commits but it feels more like normal again. One thing that remains is that it takes a bit to initialize a conneciton but that's not too bad
mkay so it seems pulling files is fine but uploading them is still sluggish, when tortisesvn is sending content in particular
Does anyone know if localization works with source control?
If I make any localization changes using the localization dashboard and then push the changes to git.
When others pull my changes they don't get the localization changes
yeah?
but the engine reads the compiled localisation files (.locres) rather than the plain text .po files
Hi ! Anyone with perforce knowledge knows why my p4ignore file doesn't work as intended ? I have done the whole "p4 set p4IGNORE=.p4ignore" and then created a file in my project with custom lines inside with everyting I want to be ignore. Then, when I check with "p4 set" it shows "P4IGNORE=.p4ignore (set)". So that should all be correct I believe ?
But then , when I try "p4 ignores" to check what is actually ignored, all I see is this (see image). Please somebody help 🥲
what is the contents of p4ignore file?
because otherwise it's correct, though keep in mind that .p4ignore is only applied to the folder it's in (and the subfolders of that folder)
Quite a lot, took it from a tutorial. Here
Wait so maybe it's the file location that is not okay
in what folder the .p4ignore file is... and how the folder looks like, since this would work only if your uproject is in the root of your workspace
and also p4 ignores tells you what ignores given file or folder... no arguments means "current folder" ... and there is nothing that ignores current folder
ok, can you show me the Dreams folder?
ok, so... yeah... change the first 7 entries to */XXX
i.e. */Binaries/... etc...
because right now it's looking for Binaries folder directly in the root of your workspace, but there is none
it's in Drreams/Binaries
so using */Binaries/... makes it work for any project
Okay will test this out, thank you for your help and explanations. I might get back to you if we face some more issues
what I recommend is, change the .p4ignore file, do not push it yet... and then choose random file in Dreams/Binaries and do p4 ignores -i Dreams/Binaries/XXX and it should tell you that it's being ignored by the line in p4ignore
Yep sounds like a plan ! Thanks
i.e. like this
and for file that is not ignored
or even better -i -v 🙂 it will tell you which line etc.
Okay so the file does work, the ".dll" file is ignored.
But the Intermediate folder still isn't, even after your suggestions
oh... wait... I know why...
this is one non-standard thing about p4ignore
... isn't right
should be * also ?
these two lines are from our ignore that we use and they work
damn. I trusted that tutorial
so you can use those
I'm not sure if/when it changed, but I'm pretty sure the ... was working at one point in time
but... I just went through the docs and they say * and **
see the Notes and examples section for more details https://help.perforce.com/helix-core/server-apps/cmdref/current/Content/CmdRef/P4IGNORE.html
no worries, glad we solved it!
yeah, can't believe it was that simple. Reading the doc isn't my strong suit
🤷♂️ that's what I do... I read docs and use google, otherwise I'm dumb af 
I just know that most of the tutorials about perforce especially in combination with unreal are... mostly bad practice... so I just wing it
honestly the whole tut was on point, maybe this is just outdated
adventures of making svn faster (see previous posts)
ok I might actually be finding something related to the issue- I enabled debug logging in openproject and did a simple show log in the svn repo, which revealed that the server appears to be making multiple queries to the ldap server. Still confused but at least it's a new place to look for problems.
FInal update: turned on ldap cached binding instead of direct. Might be slightly less secure but a postman 3 second request is now down to 700 ms. @inland bay thanks for initially attempting to help me diagnose the issue, but it would seem all this time I was looking in the wrong place
hey. I'm getting this error which I believe is related to my Perforce. I have the Epic p4ignore file so it's ignoring the usual suspects like Intermediate/Saved/Binaries/ etc. I don't usually get this issue but the one thing I did differently than usual is added my SLN file to the repo so I could get full Visual Studio support for the perforce plugin. I've seen contrasting information about this. Stackoverflow says yes. Some UE devs say no.
Anyway... The message is Unhandled exception. Couldn't write Timestamp file: Access to the path and then it has the path in my intermediate folder where UBT is trying to build files. I've double checked the folder permissions to disable read only. Any ideas?
Hey guys, we are working on a project, and we are using Git for Version Control. During the final stages of the project, we have a lot of minor changes that have to be implemented, but we can't all use the final branch (where the demo of the game is bring built) repository at the same time, cause of merge conflicts, especially with the map files. Is there any workaround for this particular issue? Many people have suggested Perforce Helix Core, but we aren't sure if this issue can be mitigated by Perforce, so we are hesistant to invest in that/
I believe that's where branching (streams in p4) comes in handy. With branches you can all work on your own branch when necessary. Then keep a Main branch updated with relevant changes. With Perforce you have a better system called Streams, which allows a better branching management (in my opinion) where you can create a stream that is intrinsically linked with the Main stream, so it will pull from it and push to it when you need to merge relevant things. But I don't have enough experience in Git to offer advice on that side.
Hi, so the thing is, we are working on multiple branches, but when we merge them into main, it creates a lot of weird conflicts. Though if that doesn't happen with perforce, that's definitely something we'll look into
well I couldn't guarantee that. I don't know the specific setup you use. I just found personally that Perforce (and PlasticSCM) have better branching/stream systems.
Usually you would resolve merge conflicts by figuring out which is the version you want merging. Likely it's got a couple pending or something you have to filter. It flags these things so you don't overwrite things with the wrong version when multiple devs working on the same thing commit a version to a branch
its all dependent on how you setup and work with it though. So I cannot be more direct with an answer
ah cool, thanks for your answer :D
Thanks for the help
No worries mate, glad you got it sorted. I hope you still remember what game you are making 🤣 Take care.
lol np
The Laser Games, currently on steam playtest, check it out!
The solution and project files from visual studio should not be in source control for UE. Those are really temporary files that are updated to reflect what’s on disk. All the project files are in the source intermediate directories.
I don’t remember having to have any of that checked into p4 to get full functionality from source control back when I used VS. but these days I’m all in Rider and just using the uproject instead.
yeah I did it because I had no symbols to show the source control state but when I added it they appeared
Working in multiple branches isn’t really recommended with UE because of the large collection of binary files that you can’t merge.
Streams are usually reserved for release management or upgrade staging. Or you have to have a mechanism in place to prevent changes across branches when anyone makes an edit in theirs which could lock out the file for a long time depending on merge strategies.
hmm thats why I use streams with p4 really. I find it easier to have testing branches and push to a main stream when a feature is complete. But I can also give someone else a stream and resolve any conflicts easier without breaking one stream trying to do so.
Adding the plugin to the solution for that should be fine. You just don’t add the solution itself to p4. I never lost my p4 settings while doing UE development that way.
yeah I don't usually add the sln file. Never have anyway. I just felt a bit of a void without those symbols in the solution explorer. But if I cannot figure this out (it must be locked by source control because when I manually try to unflag it it just reverts immediately) I shall just remove the project out of the depot and re-do it. It's not like I care about the commit data as I'm solo dev'ing this one anyway 🙂
But how do you handle the feature and mainline both needing to edit the same blueprint? It can’t be merged so you’d lose one streams changes and have to redo them.
If, and only if, a new feature can be introduced in a way that only adds new blueprints, can you make it work.
Oh you’re solo so it’s less likely. You can still get into trouble if you have to move back to the main stream to make changes before the feature is done and merged.
very carefully and with communication. Nobody wants to resolve a dozen conflicts at a time and as you know it can get to the point you end up reworking things to manage it into a single commit. But nothing touches my main stream without me observing it in the process.
It's probably not a production method of doing things I know. However I'm not working to mega-scale like a studio. Just indie dudes helping indie dudes.
It doesn’t even have to be mega. I’m at a small startup now and I can’t imagine dealing with a bottleneck of 1 or 2 people having to review every change that goes into mainline by the other 5 engineers.
It sounds like you’ve got submissions by semi-untrusted sources similar to open source pull requests where that makes more sense.
I (personally) don’t agree with that sort of oversight in a studio environment where you’re hiring someone to do a job and then act like you need to look over their shoulder for every change. Even if the studio is only two or three people.
yeah I understand. I just don't trust people with source control in general. I know what I'm doing and I don't trust myself with Perforce :p
Except for specific deadlines where build stability is paramount.
I should really get myself in a bigger studio and see how some larger scale production teams handle it. But I've always kept to the indie scene where things are, shall we say, relaxed?
Eh, studios don’t have to be some bureaucratic nightmare. My last (corporate) studio was about as relaxed as the (indie) studio I’m currently at. Which is to say, pretty relaxed. Of course 75% of the indie came from that corporate one!
I wouldn't know tbh. Always been afraid to apply due to imposter syndrome. But I'm pushing past it and hopefully I'll get something that pays me more than being indie. Because often it's peanuts or nothing.
the problem is that you can't resolve binary file conflicts, at least not in any sort of reasonable manner. u'd have to manually refactor all conflicting assets.
sure and in some cases that's literally nuts to do. Which is why keeping things done in an order, with observation, is key for me. Blueprints aren't a problem because we can diff them. It's the things you cannot read out well that are what I try to avoid. But that should never stop progress. Just needs to be treated like a hot plate, with gloves on and carefully.
Hey again (it's me, Marc).
So I rarely have to revert in source control so I've not noticed this on my latest p4 server. But the CHARSET is doing strange things. I have my p4 server set to Unicode. I have my client connected as UTF-8 (as is p4 charset).
However I'm getting the old simplified chinese replacement issue. I've tried messing with settings in all kinds of configs so I have to come here with my tail between my legs.
If I mark for add, submit and check the file on the server, it's fine.
When I get a revision, it's converting both the client and server file to the image.
I've read through the docs on both UE and Perforce site and have done what it said. My typemap looks fine too.
Any pointers? Thanks in advance.
I might be passing out after an allnighter so if anyone answers please tag me and I shall endeavour to wake up asap.
A blueprint I recently made (a behaviour tree task) keeps becoming dirty every time I save a referenced asset (human character). But I am not changing anything in the BP itself or anything that should cause it to become dirty...
When I diff it in Unreal, it shows no changes? Has anyone else experienced this behaviour and is there anything I can do to fix it? It's becoming quite annoying.
Using Perforce with standard perforce integration.
not really related to perforce, this is just unreal thing as unreal sometimes decides to just invalidate assets that are referencing that specific asset... interactive diffing is limited only to the visible things, but sometimes unreal just decides it needs to recompile the blueprint for some reason which causes this... not much you can do about it other than further decoupling the character and btt if possible so it doesn't cause invalidation
D:\HA\Demo-Inc\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(5270,5): error MSB3021: Unable to copy file "D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\Sdk\2.9.10\linux\lib\liboo2corelinux64.so.9" to "bin\Development\net8.0\liboo2corelinux64.so.9". Access to the path 'D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\bin\Development\net8.0\liboo2corelinux64.so.9' is denied. [D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\EpicGames.Oodle.csproj]
D:\HA\Demo-Inc\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(5270,5): error MSB3021: Unable to copy file "D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\Sdk\2.9.10\linuxarm\lib\liboo2corelinuxarm32.so.9" to "bin\Development\net8.0\liboo2corelinuxarm32.so.9". Access to the path 'D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\bin\Development\net8.0\liboo2corelinuxarm32.so.9' is denied. [D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\EpicGames.Oodle.csproj]
D:\HA\Demo-Inc\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(5270,5): error MSB3021: Unable to copy file "D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\Sdk\2.9.10\linuxarm\lib\liboo2corelinuxarm64.so.9" to "bin\Development\net8.0\liboo2corelinuxarm64.so.9". Access to the path 'D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\bin\Development\net8.0\liboo2corelinuxarm64.so.9' is denied. [D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Oodle\EpicGames.Oodle.csproj]
D:\HA\Demo-Inc\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(284,5): error MSB4018: The "GenerateDepsFile" task failed unexpectedly. [D:\HA\Demo-Inc\Sync\Engine\Source\Programs\Shared\EpicGames.Core\EpicGames.Core.csproj]
Anyone see errors like this on their Horde builds? I think it has someething to do with write permissions (access or read only)...
If I use these commands...
icacls "D:\HA" /grant "NT AUTHORITY\SYSTEM:(OI)(CI)F" /T
attrib -R "D:\HA\*" /S /D
...it will let me get a little further, but a later step will hit the same issues. Seems like something on syncing files is resetting the flags maybe? Beat my head against it for a day so figured I'd come ask.
Sounds like you pushed some files that you were not supposed to perforce
This usually happens if you do anything like running generate project files etc before pushing for the first time
Things on perforce should just contain clean sync from GitHub and setup.bat nothing more nothing less
Think you nailed it, I rolled back a couple submits and it seems to be progressing much further now. Thanks!
Random, but awhile ago I was discussing with you Horde artifacts vs. perforce stream for Editor Binary distribution. The conclusion was it wasn't ready yet, and you were going to check it out it was updated in a future release. Do you happen to know if it is working now?
Horde artifacts for binaries have been ready since UE 5.5 … official buildgraph from epic actually produces those by default when ran through horde.
The only thing is that binaries are really slow to download in UGS in 5.5… there has been a patch merged in for UE 5.6 which makes the speed comparable with perforce, so ideally you’d have to use UGS from the ue5-main branch instead
Much appreciated! Master of your craft, sir!
Hello who has a problem on .git folder suddenly bloating over 100gb+? we have a project and we store it on a repo using Azure as the our development goes by the original size of our project is about 130gb but our .git folder is about 150-200gb twice the size of our original project. would anyone share their fixes for this? Thank you!
What folders are you replicating to your repo are you properly using git ignore etc?
yes the git ignore is set properly and wdym about replicating to my repo?
if you submit a lot of binaries to repo it may bloat.
you may run clean redundant branches, run git gc to trim stray objects.
try run git-sizer to get details about repo
Well tried to run the git GC but it bloated it more so I cancelled it
We are using it for unreal engine btw
Did it finish? If you interrupt incomplete packages will remain in fs.
But on large repo it could take a hour or so
If it is engine itself 200gb is very little, if no lfs to keep extra binaries
no it didn't because it bloated more our repo
well lfs is installed and active
What is recommended regarding source-builds, native projects and perforce. I'd like to have our engine source-build in a stream. And let's say projectA and projectB in a seperate stream each. ProjectA & B import+ the engine source. Is it custom for each project to have and download its own engine stream? Thus downloading the engine twice (1x ProjectA, 1x ProjectB). Or is it recommended to download the source-build once which then can be used in the native structure.
This is a great talk by Riot about multi project studio setups
https://www.youtube.com/watch?v=9xxwQVdwcTQ&pp=ygUfdW5yZWFsIGZlc3QgcmlvdCBzb3VyY2UgY29udHJvbA%3D%3D
But the short version is that you'd have one stream for the pristine (unmodified) engine source, and one stream per project for the engine source. This way each project can choose when to update to that new version.
You'd have some other streams in between those two to help with merges and the upgrade process.
You can share an engine stream across multiple projects but I'd only recommend that for R&D projects that you don't mind breaking every once in a while. Could be prototypes too. But once a project becomes "real" it should have to own place in perforce separate from other projects.
Watch this recorded session from Unreal Fest Seattle 2024 that explores how Riot Games has adopted Unreal Engine as the technological foundation for the majority of their upcoming games.
In this session, the studio covers their approach to building a shared AAA, end-to-end game development ecosystem on top of Unreal Engine, with an overview of...
you have your live working copy which unreal uses, that gets replicated to your repo where you have your version history etc.
what is all in ur gitignore? and have u verified its working correctly?
Hey there, I have an issue with source controls...
On a recently cloned project, there is an issue where an InputAction event is not registered in the graph and replaced with "InputAction None" which of course returns errors.
what source control are you using? is the input action the legacy input or enhanced input? did you submit all the config files and other necessary assets?
(just blasting off general questions 🙂 )
I'm using Diversion
All's EIS based
Config files and similar were already up to date, and the 2 previous persons that cloned this project ran into no errors that didn't exist on my end.
ok, I'm not really familiar with Diversion so I can't help you that much, but double check the logs from them since if there is version mismatch unreal will refuse to load assets (i.e. if they were saved in newer version and then attempted to be read in older version) etc...
there should be warnings if that's the case.
What sort of Perforce branch should I consider if I want someone to work on a fork of our mainline stream, with the possibility that we might not merge in their work eventually into mainline.
There are so many options now, and I remember some of them having downsides that might not be immediately obvious.
task seems promising?
Alright, I'll check with them once they get back if this works.
Though my gut says this should be fixable with recompiling the project, I ran into something similar before.
Just in case I will check the repos and make them pull
Thanks for the help!
there is honestly no real difference between the types of streams other than the regular and sparse ones... everything is just a stream under the hood...
I'd say use "Development" since you're branching from mainline... task streams are really intended for small tasks like fixing a specific bug etc... not semi-long lived features
it usually is, since at least with perforce during recompile it raises the version to the synced changelist (and that's where the assets not-loading to avoid corruption can happen)
but again, unsure how it works with diversion, since I've never used it
It's pretty standard, just has some neat QoL features like locking files from branches that would cause issues after a merge
I was recently suggested using it and I'm pretty satisfied with it. Has the same business model as Azure Devops too.
I'm mostly speaking about surrounding workflows built around the version control... since epic uses perforce so most of their workflow is built around that - and that's what I'm also using etc...
I still prefer self-hosted, but if you don't mind cloud hosting, diversion is certainly better than using raw git for unreal 🙂
Thank you, makes sense!
I feel like I'm somewhere in between, where this will be maybe 1 week of work at most, and I'd end up duplicating our files for something temporary.
Maybe a sparse development branch? Is that a footgun that I should avoid though? I haven't had any experience with it.
Yeah Diversion's quite literally marketed as poor man's Perforce. Which is a good thing!
sparse streams are relatively new feature (like about a year old) so I'm not really sure how full-featured they are etc... the difference between sparse and non-sparse is that sparse only physically branches the files when you modify them, so if you branch off from mainline, you don't duplicate 300k files, but 0 at the start and if you change only a file or two it makes a copy of that file or two...
but I'm unsure how well it handles in the edge cases where you obliterate the original stream and other things, last time I spoke with engineers from perforce they weren't sure either (since they weren't the ones working on this feature) 😄
so just be careful about obliterating stuff 🙃
D*version is still very actively astroturfing on Reddit and the like, that's what's still giving me the ick about them
(and yeah, they also vanity search)
That's just tactical diversion 
but yeah, I'm not really fan of that, but I don't really go to redit that often so I wasn't aware of that... I'm more concerned about/if the ToS is better nowadays.
Last I heard they removed the "not a backup service" thing
either way, from purely technical and unreal integration side, I'd say diversion is at better spot than git(+lfs)
Without actually providing a tool to own your data
they did, pretty much all issues i had with the ToS were either taken out entirely or adjusted to be more in line with the expected norm.
Anyone know what I can do about Unreal Game Sync not taking the port parameter for the horde connection address? "https://myhorde.dns.net:12345/" It just tries to connect on port 443 (default https port) even though I have put the port number .
For clarity
I stumbled on the answer, so figured I'd post it here. Within the server.json config, the ServerUrl object in this block still needs the port defined even though there is a port definition, and I guess the port shown in the connection dialogue in UGS just doesn't matter
I didn't re-install UGS... so I guess it pings the server for the port to use based off that UGS dialogue.
well, that's probably because auto update is difference from authentication, it gets stuff from the config file, things like ServerUrl, and DashboardUrl (ServerUrl is really necessary to even get auth properly working)
ah, you solved it yourself
Http(2/s)Port is just to say where it binds to
I think you're explanation is still spot on.
ServerUrl is what it advertises
and DashboardUrl is what it uses for the UGS badges
(since you can host dashboard separately from backend itself)
so I recommend checking the relevant configuration section and settings both 🙂
Haven't set that Dashboard URL, thanks for the tip!
Do you happen to know how to manage UGS if I have 2 different projects using UGS? Like Contract A has a UGS and Contract B has a different UGS.
Possible to install two different instances?
that's kinda annoying, since epic's workflow kinda expects one UGS for two projects
if you don't care about tooling etc... and just want to connect to the second perforce server, then just open new tab in UGS and connect there
you can always use different perforce server than the default provided
Was wondering if that would cause weirdness with the meta data stuff, like Project B gets notes from Project A etc
if it's the same horde then no...
if different, then ideally set necessary fields in "UnrealGameSync.ini" inside the {Project}/Build folder
that is a project-wide settings, but it isn't such a big problem to push that globally (instead of relying strictly on horde to auto-pull the settings)
iirc. it's ApiUrl field or something, it's been few years since I last toyed with it
and you put in https://{horde_url}/ugs iirc
(substitue horde url appropriately)
and that specific project will now use different UGS API to fetch badges and stuff from
Amazing info as always, thank you!
Ever have perforce shut down the connection on long Submits or Syncs? I notice it because I been syncing whole projects, so have to break them into smaller submissions or they won't finish.
yep it's working, but just to be sure can i have your .gitignores too? I will cross reference it with mine
only in case the server was underpowered or on slow connection, since too high cpu saturation caused disconnect because the machine couldn't handle more
the moment we switched to 10 gig we had to get decently beefy machine + we don't internally use SSL due to added overhead of encryption... at which point it handles things like a champ
like by beefy I mean this... but this isn't just perforce, we host whole studio infrastructure on this one server (with offsite backups obviously)
Must be an EPYC processor, 48 cores!
not really, old xeon E3
it's a refurbed server I got 6 years ago for 1.5k UDS
USD*
If I have to do another full submit I'll watch the processor loads and temps to see if it correlates
also what helped a lot was switching to SSD raid
since slow I/O causes lots of cpu stalls which propagates all the way, which ultimately results in connection dying
guys, what does this icon with -> mean in github? it's 3rd party squirrel noise plugin, but I deleted .git folder inside of it, how to make it treat like a regular directory? can there by some other files pointing outside?
It's a submodule. I can't remember how to integrate it as a regular directory, but Google/ChatGPT should be able to point you to the right answer.
yea, I tried it, but haven't archived meaningful results just yet. but I will keep struggling 🙂
maybe just delete and readd it 🙂
When working with branches, let's say I modify a BP that exists in the main branch
I do not want to "merge" as in adding features on top dynamically with other branches, but outright replace the original. Is this still safe? Just wanna be 100% sure since binary files and whatnot.
Basically there is no way to merge .uassets, they are just binary blobs. Any conflicts have to be sorted out by hand.
Working with unreal, it is inadvisable to use branches for .uassets, unless you have some custom system for locking files across branches. How do you know if 2 people are working on one .uasset at the same time? One or the other, or both will have to sort the mess out, effectively one or the other will have to redo changes. That is no fun.
Most studios accept this and everybody devs together in mainline. I have heard some really big studios have cobbled together their own cross-branch locking.
"trunk-based development" is the term, I believe
Branches might still theoretically be useful for pure c++ dev, but even that is somewhat unusual, I imagine, since so much ties together
I see that... I was still told to work on branches though. I was concerned about this although it should theorically be possible if we just wanna keep the new files and toss aside the old ones...
If this is a tried and true method in the company you are at, I am certainly interested in their strategy for avoiding conflict situations. Perhaps the project is so well compartmentalized that there is no danger of stepping on each other's toes? I have to say I am a little bit skeptical.
I am as well, just don't wanna break anything
Depending on the team size and experience, I would consider
- if the team is experienced and this is how they do things : asking for more information on how to detect potential problem situations before doing merges
- if the team is new to unreal, read up a bit on how trunk-based dev is really pretty much standard operating procedure and ask to discuss it
I have 20+ years of gamedev experience, but only the last 3 with Unreal. Nevertheless I feel it to be pretty clear that continuous integration + trunk dev is the way to go with unreal, especially if the game is heavily based on blueprints as most are.
Let's see if I can scare up some article on the subject...
Can't spot one right away, but I will write a few brief notes
- perforce + file-locking is a MUST for bp-heavy projects
- everybody working together in mainline is fine, file-locking keeps things sane
- strive to make small, incremental changes with daily, non-breaking commits
- if a big feature or change is needed, use feature flags to control whether it is in use or not, so that mainline is ALWAYS WORKING
If you do work on a branch, and end up with BP conflicts, the merges are a totally unnecessary extra chore. Unreal does have BP diffing, but it still means somebody gets to roll up their sleeves and go redo a bunch of stuff. Total waste of time
I remember seeing this properly covered in some GDC video a year or two back, but which one was it... hmm
Lacking the memory for which vid it was, I will post a couple of links to some veterans on this disco
"Epic and most studios do trunk based development where everyone is committing to a single depot."
Etc etc. I can pretty much guarantee the majority of unreal devs are going to agree on this
But anyhow : if you must work on a branch, then when it comes time to merge, your version control ( hopefully perforce ) will inform you when a conflict appears. And then you get to sort that shit out : E
Under no circumstances are you to just plow your changes in ( a conflict situation ), as then you will have nuked somebody elses work
Alright... Thanks for the help wtih this. Very complex topic for someone who knows just enough like me, but I apreciate the clarifications
Branches can and do exist with most Unreal shops using P4, but they're usually for releases, engine upgrades, or stuff that's going to break things for a while
You seldom see them outside of those categories
The engine has a built in feature to at least show checked out files cross-branch for perforce fwiw. I've never used it
@arctic hornet Do you know which ACL actions I need to grant for Sync Precompiled Binaries to work?
From horde I presume?
Yes sir
in general it would be the DownloadArtifact and you usually give it scoped to given project, but you can obviously give it globally too so people can download any and all artifacts
and maybe ReadArtifact
I don't really remember since for ease of use (and since we're a small team) everyone has all permissions anyways
but PCBs are artifacts, so download for sure, and most likely also read so you can read the metadata
{
"administrator": false,
"scopes": [
{
"name": "horde",
"actions": [
"CreateBisectTask",
"CreateJob",
"CreateSubscription",
"DeleteArtifact",
"DeviceRead",
"DeviceWrite",
"DownloadArtifact",
"DownloadTool",
"IssueBearerToken",
"ListAgents",
"ListPools",
"ReadArtifact",
"RetryJobStep",
"UpdateBisectTask",
"UpdateJob",
"UploadArtifact",
"UploadTool",
"ViewAgent",
"ViewBisectTask",
"ViewChanges",
"ViewEvent",
"ViewJob",
"ViewLog",
"ViewPool",
"ViewProject",
"ViewStream",
"ViewTemplate",
"WiteArtifact"
]
}
]
}
Had that but didn't seem to do the trick. Wouldnt mind blanket permissions if you know how to toggle that administrator field
I don't really use built-in horde accounts ,we use external IDP and we just do:
{
"claim": {
"type": "groups",
"value": "horde-access"
},
"actions": [
"XXXXXXX"
]
}
in the ACL section of the config
since that looks at the token from IDP (identity provider) and checks is user has claim "groups" with value "horde-access"
{
"claim": {
"type": "http://epicgames.com/ue/horde/group",
"value": "UnrealDev"
},
"profiles": [
"default-run",
"default-read"
],
"actions": [
"ReadArtifact",
"DownloadArtifact",
"DeleteArtifact",
"UploadArtifact",
"WiteArtifact",
"UploadTool",
"DownloadTool"
]
}
and for IDP the Admin gets decided based on AdminClaimType and AdminClaimValue fields from the server config
so any user that has given claim with given value is given administrative access
and admin is determined by the presence of http://epicgames.com/ue/horde/role claim with value admin
seems like with horde accounts the stuff is stored inside mongo database, so if you know how to add claims then you can add it that way - if you're using horde accounts
hmm... guess I am missing something... I made a new user an admin (confirmed can do admin stuff in horde web frontend) but still can't get binaries. Only the default Admin account can. Will keep poking at it.
@arctic hornet Sorry for another ping. I got it worling with the ACL and wanted to make sure to express my gratitude to you again. Thanks!
No worries, glad you got it working! 🙂
Hopefully that wraps up the Horde/UGS/P4 sidequest and I can go back to actually working in Unreal haha
ok, so i got a perforce server via a digital ocean droplet, but im totally lost on how to connect to it
i got this to come up
but no clue how to actually connect to it to load anything
I simply dont get how to connect to this thing via SSH
i dont understand anything related to SSH in the first place, and all google answers seem to predicate a basic understanding
if you dont understand ssh why are you using ssh?
because its required to get the defualt password for this perforce server
You should use something like PuTTY to connect to droplet via SSH, then run your commands
ok so. were running into the fact we cannot add anything to the depot
the workspaces are setup, the files we want to try are there
but it seems to not upload
are you marking the files for add and are you submitting the changelist?
and if so, what kind of error are you getting
finally figured it out, apparently we hadnt setup streams properly
What is the reason you are using streams? For most UE5 projects you are better off using a regular depot
because thats what 95% of the official documentation said
Why would you even say that though
Does anyone have any good suggestions for how to merge branches fluently? i am coding in C++ and have other branches were people are doing art and i'm geting a lot of nuget bugs and issues, mainly around MSBuild, IOHash, Core and Horde
Because
"For most UE5 projects you are better off using a regular depot"
that's assuming that's true, which it isn't
there are times you want streams (release stabilisation, engine upgrades, big chunks of work which will result in breaking changes)
UGS works with stream depots
hey guys i've got a bit of an unusual Perforce question. We are working on 3 different interactive artworks that have shared content but will require 3 different builds. Is the best way to manage this to have a mainline where everyone is working in, and then have 3 release branches for the builds?
is this the best place to ask Perforce questions? or do perforce have a discord or similar channel? their forums seem all over the place
and say I want to have different versions of the DefaultEngine.ini in each of the release branches, whats the best way to have each branch 'ignore' the main branches config file?
if you're using a native source build, you could just use separate build targets using CustomConfig for that
How different are these different releases that use the same content? The art could be in a shared plugin instead
also that depending on how different these "builds" are
they are mostly very different. A few shared models and blueprints, but mostly completely different levels for each artwork (and different nDisplay set-ups). There will be about 3 of us working on all 3 artworks (and jumping between them often), so having separate mainline streams for each is not really desirable
yep we're using native source build.. this could be a good idea!
in a games context, CustomConfig is good where it's the same project, but needs different configs for things like different PC storefronts (like having a Steam build vs an EGS build vs a GOG build)
a content only plugin also seems appropriate
ok cool, that makes sense. could work well, thanks for the suggestion!
just a sanity check - theoretically i can add other Game targets like this:
`using UnrealBuildTool;
using System.Collections.Generic;
public class Project_Artwork1_Target : TargetRules
{
public Project_Artwork1_Target(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V5;
ExtraModuleNames.AddRange( new string[] { "Project" } );
CustomConfig = "Artwork1";
}
}`
and then have custom .ini files in Project/Artwork1/DefaultEngine.ini
https://forums.unrealengine.com/t/how-to-target-eos-and-steam-indepedently/1887980
I’m trying to target my game for EOS and Steam without needing to comment out the DefaultEngine.ini lines. I have looked at Lyra, and have updated my project so that I have an additional Target.cs using UnrealBuildTool; public class ProjectTest_EOSTarget : ProjectTestTarget { public ProjectTest_EOSTarget (TargetInfo Target) : base(Target)...
does this seem right? apologies, I'm quite new to C++ as well 🙂
(moving this to the packaging channel)
Anyone know why a submodule, when clicked on github, doesn't open the main branch even tho it's specified in the .gitmodules with branch = main, it opens a random hash like a branch even tho it doesn't and has never existed?
because submodules are not linked against branch, but rather against specific commit
the a2c002f is short SHA ID of the commit on main branch
because i said so
ok thx
Well. I have made two development streams today off of our main stream. And updating permissions in the admin tool doesn't seem that obscure anymore. Perforce feeling more familiar little by little.
Hi, we have the traditional "perforce is slow" problem, even though it's actually the first time I encounter that, we have a on premises windows machine acting as the server, we had an old one and it was very slow at some point, like 20 seconds of editor hang for a p4 edit for instance.
We changed the machine, it was fine for a month and now it's back, I tried rotating the journals but it does not change anything, I never experienced that normally I work on remote Linux server, do you think that using windows could be the root of the issue here ?
Is there either a dark mode for UGS yet? I couldn't find one while looking. I do have a vague memory of being able to change the background of UGS, if anyone remembers where that could be?