Perforce Use

Hey does anyone here use or has ever used Perforce with UE4 game dev? Any benefit to using it over Git?

I would advocate source control even for solo development. Perforce is a bit of a chore working with at that level, but I find it works well for me after getting used to the control processes. Modifying source code, especially seems a bit long winded, but so many benefits once you’re used to it. It generally seems to have a lot of admin features, if you’re into wearing that hat.

Source control integration in the engine is exceptional, so I’d say it’s missing out not taking advantage of it in general.
As for preference it works for me with my limited experience and scope.

Perforce is awesome, it has a decent visual client and it’s great with large binary data like you find in a game project.

If you prefer a command line experience, not running a p4 server or you just want to work more like you do in git. Perforce recently added a DVCS system that works quite similar to git, except you can put a big uasset in there without killing your repo and it’ll be way faster. The only restriction on the free license is max 20 users, which shouldn’t be much of an issue.

Branches are called Streams you can read more about it here http://www.perforce.com/blog/150521/helix-versioning-engine-git-users

I just use a normal P4 server/client workflow but I’ve tried this new stuff and it’s pretty awesome.

I’ve used a lot of version control systems both open source and paid, and for game development, nothing beats perforce.

/ Kyle

Have either of you experienced using Perforce with remote team members? Is that possible to do?

As long as your perforce server is accessible (whether you’re using some cloud hosted solution like AWS, or something like DynDNS if you have it running on some local server), then they should be able to connect remotely and things should work fine. I’ve been using perforce for years and love it.

We use perforce remotely as well. Our server is remote and then we have a local p4proxy we run for the people in the office. Perforce’s DVCS stuff is a natural fit for this sort of team as well, just like git.

If the point of using git is to use github so that you can collaborate without having to run the server yourself, you can use Assembla which is similar solution.

Has anyone had any security issues with using Perforce remotely? Also, can anyone point me in the right direction as to how to setup a secure connection remotely? I have it running just fine locally but can’t figure out how to give my remote team access using Perforce. We have done fine using GitHub for other projects in the past.

Are you running the server locally? Or using a service like AWS or Assembla? If you are running it locally (or using AWS actually), you need to poke a hole through any firewalls so it can accept incoming connections on whatever port you have Perforce setup on. If you are running locally you’ll need either a static IP or something like DynDNS so you can have an IP/URL for remote people to connect to.

Here’s a good video on setting up a Perforce instance within AWS. If you don’t mind getting your feet wet with Linux and some remote admin, I recommend this setup (or Assembla) as it gives you remote backup in the cloud and a static IP.

Hey thanks I will look into this!
But to answer your question…locally. Is there a way to setup a static ip without paying an external company?

You could use a service like https://www.dtdns.com/ which basically just gives you a URL and a client (that you install on your local machine) that will automatically route the URL they give you to your home machine, even if your IP changes regularly.

Make sure to think about how you’re going to handle large binaries. We make our huge lightmapped level files type ‘binary+S3’ to limit repo disk usage to levelsize * 3 per level.

Okay this may sound like a noob question…but I’m a noob…so…I’ve purchased DynDNS and a EA6500 Linksys router and Perforce. My goal is to allow a remote user to access my Perforce server that I’m hosting locally on a in-house machine. I followed your portforwarding tutorial and can access my linksys router from anywhere it seems…however…I don’t want to give someone access to my router…the goal is for them to access my server. Under the Apps and Gaming tab of the Smart Wi-Fi Router the Device IP is 192.168…which from my understanding is a internal IP…and it can’t be changed in the router…so how do I give access to an external IP so my Perforce (P4V) server can be accessed remotely…or is that even what I should be doing? I can access my router from wireless machines now…thanks to the DynDNS but that isn’t solving the Perforce remote connection issue.

I’ve read several tutorials and watched a ton of videos but none of them actually simplify this process…although strangely…I’m learning this stuff…LOL…anyway…Do I need a SSH in order to open the port on my local machine now that I’ve purchased DynDNS services? It would seem so…If that’s the case does anyone have an SSH they recommend?

You shouldn’t need an SSH certificate or anything like that. Once you have the DynDNS stuff setup, you’ll need to go into your router settings and make sure you are forwarding any TCP connections on your Perforce port (default 1666) to whatever your local machine’s internal IP is (192.168.x.x). The DynDNS should be routing to your external IP (you can see what that is in your router settings, or https://www.whatismyip.com/ ), so once you have the port forwarded to your machine - everything should work perfectly.

Ok, should I be doing the router portforwarding stuff using the machine that has P4V and P4Admin on it or the machine that I’m actually using as the server? I’ve been using the machine that has P4V and P4Admin. It looks right but I still can’t access my Perforce server from an external machine yet.

I have my DDNS set to DynDNS
The internet IP address is set to my external IP
Status reads as (Success)
I have my Host name setup from the DynDNS generator
System is set to (Dynamic)

Should I set up Single Port Forwarding or Port Range Forwarding? I’ve tried both but maybe I am doing something wrong?
When I set up Single PF would I use the 1666 port for the External and Internal Ports? And would the Device IP be my IPV4 address or the Default Gateway address?

Also, is the Application Name relevant?

I feel like I’m just missing something SO SIMPLE…yet I can’t seem to see it!

Should just be port 1666 (or whatever you have P4 set to use), and that would forward to port 1666 on whatever your local IP is. Application name is probably there for your own notes.

An easy way to see if its just the firewall causing issues is to set your PC as the DMZ which basically opens you up entirely, not secure long term but for a quick test to verify everything else is working correctly - it’s pretty nice.

Okay I believe this will be my last question because this is what is confusing me at this point…

What IP address should I be putting in as the Device IP#?

Should it be the IPV4 from my Server Host Machine which is the machine that has the Perforce Server (NOT P4V or P4V Admin) installed or…should it be the IPv4 from my Client Machine with P4V/P4V Admin installed?

This is confusing the hell out of me!!!

I have the port 1666 open through my Firewall now, I have DynDNS setup in my DDNS as Static instead of Dynamic now…but when I do ipconfig on my Server Machine the ip I get back is 192.168.1.1 as my Default Gateway which is the same thing I get when I do ipconfig on my Client Machine as the Default Gateway. The only IP#'s that are different are the IPv4 on both machines which I believe are the real IP’s of these two machines and the Default Gateway is just a generic IP.

Anyway…when I try to input 192.168.1.1 as the Device IP# I get an error…but it will take either of the IPv4 which both begin with 192.168.1 but the last digits are different for both machines.

Which is the correct one to place in the Device IP# for Port Forwarding to work?

HEEEEEEEEEEEYYYYYYY!!! I got it!!! Thanks to everyone that commented…FLIPPITITTY JIBBITS…I finally got it to work!

I think I have been inspired to create my own tutorial :slight_smile:

Thanks again!!!