#source-control
1 messages · Page 45 of 1
well, its not really that much, remember 10 x 10 TB 8-D
@livid pagoda if it's 5 people, azure devops gives free private repos for up to 5 people with unlimited LFS storage
oh? very interesting... I will give it a look. Thanks! @quaint obsidian
Basically, you could get started with any Git+LFS based service, and migrate elsewhere if you are not happy with it (including to your own hardware). Since you only pay for what you use, you can kick off, wait a month or two and then look at the bill. It will not be huge.
@quaint obsidian thats interesting to know :D
can someone point me to some info on how to setup multiple projects on perforce, for a local server?
https://community.perforce.com/s/article/2437 combined with https://docs.unrealengine.com/en-US/Engine/Basics/SourceControl/Perforce/index.html may help you out.
Basically, as long as you are not using Perforce's Streams feature, the entire Perforce depot is a giant file system (with versioning under the hood). Dump different projects into different folders, side by side. You may also need to update your workspace configuration to 'map' the respective depot locations to suitable locations on your local hard drive, to be able to fetch / submit against the new project folder.
How to setup Perforce so that you can share assets with other on your team.
yup thats where i get lost, so okay i got everything in different folders
but how the heck do i manage that from the other computer
that now needs to sync both of these projects
So you have probably edited the clientspec/workspace on computer #1, and added files to the depot via thst computer. Now you are wondering how to access those files from computer #2. Right? If so, you then need to update the clientspec/workspace that computer #2 uses to include a mapping for the new project's folder. And repeat, for each additional computer.
Generally speaking, there are two strategies thst people use for workspaces. Either they set up one workspace per machine, and map all of //depot. Or (preferred, if you do not need to stay within a max # of workspaces limit) they set up one workspace per project per machine, and only map the project's folder via the corresponding workspace. The 'one project per workspace' approach makes it easier to keep work separated ('get latest' will only fetch one project etc). This requires more configuration and experimentation to understand what workspaces really are in perforce, but helps in the long run.
@valid olive is it painful to know so much of perforce? 8-D
There's a silver lining: it makes one appreciate more, ah, refined VCSes even more 🙂
haha i hear you
@valid olive do you also carry on that knowledge pack about compiling unreal engine? Cause I really miss some competent person I can talk about, so far it a desert about that ;-)
i have literally no idea how to organize the git of the project for the longtime run. I mean for a project its easy, but if you wanna compile it gets a bit harder, but if you then also have a mostly blueprint only with just special members actually adding code, then it gets really dirty
(and totally into undocumented area, as if there is one documentation telling you how to organize source control for that)
what's your problem exactly?
Puh... where to start.... so primary the first problem that blocks me mostly in making good decisions is the wildness of the build process
i have freaking no idea what is going on there and i am already reading tons of code, and as software guy that freaks me out. The documentations are sadly more about process but not about the structure, i am somehow missing a "Network Compendium" style vague guide of the build process
just to be clear: i can build the project files, i can build the unreal engine, i can even fire up unrealbuildtools on my own to make the programs i need and so on, its just that i wanna know more about what goes one
thanks @valid olive
one big question in the room: Is the project file really so irrelevant as i think it is? Its just there so that we can use visual studio, right? Its totally irrelevant for any build process itself, is that correct?
no
it gives info about how to build the project
like the engine association
you can just right click and open in notepad and notepad++
there's a few settings in there
also tells which modules and plugins are needed
wait wait wait i mean teh GenerateProjectFiles project files ;-) not the uproject file
or do you mean the .sln file
yeah ;)
and please dont assume i am on the level of "right click and open in notepad++" 8-D
well idk about your experience
yeah i thought the questions might help 8-D
ok good! so the project files are irrelevant, that is already a very good to know thing, which is practical undocumented
Mmmhhhhhh ok, so when this is now cleared, its all about the parameters on the UBT
and the AT is for compiling something several times, right?
oh yeah, is there some secret hidden documentat about the UBT i am missing? I feel like the parameter and their consequences are not explained good enough. Even tho i am just hoping here ;-)
yeah no, the parameters for all command line tools are pretty undocumented, your best bet is going to the source code and see what they influence
at least afaik there's not documentation on it, I was struggling with it as well when compiling the engine to know what stuff I needed to pass to RunUAT
yeah, it feels so dirty 8-D
i mean, the scripts are working, no complain here, their basic concept makes it work and there are unlimited people who have no idea what they do and still get the result
so i know i am complaining on a different level here 8-D
i am right now thinking about how to make it a 2 layered concept, my idea is that there is one repo that generates the engine and then there is another repo with the project itself, that gets the resulting Builds to deliver an editor for them to work with
so like a bit of a pre-stage to get the classical ModKit setup later on
I saw that even the guys of Conan gave up probably and just put in a precompiled UE4Editor ;)
(which i am feeling already would be best to go)
you can have your engine in a seperate repo yes
and if you don't want the whole team to have to clone the repo and have access to the code
you can make a binary build of your engine
and then distribute that one
that's what we do
well its less that i dont want them to have access, i already have half a team who is not really trained for open up visual studio if you know what i mean
and i never do intend to train them on something that is rarely relevant for them ;) hail blueprints
yeah, so just run the buildgraph for your engine to make the binary version and pass that one on to them
it takes a while though, so if you're gonna change it regularly make it an automated process on a server maybe
and you can then use UGS to keep it in sync
oh, so UGS is for that? i was checking into it and felt it was more like a wrapper around perforce
i do have git i mentioned that, or? :D
i mean, they pull and get the new build after someone build it and pushed it to their repo
Learn what it takes to to deploy UE4 to a team.
can UGS make that "better"?
well we don't update our engine very regular, just with new versions or to add a new platform support so we just do it old school via google drive
but it can be cumbersome if you do it on the regular
irgs
yeah no we would have procedures here, one click action, build procedures
i am actually a Perl CPAN developer so i am trained for procedures to avoid work while parallel keeping it all good structured and organized 8-D
Hail CPAN!
that sounds like a youtube advertisement now ;)
ah yeah i see
we have a gitlab server (with the most awesome domain for a gitlab server in history of gitlab servers)
so i can also just add there CI/CD if i reach that point
Hi my understanding of source control is that if you want to make a big risky change to your project, you first clone your current branch, work in UE4 on the clone, then commit the clone to a branch of the current branch before merging it back into the current branch if you are happy
One last thing that is now in the pipe for me, mentally, is the relation of the uproject and the build procedures
@jolly fog yeah no ;) that is not the point we discuss here, the problem is what we do WITH the repo overall, and what repos we make at all and how we combine them for the targets we want
@jolly fog so the work the people do BEFORE so that you can do what you described :D
there is this UE4ProjectDirs file
I think he's just asking about VSC in general
Oh! sorry
what do you mean thats not the point I am just clarifying
@jolly fog you asked a question?
@jolly fog oh sorry :) i thougth (cause of the mission question mark) you were about to make a comment to what we discussed
@jolly fog so ignore me, and then yes, you absolutely described the best workflow :)
ok
@jolly fog you dont need to make a branch of course if you are just having like one change, i mean that is the literally the normal basic flow, but yeah if you make a change where you dont know how long it takes, you will go for a branch to have commits in the steps
just to clearify absolutely
its like your daily flow shouldn't involve starting your day with a branch ;-) even tho that sounds like an interesting workflow concept
I would imagine a branch if a) you are doing something very big, or b) it has a chance of breaking something
yeah both are reasonable, but i would say "if its more than 1 commit" is the most relevant one ;-)
But it seems quite clunky to have an entire separate local UE4 project for every branch
wait wait
its git
it doesnt copy
same files are just referenced internal, no panic
you can make 1000 branches
and gain probably 10k for the string length of 1000 branches names ;)
if you use SVN... well THAT copies
I was thinking in terms of the space taken by the UE4 projects themselves on my PC, but I am an amateur so maybe talking nonsense
yeah its nonsense :D
i mean yeah git gives some overhead in general so like if you have a 3 GB project with some activity you probably have a .git with also 3 GB and so you got 6 GB overall, but that is not based in any form of how many branches you have
its just the activity
the biggest size overhead you gonna have with git is the history, but you're gonna have that either way
@jolly fog i just re-read your statement above, just be clear: You clone a repo once, everything else is just switch/checkout and so on
A brief introduction to common Git workflows including the Centralized Workflow, Feature Branch Workflow, Gitflow Workflow, and Forking Workflow.
oh my god, dont shock him
he will read all this and try to make a sense out of it, even tho he just need the first one ;)
but tbh, if you're gonna be the only developer, which it sounds like since you're a beginner, you don't really need branches at all, since you could just revert to a previous point in the history
workflow depends on situation
yes
thats why i say, he shouldn't think too complex
one master, central organized and then go with it
do you guys do merging or rebasing when adding features in git?
I mean rebasing sounds nice, but also sounds like it could go wrong more easily
generally this is a procedural point and not a result question
rebase is just more clean and a rebase without cherry picking is practical the same as merging in result beside without merge commit
you can actually do that pretty much local there is a flag on git to rebase instead of merge by default
then it enforces you to commit before you pull on changes
so if you pull and someone committed, your changes get rebased on top
so no dirty merge commit
merge commits are really a pain in the ass if its about retrospection
well yeah it sucks to look at the history with merges, but then again, you can see when someone added what exactly to the main branch and could revert to exactly before the merge if a specific feature broke shit
well you can do that still without a merge commit
why is the merge moment relevant?
it isnt
commits are commits are commits
the merge commit is just a dirt shit stuffed in between the nice changes layers
well its equal topic on all kind of projects
the merge commit is just not useful in any case
not really, since unreal projects are like 90% binary stuff that is unmergeable
yeah but in a normal project its equally garbage you get ;)
as if the merge itself gives you the real right information in the end you should go back to the specific commit to be sure what you see
thats why i say it
merging is the same garbage as binary files ;)
yeah but that is not yet relevant for the merge commit topic hehe
in general you want rebase if you can manage it
and luckily you can make that your personal decision
so you rebase others merge
omg i didn't think I could swap branches in github desktop and it automatically changes stuff in unreal. Thought I would need a separate UE4 project for each branch
that would be ridiculous lol
yeah, swap branches with your editor closed
all git actions actually
why
well commiting and pushing should be fine
well, not guaranteed, it should, but reality of file locks bites
because all your assets are in use with the editor open, and if you pull and asset change it will try to replace the one that is there ,but it can't since it's loaded in the editor
and about lazy save on unreal
i would suggest to never have it open while you do git activity just to be on the safe side
and then it will say unable to unlink files
and then your open changes are fucked cause you have the ones you had + the ones that succeeded in the pull, but not the ones that failed
oh yeah I understand why a pull request might confuse it
so don't do that
but if I make an unreal change and commit to a certain branch I need github open right
not if you can commit from in the editor
you can do git from editor but I never done it
yeah I know it's there
but I don't use it like I said
I use sourcetree and command line for git operations
but you don't need anything open to commit
just whatever interface you're using
yeah in my experience the git integration is shit
I have no idea how 90% of it works I just followed an online tutorial and it said to do this and this is what I understand now
yeah you just do that outside with the git tools of your OS
if you then know how it works
then you fool around more ;) but the inline git integration of unreal is no good
at least in my experience
With LFS locks, it's impossible to use merges because the merge commit has you as an author, but it has changes for other people's locked files
so we use rebasing only
except for our long lived branches (master, promoted, stable, release)
but that never merges locked content
@quaint obsidian oh interesting detail
So hmm, regarding version control and 'how to structure a project in git'. I would separate the question of 'how does a group of developers work on the source+project' from the question of 'we have a bunch of non-programmers on our team, how do we avoid the need of Visual Studio for them'
The first centers around how you choose to put logic into certain source files / uassets. The latter centers around how to distribute pre-built packages to people on the team.
A good answer to the former centers a lot around 'do not copy and paste too much' and 'do not create large monolithic things'. On the BP/editor side, use a little bit of inheritance to avoid duplicating settings across lots of BPs - and use features like map layers to avoid a single map containing too much information.
On the C++ side, push logic from Actors - > Actor Components - > UObjects - > raw C++ classes. This gives you opportunities to break up logic into ever smaller pieces.
In the boundary between BP and C++, create new, domain-specific BP nodes in C++ to reduce the BP-side clutter. This is valuable because C++ scales better than BPs when growing large.
In a sense, if you have enough C++ dev bandwidth then it is worthwhile if the C++ people create a new (or multiple new) domain-specific language(s) which BP people subsequently use. That is, for BPs (or parts of BPs) that serve particular purposes, the BP people restrict their use of BP nodes to particular subsets where most are custom built by C++ people.
The internal distribution side of UE is more problematic. How do you enable BP people to run the with a recent version of the C++ logic without them having Visual Studio installed?
This problem is not solved in a satisfactory manner by Epics tools. UGS is a tool for fetching binaries from a Perforce server and dumping them into the Binaries folder on the user's machine. (It can also pre-fetch content during the night, it can also probavly install stuff onto a console dev kit, but the core feature is about fetching binaries from a Perforce repo.)
UGS only solves half the problem. Even if you have a Perforce server, you still need a build machine that builds game code as DLLs and submits those to Perforce.
If you use Git, UGS does not help you at all.
We are a 15 person team, we use Plastic SCM, we transitioned to Unreal about 9 months ago, and every dev just fetches all C++ code + content and builds via MSVC because we have not set up a satisfactory CI process to build binaries + created the associated 'download tool' yet. I think we will get there in <6 months but it takes actual man months to make it work well.
Our first stab at a CI + build download tool will likely ignore anything related to branches. UBT and the philosophy behind it is optimized for working on a single branch. Automated build distribution for muöti-bramch dev is hard for UE. I wrote a 15 page white paper on a way to do it earlier this year but even that approach wasn't wort putting into action.
<rant over>
@valid olive great advice/analysis, we came to many of the same conclusions at our studio
we have some unique requirements for our environment (we do TV and Film animation)
@valid olive dont worry with the VS stuff
nearly all studios do have VS and compile the engine when you grab build. You just offer a .bat to do so, so the artist just needs to click it to recompile engine
also, one important thing. BPs scale horribly in teams
because you cant merge them on source control well
its also extremelly important that you do not hold gameplay "values" in blueprints. Put those in data-assets
precisely due to source control. You do not want your logic to be bound to your value tweaks for balance
also never do blueprints that inherit from blueprints. Its a recipe for disaster when combined with source control and multiple people tinkering
@noble knoll agreed on most of what you said, only, I would like to not have content creators build code at all if possible. Replacing MSVC with Clang would eliminate license concerns. More intelligent distribution of binaries (perhaps with a package concept) could be a way forward to eliminate compilation altogether. It's a lot of work to get there though.
(Thanks for pointing out that 'data assets' are useful btw - it is a valuable strategy for separating configuration and logic into separate BPs)
Ya none of our artists have the need or ability to recompile binaries; We create an installed build via BuildGraph, and distribute the engine/project via perforce streams. We rebuild binaries only when code changes need to be made to the project or on engine upgrades. We try to minimize project compiling by distributing any code via plugins.
but we are in a pretty unique environment so that probably wouldnt be ideal for an actual game dev team
for game dev i would likely want a nightly build system
as @valid olive said SCM seems ideal for pushing binaries to non-coders in that scenario; I did a bit of research into using it but it would definitely take some setup and integration to get working for a team
Perforce or a network share can do that binary pushing fairly well; I think GitHubs LFS will get unnecessarily expensive over time. The most appropriate 'internet aware' solution is to use Cloud Storage with one of the major providers, but that then requires a bunch of glue logic to do deduplication and some synchronization with the scm. Also, a separate fetch mechanism needs to hane authentication. This all results in building a home-brew alternative to UGS - which is doable, but again, quite some work
Minimizing the amount of precompiled changes can absolutely help. Some studios in Sweden use AngelScript in-between C++ and BPs to reduce the amount of C++ changes while still being able to write logic in a text-based OOP language. That otoh requires a major commitment to AngelScript...
That is an interesting solution; lucky for us our work is done almost exclusively in-editor so we can leverage python for most editor scripting stuff. python integration has been a massive boon for us as we can integrate our pipeline api tools directly
Yep, if you can compartmentalize things that way (and effectively turn all of the C++ bits into a rarely-changing platform layer) thst sounds like a good approach
We have a system which uses Nuget. Devs can upload their own binaries to nuget and artists download them.
That's for project binaries, but engine is built on a server and downloaded in that system
It's called PBSync, PBGet and ue4versionator
PBSync updates the repo and manages a bunch of git stuff, PBGet handles project binaries and ue4versionator parses the uproject file for a custom version and downloads the appropriate engine version
Binary versions are pushed to our promoted branch on a schedule from our master branch where programmer work happens
Then, when an artist syncs their promoted branch, it gets the new version and downloads the project binaries from Nuget
and also downloads the new engine version if applicable
Interesting use of NuGet there - thanks for sharing. How are things versioned? Are version numbers based on dates, changelist numbers, or do people need to bump version #s and trigger "publish" of their binaries manually?
Based on the game version string in DefaultGame.ini + engine version. This is automatically bumped by PBGet, when you do the publish commands
just got a question , I wanna upload my project to github
it keeps failing to upload
its a 8gb repo
also, is there some way to automatically track any files over 50mb with git-lfs
I also use nuget + git for my marketplace demo plugin binaries distribution, so everyone can evaluate my plugin before buy it, ex: https://github.com/dorgonman/HorizonUIPluginDemo . In my internal project, my CI process will also push a Version tag after each editor build. Version tag is based on revision number of git(num of branch commit) + game version string in DefaultGame.ini, so in git post-checkout hook, I write some script to download nuget package base on Version tag , so my team member will automatically downlead latest version of game and engine binaries.
@valid olive yeah thanks for the overview, like the theory is clear, but the problem is really the actual detail
@valid olive what exact files are really important to be copied over from the repo made for building to be transfered to the repo made for the asset people, what exact ways are there to optimize the build process to avoid all the garbage no one needs, what exact is the current method to get a ProjectEditor given that all docus about that are pre-ancient ;), what exact is it about the uproject file in context of UBT? Like everything is just surrounding the generate project files together with uproject files through unrealprojectdirs but how i can take the use of this with the UBT?
there are a lot of small details where i feel like i know not enough to be happy
its like, i am at exactly the point where i understand what you explained, but now i want to actually nail that down in actual repos ;-)
@blazing quail thanks for pointing to this
@blazing quail it feels a bit overload ;) but still trying to understand what your scripts actually do there
What's the best way to manage asset dependencies? I keep modifying 3rd party assets but I don't want to mess up my project if I download the latest version of those assets. What strategy is normally used for this?
haha :D "strategy"..... yeah no, there is practical none, at least not that i can imagine one or saw ever someone mention one
i am still having already a hard time to realize there is an update for the asset i use 8-D
ahh hrmm.. thanks!
if you find something, tell me ;)
i think the most biggest problem that in majority of cases you modify the assets
there is no "diff" ;-)
One strategy for managing 3rd party packages - and also the Unreal Engine source code - in git:
Treat each package (and also the Unreal Engine source code) as a resource, shared across multiple games. You want to have a separation between "changes to the shared resource" and "changes to game X's version of the shared resource".
- If possible, keep each package (and also the Unreal Engine source code) in a separate repository
- Within each package repository, create a game-specific branch for the game you are working on
- Pull in each package (and also the Unreal Engine source code) as a submodule into the game project; set the ref to the game-specific branch
- When you update the original package, you update /master and related branches
- When you want to publish those updates to your game, you merge over those changes to the game-specific branch and then update the submodule ref
- When you want to make game-specific changes, you make the changes directly on the game-specific branch and then update the submodule ref. It may help to put "//BEGIN GAME X" / "//END GAME X" around each game-specific change (this makes file-by-file diffs easier down the line) -- or use "#ifdef WITH_GAME_X [local changed version] #else [changed version] #endif" as that allows you to build the game-specific branch both in unmodified and game-specific modes
This requires that people who work on the package understand how to work with submodules.
If it is not acceptable to put the stuff into submodules, then you have to resort to more crude methods. It is still valuable to keep the original versions of packages in separate repositories, but you might just copy over the files into the main repo when you 'update' to a newer version. If you do this, the begin/end markers will save you a lot of headache.
submodules are really not an optimal solution on this, but this part is actually also not the relevant part ;).
yeah, I'm just working through the backlog above
ok
(btw, notice that the submodules bit is relevant for how to manage the UE codebase if you build UE from source, with modifications)
yeah submodules are still no good solution given the sad reality of it being like totally commit-specific, so in general, its no good for the target we want to achieve, BUT I would never tell someone actually that they should NOT use a submodules solution if they can handle it, its a very good balance between a clean solution and something that doesnt look like a hidious workaround
i am just very sure i can make a solution without it that makes me happy, the problem is really for me not how to solve the problems, my problem is that there is no specific detailed documentation on those problems itself. I do overthink this here, totally clear, cause i CAN compile it, but i just want to be sure to have eaten all knowledge that exist ;)
the biggest question still in the room for me is the one with the uproject and UBT, how relevant that is, or if that is also just relevant for the GenerateProjectFiles
the second one is about "what files are required", cause its just a flood of stuff that comes out of everything 8-D
Ok.
UBT needs at least one .uproject file to be able to build your application. The .uproject file specifies the engine version, the modules, and the plugins to build & use.
UBT will parse *.Target.cs files for settings for the different build configurations (Game / Editor / Server / <default>).
UBT will parse *.Build.cs files for settings for the individual modules.
UBT will parse some other files (.uplugin files?) for settings for the plugins - which probably contain the above types of *.cs files a step further down.
Once UBT has 'discovered' all modules, it formulates a dependency graph, does up-to-date checks, and generates a list of build actions. After this it begins doing build-related things (run UBT to process header files; compile; link)
UBT's core design is such that all the code should be present at once at the start of the build process. You need to do extra work to build the Editor separately. You need to do extra work to build plugins separately.
what you mean exactly with "separately" in the last 2 sentences
I mean: do you want to have BuildEditor.bat, BuildPlugin1.bat, BuildPlugin2.bat, BuildGame.bat? And do you want that each of these build only what the bat file name suggests? That is not what UBT is designed for
Ah, yeah no, ok, thats not really fully the point, thats luxury path
Rather, you will just have a BuildGame.bat and it will build all these things in editor mode
A side effect of this is that you will find it difficult to split up the compilation/linking process. This makes it difficult to devise a good process where people use a combination of pre-built binaries and locally-built binaries.
You can do it, but you will not find UE's own tooling very helpful.
the good thing here is that there will be not much C++ development and if it will be there it will be very capsuled, so i can avoid this problem a bit
If you have a dev team, where some people are 100% content creators, some are 100% programmers, and some do a bit of both, then the only feasible way I have seen so far is to have game code and game content in the same repository.
It is possible to split code and content into different repositories, but then you cannot do atomic commits when a change straddles both code and content. It also becomes problematic to synchronize checkout operations so that code and content stay in sync on a machine.
It is possible to put code and content into sub-repos below a main repository, but then the git clients (both cmdline and GUI) I've seen will require users to jump through extra hoops to update the submodule refs a lot - and merging of submodule ref changes will get confusing - so I do not see that as satisfactory for most people on the team either
yeah there is not much of "both" moments, and if there are, they will be handled delicate, so i hear you on that, and i try to keep that out of the loop, so a more or less 100/100 situation
So you think
End result IMO: Keep game code & game content in a root repository. Move stuff that changes rarely (engine & plugins) into sub-repos
move parts of the game into plugins perhaps
we have really a no code policy so far, i dont exclude code, but in the end if we add C++ code, i am the idiot who have to make it anyway
well ok there is one another, but he can also handle all kind of situations, so i am less feared about that
accept that all devs on the team sync both code & content
accept that all devs on the team build code in order to use the editor (<--- here is where you may be able to include a binary distribution mechanism later on, but you need to build your own tooling)
thats the plan i had
as already mentioned at some point earlier, is my current idea of direction to have an engine repo which is just a copy/branch/whatever of the unreal engine repo that i use to generate the UE4Editor (or ProjectEditor) that is then copied over to the other repo and committed in there
on the other repo the people can start it via the .bat file in there
"idiot proof"
"that is then copied over to the other repo" -- what do you intend to copy? source code? binaries?
the binaries of course?!
do you intend to commit the binaries into the other repo?
So ... when devs want to run the editor, they will need to build game code -- that requires invoking UBT -- then UBT needs to see the engine code (since the game code needs editor header files) -- then the engine code (at least header files) needs to be present on all devs' machines -- then UBT will also build the editor since the game code has dependencies to the editor code -- then the prebuilt binaries will not actually be used
one problem you need to solve is you need to make UBT not build the editor when game code is built
wait, i do actually also mean the project dll to be copied over to the repo
its ok if he builds all
ah, so content creators will never compile any code? Ok, that sidesteps UBT related problems.
there is really no rebuild reason per se for the team there are no C++ development paths, and if they exist ever, they will be handled independent probably of a small subteam in a small subrepo and then copied over
if you understand
yup
reasonable, or?
Reasonable, for a start. Consider putting the binaries into a subrepo, still, so they eat up space in a separate repository on GitHub. You may decide to change to a different distribution mechanism for binaries later on.
yeah but then i can rethink, plan is actually to make a Company Launcher
but thats another construction site
(perhaps you do not enjoy submitting 1GB of modified binaries every time there is a single C++ change -- this is likely to happen if there is more than 1 machine that commits binaries)
"its ok" but i hear you
that is kinda the reason why i try to hold out the C++ workflow from my plan
if i "ignore" the c++ flow, it makes a very good sense :D
I should also mention here, that we do need an own compiled editor anyway
this is not that i do that for ffun
wait, actually i just realize
the game server build process is just not in the project files....
with UBT directly i can just make the gameserver as if its there
yeah ok that actually automatically eliminates one of the reason why i need an own editor ;) but the other still stands: Chaos
righto. well, good luck 🙂
yeah thanks, and is it really right that if i deactivate TONS of plugins of Unreal Editor that there are still 1900< modules to build?
or is that something else i did wrong that let it blow up? (I actually have just 2 platforms in there, at least so i assume ;) )
I'm not sure but I think 1900ish modules sounds reasonable
yeah ok, i mean, i feared that, probably more a "i dont want it to be real" thing ;)
UE engine devs on their high-end workstations spend 15-20 mins when they need to do a full engine rebuild. Similar rebuilds take 30-40 mins on my machine.
i have already dedicated a computer for this ;) but my workstation is faster than the machine, i think i can make it with my removed modules to 20 minutes now
and i dont need to search for crosscompile to windows via linux, or? ;)
oh, and is there any good trick or info that helps to know what files i need to copy over from the compile repo to the project repo? ;) probably just complete Binaries\ in the end, or is there slack? i also get crazy on those pdb files, cause somehow the flag for not making them seems to be not working but i must check that again, i might have just doen something wrong in my earlier "Not understanding" phase
not sure about which files are necessary. I haven't looked into that in detail myself.
understandable, its a pain in the ass
(afk for the evening - gnight!)
gn8 and thanks again
For plugins, we have an upstream branch and a master branch with our changes
for asset packs, we have a separate project containing all original assets packs and then update them and compare if needed (blueprint or material updated)
also, we will be uploading PBSync and PBGet programs as open source soon
@blazing quail but through your repo i found that UE4Launcher stuff, and the asian documentation about making independent applications, that is actually also very cool
oh my god, just saw there is actually a plugin for doing git in blueprints 8-D
What is a good github license to use in a organization when making a public repo but you want the best commercial rights? Most of the licenses they provide still give people the ability to use things for commercial rights. I am only using public because I can't afford the team payment plan for git
use bitbucket then
hu? the new free plan can have private repositories (although just 3 collaborators)
on github
and yeah the team plans are just horrible ,)
ah nice, I remembered it had private, but was thinking collaborators were more restricted
yeah no they changed it like 2-3 years ago to be more competitive against bitbucket i think
best is anyway to host your own gitlab! :D
consider using gitlab or devops instead
with docker it is actually these days so easy......
you get some server somewhere that fits your price range, find some documentation that tells you how to move the ssh to another port, then just install docker which most distributions already have now in, and if not you can add it easy, its all like idiot easy to find out
in pre-docker times that was not really so easy ;-)
what would be the purpose of changing the ssh port
i just realize, if you then go and mount the backup folder of the gitlab via a dropbox, you are pretty safe with a very low amount of work
(well not dropbox, but whatever thing that gives cloud storage to mount on linux ;) )
@gusty bobcat Does that mean 3 private collaborators plus yourself or yourself plus 2?
No idea haha
@slate pulsar you can have unlimited private contributors in a github personal repo for $7/month
but then theres the lfs data pack costs
Aye @quaint obsidian I know I have 1 gig to play with, how much would a 5 gig project cost for LFS?
it's 50gb for $5/month
but you can use azure devops repos with 5 collaborators with unlimited free storage
or GitLab.com with unlimited collaborators and 10gb storage
Nice, that's pretty cheap. I think Ill stick to github and pay the $7 for the private repos then dish out the extra $5/month if need be
I was just all bothered with the license agreement stuff and was like "this is not a open source project sooooo"
@slate pulsar if it explodes into your face, my offer stands ;) hehe
here btw my .gitignore and .gitattributes in case you need it: https://gist.github.com/Getty/9c992ccb2e7b294bd5c8b4949410a89d
oh right i should add .dll and .exe if i wanna continue that plan of adding the binaries
Nice! Thanks @gusty bobcat It's always good to have that solid gitignore and gitattributes
hey. I'm about to start group project using UE4 and I've never done this before. Which tools would most people recommend here? Perforce I assume? It's a bit overwhelming. I understand I'll probably need a cloud hosting. Anything else?
tl;dr
just looking for general tips/advice on how to start working with UE4 as 4 people group
There is no reason for Perforce beside if you really want to work with old gamedevs ;) or if you got too much money
and need something to waste it ;)
I definitely don't. So what would be the cheap/good solution for us then?
Git is faster and the standard of a bigger industry.
uh, I used git for project where most of the work was coding
but for ue4 there are tons of various assets
yeah
and there is Git LFS
which is specific made for this binary problem
and this has nothing todo with your problems
there is no problem with git and binary files
if you know to activate git lfs and give him the .gitattributes where you tell him what is binary
then it is a zero cost thing
Git will always be faster with that, faster than any other method
woah, okay. Never knew this was a thing
the only disadvantage of git is that it is more complex, not made for idiots like perforce ;)
How do you think about SVN?
????
I'll look into that. Thank you
SVN copies the files for a branch or tag
how do you think how cool that is for unreal?!?!?!?
8-D
its kinda obvious that SVN is unapplicable for unreal
I donno... I never team-worked on unreal 😆
or you just ignore every single feature source control can give you, then SVN could be "ok" ;-)
I use SVN only for my personal unreal projects only because it won't hold full history on local disk.
you can make a githook that deletes the history after commit
but more relevan tis
that git contains only minimal amount of changes, SVN produces A LOT of stuff on changes thats why you even think abut the local removal
And thinking about disk space while you define your source control workflow is kinda contraproductive ;)
then people come up and decide to use SVN cause it has no local commit history ;)
So the main weak point of SVN is branch/tag
everything
you really think you compare comparable methods
but there is git.... and all the others are pretty much garbage
I donno... Maybe just not so persuasive to me... I use git for my all other code projects except UE's just because of those binaries and I just want to install and go without additional configuration for lfs. And lots of artists and testers I know really have problem configuring git so I just choose the dumb thing. What really bugged me since first using svn is the file name case problem. Happens occasionally.
its one command they need to fire up once for their git installation
if your team is too stupid to execute on command, then you are already in hot water ;)
but whatever makes you happy, you are just wasting time and resources for yourself with that.
The versioning had never been the problem for me. Team members capabilities, company and projects management, and products defining were what killed my time.😂
Just see the talking so I joined.
the problem is what you dont see
people always tend to ignore that there are actual reasons why specific software is like specific software. If you always start MSPAint and use MSPaint for your own gain, then you never think about what Photoshop can do, so you ignore what you can do with it, and suddenly people start making photoshop stuff with MSPaint. With using some ancient source control, you are eliminating yourself the advantages you will need longtime out for a good workflow.
Most were what I couldn't control.
@gusty bobcat Which git client are you using BTW?
Oh i am using Tortoise Git on windows but i wouldn't directly suggest it, i mostly use it cause i know it from old times. You should probably evaluate the modern ones, the git for windows itself is also good.
You can also just go with the CLI and work with your git repo on windows like you do on linux (if you do)
I was thinking about, but i cant recall that i ever needed it
i was one of those guys who couldn't switch quick enough
SVN is a pain in the ass
Sounds like SVN made you a disaster before.
it was just hidious when you start trying to get more serious with the source control
this copying everything for a tag made usage of tag pretty brutal
its like: if you do not want to see what source control can do for you, use CSV or SVN
Especially on gamedev i think the branches and tags are very crucial
tags are relevant to remind people what was the state spread which is very important for reacting quick on reports without seeking through data.
and branches are like the key of subteams working on subfeatures that might still explode in their face
although the binary data stuff is not making it that much easier for us ;) by design
Especially BP.
yeah
Another pain in the ass.
but what i learned, or better say re-learn way too often: Its just easier to start a branch and then get rid of it, instead of polluting your master and then reverting that shit
BP is no pain in the ass, BP is the future, not in the form we see now fully, but BP is the general future of the complete IT, and then later we replace the nodes with voice and we got our Star Trek Computer
but its right now like a huge dildo in the ass, which can be interpreted as pain ;-)
BP is pain for me. Bunch of wires only solve a tiny problem.
you think wrong
yeah sure, if you are developer, then BP is NOT giving you anything
there is NO POINT in using BP for a ful blown developer who knows what he does
period
but...... that is not the point of the show
Though I still use BP for main logic. Only for main logic.
the point is that what you do as full blown developer can only be validated/modified/tuned by full blown developers
imagine your game like a huge amount of nodes
imagine the gigantic tree
and now mark all trees that need you to modify code in your color to show that just you can change them
if you do everything in C++ then you see the complete tree lighting up
BP can't be a tree. Only be spaghetti.
haha i dont mean the BP as a tree
all the features of your game
everything
you want "random people" to add "random features" at places you didnt planned to
and for that............ you need BP
so if you keep places no one should touch (black magic) in C++ and everything else in BP, then you are on a good team path
Aye I agree with you at least on this point.
important is to understand that its not about YOU
99.9% of game developers (especially unity mongos hehe) think that blueprint sucks cause they believe it is not giving them any advantage
I am still not understanding why every fucking unity idiot always replies with "i dont like blueprints" even tho he isn't enforced to use blueprints ;-) but thats on another paper
Because they can't write CPP and refuse to learn, maybe...
I would even say you could filter out good gamedevs with asking them about this topic. A good gamedev will always see the mindblown possibilities of Blueprint, a bad gamedev just sees nothing of use for him ;).
C++ in Unreal is pretty much identical to C# in the relevant sense ;) the only thing is that C++ is harder to debug if you make a stupid mistake
but given that C# could also make pretty random effects, that is just a mild argument
if you do stupid things, then stupid stuff happens
Its like, they dont need to make a web application which parses form data 8-D they assign attributes on game assets
its not rocket science
The only thing alike cpp of c# is grammar...
What we talk about here? grammar 8-D
BP is just another grammar
thats why i say, C++ and C# are pretty much identical
you dont need to install C++ or C# its part of the engine, you do not need to care for I/O thats all in the engine, in both cases
there is nothing left of the ACTUAL basic diffferences of the languages
The philosophy behind CPP is different from CS. It's easy to go from CPP to CS but not reverse.
you still ignore what you do
its C++ in unreal engine
you make for loops, you assign variables
It's not about me, just about most CS guys.
you do not even need to understand what is a reference, cause even that is not necessary in your path
yeah
and i say they are just ignorant
cause they do the same
there are classes, attributes..... they set them......
you ever looked at big big c++ classes of unreal engine games?
Then a crash window will teach 'em a lesson.
yeah as said, the debugging is harder on the lower level
BUT
on the higher level you face identical problems and this "problem" gets less of a deal
AND
never forget that they can just startup visual studio and get a serious error reporting
;)
And more pain comes when external dependencies joining the game.
yeah sure, but for that we have the engine plugins
no one needs really to integrate something on their own
and if, then this is like actual real hardwork in both cases
well thats why epic prepared those scripts ;) and the plugins are working beautiful as includes
i also made yesterday my first standalone application via unreal 8-D
so just bare C++ code in the unreal framework but not doing actual unreal things
What not-unreal thing it is.?
right now, just opening a window
OS' window?
yeah
Are you gonna make some kind of editor? Looks like you will give RHI a window handle then..
i just want to make a starter
cause we add a custom build engine to the project for the developer and i want them to have a sexy starter and i want the same starter to ask me where the project is so that i can pick it and dont configure it
more a training of some sort that grows into more tasks then
Ah you are providing modified UE editor for developers?
Sounds like big company.
haha no very small, but i intend to make it proper
Oh maintaining a private dev kit will be a tough work for you...
not really if you make it proper
I have a friend crazy about these kind of things too... A freelancer and addicted making private editors built from OpenGL and other opensource libraries. And his hair has totally gone.
yeah but i am just compiling unreal editor?
its not rocket science
i can train a monkey to do that ;)
🤣
the point is that i dont want to ;-)
its like even if the monkey can install visual studio and hit the right scripts, he still cant take any use of knowing this process
that is why i just compile the complete editor and add it to the repo of the game project
and then adding up a starter that gives a meaningful error if something is missing and that startsup the UE4Editor or the game depending on which button is pushed
cause if you have no C++ code in the actual game project then through that, then the people on the project can work with the done compiled one already
kinda funny
Wait, you are shipping the editor code with game?
You said starts up the editor or game depending on which button pressed...
yeah the game is also for the developers
cause they dont need to build their own
if its anyway asset driven
think mcfly think ;)
hides
that way you can very cool work on it in combination with others
cause of the synced version
so like activating full asset cheating for the developers ;-) hehe as workflow, in gamer terms
So developers will only work on assets?
the majority of them yeah
if we make C++ code it will be developed on an indepdenent path and then added to the prebuild stuff
that is a more clear workway for all involved
Ah I get it. So two teams of dev, upstream Cpp devs like you and downstream devs using the starter.
it just gets complex in the most rare case where you have c++ and assets that have to be developed together
but "thats ok", the C++ developer will be able to handle that problem on his own
But seriously: If the thing needs C++ and Assets at once to be modified and adapted, then its probably not good to be partly C++ ;-)
of course that said with a lot of asterisks to state clear that there is a lot of things between the layers ;)
Yeah that will prevent people accessing BP variables from Cpp🤣
primary the idea is that you normally prepare the asset with all the variables that are asset-specific, and just have it there, and then the C++ can use that variables to prepare the stuff, so it could even do fake variables before or just prepare one asset to test for fetching.
I just realized that tortoise git actually can read the "Updating dependencies" line from the output of the GitDependencies.exe and shows on his progress bar the actual % from it
now i am kinda curious if Unreal adapted their output so that Tortoise gets it or if Tortoise handles a variety of different progress outputs and just catches that one
at least someone could say "thats neat"
Hi
I have source code
A github
I got it and I'm currently looking for the source of the grid lines
please help
Nobody knows my answer
You want to draw a grid in UE?
I don't want to shoot in Visual Studio
I have the source but I don't know which part to use
Please help
Still not clear what you problem is... need to be more specified... What a grid does with VS...
I just want the main lines to be able to put all the other objects in the axis
Grid line
Please help if you can
You want a grid line in a UE game?
I want to draw gridlines in Visual Studio to build new software
I want to draw grid lines in Visual Studio to build new software
Eh... In short, visual studio doesn't support that thing...
VS is not content creation tool...
That is, the source of the network lines on the github website is incorrect
You can build a 3D SOFTWARE which has gridlines in it using visual studio as the IDE.
Please explain more or give me a website address
I don't how much do you know and what your purpose is... If you want to build a game maybe you can start from https://learn.unrealengine.com
😆 NP feel free to ask.
Game maker?
Yes
How long have you worked on C++...
And any software that is game engine needs network lines
It's not too long yet so I haven't been able to get the grid lines up so far I just have the idea
You need to be very professional on Cpp and DirectX, Vulkan or things and science related to make a game engine... Or you have lots of money...
But learning the basic now is a better idea. Like, learn to make a game in UE will help a lot if you want to make a competitor in the future.
I'm still trying to learn
learn.unrealengine.com will get you through almost all of UE.
😝
It's the learning site.
But not the engine
It teaches you the unreal engine.
this is not related to source control
Related to source and control. 🤣
Could give me a source control build
He seems like a boy new to programming. Just assuming...
sure, so let him stop going into chaos 🙂
Aye
this has no sense, visual studio is an IDE, what your showing a 3d grid in editor. don't call it line network, it's called a grid
( Maya I believe
seems to be
Yes
@jolly fog you can't get answser to none sense questions ...
What
we can't understand what your asking for
visual studio is an IDE, nothing related to game or 3D ...
try to formulate better what you ask for
I want to build a 3D visual studio
He want to make a competitor of UE
again this discussion should not be here is #source-control
Yes
what do you mean 3d visual studio ?
Then where to ask
maybe what you ask is how to create a grid from code/cpp ?
Yes
you need to know cpp for that, do you ?
Like the picture
if you are not allready a coder, you should use/learn blueprints first
Oky
good luck, be patient, and remember : you can't answer yourself or get help if you can't clearly formulate ....
see you 😉
@valid olive are you there by random?
Yup, prepping Christmas dinner so limited availability. What's up?
@valid olive no problem :) sorry for late i also have things happening. I get now a bit dizzy about thinking of how to make the UE4Editor alone with the splitted repos. Practical the Source of the game must be in the Source tree of the engine for the building to be happy, or?
so like when i am at D:\UnrealEngine for the Engine and have the other repo in E:\MyGame, then i just cant do UBT E:\MyGame\MyGame.uproject, or can i? mh i should probably try that
Earlier you said you didn't need to do this. What you are attempting here is more trouble than always building engine + game on all machines that work against the code repo.
i can reorganize that easily, i am just trying to understand what is the minimum to get it drift
The problematic bit is to convicce UBT that you want to build game code only on the current machine, even though the engine code (which is part of the VS solution and also the unreal project config) has not been built locally
One way around this is by creating an 'installed' build, and link the UE game project to such an installed build instead of to a folder containing the UE source code
yes
(this is kind of how UE launcher-distributed UE versions work)
that was exactly the plan, practical just a bat file that starts Engine/Binaries/Win64/UE4Editor.exe MyGame.uproject
i dont think i am that far away from that
Ok but then you need to look into how to build an 'installed' build and how that registers itself onto a system
Alright, glhf
gna, now i am on the right track, but even with the disabled plugins coming to 3382 again
when my collaborators try to load the project they get " [name] cannot be compiled. try rebuilding the source manually"
best thing to do is
delete all stuff in binaries/win64 or w/e
then build Development Editor
and commit everything that is now in Binaries
now your team don't need to compile when they want to load the project
Thanks
i got a very interesting git problem here, it seems that some includes are dropped out to be included, probably because the end path is too long (i am not particular making it longer but it is already ultralong).
Somehow i am having a hard time making my git to accept it, dont wanna move that now to linux just to see if it can work there... but whatever i do he doesnt want to add up the .h of Engine/Source/ThirdParty/IntelMetricsDiscovery/MetricsDiscoveryHelper/build/include/
wow, now i directly got it, there is a .gitignore in the MetricsDiscoveryHelper wow... ok....
wow ok, still a pain in the ass, interesting cascading .gitignore
glad you solved it!
for sure something that drives people crazy
i mean, no one will notice till they copy the repo ;) so edge case anywaY
Perforce keeps on making random changes this year
Wish they would throw up a pop-up "What's New/Changed" on updates
+ Showing 'What's New' on updates.```
might be missing some ue4 runtimes
or something
always works for us, we do it all the time, thats how we keep the non programmers happy
How can I fix it?
@restive magnet how did you add it? it might be a corrupted file issue
i just removed Binaries from the .gitignore file, deleted the binaries folder and regenerated it
is the DLL being stored with LFS or git?
I don't know, but maybe lfs since I used a tutorial that told me to install lfs or whatever it's called
ok, how large is the DLL and are they able to open it in notepad?
Which dll are you talking about? @quaint obsidian
the editor binaries dll
@quaint obsidian could it be because I have a broken class?
Oh yikes, you're not committing those are you?
Those are all hot reload DLLs. Stop compiling so much with the editor open 
uh oh
at a bare minimum think you need these three files in version control for "artists" etc to open the project, has been working for our guys at least for a bit https://i.gyazo.com/b9b59438de9c36fb34fa8b1bc44a55a6.png
if I delete the binaries folder all those extra .dll files should go away right?
yes
Happy New Year to everyone not using perforce as source control! :D
\o/
Hello, I currently have a fork of unreal engine 4.23.0 and was looking to upgrade my fork to 4.24.1
I've got roughly 4 modified files in it, so just figured easiest thing would be to make a new fork but this doesn't seem possible
Is there a standard procedure for this sort of thing not involving pull requests to epic?
@neon tulip what branch are your changes on?
release
ok, do the following in git bash in the unrealengine repo folder:
git remote add upstream https://github.com/EpicGames/UnrealEngine.git
git fetch upstream release
git rebase upstream/release
or use ssh if you use that instead of https
(git remote add upstream git@github.com:EpicGames/UnrealEngine.git)
Do that in the cloned fork of unrealengine yeah?
yeah in the fork
Does the action happen as a push kinda?
you have to force push after
or you can do a merge instead but thatll be messy
but you dont have to force push
git push --force-with-lease
Mostly just curious if i'll have a revision to my modified 4.23.0 after?
Not the end of the world if doing that obliterates it though, just curious
you won't, but you can do that
before the rebase or merge, just
git switch -c 4.23-modified
git push -u origin 4.23-modified
git switch release
thatll make a new branch called 4.23-modified from your release branch
oof, that is excellent
very much appreciate the help. So the remote, fetch, rebase are basically a reset on the release branch alone, but if i make a branch of release before running that then I will retain my current release as a seperate branch that will not be affected by the reset yeah?
very much appreciate the help
remote add adds a "link" to the original epic games repo
fetch updates info to that link
like downloads new commits
rebase makes your changes based on upstream/release
basically, it looks at what they have in common and where they split up
and it applies the commits on your branch that split from epic's release branch onto their release branch
and yeah, if you make a branch from release, it will retain that state
and then when you switch back to the original release, and modify it, only that branch will be modified
excellent
thanks again will give it a shot
hmm its saying switch is not a command
seems documented though, will try something other than mingw
you can use git checkout -b instead of git switch -c @neon tulip
git switch was introduced in git version 2.23
you should be able to update your git version:
We bring the awesome Git VCS to Windows
Appreciated, installing 2.24.1.2
after switching to the new workspace, p4 is unable to sync row assets, it throws me errors about syncing fbx, png, mp4
open for read: depot/game/content/ui/icons/input/xbox/xbox_x.png,d\1.13.gz: The system cannot find the file specified.
Librarian checkout depot/game/content/ui/icons/input/xbox/xbox_y.png failed.
any ideas what could cause that?
could be something with typemap?
nevermind, I just deleted and re-added these assets from the old workspace, works now...
I'm new to source control and don't know what I should use to backup my 30+GB project. It's important to me and I don't want to lose it if my PC were to go up in flames. Should I buy an external harddrive and just zip up the project and copy it over? What do you guys use or do with a project this large?
@velvet escarp you can use source control also local with an external harddisc or anything else. If you are not that much into "having some server" or paying a cloud service to host your data, then this can be done easily
That's what confuses me. I've researched the various source control products and they all have small limits on what you can store. What about levels I've created and spent months making? Those take up a lot of spacer correct? So correct me if I'm wrong but source control is more for code and blueprints? Large things such as levels and the assets I used to create them have to be stored on a server or external harddrive or pay for cloud storage?
oh dear the classic, yeah of course if you have binary files then new versions make no diff but a new version of the file, but its still a backup, you want the history not just a backup
its just better for code, but that doesnt make it less effective for binary
although i talk about git here, thats the good stuff ;) but you can have this all stored local, no problem
and then you have the complete history, and can go bcak to old versions and everything
for what it is used its the most effective way to do it, it is not the most easy way tho, i mean source control means understanding its flow, but if you are once into that, you will not wanna miss it
especially branches and tags and stuff that helps you go back to specific points
like savegames ;)
Ok cool. Thanks for the information. I see the importance and power of source control software but I also see all of the people struggling with it lol. I've been developing for a few years and tend to just backup locally every night and then upload to the cloud once a week. But my project has gotten so large it's becoming harder to manage and is I don't have enough cloud storage. I think I'll find the easiest source control to backup my blueprints and then just invest in an external ssd for local backup and maybe upgrade my Google Drive to 100GB. It's only $20 a year so I think that should cover me in case of any disaster.
just drive a git locally
you just need to activate git lfs (large file support) which allows you to define those extensions which he doesnt try to compare
although i must say now, that i am unsure if LFS can be done locally, actually good question
yeah ok, its not ideally i see, there is a workaround tho as it seems, but given that you work locally it might also just work fine out without LFS activated, might be a bit more storage but achieves the same (and might be slower)
but thats really just if you dont wanna just startup a little git server on your machine, i mean if you wanna be a bit more serious
and then at some point you make the git server on the cloud ;)
Yea I'm not really sure what I need to do. I'm just a solo dev right now so I don't really need all the fancy stuff a lot of these programs use
this is not about fancy, this is about the right tool for the right case
you could practical start with any doc about how to use git with your unreal engine project
you just dont "push" and "pull" cause you have no remote server
thats a starting point
Yea I've been reading guids and watching tutorials. I still don't quite understand it all. It seems a little confusing such as only being able to commit 1gb or something like that. IDK It's just all new concepts that I'm just not sure about. I'm sure it's easy once you understand it. I'm just probably over thinking it
thats not part of the source control
that is part of some service that sells you source control
you can commit whatever shit you want in your local git
See what I mean lol I don't even know what I'm talking about hahahaha
that was obvious haha
it is a big topic, but its also powerful and the more early you start with it the more early it gets just your daily routine
especially alone you will have a lot of less problems ;)
Ok so I can create my own Git server? And then go from there?
you dont need to but you can but you dont need to
the git on your local drive is already the source control
thats what i meant
you just need a git client and your stuff, and your git client makes everything possible
without any remote resource
you change stuff, git commit, you change stuff, git commit, you see a mistake, git checkout VERSIONTHATWORKED, you change stuff, git commit, you change stuff, git commit
Ok I undertand what your saying now lol my bad. I'm just worried about my drive dieing on me. I have a lot of lightning where I live and a lot of power outages and surges. I'm always scared I'll lose everything.
haha yeah, you still then need to make from time to time a backup of your git
but primary: the git is for your version control, not for your backup, but you just need to "sync" the project with the git to something
like you can just have it all on a dropbox or some other storage
even tho you might need A LOT of space then ;)
but in general thats the direction
Oh ok I see what you mean. Things are getting clearer lol
yeah
of course it THEN makes sense to just use some git server cloud service where you "git push" your data to then as "backup"
but thats then the money element which might be really noto necessary for you
but if you dont hjave it you need some other form of backup still
I gotcha. Hey thank you for spending the time to explain the basic overview of this stuff. I appreciate it.
gamedev is already a hard topic doesnt need to be more hard ;)
True that lol. I spend too much time figuring out taxes and other crap when all I want to do it develop.
where are you from?
USA
oh ;)
You in the UK?
LOL no, Germany
Gotcha. I have a lot of friends from the Netherlands and a few from Britian.
Hahahaha I keep my guard up hahahahaha
better safe than sorry, eh ;)
For some reason all my assets say "not in depot"
and when I go to check them out it says they are not in version control
I just started using source control in UE4
Is it normal for all assets to have that once you open the editor initially
if you've never committed anything to source control, yes
oh ok
then is it also normal for this dialog to only want to submit the assets I have browsed too and actually seen>
I am not using the internal tools for the source control ;) Would be curious now to know how many people in here actually do
I only really found them useful for automating checkouts w/ perforce
almost everything else became more cumbersome
haha i was about to say that probably only perforce people use it ;)
I'm having some issues with git-lfs and the creation of new c++ classes to the project. Anytime I try to create a new c++ class, it gives me this error:
Changes to generated code are not allowed```
Any ideas?
through ue4 -> Create new C++ class
i ended up fixing the issue, had to completely refresh the project
apparently the person who set it up messed up the lfs somehow when they first did it.
Guys, please help me with this issue:
The easiest way to do that would probably just be to merge the branch and then edit the file
with command line git you can do merge --no-commit which would not create the merge commit so you could tweak the file before that gets created, although you could just as easily just amend the merge commit to change it to look the way you wanted after editing the file
what would be the expression to exclude all Binaries folders from P4 workspace?
I tried , but didn't work (even on game plugins folder)
-//depot/Game/Plugins//Binaries/... //workspace/Game/Plugins/*/Binaries/...
I am using SVN for my project. we were all programmers so I ignored 'Binaries' folder.
now I want to share the project with designers as well . what's the proper way ?
Hey guys, question here. In P4V, how do you delete the temp files the editor leaves back to clean up the project? I mean Binaries, Intermediate and Saved. It's a C++ Project. Should it be done individually or on server?
Intermediate and Saved shouldn't be sent to the server
from Binaries you usually should sent only editor .dll and .modules (optionally .pdb so people would have symbols but those files are super-heavy)
if you committed them already, need to select the files in Workspace view and use Mark for Delete on them
and commit list of removed files
Hey there, I've had some problems with git and Unreal's large files before and I want to avoid these. I've already taken a look at Git LFS but most resources I find on using it have been outdated for years. Could anyone point me to where to look at for this?
Another thing, is github's default .gitignore for Unreal good enough? I used it before, but it was saving files that didn't seem that important like the console log and the project's thumbnail
Man running my own little perforce server has been so worth it
Just so nice to pull down projects from eanywhere and keep it all backed up and versioned across systems.
It is handy. I have an old Server blade in my garage that does my Perforce and Automated Builds.
Nice. I rent a little dedicated that does little jobs like that. Tried doing it with cloud type stuff and was never satisfied.
Cool, cost me $500, i turn it on when i need it.
They are great cause they have a remote access card.
So i dont need to physically be there to turn it on.
https://joesdatacenter.com/ has great prices. I just moved into a new home with good internet so might be worth just setting up a local host.
But knowing whether or not my stuff is on or connected at home and having a safe remote backup is nice.
Hetzner.de in germany offers 100 TB (and 150 TB) server with unlimited traffic really good for this kind of hosting but of course oversized for all demands ;)
Forked and updated Michael Allar's ubuntu install script to update the perforce version and work with Ubuntu 16.04 -- the oldest available Ubuntu on Digital Ocean. Might be helpful to someone here > https://github.com/pixelpriority/linux-perforce-installer
are you kids these days not also into docker? ;)
ok, so Plastic SCM for Unreal isn't the easiest to find a tutorial on...
no pinned tuts here either
ping @molten marsh @haughty ember 😬
hmm... their official Youtube channel have lots of Unity tutorials, but not a single Unreal one...
let's see how far I get with Unity tuts 😛
well, not everybody who suffers writes a documentation about it <badumtss>
Hi all!
Just throwing it out there. I'm tempted to write a version control system that sits somewhere between GIT and Perforce. We've already got a pipeline for animation / commercial production, and adding on top of it check ins/outs and branching would take time, but well within our grasp.
Throwing it out there: Would anyone be interested in a cheaper, easier to use version of Perforce, but not as complex as GIT?
that sounds like the gap plastic fills for me 😛 decentralized cheap perforce
I have heard a little bit about Plastic, what's good and such?
@vivid scaffold ??
I'm a college student working on a project with my school's game design club, and we're thinking about making the leap to Perforce (we're currently using Github, to mixed results). Unfortunately I don't know much about servers! Can anyone recommend the best services for hosting Perforce at a relatively small scale (~4 people on our team)? I'd also like to be able to run scripts on the same server that we could call from client-side Unreal CPP and Blueprints--is that possible?
Any Perforce Linux Server Admins here? 🙂
@tall belfry do not write a VCS yourself. You will spend man years chasing and fixing data loss problems. (If you are OK with spending that time while also handing the production impact, go ahead.) Write some glue/automation around an existing VCS.
We use Plastic. It supports large binary files better than Git. It supports light-weight branches better than Perforce. It has a good GUI client.
Some downsides of Plastic: the Cloud version does not support server-side script hooks and does not have a good web UI (but it is supposed to be in the works) - if you need those you should go straight for the Server version.
@molten marsh you have a perforce tutorial link pinned in this channel... hence why I cheekily pinged you when I was asking about plasticscm tutorials
@tranquil stream if you're serious about that, consider buying simple machine for server
it doesn't has to be super fast to handle p4 and occasional operations like cooking
it pays off with time and you don't have to care about drive space, you just buy how much you need
every time when I look at cloud Perforce solutions, I'm like "80 GB" for 20 $/mo? good for starters, but super-expensive and limited in the long term
if you need a cloud solution, I hear people recommending Digital Ocean - you pay for a "droplet", many flexible tiers
Hi. I just set up a Perforce Linux server and got connected to the client. When I transferred files to the server repository I did not remove any files. All project files were transferred. Am I forced to check out the entire project directory / all files to test code in the editor (debug mode) or is there anything I can do to be able to run .uproject without having check out the other files it needs to work?
hey peeps, who here has set up the UGS metadata server?
Ugh... anyone got a nice set of Perforce scripts to fix all the stuff that isn't recoverable/interruptable?
Working with a few tens or hundreds of thousands of files and having a sync or a reconcile eventually fail is a huge pain.
I haven't been able to get my pet project reconciled because reconciling doesn't do anything until its complete. So any failure during the whole process is a total loss. Syncing, at least, goes file-by-file.
hi guys one of my coders reverted a merge and now we are in a dire place I'm using github deskptop and gitlab can you guys point me into documentation to not revert but to get back to an old point on the history of the repo( I dunno if that's a thing ?
just do a git checkout *insert commit sha here*
e.g. git checkout b05a99abfbdbc7466c97115a426f9c76d9818af2
and the you force push to your branch if you want this to overwrite everythgin
@rotund bobcat in git bash?
yes
be careful to be sure you want this though
cause if you force push old content on the branch, everything after that commit will be lost
I'm going to take a screen shot to see that we are in the same page
ok so the one I have highlighted is the one I want to get back to
the ones in front the highlighted one I don't care for
I am having issues setting up the metadata server, I have IIS working and configured all xml files properly, the issue is IIS isn't loading the metadata module correctly and when I add it manually into handler mappings, I get an error so I am puzzled
if you don't care about the commits after yeah do as I said
@rotund bobcat one last question in order to do this I assume I have to navigate till the git repository folder right ? https://gyazo.com/28bd990b36c079e3b2f19c38bcd0360f
yes
@rotund bobcat ok it went back to that point in the repo but it says now that I'm in a detach head branch, how do I return to normal, I make a pull request through git bash?
do you have write access to the branch you want it on
try git push -u origin *branchname* --force
yes
bash: -u: command not found
try without the -u, might be just for new branches that
or git push origin HEAD:master --force if that doesn't work
$ git push -origin master --force
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push master HEAD:<name-of-remote-branch>
yeah, that's the thing I said to try if it doesn't work
I guess this means I don't have permission
yeah
but I'm a Maintainer
idk, I don't use gitlab, don't know what kind of permissions you have set up
@rotund bobcat I ended up using the git reset and now the head is pointing at the right commit, however is still telling me to pull the old ones
can I fix this with a push?
well a normal push would not work since it would say you're missing remote work
so you'd have to force push, which you can't since you don't have permission to do that
any idea how i set the default .git project on VS startup of my game project sln?
I have two .git repos here that i see when i open my unreal engine game .sln file. the one that I want to point to is the "Source" repo that is a part of my own game project, and not the default selection of the unreal engine engine repo. thanks! please @ me if you have an answer and i don't respond right away.
hi all I am following through on my new years resolution to start getting serious about source control
I set up a perforce server on amazon ec2 and I am uploading my project files (70 gb) to it for the first time
it's going to take quite a while for the upload, so I was wondering if there's any way to validate it's uploading beyond just the blue progress bar on the add files wizard?
nevermind I found a way, I connected to my ec2 instance and ran 'du' command on the directory being created from the shell
now I'll just wait and cross my fingers at the end it all works out and I can download the project files on to my other computer after all that
hmm I ran into one more perforce issue if anyone can help
I am installing perforce helix on to an amazon ec2 instance running linux
the unreal documentation for installing it suggests changing the typemap with p4 commands
How to setup Perforce so that you can share assets with other on your team.
I tried uploading p4 to my amazon ec2 instance with putty and did chmod +x to make it an executable
but when I type p4 commands from my putty connection window to the ec2 instance, it is unresponsive
just p4: command not found
is the p4 binary in your current working directory (you will probably want to install it to /usr/local/bin so it shows up in your PATH)
I'm not sure how to navigate to that through the amazon ec2 connection window
I am kind of a noob with amazon ec2/ssh things
or should I be using the p4 tool locally and connecting to my remote p4d server that I've hosted on amazon?
you should be able to do it remotely (assuming your server is configured and you can connect with p4)
thanks I am trying that now
I was able to connect from my machine to the remote server
I did not set up my perforce server as case insensitive, but the unreal documentation suggests it's important
the perforce documentation for switching it seems complicated though
does anyone have any experience on whether this actually matters in the end?
hmm this one seems to have good instructions on switching it
I want to set svn version control up for my project. I'm currently using gitlab, but I want to move everything to my own server. I followed UE4's walkthrough on it.
https://docs.unrealengine.com/en-US/Engine/Basics/SourceControl/SVN/index.html
My seldom used laptop, which is connected via wifi, is going to be the server. Installed Visual SVN on it and created an empty repo and gave 2 users (one for my work pc and another for my home pc) access to it. On both home and work PCs I have the latest tortoise SVN installed.
Stuck my the contents of root folder of the Gitlab project into a newly created folder on my home PC, clicked that folder > SVN checkout and copy pasted the URL, sent via emal from the created repo on Visual SVN, into "URL of repository" and verified the Checkout directory was the same as the one I clicked checkout on.
Fsr, I can't connect my home pc (wired) to the laptop server (wifi) even tho they are on the same network. Would this mean my router settings are bad? If so, what might I look into to fix it?
How to setup SVN so that you can share assets with other on your team.
Perhaps my router is blocking the default port? I think it's 443 by default.
anyone know if I need to check in ignore.conf in PlasticSCM?
oh... seems I can add it to the ignore list itself 😛
might be good to have an ignore file on the server, so that everyone is ignoring the same files
although never used plastic so idk
@wild sage thanks!
Nw :)
Epic is going to have a stream next week or so about setting up source control for ue4
so stay tuned for that as well @fleet anvil
but for my perforce I had to allow the service to connect through the firewall.. through windows firewall settings
and then on the router itself, through the admin panel, also had to setup port forwarding
i actually have to do that last part almost every month as my server's ip changes
Even when connecting locally? @fringe abyss
no, mine is not setup locally, even though im using the same network i believe it still goes through the internet...
Wait, but if it's the same network it is local 🤔
the network is local but i connect through the IP address (not the local one like 127.x.x.1
using no ddns net
to mask the ip
Oh because others are using it?
But still, you should be able to connect perfectly fine through the local IP
SourceControl: Error: G:/TylersWS/FireProject/Content/ThirdPersonBP/Maps/AcademyMap.umap - must create client 'FireRescueSimulatorWS' to access local files.
Anyone know what that means im new to source control? Please @ me.
@lost silo Perforce I presume? Are you in that workspace (FireRescueSimulatorWS)? Is that even the workspace you wanna associate with that project?
Yeah i fixed it thank you
Perfect :)
For github, should I ignore Config/DefaultEngine.ini?
The ini files are part of your game content and should not be ignored
I need to setup a new source control server. In the past I've used the free license for perforce but the pricing once you go above that is not attractive. Is anyone using Plastic SCM with a small team or even as a solo dev? The pricing seems fairly reasonable even when you need 200GB or more of space. Can anyone point to a good overview Doc or Video of how it works and setting it up for UE?
or if anyone knows a reasonable hosting option for perforce. I've looked at using AWS in the past, but I'm a little unsure of how much work it would be to maintain. I need to balance cost while minimizing the time required maintaining it.
Last thing, If anyone is using AWS or EC2 I'd love to hear how it worked out and what the costs ended up being. I'm reading through the scroll now too.
Anyone have a copy of their lock rules they'd be willing to share?
@kind olive I'm starting to set up perforce today as well
I found on microsoft azure they have a free $200 credit for the first sign up
right now I'm about 41% of uploading 50 gigs over the last 4 hours, but hopefully after that initial upload it's workable for just doing small updates
I found this tutorial very helpful
This document covers how to set up a new Perforce server and populate it with an Unreal Engine source build alongside your projects. This is the most basic setup for 'beginner' Perforce pipelines and does not cover things like streams. Please note that you should only do th...
I did not research plastic just to clarify, but I chose to try perforce over git because of what people wrote about its handling of changes in binary files
the last studio I worked at also used it and it seemed ok there
@fickle canopy Thanks, but I'm very familiar with running a perforce server. I was just looking for info on peoples hosting experiences. For now though I'm going to take a look at Plastic SCM. Their hosting seems fairly reasonable even at scale.
Oh, and yeah Allar's posts were extremely helpful setting up things like ignore files and type maps the first few times. That's a great link.
There's a few things with perforce I dislike. The few times I've actually had to restore to change list have been problematic and the process for creating checkpoints and other stuff requires more attention than I really want to spend on it. If Plastic SCM can handle things with less need to micromanage at the price they are offering I'm sold. Perforce is just too expensive when they demand a minimum of 5 or 6 users. They'd actually be a great option, I use to work on the backend where I live and I'm about as close to directly connected as you can get to one of the Data Centers they use.
Everytime I look at their pricing it seems like they've changed it and it'll work and at the last minute there's always a deal breaking catch.
Unless they're hiding something it looks like Assembla is offering 1TB of space for a single user depot at $44/month. It's tempting since I'm already familiar with Perforce.
yeah I found that option kind of pricy for myself at the moment
so far my game has only made 400 in sales so it's steep to go for 44/month
post back what your experience is like with plastic I'm very curious
So far it seems fairly simple. I'm still waiting on some files to move over to the new system before the initial commit.
yeah, Plastic seems better looking forward when new users might be needed. ~$6/user vs $44
So far I'm really liking Plastic. I had a hard time at first because I expected it to be harder to setup than it is.
hi, my team and I are encountering this error when my lead pushes to our Git repo, any ideas? https://media.discordapp.net/attachments/603374801280696323/665781389261537281/unknown.png
i have no error pushing myself, but our project lead has this error, and we can't work as a team until it's fixed :/
@glad vector which git version you use? try to update it?
@glad vector that repo is very big, are you using git lfs for your binary files? Or are you just adding all into a plain git repo?
@glad vector Where is your git repo stored
@blazing quail we use the latest, for all our members, but we’ve decided it was a storage issue, so we’re ultimately swapping servers to see if the issue is fixed. And @next swallow , not sure what you mean by that exactly, seeing as we each have desired local locations for our cloned versions of the repo as you would normally, so yes. @cold lotus I believe we had implemented lfs on initialization too, but prob not a bad idea to bring it up again to the lead tonight. Thanks guys. Cheers.
