#source-control

1 messages · Page 25 of 1

midnight goblet
#

Thanks, the real-time is what I am looking for. As you say, that is packaged in perforce?

#

We are setting up a server right now.

arctic hornet
#

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

midnight goblet
#

I will take a look.

hybrid flower
#

trust me.

#

each liscence after 5 costs 1000 bucks.

ocean anvil
hybrid flower
ocean anvil
#

anywhere, unless you are using their managed cloud solution thats more expensive.

hybrid flower
#

when i had a personal meeting with Perforce to make me an better offer

ocean anvil
#

but then you also pay for them to hold and manage your data, servers, etc. and provide support

hybrid flower
#

they said any additional liscence is 900

ocean anvil
#

how long ago was this?

hybrid flower
#

6 months ago?

ocean anvil
#

this was what i was quoted at the end of February

hybrid flower
#

dafuq.

ocean anvil
#

thats pretty much standard, if you google around thats pretty much what everyone gets

hybrid flower
#

then they tried to fool me idk

ocean anvil
#

i doubt u''ll get cheaper unless you buy at least dozens maybe hundreds of licenses.

hybrid flower
#

nah wanted like 30 liscences

#

but i resulted into on premise gitlab

ocean anvil
#

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:

midnight goblet
#

Will this support multi-edit mode?

woven sluice
midnight goblet
#

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?

midnight goblet
midnight goblet
#

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?

woven sluice
# midnight goblet To clarify, this is a student project hosted in a university dept. We work globa...

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.

midnight goblet
#

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

Epic Games Developer

Provides step-by-step instructions that will get you up and running using Multi-User Editing for your Project.

#

We may need to use Tailscale for “localizing” the net.

arctic hornet
# midnight goblet To clarify, this is a student project hosted in a university dept. We work globa...

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

strong sigil
#

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)

ocean anvil
ocean anvil
# midnight goblet I was given perforce as an alternative to my windows VM request. I think we ar...

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.

midnight goblet
#

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.

strong sigil
#

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

strong sigil
midnight goblet
#

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.

woven sluice
#

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

pearl wave
#

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?

pearl wave
wide raven
woven sluice
#

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

pearl wave
woven sluice
#

it will (probably) work better than what you're describing but it's sadly... not as fluid as no version control 🤣

pearl wave
#

haha, no version control feels like not wearing a seat belt

#

Server will be local on a NAS, so hopefully fast enough.

woven sluice
#

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

pearl wave
#

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?

reef oriole
#

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!

magic canopy
#

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

pearl wave
pulsar parcel
magic canopy
# pulsar parcel This seems like a series of bad decisions (why would you obliterate?) but you'll...

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

pulsar parcel
#

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?

magic canopy
# pulsar parcel 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

magic canopy
pulsar parcel
#

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

magic canopy
pulsar parcel
#

I was hoping for an actual screenshot because why would the project have an engine folder within it?

magic canopy
pulsar parcel
#

well that's not even vaguely correct for doing a native source build anyway

magic canopy
pulsar parcel
#

I was going off the information you told me and the first pin tells you the proper native build layout

magic canopy
woven sluice
#

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

silver summit
#

What do you guys use for remote project sharing? Is GitHub the best? Or is there an alternative that might be better?

modern tulip
silver summit
wide raven
#

Have to say I didn't even know that was a thing in git, and I don't really see it being very useful

woven sluice
pearl wave
pearl wave
# woven sluice hmm, sorry am i reading this correctly - are you saying you want to be able to c...

@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.

pearl wave
pulsar parcel
#

"but that ended up being incorrect" if I had a nickel for every time I've heard that with a chatgpt thing

pearl wave
woven sluice
#

haha. and yeah, fair enough about local commits with git i guess. we're all brainwashed by gamedev/perforce with rigid trunk dev here edboy

pearl wave
orchid cloud
#

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 ?

haughty yoke
#

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

wide raven
wide raven
haughty yoke
#

im assuming i can assign limits to how many of my resources it takes?

#

cause i still use my main rig like daily

wide raven
#

A server/builder doesn't need to be a beefy machine, and doesn't need a fancy GPU

haughty yoke
#

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

wide raven
haughty yoke
#

i mean we have a 2TB G-drive

#

which i can download a copy from and throw it in the big office safe

wide raven
#

version control is better than a backup

  • easily roll back specific changes
  • file locking so people dont cause unnecessary merge conflicts ( .uassets are unmergeable )
haughty yoke
#

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?

wide raven
pulsar parcel
#

azure ado does it free for up to 5 users

wide raven
#

I've heard rumors of git even supporting file locking these days?

arctic hornet
#

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)

haughty yoke
# arctic hornet but for a team of 3 people, if you don't mind waiting a little for large changes...

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?

arctic hornet
#

I find 250 gig SSD quite small, but otherwise it would work just fine

teal bone
#

250gb = OS only

#

And it'll be tight.

haughty yoke
#

I mean i have a set of 16tb hdds

arctic hornet
#

I don't think those will fit into this chasis

haughty yoke
#

I have 6 in RAID atm

arctic hornet
#

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

haughty yoke
#

I have a dedicated ip via my isp

#

Upside of business internet

arctic hornet
#

true, although here in europe it's normal even with 10 USD a month 1gbps residential connection

haughty yoke
#

Yeah, i know. Downside of usa

arctic hornet
#

it's got it's own upsides and downsides, like any other country

haughty yoke
#

Upside is we have a ridiculous amount of family land and big workshop we can do motion capture in.

arctic hornet
#

that's cool

haughty yoke
#

Took till August this year to get fiber though

#

Until august 23 i had DSL

arctic hornet
#

oof

haughty yoke
#

300KB/s down 174KB/s up

#

Now its 120MB up and down

#

For the same price...

arctic hornet
#

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

haughty yoke
#

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

arctic hornet
#

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

haughty yoke
#

200% power gen via local solar, power costs me zero every month

arctic hornet
#

mostly submits is what takes decent chunk of CPU because it's doing the file hashing etc.

haughty yoke
#

Ping and rig resources would likely be the issue

woven sluice
#

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

haughty yoke
#

Box is $140

#

And you can rework it for other stuff

#

I bought a bunch a while back for a physics experiment

woven sluice
#

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

arctic hornet
woven sluice
#

you're joking!

#

lol

#

would be about fkng time if so

arctic hornet
#

that's what I said kek

woven sluice
#

funnily relevant

#

i guess i said it in this channel too, alzheimers brain

arctic hornet
#

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

woven sluice
#

yeah i'm in canuckistan and my mates are in EU so it wasn't as good lol

arctic hornet
#

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

haughty yoke
#

I have 9-30 ping in all of continental us

arctic hornet
#

yeah, you'd be fine with that

haughty yoke
#

😂

arctic hornet
#

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

haughty yoke
#

On dsl i used to be happy with roughly 400 ping

arctic hornet
#

especially since unreal is inefficient and tends to make ton of requests instead of batching them together

haughty yoke
#

Imagine playing online games with 400-1200 ping

#

Or watching youtube with less than a 3rd of a megbyte

arctic hornet
#

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

haughty yoke
#

Do not miss it

#

Gtav only takes 20 minutes to download not 27 days

arctic hornet
#

Yeah, I'm ok with my connection too 😄

arctic hornet
#

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 😄

haughty yoke
#

Heh

arctic hornet
#

@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

haughty yoke
#

Punk

woven sluice
#

man's got the fastest shitty ai-infuzed web searches in all the land

arctic hornet
#

I mean, twitch's in the same building across the street from me

#

though that's not much better kek

gilded willow
#

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?

long hull
gilded willow
#

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...

west grove
#

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)

silver token
# west grove Would I ever want to use multiple dev streams? That seems like it would cause is...

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.

west grove
#

I see, thanks

arctic hornet
#

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)

sour vine
#

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.

sour vine
#

I cant edit permissions through cmd

sour vine
#

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

lime nova
#

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?

pulsar parcel
#

Perforce

lime nova
#

one that doesn't break my wallet?

#

is it free for 1 user?

woven sluice
#

5 users

#

though i have no idea if it will be faster or not 🤣

lime nova
#

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

woven sluice
#

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

lime nova
#

i'm on 5.5.1

#

so i guess not

arctic hornet
#

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

echo glacier
lime nova
#

@echo glacier if you disable git lfs, how do you handle large files?

echo glacier
lime nova
#

super helpful, tysm

cyan jay
#

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?

woven sluice
cyan jay
#

Sweet, thanks!
bForceCompilationAtStartup=True

frank silo
#

hello! Anyone happen to know what could be causing Perforce to say certain files are not found but they clearly are there?

teal bone
#

That's an absolutely awful screenshot. My phone is totally awful at rendering that screenshot.

silver token
frank silo
#

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

woven sluice
#

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?

frank silo
#

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

woven sluice
#

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

frank silo
#

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

silver token
#

What do you get from 'p4 diskspace'?

frank silo
#

I just tried increasing my path length on windows, maybe that could have been the issue

silver token
#

Could be. Which does suck since you don't have control over most of that path.

frank silo
#

well, the files seems to have gotten uploaded without my input... weird. eh well, thanks for the help!

woven sluice
hybrid flower
#

Gitlab > everything else

desert fox
#

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?

desert fox
#

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! 🙏

lucid laurel
#

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.

hollow pike
#

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

lucid laurel
silver token
kindred compass
#

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

cyan jay
#

Obviously the first backup took a long time!

lucid laurel
cyan jay
#

To the cloud. Wasabi.

#

That reminds me I really need to test it, it's been a while since I checked it.

lucid laurel
cyan jay
lucid laurel
#

okay, thank you 😃

hoary wren
#

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?

silver token
hoary wren
#

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

ocean anvil
narrow depot
#

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

royal cradle
#

Hello. How can I migrate a Changelist from one perforce depot to another?

silver token
royal cradle
#

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.

silver token
#

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.

royal cradle
#

Thank you. I'll do my best.

hoary wren
#

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?

silver token
ember bronze
#

can someone teach me how to collaborate with people on ue5 so they can work on my project with me?

woven sluice
#

basically you need to learn how to use a VCS like perforce or git or plastic or diversion or svn

pulsar parcel
#

Good order of preference

barren radish
# narrow depot anyone here use azure and git?

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

hoary wren
#

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?

timid hound
#

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.

silver token
silver token
timid hound
#

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

silver token
#

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.

timid hound
#

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?

hoary wren
silver token
hoary wren
haughty wedge
#

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?

haughty wedge
#

and the p4ignore is set on a per-client basis and usually is a file that exists in the workspace?

wide raven
haughty wedge
#

thank you. yes, versioned but must be set on each client machine

#

basically, typemap=server-wide and p4ignore=essentially workspace local

karmic citrus
#

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.

lean socket
#

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!

unreal mirage
#

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.

silver token
unreal mirage
silver token
#

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.

unreal mirage
silver token
#

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.

unreal mirage
#

Alright I get that, anyways thank you very much for your help 🙌🏻

silver token
#

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!

unreal mirage
unreal mirage
silver token
#

Yes

unreal mirage
#

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?

silver token
#

That should be everything.

unreal mirage
#

Alright, thanks. Appreciate your help !

arctic hornet
#

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

cyan jay
late jungle
#

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:

late jungle
#

Feel free to redirect me to a perforce community. I just haven't found one yet.

muted totem
#

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?

woven sluice
woven sluice
muted totem
#

This is currently in my ignore file - does this look incorrect?

woven sluice
#

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

muted totem
#

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..

muted totem
wide raven
# muted totem 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
muted totem
#

Thanks, I'll try and adjust mine

lost talon
#

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?

pulsar parcel
#

Why would you need a source build for this at all?

lost talon
#

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?

pulsar parcel
#

The launcher engine has the engine source and you can download engine symbols

lost talon
#

You mean the engine via the Epic Games Launcher?

pulsar parcel
#

Yes

lost talon
#

ah... 😅

#

I think I have some work to do. Thank you, @pulsar parcel

pseudo granite
#

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?

queen elk
#

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)

pulsar parcel
#

Git works mostly fine for smaller projects

silver token
pseudo granite
# silver token What do you mean you have 3 different local users? workspaces are client (user) ...

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)

silver token
#

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).

wide raven
silver token
#

I think that's a different problem than what 2025 is describing.
That's multiple users (people) using the same client and workspace

wide raven
#

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...

silver token
#

it's 1 person with multiple user logins to a single machine

pseudo granite
# wide raven https://portal.perforce.com/s/article/3675

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.

wide raven
#

Then use the the correct login and only work from there...

#

But good luck, perhaps it may work : )

pseudo granite
#

👍

modern tulip
queen elk
vague whale
#

hi, should defaulteditor.ini and defaultinput be under version control?

pulsar parcel
#

Yes

#

All default configs should be

late jungle
queen elk
#

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?

woven sluice
#

try borealis

queen elk
#

Okay, thank you! (: ❤️

pulsar parcel
#

Though I don't think the Git integration is super important compared to say, Perforce

kindred compass
#

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

pulsar parcel
#

Though if you're doing that in P4V then I would've expected that if the editor is running

foggy ocean
#

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?

ornate summit
#

I created this item by clicking in "Add New Item", why is this item "ignored"?

woven sluice
#

where is the file located?

ornate summit
#

Source

#

source folder

#

next to other Target.cs files

woven sluice
#

show where it is on disk

ornate summit
#

So...it should be here

#

o.0

woven sluice
#

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)

ornate summit
#

thanksss

#

^^

arctic hornet
# ornate summit thanksss

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)

unreal citrus
#

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 🤔

simple rover
#

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

wicked fox
#

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

wide raven
woven sluice
#

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

arctic hornet
pastel blade
#

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.

silver token
# pastel blade Hello, I'm new to source control. I did some searching and found that Perforce s...

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.

queen rock
#

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

pastel blade
#

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?

arctic hornet
#

Revision is the "#XX/YY" next to every file... changelist is the number in the history/submitted tab.

pastel blade
arctic hornet
#

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

pastel blade
arctic hornet
#

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

pastel blade
arctic hornet
#

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

pastel blade
kindred compass
#

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

inland bay
arctic hornet
#

(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

kindred compass
arctic hornet
#

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...

kindred compass
#

Gotcha. I'll look into it tomorrow. Appreciate the pointer in the (hopefully) right direction!

queen rock
inland bay
queen rock
#

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

inland bay
queen rock
#

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

inland bay
haughty yoke
#

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

haughty yoke
#

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

woven sluice
#

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

haughty yoke
#

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?

arctic hornet
#

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/p4ignore to 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 .git folder, 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"
woven sluice
#

fyi allow parallel sync is just a checkbox somewhere in p4v settings these days, don't need to switch to command line

arctic hornet
#

these notes were written ~2019 so they might be little dated + I personally prefer CLI tooling... but good point

haughty yoke
#

tbh ill probably get my backend guy to help with setup

#

my team calls me the "coding anti-christ" with good reason

hoary wren
#

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?

wide raven
#

granted, styling settings is a valid thing to share

inland bay
#

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.

pastel blade
#

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.

arctic hornet
#

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

silver token
jaunty hornet
#

Is Blueprint diffing not supported with git (LFS)?

silver token
# jaunty hornet 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.

urban hare
#

with git lfs and gitattributes, how do I set specific files or recursive folders as not-lockable?

wanton anvil
#

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!

pastel blade
#

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?

arctic hornet
#

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

gusty lion
#

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.

pastel blade
# arctic hornet in general it's done through `p4 set` command which on windows uses registry for...

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

inland bay
woven sluice
pastel blade
arctic hornet
woven sluice
#

is there a reason why you're asking? trying to solve or achieve something? or just learn?

gusty lion
pastel blade
#

@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
arctic hornet
#

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

inland bay
gusty lion
#

@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

inland bay
pastel blade
arctic hornet
#

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

mellow scaffold
#

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 ...

mellow scaffold
#

Ahhh, it's a submodule.

pastel blade
#
## 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?

pastel blade
#

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?

arctic hornet
#

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

pastel blade
arctic hornet
#

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

pastel blade
# arctic hornet i.e. with structure like this, you always have at least `Engine/` or `ProjectNam...

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?

pastel blade
arctic hornet
#

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")

pastel blade
silver token
# pastel blade Or should I place a project and a build engine into a depot together, as shown i...

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.

pastel blade
pastel blade
arctic hornet
#

I’m out until the evening… and I’m not really sure what do you mean

silver token
# pastel blade So every project or engine have its own stream depot? please share the structure...

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.

pastel blade
silver token
#

#source-control message
has a pic I posted last year about the overall stream structure I've massaged our perforce into.

strong sigil
#

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

pastel blade
pastel blade
silver token
pastel blade
silver token
#

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.

pastel blade
silver token
hollow pike
#

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?

wide raven
# hollow pike 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

hollow pike
pulsar parcel
#

it should be built with your project

#

and the precompiled binaries you give to your team should contain whatever the result of that is

hollow pike
#

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

pulsar parcel
#

also to have plugins in project, you must also have a C++ project

hollow pike
#

The whole point of this plugin is to manage files without using C++ lol

pulsar parcel
#

well I don't make the rules

wide raven
pulsar parcel
#

you need to have a C++ project, and in case you don't know, you don't have to use C++ for everything

hollow pike
#

Okay but again, this plugin works fine without any of that crap when installed via the epic launcher

pulsar parcel
#

so? I'm telling you a fact

#

and in engine it's precompiled

hollow pike
#

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

long hull
#

Epic builds every plugin on Fab for each compatible engine version, and distribute the pre-built binaries when installed from the launcher

silver token
hollow pike
#

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?

silver token
#

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.

hollow pike
long hull
#

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.

hollow pike
#

All the directories were checked in. The files within them, on the other hand...

wide raven
#

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

hollow pike
#

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

hollow pike
wide raven
hollow pike
#

Unfortunately, "if you've got it, flaunt it" is also one of our core values

wide raven
hollow pike
#

(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)

arctic hornet
#

beer* ... my german is splling our (bier is beer in german... and I'm not even german kek )

neat grotto
wide raven
obtuse monolith
#

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

wide raven
arctic hornet
pastel blade
wide raven
#

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?

pulsar parcel
#

I thought p4 tags were pretty much the same

wide raven
pulsar parcel
#

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

wide raven
#

hmm, doesn't show up in P4V history view at least

pulsar parcel
#

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

wide raven
#

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

pulsar parcel
#

well looks like you can do it like above just replacing @1234 with @ and the actual CL number

wide raven
#

p4 tag -l Test Tag //depot/main/Content/Library/VersionUtilityFunctions.uasset@20336

pulsar parcel
#

you want to tag an individual asset?

#

you can do //depot/main/...@20336 as the filespec

wide raven
#

no, a CL... but p4v interface does that. let me try from commandline

pulsar parcel
#

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

wide raven
#

yeah, we have dev->staging->release, but would be nice to have the tag in dev

pulsar parcel
#

ah so you want to tag the CL in main that the release stream was created from I guess?

wide raven
#

oof no it starts tagging a huge amount of files ( like everything, I guess ) certainly not what we are looking for

pulsar parcel
wide raven
#

"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

clear otter
#

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?

woven sluice
# clear otter Hi, all - we have a weird issue after a crash during UGS binaries upload. We now...

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.

pulsar parcel
#

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

clear otter
#

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.

woven sluice
#

lol. no fucking idea how jenkins can poison perforce like this

clear otter
#

In the end just spun up another depot for UGS and pointed the precompiled there

woven sluice
#

when i did it i was literally copying over the raw p4d archive file in the unix filesystem

#

thankfully it just worked for me

clear otter
woven sluice
#

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

clear otter
#

Ooh I'll let our DevOps guy know as that rings a bell

woven sluice
#

causation/corellation unknown, but a possible link anyways

clear otter
#

Roger, appreciated

arctic hornet
# wide raven which is a bit surprising, as that feature is really really useful in git

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

slender coyote
#

How do I restore a file I deleted a few changelists ago?? Can't see an option in P4V

pulsar parcel
#

file history and maybe from there?

slender coyote
#

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.```
silver token
#

@slender coyote

#

You'll just have to adjust your depot filter to show deleted files

slender coyote
#

ooo nice, thanks!

#

Much less convoluted than the way I did it

arctic hornet
# wide raven 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

wide raven
marble mist
#

Has anyone had issues with perforce's journal growing incredibly fast?

marble mist
arctic hornet
#

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

marble mist
#

oh cool thats good idea, thanks once again klukule 🫡

pastel blade
#

Hello! I have a bunch of questions I’d like to ask, please forgive me for having a mind full of questions 🥹

  1. 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?
  2. Can Perforce modify submitted changelists, similar to git rebase?
  3. How reliable is the "Reconcile Offline Work..." feature? Is there a chance that changes might go undetected?
  4. 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?
  5. 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?
pastel blade
#

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

arctic hornet
#

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

arctic hornet
pastel blade
# arctic hornet TL;DR: stuff submitted to perforce is pretty much read-only once submitted... or...

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?

arctic hornet
#

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

pastel blade
# arctic hornet it would probably be because uncontrolled changelists are stored in `Saved/Sourc...

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.

arctic hornet
# pastel blade Your reply goes straight to the essence of the problem, I deleted the file and e...

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

clear otter
#

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...

pure oak
#

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

silver token
pure oak
#

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

pure oak
#

is there a way to make sure it syncs?

silver token
pure oak
#

that usual

#

turns out im probably missing a step

#

beginner mistake

cerulean finch
#

Hello,
Is it possible to get local files deleted after a git commit ?

wide raven
cerulean finch
wide raven
vale bronze
#

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%

wide raven
vale bronze
#

😭

#

should have used perforce

clear otter
#

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
#

So I can’t check the header files

#

Our engine versions are in sync

#

Which is good

clear otter
#

We use a circular dependencies plugin from marketplace

pure oak
#

Ahh makes sense, so it either could be caused from circular dependent or a mismatch between engine versions

clear otter
#

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

pure oak
#

I appreciate it

humble gulch
#

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

arctic hornet
#

@long mural (or whoever) we've got someone trying to scam here, not sure what reporting policies are here 😄

long mural
#

banned ty

smoky igloo
#

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?

arctic hornet
#

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)

smoky igloo
#

And now deleted the pending change so everything appears to be fine

arctic hornet
#

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

smoky igloo
#

Ohh ok cool! Thanks a lot! 🙂

#

For me, coming from git, some of the things are still a bit mysterious 😅

arctic hornet
#

perforce can be a bit weird especially coming from perforce, but once you get used to it you'll find it actually makes sense 😄

smoky igloo
#

Yea, I'm always trying to keep in mind, that it has a completely different use case and also requirements than git.

inland bay
humble gulch
#

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.

vale bronze
wide raven
inland bay
humble gulch
#

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

inland bay
humble gulch
#

per htop 7.5/11.7 G is in use

#

ok svnadmin verify verified all revisions

inland bay
humble gulch
#

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...

inland bay
humble gulch
#

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

inland bay
tranquil tiger
#

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

pulsar parcel
#

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

humble gulch
inland bay
# humble gulch I set up svn over ssh and it's quite fast, practically confirming the issue to s...

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?

humble gulch
#

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?

inland bay
# humble gulch I think I found someone (10 years ago) who was running into the same issue as I ...

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?

humble gulch
humble gulch
#

mkay so it seems pulling files is fine but uploading them is still sluggish, when tortisesvn is sending content in particular

reef rock
#

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

pulsar parcel
#

yeah?

#

but the engine reads the compiled localisation files (.locres) rather than the plain text .po files

thorny pond
#

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 🥲

arctic hornet
#

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)

thorny pond
#

Wait so maybe it's the file location that is not okay

arctic hornet
#

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

thorny pond
arctic hornet
#

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?

thorny pond
arctic hornet
#

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

thorny pond
#

Okay will test this out, thank you for your help and explanations. I might get back to you if we face some more issues

arctic hornet
#

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

thorny pond
#

Yep sounds like a plan ! Thanks

arctic hornet
#

i.e. like this

#

and for file that is not ignored

#

or even better -i -v 🙂 it will tell you which line etc.

thorny pond
#

Okay so the file does work, the ".dll" file is ignored.
But the Intermediate folder still isn't, even after your suggestions

arctic hornet
#

oh... wait... I know why... smoothbrain this is one non-standard thing about p4ignore

#

... isn't right

thorny pond
#

should be * also ?

arctic hornet
#
*/Intermediate/*
*/Saved/*
#

like this

#

or ** if recursive

arctic hornet
thorny pond
#

damn. I trusted that tutorial

arctic hornet
#

so you can use those

arctic hornet
#

but... I just went through the docs and they say * and **

thorny pond
#

Life saver 🙏

#

Thanks a lot dude

arctic hornet
#

no worries, glad we solved it!

thorny pond
#

yeah, can't believe it was that simple. Reading the doc isn't my strong suit

arctic hornet
#

🤷‍♂️ that's what I do... I read docs and use google, otherwise I'm dumb af kek

#

I just know that most of the tutorials about perforce especially in combination with unreal are... mostly bad practice... so I just wing it

thorny pond
#

honestly the whole tut was on point, maybe this is just outdated

humble gulch
#

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.

humble gulch
#

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

pastel lodge
#

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?

proven coral
#

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/

pastel lodge
# proven coral Hey guys, we are working on a project, and we are using Git for Version Control....

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.

remote plume
pastel lodge
#

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

remote plume
#

ah cool, thanks for your answer :D

proven coral
#

Thanks for the help

inland bay
humble gulch
#

lol np

The Laser Games, currently on steam playtest, check it out!

silver token
# pastel lodge hey. I'm getting this error which I believe is related to my Perforce. I have t...

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.

pastel lodge
#

yeah I did it because I had no symbols to show the source control state but when I added it they appeared

silver token
# remote plume Hi, so the thing is, we are working on multiple branches, but when we merge them...

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.

pastel lodge
#

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.

silver token
pastel lodge
#

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 🙂

silver token
# pastel lodge hmm thats why I use streams with p4 really. I find it easier to have testing br...

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.

pastel lodge
#

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.

silver token
# pastel lodge It's probably not a production method of doing things I know. However I'm not w...

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.

pastel lodge
#

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

silver token
#

Except for specific deadlines where build stability is paramount.

pastel lodge
#

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?

silver token
#

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!

pastel lodge
#

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.

ocean anvil
pastel lodge
pastel lodge
#

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.

slender coyote
#

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.

arctic hornet
# slender coyote A blueprint I recently made (a behaviour tree task) keeps becoming dirty every t...

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

earnest helm
#
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.

arctic hornet
earnest helm
arctic hornet
earnest helm
gaunt oak
#

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!

ocean anvil
gaunt oak
wind gazelle
gaunt oak
gaunt oak
wind gazelle
#

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

gaunt oak
gaunt oak
wanton ruin
#

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.

silver token
# wanton ruin What is recommended regarding source-builds, native projects and perforce. I'd l...

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...

▶ Play video
ocean anvil
solar jackal
#

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.

arctic hornet
#

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 🙂 )

solar jackal
arctic hornet
#

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.

hoary wren
#

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?

solar jackal
#

Just in case I will check the repos and make them pull

#

Thanks for the help!

arctic hornet
arctic hornet
#

but again, unsure how it works with diversion, since I've never used it

solar jackal
#

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.

arctic hornet
#

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...

arctic hornet
hoary wren
solar jackal
arctic hornet
# hoary wren Thank you, makes sense! I feel like I'm somewhere in between, where this will b...

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 🙃

pulsar parcel
#

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)

arctic hornet
#

That's just tactical diversion Kapp

#

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.

pulsar parcel
#

Last I heard they removed the "not a backup service" thing

arctic hornet
#

either way, from purely technical and unreal integration side, I'd say diversion is at better spot than git(+lfs)

pulsar parcel
#

Without actually providing a tool to own your data

ocean anvil
earnest helm
#

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 .

earnest helm
#

For clarity

earnest helm
#

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 PandaShrug I didn't re-install UGS... so I guess it pings the server for the port to use based off that UGS dialogue.

arctic hornet
#

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

earnest helm
#

I think you're explanation is still spot on.

arctic hornet
#

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 🙂

earnest helm
#

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?

arctic hornet
#

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

earnest helm
#

Was wondering if that would cause weirdness with the meta data stuff, like Project B gets notes from Project A etc

arctic hornet
#

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

earnest helm
#

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.

gaunt oak
arctic hornet
#

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)

earnest helm
#

Must be an EPYC processor, 48 cores!

arctic hornet
#

not really, old xeon E3

#

it's a refurbed server I got 6 years ago for 1.5k UDS

#

USD*

earnest helm
#

If I have to do another full submit I'll watch the processor loads and temps to see if it correlates

arctic hornet
#

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

sharp drum
#

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?

long hull
sharp drum
#

maybe just delete and readd it 🙂

solar jackal
#

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.

wide raven
# solar jackal When working with branches, let's say I modify a BP that exists in the main bran...

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

solar jackal
wide raven
solar jackal
#

I am as well, just don't wanna break anything

wide raven
# solar jackal 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

solar jackal
pulsar parcel
#

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

woven sluice
#

The engine has a built in feature to at least show checked out files cross-branch for perforce fwiw. I've never used it

earnest helm
#

@arctic hornet Do you know which ACL actions I need to grant for Sync Precompiled Binaries to work?

arctic hornet
#

From horde I presume?

earnest helm
#

Yes sir

arctic hornet
#

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

earnest helm
# arctic hornet I don't really remember since for ease of use (and since we're a small team) eve...
{
    "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"
            ]
        }
    ]
}
earnest helm
arctic hornet
#

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"

earnest helm
arctic hornet
#

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

earnest helm
#

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.

earnest helm
#

@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!

arctic hornet
#

No worries, glad you got it working! 🙂

earnest helm
#

Hopefully that wraps up the Horde/UGS/P4 sidequest and I can go back to actually working in Unreal haha

haughty yoke
#

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

haughty yoke
#

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

ocean anvil
haughty yoke
#

because its required to get the defualt password for this perforce server

strong sigil
#

You should use something like PuTTY to connect to droplet via SSH, then run your commands

haughty yoke
#

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

arctic hornet
#

are you marking the files for add and are you submitting the changelist?

#

and if so, what kind of error are you getting

haughty yoke
#

finally figured it out, apparently we hadnt setup streams properly

ocean anvil
haughty yoke
#

because thats what 95% of the official documentation said

woven sluice
cerulean hamlet
#

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

ocean anvil
pulsar parcel
#

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

humble field
#

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?

pulsar parcel
#

if you're using a native source build, you could just use separate build targets using CustomConfig for that

silver token
pulsar parcel
#

also that depending on how different these "builds" are

humble field
#

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

humble field
pulsar parcel
#

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

humble field
#

ok cool, that makes sense. could work well, thanks for the suggestion!

humble field
# pulsar parcel in a games context, CustomConfig is good where it's the same project, but needs ...

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

Epic Developer Community Forums

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 🙂

humble field
#

(moving this to the packaging channel)

raw lintel
#

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?

arctic hornet
#

because submodules are not linked against branch, but rather against specific commit

#

the a2c002f is short SHA ID of the commit on main branch

raw lintel
hoary wren
#

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.

small bronze
#

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 ?

dense fulcrum
#

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?