5评论

Perforce使用教程

韩宇飞 2018-09-22 1.9k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏开发行业精英群711501594

本文首发于知乎专栏MACK的游戏开发笔记,欢迎各位关注。

简介

Perforce是一款非常优秀的商业化版本管理工具,特别是对美术资源比较友好,更新速度快安全。

安装

    • 首先安装Windows版的P4,双击安装包选择路径开始安装,这里的Server和Name可以先不填
    • 启动P4登录输入服务器地址,输入分配的P4账号,自己创建一个新的Workspace
创建Workspace,名字的话包含项目,职位,员工名称,按照如下规则:
    • 如果客户端让你确认证书指纹,请信任该指纹
    • 重要:如果客户端让你选择编码方式,请选择UTF8编码
    • 重要:修改Line ending:菜单栏中依次选择Connection–>Edit Current Workspace–>Advanced,然后选择UNIX
    • 如果有多个库,点击Connection->Open Connection可以弹出设置服务器,用户,WorkSpace的窗口

或者点击Connection->Open Recent 可以直接切换打开过的服务器,用户,WorkSpace的配置

Workspace

Workspace可以理解为,depot到本地的一个映射,对应本地的一个目录。例如:

开发的过程中可以有多个Workspace(例如一个用来开发,一个用来更新验证保证提交没有错误),但一般只推荐有一个Workspace

    • WorkSpace可以切换,通过Connection->Switch To Workspace或者,如下图:

选择列表中的Workspace条目,双击切换,按DEL按键可以删除Workspace。出现问题的时候先确认下Worksapce是否正确。

    • WorkSpace可以编辑,通过Connection->Switch To Workspace,如下图:

可以修改Workspace的名字,本地目录以及一些高级参数

视图

目录区分为Depot标签页表示服务器上存储的文件目录结构,和Workspace表示本地存储的文件目录结构。

    • 带感叹号的文件表示本地和服务器不一致,一般这种情况请先更新P4

    • 文件目录里没有任何标记的文件是说明服务器上没有的:
    • 红色问号的表示和服务器上不一样,有冲突的。这种文件不能直接合入:
    • refresh某些情况下某些修改不能实时地在p4v中跟新,可以在view->refreash all。也可以在任意文件,目录或changelist右键中找到refresh相关的操作:


获取

    • 在需要获取资源的目录上右键选择Get Latest Revision,这样可以拉取服务器最新的变更,【重要:每次提交前必须拉取一次】:
    • 因为Get Latest Revision是拉取服务器最新变更,但是有时候我们希望覆盖本地的资源,或者是P4出了一些问题导致一些资源没有更新到。这时候我们可以选择Get Revision,然后在弹出的窗口勾选Force Operation,再点击Get Revision的按钮,强制从服务器上拉取最新的资源。这样服务器会把该目录下的资源强制拉取一遍,时间会比较长:
    • 另外也可以对指定版本获取,一般用于回退到某个版本:


Submit

P4的提交是以Changelist为单位,所有修改过的文件会放在一个Changelist里。如下图

对要修改的文件,在文件上右键选择CheckOut,会弹出选择Changelist的窗口,可以放在默认或者新建的Changelist下:


    • 对要删除的文件可以右键选择Mark for Delete,最好在depot窗口操作,【重要:删除的时候别忘了删除meta文件】,特别是目录也有meta:
    • 对新增的文件,需要到WorkSpace视图下选择Mark for Add:
    • Reconcile。P4提供一个便捷的方式可以直接对一个目录进行比较,找到和服务器上不同的文件,包括修改,删除,新增。找出之后会自动添加到Changelist中,自动完成上面三种操作:
有了Changelist之后,就可以提交了。右键Changelist选择Submit或者点击工具栏里的Submit图标,都会弹出 上传的提示框,输入上传的备注之后就可以提交了。建议每次提交前先对Changelist右键选择Revert Unchanged Files防止提交一些未修改过的文件。【重要:提交备注一定要写的详细清晰易懂】:

Revert

当有文件不想提交的时候可以选择revert,revert之后会放弃本地修改,从服务器重新拉取最新的文件。

    • 选中文件或者Changelist之后右键,在弹出菜单里可以选择Revert If Unchanged或者Revert。Revert If Unchanged是当本地文件和服务器一样没修改的时候会回退。Revert则是强行回滚,放弃本地修改。如果选择的是Changelist,则会对Changelist下的所有问题做Revert操作。

另外也可以通过工具栏的Revert按钮进行回退。


History

有多种方法可以看到目录或者文件的历史,可以看到在什么时候谁传了什么内容。可以比较修改了什么,也可以直接获得历史版本。【重要:每次提交前必须先对比一下本地文件和服务器文件的差异】。

    • 在Changelist的文件上右键,选择File History,会弹出文件历史窗口:

然后可以对历史做比较,可以比较任意两个历史版本,也可以拿当前本地文件和服务器历史版本比较等等:

    • 还有一种就是选中目录区的文件夹或者文件上,然后在信息区切到History的标签页上:


Resolve

当本地文件和服务器有冲突时文件上会有红色的问号。这时候我们必须首先解决冲突。

    • 在冲突文件上右键选择Resolve:

然后弹出菜单中有四种选项,Accept Source,Accept Target,Accept Meged,Run Merge Tool。如果希望以自己的为准强行合并,就选择Accept Target一般来说美术资源多选择这个,如果希望以服务器为准就选择Accept Source,Target还是Source可以通过上面显示的信息确认。如果希望让工具自动合并本地和服务器,就选择Accept Merged。如果选择了Run Merged Tool就会弹出Merge工具,人工进行合并:


Shelve

当有些文件本地修改了,希望让别人获得或者先不想上传自己缓存一下,可以使用Shelve功能。这样这些文件会传到服务器上但是不会进版本,别人或者自己也可以从服务器上再拉下来。

    • 右键选中的文件选择Shelve,也可以选中整个Changelist然后右键Shelve Files,成功之后会再Shelved Files有文件列表:
    • 当想获得Shelve文件时,可以把Changelist的过滤关闭,选择希望Unshelve的Changelist,然后Unshelve:


sRGB图转到线性空间(只能接近设计效果,如果带有 Alpha,和设计效果误差更大。


  1. gamma1.0.icc配置文件存储在C:/Windows/System32/spool/drivers/color目录。

  2. 编辑->转换为配置文件,选择gamma1.0

  3. 转换后的图片可以看到源配置变为gamma1.0

     

  4. 美术资源需要在gamma空间制作时,还原颜色设置为sRGB。

     

  5. 颜色设置为线性空间(gamma1.0)时,勾选视图->校样设置->显示器,可以看到存储后图像经过显示器校正后的颜色

     

  6. 保存时不勾选ICC配置文件,存储的图片在文件夹中显示效果与PS中进行校样颜色后,颜色一致;勾选则和校样颜色前颜色一致。

     

Icc颜色配置文件制作方法

  1. 编辑->颜色设置->RGB->自定RGB

     

  2. 修改名称和灰度系数

  


 3.存储icc文件


批处理转换图片到线性空间

  1. 窗口->动作,新建动作


     

  2. 执行一遍sRGB到线性空间的操作


     

    记录这次操作

  3. 选择 文件->自动->批处理

     

  4. 选择需要修改的源文件夹和修改后保存的文件夹

     

Linear流程制作贴图

Photoshop的图层和图层之间做混合的时候,每个上层图层都经过了伽马变换,然后才做了混合,这个方式是设置中的默认值。

使用线性流程时,选择“用灰度系数混合RGB颜色”,参数设置为1,这样图层直接就是直接混合的结果。

1.颜色设置为gamma1.0

2.勾选用灰度系数混合RGB颜色,值为1.0

3.存储时勾选ICC配置文件gamma1.0   


4.Unity中设置为Linear color space,图片不勾选sRGB


这样,图片在PS中,保存的文件夹中,以及Unity中效果是一致的。


PS

    • 【重要:一定要不要漏了传meta文件!】如果漏传了meta文件,应该把本地对应的资源文件和meta一起删除,提交服务器,然后再重新上传一遍。并且之前的引用要重新指定一遍。
    • 每次登陆需要确认Workspace正确

本文作者

韩宇飞

热爱游戏热爱编程的游戏开发。对跑步,游泳,潜水,滑板,读书,木工,烹饪,音乐吉他等也有浓厚的兴趣,爱好广泛,有好奇心,崇尚极简。立志开发一款让自己满意玩家喜欢的游戏

腾讯游戏学院公众号