#source-control

1 messages · Page 29 of 1

narrow depot
#

yeah its classic

woven sluice
#

if still getting set up, would be a good time to switch. but it'll still be good practice to sort this out 😄

narrow depot
#

can i convert it to stream maybe?

woven sluice
#

sadly no way to convert

narrow depot
#

dang

#

yeah its pretty far out now

#

so would it be a workspace setting?

woven sluice
#

no it starts with a new depot

narrow depot
#

oh

woven sluice
#

you would have to spend about a half hour watchign perforce's videos on streams so you don't get super duper confused first

narrow depot
#

so instead of sorting it do that?

#

alr, Ill watch some perfoce stuff then

woven sluice
#

i think just about anyone would recommend using stream depots overall and abandoning classic, so maybe yeah

narrow depot
#

after wards remake the project?

#

or well copy the project into a new depot?

#

also any video i should start with?

#

im doing this one

#

In this video, you will learn how to connect Perforce to Unreal Engine as an Admin. This tutorial simplifies the process and shows you how to do this from start to finish.

Connecting Perforce to UE is the industry standard version control system that will later allow you to collaborate across teams and enable multiple users to edit the same lev...

▶ Play video
#

and this guy sets up a stream to use

#

idk if he does it corrently though

narrow depot
#

alr just made a new depot

#

the one with the stream

woven sluice
#

Yeah after you're happy with it you can delete the old classic depot you'll lose the history but it was only 100 commits/changelists so...

narrow depot
#

and how does chandell connect to the new repo?

woven sluice
#

it's the same server? new workspaces for both of you though to map the new depot

narrow depot
#

got it

#

and yes its the same server and a new workspace

unreal mirage
#

Does anyone know why and/or how I can disable the Unreal Editor from putting a "#changelist validated" at the end of every submit that I do from the editor ?

#

I removed the "#changelist validated" from the little editor dialog that opens up when I want to submit something but it doesnt seem to count that in

arctic hornet
unreal mirage
#

hm, sadge that I can just turn that line off..

arctic hornet
#

afaik there should be a way to disable it, I just don't remember how honestly

#

so let me dig though the code real quick since I just got back home

woven sluice
#

"Enable Validation Tag"

#

?

arctic hornet
#

yeah, just found it... in C++ it's bEnableValidationTag which would become "Enable Validation Tag" indeed

woven sluice
#

what does this "validation" even do 😄 i have never submitted to perforce with Unreal lol

arctic hornet
unreal mirage
#

yeah its quite important for staying consistent

#

and not letting ppl submit bad stuff !

arctic hornet
#

in lyra for example it validates that you have all your dependencies in the same changelist (so you don't push half of the stuff for example)... we use it to validate for some old issues in all the maps, naming consistency etc.

arctic hornet
unreal mirage
#

yep found it, thanks !

woven sluice
#

ooh ok, UObject validate funcs or something i assume

#

or no, something you add specifically for version control?

arctic hornet
#

it isn't tied to VCS in any way

unreal mirage
#

yea nvm as klukule said

arctic hornet
#

epic just has the feature since they use it in conjunction with submit tool

#
  • they have perforce triggers to reject changelists without such tags etc.
unreal mirage
arctic hornet
#

we mostly use SubmitTool as a unified place for every local test ("does it compile locally in non-unity?" "are all the assets valid?" "are the jsons valid" etc...) but we also use it to start preflights in horde, which is prety much simplified version of our usual CI job

#

that way we catch most of the potential issues before they are even pushed

unreal mirage
#

hm yeah sounds reasonable

arctic hornet
#

and what slips through this we then catch in our regular CI which runs on every change (i.e. build an editor and game, and cook a game for all our target platforms)

#

this CI pipeline usuaally takes about 10 minutes per changelist since we heavily utilize UBA caching and incremental cooking

unreal mirage
#

Do you also use the Cloud DDC ?

arctic hornet
#

yes, but in this case it doesn't play a big role

unreal mirage
#

I was thinking of implementing it as a few team members of mine have a horribly bad CPU and it hurts watching them wait for hours just for a few shaders...

arctic hornet
#

here we mostly utilize UBA cache for code compilation and incremental cooking which uses local zen - in our case... although at epic they instead disable per-buildmachine zen and have one shared zen for their whole cluster - saves disk space and also allows for better sharing

arctic hornet
#

this is our "Cook" CI job

unreal mirage
#

hm hm i see

arctic hornet
#

and this is our Code compile job (for now they're separate thing, but I'm working on unifying them)

#

funnily enough staging for UGS takes the longest

#

since it includes stripping all the PDBs etc..

unreal mirage
#

Do you run all that locally or do you have a server set up ?

arctic hornet
#

well yesn't 😄

#

it's a bunch of dedicated servers... but they're locally hosted in my office

#

so it's locally, but not my workstation

unreal mirage
#

ah yeah got it

arctic hornet
#

gottaq check why compute03 died 10 minutes ago though

unreal mirage
#

hmm hmm, would you know a good provider for setting up a cloud ddc server by any chance?

arctic hornet
unreal mirage
arctic hornet
#

but I'd say any provider where you get good connection...

#

easiest would be AWS, but also kinda expensive since it's obviously a lot of data

#

as a small team of 6 we're talking about 4-5 TB of egress monthly

unreal mirage
#

yeah no that sounds like AWS will drain my wallet

arctic hornet
#

although our project has raw asset size of about 150GB

#

so quite a large project, with ton of textures, materials etc.

#

our cloudddc storage stats

#

about 3.1 million objects and about 85 gigs of storage

arctic hornet
#

since if you're in Europe there are quite cheap providers which could be easy to set up

unreal mirage
#

yes Europe

arctic hornet
#

if you're in US it's worse/more expensive but still doable

#

ok then... Aucion server or a VPS at hetzner would be your choice... or same at OVH

#

they provide unlimited egress, usually limited to 1gbps... but just slap a linux machine there, install cloud ddc (and optionally add minio for self-hosted object storage and done)

#

just don't deploy mongo as a backend for cloud ddc and instead go with scylla

#

mongo doesn't scale well about 500k to 1m objects

#

which you can reach quite easily

unreal mirage
#

hm got it

#

are there any recommended specs for a cloud ddc server ?

arctic hornet
#
services:
  scylla:
    image: scylladb/scylla:6.1.5
    restart: unless-stopped
    command: --smp=1 --developer-mode 1
    volumes:
    - scylla-volume-1:/var/lib/scylla
    ports:
    - "10.0.10.5:9042:9042"
  unreal_cloud_ddc:
    image: registry.{REDACTED}/unreal-cloud-ddc:5.6.0-16260
    restart: unless-stopped
    ports:
    - "10.0.10.5:57001:57001"
    - "10.0.10.5:57002:57002"
    - "10.0.10.5:57003:57003"
    - "10.0.10.5:57004:57004"
    - "10.0.10.5:57005:57005"
    - "10.0.10.5:57006:57006"
    configs:
    - source: cloud_ddc_config
      target: /app/appsettings.Production.json
    environment:
    - "CORECLR_ENABLE_PROFILING=0"
    volumes:
    - ./storage:/data/blob-store
    - ./dataprotection:/root/.aspnet/DataProtection-Keys
    depends_on:
    - scylla
configs:
  cloud_ddc_config:
    file: ./config/appsettings.Production.json
volumes:
  scylla-volume-1:

If you want this is simple docker compose we used to use before we switched to k8s cluster

arctic hornet
#

hetzner auction servers are about 30-40 euro a month with VAT and are usually like 8 core ryzens or something like that

#

so plenty powerful

#

but it's hard for me to give you real specs, since we have a cluster of 3 of these servers at my office where we run everything (horde, perforce, buildagents, uba caches, cloud ddc etc... etc...)

unreal mirage
#

hm yes got that, but I guess I dont need an entire dedicated server for that, or do it?

#

for just cloud ddc i mean

arctic hornet
#

since you can easily host more supporting services on there if necessary

unreal mirage
#

lol I cant run a cloud ddc server on an rpi do i

arctic hornet
#

you can try, I'm not sure how it would do under load though

#

although the faster connection you have the better

unreal mirage
#

I recently got quite a powerful one

arctic hornet
#

which if you said your internet isn't the greatest would be... beneficial for the other party

unreal mirage
#

yeah right

#

ahg damnit

#

ill just drop my rpi next to your office and plug it into your lan and hope no-one will notice

arctic hornet
#

but yeah, honestly you can grab some VPS from hetzner - those can be quite cheap (like 8-10 bucks) and you'll see how well it does or doesn't work

#

and based on that you can scale up and down

unreal mirage
#

yeah makes sense

#

I have previously been using Strato to host my p4 server if that says anything to you

arctic hornet
#

not really

unreal mirage
#

well actually I still currently am using it

arctic hornet
#

This is the pricing for Hetzner's VPS in germany, they all include 20 TB traffic for no extra cost, so it should be plenty for you

unreal mirage
#

yes Im currently looking at it

#

my wallet likes that

arctic hornet
#

although if your provider can provide something cheaper it might be better to go with them instead, at least for trial deployment etc.

unreal mirage
#

well for instance Strato offers a V-Server with around 2vCores and 120GB storage for 4€/month

#

unlimited traffic tho

#

but "sadly" online limited to 1GB/s

#

as I could even get that much..

arctic hornet
#
{
    "Serilog": {
        "Using": [ "Serilog.Sinks.Console" ],
        "MinimumLevel": {
            "Default": "Information",
            "Override": {
                "Microsoft": "Warning",
                "System": "Warning"
            }
        },
        "WriteTo": [
            {
                "Name": "Console"
            }
        ],
        "Enrich": [ "FromLogContext" ]
    },
    "Mongo": {
        "ConnectionString": "mongodb://10.0.2.1:27017",
        "RequireTls12": true
    },
    "Scylla": {
        "ConnectionString": "Contact Points=10.0.10.5;Default Keyspace=jupiter",
        "LocalDatacenterName": "datacenter1",
        "LocalKeyspaceSuffix": "local",
        "MaxRequestsPerConnection":16384
    },
    "UnrealCloudDDC": {
        "LeaderElectionImplementation": "Static",
        "ReferencesDbImplementation": "Scylla", //"Mongo",
        "ContentIdStoreImplementation": "Scylla", //"Mongo",
        "BlobIndexImplementation": "Scylla", //"Mongo",
        "StorageImplementations": [
            "Filesystem",
            // "S3" - Commented out for you, for now just use Filesystem storage instead
        ]
    },
    /*"S3": {
        "ConnectionString": "https://storage.{{REDACTED}}",
        "ForceAWSPathStyle":true,
        "BucketName": "jupiter",
        "SetBucketPolicies": false
    },
    "AWSCredentials":{
        "AwsAccessKey": "{{REDACTED}}",
        "AwsSecretKey": "{{REDACTED}}"
    },*/
    "Filesystem": {
        "RootDir": "/data/blob-store"
    },
    "Replication": {
        "StateRoot": "$(ExecutableLocation)/ganymede",
        "ReplicationPollFrequencySeconds": 15,
        "CurrentSite": "local-test",
        "Enabled": false
    },
    "Jupiter": {
        "CurrentSite": "local",
        "PublicApiPorts": [ 57001, 57002 ],
        "CorpApiPorts": [ 57003, 57004 ],
        "InternalApiPorts": [ 57005, 57006 ]
    },

    "Auth": {
        "Enabled": false, // Disabled for you - just try without auth for now, afterwards use ServiceAccounts or ideally OIDC
        "DefaultScheme": "Bearer",
        "Schemes": {
                "Bearer": {
                        "Implementation": "JWTBearer",
                        "JwtAudience": "api://unreal",
                        "JwtAuthority": "https://{{REDACTED}}"
                }
        }
    },

    "Namespaces": {
        "Policies": {
                "{{REDACTED}}.sddc": { // Give this a name, by default UE5 goes for `ue.ddc` iirc
                        "Acls": [
                                {
                                        "Claims": [ "*" ],
                                        "Actions": [
                                                "ReadObject",
                                                "WriteObject"
                                        ]
                                }
                        ]
                }
        }
    },

    "AllowedHosts": "*",


    "Kestrel": {
        "Endpoints": {
            "Http": {
                "Url": "http://0.0.0.0:57001"
            },
            "Http2": {
                "Url": "http://0.0.0.0:57002",
                "Protocols": "Http2"
            },
            "CorpHttp": {
                "Url": "http://0.0.0.0:57003"
            },
            "CorpHttp2": {
                "Url": "http://0.0.0.0:57004",
                "Protocols": "Http2"
            },
            "InternalHttp": {
                "Url": "http://0.0.0.0:57005"
            },
            "InternalHttp2": {
                "Url": "http://0.0.0.0:57006",
                "Protocols": "Http2"
            }
        }
    }
}

Here is slightly commented and stripped down configuration file for jupiter... I've quickly thrown it together to work with the docker compose I sent before... and configured it so you won't need to set up S3/object storage

unreal mirage
#

oh great !

arctic hornet
#

read the comments, apply changes as necessary etc.

unreal mirage
#

yea thats for sure

#

very nice thank you

#

Hm not sure if I understood the relationship between a Zen server and a Cloud DDC.
Zen seems to be able to manage multiple things and Cloud DDC is also one of them ?

arctic hornet
#

zen and cloud ddc formally share the same role

#

zen is used locally and on LAN (shared zen)

#

meanwhile Cloud DDC is used on WAN

unreal mirage
#

So I dont necessarily need to setup a Zen server just for having Cloud DDC

arctic hornet
#

but also there are differences since Zen can be used for oplogs and as alternative streaming source for on-target deployments (consoles, phone etc.) meanwhile cloud ddc can also be used as a storage for horde artifacts (compiled game binaries etc.)

arctic hornet
#

you don't have to have local or shared zen

#

although I generally recommend local zen any day over loose ddc files (the old way of doing things)

#

it's much more performant... and it's also default since UE 5

unreal mirage
#

yeah I noticed on 5.6 they launch a local zen server for you by default

timber sail
#

[DerivedDataBackendGraph]
MinimumDaysToKeepFile=30
Root=(Type=AsyncPut, Inner=Hierarchy)
Hierarchy=(Type=Hierarchical, Inner=Pak, Inner=ZenLocal, Inner=ZenShared
ZenShared=(Type=Zen, ServerID=Shared)
ZenLocal=(Type=Zen, ServerID=Local)

my defaultengine is like this

#

i have a question,
i set it to firstly seek local zen to ddc, wonder what if there is no ddc at local zen

#

is it going to compile for ddc or it tries to seek remote zen?

#

i want it firstly seek local zen , if local dosent have ddc, then seek remote zen, if remote doset have cache neither, then start shader compiling

arctic hornet
unreal mirage
arctic hornet
#

I don't have any other instructions other than what I've provided, you'll have to build the docker image, push it somewhere and use the data I already provided, not much else there to do

#

although you could manually build and deploy .net application itself, but that's more complex... and official examples give examples for running inside kubernetes since that's kidn the expected usecase

unreal mirage
#

alright got that, just wanted to make sure

unreal mirage
arctic hornet
#

obviously, we have customized version hosted on our internal registry, so I can't provide you with URL 🙂

unreal mirage
arctic hornet
#

you have to build it yourself using the files provided in the Engine/Source/Programs/UnrealCloudDDC

#

easiest way would be to use the provided buildgraph image

#

although it's like 11 months old, and I don't remember if there were any new versions since

#

(pretty sure there were changes etc. but not sure if new numbered release got... released)

unreal mirage
#

hm got it

#

how would one make use of the already released version tho?

#

Not sure if just linking it in my docker-compose is correct

#

well as you can guess Im pretty dumb unexperienced in docker, sorry about some very poor questions of mine

inland breach
#

Is there anyone here that have an experience with Perforce Swarm?
Specifically using the AWS marketplace Swarm product they have there?
I'm configuring the instance and after submit is always says failed "rollback".

arctic hornet
inland breach
#

https://aws.amazon.com/marketplace/pp/prodview-pu5rt4c67zp7o

Well I tried using this product, launched the configuration etc..
Then it created a new EC2 instance and a new stack.
In the new stack it said IN_PROGRESS then after few seconds it failed and said rollback.
No informative error was given.
I'm thinking maybe this product is deprecated or something

arctic hornet
#

ah, so it's an issue during deployment... well, swarm isn't deprecated, so it seems like there's an issue with the cluster deployment for AWS itself, so I can't help there sadly

ebon hound
#

Hey everyone. We are using Perforce for a while with Helix Core Cloud. Does Perforce have Pull Request feature where we could do code reviews similar to Git?

arctic hornet
#

instead of directly submitting, you'd make swarm review (a pre-commit review) which would make new shelved change and open a code-review, once the code-review (once aproved) it will be pushed

foggy niche
#

Remember, all shelfs are uploaded, so you can get the shelf in your machine if you need to do a review and don't want to burn your eyes with the swarm website 👀

dusky kite
#

When I open unreal it sometimes updates revision control status of assets, which takes like 1-2 minutes. that's obviously once again terrible. i can disable revision control in the project, is there any other way to not have unreal do that?

wide raven
arctic hornet
#

Unless the journal (perforces metadata database) has not been rotated and is large…

#

For context: Rotating it doesn’t loose any data, just splits the files and does some b-tree rebalancing etc… speeding up the lookup

finite quest
#

Perforce support is so goated man
I'm trying to get P4 Helix Core to run within TrueNAS Scale, and asked them for help, they are assigning me a guy to figure it out even though even they have no clue where to even start lmfao

#

has anyone else tried to do it this way?

arctic hornet
#

honestly, not many people in production would deploy perforce server on something like TrueNAS since in general you deploy on fully standalone server... but since truenas scale is based on debian, the installation process should be as easy as opening ssh terminal, adding public keys, and installing perforce packages using apt, no need for support from perforce

#

but it's nice to see that they're willing to help out

wary walrus
#

Is there any guide available regarding setting up a regional Perforce server?
we have 2 teams located in different region and for one team, the transfer speed is not good.
Are there any Strings attached to using regional servers?

safe zodiac
#

I have a pretty standard question about perforce I think, but I'm new to it (I used git and svn before).
For Blueprints and assets in the engine, it works great. But when I'm modifying C++ files, Visual Studio warns me that they are read-only (not checked-out). So I use the "overwrite" button, which allows me to modify them, but it doesn't check them out in Perforce.
Am I supposed to check out each file manually or is there an automated system/option that I'm not aware of ?

#

Or just disable locking for source files, as they can be merged ?

wide raven
wide raven
safe zodiac
woven sluice
safe zodiac
arctic hornet
# wary walrus Is there any guide available regarding setting up a regional Perforce server? w...

With perforce its kinda complicated because writes pretty much always have to go to master (even if it goes through other servers suchar proxies, edge servers etc)

Easiest solution is to deploy p4proxy which is as the name suggests works as a caching proxy… it can speed up syncs when files are cached (or it can generally speed things up because DC to DC connection has generally better peering than home/office connection etc)

If you need something more complex… it will get more complicated and no one solution works for all

arctic hornet
long mural
#

made a little py bot to post from our perforce to discord and ping FYI's etc

#

works really well

#

reads all the submit tool tags

#

and gives info

arctic hornet
#

neat... I just use our horde discord integration for most of the notifications... and for FYI and other things, we just shoot out an email since I was too lazy to do user x discord lookup in the perforce trigger

long mural
#

yeah

uncut hinge
#

Something really strange is happening with my Perforce server and I'm not able to find how to resolve it. No matter the client (p4, p4v, horde agent) if a command is tried in parallel the operation gets stuck, if not, gets through.

This has happened to me without changing any configuration. I'm the sole user of the server and have it running on an LXC.

Has anyone experienced something similar?

#

If net.parallel.max is > 0 the server hangs

arctic hornet
uncut hinge
#

I'll take a look because that sudden issue is driving me nuts. Without parallelism at least works, so at least it does not block me. Thanks!

unreal mirage
#

I stumbled over the SubmitTool quite a few times now, I am not really sure what it is and what to use it for, however it seems really useful.
As it is kinda hard to find information online i was wondering if anyone here knows more about it ?

arctic hornet
#

Main benefit is that it can interact with horde for doing preflights, run local content validation and code compilation before submitting to perforce… or virtualizing the assets to avoid pushing hydrated files directly in tree

unreal mirage
#

hm got that, thanks.
Seems indeed a bit overkill for me

unreal mirage
# arctic hornet ```jsonc { "Serilog": { "Using": [ "Serilog.Sinks.Console" ], ...

I was trying to setup a docker image with the data you provided , just yesterday, which somehow worked fine.
I got 2 containers running with those images ghcr.io/epicgames/unreal-cloud-ddc:latest & scylladb/scylla:6.1.5.

However I couldnt get any further than that, health checks returned 404, not even starting to talk about connecting to the server from the editor...
I feel like I definitely missed an important step, sadly

arctic hornet
#

Check the output logs for the unreal-cloud-ddc container it might point you in the right direction

ornate matrix
#

how would you manage a plugin across multiple versions.
usually you only have a V1 of a plugin and you make a new branch for each UE version and do a few fixes.
be here im talking about maintaining over time a plugin across multiple versions

#

meaning that each branches might have some various changes due to breaking changes, while you add more features

arctic hornet
# ornate matrix how would you manage a plugin across multiple versions. usually you only have a ...

there's no one way to do this, at epic they use RoboMerge to keep different branches in sync using some pre-defined rules for branching and merging (i.e. fortnite mainline and ue5-mainline are fully in sync, just obviously fortnite part isn't public) and this includes plugins... other alternative approaches I've seen is to create separate depot/stream for the plugin and then import it in all of your projects/branches and keep all the functionality synced there... and version differences would usually be handled by bunch of #if statements tied to unreal versions. And one last way I've seen it (pretty much the same as previous) is to keep the plugin fully separate and periodically promote changes back to the plugin - or the other way round - usually done when your main product is the plugin and it's got mainline that's often unstable, so you'd only merge stable versions into the game projects etc.

ornate matrix
#

thanks for the insights, i forgot to mention that i was more asking about the plugin side (no game projects included)

#

and im using git

arctic hornet
#

well then... I'd say go with trunk based development, so you have your mainline where you do your things and then make branches for releases and merge back and forth

#

so pretty much main is your latest and greatest where you do most of the development (or if you like, temporary feature/task branches that get merged back to main)

#

and then releases are usually snapshots... if there are some fixes in release, you can merge or recreate those in mainline and vice-versa

ornate willow
#

p4 added parallel reconcile, huge speed boost for custom engine depots. today i'll find out

        Added support for parallel reconcile, along with the ability for the reconcile
        command to detect moved files. A new user preference has been added under Edit >
        Preferences > Performance for parallel reconciliation, and a separate user
        preference has been added under Edit > Preferences > Behavior to control the
        detection of moved files. This feature requires P4 Server version 2025.1 or
        newer.```
pastel coral
#

Can anyone that uses git and gitlfs submodules for game feature content suggest a stable workflow?

My game makes heavy use of plugins and game features, where the plugins provide nearly all systems and implementations and game features provide all content and data, and the game runtime module only kicks off the bootstrapping done by the plugins.

I want the the game features in gitlfs submodules to keep the main repo light but I can't seem to find a workflow that doesn't blow up. The only way I've found to so far keeps ending up with the submodules in a head detached state

#

Using Rider 2025.1.4, current UE5.6, current git and github + github desktop.

#

I'm also a git noob so I'm sure I'm just not doing something right here

silver token
# pastel coral Can anyone that uses git and gitlfs submodules for game feature content suggest ...

I don't know a lot about git, but do a lot with perforce streams and game features.
Game features are plugins that are dependent on the game project, so they should be in the same repo as the main game.
Regular plugins, those that the game is dependent on, can be organized separately to be more easily shared.
There's no reason to separate the game features from the only project they can work with.

pastel coral
#

Theres no reason why a game feature shouldn't be able to be in its own submodule

silver token
#

I believe Game features have an assumed dependency on the game project in the engine. You may even be able to include from the project without it being in the build.cs of the feature.
They're expected to be a swappable part of a specific game. Not something applied to multiple games. Those are just plugins.
I'm not sure what bloat you're talking about either. But again, I'm a p4 guy and the server load from assets is the same regardless of how they're organized into streams (the closest thing that I've come to associate with the description of submodules).

pastel coral
#

By bloat I mean that every time you modify an asset that has binary format, it doesn't just store the diff like text, it stores a whole ass new copy of the asset so if you have a lot of content, you storage will balloon to hundreds of gigs pretty quick

#

a submodule is just a git repo that gets linked into another repo

#

like as a subdirectory but its commits are separate

#

I don't know P4 at all but sounds like thats what streams are that you mentioned maybe

silver token
#

No, I get the versioning cost but it's getting paid for somewhere.
If the game repo is 1 GB and the submodule repo is 2GB's, that's 3 GB's of versioned data.
The exact same revision history would be the same size if the submodule was directly part of the game repo.
It doesn't save any space, just organizes it differently. Unless of course you're using a submodule from someone else and they're paying the cost for that storage instead of you. But those wouldn't be game feature plugins.

pastel coral
#

the reason to use a submodule is so I can just rebase the submodules to prune out old versions and keep storage low. The only reason really

silver token
pastel coral
#

doing that in a main repo is possible but a serious pain in the ass

#

witha submodule I can just do the entire content repo(s) all at once

silver token
#

If that makes more sense for git I can't argue with that.
I'll only end with that, based on how I've seen other people talk about git submodules, I think it sends the wrong message about the intent of the contents of the repo. As a submodule, the intent seems to be that this is linkable to any other (unreal) repo and can be used by that project. And game features aren't intended to be used like that. If this is a solo project and always will be, it probably doesn't matter too much.

pastel coral
#

game features aren't tied to a game module at all. You can reuse them across projects like any other plugin

#

I won't be personally. The purpose for me is hot swapping and live updates

#

and are entirely content and data only, no logic. Theres a single plugin that defines common types used by the core plugins and the features, basically data contracts so the plugins know how to consume the content provided, so I do have a dependency in my case to a plugin

#

technically I could share it across projects, the other projects would just need to use that plugin as well

silver token
#

If they're not tied to a game, they're just a plugin. not a game feature.
You can't just take a lyra game feature and put it into any game. That's madness.
If you don't believe that, good luck because I'm pretty sure the engine assumes that and you may run into problems.

pastel coral
#

game features are just a plugin really and aren't forced to be tied to a specific game unless you design it in a way that causes it

#

in fact they are not allowed to have a dependency on a game module, only other plugins

#

I'm just not well versed with using git with submodules in this way lol so hopeing someone here would have advice on their own workflow for using them

silver token
#

If submodules would work for normal plugin workflows (which is usually what I see people recommend when it comes up) it'd work for game features since (as you say) they are just plugins (even if I think it's madness 😉 )

pastel coral
#

I know, I'm just not setting them up right somehow

pastel coral
#

oh I see what's happening. I didn't mess up, I just didn't know how git handles those submodules (or rather how rider doesn't). You have to update the pinned version of the submodule manually in the main repo every time the submodule changes from what I'm reading.

weak bolt
#

So got a question let's say you have various games your working on, would you have a workspace for each of them tied to the same user so me

#

Or would you have one workspace which has the different streaming depots inside ?

arctic hornet
#

Workspace can be tied to only a single stream at once. You can map multiple streams into one another though… but there is no one “right” way to do that as it depends on many factors like: engine versions used, studio workflow etc….

I personally have multiple workspaces since I have the space.. but on my work laptop where I don’t I just have one workspace and simply switch what stream is the workspace bound to

silver token
weak bolt
#

yeah i ended up making a seperate workspace for this new project

weak bolt
#

Anyone know whats going on with my Rider and perforce

#

so previously when I would open a file it would be greyed out and then if I go to alter it rider would prompt me before I can actual alter the file at which point if I confirm it'll look light it does there so less grey and more like a normal file looks like

pastel blade
#

Hello, is there a way for Perforce to recognize UAsset moves instead of just "delete/add"? I've tried p4 revert -k + p4 reconcile, but it still doesn't work.

woven sluice
#

it should be storing them as moves naturally

#

did you actually submit it or are you just looking at the changelist, because i don't think it tries to connect the two ops into a move until it's pushed server side

#

oh one gotcha to this is redirectors

#

if you move an in-use asset and don't fixup redirectors then it will probably just be a new file add and the old one will be (heavily) modified

pastel blade
woven sluice
#

another obvious gotcha is if you edit a bunch of the asset during the move... there should be some magic number threshold where if the binary file has the same name and is like 98% the same data it will connect it as a move, something weird like that

pastel blade
woven sluice
#

yeah i hope i'm not talking out of my rear, i haven't paid attention to this stuff in ages but i'm kind of confident it should do this

pastel blade
woven sluice
#

bleh, editor probably is still hard coded for 10 years to set up explicit add + delete... and you can't move/rename using P4 standalone because that will break all references

#

i'm probably dreaming of some old memories back using unity or something and having this actually work, sorry

arctic hornet
woven sluice
#

yeah, guess i must be wrong. swore P4D had some fuzzy detection to handle this but after a few minutes googling and finding nothing i'm not going to continue my witchhunt

frank silo
#

hey, anyone else that setup P4 on a dedicated laptop have issues with it randomly dropping connection and needing to restart the laptop in order to get the connection back up?

arctic hornet
#

if it's windows then switch to linux, windows is notoriously bad for anything networking related and things tend to break on windows unless you're running windows server

frank silo
#

@arctic hornet ah that just confirms what I was suspecting, I was on Win11 Home and from what little I could find it seems that it simply cant handle many connections at once, so installed Ubuntu Server last night

cobalt rose
#

oh hey, fancy seeing you here @frank silo lol. You were right, eventually I was gonna need to set up perforce lmaoooo

Quick question, as a matter of practicality: As I understand it, the way most professional studios seem to set up p4 is to have one repo for their editor code-base and then separate repos for each game, is that right? Is there any special setup involved in this? Been making a few prototypes for educational purposes and want to start including a friend in reviewing my code and working with me but I wanna set it up "correct"-ish

pulsar parcel
cobalt rose
#

man you'd think a single google search or documentation flip would have found me that page - thanks @pulsar parcel - I'll be reading through that. Turns out you're right and I took for granted a lot of the setup behind the scenes that comes with access privileges and the like being more or less invisible to me that made simple things like feel like they were more complicated than they were. Appreciate the link.

main charm
#

I'm having a tough time with Perforce SDP. It's putting all of my depot files on /hxmetadata. Do we have any gurus here that know what I'm doing wrong? It's a brand new Ubuntu 24.04 VM. I followed the docs exactly.

arctic hornet
ornate forge
#

Is there a way for me to undo all changes on a child stream in Perforce and just have it sync back to the same state as the parent stream?

arctic hornet
#

well, you could remove the stream and re-populate it again

#

or, obliterate everything in that stream and integrate again

#

or, you could go and manually revert all the changes made in that branch back to initial populate - that would keep the history, other two methods would wipe the history pretty much

ornate forge
#

Obliterating might be the way to go for me

#

I say, though I probably don't have the perms for it

arctic hornet
#

if you just need to revert bunch of changes you can do it by normal revert, you don't need any special permissions for that, since revert just overwrites the changes with new revision that is equal to the old one

#

or to be more precise it's "Undo" since revert is for currently opened files

#

you can undo specific change, undo things to specific revision or by dates etc.

ornate forge
#

Wish it would tell me what's open... All my CLs on each workspace are shelved.

arctic hornet
#

you could try in commandline since CLI sometimes provides more information than P4V

ornate forge
#

Looks like it's picking up all the robomerge CLs as well unfortunately. Might just have to wait until the team who handle this comes back

arctic hornet
#

yeah, it would revert everything all the way to initial populate, which I thought you wanted... but yeah, at this point it might be easiest to just recrete the stream which as you've said, might be better to leave for your devops or vcs team

atomic saffron
#

Do someone know UET for hello neighbor 2 and files to UET? Because I need help plisss.

solar jackal
#

So, for all the people here using github with their teams
How do you stop everyone from just defaulting to using branches all the time?

#

I have not had any benefit to using them on git, and they are an absolute nightmare to properly bring into develop

woven sluice
#

yell

amber scaffold
#

Is it a bad idea to host a perforce server on a home network? Im whitelisting my friend with my firewall but most of the configurables are default

pulsar parcel
#

Nothing wrong with homelabbing, but if this a serious project then make sure you have an adequate and tested offsite backup solution

weak bolt
#

Anyone ever had it where a power cut happens and well helix core simply refuses to start the core service completely??

pulsar parcel
#

No but it would be a good time to look at buying a UPS

weak bolt
#

Yeah they just cost too much ups

#

More then what my wage can support

#

thats what I get when I try manually start the Helix Core server

#

found the issue it's looking there for the exe

#

but due to the power cut some how one of the drives has changed from U to I so that path its looking it doesn't exist

#

sorted it had to change drive letter back to what it was before

pulsar parcel
#

This seems like the jankiest setup. I would guess it's a removable drive if it changed letter

weak bolt
#

So its a USB hub which can have either ssds or hdd in, when the power cut happened the pc must of thought it was a new drive and gave it a new letter

#

Turns out drive letter can just be changed though so all fine in the end

amber scaffold
arctic hornet
#

Over internet (WAN) its generally good practice to use ssl, if however you’re using it only on lan or through vpn/tailscale etc. then it’s not mandatory

amber scaffold
#

Ok I used p4 -Gc and it was easy to setup

I also copied the security configurables from the perforce website. I'm feeling pretty safe and secure

pastel blade
#

Hello, how can I find and fix all files with incorrect read/write permissions(files that should be read-only but are read/write or vice versa) in Perforce?

silver token
pastel blade
silver token
pastel coral
#

I finally came back to this and after spending a few hours working on it, I have a stable workflow for using git for the main game repo and using git lfs for the game features as submodules of the main repo.
I'm a git noob scrub so this might not be new to anyone else but post-commit hooks are a fucking godsend

#

the initial first-time setup takes a little bit but once its setup, its super easy. I made a script that checks for any changes in the submodules and pushes them to their repo and then automatically updates the pinned submodule version in the main repo to the latest commits of them. Then I made a post-commit hook that executes the script after every commit. So I can work on both directly in my game project but git-wise the game feature plugins are in their own repos so I can prune out old version to keep bloating down (since literally ALL my content is in the game features)

#

feeling accomplished lol I've earned a late night coffee

trail zealot
#

Hey there, does anyone knows if there is any free cloud server to storage a perforce repos?

lament ember
#

Hello. I'm having an issue with Unreal BP Merge. It can't see the Newer commit i'm merging. It suggest that merge file is actually an older version of the file. (TortoiseGit can see it properly)

smoky igloo
#

Is it just me or when you press a key and it produces an error, so it switches to rider, the key is input into the file and then afterwards it asks you if you want to make it editable.

So you need to make it editable otherwise you can't remove the character, that should have not been in the file in the first place.

amber sentinel
#

I do get that, its been very weird for me.
Sometimes it prevents input (ask for writing)
Other times, I can remove it without issue.
Yet, in either case no source control edit is made/ queued

lament ember
smoky igloo
woven sluice
#

it drives me nucking futssssssss when i'm holding W to walk into a trigger, and breakpoint on a delegate, and my code file gets wwwww in it that i have to undo almost every time

for engine code specifically might help if you have rider's extra "do not allow editing of engine code" setting turned on, but they only added it about a year ago if you're on an old grandfathered license

#

but it sounds like you're experiencing something else

smoky igloo
# woven sluice it drives me nucking futssssssss when i'm holding W to walk into a trigger, and ...

Yea this happens to me, but I also have Rider hooked to perforce, so if you want to edit a file, you have to Check Out the file, so you can edit it.

But somehow there is a bug, that when the breakpoint hits, it allows one w to be written to the file.
Meaning in the file there is a w in there but you can't remove it because you need to check it out and you need to do that, because otherwise you have a file with a error 😅

woven sluice
#

kek. only difference is i have it set to auto check out files

smoky igloo
#

It's really annoying though.

finite quest
#

git is so easy

fluid cypress
#

So I'm working on trying to figure out how to set up Unreal Game Sync.

I got a source build set up from git and a brand new perforce server (setup the typemap and a stream depot/stream already)

I'm confused about what engine files should be put into perforce. Like for a project you only need the .uprojectfile, content and config.

silver token
fluid cypress
silver token
#

No. That creates binaries and other intermediates that shouldn't be in source control.

fluid cypress
silver token
#

As far as I know the example one is fine. Ours might just be the gitignore renamed. I'm not 100% sure

fluid cypress
alpine beacon
#

Files being only writable when checked out, is this a workspace setting or managed by the p4 admin?

silver token
alpine beacon
#

Interestingly my other collegues have the files read-only....

arctic hornet
#

otherwise as Raimus said, generally what file extentions have +l flag is usually goverened by the typemap... or can be set/unset per-file manually using the "Change type" option in p4v, or respective CLI commands

alpine beacon
#

allwrite
this was it! I don't remember ever touching this before. I wonder if the typemap does it if the user has allwrite on

woven sluice
#

allwrite is a curse

alpine beacon
#

It definetly taught me a lesson today!

pulsar parcel
#

yeah never use that goddamn cursed option. if you are getting issues with read only then make sure the relevant files are +w in the typemap

willow plank
#

any ideas on where to get cheap high density storage? I'd host a private server (I've plenty of spare old hardware), but the upload of my network is much to slow to be moving large files to collaborators with. So it really needs to be a cloud solution.

I'd need the source control software to be open source or otherwise unlimited in the number of collaborators I can have, + a custom LFS solution so I can host all the actual files elsewhere.

I've heard Blackblaze is good, the prices look decent too. However, I'm not very well aquainted with version control software, so please do help me understand my options, and the difficulty of deployment. As a student, my budget is tight, so please nothing expensive like Perforce.

arctic hornet
#

But your requirements don’t really line up with “cheap” imo… in general just find whatever cloud host that’s within your budget, slap git on it and all it a day, there’s not really any other way especially if you need “unlimited collaborators” - since with you pay ton of money to SaaS (Assembla, Diversion etc.) or you pay for licensing (Plastic, Perforce) or as stuck with free tier (Plastic iirc up to 5 users and only for 5 days for whatever reason… and perforce for up to 5 users and/or 20 workspaces)…. Or git… which is free and you can use stuff like gitea, gitlab, azure devops … or heck… even GitHub lol

willow plank
wanton anvil
#

is the release branch the same as 5.6.0-release tag?

wind gazelle
#

but they can be same commit

wanton anvil
#

oh i used tag name as branch name 5.6.0-release

#

the 5.6 and dev are different from the the tag release though!

wind gazelle
#

afaik dev-5.6 branch contains commits for 5.6.1, 5.6 branch has commits of 5.6 release

wanton anvil
#

after couple failed attempts at --branch refs/tags/5.6.0-release and --branch 5.6.0-release it stopped saying that the branch doesnt exist
idk why but atleast it finally works

covert salmon
#

Hi guys!
We want to use Perforce for our project in Unreal Engine. About 10 programmers plus some artists are going to work on it. What is your experience with streams? Do you use them in projects? I heard that it might be useless since the file lock system doesn't work between them. What is your take on that?

wind gazelle
wanton anvil
silver token
# covert salmon Hi guys! We want to use Perforce for our project in Unreal Engine. About 10 prog...

We absolutely use them, but not for feature work (which is the case where the file locking becomes a problem).
We have a stream for the Engine Source (which you of course wouldn't need if you're using an installed build), external plugins, internally developed plugins and then the game project itself.
The game project imports each of the other streams (as non-writable in the case of engine source and external plugins).
(each of those stream descriptions actually represent a collection of related streams used for staging engine updates or forking releases. you can search my posts in this channel and find the image I've previously posted of the full tree of streams)

covert salmon
woven sluice
#

Basically if you REAAALLY want to do the sketchy thing, know it might exist

covert salmon
rough night
#

Hello! So I am using a github repository linked with my unreal project. But I want to also work on this project with someone else. They already have access to my private repository but I dont know they are supposed to get the game files and then connect it on there side using the revision control option? Anyone know how?

wide raven
quiet stirrup
#

Please someone fix the git plugin for unreal engine 5.6, it corrupts the index file and obj file of git at random times even in empty projects

woven sluice
#

project borealis's git plugin?

#

or epic's?

tame zealot
#

Hi, stupid question (may be). in 5.6 unsing Perforce where is the submit content option

arctic hornet
ebon escarp
#

Hey, I'm trying to set up local source control through P4D, P4V, and UGS. Hoping this is a simple mistake, has anyone run into this issue before when trying to open a Perforce Workspace?
I could only find a single post about it online and I'm having difficulty with the suggestions left there (there doesn't seem to be an \Engine\ folder accessible from my project workspace, and I can't find the .cs file from the second solution), if either even worked for OP.

silver token
ebon escarp
silver token
#

It doesn't look like you're using a Source Engine build with a native folder structure. Both of those things are required in order to use UGS.

ebon escarp
mighty beacon
#

Does anyone know if there's a way to make the UGS sync filter have a default for new people? I think right now it ticks everything by default?

pulsar parcel
#

the SyncCategory can have Enable=false in it

unique pagoda
#

Hi, I'm trying to modify the repo for an Unreal project that I've joined.
We have both our game project and a modified version of UE5.4 in the repo.
We're using Plastic/Unity VCS and there are a lot of files in the repo that should not be there, such as Binaries and Intermediate files, both for engine and game project.
This has been sort of managed by using the "hidden" files list to avoid all the auto generated files from overflowing pending changes.

Ideally I would love to clean these files out of the repo completely, but I can settle for a solution where I simply delete the files after first creating a more comprehensive ignore.conf file. The repo history would stay very big but at least new members would not need to struggle so much when joining the project.
Either way, I would love some guidance on how to proceed. I have not been able to find instructions online that seem to fit my situation.
I believe I have a good foundation for a new .ignore now so I think I'm ready to do some file purging.

pulsar parcel
#

oh and DerivedDataCache

lucid stream
#

does plastic have something like an obliterate? sounds like what they're asking.

wide raven
pulsar parcel
#

quick google seems to think that cm purge exists

unique pagoda
#

Thank you, yes a purge/obliterate action is what I was thinking.
But then it sounds like doing a delete push after a proper .ignore would be enough

proven violet
#

I'm trying to setup git for my c++ project. I haven't done this for a c++ project before. How do I link to remote repository? I'm using Rider.

untold geyser
proven violet
untold geyser
#

Just check the boxes for what you want to commit, then choose Commit and Push, you don't need to worry about the Engine files. If there are unversioned files then add them by checking the box.You can also add git to Unreal and it will take care of the blueprints. IIRC you need to add Git LFS as well to handle large files.

proven violet
#

How can I tell if the remote was added correctly?

untold geyser
#

If you don't have the checkboxes then your git might not be found, is it in windows path? It's "Manage Remotes" to check

proven violet
#

I did a test and said version is 2.45.1

untold geyser
#

OK then just click commit and push, I don't know you don't have that checkbox near unversioned files though.

proven violet
#

I may have mistaken what the url is suppose to be

#

?

untold geyser
#

from command line after commit you can usually do something like git push origin master

#

is the remote on github or is it on private server?

proven violet
#

github

untold geyser
#

Should be something like that:

#

You also need some SSH magickery I think

proven violet
#

I dont even know what that is lol

#

I think I need the git file on the repository then?

untold geyser
proven violet
#

all I have is a blank repository with a .gitignore file

#

on github

untold geyser
#

You can find your remote there

#

However I'm pretty sure you need the ssh part done before it works though, but that shouldn't affect the rider setup.

proven violet
#

still not seeing changes

untold geyser
#

Did the commit work?

#

Do you even have a repository in your project? You need a .git folder

proven violet
#

yeah

#

so i didnt have the source file in the selection lol

#

folder

untold geyser
#

Before using rider you can try with command line, it's git add . then git commit -a -m "First commit" then git push origin master

proven violet
#

so should I just commit source?

untold geyser
#

Yeah first add then commit then push

proven violet
#

alright i got it. thx

#

what is is this .idea folder?

untold geyser
#

It's jetbrain stuff, safe to ignore unless you really want to keep it

#

Some settings might need that, I didn't dig too deep into it

proven violet
#

okay

#

I created another branch from main on accident how would i merge?

untold geyser
#

Since it's your first commit you can as well restart from scratch. For simple merge it's git merge, for more advanced cases you may have to use rebase but I don't think you can do that with rider so you'd need command line or an advanced tool like kraken.

proven violet
#

im just not certain of syntax git merge <mergefrom> <mergeto>

#

?

untold geyser
#

You always merge into your active branch so it's git merge otherbranch, rider has a menu entry for that.

restive coyote
#

Wasn't there some free hosting solution for Perforce, for small teams?

arctic hornet
restive coyote
#

Alright. I'm not sure which is the best option, or perhaps cheapest in this case.

arctic hornet
#

usually grabbing a cheap VPS/Server in some smaller cloud providers, in europe it would for example be someone like OVH or Hetzner... or some other local providers... where you can get whole server for like 40-50$ a month... and then set up perforce on it yourself

#

it's much cheaper than AWS and cheaper than hosting at SaaS - which generally bill at least based on perforce license per seat, which is 30 or 50 USD per user per month (I don't remember the exact price from top of my head)

#

or... if you have a server/spare computer at home or somewhere where others can connect, just host there, it will be even cheaper

restive coyote
#

Wow. 50/month for a perforce server?

wide raven
arctic hornet
#

it's peanuts for most people who have got some form of employment... obviously not everyone etc. etc.

but paying 50 USD a month for a hardware is nothing compared to paying 50 USD per month per user for perforce license (especially since if buying directly from perforce you have to pay per-year afaik)

fair frigate
pulsar parcel
#

Oracle cloud? I don't think that would even have been a top 10 choice I would make

signal bough
#

Is there a way to add extra paths/file types for checking files to perforce inside the editor? I added +Paths=%GAMEDIR%Config/DataTables but FPackageName::FindPackagesInDirectory finds nothing. Does that only return uasset files?

arctic hornet
#

so it's "free" as long as you don't go over whatever the free tier gives you

woven sluice
#

200 GB storage and 20 GB bandwidth?

spark cove
#

Hi, I'm about to start a project with a friend using Unreal for the first time, but idk if Git is actually a good tool for working on parallel, do you have any recommendations?

teal bone
#

Perforce.

#

Free licence with up to 5 people.

wide raven
spark cove
#

Thanks! I'll give it a check

winter vale
#

What do you guys use to host Perforce? I was thinking in using a free tier VM in some cloud provider, but haven't really compared the solutions. Also, there's the installation and setup part that always had me giving up and just using Git. The last article sent here on how to do the setup encouraged me to try Perforce for side projects though

silver token
#

It depends on your needs a little. For my hobby stuff, I just run the perforce server on the same laptop that I'm doing my development on.

arctic hornet
#

As ramius said, if you're doing it for a hobby for yourself or couple of friends... some small server/VPS is enough to host your need... but if you need predictable and fast server then host on something beefier - it all depends on your budget, project size and number of people working on it...

I personally just have a physical server I bought few years back in colocated at nearby datacenter where our whole studio works from - and it's whole dedicated service since I've scaled it for multi gbps loads so things move fast 🙂 because time is money in production

arctic hornet
# winter vale What do you guys use to host Perforce? I was thinking in using a free tier VM i...

installation of simple perforce server is as easy as installing helix-p4d and then running a setup script where you answer couple of the questions it asks you for, once that's done you'll have your perforce server set up and ready 🙂

although it's understandable that it might feel more complicated for people that are unfamiliar with linux (and yes, I pretty much recommend linux only for serious use because windows is 🤢 )

shy surge
#

DO fairly cheap

winter vale
#

Nice! Thanks a lot, guys 🍻

next relic
#

Hey. What is the best source control system for 2-person project? I would like to implement that on beginning.

wide raven
safe meteor
#

Is it possible that git merge destroys some files?

#

Or at least kicks them out of reference control?

#

Because there's one .uasset file that has been downloaded

#

But not detected by UE5

#

If it's corrupted I'll probably need to revert to another commit

arctic hornet
#

It is entirely possible… git is pain… and unreal is even larger pain, if you move the uasset outside unreal it wont like it because internal metadata won’t be correct for new path etc.

And if git merge tried to merge binary assets together then they’re 100% corrupted

#

Check output log, there should be warnings about unreal being unable to read the files and why

safe meteor
wind gazelle
#

if you use git LFS there could be small issues, but that merge conflict can be resolved and object fetched

#

do not rely on integrations and use standalone git clients, like tortoisegit or dozens of others or git console

safe meteor
wind gazelle
#

review your merge commit, were there conflicts? is LFS in use?

safe meteor
#

There were some conflicts but relatively minor

#

Git LFS is indeed in use

#

Also is there a better option that is currently kept to date for UE5?

wind gazelle
safe meteor
safe meteor
#

Also I've never installed plugins from external soruces before

#

You just clone the repo and copy the .uasset file in your plugins or do you have to do some build operation first?

safe meteor
#

Alright I tried rebasing, there's a lock file potentially posing issues. I had merge issues with the .uproject file and the .vsconfig file. Some .umap files also have an automatic conflict resolution.

ornate matrix
#

what are the downsides of using git LFS ?

#

afaik git lfs doesnt change what files the local user has, but splits the remote data on 2 servers (the main remote server has a small file which points to a binary file stored in the LFS server)

wind gazelle
# ornate matrix what are the downsides of using git LFS ?

it adds one extra step, which some people have hard time handling.
lfs replaces large files with a reference file to lfs storage, so original repo has a ~300bytes file while lfs storage has 1gb file, thats why it needs pull hooks to replace reference files with actual files locally.
when merge conflict between lfs files happen - you reconcile two reference files, they will be just text, and if you leave reference file in an invalid conflict state the LFS won't be able to download actual file from storage, thats is what usually people claim to be "oh no lfs corrupted my files"
the rare occurrence is also cancelling or failing to upload large file to storage leading to state where original repo has the file reference, but lfs storage has no actual file (as it failed to upload). anyone who will attempt to checkout that commit will have file missing. until original committer re-uploads actual file.

these two are most common issues with lfs that people encounter and get stuck

ornate matrix
#

I see

#

Thanks for the details

covert salmon
#

What is the common practice for developing features using Perforce as VCS? Are you making streams for features so developers can benefit from VCS?

Let's say the developer is working on a bigger feature which requires a lot of tests, and it would be really beneficial to have version control so he can revert changes on his own. I know that Ari says they are not using streams for features and they are committing everything directly to the main stream, but it seems like we are losing the benefits of VCS in that case.

pulsar parcel
#

you typically only use a separate stream if it's long-running and disruptive feature development

#

I'm not sure how you're losing any benefit. trunk-based development in games is common

silver token
# covert salmon What is the common practice for developing features using Perforce as VCS? Are y...

In general, Unreal gamedev in perforce is trunk based. So everyone works in the same stream (branch). Even when working on large features, you can build it part by part and check those in without affecting the rest of the game or other developers.
A lot of this has to do with the significant binary (and therefore unmergeable) content data in assets and blueprints. If you were able to develop a feature entirely in C++ it might be plausible but trunk based development has other benefits in team based development.
That's not to say streams aren't used at all. Release streams are standard as are streams to do changes like engine upgrades.
It's also feasible to use streams to isolate certain parts of code. For example, we have the game stream which imports separate streams for the engine, one for third party plugins, and one for studio shared plugins.

pulsar parcel
#

also our lord and saviour game feature plugins. if your game is modular enough, you should make use of them to self-contain individual features

covert salmon
#

I appreciate your answers!

But, in solo development I was using Git like a mistake-proof tool. So I was committing every small thing I was working on during feature development, and whenever I broke something I was able to revert to some commit and start from that point. It seems impossible if it's trunk-based because if someone else is also working on another feature and he is committing simultaneously, I can't just revert to some commit because it will lose his progress too.

I know I just don't understand something well, but I can't wrap my head around how it should look in that case.

covert salmon
woven sluice
#

well if you're working on unrelated features then you can roll back just your files. if you're working on intertwined stuff then it's going to get difficult/destructive to roll back no matter what

pulsar parcel
#

you wouldn't revert to "a commit", you would just backout of the CL

#

in p4, you can revert an individual CL without losing any other unrelated work

silver token
#

You also wouldn't necessarily roll anything back, you'd just revert your current changes

pulsar parcel
#

and with trunk-based, main is allowed to be broken. usually you bring out the release streams for stabilisation for a major deadline/release

#

well I shouldn't say "allowed"

pulsar parcel
#

it's allowed to be unstable-ish

covert salmon
woven sluice
#

project should always launch but it's fine if the game isn't always playable. it's being built, after all

silver token
#

Depends what you mean by broken. Ours always compiles & cooks successfully.
There may be runtime issues.

pulsar parcel
#

you should have a CI server telling you as fast it can if there any build breakages to the editor or packaged game

#

you can go a step further and require a preflight

#

but maybe for something early in development, that might slow velocity

covert salmon
#

Thank you very much again guys. I really appreciate it. You opened my eyes!

arctic hornet
#

As others have said, trunk based development is best way for game dev... in perforce you do not revert changelists, but revisions on the files themself, so you can easily revert broken files without having to revert whole branch. And also having CI will catch so many issues.... same for preflights, they might seem like a waste of time, but it can help to catch silly mistakes like "oh, I missed an include" or "oh, I missed a ifdef for editor and now my game binary does not compile" which is hard to catch locally until you push since you usually compile just the editor.

#

In perforce changelist is pretty much just that... a list of individual changes grouped with some description/message... and that's just that, main version thing is the file revision itself as changelists just operate like a layer on top of that

real radish
#

Hi, at work we have git repo for Unreal project. People who use git - do you commit into repo large assets (or assets that have a lot of files summing up to gigabytes) or do you gitignore them, and leave it up to other users of repo to manually download those assets from fab (or other place) and import it manually?

I ask, because in our repo we use assets that all together weight in almost 7 GB, but we do not really modify them (maybe some of them)

Or, can someone point out a good place to figure out how to deal with this situation? It feels awkward committing a bunch of .uasset textures, considering that deleting them at some point in the future will still leave a disk memory print on git repo

teal bone
#

Unless you're spamming assets that you then later remove, it's not gonna make too much difference, honestly.

#

Let's say you've got 20gb of assets on git, is removing 2gb of textures going to affect much?

#

You could manually delete them from the lfs server if you really wanted.

#

(that's not really a good solution, though)

#

If you use something like perforce you can literally "obliterate" them from the history.

real radish
#

Thanks! I guess I should not be worried then about removing files. But what about storing/commiting them in the git? Is it a good idea?

teal bone
#

Lfs only downloads the files in the active view.

#

You should be fine.

real radish
#

But my assets are not categorized as lfs (only some of them, which are larger than 100 MB, like a game scene). I don’t know if marking 100+ textures where each one is 10-20 MB, will be better or worse

#

For big files like a game scene its worth marking it for lfs, especially because its changed frequently, right?

teal bone
#

I'd put all binary assets in lfs.

#

All

real radish
#

What is the benefit of that? To not blow up the size of the repo on each change of the binary file?

teal bone
#

Yes.

#

Lfs has some configurable "last X versions" I believe. Something like that.

#

A 20mb file you change once a day is gonna be a gigabyte after a year.

real radish
#

Okay, that makes sense. Is there anything ugly to expect, when migrating already committed binary files to lfs?

#

My coworkers should also migrate their local files, or its an old thing that no one needs to do anymore?

teal bone
#

I'm not a devops guy, really, so I'm not sure on the precedure there.

real radish
#

No worries, thanks for all the info! You have been a great help ☺️

#

So far it works okay? No weird compatibility issues, or other assets not linking properly to downloaded asset? And what if some assets (that needs to be downloaded) need to be modified (adjustments fkr texture, as an example)?

teal bone
#

Our main branch content folder is about 20gb after 1.5 years.

#

Our third party folder is 13 of that 😂

#

We've not had any issues.

real radish
#

Thats good to hear. For simplicity sake I will commit assets directly, cause there is not that much, and it will unlikely to grow even more. Also committing directly will avoid situation where assets might get pulled out from fab store

gentle cargo
#

Hello, with my small team we use P4V as source control, as of now artists use a normal epic games build of the engine while a couple of engineers use a custom one, we wanted to distribute a custom engine build to all of our team and i stumbled upon UGS, it seems great for what we need. I installed UGS in my PC, started it and went through the "open project" via workspace method. As soon as i click ok i get an error message stating "Could not find engine in Perforce relative to project path (//Workspace/Myproject.uproject)"

Right now our P4V setup is just a Depot, with a mainline stream containing the project folder.
My question is, how am i supposed to set up streams and workspace to have the least problems since we are already versioning the project folder? I guess i have to add the whole custom engine to perforce as well as UGS but i'm kinda lost

silver token
gentle cargo
#

So i want to have a stream just for the custom engine (//CustomEngine/Main), then another stream that maps the stream that has the engine to this new one, and in this new one i should also have the project folder itself (//ProjectStream/Main) (Folder structure would be //ProjectStream/Main/CustomEngine and //ProjectStream/Main/Project Folder)?
If i make changes to the engine i commit them to the Engine stream right? And the project stream would automatically get the changes (and build the engine via UGS right?)

pulsar parcel
#

(though in this case there'd just be a single project like "Project A")

#

And there are many reasons to have a location on P4 with the pristine engine because it helps when you want to upgrade the engine. The merge conflicts created when you merge in the updated pristine engine will be your project-specific engine modifications

#

Resist the urge to use import+

#

And to be clear working this way, since the engine is in the scope of the project depot, engine changes are within the project itself

#

You also need to setup a CI server so you can deliver PCBs to non-coders, any coder on the team will build locally

gentle cargo
#

Alright thanks for the help!

orchid cloud
#

Hey, I have a question: Is it possible with Perforce to manage the project, so that the project is "shared" for the artist to automaticly get the c++ build files (bins). currently I need to pack it and send it seperatly because Git cant handle this... the artist currently dont have the build software so i need a easy solution for sharing the project along the team

#

And are there some good guides / tutorials for setting up a project?

arctic hornet
#

(If the answer is yes, then yes... technically... it's not directly perforce itself, but Epic has built infrastructure for this exact purpose as long as you properly set everything up, then there are tools to handle it - the requirement is to have perforce and full source code of the engine on perforce, doesn't work with editor from epic games launcher)... I'll go into more detail if it's what you need/want

orchid cloud
pulsar parcel
#

Top pin, as always

arctic hornet
# orchid cloud Yeah ITS exactly what i was looking for

Ok, then, what you want to do is to push whole engine source and project source to perforce in a structure conveniently sent few messages above by sswires... generally how you do it is:

  • sync from epic git
  • run setup.bat
  • submit to perforce
  • add your project files, excluding saved, binaries and intermediates

Ideally your perfroce server is (you'll have least issues that way):

  • non-unicode
  • case-insensitive

once you have that your perforce setup is compatible with Unreal Game Sync (it's a wrapper tool/UI around perforce - makes work much more convenient + it has "PCB" - precompiled binaries - mechanisms built-in)

To prepare and submit PCBs you either set up horde (epic's build farm/CI/CD thingy + much more) and store binaries there, or make separate stream in perforce... and then just run a buildgraph to build and submit editor binaries...

artists will then just say "I want binaries" in UGS... and tada, they'll just fetch the zip instead of building locally

#

or as sswires said, just check the top pin 😉

#

I always forget we have it p;inned kek

pulsar parcel
#

Yeah that pin is pretty much the bible for setting up a studio so I'm glad it's there

orchid cloud
#

ok, thanks I will take a look at the top pin 🙂

#

is all this possible with the free version of perforce or do I need the paid version?

pulsar parcel
#

Yes, the only limitation with the free version is user/workspace limits

#

You'll probably have to swallow the bitter pill of licensing it at some point, because automation can chew through workspaces

#

I'm not sure if it's possible with the free version to get extra user slots for automation, iirc when paid you can up to 3 additional users for background processes like CI, code review tools, etc

sand rover
#

stupid question time! we used to run with custom compiled 'Installed Engine' engine builds and had BuildCookRun times of ~10 minutes .. now we run with the engine source directly in the same stream as the project (native project) and distribute precompiled binaries etc - but now the build times are upwards 1 hour .. so my stupid question is if theres a smooth way to modify BuildEditorAndTools.xml to also include building Shipping binaries and somehow allow the BuildCookRun step to use those precompiled binaries instead of having to compile them every time?

pulsar parcel
#

not really, because the game/server/client targets are a unique build environment in a source build. are you doing a clean build every time or something?

#

but an hour is a long time even for a clean build

sand rover
#

ooh yea hmm now that you mention it, we seem to be running with -clean for BuildCookRun!

#

-unattended -pak -clean -cook -stage -build -package

#

ill try removing that on regular builds

sand rover
#

ok well it went down to 3 min .. haha stupid question, great answer - thanks a lot for your quick reply 🙏

faint basin
#

for accomplishing this in p4, what kinds of streams are dev_unreal_merge and dev_unreal_upstream, and what is the process for the pink and green arrows exactly

#

is unreal merge a child stream of Main?

silver token
faint basin
#

thank you, and the step by step here I'm still struggling to grok exactly

pulsar parcel
#

So something like //engine-unreal/main and //project/main. When we wanted to upgrade the engine, we'd create //project/dev-engine-upgrade-5.x, populate that from the project's main, merge the new engine in, resolve conflicts, fix up any errors, verify builds with QA, bugfixing if necessary, and then merge it back down to main when we're done

arctic hornet
#

One more perspective, we do something in between of sswired and what epic recommends:

  • we have //UE5/Ingest for clean engine versions, new versions always go there

  • we have //Project/Dev-EngineMerge - Development stream for merging engine changes

  • we have //Project/Main - project mainline

  • integrate Main to EngineMerge

  • integrate Ingest to EngineMerge

  • resolve conflicts, tweak libraries, reapply patches... just get the damn thing to work 😄

  • Copy back to Main

#

though at the end of the day it's always the same 3-stream process, just with different names here and there

faint basin
#

and for getting the new engine version you just nuke what's there, download the new engine, and reconcile?

pulsar parcel
#

well you don't build in that stream so you don't need to nuke anything

faint basin
#

how do you capture file deletions between engine versions

pulsar parcel
#

reconcile should also detect deletions

faint basin
#

but say //UE5/Ingest has UE 5.4 in it, and i'm going to UE 5.6

#

i have to nuke UE 5.4 and then copy UE 5.6 into it no?

pulsar parcel
#

well I always did it on the same machine so I just pulled the version I wanted and then it would essentially download the delta

#

did that with both the GitHub and licensee P4

#

and with GitHub, the contents of your pristine engine should be whatever is dumped to disk immediately after running Setup.bat

arctic hornet
# faint basin i have to nuke UE 5.4 and then copy UE 5.6 into it no?

I have automations for this purpose, it runs on the same machine in our case, so simple sync + reconcile is enough

But in case you have to rebuild from scratch, create new workspace, use sync -k (sync only on server but don’t transfer anything) that way server thinks you’re on latest while even if your local folder is empty/already containing new version

Once you have that then simply run reconcile, that way there’s no need to nuke anything

safe meteor
#

I need to stop using Git LFS. It messed my commits real bad. I have two branches, one for art and one for dev and merging it screwed my files :T

should I switch to perforce? Is there a free plan? I’m planning to move between PCs so I want a repo similar to GitHub. This is a side project so I’ll avoid costs as much as I can.

woven sluice
#

why would you have an art branch

#

basically perforce is free for very small teams so if you want to try it you def can

safe meteor
woven sluice
#

i'm not going to lie that's the weirdest reason i've ever heard 😄 you maintain a whole separate branch of your game that uses manny instead of other placeholder art?

#

yeah, the whole thing is free for 5 users and 20 workspaces. there are some limitations but they won't affect indies at that scale

white rose
woven sluice
#

just jump right in together, you guys will live longer

#

but yeah you could try playing with perforce and see if you like it. it has a fairly steep learning curve (like any VCS, but maybe a bit more than some others)

safe meteor
#

Is it worse than git?

woven sluice
#

i kind of think it's harder to administrate than git but i actually have never made an effort to get extremely good at git, i just maintain and use plugins and stuff from github with it mostly

#

i feel like git is both less intuitive and less complex

#

not sure if everyone on earth would share my opinion though

pulsar parcel
#

Git LFS does have an exclusive checkout system but I can't say I've used it

pulsar parcel
safe meteor
#

So I’m assuming there has to be some mismatch while trying not only merge but also rebase.

pulsar parcel
#

Well with binary files, you'll have to pick one or the other when a conflict happens

teal bone
#

The best thing with lfs is when it tries to do a merge on the lfs tracking files.

pulsar parcel
#

Perforce makes the most sense here anyway, you'd just both work in main with exclusive checkout on uasset files

safe meteor
#

That’s what I did for most files except the .uproject where there was another plugin

copper slate
#

anyone alrdy compiled on linux ARM?

quaint obsidian
#

i don't think there's much of a point to git flow in a game project

#

you can just do trunk branch in git and everything is fine

silver token
limber anchor
#

Not really a dev-ops question, but still related to source-control:

How frequently do you recommend designers on your team to run "Generate Visual Studio project files" after getting the latest code from version control? Do you ask them to do it every time they get latest - just to be on the safe side? Or do you recommend them just doing it in case the project doesn't build or PIE doesn't work?

Personally, I lean towards only doing it in case project doesn't build or play, simply to give less friction in daily life with source control. But I'm unsure if this possibly could lead to data being corrupt in the project.

woven sluice
#

there's zero chance of causing corruption by misusing it

#

so basically don't ever bother regenerating it, unless you think they've found a need for it (the only possible one i can really think of might be changing engine versions and changing compilers or similar major events)

#

this is assuming your designers are building code locally

pulsar parcel
#

If the editor doesn't build then that should be top priority for one of the programmers on the team to fix

#

your CI should be able to inform you in your team's communication platform of choice when things break

limber anchor
pulsar parcel
#

Then you should be looking at setting up CI so that they don't

#

It's extremely error prone and just an internal support headache for anyone not comfortable around an IDE

limber anchor
weak bolt
#

so got an issue

#

I've created a workspace in PVAdmin cause I needed another workspace for a different project

#

I've then in P4V attempted within that workspace to create a mainline stream but after I do and tell it to work in that stream its trying to force me to make a new workspace for it when I don't want to

pulsar parcel
weak bolt
#

so i created a workspace and a depot to go with it

#

I then in P4V tried created a Main Stream for the said depot and it for some reason wanted me to make a new workspace rather then using the workspace I just made

pulsar parcel
#

you create the workspace after the depot usually

#

you pick the stream from the "stream" field in the workspace settings. you completely ignore the workspace mappings section

weak bolt
pulsar parcel
#

I think you'll need to be more specific about what you're seeing and what you're trying to do

#

this should just work by selecting the stream in the ws settings

weak bolt
#

barewith

#

so i have the depot

#

and in P4V i see the depot

pulsar parcel
#

it doesn't have any streams in it yet

weak bolt
pulsar parcel
#

You need to create a main stream

#

And then you can select that in the ws settings

weak bolt
pulsar parcel
#

yeah, click OK, and what do you see?

weak bolt
#

and then I click work in this stream so the main one and then I have to do this

pulsar parcel
#

yes, this is expected

weak bolt
#

cause before the workspace I created for it, wouldn't let me use so does the workspace get created after the main stream is made i'm guessing

#

oh so I've been trying to do it wrong way around then all this time, I've been trying to do Depot-Workspace-Stream

#

not Depot-Stream-Workspace

#

for this bit what would you suggest

#

I not ticking the AllWrite one cause that gave be issued last time

pulsar parcel
#

I don't really mess with these settings. The only particularly useful one is rmdir

weak bolt
#

yeah so i've ticked that one prob won't mess with the others

upper grotto
#

Hey all, semi quick question hopefully. I've got a friend who is doing animation and movement work on a base project in github (nothing game specific etc) so I've done a repo clone locally of it and then copied that into my new game base project folder. I use p4 for version control with another dev on our game. The issue I'm having is when my friend pushes an update to his github, like adding in direction rolling, I want to pull his changes into our project but he's sometimes making changes to config files etc that I need to actually merge in so it doesn't overwrite ours. We don't touch his file folders in our project, we've just childed his bp's to use as our base so we inherit these animation updates.

Currently I was just pulling origin into my clone of his repo, then copying/pasting the updated folders into our project and reconciling offline work with p4. The issue is that is going to become tedious to maintain, plus the issue with few files like the default engine config that we're both touching. I tried to do a git pull from origin in our project folder since it had the same git structure, but it deleted all my plugins and source files.

Am I being dumb in this pipeline. We don't want to switch to github+lfs for our project as we quite like p4. So I need to make so i can merge his changes upstream into our project.

#

Do I need to just bite the bullet and run a copy of our project on github also so i can merge in the remote changes then pull it down to ours and reconcile to p4?

silver token
# upper grotto Hey all, semi quick question hopefully. I've got a friend who is doing animatio...

You could use something similar to what I've done with plugins from github. That is to have a dedicated stream that matches what's in github.
So you would do the reconcile in this stream so that it matches exactly what your friend did, but you wouldn't use this stream directly.
Instead, after you check-in the reconcile you would merge/integrate those changes into the stream with your project. This should actually merge their changes with yours, at least for the mergable file types.
I use this setup so that we can make changes to third party plugins without it being a nightmare to update.

upper grotto
silver token
#

I'm not sure what you mean by "under" in this case, it could be in the same depot as the project or a different depot. But it wouldn't be a child stream of your project stream. It would be it's own mainline stream.

upper grotto
#

Thats what I meant by under, sorry a child stream, create stream from main. Can you merge in a stream from a different depot or even the same depot that is not a child stream.

#

I haven't done that

silver token
#

Oh definitely. You just have to be a little more manual about it. It's not as simple as doing it between related streams, but it's not impossible. And it's not that hard.
I tend to do it from the commandline because it's easy the way I've got stream setup, but you can do it from within p4v as well.

upper grotto
#

I see it now in p4v, and then I'll get the merge options/review to select what to merge in and what ot keep if conflicts like a normal child stream merge

#

Thanks @silver token Perfect solution

silver token
#

You'll probably want to be very careful the first time you do the integration since the two streams won't really know anything about the relation between them.
But after that, when doing updates, it should be pretty seamless.

Actually, if you still have the last version you pulled from github you might be able to make it easier on yourself.
Use that to populate the new stream. Do the merge and use the 'Accept Target' resolve option.
That will establish the baseline for the stream relationship to base future merge differences on.

upper grotto
tiny brook
#

How, in the name of all that is holy, do I rename files while preserving Perforce history for that file?

#

Renaming inside Unreal seems to break Perforce's chain of revisions, but renaming inside P4V causes the files to be unrecognizable by Unreal as far as I've been able to solve.

silver token
#

Yeah, we're SOL on that count. The benefits of the redirectors tend to outweigh the benefits of the full history.
The file history in the Content browser can somehow show the history of filepaths so you can go to perforce with those (maybe showing deleted files for redirectors that have been cleaned up).

tiny brook
#

Augh.

tiny brook
silver token
#

Everything in a Content directory. Anything you manage in explorer or your IDE will work as normal since you can do actual renames through perforce.

tiny brook
#

Frick me. Well, at least it's not a complicated solution.

#

So .uasset files will have the same issue?

silver token
#

That's most of what is in the Content directory. Even if the Editor shows different things (blueprint, material, data asset), they're all mostly uassets.
map might be one of the few exceptions that I can think of.

tiny brook
#

Lovely.

#

Thank you for your help.

woven sluice
#

ughhhh, in a stream, anyone know if there is a way to add an exclusion for the ignored section? i need to include one subfolder names Binaries Facepalm

#

actually scrap the request, there's another problem that means this wouldn't solve everything anyway and this particular problem will go away later on in life (but i think it seems like the answer is "it's just not possible")

#

i think the components feature could have been used to strap on another stream containing the thing, if i wasn't a poor cheapskate (or wait is it paid or just disabled by default? hmm)

tiny brook
#

How do you properly manage plug-ins when using version control (Perforce]? Can I trust Epic's p4ignore, or is there other best practices I should know about?

silver token
tiny brook
#

Sounds good.

tiny brook
#

Hello! Could someone please explain the Unreal error I'm getting when I try to use the built-in Migrate feature?
"Migrated content only works if placed in a content folder"

#

I can't use the Perforce move operation because obviously Unreal loses track of all the dependencies, but I was not prepared for the Unreal move to fail like this.

woven sluice
#

you have two projects in the same depot? or what are you using migrate for

tiny brook
#

I think I misunderstood how it worked.

#

I thought it was an alias for a normal move operation, which I have found you can do by just dragging files around in the content browser.

#

On a related note, why on Earth does moving files that way delete the old ones from view within Unreal but leaves them in Perforce? It won't even let me delete them from Perforce until I submit the changelist with the file move.

wide raven
#

And absolutely it should be showing all information available. If deleted files didn't show, you wouldn't have a full picture of what you are submitting

tiny brook
#

I know it SHOULD. Definitely doesn't.

#

It just makes them invisible in Unreal, but very much still present in P4V.

wide raven
#

I think we are confusing something here, I see you mention Migrate earlier

tiny brook
#

And like I said, I can't even mark them for delete manually until I submit the changelist that Unreal generates.

tiny brook
wide raven
#

Move / Rename works as expected for me, I use Migrate so rarely I have no idea how that works

tiny brook
#

Literally just click and drag files in Content Browser in Unreal into a new folder. This checks out the files being moved, marks copies of those files for add within the new folder, but does NOT mark the old checked-out files for delete.

wide raven
#

I'ma boot up unreal to sanity check : )

tiny brook
wide raven
#

Yeah I meant within Unreal

silver token
woven sluice
#

if the asset wasn't in use, this shouldn't happen

#

you can clean it up but the process will require checking out and modifying those other assets also (automatically)

tiny brook
silver token
#

I think the only time it won't do a redirector is if you have the file open for add.
If it's checked in it should always leave a redirector since someone else could be added a reference you don't see.

tiny brook
#

So . . . should I not have deleted the old files in p4V?

woven sluice
wide raven
#

you have to handle the redirectors

tiny brook
wide raven
tiny brook
#

What the heck is the point of a move operation if you need to leave copies sitting everywhere afterwards?

woven sluice
#

it isn't a copy

silver token
#

No, you should leave redirectors alone (by default they are invisible in the content browser)
But you can manually fix them up so that assets are updated to point at the new location.

wide raven
#

read the fine manual : )

silver token
tiny brook
#

Okay frick I need to go fix that.

wide raven
#

In a small team, it's generally ok to clean up redirectors as they come
In a big team, apparently it's best to wait until everybody is on holiday and then do cleanups in one fell swoop to avoid snafus

tiny brook
#

Gotcha.

#

Y'all are very helpful, thank you.

pastel blade
#

Hello, I’d like to temporarily roll back the entire project to the state of a specific changelist. Here’s what I did in P4V: select the workspace root -> right‑click "Get Revision" -> specify the changelist -> uncheck "Only get revisions for files listed in changelist."

Is this the correct approach? And how can I do the same from the p4 command?

silver token
#

Sounds right to me. From the commandline it's probably something like p4 sync //Root/...@CL# but you'd have to check out the docs for any of the flags. The online docs are pretty good.

wide raven
pastel blade
#

@silver token I took a quick look through the p4 sync doc, but I couldn't find any parameters related to this.

@wide raven
The commands it's showing are:

p4 stream -o -v //root/Main
p4 sync E:\W\...@347

But I'm not sure how these two lines actually make that happen.

wide raven
pastel blade
silver token
wide raven
#

I tried it out, I don't see the stream command, just the sync
p4 sync c:\perforce\myproject\...@23422

#

seems solid to me. Typically visual clients like P4V etc are very transparent about what they are doing, the log should be honest and show everything relevant

pastel blade
#

@silver token @wide raven If I check “Only get revisions for files listed in changelist.”, the command will just be p4 sync E:\W\...@347, but that will only roll back the files explicitly included in that changelist.

wide raven
#

hmm

#

if I check the box with "only get revisions for files listed in this cl", I see
p4 sync c:\perforce\myproject\...@23427,@23427

silver token
#

Yeah, the checkbox being true should result in the range-based @'s that Karma's getting.
The single @ should be equivalent to the checkbox being false.

pastel blade
tiny brook
#

I'm a bit confused about how the command line "opened" command works. I can get it to work for the whole depot with p4 opened -as //depotName/..., but trying to nest any deeper than that doesn't seem to. Does that command not work for specific folders?

#

I would expect p4 opened -as //depotName/FolderName/... to work, but it seems to not.

silver token
#

Worked for me fine with subfolders of the depot

unreal mirage
#

Hello, I am currently using UnrealGameSync for syncing precompiled binaries to other team members.
But since a while now I cant submit my changes to UGS anymore because of NuGet vulnerabilities
\Engine\Source\Programs\AutomationTool\Gauntlet\Gauntlet.Automation.csproj : error NU1902: Warning As Error: Package 'Magick.NET-Q16-HDRI-AnyCPU' 14.7.0 has a known moderate severity vulnerability

I really dont know how to address this issue, if I can just skip that step somehow or upgrade the NuGet packages myself..

#

I am using the Engine/Build/Graph/Examples/BuildEditorAndTools.xml Script for submitting

sacred aspen
#

Outside of the official Perforce channels, is anyone aware of any good P4V tutorials? I'm using the desktop client.
Just want some good walk thrus and typical troubleshooting scenarios, tips etc...

wide raven
# sacred aspen Outside of the official Perforce channels, is anyone aware of any good P4V tutor...

some tips

Big Picture

  • unreal is mainline dev. all devs commit fearlessly to mainline. .uasset file locking must be respected
  • mainline should always be as functional as possible
  • if you are doing big changes to a given system, consider whether it would be possible to leave the old one be, and use a feature flag to build the new one alongside
  • setup an autobuilder - catches simple errors fast, and tricky packaging errors early

Nitty Gritty

  • shelves are your friend ( can work in multiple locations, review code, do tests on builds )
  • start the day with refresh + get latest
  • break up work into max 1 day chunks, commit every task / every day ( as long as it's not breaking stuff )
  • Move to Another Changelist : keep work separated out as needed
  • Edit Changelist : edit the description of the CL as needed

Disaster Recovery

  • before you Undo stuff, use Diffs and Get Revision to see if there is a fix instead of rolling back breaking changes
  • Search and File History are useful
sacred aspen
#

@wide raven thanks again!
Important question.
I’m a solo developer on a project with a very tight deadline of a few weeks.
I’ve never had to manage P4V myself
I’m concerned it will be a bottleneck.
For the most part it manages itself but I’ll need to constant change the Unreal project structure, create branches, add and remove files.
All these tasks I believe must be done in P4V, not in editor, correct?

Since I am a solo developer I was going to suggest working outside of version control. Thoughts?
If you don’t recommend how do I become a P4V master when I have zero time?

wide raven
# sacred aspen <@127136722419974144> thanks again! Important question. I’m a solo developer on ...

Do everything in unreal. Unreal .uasset works based on every file having a unique id which is used as a reference to keep things working. Renaming and moving stuff will create "redirectors".

Use version control. It is guaranteed to save you time when problems arise. Mystery issue, something breaks and you don't know what it was? Version Control.
Made some bad code, need to roll back to a previous revision? Version Control.
Etc etc

#

Almost every day one can see beginners struggling to trace something they have broken over in #blueprint and 95% of the time their issue would be solved by using the blueprint diff.

sacred aspen
#

Thanks for the valuable feedback!
So just to confirm I should work normally inside Unreal, make and rename new folders, etc and P4V desktop should be smart enough to track all these changes for me?

woven sluice
#

basically unreal or any other software that has a good perforce integration will do the same thing that P4V would do (run commands that talk to the perforce server and tell it what you're doing, which will build up a running changelist)

sacred aspen
#

@wide raven Do you recommend using Unreal’s built in Source Control or is managing it on the desktop with P4V sufficient? I’ve only used the latter.

woven sluice
#

i do changelist cleanup and actual submission with P4V but let unreal populate my default changelist as i work

find what works for you though, i would kind of hope that level designers and artists are probably fine just using the unreal integration as much as possible

wide raven
solar jackal
#

I need some help specifically with using Diversion here...
I had a collaborator who is as of now not working with me anymore. However, they had a single uncommited thing that now is permanently displayed as a "files with changes in other branches/workspaces" which makes it hard to properly read and ensure stuff...
Any way I can just get rid of that cleanly?

wide raven
pulsar parcel
#

I haven't seen them around that much recently

#

Which would make me worried if I had data with them because it's cloud only, and you don't have any control over your own data

glossy scaffold
#

yo anyone here use git

civic blade
civic blade
#

Yeah i have no idea as I've not come across this unfortunately. So i wouldn't be able to help

#

But if I come across il let you know 🙂

glossy scaffold
glossy scaffold
# glossy scaffold

but my main issue is those random errors and when i downloaded the ZIP from the github site it only downloaded the latest edits rather than the whole project

tiny brook
#

I do it from command line though.

tiny brook
#

Oh wait are you on a Mac?

woven sluice
#

but, might be some different issues going on there, not sure

arctic hornet
# glossy scaffold

Not a git user, but this is sadly expected behavior when using builds from epic games store, since engine and project are in separate locations and unreal can't distinguish properly between them... the "proper" (as in all studios use that) is to have your engine and projects in one folder in VCS of choice (git, etc... though usually it's inside perforce)
and that's what the source control plugins are built for, so it's trying to submit and check any modified engine files, but they're outside of your git repo

woven sluice
#

well i've been using a build from epic games launcher since 2018 and never encountered that yet, but am also a perforce/non-git user

arctic hornet
#

git seems more vocal about this, perforce just logs into console "hey, this file is outisde your workspace" and that's it

woven sluice
#

i've never seen that yet

arctic hornet
#

it will only happen when something triggers modification of engine files

#

i.e. material usage flags, or some other stuff like that

woven sluice
#

user error then 😄

arctic hornet
#

indeed

woven sluice
#

i guess i've seen engine files showing up in the uncontrolled file list too, that dumb nuisance, but i ignore that and basically don't use that dialog

arctic hornet
#

or git being annoyingly vocal, on first screenshot one can see that it's trying to query GPULightmass and other engine plugins one would probably never touch

woven sluice
#

yeah looks like you might be right there

#

gross

woven sluice
# glossy scaffold

is this using the built-in git plugin or the better third party one? not sure if it might be smarter

#

project borealis i think?

arctic hornet
#

project borealis is the team behind the plugin, but iirc it's called "Git LFS" or something lik ethat

glossy scaffold
#

is it normal to have these show up in the logs:

woven sluice
#

well i'm guessing that last error is what klukule described, maybe you have modified an engine file? but not sure

glossy scaffold
woven sluice
#

you could verify your engine install?

glossy scaffold
woven sluice
#

open epic games launcher, go to engine install, verify it

glossy scaffold
wide raven
glossy scaffold
wide raven
#

if you have massive asset packs with lots of unused stuff all in there, for example, that's just a waste of space

woven sluice
#

azure devops might still allow free large-ish git repos? but generally you're going to have to either pay for external storage, or put your data at risk (of fire/flood/theft) and host locally

#

the only way you should even consider doing the latter is if you have a partner you're developing with, so you can always have a version of your project in two remote places

sacred aspen
#

Inside Unreal having problems when I Connect to Revision Control with a specific file.
Provider is Perforce. Use P4 Config enabled.
Server, User Name and Workspace seem to populate correctly.
But when I click 'Accept Settings' I get a popup error
"Failed to connect to Revision Control. Check your settings and try again"

Although Workspace is populated, Available Workspaces is blank. Wondering if that may be the issue or...?

P4V desktop works fine.

Any troubleshooting steps appreciated!

wide raven
sacred aspen
#

Thanks

tiny brook
#

Hi. I would like to know how to resolve this but I'm having difficulties understanding it enough to ask the right questions.

#

We have this project building on computers that have this plugin, and we have committed the changelists from those computers into the depot using the P4Ignore settings supplied by the plugin, but we are still getting this whenever anyone else pulls.

#

Does that mean everyone who uses the project needs to individually install the plugin themselves? If that's the case, I would appreciate it if someone could explain to me why that is the convention.

wide raven
sick isle
#

Does anyone know how to fix the Perforce "The filesystem 'UE5' has only 733.1G free, but the command estimates it needs at least 1.9T available." issue? I'm just trying to submit the base engine w/o even having run Setup.bat. It makes no sense that P4 thinks it needs 1.9TB free to submit < 3GB...

tiny brook
#

Alright I've finally managed to get something working that has been a bane on our project all week, and now I need to be SURE that I get everything into the depot that needs to be there and nothing more. Should ANY of these files go into the depot? Particularly the .modules. I had to mark it for delete to get my project to build, but the build process regenerated it while still leaving it marked for delete. I'm not sure if I should unmark it or not.

tiny brook
wide raven
#

Intermediate, Binaries, Saved

sick isle
#

For reference, if anyone runs into "The filesystem 'depot' has only xG free, but the command estimates it needs at least yT available.", the issue can be resolved by upgrading your P4 server to a version later than: 2025.1/2810567

Bugs fixed in 2025.1 Patch 1 (2025.1/2810567) (2025/08/05)
  #2795402 (Job #127413) **
    Fix fileSize expectation issue resulting in errors indicating
    insufficient space in the depot storage.
tiny brook
#

Is there a way to configure a P4V client so it won't pull from certain directories when you hit Get Latest, even if we do want some of those files to be in the depot?

woven sluice
#

ignore it in a virtual stream

tiny brook
#

What if we're using a classic depot?

silver token
#

Then you should be able to mask it out of your client/workspace spec.

teal bone
#

Before using UGS, I had a series of batch scripts to pull individual directories and stuff. Ghetto mode!

gusty lion
#

When I copy up my changes in the Perforce Development stream to Mainline, can I keep my original changelist descriptions?

silver token
gusty lion
#

Thanks. I'm coming from mostly Git where the commit is always there.

silver token
#

I'm not sure what you mean. The original commits to the development streams are still there, with their descriptions. You don't loose those.
To see them you'd look at the Revision Graph instead of the history. That would show you things like integration/merge/copy sources and their history.

#

@gusty lion ^

gusty lion
#

I'll look into it. Thanks again.

#

I was relying on history

silver token
# gusty lion I was relying on history

That's usually good enough since the description of your copy should be sufficient to understand all the changes that might have been copied from the one stream to the other.

#

but you haven't lost anything if you really, really need it.

marble folio
#

Hello, I have a question: What is the typical naming convention for commits in source control? Are they always lowercase or does it vary?

wind gazelle
pulsar parcel
#

Naming convention for ...commits?

#

Like the commit message? Not sure why that would be all lowercase

arctic hornet
#

For us commit messages are wild west other than machine readable tags such as #jira etc. which have commonly defined formats so tools can read those

marble folio
#

Is it worth using prefixes in commits, [Fix] [Merge]?

pulsar parcel
#

not really. if they're linking a Jira ticket (other project tracking systems are available) in the description, then that'll have that context

marble folio
#

What is Jira? Jira is source Control?

#

Okay, Thanks guys

pulsar parcel
#

no?

#

I did say project tracking

#

well project management would be more accurate

teal bone
#

Jira is life.

marble folio
pulsar parcel
#

Anything you do want to have in the commit message, like a project management ticket association, you'd just enforce that with a pre-commit hook

#

the only thing we really enforced at the previous studio was a Jira ticket ID

wind gazelle
# marble folio Is it worth using prefixes in commits, [Fix] [Merge]?

it depends, on team and tools integration for style in one of repos, epic has similar layout. overall they all fit in this category just syntax changes

first section - fix|merge|tag|feat : then short description of things done fitting one line
second section - optional long list of changes, usually for merges or squashed commits
third section - #tags for jira to parse and various integration commands

readable and understandable commit messages are nesessity in an any project

nimble hazel
#

Hey, I’ve started learnin’ C++ and I’m new to VS as well. I’ve got an issue where every time I try to run “Local Windows Debugger,” it tries to open files in the Binaries folder. I assume it’s trying to recompile them, but it can’t because they’re not checked out in Perforce and are read-only.

I don’t wanna ignore the binaries since I’m the only programmer in a 4-person team , the others don’t have VS to recompile them, etc.

I’m not changing anything related to the advanced session or whatever, so is there a way to stop it from recompiling them every time I launch the project?

I can manually check them out, and then they’re not read-only, but I don’t wanna have to upload them in every changelist if I’m not actually touching the advanced session stuff for example

#

Is this possible laso to automatically check files it needs? Im using p4 plgin in VS, but instead of asking me to checkout it just fails to open it

pulsar parcel
#

there's even a typemap out there that shows this

nimble hazel
#

where? im using type map from epic

pulsar parcel
#

//depot/ should be replaced with your stream depot's name

#

even when the typemap exists, any pre-existing files need to updated with "change filetype"

nimble hazel
#

ou i didnt do that... and thats streange because all uassets are binary. I tohught they would be text without typemap

pulsar parcel
#

that entry is there for +l

#

ie. exclusive checkout

nimble hazel
#

Yeah. I still have depot but thats stange becasue uassets are working properly. They have exlusive checkout and are binary

#

so I thought my typemap is working correctly

pulsar parcel
#

well you'd replace that with your stream depot path

#

hopefully you aren't using a classic depot

nimble hazel
#

nope, stream one

#

I've seen in p4 tutorial that changing typemap when files are arleady there doesnt affect them. What I have to do now for all files that are already there?

nimble hazel
pulsar parcel
#

right click the file

#

"change file type"

#

in p4v

#

I wouldn't doubt there being a command to mass update them, but I don't have that to hand

nimble hazel
#

and should it be visible there <binary +w> ?

pulsar parcel
#

We don't keep binaries in P4 but probably

nimble hazel
#

Damn,this typemap is working on new files, but "chenge filetype" doesnt do anything. I've triend both these options. Do you have clue why is that?

#

ou, I have to change it "by hand" and select new attribute? I thought it will read from typemap now

nimble hazel
nimble hazel
#

this reopen command isnt good for this I think, because it gives you message
//....dll - file(s) not opened on this client.
However in my p4 client logs i can see its using edit command and itworks fine
p4 edit -c default -t binary+w //....dll
unfortunatelly I have to do this for every filetype, I dont see option to just use "typemap definition" and edit all files in depot

frank silo
#

hello! I know this is for source control, but anyone here has had success setting up Swarm (P4 Code Review) for perforce? I am using a Docker container for Swarm and Nginx to setup SSL to the website. I am very inexperienced with it. I have had success connecting to perforce however trying to go to localhost or the helix-swarm page recommended to use results in a no DNS address not found

pulsar parcel
frank silo
#

@pulsar parcel turns out my ports were wrong and it ended up working

haughty steppe
#

Hey guys, how do you work with redirectors in small team git projects? Are you always updating them ASAP and constantly syncing with each other to make sure you can update them without causing conficts? Or are there better ways to manage them?

wind gazelle
# haughty steppe Hey guys, how do you work with redirectors in small team git projects? Are you a...

file redirectors ?
best would be initially trying to not move files around, especially blueprints, have assets in places they have to be right away.

small changes that do not affect anyone can be pushed right away

if fixup may affect other assets it is usually done on a fixed schedule (bi-weekly or monthly) so team is aware of it.
on a rare occasions scheduled fixup can be deferred if some major task is being done on affected assets.

wide raven
sacred aspen
#

Does anyone have experience migrating assets from one project to another target project that is under version control (P4V)?

Not that straightforward it seems.
For in stance say you have a master material in the target project under source control that has been updated in another project.

What I've found is that for migration to work, not only must the target master material be checked lout, the actual project must be closed before you attempt migration from another project.

Am I missing something? Does this seem correct?

woven sluice
#

sounds like you're keeping two separate mainline copies of an asset?

arctic hornet
tiny brook
#

How on Earth do people normally handle cpp Unreal projects in a distributed environment?

#

If binaries aren't supposed to be versioned, I have yet to figure out a way to let people who don't have Visual Studio work with the project.

arctic hornet
#

Well, for unreal there are tools like UGS (Unreal Game Sync) if you combine that with Horde - or any other build server - for every code change build server automatically prebuilds binaries, stores them in a zip and then UGS automatically fetches those based on what version you are syncing to

#

generally precompiled binaries are almost byproducts of normal CI pipelines since it's a good practice to continuously compile and cook your game to test for regressions etc.

#

it's worth noting thought that most Unreal ecosystem that was made by Epic expects you to use perforce as your server, so Unreal Game Sync and Horde (Epic's build farm software and much more) is only compatible with perforce for other version controls (like git etc.) you'll have to search on the internet for community made tools or make some of your own

tiny brook
#

I am using Perforce.

#

But I'm not talking about compiled build. I mean actually opening the uproject file.

silver token
tiny brook
silver token
#

No, you distribute the dlls that are built when you build the editor.
For certain teams, checking those into source control can work (but isn't recommended).
Having an automated build (like Horde) build them and make them available (though something like UGS) is more reliable/safer.
As long as those are in the right place you should be able to "open" the uproject through the launcher, but you can do it more directly with commandline arguements to directly open the editor for the project.

tiny brook
#

What's UGS?

silver token
mossy ledge
#

Hello. Does UGS works with git? I'm looking for a VCS solution where most of the collaborative work appears to be on a single scene.

arctic hornet
#

Pretty much all the tooling made by epic works almost exclusively with Perforce since that's what epic uses internally etc.

mossy ledge
#

Okay, thanks for your answer. I'll stick for now with my current level containers/sublevels in the scene to avoid any conflicts.

#

We do not hve budget to manage Perforce costs

arctic hornet
#

yeah, understandable, perforce can be quite costly - although it's also worth noting that it's free for up to 5 users and 20 workspaces... so small teams can use it for free (other than hosting costs, which is up to you where you decide to host etc.)

#

although UGS (Unreal Game Sync) doesn't really help with collaboration on single scene/level.. for that I'd recommend switching to OFPA (One File Per Actor) approach and then using git lfs locking to avoid stomping on each other's work

mossy ledge
arctic hornet
#

yeah, makes sense, I just wanted to point that out just in case.

mossy ledge
#

Sure, once we get something concrete (prototype) that I can present, I've planned to get at this point funds ^^

arctic hornet
mossy ledge
#

Might considering it. Anyway, it's feasible to keep a git vcs and perforce side to side I guess?

arctic hornet
#

Having two vcs for the same project would be quite difficult… but switching from one ti the other is quite easy if you don’t mind not having all the history

mossy ledge
#

I was meaning having the code on a side and binary assets on Perforce, but yeah, you're right, should be hard to maintain.

#

Thanks for this

pulsar parcel
#

I've heard of people doing that and it sounds like a horror show every time

silver token
#

not off-hand.

tiny brook
#

I have not experimented with it extensively myself, but it exists and might be worth looking into.

mossy ledge
#

Thanks for this addition

tiny brook
#

Okay how hard is it to switch a Perforce classic depot to using Streams?

pulsar parcel
#

you wouldn't convert in place, you just make it and copy everything over

woven sluice
#

yeah this is more like doing a transfer from one train line to another, you'll have to just leave the old one and bring all your baggage onto the new one

tiny brook
#

Frick me that means redoing all of the setup for every user.

#

Most of whom are not especially comfortable with that process.

pulsar parcel
#

well the setup is simpler since you would ideally have prescribed virtual streams

#

and the workspace setup is just picking that stream

#

workspace mappings don't exist with streams

woven sluice
#

really, streams let the perforce admin set up the workspace mapping

#

and they also fixed the dumbass root folder issue of classic depots

#

where everyone always gets the root folder one level too high/too low

pulsar parcel
#

but to reiterate my #cpp point earlier, don't make a source build hard to integrate later. at some point or another you'll have to consider it so place the project somewhere like //myproject/main/MyProject/MyProject.uproject rather than the project being at the root

tiny brook
tiny brook
#

I think. The structure looks like "C:\Babyhead\malevolence_lane\Game Files\CapstonePrototype.uproject".

pulsar parcel
#

well I'm mostly saying for when you switch to a stream depot

#

you may want to consider keeping your classic depot for things like art source files if you don't want to keep them within the project's stream

storm sparrow
#

Hey guys, I just setup Perforce server and i am hosting the project locally on my machine.
We are only 2 developers (2 users). but everytime i get the following error.
What am i doing wrong?
PS: Perforce works as expected. no problem so far.

arctic hornet
#

Honestly I've not seen this specific error, though from the meaning I guess perforce itself can't find any IP address or MAC address to bind the license to (built-in free license is still a license under the hood)

#

it's probably specific to the p4 license -L which is supposed to print out all the interfaces, their IPs and mac addresses

#

so in theory it's safe to ignore this error until/if you get full license

storm sparrow
#

Yeah, pretty weird.

arctic hornet
weak bolt
#

anyone know when it comes to GitHub Desktop how I can set it to use LFS locally for my project which I have source control enabled for ??

#

I'm not pushing to Github which should be noted, purly using it locally as source control

arctic hornet
weak bolt
#

Anyone know how I can setup Perforce Depot locally ?

arctic hornet
weak bolt
#

so I tbf am using Perforce for my Unreal Engine projects so I've switched to use that instead cause I have that setup and working for local source control anyway

#

bassically I have the train sim world editor and I'm trying to set up local source control however issue I have is Git I can't do cause the files can get big

#

and Perforce is better but I only want to source control the specific plugin rather then the whole unreal engine priject

silver token
#

that's a little weird to be honest.

weak bolt
#

so my issue is I don't own the train sim world editor so I can't source control the whole unreal engine project

#

plus the their editor mounts paks from the main game so thatd prob mess with source control in bad way so I have to only source control the specific plugin which is my route

#

thats what I'm trying to do

weak bolt
tiny brook
#

LFS only changes what needs to be stored in your local repo. Those files still get versioned and they're still just as big.

#

The advantage is that, in distributed version control, you don't have every previous blob of the big file in your local repo, only the one you need to work.

#

You could localhost an LFS server on your own machine but I'm fairly certain it wouldn't save you any space. I can't say I've tried though so maybe I'm wrong.

keen elk
#

Does anyone know if there's a definitive guide somewhere to what exactly should be submitted to Perforce for an Unreal source build and what shouldn't?
I'm trying to set up Horde for my Unreal hobby project and I'm basically ping ponging between states of having too much checked in (and now builds fail because files are read only due to Perforce), or not having enough checked in and now things that are expected to be there, aren't

#

I managed to at least get things to a state where I can now sync and build a new stream locally, without having to run Setup.bat.
But still getting build failures on incremental builds in Horde

keen elk
#

Never mind, I'm an idiot! 🙂 My project is based on Lyra and I had the Lyra/Binaries directory checked in, that was the problem

arctic hornet
# keen elk Does anyone know if there's a definitive guide somewhere to what _exactly_ shoul...

generally it's:

  • sync from git
  • run setup.bat
  • do not touch anything else or generate project files etc.
  • submit everything to perforce
  • submit your project files, excluding Saved, Intermediate and Binaries folder, both for the game itself but also all plugins... unless the plugin has third-party native DLL in those folders (such as DLSS) - TL;DR: no intermediate, saved or binary files that are built by unreal

that's all, with that your horde, and other tools like UGS will work just fine...

#

and then for day-to-day stuff, generally don't submit anything from Binaries, Intermediate or Saved, both in Engine and your Game project, unless you're explicitly updating libraries that are already pushed

keen elk
#

Awesome thanks for the confirmation.
I ended up in trouble the first time because I did a reconcile after running Setup.bat.

I did a full obliterate and started from scratch.

Then the second time I realized the p4ignore I found online was too restrictive and I was missing a whole bunch of stuff. (It had stuff in there to filter out Templates and Samples, but it was filtering out any directory containing those strings, which breaks a whole bunch of stuff in Engine/Source/Programs)

I think I've finally got something working now. It just turned out I had Binaries from my Lyra project checked in

#

Got to go through this whole process again when I upgrade the engine version on this hobby project, so definitely need to make sure I do it consistently next time

weak bolt
#

But tbf im keeping it all local anyway so im happy for git to suggest etc, im not actually pushing anything to github

sweet oyster
#

Hello,
Me and my team are having some trouble setting up source control on unreal engine and where wondering in anyone is available to help us out with the issue?
Or if anyone knows a way other than source control that would allow us to work on the same project in unreal engine control?

woven sluice
#

don't ask to ask, just ask

#

you do need source control for any serious project; there is no alternative to it, just different flavors of it

wide raven
sweet oyster
# wide raven * what are you using : git / perforce etc * where are you stuck

i am using preforce , when my team mates tyring to join i have this error Connect to server failed; check $P4PORT.
TCP connect to my ip failed.
connect: my ip : WSAETIMEDOUT, A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

#

i tried Tailscale to help but sitll

wide raven
woven sluice
#

you're hosting locally inside your house/local network? do you think it's working fine for you locally, just your external teammates can't connect?

#

did you forward your ports before using tailscale?
after trying tailscale did you actually get them to connect to the correct IP inside tailscale?

neat grotto
#

I just found out about this Perforce alternative today. It's early days, but it looks very promising. I'm going to try it with a personal project soon.

https://ark-vcs.com

silver token
neat grotto
silver token
#

Yeah, some competition/alternatives are steps in the right direction.

pulsar parcel
neat grotto
#

You can even create a workspace with a built-in server if you're working alone. It's quite intriguing.

#

I think it's written in Jai, Jonathan Blow's programming language.

pulsar parcel
#

It looks pretty early though, so I'm not sure I'd trust it as the source of truth for a project, not without mirroring each commit to another SCM

#

Oh god really?

neat grotto
pulsar parcel
#

I was expecting a Rust vibe from the website