#source-control
1 messages ยท Page 5 of 1
I've spent a year and a half using p4 daily and I still don't understand a lot of it (simply because I don't deal with it).
You aren't going to learn everything in 3 days.
of course not
everything else will be 100% normal workflow, the epic way
just wanna use git to track code too...
The Epic way is to use p4 for everything, including code.
I've spent much longer with p4 and I'm not sure why you'd want to subject anyone to commiting to multiple unrelated source control systems with a number of places that things can get messed up.
doesn't seem that crazy. I'm pretty confident many AAA studios do this
Here's a question - what happens with the index file?
P4 updates are then copied to git.
Very few do.
For game code at least.
what index file?
yes
I'm not huge on git internals, but my understanding is it stores something like the expected state of the working tree
yes
which means not having it makes git think no files are committed
and it means that it changes over time
yes you need all of the .git folder yes
this is a binary file that changes over time. It isn't mergable, and stomping will lose data.
it's a tiny file
It doesn't matter
I'm not talking about file size
I'm talking about core parts of a git repo that can't be simply copied over itself
it can be copied over
with a full different .git folder
if that new .git folder is also valid
I think he's saying that the index file is likely to be unique per user because it has their own commits in it which may or may not have bene pushed.
and if the .git folder was created from the first one, they will be very similar
And so overwriting it is going to break everything.
why would it?
which may lose in-progress changes locally
the issue is not that the perforce repository will ever be wrong
the issue is that you're inviting people to break their local changes
and this is why you shouldn't do it
when someone forgets you tell them to not be an idiot next time?
that's not being an idiot
who would lose a bunch of work!?!/
wait so like
someone forgets to essentially save their work
I regularly pull in new changes through out the day with work that isn't finished.
how is that a problem?
No, they saved.
"Nobody should care about their local changes" -> end of discussion, doesn't understand source control
They didn't commit.
ohhhh
you wouldn't be pulling down the P4 git repo
you could pull down any changes for all the other assets tho
while you're working on code, you don't pull down some random other code into your unsaved changes
I need someone else' changes
sure I do
all the time
yes you can pull from git no problem
thats why we use git! lol
the coders use git
hmmm not mirroring it no
I don't care what you call it
because not the entirety of the git history is saved to p4
Me too. I've had a change list open on p4 for over a month (because of christmas break + illness) and I regularly update the p4 repo and merge in changes from other people.
you're running some script to copy the entire git repo, .git and all, over to perforce.
p4 only sees what it sees not what git sees
nope no scripts
loll wat
how often do you use git?
I actually dislike this bit of p4 but that's why task streams exist
We don't get control over that, sadly. ๐ฆ
Whatever. Someone is manually copying the git repo into perforce.
it sounds like using git for code would make ur lives easier lolll
nobody is manually copying any git repo
It absolutely wouldn't.
it's created in place
Something has to submit your git repo to perforce
It doesn't magically get uploaded out of nowhere
the git repo IS IN THE PERFORCE WORKSPACE
Yes, and that has to be committed to perforce somehow
perforce won't let you do that without syncing latest (or promising the server you have but not actually doing that).
Which would stomp on local changes.
wat
You can't upload arbitrary files to a perforce depot when those files already exist
And now we're back to "p4 sync stomping git files"
why would that happen?
you check them out BEFORE you make changes, if p4 INSISTS on overwriting any local changes on checkout
but that doesn't seem like what p4 does. in UR editor, you just have to click checkout first when saving. you don't lose your work, right?
UE*
I'm not talking about p4 checkouts
I'm gonna set it all up tonight and tomorrow and test soe things
If you want to grab the latest changes to code, you need to sync from perforce not git.
given your scheme
do you mean, if you have some local changes on some code, and you wanna sync to the depot, it will make you overwrite your local code changes first?
Yes. Or merge them with latest at least.
why couldn't you sync from git?
you are essentially checking out all files in the git repo, making arbitrary changes, and submitting them back
the perforce server is not a valid origin
You have a git repo on github or whatever.
so you need to commit, push, and then commit to perforce? man this is a lot of work just to submit files
yeah you just have to document a tiny bit more really
and it still doesn't get around the fact that you need to sync the latest version of your git repo from what's stored in perforce before it'll let you submit your updated files
like commit code to git multiple times, then commit to p4
yes, that's a given. you always start with what the p4 stream says the state is
He is suggestng that he would only update perforce occasionally, not at every git updat.e
yeaaah
I think that was just a terminology issue.
do you submit a changelist every time you save a code file?
every time I want other people to have the code, yes
yes
so thats the same thing then
no difference
with git, you PUSH when you wanna share
Honestly, why do you even need your code on perforce? Just add the compiled binaries every so often.
I'm aware of how git works
but you commit only when you wanna retain the changes and the history
could be an option really
Whatever the option you take is, it should not be one that adds .git to your p4 repo.
that runs into the issue of code/content being out of sync. Which tbh is an issue for studios anyway if they aren't building every commit.
but it would be nice to have EVERYTHING in p4 just to be able to abandon the janky workflow and stick to p4 lol
strongly disagree lol
this is a janky workflow
what are you talking about
submitting code has rarely been one of those janky workflows
I'm assuming a complete separation of coder and asset-creator. So the asset creators are always working off an "installed build".
"gamedev doesn't use std and consoles are stuck on C++17, guess I should throw everything else out"
that's not a great argument
that's not the argument
just saying that gamedev is jank
lol
though UE5 is makign it way less jank
which is why I'm interested in it
Do all consoles do c++17 these days? Any outliers still on 14 or whatever?
do the consoles all have specific compilers?
yes
ah ok
Yeah. I don't necessarily mean UE consoles ๐
so maybe the fact that p4 uses timestamps to compare files could be a problem too?>
it doesn't
cause git can have file change times changing all the time
ohh ok
nvm I thought I just heard that's how it compares files to detect changes?
listening to some YT vid in the background lol
perforce doesn't detect changes unless you reconcile offline work, which asks the server for hashed versions of files.
if it were based on timestamp then reconcile would actually work way better than it does (or at least faster)
If only clean worked way faster. ๐ฆ
ok so the local client is responsible for determining the changes
Yeah.
perforce will let you submit unchanged files if you really want
It takes longer to clean the ue5 repo than ti does to compile the engine ๐
I think this is gonna work fine
tbh I wish p4v at least warned about this
kind of annoying to pollute history this way
and if it doesn't we just delete the .git files and continue on with p4 like nothing happened
I think there is an option to only sync changed files right
If it downloaded the entire repo for a sync, you'd be in trouble.
I don't know I was listening to the UE livestream from a few years back, and they said to enable some option to only update changed files not all of them no matter what
the perforce server maintains a database of what version of each file you have. It will only send you a new version if there's a new version available.
Unless you force sync which always downloads whatever version you asked for even if you already had it.
so really, in my zany workflow, the coders should have their own stream that they use git with, and then they are done, they forward their stream up to the depot to be integrated with the main stream.
so the person in charge of code can be the one who makes sure that the code being sent up is exactly right.
ideally, the addition of git is just a tool for the coders to use, and provides no hurdles for anyone else whatsoever
at that point you might as well just use helix4git
What exactly does Helix4Git do?
Allows you to use git clients for p4
It doesn't give you a git repo, it just transposes the commands.
Something like that.
He has said he wants to "share code on github"
Shrug
So just make something that pulls from p4 and pushes to github once a day
Sounds like he wants to shoehorn his git workflow into p4 for no good reason
For now I'm still trying to use P4 for daily things. Some things it's great for. C++ dev is a terrible experience in P4 tho compared to Git. It's not about the command syntax, it's about the merge tools, and merging is definitely NOT P4's strength.
P4 just wants to copy files everywhere which is fine for binaries but tremendously limiting when it comes to C++
Not really sure what you mean by that
Perforce's merge tools are generally fine
p4merge itself is a decent if simple merge tool, but it's not even the only option
biggest problem is not being able to easily build commits on top of each other, but that's solved with a task stream
Wants to copy files everywhere?
P4 loses text merge info from what I can tell.
Say I have a file with value 'A'
I merge this into my dev branch, but here I need the value 'B'
I can merge this change into Git and then never mess with it again
In P4 the only way to get the dev changes are to merge the 'B' value in and manually fix it each time.
It's copying files with little to no attention to the previous merge operations.
Pretty sure I've had that kind of thing work perfectly fine
Me too.
sounds like you weren't integrating files across branches correctly
which is unfortunately a thing you can get wrong
perforce absolutely retains cross-branch history if you use the right operation
Perhaps I messed something up when trying this with P4.
probably wouldn't be sovled with my dumb gitp4 workflow lol
Or you weren't storing your files as "text" (as utf8 or whtaever) it has real trouble merging across encodings.
I'll give it another try.
utf16
ah yeah, p4 encoding stuff is also dumb
no?
p4 is somewhat dumb about utf
btw xist, helix4git is more about just the commands and caching stuff so the fetching/pushing workflow feels more the same as git, and is optimized for speed using that way
This is the operation you need when merging files across branches (also for the initial creation of the branch): https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_integrate.html
Thanks everyone for the discussion. It has been helpful. ๐
p4v also has an integration operation
why does this merging process sound so horrible lol
gimme dat git
yeah this has given me so much clarity. I know to be careful of my stupid plan and be ready to bail
@haughty wedge ultimately Git works great for small teams where you can ensure that no 2 people edit the same binary at the same time.
Tbh, I've never had an issue with merging with p4.
It's only for larger teams that Git loses viability.
the merge process is fine, integrate is generally the right thing to use and if you just want everything in one branch to merge to another you can specify them as source/target and be done with it. Or you can do just with limited directories/files.
LFS has locking, right? Or something like that.
LFS locking sucks
it works, but it's cross-branch and doesn't auto-unlock when you push.
Yeah I wanna learn p4 just for the challenge because I kinda might wanna make a career working with UE
which sounds stupid when I wanna jam git in it
Forget I mentioned it then! ๐
but I also love open source and git and github so sue me lol
Epic uses P4. So there is no going wrong in learning how to use it.
you should definitely be learning how to use perforce as it is expected to be used then
And it certainly doesn't have a zany git integration.
I will be using it that way too!
there is no integration of git
it's just using git to manage the code before you submit your changelist
...semantics...
Not necessarily "well"
Which is what you'd have.
but there is really no interaction with git and p4, other than p4 dumbly tracking the .git folder
picture the .git folder like one file per actor
you'll have tons of little changes
just forget about it
In my experience if you are trying to get 2 technologies (probably which are older than you) to work together and you can't find any information about it and it seems very difficult to get working, there's problem a good reason... Like they aren't designed to be used that way
pardon me
I was alive when git was invented
I remember it
I was out of high school
I added some probability to my assumption
hahaha
There are plenty of examples and premade systems to get p4 and git to work together.
Just not the way he wants.
I don't know them off hand, but our project uses one for integrating git/p4 with bidirectional commits.
yeah the problem is just a general problem of internet searches these days: finding a needle in a haystack. Lots of talk about p4, git, p4 and git, helix4git but impossible to find exactly what I'm looking for
ChatGPT didn't tell me no
That means that in a general sense people are doing it.
ChatGPT will shut you down over and over if it has no clue wtf ur talkin about lol
If ChatGPT tells you to do something
you do it
But I think helix4git is what you want...
again, just write a 2 line script to pull from perforce and push to github
or vice versa - no clue if it'd work but it would take a moment to test.
and you can set it on a p4 trigger to happen automatically (or have github trigger it for that side)
tbh that definitely probably i better hahaha
I wonder if helix4git will work with VS2022 and be invisible
if set up correctly
Commit, write commit message, push
I assume that helix4git treats commits as just saves, and when you "push" in git that is when it makes a changelist, essentially squashing all the commits
then submits to p4
then scripts get triggered, push to gh
lol
might be best
but actually I'm gonna try the other way first because it should have very little set up
helix4git is a whole wormhole
Just learn how to use p4
just use git entirely ๐
I did say just choose one or the other ยฏ_(ใ)_/ยฏ
So did I.. Like 5 hours ago
Put everything on dropbox and you're sorted.
i didnt read the full 1000 messages :p
Set up a chron job to zip up your project directory and upload it every few minutes
rsync mate
Does Dropbox do file history?
Better make it a Google doc instead then
If you put all your code in the 1 google document, you can't lose it!
google drive does revisions at least on text files lol
but only for 30 days
or less I think
but you can choose to keep them individually manually
That's it. Just merge all of your files into one, then you don't need unity builds
better than no backups i guess
no merge conflicts with no merges
one file per project
so my jank setup is local p4 -> git -> Google Drive -> Google Docs -> laser printer -> mailed to Tim Sweeney -> ??? -> Profit
echo CON > yourgame.exe
anybody know where and when I have to set the option for atomic checkouts?
The option to enforce atomic checkouts in Helix Core is typically located in the server's administration settings. Specifically, it can be found in the Perforce Server Configuration settings. To access the server configuration settings, you will need to log in to the Helix Core server as an administrator and navigate to the "Admin" menu. From there, you should be able to find the "Server Configuration" option, where you can access the settings related to atomic checkouts.
Once you are in the Server Configuration, look for the "atomic-checkouts" option. You can set it to "all" to enforce atomic checkouts on all files and folders, or you can set it to "none" to disable atomic checkouts. If you want to enforce atomic checkouts on specific folders, you can set the option to "paths" and specify the folders you want to enforce atomic checkouts on.
You can also check perforce documentation on how to configure this option.
is that true?
lolll
I can't find anything about that option in p4 docs
๐
I apologize for the confusion, I made a mistake in my previous response. Atomic checkouts is not a built-in feature in Helix Core (formerly known as Perforce). However, you can still achieve similar behavior by creating a script or program that will enforce atomic checkouts by checking out/checking in all files within a folder at the same time. This could be achieved through using the command line interface (CLI) of Helix Core and scripting it to check out all files within a folder. It could also be achieved through using a plugin or extension to the Helix Core client that adds this functionality.
haha yeah so without the ability to enforce the checkout of the entire repo this is no bueno
I guess we could say "Hey coders remember to checkout the whole folder" lol
that is how I will start lol
What do these errors mean and should I be worried?
Hey there, quick question about Perforce:
When my artist add some new meshes in the level and then Submit these changes, I get an exclamation mark on the level asset that told me that the level is not at its latest revision, so I sync it, but when I open it, I don't see the new meshes (I need to press the "Get Latest" button on P4V). So If I just sync the level without "Get Latest", I'm able to check out this level an erase all the changes my artist made.
How can I prevent that?
I suspect either your artist didn't submit the new meshes (just the level), or you only synced the level rather than the entire workspace?
Check your log for warnings about missing assets.
Yes I only synced the level
Do I need to sync the entire project every time my artist change the level ?
You should usually sync the whole project as sometimes one asset change depends on others
Ok, thank you.
Do I need to sync via Unreal? Or can I do it via Perforce with the "Get Latest" button (and do I need to close Unreal before)?
This is about *nix to windows line endings. There's an option in git to ignore line ending changes. Forget exactly where. Google it!
Either is fine. Usually best to close Unreal.
Got it, thank you for all your answers
is it possible to "clone" an svn project from a remote URL in unreal directly without a svn client?
Oh alright. Thanks!
if you have to checkout the whole folder, you're probably doing something wrong. checkout only the files you edit
What is this chatgpt your always going on about?
It's an ai that responds to text based prompts.
Oh
Sounds like something lazy people would use instead of either knowing or doing thier own research.
Basically.
Lots of people seem to use it to be like, "how do I code this?"
And expect it to give good advice.
Or even actual source code (it does this)
Not that it will always compile or work as intended. If ever.
Mmm, reliable automated system, without human oversite and correction? Sounds dubious at best
yeah actually on sleeping on it, the whole folder does not need to be checked out. Only two things need to be enforced by the coding dept:
- The p4 server typemap needs to treat the .git folder as always writable
- Only coders who have git installed should edit code, but it would be okay for other people to make quick changes without git. The .git folder would in that case track the difference between the tracked repo state and those ad-hoc changes made in p4 only.
all in all I think this will work with exactly a stock p4 workflow. There is just a bit of added work for added benefit on the part of coders. It would be as easy as deleting .git folder to scrap all use of git and continue on with p4 alone
๐ซฃ
hi, has anyone ever received this error on perforce? the person i'm deving with gets this error after getting the latest changes to code i submitted.
They need to close Unreal Editor before trying to update ๐
ok we'll try this. thnx!
does anyone have experience migrating perforce to another server? we are trying to migrate from ec2 to a self hosted docker container. i moved over everything from the ec2 root and broke out the journal and depots since they have different folders in docker. i also tried keeping everything in the root (like it was from ec2) but it still doesnt start. docker logs reports this p4dctl error: Configuration for 'master' p4d is missing required parameter P4PORT. Started 0 services.
the container worked perfectly fine before we attempted the migration and the master.conf file was not touched
I've moved p4d before, didn't have any issues once everything was configured
verify the value of P4PORT in your config file.
if you had it bound to a specific IP on the old VM make sure you've updated it to the new one.
Would it be in master.conf? The new file in docker doesn't have it and my local perforce (also docker) doesn't have it either and it works fine
Did you follow the procedure in the docs? Basically, make a checkpoint, copy depot files, restore checkpoint?
nup and our ec2 instance is gone
hmm i see a checkpoint file, i hope its recent
i can see on the perforce site that it says Be absolutely sure you are erasing new db.* files and not production db.* files., how do i know which is which?
that worked. tysm!
@mighty light I don't think you can reliably move a p4 instance by copying the metadata (db.) files directly. There should be no db.* files present , so move them to a temp location first. then try and restore from whatever checkpoint and journal file you have.
This guide should help you: https://www.perforce.com/manuals/p4sag/Content/P4SAG/backup.recovery.database_corruption.html
Dang I vanish for one day and there's like three epic length novels about determining the best way to design the worst vcs setup ever wtf
Is that really a convo you want to be part of? ๐
I live for these memes... Stupid dishwasher had to die...
.git repo inside my p4 depot is working splendidly so far. Just set the entire contents of the /Source dir as always writable, including the /.git dir
+w //.../Source/...
default workspace settings prevent overwriting the files accidentally. noclobber!
So now you're making coders always run reconcile offline work on their source folder before submitting to p4? Keep going my man, don't let your memes be dreams
This is an option, though I've never tried using it... Might be command line only
I think the only time I've ever used the command line was when setting up ci lol
Hey, so I've setup a perforce server and added a project. The project is using the architect starting assets. However, it looks like the project wants to import the starting content everytime the project starts up, and because I've added these into perforce they are read only and I get an error. So, should I perhaps not add starting content to perforce? Edit: I found the reason, defaultgame.ini has an option to always load the startercontent. So, disabled this and all is well.
Coders should always reconcile files anyway right? Otherwise how are they sure they didn't miss something?
That being the case, then why force the extra work on them of checking out every single file before they can work on it?
It's messed up and completely backwards for a developer.
Locking only makes sense IMO for artists who cannot merge their work with other artists.
In a world where merging is possible, locking is nonsensical.
I'm having a problem in which my plugins folder doesn't seem to properly push into my git repo. Would anyone happen to know why? Also, the plugins folder is still in the repo, but certain files just aren't there, such as the win64 folder in certain plugins. And this is for ue5.0.3
Git doesn't like storing generated binary files such as the win64 folder
Probably your .gitignore is causing those to be ignored
(which would be correct for a Git repo)
You can store generated exes, but it will bloat your git repo like crazy, so it's generally not recommended to store them in Git.
I guess if you're coding in notepad? Auto checkout in any ide is fine...
So your suggestion is to disable perforce from behaving like perforce, which is more valuable than just stopping it from write locking source files why?
You just don't want to ever reconcile?
Same for any other major auth tools
That seems like a required step whether you're checking files out or not.
reconciling is a safety catch you can do if you have any suspicion you might not have been checking things out
I do reconcile fairly often but it's not the everything
It's also a way to make sure that nothing else you've been doing has modified any files anywhere
Even if you've been perfect about checking out every single file
That doesn't mean there are no other modified files
Agree if you're doing large long multi-faceted work although it's still just a personal safety catch
And what would make those modifications? If you're only using perforce-aware tools then the possibility for this is quite slim.
And even if you do manage to forget something, it may get caught in code review if you do that, or in a verification build from a shelf. Or, at worst, you break the build and find the files later.
Running reconcile on your whole workspace is (unfortunately) untenable for large projects. But also not necessary.
True that in a project containing an Engine, reconcile is a pain.
My p4 project contains only my game source and reconcile runs in a couple of seconds. (Lyra project, ~ 10k files)
I know that Epic recommends keeping the engine and your project together in the same stream.
I'm guessing that has more to do with trying to make it easier on artists.
Epic does a lot of things that are insanely wrong from a dev perspective, for the benefit of artists.
Thanks, I suspected that might be the case. It looks like that worked
@merry verge I just ran reconcile on my Engine depot (almost 300k files), it took 22 seconds. Definitely not a fun way to spend 22 seconds, agreed. For the most part though I think very few people on my project will actually need to edit the engine, so they can just pull it down when updates are made, and work in the project-specific depot which reconciles in 1-2 seconds max.
Right.
I've had a code-only project take 5-10 minutes to reconcile in bad circumstances.
Well I guess if/when it gets to the point that I have enough people on the project that the P4 server is slowing down then this will be an issue.
Yes. And it's why reconcile is primarily a safety mechanism. I wish perforce would fix its slowness but we're stuck with it for now.
Previously I tried using Epic's typemaps from the UDN P4 but they don't seem to actually work for a working repository.
Their UDN typemaps seem to work fine for them pushing updates out, but as soon as I try to check their stuff into my own depot using the same typemap, there are tons of permissions problems etc.
Setting +w on all text files fixed it.
I guess I could do some more research and rather than +w all text files, only +w the files that actually get changed during build, but those are spread out everywhere and different per plugin, platform, etc.
It's a crazy mess.
There are even tons of source files that get modified during build... ๐คฃ
Source files modified during build, what?
Are you version controlling temp files?
Setting +w on all files is an instant red flag that you've screwed up somewhere
It breaks everything
I should admit I don't have a source build in perforce so maybe I'm ignorant of some common known thing
is there a way I can gitignore all files that contain BuildData?
or whatever it's called
Have you looked around for sample ignore files? E.g. https://github.com/github/gitignore/blob/main/UnrealEngine.gitignore
Can reconcile not be done on only the source folder? I've been doing that. Does it also reconcile all other files in the workspace? Doesn't seem to.
It can be done on specific folders.
so what is the problem then?
When you are working with a massive set of projects in a single depot with lots of changes across them it doesn't matter.
is it still slow to do just the source folder when the project becomes huge?
Reconcile must hash every relevant file and request the hash of every file from the perforce server.
but for just the source folder this seems entirely reasonable
It's not when you have a massive project.
how massive are we talking?
because source is text it's never going to be unmanageable like binary assets
It's not about file size as much as file count.
I'm using the lyra sample project as a test
It's also completely and utterly unnecessary if you're using tools that are perforce-aware. It's only when you screw things up that it should be necessary.
Lyra is not a big project.
sure
VS can be perforce aware
but I want it to be git aware, because git is a tool for coders
p4 is not really good at working wit hcode
and when you want to do lots of branches and try things out, I can't see p4 being good for that
It's perfectly fine and while git is better you're immediately jumping to wacky workflows without even seeing what a normal one would look like.
it's not wacky at all!
Except it is
because we use the reconcile feature on just the source folder?
Why would you want to add additional hoops to jump through to submit code
there are not really any additional hoops to jump thgouth
It's a starter project. ๐ฏ
ok but it's not like I'm trying with 4 files in 2 folders lol
Ok, but my responses about reconcile have nothing to do with a project of that size
let me drop in some huge amount of source files brb
And you're likely on an underutilized perforce server.
I'm talking about AAA.
Not someone's pet project.
I'm not suggesting this as a AAA workflow lmao
I've been working with 300k+ files in engine projects. At that size with a perfectly responsive P4 server it's still annoying.
they have helix4git and all sorts of fancy things that IT can set up
My responses about reconciling have nothing to do with your weird workflow though.
It's not show-stopper annoying, but it's annoying.
I was responding to Xist and you've taken it to mean something about your git setup.
With a slow P4 server I understand it could get to show-stopper status.
It's not a show stopper by any means (well, a slow enough server would make it so) but it's not something you want in a normal workflow for a AAA-sized depot.
It's a tool, just not one that should be used regularly if you can help it.
Do you have (or know of any) P4 typemap that actually works with an engine depot?
Obviously there are situations that require it.
I don't personally manage any depots that mirror Epic's so I don't have much to offer here.
I'll keep working at it.
The build process modifying checked-in files is definitely odd though
Sounds like some stuff is checked in that shouldn't be
Yeah it seems like there are 100s of projects all following different rules that all got merged together.
An easy way to avoid having to reconcile would be to have some scripts set up with p4vs. When a file is autochecked out, also check out the .git folder. Then, the coders just have to use git in the command line or outside of visual studio which is slightly annoying but probably less annoying that reconcile times in the hours
or tell the coders to take the one extra step of checking out .git themselves
or learn to use perforce the way it is intended before trying to shoehorn in other workflows
I love how your only solution is for coders to abandon the tool they rely on most
lightweight branching exists in perforce
like do you have any idea what suggesting that is like to a coder?
I am a "coder"
especially if you're asking them to volunteer their time?
a "coder" ok
what about a git user lmao
I've used git for quite a long time too.
My annoyance comes from you being unwilling to learn the basics of a tool before trying to pass judgement on it.
apparently not
see you just have this weird attitude
I don't think perforce is the be-all and end-all of source control. I prefer git workflows for pure-code stuff myself.
you're stuck in "I do it this way no other way"
so weird
when is the time to experiment with workflows?
after you start a projectr?
LMAO
You haven't even tried ones that exist though
And what's the problem with that such that you want to use git for code?
And what's the problem with the solution perforce themselves provide?
to allow ppl who use git to use it
and to more easily manage code branches in p4 lol
they have no solution to github
teamhub is like not free and for private teams right?
Have you already looked at helix4git?
yes I have
Like I've mentioned multiple times?
the problem with helix4git is you now have a bunch of irreverisble shit on your p4 server
perforce supports lightweight task branches akin to git's.
and then you really are just mirroring shit
yeah I hear so much about them and how great they are
๐คฃ
Not many people use them with games because keeping code and content in sync tends to be more important than lightweight branching.
yes exactly
that is EXACTLY the point
of using git OUTSIDE of p4
but track it with p4 too
so that the branching doesn't mess with p4
If you're only modifying code in a task branch it's the same as only modifying code in git
"can't use git" isn't a problem if everyone on your team is already using perforce
and you haven't described what the problem with "mirroring" things to github is.
so you can only attract talent that already knows p4?
sound sinsane
very very insane
Wanting talent that's unwilling to learn a new tool seems worse.
wanting to onboard ppl quickly, and also have outside contribution in the form of open source is not insane
Again, I've already mentioned a solution to github but you haven't actually said what the problem with my solution is.
there is a reason that Perforce the company is the only ppl who suggest moving from git to p4 is a good idea. Most ppl think the other way. (for code)
wat is the solution to github?
I told you the huge problem with that
no, you didn't
the problem is that it's a mssively custom configuration of the p4 server
it's not a common setup
how is it massively custom
and then the two are kind of inseparable
massively custom because you have to have a graph stream
i mean i guess it's supported obviously
...and?
it would be a lot of extra work
you're telling me what I'm doing is extra work
it's not
what you're suggesting is!
LOL
What extra work is there for this
making a new stream is not extra work. It's akin to making a new branch.
You need to be doing that to push changes from p4 to github and vice versa in your setup anyway
it's meant for using git AND p4 for code
like say one team uses p4 and won't change
Virtual streams and workspace views allow mixing stream types.
the other team uses git and won't change
that's when you want helix4git
but if the whole code team just uses git
then no need for helix4git
But that's no different from either not having code in perforce in the first place, or by having a virtual stream map the graph depot into a local workspace for you.
lol "its not different"
you're suggesting extra steps
not me
my setup is setting up p4 exactly as epic tells you to
with ONE addition to a typemap file
that's ti!!
Except it isn't, because it doesn't magically push to github for you.
Or pull changes from there.
LOOLLLL
how can you possibly manage coding in a complex project if you're sooo worried about pushing to git?
you don't need to push to git
that's the beauty of this idea
you can just push to p4 and whatever you push is in p4
You're the one who said you cared about having everything on github.
and the .git folder will tell you how different that is to the real git repo
yes
everything can be on github too
So something must be pushing the data from perforce to github.
No, tell me - how are you going from the git repo in perforce to github.
it's coming from the workspace
So someone is pushing to github themselves when they commit
yes
and submitting to perforce
how is that hard!/
OMFG
NO HOW COUDL THEY MANAGE THEAT!?
tha'ts too much work for someone who manages complex code
then how is the git repo getting updated in perforce
it doesn't
you only submit what you want to submit
the git repo is like the code team's internal tracking of the codebase
p4 is the "official" tracking of the whole project
Ok, so you need to push to github and then also submit to perforce
it's two operations
if you want
you don't have to push to github tho
like for testing
you know?
I'm not asking about that, I'm asking about submitting code to both repositories.
sounds very error prone and easy to get the 2 out of sync....
the two are not meant to be "in sync"
It's an extra step. No, it's not too complicated if you know what you're doing but it's easy to forget one side or the other.
Versus one step - simply pushing to a helix4git repo.
Which is automatically mapped with built in tools to everyone's perforce workspace.
There's no scripts there.
it's scripts that fire for sure
Not for what I just described.
I read the docs last night lemme check again
From my understanding a single workspace can contain a view that references both a graph and normal stream depot
The graph part of the view will be read-only on the perforce side of things, but that doesn't matter since you're only using git to push changes to it.
//MyProjectCode/main/... C:/MyProject/Source/...
//MyProjectData/main/... C:/MyProject/...
I don't know the specific path syntax around graph depots but I'm assuming you can do something like this
You certainly can for every other type of depot in perforce.
This isn't some weird script running
I will test that out at some point but from what I see, there is little benefit to "tying the two together" like that
keep in mind, my point of view is a small indie team
working on possibly open source code
enterprise studios can afford to just get perforce support to take care of it
The benefit is you cut out a step that doesn't need to exist.
I agree with the cost issue - though that's an unfortunate reality of perforce in general and it might be worth looking elsewhere if that's going to be a sticking point.
Again, it's about slowness of the target server as well
it's about simplicity too
At AAA scale it's a problem
I want to be able to say "you know what, let's just go p4!"
if we have helix4git integarated, that's a headache
This is simple though. It's a built in feature.
if we just tracked our .git folders, we just stop tracking them and now we're only using p4
it adds complexity to the p4 server itself
Not any more than managing the perforce server in the first place.
You clone from git the same way you've always done, it's just that the origin happens to be a perforce server.
Administering the perforce server doesn't change, it's there either way.
The only extra work here is adding a virtual stream so that people don't have to configure the workspace mapping themselves. And that's a few lines in a text file (basically what I posted earlier)
virtual stream mappings is a pretty common thing to do regardless
you can't say for sure that admining the p4 server doesn't become more complex
You can't say for sure it does
it must get more complex
it is more complex
same as the first one
I have tons of depots on my personal perforce server, I've never had a problem with a specific depot that wasn't an issue with the server itself.
it's not just another depot
There's complexity in administering perforce itself. Not in administering lots of depots.
"I don't want to have to make new git users learn perforce, I want to make them learn perforce and learn how to deal with this custom abomination system I made that nobody else in the world does"
the more complexity added, the more likelihood of increased admin requirements
wow
you guys are so nice
thanks so much
My dude, your attitude hasn't been any better.
right
despite the fact that many ppl are looking to use git instead of p4 for code
you're insulting me
"I've been learning perforce for like three days, I'm an expert"
Yes I am
Because you need to hear it
bye
I'm not going to defend HoJo over what he's saying, but you've been about as sarcastic to me as he's being to you.
I haven't insulted you once.
I've questioned why you're doing this.
If you don't want to engage about it then... don't bring it up?
It's not great to keep switching back and forth between arguments.. One day it's "I'm doing this because I want to share the code automatically on github" and the next day it's "I'm doing this because I want to onboard git users faster" and the next day it's something else and each reason has other better solutions...
In the end I feel like most of this is coming from someone who hasn't spent some time to actually learn perforce's featureset. Knowing how to setup a server is one thing, but understanding the features beyond what you see at a glance is another. That's not exclusive to perforce, that's true of any complex piece of software.
Not knowing about some core features of perforce (mapping depots into workspaces, for one) is a sign that you have not done enough with it yet to be passing judgement. And yet you want to act superior to everyone else. At a minimum you've implied that I have no experience in git or software engineering and sarcastically insulted my knowledge because I was trying to clarify the workflow you were describing.
Sorry siliex feels like I scared them off or maybe ๐ง

They apparently don't want to engage on alternatives to what they want to do so it doesn't really matter.
FYI I've stashed my previous work on +w to all text files.
Going to try to limit the +w to only build- or automation-related files.
It will just require some trial and error since there doesn't seem to be any publicly available documentation to that end.
Would be interesting to see what files exactly are causing the issue
is this an engine from github or from epic's perforce?
Off the top of my head, log files, json, xml
In various binaries/build/source dirs
Yeah that sounds like stuff that shouldn't be checked in at all
It's from Epic's UDN P4
I tried copying their typemap but it doesn't allow me to do anything but mirror their code. I can't import and then work with the files given their typemap.
I'm jumping in late, forgive me if you've already covered this, but just wanted to point out a typemap only affects new files. You would need to manually change those properties on files that already exist
Was just about to mention that ๐
well, you can use p4 edit ... -t auto to update everything
Understood. I have a 3-command Powershell that will do all the file updating once I change the typemap. It takes hours to run tho for 300k+ files.
I can imagine
idk when that option was added but I used to be under the same impression as you until a year ago. Updating the typemap used to be horrible.
Now if only that option existed in p4v
Yeah, i'm no expert on P4 and have a few bad habits/workflows that stem from UE3 days when some of the integrations were a lot worse
so theres lots i learn from browsing this chat
I'm brand new to P4. I keep trying to fit it into Git-sized holes.
Sometimes it works better than others.
๐
Yup, it's a whole different beast eh
Yeah, like I (and now siliex) sort of began to say... sounds like you aren't ignoring the right stuff, +w is a hack nobody wants to use
It seems +w is only really bad when you have overloaded P4 servers.
In my case it worked great. It made P4 act much more like Git.
But I can see where if you have a bunch of people on a single P4 server and they're all sucking bandwidth, it could take a real long time and be a pain.
Ultimately I'm still trying to learn the best way to work with P4 since conceptually it's quite different than Git.
Well... it's problematic for assets
Can't force people to lock assets if they can write them all the time
Right, I was only doing +w on text (mergeable) files.
It completely breaks your workflow down into something horrible, even on text
+w is fine for code I guess. Personally I'd say it's best to get used to checking out files (esp. since most relevant tools have some degree of perforce support).
In git, git itself finds the modified files. In perforce, your tools "find" the modified files (by telling the server as you're working on them). +w workflow is farther from git
Figure out if you have temp build files in your source control and remove them rather than +w them
From a workflow perspective +w is kind of closer... reconcile would be akin to git add, submit is akin to git push. I'd start by trying to work the "perforce way" though.
And yeah, the main thing here is to figure out why files that shouldn't be in source control at all are there in the first place.
And don't +w anything else until you're fairly experienced with p4
Sounds like this might be a case of having built the engine, then submitting everything. Would be better to get a fresh copy of engine source, submit that, then build.
I did a p4 clean on my UDN stream
I'm committing that with zero changes as a mainline stream
Then I'll make a dev stream off that and try to see if I can actually work in it
Just so you know, release and dev streams make a whole copy of the files on the server... Yeah, it's
x 1000... I think task streams don't?
Ye
task streams are the lightweight ones
but task streams are meant for small bits of work, not long term development
I have read-only access to UDN, so I have to commit this to my own local P4 server, which I think requires making it a mainline stream locally. Is that not correct?
Basically I'm mirroring the UDN stream into my local depot.
Will keep that in mind during dev, thanks for the tip. ๐
this is fine
remembering the time our server had a 50 gb drive and I tried making a dev stream of our 30 gb project 
Cherry pick. That's a good reason to keep the commits small and targeted, so it's a lot easier to cherry pick only changes you want rather than multiple things squished together in a single commit.
So after trying multiple times to import 759k items from UDN //UE5/Release-5.1 and having p4 freeze up in the middle somewhere, I broke that changelist up into 30k file chunks and am now successfully able to submit them incrementally.
Hi folks,
Does anyone have any experience with Assembla.
Is there other companies servicing Perforce cloud solution? I am looking for a scalable turnkey solution.
I think I finally figured out the appropriate Typemap & .p4ignore for a UDN mirror without having to -w stuff.
Thanks for your help everyone. ๐
For future reference I documented the settings here:
https://github.com/XistGG/Perforce-Setup
Very nice. I'll probably use this every time I forget what type map I need to use
No other off the shelf solutions exist. I worked with a company that used Assembla several years back and it seemed fine. Assembla seems like a good option tbh.
im having trouble with perforce, and have always had trouble with it when first starting a server, whenever i launch the helix core server exe file, the application launches as a white window then closes after a second or two, i managed to fix the issue in the past but I cannot remember how i fixed it, and my notes on perforce only give me tips after the server is installed, any help would be greatly appreciated!
Great to hear, Thank you @cyan jay
Hi, I have a problem with subversion.
We've updated our project (connected to an SVN) to 5.1 and now every time we are opening the project, Starter Content gets loaded into the project during startup and every file from it gets "Checking file(s) source control status"-ed and it prolongs loading times drastically and makes commiting changes much more annoying because every time we have to revert Starter Content Stuff, and every time we want to commit something, we have to either revert starter content or manually pick what we want to commit from hundreds of files. Adding StarterContent to ignore list doesn't fix the issue. Does anyone have any clue what to do?
Problem identical as this:
https://forums.unrealengine.com/t/subversion-source-control-checking-and-updating-through-all-starter-content-on-launch/727024
When launching the editor on a CPP project with source control enabled and connected to a subversion server, the editor iterates through all of the starter content attempting the following: LogSourceControl: Attempting "svn status --show-updates --verbose --xml "PATH-TO-FILE" --non-interactive --trust-server-cert --username NAME --password ****...
Does anyone know any decent online equivalents to GitHub/GitLab that I can use for an Unreal project? I want to use SVN as opposed to Git, as Git is giving me issues with commits (HTTP buffer not large enough etc.) and one of my friends who wants to help is a non-programmer and only familiar with SVN.
Currently I'm looking at either putting some of my old computer parts to use and building a physical server here at home. I'd rather use an online service though, looks like I may need to rent a server?
My professional life has always used servers within the company, and personal projects have always just been pushed up to GitLab. So I'm a bit stumped when it comes to Tortoise SVN.
did you use git config http.version HTTP/1.1
also were you using LFS?
I'm not aware of any online SVN hosts for free like gh/gl
LFS yes, but I've not switched the HTTP version, that's interesting! I'll give that a go and see if it fixes the git side of things, might just have to rent/build a server going forward though, thanks.
Can also commit to Git via SSH.
Don't need to use HTTP/s
PSA for Perforce users:
After days of P4 trial by fire, I've learned something very important for the typemap that doesn't seem to be documented anywhere...
ORDER of typemap must be from least-specific to most-specific.
Example (DOES NOT WORK):
text+w //.../Binaries/....json
text //....json
The above would seem to suggest that all .json files are text, except for those inside a Binaries folder. However this DOES NOT WORK.
Apparently the //....json version at the end completely nullifies everything that has come before it!
The correct way: (this works as expected)
text //....json
text+w //.../Binaries/....json
You have to put the least specific variant first, and THEN put the specific variant afterwards.
I'll update my dev notes with this info but wanted to post it here too in case it helps anyone.
Does anyone have any suggestions on how to work with git? Specifically, how to avoid merge conflicts when working with the same map
Binary assets (like map) are impossible to merge. Nothing can merge them. Not Git, not anything.
The only way to work with binary assets is to ensure that only 1 person changes them at a time.
There can only ever be 1 version of a binary file. There cannot be multiples that you merge together.
Thus with Git or with anything else, you have to decide which version of the binary file you want to keep. Keep that one and discard the other.
i wouldnt recommend using SSH if you're using LFS. LFS only works well with HTTPS, using SSH will cause slowdowns
use LFS locking in the unreal editor and status branches
use OFPA and world partition 5.0/5.1 to reduce the amount of contention/breakage with parallel map work
if you're on 4.27, you can split levels into sub levels by discipline and area, even if you're not using level streaming
Thanks for the tip. I've used Git LFS with SSH successfully, but only with small files. Still learning about GameDev sized files. ๐
how you guys deploy you multiplayer project during for tester, I mean I need a way to sync the binary build simply something like Steam
instead of Uploading and Downloading every time
Sounds more like an #automation thing. I'd guess this is part of the CI/CD pipeline
hi, anyone ever run into this problem?
looks like you are out of disk space
ok thnx
I was pulling content to Unreal with Github, but it wouldn't let me until I exited Unreal. Why is that?
im assuming by pulling content to Unreal with Github you mean you are pulling changes from somewhere to your local working directory. if so, the problem is likely that you are pulling binaries that are in use (eg editor binaries). these binaries typically shouldnt be submitted to source control unless you are using something like UGS, in which case they are usually submitted to a separate repo
What do you mean by binary?
typically .dll and .exe files
Oh alright. Thanks!
how can i change my default git username?
In Unreal 5.1 with plastic there are these new changelist features. I noticed that (1) changelist don't contain deleted folders, (2) submitting those changelists doesn't work if I removed assets within a folder that I also deleted, and (3) using the older submit content window I can't select which changes I want to submit anymore (I can only submit all changes).
hello, I am wondering if my local engine code is corrupt, in SceneComponent.cpp line 2606 has an empty function to get sockets QuerySupportedSockets is missing code from what i can tell
- The chance of a random file corruption blanking the contents of a function are extremely close to 0
- It's a virtual function so it's designed to be overridden by derived components
ah, i thought sockets would have been common, but i guess not
search the codebase for ::QuerySupportedSockets and see for yourself ๐
An easy way is with the git GUI. Open or create a new repository. Then go to Edit->Options and you can set your username and other settings for just the repo you have open, or globally for all repos.
I've been trying to get info on Perforce licensing for education. A few lost emails and a few "I can't help you but I'll try to find who can". This is the first time in the Unreal ecosystem that I've worked with anyone who wasn't completely helpful and attentive. I'm a bit surprised.
If you mean for gamedev students to learn p4 workflows, you could have each student setup a free 5 user/5 workspace server on their local machine. No need to contact anybody.
I have a question about p4 tho. I'm testing perforce server backup and recovery procedures today. The docs say that the checkpoint file must be as old or older than the versioned files. It says the versioned files must be backed up after the checkpoint is created. But, if the versioned files haven't been altered since the checkpoint creation, won't they be as old as they were in their modified date? Or does it only look at the date the file was copied? Is that reliably set in the filesystem?????????
I successfully recovered and restored perforce backups in the exact situation you are right now so dont worry ๐
Not worried, I'm testing this on a fake test server with unimportant data. Just curious as to how we ensure the versioned files are all somehow newer than the checkpoint?
That's the neat part: you don't
Yeah I guess it just means (duh!) that you bette have a recent backup of the versioned files or else your checkpoint is useless lol
do all perforce users need to set up p4 typemap? or just one?
just the server admin for the whole server. The .p4ignore is per user/workspace (I think it's per workspace but I forget might be per user)
ok thnx! .p4ignore is per workspace.
how do u rotate unstructured logs in perforce?
hey all, I did a thing: https://oakenfold.gumroad.com/l/tvror
WelcomeIf you want to collaborate effectively with others on a team, this book is for you. The concepts and workflows presented here can be learned in an afternoon. Until it becomes second nature, I recommend keeping this book handy as a reference when performing day-to-day tasks.This book also targets users developing content in Unreal Engine b...
^ local server setup. hosting a server on AWS or Digital Ocean is beyond the scope of the book but if enough people are interested, I can add it
Please doooo it, thereโs plenty of interest in setting up hosted perforce servers and lack of step by steps!!
There is actually quite a few guides about how to set up perforce servers. Not sure where you have been looking
Or haven't been I guess
@limpid obsidian @tardy parrot ^^^ this source goes step by step. it was suggested in one of Epic's youtube videos. all i ever need is part 1 of the blog. i think the others have to do with extra steps for source build of the engine.
Please don't use that guide, it's wrong in several important ways. Best approach is to follow the official perforce server administration guide.
Strongly recommend Linux package install on a vm over Windows.
https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.install.html
May u explain how that source is wrong? Iโve used it multiple times and worked fine every time.
Mainly the section on installing the server. It's out of date. Using the package install in the SAG is more straightforward, sets up best practices for backups, permissions,etc, and allows updating via package update.
The rest of the guide is good.
Yeah that part gave me trouble too. Once I figured out I had to use the link provided to know the latest Linux version to put in the command I just had to follow rest of instructions exactly as is. Not sure what an SAG is.
Server Administration Guide I linked above. The official docs basically.
Ah ok. Iโll take a looksies. Thnx.
Yeah the main issue with Allard's guide is they don't leverage apt repository, so it makes updating perforce troublesome
Hi!
What's the best Versioning tool for UE4? Excluding SVN, since it breaks too often and fucks up so even Clean-up doesn't work?
Yeah, that's a pretty old doc. I read it back in the day. My setup uses the latest SDP framework. https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/doc/SDP_Guide.Unix.html
I've got it down to a ~1 hour setup process, step-by-step
Small team? Git. Big team? Perforce.
Small Team, Just me ๐
Definitely Git.
ok. Thank you ๐
Iโve yet to find a good tutorial on setting up an AWS server. Plenty on local p4v and helix core on YT, even perforce U learning portal still has โcoming soonโ for a video step by step for virtual production teams.
Thanks for the link
Can you give a rundown on why Linux is better than Windows? I'm thinking of biting the bullet and putting p4 on my ubuntu box, but am unsure of the pros and cons. The line ending issue leads me towards windows because I will be doing most my dev on windows. Any tips or thoughts?
Linux is easier with the whole package install thing. I found Windows more difficult to setup regarding user level security etc too.
I always run Linux server nowadays with case sensitivity off.
Thank you
Hi, I am using perforce for game development, but I want to development a plugin, I used to have submodules in git, is it possible to do something similar with perforce?
@haughty wedge linux is cheaper and easier to maintain. lots of command line utils, bash, etc
morning all, i know ive been spaming this a bit lately but im getting pretty desperate, got 4 people available to work on a project but cant find the info i we need anywhere
Hey guys, Iโm looking to setup a Unreal UGS server for game sync on ubuntu or some form of Linux distro based server. The idea here is to host a public UGS server so people can check in and out like a SVN setup to work on one project. I have looked over the Windows setup and created a test server which works ok, but I am struggling to find any documentation on how I would go about setting up a public server host so client can access the Unreal project remotely on a VPS under a Linux install. Any guidance would be great
Why does the Starter Content keep showing up on the list when I submit content, despite not touching any of it? Is that a normal thing?
There was a discussion yesterday, but basically, rent a Linux VM, install perforce via package as per the official Server Admin Guide in the linked msg.
Once that's working, setup a workspace, the typemap etc for Unreal.
I saw UGS and assumed you implied perforce, but now I think you're not sure what solution. UGS is Epic build distribution tool that requires perforce. Perforce is the source control method like SVN, so a prerequisite of setting up UGS is to host your project on perforce. Perforce is free for upto 5 users.
thanks very much for the reply. so just to make sure we are on the same page. i've set a link with a friend via Hamanchi so we could multi user on a project on my PC, this is obviously not optimal as i cant do anything while he is not there because any changes wont be theen when he logs back in
so we have now got an Oracle linux server for webhosting, but was hoping there would be some way to host UE5 on the oracle server and we both log into it as and when, so all changes are saved to the Oracle server
Yeah that's not really a good workflow. Sorry you have some learning ahead of you!
Essentially you need a single source of truth for the project. E.g. a source control server.
You both have copies of the project on your local machines, and when you make a change you upload the changes to the server, and your colleague downloads the latest from the server, etc.
this sounds to me like we are talking down the same road. so would this bee possible to do with an Oracle server (linux) i am currently renting?
Depends on the spec of the server, but yeah perforce can run on most servers.
Does it support ARM Ampere? โ was thinking 4 cores 8 GB 500GB ram and a public IP?
Thinking on using the oracle cloud free tier for starters
I don't know tbh, you'll have to check the perforce site. I've only ever used it on x86
Looks like they only support x86/x64 nowadays
cheers, i was looking but i couldnt find anything that specified more than a CPU with AES supp. thanks
hi guys in new to source control and i was about to commit to my repo and bam i get this error
It looks like you just need to add the files.
You can git add --all to add all files in the directory.
then you need to git commit -m "Your commit message here"
Definitely read up on Git, and look into getting a GUI tool for it.
GitKraken is good, for example.
FYI for anyone interested in Perforce, I created 2 example .p4ignore to help get you started.
My example .p4ignore is for a C++ source-only UE5 project depot. (Similar to what you would set up in Git; all generated binaries are ignored).
My example engine.p4ignore is for a custom UE5 Engine source depot.
Both require the shared typemap, also listed there.
Complete instructions for setting up a custom UE5 Engine source depot:
https://x157.github.io/Perforce/How-to-Create-Engine-Source-Depot
I installed discord on a new client and all the popup messages just came up normally I just disable them immediately but I saw you helping someone with perforce setup
You sir, are an angel, thank you for helping others.
That is all.
Seriously anyone who helps others setting up perforce is a good soul
How are we diffing our blueprints @ a code review level is this a thing? I'm used to working on 100% text based code files...
You can visually diff through the editor
Or there's a diff commandlet you can setup, but I haven't used it
It is a complete pain. No systems development should ever be done in Blueprints.
To support artists and non-dev game designers, you need to be inside the editor, where if you have it connected to source control (either P4 or Git), you can diff an asset with a previous version from source control.
This gives you a visual (minimally functional) way to see what has changed from your chosen previous version to the one you now have loaded up in the editor.
has anyone gotten this error when trying to start UE5 new project for the first time?
I Installed all the SDK's and .Nets from VS Installer for 2019 as well.
Running D:/Program Files/Epic Games/UE_5.1/Engine/Build/BatchFiles/Build.bat -projectfiles -project="D:/Users/Franky/Documents/Unreal Projects/WhatEverHappened/WhatEverHappened.uproject" -game -rocket -progress Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" -projectfiles -project="D:/Users/Franky/Documents/Unreal Projects/WhatEverHappened/WhatEverHappened.uproject" -game -rocket -progress Log file: C:\Users\Franky\AppData\Local\UnrealBuildTool\Log_GPF.txt Discovering modules, targets and source code for project... Binding IntelliSense data... Binding IntelliSense data... 100% Writing project files... Writing project files... 0%
Unhandled exception: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Text.StringBuilder.ToString()
at UnrealBuildTool.VCProjectFile.WriteProjectFile(List1 InPlatforms, List1 InConfigurations, PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\VisualStudio\VCProject.cs:line 1381
at UnrealBuildTool.ProjectFileGenerator.WriteProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 2812
at UnrealBuildTool.VCProjectFileGenerator.WriteProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\VisualStudio\VCProjectFileGenerator.cs:line 480
at UnrealBuildTool.ProjectFileGenerator.GenerateProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, String[] Arguments, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 1176
at UnrealBuildTool.GenerateProjectFilesMode.Execute(CommandLineArguments Arguments, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\GenerateProjectFilesMode.cs:line 233
at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 648
'System.OutOfMemoryException'
sounds like you are running low on memory. Open task manager, make sure there is plenty of memory available. Close any programs that are not required, etc
Also being that this is a compiling/project generation problem, might be best to ask in #cpp
32GB RAM nothing opened I'll check with cpp thanks ๐
hello, i just reinstalled windows and lost my perforce workspace setup on the local machine, is it possible add the directory back as a workspace?
or do i have to check everything out again?
You should be able to edit your workspace and change the Host to match your new machine name
there are no local workspaces, they were wiped out when i reinstalled, but i don't see how in p4v
in p4v open the Workspaces tab and you should see all workspaces known by the server. Find your old workspace, open it and edit it, then change the Host field in the Advanced tab
seems like nothing
open > Filter bit and clear it
in p4v open the Workspaces tab and you should see all workspaces known by the server. Find your old workspace, open it and edit it, then change the Host field in the Advanced tab
or rename your machine - whatever you find easier ๐
it told me the computer name didn't match ๐ renaming the computer is easier i liked its name
you probably figured it out by now, but after this you'll have to do a forced "Get Revision" operation somehow because the server doesn't know that your local workspace is out of alignment with it, it will think you have all the files still
I do have all the files I am the only user
I've just gone back to win10 as I kept getting weird errors on 11
your hostname probably changed if all you did was downgrade but left the workspace drive alone.
All working nicely now
However the nasty hard crash is because of dx12, no issues on 11
for some reason my project using perforce is super slow compared to a copy not in my p4v workspace on ue5
i didnt have this issue on ue4 in other machines. not sure whats going on
like super slow loading maps, (or the project even) then jumping into game or out of game
GitHub vs Azure DevOps for a Unreal Engine project (with LFS) Iโve noticed that GitHub only has 1Gb LFS for free per month while Azure DevOps seems to have way more
Which should i choose?
I have quit the same question. I'm on GitLab which has 5Gb of storage (https://about.gitlab.com/pricing/faq-paid-storage-transfer/). Paid plan start with 50. My Unreal project is already 20Gb. Not sure which SCM To choose to store the data.
I went with azure devops
250gb for lfs for free
Per repository
Thanks, this is good to know.
is there a problem with apps like git desktop or anchorpoint when you migrate content files from one project to another that is monitored? It seems the migrated files are not recognized, and the reason might be becasue the project is not open when it receives the files
everytime i try to push my initial project files it abruptly disconnects. I tried it on 2 different machines in our office.
Our connection is fine, there is no problem with it.
The project is 8-something GB in size and the individual files dont exceed 30/40MB so it cant be an LFS issue.
its frustrating because i cant get my repo to be pushed.
Using Github Desktop.
Any ideas what i could try to make it happen?
is there a list somewhere of files that we can safely add to gitignore?
should we add uproject file to gitignore?
because apaprently that is where some editor options are saved
how would anybody who just frehsly downloaded your repo open the project if you've excluded the *.uproject file
because it contains lines about disabled or enabled plugins, so the problems is that anyone receiving it will have his options editor changed
as they should have.
you're developing a game with certain plugins, it wont run right if somebody else dont have them
yes but some people have optional plugins that others don't want
and some other options, not ust plugins
than maybe those PPL with extra plugins need to exclude the uproject file on their machine from uploading so it wont disturb others
yes
certainly possible
it never changes other than editor options or optional stuff?
i mean it's 1k in my folder
i mean, if you're working this way, if there are any mission critical changes to Settings sometime in the future, you need to have everybody turn them either on/off manually
it's weird that some disabled plugin would be writtten in there
instead of editor.ini or something like that
yeah, i dont know why some plugins are written in there
its a huge painas well if you want to sell something on the marketplace
Is there a point in using gitdesktop and source control at the same time?
Anyone know how to debug why P4 FStat and Edit would be constantly called for every asset in my Starter Content folder when launching the editor? All of them are getting changed for some reason and added to my CL in P4 on launch.
Think I'm finding an answer it's unpacking the StarterContent.upack and recopying it into the project everytime I start it up. Just recently updated the engine version to 5.1 wondering if that's what cause it to start doing this.
Hey all, I am using Git with UE 5.1 and am looking for the "Check Out" option on files. According to the documentation you can right click an item in the Content Browser and do check out, but the option isn't in my right click menu at all. Any ideas, or am I missing something?
@gray siren hey bro, yeah regarding the starter content i had the same issue, it's back after a restart even after deleting many elements inside it. I think there's a flag somewhere that brings it back.
Yeah it's in project dir/config/defaultgame.ini
thanks, will take a look
which git plugin are you using?
https://github.com/ProjectBorealis/UEGitPlugin allows for check out
I've been using the built-in Git plugin, but thank you for showing me this. Clearly I need to do some more research about the different plugins available
hopefully I'll stabilize this one and submit it to Epic
does anyone know if this guide is still worth following? i'm using 5.1 rather than 4 though. https://pgaleone.eu/cicd/unreal-engine/2020/09/30/continuous-integration-with-unreal-engine-4/ i will be doing both a windows and linux build so that's why i ask
Continuous Integration (CI) is an essential step in the development pipeline of well-designed software infrastructure. Unreal Engine 4, on its side, does not provide an handy way to design CI/CD easily, since the project itself is huge and the system administration challenges to make it scale are big. This article will guide you through the deve...
It may work, the only thing missing I see is TurnKey SDK Management introduced in 5.0.
thanks.
I having issues to use local perforce server - I already have a static IP- . Is there any good tutorial for me to fix this? May I use my PC as server? And also may I use DDNS instead of paying for static IP?
"I having issues to use local perforce server" is not helpful. Given the rest of your question I'd assume you are having trouble connecting to your server. You don't need a static ip to connect, although it is helpful. You can use your local pc or any other pc, laptop, rpi, nuc, etc as a server since a server is just software. You can use ddns but I would recommend using it behind something like cloudflare with a domain pointing to it otherwise you will have to keep updating the ip
If your server is on the same network you shouldn't need ddns, even if you are using dhcp. If it's not on the same network then it could be a number of problems, you just need to provide more information
My svn server keeps having corrupt file system on initial repo uploaded files. Is there another source control method that would be better and free ? Need at least 10gb space though
Hi, is git (Github) usable for small indie project or shall i invest time in learning Perforce?
Git+LFS is usable (lots of people here use it).
Depends on your goals and team setup really.
Github is going to make you pay for LFS very fast though ; it's free for 1GB bandwidth per month only
Hi, everyone sorry if this is a frequently asked question in here, but I was just wondering what everyone suggests for a team of 6-12 people?
I've looked into Git + Git LFS, Git + Azure DevOps, and other more commonly used things like Perforce (with DigitalOcean) and Plastic SCM
I'm currently leaning towards Git + Azure DevOps or Perforce but just wanted to see what was recommended
If they're all tech people and you don't do much work with binary uassets then Git may work, but at that team size it's really pushing it since the chances of people clobbering each other's uasset work is not small with 6+ people.
If you think binary file locking sounds good, then Epic uses Perforce.
As for whether Perforce or Plastic might be better, I haven't tried Plastic so not sure there.
Maybe someone else can give some insight into that.
If you ever hope to get a job at, or subcontract for, Epic, use perforce ๐
Yea preferably I'd want to use Perforce since majority of the team would be artists, but costs are somewhat of a factor, I guess Ill give a deeper look into Plastic
if anyone can give some insight into Plastic, Id appreciate it ๐
Hey y'all! I'm working on a project with some large file requirements, and trying to determine the absolute best repo setup. Essentially we will be growing to have a repo that is at minimum 2.5tb with 2 years, and will grow substantially from there. Without a doubt, Perforce is the best option for our needs - HOWEVER - I'm having a difficult time finding an existing service setup (like Helix in DigitalOcean or similar) that will allow us to grow to these repo sizes at affordable budgets. (We are a well funded company, but thousands a month for repository costs is currently outside of budget, but after 2 years we should be fine there). So I'm trying to find a good setup that will last us for the 2 years we need to grow to that point.
I was looking at potentially using Git SubTrees, and separate things like ULevels and their assets into individual GIT Repos and support them in the main repo via SubTrees, but running into a couple hurdles there.
Could absolutely use some advice on this. Thank you!
@teal bone what View setup do you use to limit your UDN workspace to the Engine?