#source-control

1 messages · Page 12 of 1

remote bobcat
#

I get this error even though I'm just trying to sync content

long mural
#

turn off sycning of pre-compiled binaries

#

if there is no suitable binaries

remote bobcat
#

Or, could this error be caused by a code commit that is sandwiched between what I'm am synced to currently and the content commit

long mural
#

it wont let you sync

remote bobcat
long mural
#

right but maybe there was some code changes

#

?

#

maybe check in p4v

#

to see what actually got commited

remote bobcat
#

Right, that's what I'm asking, if there were code changes before the content commit, maybe that would cause this error to be thrown?

long mural
#

yes

remote bobcat
#

Hmm

long mural
#

because it works by changeset id

#

so say your on changset 100

remote bobcat
#

So it sounds like automated builds are hella necessary then if people are going to be pushing code all the time

long mural
#

someone commits code on 101

#

content on 102

#

you want to sync 102

#

you need the binaries from 101

remote bobcat
#

I see

#

I figured it would still let you sync to 102 without them but that does make sense

long mural
#

we have a build system

remote bobcat
#

Thanks for helping me understand

long mural
#

which keeps the binaries upto date on our p4v

#

fully automated

remote bobcat
#

building at the server level?

long mural
#

yes it checks the incoming the changes, determines if its code changes

#

and pushed a build

#

pushes*

#

then it pushes a test build to be queued, which runs our automated tests

remote bobcat
#

I see

#

The other thing, is that commits that are builds (the binaries, not code) doesn't show up in the list that UGS shows. I'm guessing that is by design?

long mural
#

binaries wont show up in that

#

cause its reading from your projects repo

#

not the repo you have the binaries in

#

i dont see the binaries here

remote bobcat
#

Yeah it just doesn’t list binary pushes I guess

silver token
simple trench
#

hey so im still a bit confused about this. i did as you suggested and created a separate folder for workspace root. however this creates a couple of consequences which no matter how i look at it seem very unintended:

  1. perforce basically full-copied the project files into the workspace folder. this doubles the amount of space being used for the project
  2. when launching the project from its original location, unreal cant connect to source control, giving me the "workspace doesn't map to project folder" error. launching the project from the workspace location fixes this but then of course unreal will try to create all of its extra folders for caches, intermediates etc in the workspace folder, when i dont really want those to be indexed in perforce
    i must be missing something here, i just dont know what it is
long mural
#

i set xml to text+w

#

but i am still getting issues of them being set to text and readonly

#

error CS0016: Could not write to output file 'E:\TeamCity\buildAgent\work\6d833ab50a6dd8d6\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.xml' -- 'Access to the path 'E:\TeamCity\buildAgent\work\6d833ab50a6dd8d6\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.xml' is denied.' [E:\TeamCity\buildAgent\work\6d833ab50a6dd8d6\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj]

long mural
#

@silver tokeni use badges

remote bobcat
pulsar parcel
#

I believe UGS has badge groups, that's how you get those

silver token
serene topaz
#

any unreal git source control nerds in the house? i have a problem with being able to open up a project after cloning, generating vs and then rebuilding solutions

wide raven
#

Trying to submit a file from Jenkins, but a bit stumped ( can't be whole CL, just one file ).
Trying like this
p4 submit -d test.txt "BUILDS: Test Submit from Jenkins"
results in
No files to submit from the default changelist.
even though a file with that name is in default CL
Surprisingly hard to find concrete examples online. Tried with relative path, tried with depot path... hmm

silver token
wide raven
# silver token If the file hasn't been modified, perforce may be reverting it instead of submit...

Sanity check :

  • file has been modified
  • it is not being reverted, it does nothing
  • -d is bypassing the dialogue popup, setting a cl description for the submit, should then work without the popup. Works with a simple p4 submit, but that submits the whole default cl, which is not what I need

EDIT
p4 submit ../../Build/Android/game.PackageVersionCounter -d "BUILDS: PVC Submit Test"
seems close, results in "wrong number of arguments"

EDIT2 Ah, this is the correct syntax
p4 submit -d "fixed a bug" myfile.txt

P.S: finding good solutions with Bing AI search

lucid thunder
#

Hello everyone,

Is there a way in perforce to have a “Parent Depot” that will host the game framework and be lightweight (no content) and then have a “Child Depot” that will inherit form the parent plus have hundreds of gigabytes of contents and assets?

The idea is that I want to work with external developers on the parent depot level to implement system and gameplay features and don’t want them to download hundreds of gigs or have access to actual game content.

wide raven
#

In any case, even if you didn't use streams, I think the key thing is to be able to encapsulate your content in such a way that there's a core game playable even if all the assets for everything is not in place. How one would build this out might vary a lot depending on the case

woven sluice
#

That was my thoughts too - it's impossible to help develop game content and features without access to the game content and features

#

There's almost no reason to use classic depots btw... I'd almost wager that nobody with experience would use them instead of streams depots

#

A virtual stream could be used for third party devs that cuts out pieces of the depot they don't need access to

wide raven
#

Yes. We do use streams for release candidates and such, but not for splitting up into pieces that much. Needs some savvy architecture decisions early on in the project I reckon.
Like I could see Dev versions of the game having a launch option of just firing up a Core Test Level which has all the Rules of the Game as it were. Then have normal launch into the real game, in which all but entry into the actual Real Game should still work, even though the real Levels of the game are not loaded up

rugged jacinth
#

Hey everyone, embarking on a very indie 2 person project, we are remote and want to do shared work/collab and so obviously a VCS is needed. I can stand up my own perforce instance (but don't really want to deal with managing it), what am I losing if I chose SVN? The hosting for SVN online is far cheaper than perforce. Any opinions or pointers to things I can read to help make an informed decision RE: tradeoffs?

#

we've used perforce in the past, so I know the editor handles it really well of course.

latent echo
#

Hi guys. Please correct me if I'm in the wrong channel but I wanted some help concerning Git LFS storage limit. I am over the free limit of 1 GB (currently at 2 GB) and I don't know how to lower that storage usage. I already removed everything I could apart from my source code and it doesn't seem to change. So now I am stuck and can't even push small code changes either. Do anybody have a solution?

PS: I mistakenly pushed too many files to the repo which caused this issue, reverting it did not change anything. I know it resets every month but it just reset and nothing changed.

teal bone
#

@stable tendon It'd make me so much happier if when you reconciled and choose a new cl that it gave you a box to type a description in! (sorry for the poke)

stable tendon
stable tendon
teal bone
#

Reconcile some files and select 'new' as the CL - it's not a bug, just a feature request! it doesn't ask for a CL description, so you have to wait for it to complete and then edit the CL.

stable tendon
#

10-4! I'll play around and throw it in as a feature request 🙂

teal bone
#

Thanks 🙂

tribal talon
#

Hello, whenever I try to open my project an error says it could not be compiled. would anyone be able to hop in a vc and guide me through rebuilding from source manually?

kindred spruce
#

@tribal talon regenerate project files, go to .sln file and run in debug mode

sweet agate
#

is there an equivalent to Perforce's Time-Lapse View on GitHub?

neon nova
#

Hey there everyone, not sure if this belongs here but:

I have a custom engine build I would like to push to private a private repo, either in Azure dev ops, or GitHub to share with some people.
Whenever I have used Git LFS to push to either of these providers, I get the ol' "Remote closed due to going over max size" (or something of that description).
Does anyone have any recommendations or have any suggestions on how to share their Custom engine builds with folks within their team via GIT? Or am I chasing a fairy tale?

slender coyote
neon nova
slender coyote
# neon nova Hahaha I knew I’d have to go down the perforce route one day, I’ll give it a go ...

Sorry I couldn't be more git-LFS friendly. I actually started with Azure DevOps but things started getting wild after a few months of development. Made the jump, I'm not a perforce evangelist but it gets the job done once its setup. If you use perforce you can set up streams and all sorts of warm-fussy feeling workflows which are beyond my understanding.

As I'm sure you know, for source builds of the engine you will want to share pre-computed binaries and do the reg edits on other systems so that they recognise the engine versions harmoniously

pulsar parcel
#

Or use a native build

#

Which doesn't require registry changes

cunning mantle
#

Not a fan of registry change.

jolly fog
#

is it possible to make ue5 auto connect to source control when I open it?

#

on 5.3 on linux I have to connect each time I open it

crystal radish
#

Im trying to setup github desktop + azure devops but every time I try to do the first commit of a specific project, I get this error. Any idea why this file is generating? If I restart my machine, delete the file and try again, it gets added the moment I try to commit.

slender coyote
slender coyote
lucid kernel
#

guys, everytime I close UE, I have this 2 files with changes, even if I didn't change a thing.
Do I need to add this 2 files to .gitignore or what should I do?

kindred spruce
#

ye they are logs and intermediate they doesnt matter

#

or discard

eternal steeple
lucid kernel
#

thank you 🙂

kindred spruce
#

is the image necessary?

teal bone
#

You'd be surrpised.

#

"You can delete everything but x..." "Yeah, btu can I delete this?" "You can delete everything but x..." "Are you sure I can delete y?"

kindred spruce
#

what

teal bone
#

The image makes it clear.

#

Because people are, apparently, unable to read.

pulsar parcel
pulsar parcel
#

It refers to when the game project is an immediate subdirectory of the engine checkout

#

GenerateProjectFiles then makes a UE5.sln which contains the game project

#

When you build that target, you skip a hell of a lot of time building the engine

#

A lot of studios use UnrealGameSync or roll their own similar tool

kindred spruce
#

How do I open UGS do I have to buy it or so?

slate forge
#

So out of curiousity, as I scroll this chat, is there any consensus about P4V over say Azure Devops/Git solution? I work with a web development team that use Git pretty much exclusively, but from my days in Virtual Production and Games, it seemed pretty much a given that Perforce was the way to go (at least back then). I've spoken to some pipeline td's at my former studio, and they still think Perfoce is the way to go. Epic themselves use Perforce for their own teams, which then makes sense that they would be super dialed-in to it's functionality.

Thoughts?

pulsar parcel
#

and it has a mechanism for non-coders to sync precompiled binaries

kindred spruce
#

should i learn it

wide raven
hoary bane
#

i'm sure i'm going to reveal myself as the completely clueless noob that i am, but i am confused about perforce's source control. there is git for perforce. but then perforce also has its own flavor of source control? why? how do you decide which to use?

kindred spruce
#

@hoary bane

hoary bane
#

i mean i get what benefit you have from using perforce over straight git for versioning and file management... i'm just not clear on the code specific parts

inner anvil
#

Can I use UGS with the engine which installed by the launcher?

kindred spruce
inner anvil
#

Oh I see.. thank you!

inner anvil
#

is it possible to use UGS in multiple projects under one source build engine?

pulsar parcel
#

Probably if they're under the same depot, but that can pose other issues if the projects want to upgrade at different times

inner anvil
#

Do you mean engine upgrade?

pulsar parcel
#

Yes

#

And then you might need to create a bunch of virtual streams

inner anvil
#

I see thank you!

final vessel
#

hello, i have a perforce question if anyone could help out. A bit over two years ago I made an ubuntu server with a digital ocean account that i push my unreal projects to with p4v, and I am the admin, but recently I noticed I can no longer login to p4 as my SSL cert has expired. I've tried renewing the cert by going into putty, logging into the server and following these instructions:
https://polymoon.net/blog/how-to-renew-perforce-ssl-certificate/
but they did not work and i don't think i can even restart the server on the correct port. Does anyone know where I can go to get help to fix this sort of thing?

short delta
#

How to make it so Perforce doesnt ask for login every day?

kindred spruce
#

that's on the admin

urban crystal
stable tendon
# hoary bane i'm sure i'm going to reveal myself as the completely clueless noob that i am, b...

Perforce's source control product, Helix Core (also called Perforce [name change in 2016]) works well w/git with Helix4Git. That way you can have all of your code mirrored from git into p4.

How you decide is up to your teams! There are physical limit sizes to git products (GitHub/GitLab/etc.), and there aren't any file size restrictions in Helix Core, just how many users you have :).

stable tendon
stable tendon
kindred spruce
#

@stable tendon noob question but what is more recommendable? having 1 workspace for all streams and switching or having a workspace for each stream?

stable tendon
stable tendon
limber tartan
slate forge
slender coyote
pulsar parcel
#

No, the same directory as. The old Unreal Tournament repo showed the setup

limber tartan
north coral
stable tendon
#

RE: git. 35% of our game dev respondents use GitHub, so it's totally cool, we love Git + GitHub. Need to pick the right tool for the job.

Side note, I'm hosting a webinar next week to talk about trends in game dev, check it out for really interesting stats! (especially about UE vs Unity adoption)
https://www.linkedin.com/feed/update/urn:li:activity:7108090182666436611/

Side note 2: Talking to mods to get a #unreal-game-sync channel started 🙂

teal bone
#

There is, or was, an events channel. You should post in there too!

crystal radish
#

I setup unreal with github desktop and azure devops for source control. Does the software throttle the upload speed? I have a 1Gbps up connection and it takes a good 15-30 mins to do the intial commit of a test project that is 1.25gb in size. On my internet connection an upload of that size to something like google drive takes well under a minute, if not less. This might be the nature of this, I'd just like to understand what is going on in the background - first time doing this.

#

I've done a few test projects, some empty, some with one large megascans asset and most times, the ones with a large file in it produce a few "LFS: client error" and "error: failed to push some refs to ....."

runic summit
#

without using p4ignore or modifying it, is there a way I can tell perforce to just 'forget' about pending files - I have a massive list that I do want to incorporate but I want to push only a few right now

#

It's a few hundred, and they are scattered across so I can't easily select them to move to another changelist

kindred spruce
#

revert unchanged

young herald
#

Hopefully a good place to ask.
Anyone got experience with virtual assets?

I'm trying to set up virtual assets for my team and I think most things work, but whenever the virtualization tool creates a new temporary workspace for submission, I keep getting
warning: cannot submit from non-stream client
Followed by
SourceControl: Error: CommandMessage Command: CheckIn, Error: No files to submit.
and I really have no clue on how to fix it...

The source control error one, there should be files to submit because it tries to delete that temporary workspace after failing, but it can't because that temporary workspace has something checked out.
The non-stream client one... I have no clue at all, why would the virtualization tool create a temporary workspace and not associate it with the same stream as I pass in to the -ClientSpecName is beyond me

young herald
#

I guess I forgot to say regarding the error no files to submit, those files checked out are the files generated by the virtualization tool, however while they are checked out, those files don't actually exist in my repos which is why I guess why I'm getting that error in the first place. They are .payload files.

Now the question I guess becomes, why do those files don't exist :/

worn glacier
#

Anyone know if there is a way I can just discard non saved items? I can't update or push if I have things that are changed with no save, but often I'll have things I don't want saved. Closing unreal let's me disard them, but I would like to discard the changes without saving in editor if possible. I guess I could save them, then revert them.. But I'd rather just be able to revert/discard without saving first.

vivid scaffold
#

anyone in here know if using svn in unreal in linux uses a credentials cache by default?

prime yarrow
#

so I made a workspace

#

inside the depot

#

is that right

teal sail
#

you've made a workspace that is pulling from your depot, but otherwise that should be correct 👍

prime yarrow
#

so does it auto checkout files? or do I have to do that

teal sail
#

You have to do that

#

If you connect unreals source control integration up it should ask you to check things out before modifying them.

pulsar parcel
#

Game is an overly generic depot name

sly linden
#

I'm looking to make (free) games with a game jam team (probably a couple teammates tops), so I'm in the market for a free solution to version control.

Def I'm aware that P4 is the industry standard. But for such a situation, would you still recommend Git LFS + Azure DevOps? 🤔 🙏

sly linden
#

Note: On October 1st, 2023, the free entitlement for Git LFS is increasing. If you use GitHub Free or GitHub Pro, you will receive 10GiB of free storage and 10GiB a month of free bandwidth

Ahh, not too shabby. GitHub might be sufficient over Azure DevOps. Maybe for 1 project at least.

#

I think my plan will be:

  • Git LFS + GitHub for solo experimenting
  • Switch to Azure DevOps once I hit the storage/bandwidth limit
  • Try out Perforce Free Tier once I start working with artists and such

Thanks all 😅 for the rubberduck thinking out loud

runic summit
#

I need to be able to work on my project including source control, but I won't have time to download it from the depot - what is a guarnateed way of making a 'portal install" so I can do so (including shader compilations) - this needs to be ready to open and get to work without a single delay, other than copying over. Here's the process as I understand it -

  1. Copy over entire UE install folder from Program Files
  2. Copy over entire project folder from synced workspace folder (including the intermediate folders, etc)
  3. Possibly grab local data/app data (wherever the shader cache is)
  4. If possible get a Visual studio install as well (not sure how to guarnatee this portable)
  5. Copy over perforce install/with server settings

On New machine

  1. Copy over UE install, project folder, and temp/app data files, Perforce, Visual Studios
  2. Connect to Perforce, add a new workspace and set it as the project folder on the new machine
  3. Hit "Get latest", which should acquire zero files since it is synced up
  4. Start up Project File
#
  1. Pray
prime yarrow
#

so do I make spereate branches for what Im working on

tribal lynx
#

is anyone using a NAS for source control?
Also, is that same NAS accessible from the internet and simultaniously performing separate file storage for other services?

#

i need something multi purpose to feel a local hosting makes sense cost wise

tribal lynx
#

atleast 2 but the source control should preferably be open ended and accessed from outside the network

tribal lynx
#

i dont have the hardware

#

im starting with hardware 🙂

prime yarrow
#

aws devops them

#

then

#

its free

tribal lynx
#

huh

#

i had a free tier AWS server and never used it and i still got billed after a while

prime yarrow
#

wait azure not aws my bad

tribal lynx
#

i had to permanently destroy my ability to sign up with AWS with the same email in order to stop the billing

#

and ok 🙂

#

azure 😄

prime yarrow
#

yea azure devops

#

I hate version control tho

tribal lynx
#

i just want to invest into my personal file storage so it considers my multiple needs

#

and i share the cost with my brother

#

but i have done some research (not just asking here) and it looks like Synology offers a good setup

#

hardware wise

#

im but not very eager to pay 300€ for a solution that could be done with an RPI and some duct taped disks :C

prime yarrow
#

it sucks

tribal lynx
#

i guess its somewhat alleviated by the host ware

#

something that is able to run a version control, a network media center and raw user dump

#

should be easy anough

#

does anyone know if a github solution configured properly with GIT LFS is different to maintain than without LFS ?

#

different as in extra tedious or no impact on daily life 😄

prime yarrow
#

for free

tribal lynx
#

ik ?

#

azure still ?

prime yarrow
#

yea

prime yarrow
tribal lynx
#

you are making a good point

#

about azure

#

whats the caveat

prime yarrow
#

you dont host it

#

microsoft does

prime yarrow
# tribal lynx you are making a good point
#

read that it talks about devops

tribal lynx
prime yarrow
#

I wouldnt

tribal lynx
#

i mean is it an unreal slackers document?

prime yarrow
tribal lynx
#

👍

prime yarrow
#

Idrk where it came from but its been really helpful

tribal lynx
#

well ok i have scribbled down "azure devops" and that document link as a viable alternative.

#

i dont really see this project go to 5+ members any time soon and if it does, this wont be the issue then 😄

prime yarrow
tribal lynx
#

small scale should be simple enough

#

ive worked with svn way back and with git for smal stuff in unity

prime yarrow
#

my issue is working on the repo while someone else is

tribal lynx
#

for me the biggest problem with version control is the blueprint binaries

tribal lynx
prime yarrow
tribal lynx
#

the restrictions guide you probably

#

separate what cant be diffed to being currently "owned" by whoever signed it out.

prime yarrow
#

but how do you sign a file out

#

like do we only upload files we want to share we all have our own individual ue projects?

tribal lynx
#

oh wait you mean like new to version control

prime yarrow
#

yea Im trying to set it up and its a pita

tribal lynx
#

im not the right guy to explain it but the basic idea is that several people have access to a project source.

they usually have the freedom to work on files and upload the changed versions of them to the repo. Usually only the changes are tracked so that 2 people working on different files can upload with issues.

#

i mean its a lot to it but essentially you are contributing to a collective progression tree

prime yarrow
#

yea but like how

tribal lynx
#

so with that in mind the limitations are binary files 😄

#

shit that cant be read and diffed

#

i believe this is all .uasset files ?

prime yarrow
#

cause If In the ui folder and my friend is main level and I push to main then he pushes to main its gonaa conflict somewhere

tribal lynx
#

yup

#

so to make life easier just start working in separate ends at the start so you can cushion the version control knowledge

prime yarrow
#

huh?

tribal lynx
#

work on separate things that wouldnt touch

#

for a little time 🙂

#

do not cross the streams yet

prime yarrow
#

but how do we do that without causing conflicts

tribal lynx
#

one guy work on level 1 and another guy work on level 2

#

no conflict

#

iirc a level file is a binary so there is no way updates from 2 people can consolidate

#

so again, they have to be checked out, worked on, commited to and checked in for someone else to do work on it.

prime yarrow
#

how do we do that without causing conflicts

tribal lynx
#

not sure what you do to cause so much conflict

#

the one thing is to not commit the full project but only the worked on assets and files

#

there should be virtually 0 conflict if 2 people work on different things

prime yarrow
#

like I make a level 1 folder and a level 2 folder and then I work in level one while he works in level 2 then we push to main? when done

tribal lynx
#

something like that

#

separate by directories in the start. you could even use your own names on directories to simplify it

#

listen, i havent worked with version control in UE before so im not the right person to go into details with

#

i just know what the hurdles would be. and i would solve them by not crossing streams

gaunt topaz
#

Hey I finally set up a perforce for my unreal 5.1 game. I want to upgrade to 5.3 for my project. Do i make a copy of my 5.1 project to turn to 5.3? Then after that do I make a stream that is for my 5.3 project? I don't have a lot of space on my perforce so if i could just upgrade my 5.1 to 5.3 with all the same files linked to the same workspace im already on, would that be possible? Thanks

limber tartan
slender coyote
#

I have a local version of perforce that's tracking one project (workspace) to another HDD. All working well.

Is there an idiots guide to adding another project (workspace) to that perforce installation and being able to track/use them independently?

teal sail
slender coyote
teal sail
#

That's all you need to do

slender coyote
teal sail
#

Same way you set up your first workspace

#

You probably do want to map in a stream...

hollow sleet
#

is it possible to use the same workspace on 2 different computers to be able to work on both of them without pushing the content of the workspace to the depot/stream?

slender coyote
# teal sail Same way you set up your first workspace

It set up the depot automatically as I didn't have one already mapped... So don't really know how to do a second one. Perforce's user experience / interface gives me 0 confidence

It looks like if I did my first screenshot it would just put all of the files in the same place as where all my other project files are stored...

Should I make a new depot in the admin panel and then create a new workspace to it?

teal sail
#

No

teal sail
slender coyote
quaint obsidian
prime yarrow
limber tartan
merry verge
wraith oracle
#

Really having a hard time getting my Precompiled Binaries to show up in UGS.

I'm going so far as to make breakpoints and step through the code. The problem seems to be here: in my changeNumberToArchivePath Dictionary, the archive path isn't populated.

#

I'm wondering if it's something to do with when I build and submit the engine to perforce? using

RunUAT.bat BuildGraph -buildmachine -Script=Engine/Build/Graph/BuildEditorAndTools.xml -Target="Submit To Perforce For UGS" -set:ArchiveStream=//unreal/unreal/Unreal_5.2.0_PrecompiledBinaries -P4 -Submit

green kettle
#

Is there a Perforce Discord? I couldn't find one.

I'm setting up a Perforce server on Linux and they include a configuration script, but no matter what user choose or directory permissions I set, it gets a permission denied error when setting the P4ROOT to my intended directory. Specifically the error is:

Perforce server error: Root directory (set with $P4ROOT or -r flag) invalid. chdir: /[samba share]/perforce/servers/primary/root: Permission denied

It asks me what I want the perforce super user to be be and I've tried setting it to "root", "perforce", the "perforce-user" I made, and "super".

Any ideas? Just tested with fully open permissions (777) which I hate even trying, and it still didn't work.

terse fjord
#

Can someone tell me why when I booted up my Github Desktop app today this appeared as a change?

I just set up source control two days ago and I'm pretty new to this, but I'm the only one on the project and I did not make any changes. So why is it trying to add this file into my project?

scenic gale
teal sail
spring prawn
#

Hi everyone!
I have read a lot about streams in Perforce but I just cannot seem to wrap my head around the relationship between Unreal's modular file structure and the use of streams - at least not for the specific use case. I have been using p4 for two years but without streams. Any tutorials I found were typically about how to use streams to manage different codelines or different engine versions for perforce projects.

What I want to accomplish is a little bit different: My depot is pretty standard containing a few Unreal projects, and my goal is to have a few of my own plugins which I regularly use and gradually develop be at a specific path and be streamed into all of my projects from that place. This way whenever I work on multiple projects simultaneously if I need to indroduce changes to the plugin, then I only have to do it once and all other projects streaming the plugin will get the updates at once.
Could someone show me how to setup a stream that places a plugin inside the root of my Unreal projects?
Thanks a lot!!!

#

I have created a schema which hopefull better explains what I want 🙂

woven sluice
#

i've always wondered what the least crappy way would be to do the above but also have the plugin be independently versioned per game project. almost like maybe creating one release stream of the plugin for every game and import+ing that release stream instead of the plugin's mainline stream

cyan jay
#

I don't know why people are so resistant to using standard integration workflow.
When you update your plugin, each project must manually integrate into their branch. It's a simple process, and each project is in control of when they update.

woven sluice
#

not sure if that was directed at me or at "the chat" but that's... exactly what i was describing, or rather, asking about

#

unless you're just suggesting that the plugin update should be forceful and immediate to all downstream projects as a simple import setup achieves

#

it has obvious downsides, minor for small indie work but serious problems at scale

cyan jay
#

No not you at all, just I have seen a lot of people using import for this, and also had this discussion here several times where people are resistant to an integration workflow for this. Not really sure why.

I 100% do not think anything should force an update in that manner. What if you're working on a milestone and a breaking change comes in?

#

You don't want your plugin dev to be testing against all possible clients of your plugin tho

#

Not sure I agree with that. Sometimes a breaking change is required and integration into projects should be done by the project team.

teal sail
#

Obviously this is a small team, so the risk & cost of making a breaking change is small

cyan jay
#

Fair enough

stable tendon
#

And if anybody has suggestions on what works, I'd love to discuss. We don't make games @ Perforce and are open to different styles of mapping(s) that seem to work for your team(s).

Game devs ask me how to setup their project, and it's so variable to give them suggestions.

tardy phoenix
#

tryng to push unreal to git for the first time, ( using git fork) getting this error : fatal: the remote end hung up unexpectedly

#

happening when it is tryng to push the content folder

#

only things I am pushing are the Config, content, source and Uproject file. ( already have the unreal git ignore pushed)

barren garnet
#

Sorry if this is an FAQ but should I include the .sln file in version control?

teal bone
#

No

#

Content, Config, Source and uproject.

kindred spruce
stable tendon
teal bone
#

Because you can generate it locally.

#

And it's entirely not needed.

pulsar parcel
#

Yeah, the solution is completely useless and is generated by UBT

tardy phoenix
woven sluice
tardy phoenix
#

GitHub, no lfs not sure what Info to give other than this, let me know if still more is needed

woven sluice
short delta
#

Anyone knows why this could happen?

EDIT: Fix was:

uninstalled perforce with removing all settings stored and installed again with correct username, server and password

stable tendon
#

Did you rename your PC?

#

Looks like you're trying to connect with your PC name instead of the username.

cloud horizon
#

Any good video suggestions for setting up perforce using cloud services? New to the software overwhelming for myself as I’m trying to read online about all of it

stable tendon
#

Hey @cloud horizon ! We have two, one is more marketing/walkthrough for AWS+Azure. And the other is a more traditional documentation style.
Happy to answer any questions!

  1. https://www.perforce.com/products/helix-core/setting-up-perforce
  2. https://help.perforce.com/helix-core/cloud-deployment/images/Content/Cloud-Deployment/Home-cloud-deployment-images.html
cloud horizon
#

Sweet and thanks for the quick response! @stable tendon

late jungle
#

I'm looking for some perforce advice, but I can't find any perforce specific discord or slack. Is there a place I can go to?

stable tendon
#

Hey @late jungle ! We're investigating hosting our own Discord, we have a Slack channel for active customers and we have forums. We also have videos/docs/office hours/etc. and our support email.

Maybe I can assist? What's up?

late jungle
# stable tendon Hey <@186851588449632257> ! We're investigating hosting our own Discord, we have...

Yes maybe you can! So I have a stream depot of a game that's in early access. This has all been set up quite late in development because before that it was a solo dev project (not me). At the time I set up a Development and Main stream, but we have only been using the Development stream and making builds from there. Now I want to maintain a separate stream for the live version of the game and any hotfixes we might do. Like a Release stream, but not with a one way connection because we have no need to make separate Release streams for every version of the game and to save room on our server. This stream should be a child of the main one because I want to exclude some stuff like source art from it. I've been looking up and trying out some ways to make this transformation happen on a test depot, but I'm not a 100% confident about modifying stream types of a live repository and I don't want to mess it up.

What I'm leaning towards now, is to change the stream type of "Dev" (the stream we always use) to Main. Then to remove and obliterate the old Main stream. Then I'll create a Release stream with a 2 way flow so we can merge down any fixes on the live game and copy up the next update when we get to that. Does this make sense and is it safe? I've also noticed that revision numbers on files are different on different streams, that's why I'm keen to save the branch we currently have.

#

Also is the Slack channel exclusive or can anyone join?

stable tendon
stable tendon
late jungle
#

One thing I'm noticing for instance is that I can change a streams name, but on some levels it retains it original name

stable tendon
#

Should be ok, just make sure you're backed up (take a checkpoint). Sometimes streams don't like changes post creation.

#

You could do a new stream and "import" the old one, with limited access to it

late jungle
#

I guess that's not the name, just the root folder of that stream so it makes sense the name doesn't change

late jungle
stable tendon
#

Yup! It's the ability to snapshot the server at that place in time. Let me grab a link.

late jungle
#

Ok thanks.

late jungle
#

Als I've read it's safer to check out a stream before you edit it. When you check out a stream, does it prevent users from interacting with it or what does it do/why is it important?

stable tendon
#

You could create a second stream, lock that one down to access/changes, so you can limit who can push/pull to it. So it's just a shell, where it just does an import of the dev or mainline stream.

Yeah, it's safer to check out a stream, but that's only for the stream properties, not the files themselves. You could possibly lock all the files in that stream, but that'd block work.

late jungle
#

I have one more question actually. I've been experimenting on a test depot to see what happens if I modify stream settings and add excludes later on. Everything seemed to work so far. However! I've obliterated the original main stream and when I look at my server, the files seem to be still there... Is that possible and why? Also the files don't line up anymore (granted I've edited, removed and renamed streams a few times in these tests)

late jungle
#

@stable tendon ?

stable tendon
#

Looks like that one might need a deeper convo and a bit too specific for this channel! Drop us an email and maybe we can help out over email.
Also, don't forget that little checkbox to force delete local files on disk as well.

late jungle
primal drum
#

If I want to set up version control on a personal project, and only store the different versions locally, is there a way to do that for free? And if so, how? I read here and there that git can handle local-only repos, but I don't know how, and I don't want to risk messing something up. Can someone explain like I'm five? 😆

teal sail
#

The .git folder contains the entirety of your repository

primal drum
#

Oh, ok, so that will still allow me to commit different versions, roll back to previous versions, etc?

teal sail
#

Yep

primal drum
#

If I commit version 1, then I make changes and commit version 2, then I go back to version 1, can I return to version 2? It's still saved somewhere in .git, right?

teal sail
#

Yep

primal drum
#

Ok. And can I use GitHub for local repos?

teal sail
#

No, github is a website

primal drum
#

Oh, I thought it was also just a GUI interface for using git

teal sail
#

oh the desktop app?

primal drum
#

Oh yeah, GitHub Desktop I guess

#

(I forgot there was a difference)

teal sail
#

You probably can, but it will try very hard to get you to push it to their servers

#

Sourcetree is maybe a better option if you really want a gui

primal drum
#

Oh, ok, cool, thanks

#

And then, because the repo is local-only, I don't have to worry about how large it is, because I'm not storing it on Sourcetree's site, right?

teal sail
#

Yes

#

It is probably a good idea to make backups of your .git if you don't have a remote, though.

primal drum
#

Ok, awesome, thank you so much! I don't really know how to set up a git repo but I'm sure there are countless tutorials online for that. Knowing how to keep it local is the important part for me

teal sail
#

Yep, it's exactly the same process whether or not it's local or remote

#

Only difference is you never run git pull/git push

primal drum
#

Oh yeah, absolutely. I'm still going to be backing up to an external drive. But my previous method of version control was just to copy the entire project into a separate version. I think by this point I have something like 25 of them. They don't have many art assets, so they're only around 4 to 6 GB, but at this point it's still getting out of hand 😆

#

If I accidentally do use git pull or git push, for some reason, it won't ruin everything right? It'll probably just throw an error?

teal sail
#

Yeah if you don't have a remote set up it'll just fail

primal drum
#

Ok, sounds good

teal sail
#

You can use a local path as a remote so you could use that to push/pull backups, but it's not something I've ever done. Bundles and bare repos are something to look at for that I think.

primal drum
#

Ok, good to know. And then, is there anything I need to know about using git and sourcetree specifically with Unreal? Is there some way to integrate it? Or is that unnecessary?

teal sail
#

Git LFS is supposedly a good idea for binary assets, but I've never used it so cant tell you any more about it.

Unreal does have a git integration but again I've not used it, I suspect it's like the perforce one that lets you do some operations in the editor. Worth exploring. Look through the channel pins too.

primal drum
#

Sounds good, thank you again for all your help!!

lime nova
primal drum
#

Thanks!!

native wharf
#

Please excuse a potentially trivial question: After setting up a Perforce Helix Core Droplet using the DO Marketplace https://marketplace.digitalocean.com/apps/perforce-helix-core.

How do I change the P4ROOT variable to an external volume? I can see the current value using p4 configure show but can't figure out how to locate or change that variable in UNIX.

hard cobalt
#

Do people have any sugesstions for a cheap method that works for source control of 5 people? For gamejam we use Assembla and perforce but thats 250 per month and we have no money. Is using svn similar like it locks files while others use it and have all the nice updates to UE5 that splits levels into separate actors like perforce?

teal bone
#

What's the free tier limit for perforce? Is it 5?

hard cobalt
#

I think so not sure ill look again

#

Yup 5 users and 20 workspaces

teal bone
#

You can set up p4 then for 5 users on a free service like aws... I think that's got a free tier? Or was it azure?

hard cobalt
#

And they will handle p4 servers? I thought only assembla supported it. Was that just a lie?

#

Or is cloud and aws servers different

teal bone
#

Assembla are the only ones that do managed p4 servers, I think.

#

With whatever other service you need to set them up manually.

hard cobalt
#

Ah ok I will try that out with AWS. Thanks!

teal bone
#

Does it not work for p4?

hard cobalt
#

But will unreal work well with non perforce source control? Will files get locked will levels get split off? I dont know the limitations all I knew was git was beta and I was guessing it had to do with limits in functionality. Im ok with with using SVN i have experience in that the most but again if it has the full functionality. Performance is not something i care about (in terms of speed) its more easy of use and full capabilities

#

Well thanks both of you for the help. Ill go an explore those options and see what works best

bitter sun
#

I have something like this and I have no idea whats this situation even named

#

Wouldnt pull revert my changes?

#

and force push damage to the branch?

#

what should I do?

teal bone
#

It'd do a merge if you pulled, surely?

bitter sun
#

I hate version control burn

rustic dagger
#

and receive an eye-opener

late jungle
#

I'm using perforce and am updating our typemap. To update files that already existed before the change, I can use p4 edit -t auto -insert directory-. But this seems to check out ALL the files in the whole repository. Is there a way to update the files who are affected by the typemap changes?

wide raven
#

Somebody recovered a file called "W_MyWidget" after a crash, now the files is called "W_MyWidget_Auto0".
It no longer Diffs successfully.
It has been submitted to Perforce.
Now I would like to rename it back to "W_MyWidget", but Unreal Editor does not see the "_Auto0" postfix in Content Browser. I fear for repercussions if I change it in P4V. Any experience on such a situation?

late jungle
#

Guys I'm starting to work with streams. Our Release stream excludes any non-project files. But if I switch over to it, I don't want those to get deleted locally. One way to do this seems to be to go to the stream without getting latest and then getting latest only on the project folder. But I was wondering if this is also a good use case for using separate workspaces per stream? That way I can keep the most recent versions of each stream locally without having to delete excluded files or redownloading on frequent stream switches. Thoughts?

wide raven
late jungle
wide raven
late jungle
late jungle
#

Ok perfect!

reef iron
#

i have a question

#

what does source control do

rustic dagger
#

so if something goes wrong

#

you can undo it

#

it also keeps a backup

#

enables collaboration with team members

reef iron
#

ah i see

rustic dagger
#

there's a lot that it does

reef iron
#

i just connected to it and i submitted files

#

can i always get those files back now?

rustic dagger
#

what do you mean?

reef iron
#

it said submit files to source control

#

and i did

rustic dagger
#

which source control did you use?

reef iron
#

git

#

beta

rustic dagger
#

there's a lot of information I'll need lol

#

where did you submit them? what client do you use? what host?

reef iron
#

eh dont worry about it lol i just needed to know the basics

#

thanks though

rustic dagger
#

check it out if you want to

reef iron
#

thanks

green kettle
#

I've spent 100+ hours trying to setup my source control and environment the way I /thought/ it should be, but after numerous failures and total nuke-and-paves, can someone please describe the general "best practice" topology for a very small studio? (Perforce server+samba or NFS share has not worked out for me so far).

I want to be able to have all my projects files and code on network resources, but switch to different systems to use the Unreal Editor (desktop, laptop, etc.) . I know the devs at Epic don't keep all their files local, and based on the Linux support they probably use Windows, so a multi-user server-based compute environment seems unlikely.

I have sysadmin and some DevOps experience so please feel free to be detailed.

pulsar parcel
#

Why would you be using SMB network shares with Perforce?

green kettle
pulsar parcel
#

I'm not sure what the documentation states but usually it'll be on a local drive. I'm not sure of the reasoning to have the workspace root on a network share

woven sluice
#

asking the same thing differently: is there some reason why you don't want to work on a local drive?

#

oh... are you trying to work on the project while it sits in one place from multiple machines?

pulsar parcel
#

That would be my suspicion but workspaces are tied to a specific machine

green kettle
woven sluice
green kettle
# woven sluice yeah, you were correct, basically you just don't want to do that. each machine h...

Okay this is a step in the right direction. I don't mind submitting work at all. I just want to be able to keep the non-code files in sync as well. And I don't really understand where the workspaces, depot, and unreal project directories will be in relation to each other.

Is the following setup valid?:

Unreal Editor opens up--->
Unreal project directory saved to local client.

Perforce client treats local Unreal project directory as workspace.

Submitting with Perforce client pushes files and changes via Perforce server which get added to a Depot on my network share...

Does this depot on the network share now mimic the local project directory?

What about drive mount letters used by Unreal files ( C:, etc. ) Would those break on another system? (eg. going from main desktop to laptop)

Am I overthinking this? Is it normally this complex, or is it just that I want to edit from multiple systems?

woven sluice
#

the server should not be on a network share either, it should be an isolated machine. you could back up the server onto a network share

#

a "perforce workspace" is little more than a conceptual view of stuff on the depot... it's your window to choose what stuff on the server you want to work on. the server keeps track of everything; it keeps track of what files it has given you, and you tell it what files you are modifying

#

but the server is the single source of truth, and its file structure should not be simply raw-accessible by just anyone

#

drive mount letters/specific paths aren't relevant to anything

#

it should be possible for you to hire a new team member and (with some guidance) all they need to do is create a workspace that maps a location on their PC to a view of the server, they sync/get latest, and they're working.

#

likewise you could buy a second laptop, create a new workspace, sync/get latest, and be working

#

one other workaround that obviously isn't always possible is to only ever work from your main machine, i.e. use remote desktop

green kettle
bitter sun
#

Anyone knows why GitKraken keeps these after rebase

#

if I hadnt a local backup I was going to lose tons of data

teal bone
#

that's where you need to manually merge?

bitter sun
#

I did in kraken

#

it kept these

#

I hate VCS burn

#

so I do -> rebase -> pull

#

then this happens

#

and I merge manually

#

wait.. should I rebase remote to local?

#

or local to remote?

#

to keep changes in local

#

ugh okay I understood

#

merging still requires other merge steps

#

but GitKraken doesnt provide any UI to do it

#

how can perform merge manually?

teal bone
#

Just edit the files, remove all the merge bits.

#

Then commit

#

Github desktop says hello

bitter sun
#

nothing to do further

#

yet it has merge bits

teal bone
#

I guess they were wrong!

errant hollow
#

Does any one ever run into issues with project size or any thing similar when using Git compared to something like Perforce?

bitter sun
#

I'm unsure what am I suppose to do at this point, was rebase -> push correct at the first place?

#

I meant it didnt provide a window to handle this case

#

or any tab

#

merge just happened and those >>>> exist in the files

#

It didnt let me cherry pick etc

#

it displays raw text A_shrug

#

but it doesnt burn

#

VSCode time

#

i cant believe i ranted over something so dumb because I'm such a noob

#

all i had to do was find a merge conflict tool

woven sluice
atomic dust
#

Does anyone have any experience with Plastic SCM and Unreal?

runic summit
#

I copied over my entire synced folder to a portable hard drive because the place Im going to has slow internet - but I my make some changes to smaller files. I've made a new workspace on the new machine but I'm not sure how to map the folders, I thought I was in the correct root but it doesn't seem to recognize it

runic summit
#

I can't seem to have it recognize that the files I have in the system are the same, granted the depot's have a different date but I don't want to have to resolve 60,000

remote bobcat
#

UGS still seems to be syncing every platform even thought my filter is only set to Win64

#

Anyone else experience this?

late jungle
#

So we've started using streams in perforce but now noticed that when working in a different stream we could both check out the same file. What's the thought process behind this? And can we make that impossible?

jolly fog
#

Make that checkout exclusive. It's common for programmers to check out the same file simultaneously, since they can then easily merge the changes.

#

Makes workflow smoother

late jungle
jolly fog
#

well then the second person shouldn't be able to checkout the same file if it was checked out exclusively

late jungle
#

I know that it's common for text to not be checkout exclusive. We've been working on one stream for the most part with binaries set to exclusive checkout, but now I've added a second stream to the repository.

#

And we were both able to edit the same file

jolly fog
#

well I haven't worked on the setup side of streams. The only thing I can point you to is that setup, though. I'm working on a parented streams, for exmaple engine stream has a child, which is the game's stream. This way if anybody in any stream checks out the engine files, it's checked out in the parent stream. Guessing - maybe you have 2 separate copies?

late jungle
#

We have 2 streams and one is parented to the other

#

I assumed checking out would work like you say it would

#

What do you mean with separate copies?

jolly fog
#

two streams separate from one another,so that one person checks out the file in stream 1, while the other in stream 2

#

that would make it look like the same file is checkout out by 2 people

#

supposedly

late jungle
#

Separate how?

jolly fog
#

I'm afraid I won't be able to help you much more than that

#

I don't know how, that's just a guess of what might be happening

#

Works for me, but I wasn't the one to set it up

#

so there's probably some magic involved

late jungle
#

ugh

#

I just set up a release stream as usual that's parented to the main one. Like in the documentation.

#

I can even check out the same file myself in both streams from 2 different workspaces

#

@jolly fog what I also notice is that the revision numbers in the streams are different, is that also the case for you? However when they merge they are threated as the same file so I guess that works as intended...

jolly fog
#

which number do you mean by revision? file revision or the CL?

late jungle
#

All of the files in my new stream started at #1/1

#

the changelist numbers are shared

#

I can't find any documentation on this either

#

Anyone else know this? We can check out the same file (set to exclusive locking) on different streams, I assume that should not be the case?

runic summit
#

I copied over my entire synced folder to a portable hard drive because the place Im going to has slow internet - but I my make some changes to smaller files. I've made a new workspace on the new machine but I'm not sure how to map the folders, I thought I was in the correct root but it doesn't seem to recognize it
I can't seem to have it recognize that the files I have in the system are the same, granted the depot's have a different date - how do I tell the perforce that these later dated files are the SAME as the one in there

late jungle
#

I don't think you should do that

#

Yesterday I made a new workspace, copied my depot into it and used to following commands in cmd to set it up:

p4 -c clientName sync```
#

@jolly fog Would you mind asking the guy who set up your repo if he had to do something to ensure checkout exclusivity across streams? Because I can't find anything on this 😦

stable tendon
late jungle
#

Se even though all our binaries are marked +l, we can still check them out simultaneously when on different streams

green kettle
# woven sluice All version control systems store everything that you put into them... Yes, they...

Thanks again. Sorry for the delay. I removed the network share from my environment, and now I'm just using a Perforce server and Unreal Editor client. I know this is a lot, so if you don't feel like reading it all, can you please guide me to somewhere that may be able to help? I'd be willing to pay for some one-on-one assistance.

I have it in a state that seems to be working and I can submit changes from the editor or from P4V, but I can't seem to connect Visual Studio to Perforce.

I have the UnrealVS and Perforce extensions added to Visual Studio but it shows some errors.
When I open the project I see: P4VC not found, C:\Program Files\Perforce\p4vc.exe or C:\Program Files\Perforce\p4vc.bat

My Perforce application is installed on my A: drive, and so are all the project files.

When I try to rebuild the project, it says that "14 failed" and "build system license not activated". I'm not sure what license it's referring to.

If I try to submit files, it seems to lock up VS and then crash.

wide raven
#

We only use them for the release pipeline now. Development -> Staging -> Release

stable tendon
#

(checking w/the team @late jungle )

wide raven
#

I think streams would work great in a very compartmentalized environment, where you can be extremely confident of blobs not having conflicts

#

Unreal projects can be hard to get into such a clean architecture, unless you have a very disciplined and experienced core code lead team

#

Terminology ref : "Trunk based development"

#

It's actually not that bad, I reckon. I come from a background where we would have clear feature branches, which are integrated into mainline. Now I find trunk-based to work quite nicely as long as devs are committing pretty much daily if humanly possible ( while keeping the mainline working as much as possible at the same time ) ( Nightly builds should always have existing functionality green - new features can of course be broken, but we often hide those behind on/off flags so only the devs who want to see them can see them )

#

I suspect the majority of Unreal teams work "trunk based", as merging blobby streams seems like a total nightmare if there's any overlap... Would be great to hear AAA studio experience on these matters

#
GDC

In this 2018 GDC talk, Rare's Jafar Soltani explains how Rare changed its culture and approach for developing 'Sea of Thieves' by adopting "continuous delivery," resulting in minimized crunch and has sustainable new features to players.

Register for GDC: https://ubm.io/341ZiaZ

Join the GDC mailing list: http://www.gdconf.com/subscribe

Follow ...

▶ Play video
woven sluice
#

the keyword to search is RegisterStateBranches (i've never bothered trying it, no warranty!)

wide raven
late jungle
wide raven
#

I assumed that as well to begin with ( I tried to start work at a new company and immediately tried to do some branch/stream based work ) but quickly realized that wasnt how this is going to go : )

late jungle
#

Almost our entire codebase is blueprints so this makes streams much less useful. I guess BP isn't nice for version control anyway. But I was hoping to use it in a way to fix bugs on release and merge them back into main and this way keep new features that shouldn't go live yet safe on another stream.

#

Can you recommend any patterns/tools/good practices to quickly take out content for release builds that doesn't involve streams?

wide raven
#

That's a very good point - and indeed I would like to be able to get Development and Staging streams especially talking to each other

late jungle
#

as an alternative

wide raven
#

"take out content for release builds", clarify - you want to get certain changes only into release?

stable tendon
# late jungle as an alternative

Team got back to me, short answer is no, check out between streams isn't possible. Long answer is yes, but probably complicated. We have a feature request for that exact thing in our backlog :).

wide raven
#

Our pattern is currently something like this ( and we are just starting to really get our teeth into it )

Dev Dev Dev for a month or two
Feature Freeze ~1 week : Only focus work on last remaining bits of incomplete features that are meant to get into a patch
Code Freeze ~2-4 days : Everybody stop committing to Mainline! You can still work, but Shelve your work!
Once Release is gone through review, back to DevDevDev

late jungle
wide raven
#

Staging build is really just a stepping stone in case we MUST cherry pick some fixes

late jungle
#

Shelving is cool but not for a BP code base

wide raven
late jungle
#

I'm assuming these flags are something in c++?

wide raven
late jungle
#

Yea but if you unshelve some old BP's it will overwrite all the new stuff if there were any changes to those files

#

the not merging is just terrible to deal with

wide raven
wide raven
late jungle
#

Exactly

wide raven
#

Mostly we really just maintain absolute discipline : never stomp over a checkout

late jungle
#

what do you mean by that?

late jungle
wide raven
#

With P4/P4V, it is possible to checkout a file, even though somebody else already has it checked out. ( Unreal doesn't )
So we only allow that if somebody has forgotten a checkout / has small changes, and is willing to redo them

late jungle
#

Yea we don't do that. But we now accidentally did with streams. But even if we didn't, with streams it would still be possible to asynchronously make changes to the same file on a different stream and run into a conflict

#

BP's are just terrible in this regard I guess

wide raven
#

The shelves we use mostly to pass work around to other people and/or test stuff in builds before putting it in mainline

#

I believe a lot of AAA teams really do a lot of the heavy lifting on the C++ side, while smaller companies tend to have more BP heavy projects. We are at least 90% BP, with about 10 coders, and it's going pretty well still

#

If you are working 90% c++, the paradigm shifts back to conflicts being sort of ok ( though still undesirable )

late jungle
#

I joined a long running BP project by a guy with a limited background in programming

wide raven
late jungle
#

But the project is so far along that a major refactor isn't really worth it

late jungle
#

For instance now, someone made some LOD stuff for the characters in our game. Would you maybe put this in a LODComponent to decouple it from the characters?

wide raven
wide raven
late jungle
late jungle
wide raven
#

My pattern for UI is currently something like this:

  • W_FeatureXLayout ( Layout being the keyword that indicates this is the complete screen of something )
    which contains
  • W_FeatureXPartA
  • W_FeatureXPartB
  • W_FeatureXPartC
wide raven
#

On the cpp side, I see our code gurus doing more and more custom SubSystems for stuff like Shop, Chat etc

late jungle
#

I'm pretty comfy with cpp. So I have to get over some of the issues BP present (though I'm comfy in BP too). Especially when working in a team.

wide raven
#

I was very skeptical of BPs to start with, but I've grown to love them. Like hey, now you can SEE the spaghetti instantly!

late jungle
#

I like them for some stuff for sure. I just think the accessibility of it and the way it is presented in tutorials and stuff doesn't really encourage good architecture to self-taught developers

#

Anyways I have to go, but talk to you later! Thanks for your input!

wide raven
#

sidenote : I would highly recommend BlueprintAssist and AutoSizeComments ( if you havent got them already ) ! Cheerio!

late jungle
#

ooh that sounds promising, thanks!

stable tendon
wide raven
# stable tendon <@186851588449632257> Something else someone shared... I haven't read through it...

I think that conversation is really missing the point of what we might typically really want from a stream.

  1. Scenario: Be it artist or coder, you have a big chunk of work, say 5 days ahead.

  2. A lot of people are used to the git style flow where you have your branch, and you 'save' your work every day to your branch. Yes! You have a working history now.

  3. Once the thing is done, it is squashed and merged into main in a nice, clean single commit.

Now with trunk-based dev, there's really no option to do that, except by 'polluting' mainline with incremental changes. Commits might look something like : gun_wip_day1, gun_wip_day2 ... gun_final.

OR worse, they might figure, oh I'll just work a week locally, no submits. And then worst case happens, something gets corrupted or whatever, and all work is lost. Sure you can shelve things for safe-keeping, but you don't have history there. And not having history can really suck in many situations.

silver token
# wide raven I think that conversation is really missing the point of what we might typically...

Is it really "polluting" to commit incremental changes? I usually see it (and how I approach it) as partial progress that (may or may not) unblock different levels of dependencies. Commit with comments like you described seem like poor messages and not necessarily poor incremental commits.
Commit 1: weapon static mesh
Commit 2: weapon skeletal mesh
Commit 3: skeletal mesh markup/sockets/etc
Commit 4: texture polish

Other people might've started using that weapon for work back at commit 2 instead of waiting until the "gun was finished".

Another downside trunk-based is trying to avoid (and that you need to actively manage with some types of streams) is that you don't want people isolated in their own feature for a long time. Even if you've got yourself a feature stream you should be updating it with main every day(ish). Not figuring out a merge after 2 weeks of work. Trunk based makes this easier because you're more naturally syncing on a regular basis (right? you are syncing regularly, right?).

hushed granite
#

Hello to all perforce expert. I had no issues with my .p4ignore file. But one day it stopped working. I haven't done or change anything related to Perforce. When I set up again the file and its path, I still get the same problem : When I click on add/submit on my project folder, it will add unwanted stuff (Intermediates, Saved...). I have update P4V and still get the same issue. any idea ? i'm on WIndows btw

wide raven
silver token
#

Or optimal 😉 . In my experience smaller changes get better reviews. It's hard to look at 2 weeks worth of work all at once in a single review.

wide raven
wide raven
silver token
#

And you're right it depends. I'm looking forward to the next major refactor I have to do (though I don't know what it will be yet) so that I can use the stream to make build breaking check-ins I wouldn't be able to submit to mainline.
But I would still be merging from the mainline every day or so.

woven sluice
#

i think as of several years ago that's more or less how epic operates, they have (had) a few different stream tiers (mainline, release/1 month out, release/2 months out or something like that). using the editor's features to at least be aware of when they would be creating a blueprint conflict across streams. can't remember what video presentation i saw it in

wide raven
woven sluice
#

that feature simply does make the checkouts show up. but nothing, i think, fully enables locks across streams (as has been the going opinion). it's very arguable whether doing so would even be a good idea.

wide raven
silver token
# wide raven True as well. I am personally starting to get quite used to trunk dev, but I lik...

RE: staging and release streams - Yes, I think there's still absolutely a point to these as the simplest way to create a modifiable snapshot of the project. Labels could create a snapshot, but it's difficult/impossible to then make snapshot specific hotfixes.
Even with those streams, you work in mainline as if they don't exist. You either make changes (even binary ones) directly in release, or in main and merge to release. It all depends on the type of change. You do have to be more cognizant of binary changes when deciding this, but remember you're making bug fixes only in this stream and not doing "real" development. So binary changes are usually easier to just always make in main and merge over, but there's a place for short-term fixes that are meant to be overwritten by a better long-term solution merged from main. Code changes (or any other merge-able change) is more flexible since you can keep the changes from both streams when integrating.

woven sluice
#

one of these days before i die i'm going to just figure out how to make a plugin that exposes the streams settings to the editor so that you can just type in the names of other streams you want to keep an eye on. i can't believe it isn't in there already (as far as i know at least) lol

stable tendon
wide raven
stable tendon
wide raven
# stable tendon So if you had to write a plugin to do this, what would it be? What would it do? ...

@stable tendon

Now that I dig into it, it seems to not be so simple as to just raise cross-stream visible checkout flags as they arise and lower them when a file gets submitted into a stream. All this centers around the blobby nature of unreal development.


Scenario 1 : Independent short-lived workstream for features

Check out anything from a whole level to a single blueprint, do experimental/incremental work on it in their own stream ( typically for 3-4 days ) while the files show locked in mainline / other streams.

This seems fairly simple at first glance, but once we realize that every time the dev submits files to their stream, it is no longer checked out, and would no longer be seen as locked.

Therefore it seems to me the branch needs to have a list of touched files which propagate to mainline / other streams. The list would be cleaned along with the final merge to mainline.

Scenario 2 : Feature Freeze and Code Freeze

Feature Freeze, we finish up things in mainline.
During Code Freeze, much of the dev team must be very wary while last fixes inevitably trickle in.
A staging branch is created at the end of feature freeze.
Until the release candidate is deemed ready, mainline should not touch the critical areas.

Again, it seems we need a list of touched files.
A list of touched files might even start populating during Feature Freeze, to really guarantee keeping all the last changed areas 'frozen' in mainline dev during the critical Code Freeze time.

It would really be interesting at this point to get some insights from studios who have been using/experimenting with this sort of thing.

Another good feature could be to be able to simply select whole folders for freeze.
A well designed feature built in a tight format could then be clearly marked off without the micromanagement of single files.

So, it could be like a (dynamically and/or manually populated) .p4ignore file basically, essentially for per-stream file locking history.

#

Scenario 1 no longer seems like a very high priority any more for me, but the Release Cycle area interests me a lot, particularly for larger teams

#

PlasticSCM - detect files with newer changes in other streams - that's also an interesting angle, I presume based pretty much on some similar list file

#

Distributed locking: Or travelling locks. For example, I want to lock this file on main/task127 but only unlock it when it reaches main (otherwise, as it is today, the lock is not useful unless you are on a single branch). This enables branching for teams with lock restrictions (unmergeable content). It goes even further: I lock it, but it should only unlock when it reaches main@centralserver. Awesome, isn't it? Game devs love it, but micro-electronics teams too.

#

Plastic saw this as a thing in 2018 - but I am not sure how used this really is, or whether it does indeed cause other complications. Perhaps Plastic users might know more

late jungle
#

I ahve this issue when I use Perforce Diff in Unreal engine (4.25). I can't save some assets I had been diffing because it seems to think there are multiple files open so it can't save them. I had a similar issue where it would have a compile error in a temp diff file... deleting the files manually worked last time. But now I can't save a file I've modified because of this and I can't delete the diff files because the editor is open. So I basically have to shut down and not save...

humble wave
#

I'm just here to vent that trying to do an engine integration/upgrade using Perforce is nightmare fuel...

  • P4V runs fstat every 5 seconds, locking up the client
  • Stream copy/integrate always shows 0 files to integrate
  • Branch spec misses files that have been added in the source stream
  • Resolve / Revert takes hours when dealing with this many files

I want to think that I must be using the tool wrong, but if I don't drop down to running p4 commands in the console against carefully curated txt files with lists of files in them, I don't seem to be able to use the tool effectively.

green kettle
#

What directories should I see at the base level of my Perforce workspace when working on a basic project?

I currently have the following, but keep getting a variety of access denied errors on files that should be covered by my .p4ignore file:

.vs
Config
Content
DerivedDataCache
Binaries
Build
Intermediate
Saved
Source
.vsconfig
.p4ignore
projectname.sln
projectname.uproj

woven sluice
#

(Emphasis on "after")

#

Because ignore system only affects adding new files

#

The solution is to delete the files that should have been ignored (delete within perforce)

green kettle
# woven sluice Several of those should not have been committed to source control... Did you set...

I first submitted all files within my project folder, then I added the ignore file.

I did this because I thought the goal was to just prevent those files from being versioned/changed. Was I meant to not let those get submitted at all?

If so, oops... Would I need to mark those for delete in Perforce then submit?

When adding an existing project to Perforce, I'm still meant to add the whole project directory, right? Just with those ignored from the start?

green kettle
#

That makes sense. I should have worded it differently though because instead of "add" I meant "point the workspace to" the whole project directory. The ignore file would accomplish the same thing as if those files weren't in the directory at all from the start, right?

If I have that concept right, next I'm curious how it works when another user/computer pulls down the latest data. It wouldn't contain the ignored files, so wouldn't the project fail to compile or something?

woven sluice
#

the only thing the ignore system does is, during a "try and add these new files" action, it checks if they shouldn't be added because they are matched by the ignore file

#

it doesn't do anything else

green kettle
#

Oh that's interesting. So on computer #2 it would pull down the files I've submitted previously, (eg. content, source, etc.) and the other directories that were ignored from the start wouldn't really affect things?

Would they be auto generated when launching the Unreal Editor or by a manual action?

woven sluice
#

it's all either cache files, or logs, or local user settings, or code/shader compilation results

wide raven
#

Also, one may sometimes run into situations where something is 'weird', be in in editor or in a build, and more often than not wiping Intermediate / Binaries and rebuilding will sort things out

#

Anytime we have something behaving in unexpected ways we advise devs to clean up, rebuild and run to sanity check

green kettle
#

Nice, hopefully that sorts out some of the oddities I've been finding. Thanks all!

long mural
#

Any perforce users here?

teal bone
#

Don't ask to ask!

wide raven
long mural
#

i fell asleep LOL

#

anyone have any idea why my UGS is being weird?

#

for some reason Artist (just a test case)

#

doesn't see all the changes, and doesnt see the Editor binaries as being built

#

huh, seems i have to reveal the source code for it to work

#

urgh

long mural
#

list

Permission is granted to run Perforce commands that display file metadata, such as p4 filelog. No permission is granted to view or change the contents of the files.

#

this does not seem to stop them reading the file contents 😦

noble reef
#

Maybe it's a stupid question but before I start all the guides and stuff, I'd like to know if Perforce works with assets or code only? I'd like to make a version control of the WHOLE project I'm working on (wich consists of the usual 3D assets but also Houdini HDAs). Can I do that with Perforce?

teal bone
#

It is the best way to do it.

noble reef
autumn beacon
#

can someone help me? I already did one push but now i get this.

teal bone
#

You shouldn't be committing that folder to git.

#

Source and Config folders and your uproject. Nothing else.

#

If you use Git LFS, then Content too.

#

You need a proper .gitignore

bright parcel
#

are there sensible Git configs? I know there's a default one from github but that's really old and not quite up to date anymore imo and it doesn't include LFS

#

we're switching to Azure DevOps so LFS is no longer an issue

ornate tree
#

It's probably a question that has been asked many times.

What would you choose for a team of 10 (dev+art) as a source control and why?
I personally would prefer platforms like GitHub or GitLab + LFS. All tools are already included for CI/CD, code review, and issues. Also, I like GitFlow with feature branches more than trunk-based development.

What are your opinions?

woven sluice
#

anything ignored is all either cache files, or logs, or local user settings (like your personal editor layout or your personal editor keybinds), or code/shader compilation results

teal bone
#

No

ornate tree
#

I'm aware of a merging barrier. I think it can be minimized with a modular design and team communication. In my opinion, with GitFlow, it's easier to control what goes into production than using feature flags and trunk-based development.
A Git repo can get large in size when frequently committing large binary files, but it's possible to use git lfs prune. I'm looking for convincing arguments as to why to use Perforce + Swarm + Jenkins/TeamCity over GitLab/GitHub

#

yes, I totally agree with you

#

if I uderstood correctly, your current setup is Perforce with task streams when needed?

wide raven
# ornate tree I'm aware of a merging barrier. I think it can be minimized with a modular desig...

If you area comfortable with Git and it provides all the CI features you need, I don't see why one would change over.

For a bigger / distributed team, and depending on your reliance on Blueprints, File Locking becomes much more critical, and in addition to somewhat easier handling of big blobs, is likely the main reason people use Perforce. The streams workflow doesn't really come into it if one is using Trunk Based development pattern, as I imagine most Perforce/Unreal devs are using.

Jenkins is a great old workhorse for CI stuff regardless of what version control you use.

limber tartan
# bright parcel are there sensible Git configs? I know there's a default one from github but tha...

Here is one under the headline "Configure Git by setting the .gitignore and .gitattributes file"
https://www.anchorpoint.app/blog/git-with-unreal-engine-5

This article in general is a good ressource on how to use Git with UE. It features Anchorpoint, but you can also use GitHub Desktop or any other client.

bright parcel
#

thanks!

west grove
#

I'm trying to use nginx proxy manager to forward port 80 on my subdomain to port 1666 on a perforce docker container. I'm using the default ssl that comes with the installation. Getting the following error when trying to connect to the server:

    Remove SSL protocol prefix from P4PORT or fix the TLS settings.
SSL protocol: error:1408F10B:SSL routines:ssl3_get_record:wrong version number```

I assume the fix involves setting the ssl version somewhere, somehow? Any tips on how to do that?
merry verge
#

Perforce doesn't operate over http, you can't reverse proxy it through nginx.

fading ginkgo
#

Is there a way to automatically lock files in azure devopes for UE5?

long mural
#

@stable tendon Is there a way to still allow clients to see changes but not actually open the files? UGS breaks if i hide artists for example for seeing source code, the precompiled binaries dont show up because they dont get the changelist

limber tartan
final sand
#

Hi, does anyone know how to display perforce latest CL version in packaged builds in UE5? Or could you point me somewhere? 🙂 I cannot find much about it. So I can easily see on what CL was the build made.

jaunty hornet
#

For P4, adjusting the p4ignore file should immediately work right?

#

Like I don't need to set the P4IGNORE variable again to refresh it or something

wide raven
#

You could still do it manually, or with a .bat script or something if you are not yet using Jenkins ( which I warmly recommend for anybody really getting serious with development pipelines )

wide raven
#

Not sure if that restart means you should also restart everytime you change the contents, hmm

jaunty hornet
wide raven
#

Ah yes, good to know

jaunty hornet
#

I was wondering whether I formatted something wrong or I needed to reload it

#

It was the former

final sand
wide raven
# final sand Unfortunately we don't use Jenkins. Mannualy you mean by digging around in perfo...

Manually would be feeding the cl number 'by hand' into the build script / cmd input.
I would recommend at least setting up a .bat script to speed things up
https://stackoverflow.com/questions/9731415/get-the-changelist-number-of-current-workspace-directory

final sand
#

Oh neat thanks 🙂

fading ginkgo
#

How do I join an azure devils UE project? (Cloning and importing the project)

crimson walrus
#

I use git lfs. I know about 5 git commands. I have done one succesful merge conflict. have I arrived?

teal bone
crimson walrus
fading ginkgo
#

So I'm using git with Azure devops, and my teammate is getting this error when trying to pull git lfs "Error, object not found"

#

None of the lfs files appear in their project

empty ingot
#

Hello, I have some troubles adding my EOS directories to the github repository. The EOS has ThirdParty directory containing Bin, Include, Lib and Tools, and the only ones that are being added are Include and Tools, while Bin and Lib are not willing to be added in any way. I'm not sure whether I ever marked as them ignore, but checking all the ignore files I can't find anything related to them.

I've tried to check /.gitignore and /.git/info/exlude. Does anyone know what else I can try to do to add them?

wide raven
empty ingot
quasi blade
#

ey there, about UE Source builds, what should i send/not send over to my team so they can use the same UE build? are they obligated to compile by themselves?

wide raven
quasi blade
#

oh thanks

wide raven
# quasi blade oh thanks

example
D:\UE5-Native\Unreal5\Engine\Build\BatchFiles\RunUAT.bat BuildGraph -target="Make Installed Build Win64" -script="Engine/Build/InstalledEngineBuild.xml" -set:WithAndroid=true -set:WithMac=false -set:WithMacArm64=false -set:WithIOS=false -set:WithTVOS=false -set:WithLinux=false -set:WithLinuxArm64=false -set:WithDDC=false
REM Delete Platforms/HoloLens from the engine, it is useless unless you want it and will break build or take excess time

quasi blade
wide raven
quasi blade
#

lol

wide raven
quasi blade
#

guess im gonna be doing it another day

quasi blade
wide raven
#

I usually put these sort of things to build last thing as I leave office and cross fingers it's ready in the morning : )

quasi blade
#

no office here lol, just me and a friend trying shit out :D

quasi blade
quasi blade
wide raven
fading ginkgo
#

So I'm using git with Azure devops, and my teammate is getting this error when trying to pull git lfs "Error, object not found"

#

None of the lfs files appear in their project

#

Any help?

quasi blade
hollow fable
#

Hi. Is it worth doing version control and uploading my map_builtdata.uasset to github? it's a large file and uses up a lot of my LFS bandwith to do. I don't know if this has any benefits to being backed up or not?

If it's just about generated lighting then I can build that again if I ever move the project, that's fine. I just don't know what's stored in that file

quasi blade
solar jackal
#

Hey there. I have a UE project without Source Control.
How can create new Azure Devops repo that contains the entirety of the project I currently have?

#

The only way I know to do it is to sloppily clone an empty repo and copy paste the project, which seems far too janky

solar jackal
quasi blade
blissful cargo
#

Hi everyone,

I've got a new UE5 project that is using Git for source control. I'm trying to set up revision control within the editor but so far I've had no luck with getting this workflow to work. After going through with the initial setup I'm not able to check out any of the files under source control. The "Check Out Selected" option is always disabled (grayed out) in the "Check Out Assets" dialog. Any ideas of what might be causing this?

Git LFS is installed and the .gitattributes file allows for locking of uasset and umap files. Everything works fine with Git Bash and other external tools, it's just the in-editor workflow that doesn't seem to work.

wide raven
blissful cargo
wide raven
blissful cargo
crystal radish
#

Hey all I have a question regarding backing up a project to azure. I get the following error when trying to upload it: Im confused by the "this push was rejected because its size is greater than the 5120 MB limit for pushes in this repository". Does this mean you cant have a project larger than 5120mb? I was under the impression azure allowed for projects larger than that.

blissful cargo
bleak shore
wide raven
bleak shore
#

I don't receive any emails :/ I just need to download the addons there.

wide raven
bleak shore
wide raven
bleak shore
#

Can you download the addon directly from the right instead of the source codes?

wide raven
bleak shore
woven sluice
bright parcel
#

we're experiencing a lot of crashes trying to clone/pull or push LFS files to or from git
I read that git configs might help but i'm unsure what settings would be appropriate for an unreal project, got any ideas? how are you handling LFS?

#

this is on AzureDevOps btw

blissful cargo
crystal radish
#

When using Azure, what is the limit in terms of project size for the free tier?

bright parcel
quaint obsidian
crystal radish
bright parcel
crystal radish
bright parcel
#

so you have a gitattributes file with the proper includes and git LFS is initialized?

#

there is no size limit in the repo but you can't push more than 5gb at once. You'll have to split it up in several commits that you push one after another

crystal radish
#

so that is the way around it?

bright parcel
#

i mean that's what it says

crystal radish
#

And yes, I do have a gitatributes file with this in it: *.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text

#

I've tried Github desktop, Sourcetree and Anchorpoint. Anchorpoint is the only one that works immediately first try. Does this mean they are dividing uploads into 5gb chunks?

bright parcel
#

idk. If LFS is initialized properly the others should also work but maybe anchropoint does some magic in the background

crystal radish
#

I've seen countless videos on youtube and read the doc that was shared to me here a while ago. Im not sure why LFS just wont work for me (unless its anchorpoint). Are there any blog posts or videos that you could recommend that do a step by step? I've been loosing sleep on this thing for days and days and I cant get it to work.

bright parcel
#

it's usually just one command to initialize it and afterwards you can add rules to it via the gitattributes file and it just works. you won't really notice it

#

if you have added stuff in preparation for a commit you can use git lfs status or something to check which files are tracked

crystal radish
#

Once I create a repo in github desktop, I go to the "repository" menu, then "open in command prompt". When the command prompt opens, I paste this (from azure devops). Is that not correct?

bright parcel
#

i usually set up an empty repo in the backend then pull it to an empty folder. Then i set up gitignore and gitattributes and then i add my project

crystal radish
#

To be honest, I do none of it by hand. I just dont have the know-how

bright parcel
#

I'm no expert. To me it looks like you just created a project / repo and you're pushing it in it's entirety without any additional setup

crystal radish
#

what would that additional step be?

bright parcel
#

probably git init lfs (or whatever the init command for lfs is) in between

#

but again idk

#

I'm using git Fork as visual client

crystal radish
#

is that the equivalent of github desktop?

bright parcel
#

it is one of many git clients you can choose from (including github desktop)

crystal radish
#

gotcha, i'll give that one a try. I hope to eventually get this to work

bright parcel
#

it doesn't have much documentation sadly

crystal radish
#

thanks for taking the time, its been a tough road with more questions than answers

fierce path
#

is anyone using perforce in pc ? (helix core)

pulsar parcel
#

"in pc"? but yeah, there are plenty of people in this channel with p4 experience

fading ginkgo
quasi blade
fading ginkgo
#

It's just giving a super long error filled with "object not found"

#

Btw, another issue, I'm pushing changes without errors, but on the azure devops page, it doesn't show that any files changed?

#

@quasi blade

#

But I can pull

quasi blade
fading ginkgo
#

no problem, thanks anyways!

crystal radish
#

Do LFS files count towards a push limit (5gb) on azure devops?

blissful cargo
# quaint obsidian no the built in one does not support LFS

Ok, that could potentially explain things. Will give it a try! Seems a bit odd though given the revision control workflow in Unreal. I mean how would you even check something out without LFS since Git itself doesn't have any built-in file locking?

quaint obsidian
#

it doesn't check anything out

blissful cargo
clear otter
#

Hi, friends! We've recently been able to get Unreal Game Sync (UGS) set up to sync precompiled binaries across our network of workstations. However, to even get source working (i.e. able to build) we had to enable AllWrite (I know, evil); which leads to the issue that we have UGS+precompiled binaries, but now all of our changelists are uncontrolled, which is bad (evil). Between Unreal documentation, Allars guide, and Oral Kaplan's YT tutorial series, we have no concensus on wether allwrite is the right way to go. It seems wrong that the "fix" would be to set allwrite to make engine source compile when pulled but then have to deal with manually checking out files. Especially since we use One-File-Per-Actor. Even if we didn't, manual versioning is unsustainable. Any advice is welcome, sorry for the wall of text!

silver token
clear otter
#

nope, the whole workspace... 🙃

silver token
#

Yeah, that's definitely wrong.
Nothing in perforce should be like that, even when using precompiled binaries.
The binaries that are created when compiling locally shouldn't be in perforce at all. they'd get built locally.
Non-engineers sync the precompiled binaries from someplace else and UGS puts the binaries where they would have been built if compiling locally.
You shouldn't have to manually checkout any files when working in the editor if the editor is connected to source control properly. It will do that for you (or warn you if you can't). I haven't worked with OFPA yet, so I'm not sure what the workflow is there when it comes to source control. But the Editor is more than capable of checking out what it needs to (editing maps will sometimes check out multiple files).

fading ginkgo
#

Does anyone knoe why I get the error "LFS Object Not Found" when trying to clone an azure devops repo?

clear otter
# silver token Yeah, that's definitely wrong. Nothing in perforce should be like that, even whe...

Thanks, @silver token - this was my argument as a non-dev. It has a particular "smell" to it that screams that allwrite "fix is not a fix". Problem is that when we try and use a non-allwrite workspace for pulling and building the engine, the compiler (GenerateProjectFiles.bat) complains it cannot compile the engine since access is denied... this lead the team to use allwrite as the (evil) cure and put us where we are. Doesn't help that in this tutorial (https://youtu.be/xuEXqZ0nE70?si=cY2FYLQUe8aqitq0&t=300) he states to use AllWrite as the cure but of course we never see the end result (issues) when it comes to using the engine...

silver token
# clear otter Thanks, <@310754175808045067> - this was my argument as a non-dev. It has a part...

Frankly I'm not going to watch that video if you're telling me that he's got it wrong anyway.
He/your team probably added things that shouldn't have been to perforce which is why the compile can't access some files. I've done this by accident at home when pulling a new version and it can be annoying to undo.
But you absolutely don't need to rely on AllWrite to get a source control setup working properly for all users with or without UGS (we have UGS at work, but I don't use it at home)

clear otter
stable tendon
#

Don't forget that Perforce has a bunch of great videos on YouTube 😉 https://www.youtube.com/@PerforceSoftware

silver token
# clear otter Oh yes, didn't mean for you to watch it of course - just referencing the author....

Neither solution is going to be great for undoing this. whoever is responsible for your depot will either need to go through and delete various binaries and intermediates folders (which can be difficult to track down and can trigger local rebuilds for those that do it)
Or prop a new depot from scratch but do things in a more correct order so that those files don't get in there in the first place. This then requires a resync/build by the whole team. But there's no chance for there to be stuff left that should have been deleted.

clear otter
silver token
#

@stable tendon
Sorry in advance for the ping and the wall of text. We tried to setup our project with streams but ran into some difficulties and they all got collapsed back down to a single one. I'm trying to understand if we did something wrong or if I fundamentally misunderstood something with the setup and usage of streams. I've tried to simplify the example to make it easier to discuss, hopefully I don't omit a meaningful detail.
To start, we set ourselves up with three streams: Game, Engine & Plugins. This seemed like a reasonable approach to a) share the Engine/Plugin streams across projects and b) minimize the scope of any one stream merge/copy since they're each updated on a different frequency. Game is the main working stream and it would import (or import+) the Engine & Plugin streams.
Next, it was time to do an engine upgrade so we created dev streams for each and added new imports so that Game-Staging imported Engine-Staging/Plugin-Staging. Is this where we started to go wrong? Is the import process not really supposed to be used in this way? It didn't seem like there was an obvious way to "update" part of the stream configuration (Game-Staging) we branched from (Game). It seems like the same setup would be required when doing release streams as well making branches for each stream but we never got that far (and seems potentially cumbersome, though not necessarily required for all Game-streams). Eventually we had a stream mapping that seems to work though may not have been entirely correct.

#

Our last major sticking point before giving up on multiple streams was that after having a working build from the combined Game-staging stream we encountered difficulties copying back to the source stream. It seemed like the only way to do the copy-up was to have a unique workspace for the stream. You couldn't be working out of the Game stream with import+'s and do the copy up. This makes working with those streams more cumbersome, but also prevents you from checking in all updates from the Staging streams to their source streams as an atomic operation (which leaves you able to sync to a CL that may not build). I wasn't directly involved in this step so maybe they also did something wrong or didn't do something they could have. This is just what was reported back to me.
I went through various p4 docs about streams and stuff back when we were first switching from a non-stream depot, but perhaps I didn't synthesis the information or read the right description. Thanks in advance for any insights you might have.

spring elk
#

Hello,

Our group is using Perforce for version control UE 5.3. All our developers have Perforce enabled in the source control for UE.

We are having a saving issue with two of our developers. When attempting to save they both receive the same saving error message:
"The asset '/Game/Car/LAModel/LA_mass'(LA_mass.umap) failed
to save."

The message log says:
Can't save D:/Unreal Projects/Perforce_Worksapces/5.3/F/Content/Car/LAModel/LA_mass.umap: Graph is linked to object Level /Game/Car/LAModel/SubLevels/RaceTrack_GeoV2.RaceTrack_GeoV2:PersistentLevel (ActorsToIgnore) in external map

We are very new to UE 5.3, and we do not know how to proceed. Any insights to help us move forward?

Thank you for the time and help.

This message was also posted under ue5-general but was advised that it would be better to post here.

silver token
# spring elk Hello, Our group is using Perforce for version control UE 5.3. All our develop...

Based on the log, source control isn't related to your problem. Somehow you've gotten an asset reference that the engine isn't expecting into the LA_mass (more specifically to the PersistentLevel).
It's hard to say what's happened to cause it though. It's weird that it's only two developers and not everyone. Either they've done something locally (which you could wipe out by reverting or force-syncing that asset to be the same version everyone else has) or it's actually something that's affecting anyone else that opens up that map (but they're the only ones that have done that and reported it). You could use source control to roll the file back and loose the changes. Or you stick with the current revision and try to remove that reference the Editor doesn't like.

spring elk
fading ginkgo
#

How do I clone/get lfs files from azure devops? I'm getting the error "object not found"

wide raven
mellow monolith
#

What would I need to do to get my c++ files on version control so that my team members will be able to use the project as well?

woven sluice
clear otter
fading ginkgo
unkempt dawn
#

so im setting up a fresh perforce server on my pc atm for a small collab with someone and i got a question regarding the p4ignore file. its the first thing im trying to commit to my project to try start off as clean as possible and i was wondering if these entries in my p4ignore will also ignore subfolders or will they only ignore folders that are in the same root folder as my p4ignore

#

just trying to find out if i should have my project directly in this same root folder or if i can have it in its own subfolder

#

oh or does it depend on the placement of the asterisk

narrow depot
#

for those who use github, do you also use github desktop, why or why not?

#

pls @ me

rustic dagger
#

it's easy to use

#

so

#

I could use the CLI itself but I like clicking buttons instead of typing commands

onyx burrow
#

Does somebody know if Helix Core does run on MacOS I see multiple references on their page but can't find an installer.

thorny mason
hollow sleet
#

is there any guide on how best to set up virtual streams for artists & programmers in perforce?

hollow sleet
#

https://www.perforce.com/manuals/p4v/Content/P4V/streams.virtual.html I tried setting up a virtual stream using this guide
Main stream looks like this https://i.imgur.com/d4Rlybf.png
Programmer virtual stream looks like this https://i.imgur.com/BH8QIet.png https://i.imgur.com/0NJa6vw.png
Main stream has my UE project in it with binaries, however I tried creating a workspace for programming but I'm getting nothing at all when doing Refresh or Get Latest, any idea what could be the cause? https://i.imgur.com/ecg8K9e.png https://i.imgur.com/oMlRA3K.png

#

nevermind fixed it, I needed share .. before the exclude

hollow sleet
#

if you have multiple workspaces do you really have to have each of them in a different folder with a different copy of the project? can't it be like git where you have one local copy and switching workspace adds/removes the changes between the previous and current workspace?

cyan jay
#

If you change the stream mapping/workspace mapping on the workspace it will work like that.

hollow sleet
#

alright, thanks

stable tendon
hollow sleet
#

Is there a perforce command to delete every file that's covered by a newly added p4ignore?

#

only thing I can find online about the subject says to delete everything manually

#

I'm also not entirely sure how I'm supposed to go about making a p4ignore that'll automatically work for anyone connecting to the server without having to be set up manually on each machine

#

I'm not even sure the one I set up is working

cyan jay
hollow sleet
#

ok it seems to work locally

#

now I have no idea if that'll carry over for whoever joins the project next

cyan jay
hollow sleet
#

do they have to run that specifically in a console opened in the workspace or can they just open a console wherever and it'll work

cyan jay
hollow sleet
#

alright, thanks

silver token
# stable tendon From your description, you're really really close. I think you might be a bit gr...

Thanks for the reply.
I'm not sure I understand how the the type import changes anything.
We'd already made all the changes in the staging streams before messing with the imports of mainline.
The problem was with the integration back up from the staging streams. We couldn't seem to make that operation atomic because each integration required a workspace unique to that stream that could only work on files from that stream. So if you commit any one integration from staging to mainline you break your build until all are independently submitted from separate workspaces. The import+ was more of an attempted workaround where we hoped we could temporarily change the import long enough to perform the integration up as a single change. Then we would have changed the mainline back to non+ imports.
I've got to do a 5.3 upgrade at home so I can do it with my own setup and get more hands on experience with what they went through.

fading ginkgo
#

Does anyone know if anchorpoint is free for a team of 3? (I'm using azure devops as thr source control)

stable tendon
silver token
#

🤷‍♂️ Gotta do the upgrade anyway.

tranquil marten
#

hey pros, how do you do version control and folder workflow for a plugin that is shared beween multiple projects?
so i made studio internal plugin, we need to update it but also use it in several deifferent projects

warm grove
#

Perforce force get revsion on a folder, sometimes some files will be missed and not updated. This will happen more frequently when force get revsion exceeds 10,000 files. Has anyone encountered similar problems?

stable tendon
#

@warm grove How many files do you have in a folder? Are they in nested folders? Or just 10k+ in one single folder?

runic summit
#

I had to do some offline work so I copied over my entire project folder and made some changes to it but probably only touched 1% of the entire thing.

Since they are binary files, perforce will be able to tell the difference and not just look at the creation file date from Windows and think oh these are different files entirely that are update the entire depot, Right

It would be a lot easier for me to just check out the entire project, copy over the remote project override it and then revert unchanged. I just don't know if the different file date from Windows is going to make perforce think that it has changed or not. (Not sure if that is a separate tag sort of thing versus the actual contents of the file being binary)

silver token
#

@stable tendon Okay, I think I found what we got tripped up on.
The first image is my stream graph, then the Mainline stream mapping and the dialog I get when trying to do the copy-up from Starfire-staging to Starfire.
Even though Mainline has an import+ on Starfire, it won't let me do the copy up unless I make a Starfire specific workspace.
But if I do that I wouldn't be able to submit the copy-ups from both staging streams as a single change list.
It doesn't matter very much here, but is what we were concerned with at work.

Edit: HA! but a commandline 'p4 copy -S' works just fine.

deft tinsel
tranquil marten
#

i also thought about a local repo and sym links

deft tinsel
#

My response is how I've done it 😉 . I haven't tried sym links for this specific use case but I'm happy with what I've got.

runic summit
#

Can someone confirm this for me please?

stable tendon
#

Hey Blakestr, we check if the content was modified. ChatGPT is correct :).

runic summit
stable tendon
limber tartan
elder hare
#

Hey all, could anyone help me in p4v real quick to make sure i've checked in any files that differ locally from a remote server? I need to double check on a job and perforce isn't my familiar source control. down to compensate anyone for 15 min of their time if it's not just a quick tip haha

reef oriole
elder hare
#

@reef oriole exactly! is that in the p4v gui?

#

not sure where to find that

#

ah reconcile offline work?

reef oriole
#

On your workspace tab

#

Beware that it can take a bit of time (or a lot of time on a big unreal project with the engine built from source inside the repo 😅 )

elder hare
#

My issue is that I only want to reconcile for a particular folder

#

but it seems to scan the whole repo

reef oriole
#

It's a good idea: so from the workspace (or repo) tab, you select the folder and right clic on it

elder hare
#

the top 3 files i need to check-in for sure

#

but all this other stuff 2182 files "local files not in depot"

#

that confuses me

reef oriole
#

I don't exactly know what you have locally: it seems that you may have an engine source folder (or some source files from the engine perhaps?) that is not checked in / not submitted to the repo
(not possible to tell without seeing all the file paths)

elder hare
#

weird though ya it's a lot and i definetely didn't put that into my local workspace folder

reef oriole
#

But like I said, please cancel and try with a selected folder to only Reconcile (on the "Content/" folder typically, for Blueprints & assets etc)

elder hare
#

thanks!! : )

#

last question. Now I want to make sure what I have is exactly what's in the repo. What can I select to discard all changes and go to the head?

reef oriole
#

First, given that you just did a Reconcile, there shouldn't be any change in the selected folder

#

Second, you can use "Clean..." instead, on the root of your workspace (not that it will want to delete any local source files we have seen above, pay attention at what it is)

cunning surge
#

Hello. My team and I trying are trying to move to 5.3 but we are unsure how to properly update Unreal Game Sync to build with the new version.

#

I have gotten this error when using game sync after updating the engine
Couldn't find target rules file for target 'UnrealHeaderTool' in rules assembly 'UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

fading ginkgo
pseudo granite
#

hey, I have a big issue with pushing the current build of an UE project to it's git repository.

I'm trying to get the current project files onto the repository but I have yet to do it, the whole repository is blank because each time I try to publish the branch to get the code out there, it says "The remote disconnected".
any ideas?

(Win 10)
(Github Desktop)
(UE5.2.1)
(26GB project size)

rapid coral
#

Hi guys, I just setup UGS, I can see the changes and stuff, but when I sync from new workspace I get an error: "Sync Errors occurred".
I set the retry count to 128 retries, that did not work. The path is not 260 chars long so it is not path length problem.
When I go to p4v and sync it manually then it works just fine, but fails on another random file. Do you guys know how to fix that?

rapid coral
#

ok, it is because of the encoding, some files were set to type unicode instead of text

pseudo granite
reef oriole
pseudo granite
limber tartan
ornate tree
#

Hey @stable tendon could you advise me on the following:

I have a Swarm instance configured as a Perforce extension and have basic Jira integration. I want to close associated Jira issues when a Swarm review is accepted and submitted. How should I approach this? Is there built-in functionality for that, or should I create a custom extension that will communicate with Jira?

pseudo granite
#

yea so my question right now is how do people actually collaborate on any project with other people using this engine.
is this idea of people working together on UE projects basically just a fake, gigantic lie perpetuated by the entirety of Epic games and the industry?

Because I don't see how anything else could possibly be the case.
considering the fact that I have a project that does not even reach 30GB and yet I have yet to upload it because the "Remote has disconnected" whatever that means.
And I am being told that perhaps my storage size is too much for git.

well, where does that leave us exactly?
source control is fine for UE but only if project sizes are below 25GB?

what about every project in history that takes up more than that amount of space?

it's 25GB, that's a decent game size right there, compared to the average game now days, that's nothin.

It's UE5.2.1
LFS is installed
my attributes folder has ↓

*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text

Raw Content types

*.fbx filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.xcf filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text

so LFS is attempting to be used with the project

it's 26GB and yet the entire thing is fumbling by throwing a vague error in my face which reads "The remote disconnected".

#

I thought source control + UE was supposed to be used for collaboration in unreal engine projects,
I don't know guys. I have not been able to confirm this yet.
So far, it seems like git is a cool word to say and doesn't really involve much else.

Does git actually work with unreal engine projects? or do people just say this because "well, it actually doesn't but it would be cool if it did"
How can people say that source control is "the way to go" with collaboration when you actually cant collaborate with it?

what's that? git is actually useful and functional with unreal engine?

ok, sounds good dude...

Then Prove it...

reef oriole
#

I thought source control + UE was supposed to be used for collaboration in unreal engine projects,

  1. The vast majority of game studios use Perforce, that can be used for massive game project, and can also be hosted by yourself for free up to 5 users
  2. I am personally working on an alternative called Plastic SCM, now Unity Version Control, with a supported plugin for Unreal Engine. Plastic SCM cloud has a free trial for 3 users up to 5GB.
  3. Many people here are able to work with Git and LFS with various git providers since Github with LFS can very quickly become expensive
pseudo granite
reef oriole
reef oriole
#

Perforce will basically requires you to host yourself your server, but you can do it on the cloud
Plastic SCM / Unity Version Control has a cloud offer with a free trial up to 3 users and 5GB of storage, you pay for what goes above only

pseudo granite
ornate tree
gaunt lily
#

Hello, I've been continuously looking over the past 3-4 days for what version control software & hosting services to use, and I saw multiple opinions with some recommending git, some perforce, some plastic, some even tortoisesvn. I want to ask here too as I know here are lots of experienced developers that hit this wall too in the past. Can someone please recommend me a client and a hosting service? Should I host it in the cloud, or should I try hosting it on a NAS and open a port so a friend of mine can access it to? We are just two people for now

#

Also our game is around 30gb for now, but it's in the very early stage so it might grow pretty rapid, maybe even 100gb

cyan jay
gaunt lily
#

I found a step by step tutorial made by perforce on youtube on how to set an aws server, seems double, but I don't know if there could be any complications along the way, or if the cost might be too high or idk

cyan jay
#

AWS is quite expensive compared to some other options, but we're probably not talking much in the grand scheme of things.
Digital Ocean have a Perforce deployment you can use too.
Or you can host a VM on any provider (I use Contabo which is good and cheap for large storage) and set it up from scratch yourself.

#

Some tutorials are good, some are bad.

#

If it's an official Perforce tut then hopefujlly it's decent 😄
Setting up for Unreal projects has some special steps you wanna follow, around configuring typemap, ignores, etc.

gaunt lily
#

Ok so you recommend perforce, with either aws, digital ocean or some custom hosting although i'm not familiar with that at all, i'll do some research

#

Thank you

cyan jay
#

Yep, with perforce there's not really any managed hosting service I'd recommend. Assembla is the only one I know of but it's expensive and when I used it about 7 years ago it was slow.

gaunt lily
#

I know about assembla too, it's around ~55 dollars per user per month, which yeah, it's pretty expensive, especially for a starter project

#

I'll do my research with configuring my own on one of those providers

#

Oh, sorry I forgot something

#

let's say I manage to configure my own, it's all good, up and running

#

is there any kind of maintenance you have to do?

cyan jay
#

In theory you should be taking backups right? 🙂
Other than that it's basically nothing. I can't remember the last time I logged into our perforce VM.
You can upgrade your server quite easily (assuming linux + package manager install) but it's not a requirement.

gaunt lily
#

Yes, I wasn't talking about backups. I intend to do those every weekend or at least once in two weeks

cyan jay
#

For a small team, backing up the entire VM (when you know it's not in use) is a viable solution.

#

Or you can go a bit more complex with cron jobs etc

gaunt lily
#

No idea what those are😅 but I intend to manually back it up every now and then

#

So other than that, there is no maintenance to do for the server?

cyan jay
#

pretty much nothing

gaunt lily
#

I heard some people saying that "if you create/manage your own server, you'll barely have time for your project itself" which sounded crazy to me but scary at the same time

#

I'm not saying those people were experts by any means, just people around the internet

#

But wanted to make sure

cyan jay
#

If your server is setup "correctly" then there's nothing. Like I said, probably been > 6 months since I logged into the VM for our team.

#

That's a big 'if' though - lots of tricky details when configuring server and clients

gaunt lily
#

If you have time, can you maybe give me a link / links to a good tutorial for setting up? Or maybe some directions on what to search up

cyan jay
gaunt lily
#

Got it, thank you so much

#

Have a good one!

cyan jay
#

good luck 🙂

gaunt lily
#

thx, think i'll need it 😄

cyan jay
#

Tbh, I'm impressed with this, whoever wrote the game quickstart for perforce has done a great job!

#

been a while since I looked for something like this

gaunt lily
#

Great to hear

cyan jay
#

oh btw during setup, if you get asked, make sure you install Case Insensitive server

#

on Linux, wouldn't recommend installing server on Windows

gaunt lily
#

Ok, noted, no windows, case insensitive

wide raven
bronze plume
#

... guys, I think I've finally fine-tuned my gitea+LFS+UnrealLFS2Plugin setup into reasonable configured parity with perforce. Does anyone think it would be worth me making a tutorial about all this shit?

reef oriole
# wide raven Greetings. What are your thoughts on Plastics feature which allows file locking ...

Yes, these "Smart Locks" are truly valuable and often exactly what we need with Unreal Engine: when you lock a file on a branch you may not want someone else being able to check it out on any other stream (it's configurable to leave some branch aside, eg from hotfixes release branches etc)
https://blog.unity.com/engine-platform/unity-version-control-smart-locks

hollow sleet
#

hey, I'm trying to set up a jenkins bot to build binaries following this tutorial https://unrealcommunity.wiki/jenkins-example-windows-installation-perforce-z98w4map , and it's successfully building them but it won't submit them, and when I try to do it manually from perforce, checking out the binaries files takes forever and gives me this error
any idea what could cause it? the only differences between the tutorial and my setup are that jenkins is on the same machine as the perforce server, and we're using UE5 instead of UE4
the jenkins build job thing returns success rather than failure too

This page provides information on setting up a basic starter Jenkins CI environment.

hollow sleet
#

ok I managed to submit the binaries manually by opening p4v in administrator but jenkins still isn't doing it automatically

hollow sleet
#

fixed it, for posterity I forgot the /... after "Binaries" here

wide raven
hollow sleet
#

nevermind it didn't fix it

hollow sleet
# hollow sleet nevermind it didn't fix it

the publish path was the problem after all, it's fixed and submitting properly now
now all I have left is setting up the perforce server trigger so that the build gets started automatically whenever anyone pushes anything
is this only possible through command line or is there some UI in the admin app for it?

cyan jay
hollow sleet
#

alright, thank you

wide raven
hollow sleet
#

oh so there's no need for perforce side stuff?

wide raven
hollow sleet
#

Thank you

#

seems like it working, weirdly enough the previous build is considered a change by jenkins resulting in it always starting a build after every poll
I doubt it's gonna be a problem long term though

wide raven
hollow sleet
#

I mean it does find a new CL

#

it's just that it's the one the last build submitted

wide raven
#

Ah, if you build pipeline includes submitting something, yes, that will trigger it. That doesnt sound optimal ( it will get stuck in a loop building forever?? )... what are you submitting on each build?

hollow sleet
#

binaries, I'm setting this up to have jenkins build them for artists/designers whenever programmers change CPP

wide raven
#

Hmm... You're going to have to figure something out for that, since if I get this right, you will be in a build loop forever, each build triggering the next one

hollow sleet
#

I think the only ways I could fix that is rearranging streams so instead of the programmer & jenkins streams being virtuals of main, the programmer stream is properly separated and jenkins only checks that for changes somehow

wide raven
#

Yeah, each jenkins workspace is bound to one p4 workspace

#

you can call p4 stuff in the Build Steps -> Execute Shell area, so that should sort you out if you come up with a clean plan for the pipeline

#

We just have all the designers know that if editor errors out on play, have to go and doubleclick a .bat file we made which clears Intermediate, Regens solution, and go Rebuild in IDE... but granted it might be worth it to have all that automated away

hollow sleet
#

I'd rather designers and artist not have build tools etc at all
plan is to tell them if they get errors they should close the project (if it started at all) and wait like 5mn for a build

wide raven
#

Yeah, if you are getting c++ changes on a daily basis, it's probably worth it. ( We are like 90% BP, so it's not such a big deal for us )

hollow sleet
#

we'll probably not have as many cpp changes later down the line but still

winter parcel
#

Hi! how to properly clean huge perfoce server with outdated data?

e.g. I have files in depo already removed in head revision. how to obliterate all them once ?
e.g.2 I have 3years server and sure I want to remove all files revision older then half a year for example.
all I got from doc some tricky way exist to obtain for a list of files like I can got from p4 have ( or p4 files and fetch deleted files list ) and make obliterate command eat this list and obliterate all except listed in this list.

long mural
old anchor
hard cobalt
hard cobalt
#

I get these error. And im on version UE5.2.1

pseudo granite
#

Cant connect to the perforce server that I have set up on my other PC.
any ideas?

old anchor
#

Maybe the address is incorrect in your host file

#

What OS/Distro?

pseudo granite
#

any documentation / video to point me in the direction of for how to allow perforce through the network?

old anchor
#

What OS/Distro is the server?

#

And if there is a message that "No such host is known" it means you're computers aren't communicating to each other. Can you ping the sever server from the client?

pseudo granite
#

can this be done with the regular command prompt?

old anchor
#

Did you misspell HSsever?

pseudo granite
old anchor
#

You don't need to hide internal network ip addresss

#

Only external