0%

音乐一直是制作游戏中的一个比较令人头秃的方面,在美术资源和音效资源有大量的免费开源资源可用的时候,音乐资源虽然也有那么一些,但大部分比较一言难尽,让人觉得不如不用的好。MSU的游戏开发网课里有提到可以用苹果自带的GarageBand来制作游戏音乐,制作出来的音乐版权是完全归制作者所有的。但这个方法的难点在于不是所有人都会演奏乐器比如我,作曲更是在大部分人的技能树外。但我最近发现,有一些取巧的方法可以用,比如使用那些已经超过70年进入公共版权的曲谱,在GarageBand的音轨里直接照谱编辑。当然,这个方法的限制也很多。大部分乐曲都很难用这个方法做出来,其一,虽然据说GarageBand支持触控对演奏力度的模拟,但如果像我这样不会演奏只能在音轨里编辑的,演奏出来的往往是比较生硬的,这使得那些需要很高演奏技巧的曲子都不适合,因为模拟不出演奏技巧后,曲子听起来会非常怪异,而即使并不需要高超的演奏技巧,但如果是独奏曲的话,出来的效果往往也很单调,如果是在本身有大量游戏音效的环境下轻量使用还好,如果是在需要音乐做重点烘托的地方就很煞风景;其二,这个软件本质还是给人做流行音乐而不是古典音乐的,于是做起古典音乐来很多地方都很受限制,首先可选节拍只有4/4,3/4,6/8三种,虽然可以尽量把别的节拍往这上面凑,但还是局限很大,2/2凑4/4或者12/8凑6/8这种还好,9/8这种就很麻烦,凑3/4或者6/8出来的强弱音不太对怎么听怎么别扭,其次乐器有大量流行乐用的吉他以及各种鼓以及各种电音和效果,但古典乐器就比较少,经常照谱凑不齐;其三,这个软件虽然理论上支持很多音轨,但音轨间的混音功能极其有限,于是三四个乐器音轨出来还好,音轨太多之后听起来就不太对了,虽然理论上它可以导出多轨工程文件,但它的格式是它自己的.band文件,没法导进adobe audition这种更适合做多轨混音效果的软件里面去做下一步,虽然也可以单独把每个音轨存成一个单独的音频文件,然后去audition里新建一个工程,但这样不太方便看出合奏效果,尤其如果需要整个音轨调高或调低多少半音八度或者所有音轨调整节奏速度这些功能还是在garageband里做起来比较方便,在audition里混音好做但这个不好做,但如果有需要的话,确实也可以,只是预算时间得大幅增加。总的来说,因为现在进入公共版权的绝大部分都是古典乐,于是这个方法能做的相当有限。我试验了十来首不同风格的曲子,感觉效果最好的是那种1轨钢琴加1-2轨弦乐这样的曲子,能最大限度地掩盖住单调平板的缺点,虽然听起来还是不太耐听,但在游戏里再加上音效混音后,也还勉强可用。

Tips:

1.在IMSLP上搜索曲目的乐谱时,有两点需要注意的,一是一般来说会有挺多不同的版本的,不同版本之间不仅是出版社以及扫描清晰程度不同,有些的编曲也是不同的,可以选择其中比较适合演奏的版本,但需要注意不同谱子的版权,有的最近年间被人重新编曲的并不是公版;二是这网站的搜索框不是网站内置的搜索,而是链接的谷歌搜索,于是墙内会打不开,可以手动用bing国际版搜索“site:imslp.org 曲名”,这样一般搜索出来的第一二个就是。

2.GarageBand里编辑音轨时对应的音高提示不是五线谱,而是标了调的乐器按键,在把IMSLP上找的五线谱编辑进去的时候,如果像我一样乐理水平有限,需要找表对照一下。

3.GarageBand导出的无损音乐文件比较大,一般放游戏里得用有损文件,但有损文件的格式是.m4a,unity里无法使用,需要先把.m4a丢进adobe audition里去转导出为.mp3或者.ogg格式,才能在unity里使用。

4.GarageBand的管类乐器比如长笛单簧管双簧管巴松法国号什么的,在键盘分类下面,别在大类里面去找,找不到的。

5.GarageBand的弦类乐器输入有两种方式,一种是直接在弦类大类里,好处除了对会演奏的人来说可以触控模拟演奏以外,还有就是可以直接选具体是哪种乐器小提琴中提琴大提琴还是低音贝司,但坏处是没法在音轨里直接整条音轨调整升降几个八度或半音,也没法选择演奏手法;另一种方式是在键盘大类下的其它分类里,好处是可以选三种演奏方式拨奏、断奏、延音,这样听起来演奏方式要丰富一些,也可以整条音轨调整升降几个八度或半音,但坏处是没法选择具体是哪种弦乐器。对于每支乐曲来说,选哪种方式最好的办法还是试吧,用不同效果做4-8个小节试听一下决定用哪种。

6.个人体感音色上来说,GarageBand的钢琴高音比低音好听,弦乐低音比高音更友好,在谱子可选的情况下,尽量选钢琴是高声部,弦乐是低声部的大提琴协奏曲一类的效果比较好,弦乐高音钢琴低音的小提琴协奏曲一类的有时会比较辣耳朵。

在Unity的所有免费资源里,如果只能推荐一个,那么我一定是毫不犹豫地选Fungus,这是一个超级无敌棒的插件,而且居然是免费开源的。
Fungus的主要功能是做剧情对话,如果是做传统的2D AVG游戏,这个插件基本上能够完成所有你需要的功能,比某些流氓软件功能多几倍还不会觊觎你作品的版权,当然,2D AVG的开源引擎其实比较多,除了Fungus以外,比较火的还有Ren’py、Twine等等,而后两者在写自定义插件时分别用的python和前端三件套语言比起Fungus需要的c#或者Lua还用得更广泛一点,但我更推荐Fungus的原因,是因为它在3D游戏中也有非常不错的应用空间,尤其如果你需要做一个重剧情轻任务的3D游戏时。

哪些情况适合用Fungus

1.2D的AVG游戏,这是Fungus最初也最本质的定位,自身功能非常强大,基本我能想到的传统2D AVG游戏里可能有的功能它都有直接提供,不需要自己额外写插件,非常适合擅长美术和编剧但编程苦手的人群,只要没有特别独特的需求,甚至可以零编程实现。而如果有特殊需求,也可以用Fungus来作为最基本的框架,然后对特殊需求部分自己写插件作为补充。

2.3D游戏中的剧情对话系统。Fungus支持Unity的3D碰撞检测,所以可以利用这个来做剧情触发,而Fungus的分支选项菜单、变量设置和条件触发、以及多样的文字呈现方式,基本能满足剧情对话的需要,而这样的功能如果完全自己来做,会多出几百行代码以及大量debug的工作量,而用Fungus的话,就只需要把自带的丑出天际且不适合3D的UI改一下就好。而且最棒的是,结合Unity的EventSystem和自定义c#脚本插件,你能用它做更多的事情,这个后面细讲。

3.Fungus不适用于做任务系统,因为它没有物品清单系统,如果只涉及到很少的物品,可以用里面的变量功能来实现,当然如果涉及物品多且复杂,也可以自己写插件添加进去,但这样就没必要用Fungus了,选一个任务类插件然后自己再在它的基础上修改更省力。

Fungus使用Tips

1.有必要一看的资源:

1.1.Fungus的包安装好后会发现它自带有一套example scene,可以挨个运行一下方便看都有哪些基本功能。
1.2.Fungus的官方指导视频,B站有较完整的英字搬运和不太完整的中字搬运
1.3.Fungus的官方文档
1.4.Fungus的非官方教程不多,质量高的更少,至少在没科学上网的情况下是这样,对我有帮助的主要就这一个。吐槽一下有些做教程的up主一定自己压根就不大用Fungus,按他的代码在他视频的场景里没问题,但只要他在场景里放第二个物体设第二个触发对话的trigger马上就会发现出bug,如果是刚接触Fungus和Unity的新人能给带沟里去。
1.5.Fungus的交流论坛入口,第一个进不去了,第二三个可以。

其中,
1.1和1.2建议在使用前看,可以二选一看就行了。
1.3和1.4建议在看了1.1或者1.2或者使用中遇到问题时再看,因为在对基本功能没有概念的时候,看它们会有点太抽象不知道在说什么,但如果对基本功能有概念后,尤其在带着使用中的问题时,看起来的收获就会比较大。
强烈建议在用了一段时间后拉通看一遍1.3,会发现好些用了很久但一直没发现但非常实用的功能,哪怕1.1和1.2都可以不看直接摸索着用,但1.3真的值得花一个下午通拉过去。要说它有什么不足之处,主要是Fungus一直在更新,但文档并非所有地方都同步更新,但可以通过对照其它章节来补足。比如在Document-Home-Blocks-Setting an Event Handler中,列举的触发对话的方式是非常古早的,后面更新的而且我们经常常用的触发对话方式都没有写进去,但在Document-EventHandlers页面中就分类列举了所有触发方式。
1.5适合在使用一段时间后遇到无法解决的问题时使用,我目前为止还没用过,但看到上面Fungus制作团队和一些热心使用者会回答问题,其中制作团队直到本月依然有活跃答疑。

2.Fungus在3D游戏中使用的注意事项:

想主要说一说3D,一是因为官方资源里基本是2D相关的,而3D的比较少;二是因为我自己主要是做3D的,在3D上踩过的坑和想到的点比较多。
1里列举的资料里有提到的就不赘述了,这里主要列一些实际使用中容易踩坑的地方和一些个人使用经验。

2.1.碰撞检测与触发对话的相关:

2.1.1.需要把flowchart作为组件挂在主控角色这个物体上,才能触发各种碰撞检测。千万不要直接tools-fungus-creat-flowchart,然后你会发现怎么都触发不了对话呢。
2.1.2.尽可能用trigger而不是collider来触发对话,这个主要是unity的锅,无论是fungus还是自制ui或者别的什么,collider平均3次里能成功触发1次就不错了,而trigger则很少bug。
2.1.3.一定一定要在trigger上设置tag,需要格外注意的是,不同的挂了trigger的物体,无论名字再八竿子打不着,距离多十万八千里,只要tag一样,那么触发一个就会导致所有的全被触发,所以,除非是打算几个物体触发任何一个都触发相同剧情,否则tag一定要分开,具体来说,不同叙事方法对tag的用法不同,这个在2.2里详细讲。

2.2.不同叙事逻辑的实现技巧:

2.2.1.线性叙事:一个tag即可,用好set active是关键。
在scene的hierarchy中,对所有的剧情触发物体,只有第一个设置为active,其它全都不勾选。然后在flowchart中,对于第一段剧情的block触发方式设定为trigger enter,触发后先把当前这个触发物体的set active给变成否,然后剧情走完后把第二个剧情触发点的物体给set active,接下来会按顺序进行到的每一个剧情触发点都以此类推,触发后把当前物品取消激活,同时给下一个触发点激活,直到最后一个剧情触发点。

2.2.2.主线-支线叙事:一条线一个tag,结合set active和variable来实现。
主线所有涉及到的触发点都共用一个tag就可以了,结合set active,按前面2.2.1的方法来实现。同时,对每一条支线需要设置一个tag和一个variable。
对所有variables的默认值都设为0,在主线进行到某个阶段可以触发某条支线剧情时,在主线的block里set variable设置支线甲int=1,然后在触发支线剧情的触发物体那里,除了用这条支线的特定tag去触发以外,还需满足if 支线甲int==1,这样就可以避免在主线没发展到可以接支线任务的时候就被提前触发了。支线任务如果有多段触发点,且多段出发点也是线性的,那么也可以结合set active来挨个激活每一个触发点,以保证每次是在正确的地方只触发下面一步的剧情。然后用同样的方法处理支线乙支线丙支线丁等等。

2.2.3.开放世界叙事:归类tag池,综合应用set active、variable、text variation。
因为不知道玩家会先去触发哪个,所以原则上来说,每一个线头都需要一个独立的tag,线头可能是一段持续好几个触发点的剧情,这个用前面2.2.1的方法结合set active来做就可以了,涉及到必须先触发这个线头并且走到哪一步,才有可能触发到那个线头的,用前面2.2.2的方法综合set active和variables来做,第三种线头是那种同类事物,接触任何一个都可能开展类似的对话,并且也许接触第一次第二次第N次触发的对话不一样的,这种共用一个tag,并且全部set active,用text variation来实现。对那种遇到第几次对话不一样而且有特定顺序的,用[1|2|3|...|n],对那种遇到任何一个都随机从一个对话池里选其中一句出来的,用[~1|2|3|...|n]

2.3.结合Unity引擎的自身组件实现更多功能

2.3.1.前面提到过Fungus里有set active这个命令,也就是激活某个在hierarchy里处于未激活状态的物体,那么靠这个我们可以让Fungus里的剧情发展到某个地方时,激活某个特定的物体,这样直接实现某些功能,前面已经举出过例子了,不赘诉。
2.3.2.类似的功能还有spawn object以及destroy,前者可以利用它来生成一些hierarchy里没有但有预制在prefab里的物体,比如刷出小怪或者刷出资源等等;后者则是相反,销毁在hierarchy里现存的物品。
2.3.3.除此之外的大头是Invoke命令,可以直接对接调用Unity的Event System,实现里面所自带的或者自己写了挂上去的c#脚本所附加给它的特殊功能,这样让Fungus可以实现的功能边界一下扩展开了。
2.3.4.另外一个大头是UI命令,可以直接对接调用Unity的原生UI系统,这样一方面可以解决一些显示问题,比如根据剧情分支不同,某个游戏物体上的字显示不同,就可以通过这个来实现;另一方面也可以结合前面的Invoke命令结合Event System来实现菜单问题等等。

折腾了小半年,总算在化妆上折腾出一点心得,虽然画了并不比不画好看,但也总算不再是画了比不画还难看了,于是阶段性总结一下目前为止摸索出来的东西。

1.整体思路

1.1.色调

1.色调统一,尽量不要冷色与暖色混用,否则会非常容易显脏。

在不露肤的季节,理想的色调是用底妆把肤色修正到中性色调,然后彩妆可以选择冷色调或暖色调,并需与服装的冷暖色调配合。
在会露出大片皮肤的夏季,较为省力的方式是根据身体皮肤的色调决定全身从服装到底妆到彩妆的色调。

2.实际中即使是中性色也存在冷暖之分。

比如白色的服饰其实往往有偏暖调的乳白和偏冷调的雪白,黑色也有偏冷调藏青的黑和偏暖调深棕的黑,大部分灰色因染料偏蓝其实应归入冷色调,也有部分灰色面料是与浅原木色混纺的因此提供了少量的暖调。在使用的时候不能一股脑把它们看作中性色。

3.彩妆的冷暖调,是相对于肤色而言的,而非相对于白色而言的。

比如用于打阴影的浅灰棕色,如果与白色对比,那么无论何种色号的浅灰棕色都是暖调。但当与肤色对比时,灰调更重的浅灰棕色则更适合冷皮,棕调更重的浅灰棕色则更适合暖皮,如果用了与肤色不同色调的阴影色,会显得脸脏脏的,而用对了色调则会感觉像是凹陷的阴影。
肤色是一个因人而异的相对概念。比如对非常偏暖的肤色而言,中性略偏暖的色调用在这个皮肤上也会显得偏冷调。

4.并非完全不可使用与肤色冷暖调相悖的色调。

覆盖力低的彩妆品在上妆轻薄的情况下,其自身的暖冷调特性会降得极低,呈现出的是叠加肤色后的色调。可以选择覆盖力低着色力不强质感轻透的产品,用薄涂或晕染或按压的手法把妆上得极薄。

5.如确需冷暖色同时出现,可以采取以下几种策略:

以其中一种为主色调,然后少量使用另一种色调来撞色,并且其中至少有一种色调是低饱和色。
让冷色调单品和暖色调单品物理距离较远,且它们之间有中性色过渡。
让冷暖色调的彩妆分别呼应冷调和暖调的发肤,如冷调皮肤泛出粉色腮红和暖调头发投射的暖调腮红按照下冷上暖晕染叠加,参照视频

1.2.光影

1.所有的线本质不是线,是密度大的影子轮廓。

彩妆涉及的线主要包含三种:眼线、眉毛、唇线。

眼线是本质是睫毛的阴影。内眼线应该完全藏在睫毛根部的范围内,使得视觉效果是浓密的睫毛根部形成的阴影,而不是一道线条。挑出眼角的外眼线实际上是睫毛的阴影,弧度需与眼尾睫毛的弧度一致,且不宜过粗,除非佩戴了非常浓密的假睫毛使得过粗的阴影线条是合理的。眼线不应用于调整眼型,至少不应单独用于调整眼型,因为修改的线条会与没有修改的眼球体积冲突,使得妆效极不自然,应该通过眼影来调整眼球的体积感从而起到调整眼型的效果。

眉毛的线条不应是整条眉毛的边缘,而是一根一根的眉毛。或者更准确的说,眉毛是线条分明的一根一根的眉毛和它们所构成的阴影,不同于脸颊鼻梁,眉毛阴影的深浅受到眉骨高低和毛发疏密双重影响。综合来说,阴影最重的位置在眉毛的中段,这里眉骨的位置是除眉弓外的最高,而眉毛浓密程度最高,综合来说颜色是最重的,并且由于阴影非常重,几乎看不到一根一根的眉毛,用眉粉加深就可以了。眉弓至眉尾的部分是眉骨最高的位置,眉毛的浓密度从眉弓往眉尾下降,使得这里的颜色浓度会比眉毛中段稍轻,但由于眉骨最高处往往由于光线而使本身眉色降低,因此也需用眉粉略做加深,如果这里本身没有什么眉毛,则最好用眉笔画出少量几根很短的眉毛,不用画得特别明显,与阴影浑然一体略深一点即可,如本身毛量适中则无需画一根一根的眉毛。眉头部分的眉骨略低,且这里的毛量是最少的,用眉粉打的阴影应最淡,且最好与鼻影晕接自然,同时,竖起眉笔,顺着毛发生长的方向画出数根眉毛,由于这里的阴影较淡,单根眉毛的轮廓会较为明显。

唇线尤其下唇线,实际是凸出的唇瓣投下的阴影,因此画唇线通常会在视觉上让嘴唇的丰盈程度提高,而上唇线则是人中在唇上投下的阴影,结合人中高光,会使人中的视觉效果更加凸出。和眼线一样,唇线的作用不是调整唇形,因为这与唇部的体积是相悖的,除非是拍平面照可以事后把体积所致的光影做相应修改,生活中用唇线修改唇形会视效上非常生硬,除非调整的范围是在唇部体积轮廓内做微调。

2.把面部和五官还原成球体和锥体,想像它们在斜上方打下来的光线下的光影是什么样的,由此决定彩妆的使用范围和晕染深浅。

彩妆进行的光影调整主要包含几种:脸颊、眼窝、鼻梁、眉骨及周边、人中、下巴。

脸颊的光影结构最简单,是一个球面在斜上方光线打下来情况下的光影,最高的承光面是高光,球面最高点以下的球形区域会受到高点投下的阴影影响形成腮红,不是阴影是因为它也是凸起,而球面以下的腮帮位置则会因腮帮的凹陷和整个球面投下的影子影响成为阴影。

眼窝的光影结构相对复杂,它受到三个体积的光影影响,一是比眼窝更高的眉骨投下的阴影,需注意的是眉骨在眉头部分是眉毛位置就是最高处,眉下就是阴影,但眉中至眉尾部分则眉下是凸起的眉弓,眉弓与眼窝交接处才是阴影;二是凸起的眼球形成的球体高光和阴影,三是睫毛和双眼皮褶子投下的阴影。
可以看到,整个眼窝阴影最深的地方应该是上眼皮的眼尾处,因为这里既是眉弓下的阴影,又是眼球的阴影,还是睫毛和双眼皮褶子的阴影,受到三个阴影影响。其次是下眼尾处和眼窝轮廓的位置,眼窝轮廓受到眼球阴影和眉骨投影两个阴影影响,下眼尾处受到眼球的阴影和下睫毛的影子两个阴影影响,对双眼皮而言两个阴影影响的范围还包括双眼皮褶子到上睫毛的部位,受睫毛和褶子影响,对单眼皮而言这里则只有睫毛投影单个阴影。而高光最高的位置在眉骨,这里是整个眼窝最高的位置,且不受任何阴影影响,这里的高光是最亮的;其次是眼球中部凸起处和眼头,眼球因凸出而呈现高光,但又受到一定的眉骨投影,眼头略微凸出,比之下眼睑中后段不被眼球阴影遮挡,因此呈现高光。

鼻梁的光影比之眼窝相对简单,可以把整个鼻子看作一个大的三角锥体,在鼻梁山根处嵌叠了一个椭圆球体,在鼻尖处嵌叠了一个小的三角锥体。于是高光最亮处是椭圆球体凸起的位置和鼻尖,浅阴影处是椭圆球体和小三角锥体投射在大三角锥体上的阴影,深阴影处是大三角锥体两侧向下投射的阴影。和脸颊一样,用阴影粉打在深阴影处,腮红打在浅阴影处,高光处提亮即可。

眉骨的光影在眼窝已经讲过了,眉骨周边主要是指眉心和太阳穴,这两个位置比起眉弓略低,但和眉头高度类似,如果眉头上方有提亮,那么这些位置也要跟着提亮,如果眉头上方没有打高光,那么这些地方也可以不打。例外的情况是,由于随着年龄增长,眉心和太阳穴会逐渐变得凹陷,因此对熟龄肌而言无论对眉骨是如何处理的,都需在这两个位置使用高光来让视觉上不觉凹陷。

人中可以看作一个坡度较缓且中间有一个凹陷的三角锥体,上面被鼻梁所遮挡并投下阴影,最亮部分是锥体高处不凹陷的边缘的下端,这里一方面最高另一方面鼻梁的阴影投不到这里,需用高光提亮。鼻底的位置最深,但已经够深了除非是人中太长需要在视觉上缩短,否则无需打阴影。

下巴可以看作在下巴尖嵌套了一个球体,而上端受到嘴唇投下的阴影。高光在下巴尖球体承光处,阴影在唇下。因为体积上并没有太大的高度差异,一般两者只选其一打即可,如希望显瘦或拉长下巴在下巴尖处打高光,如希望缩短脸长或丰盈唇部在下唇下方打阴影。

3.整个面部是一体的,选用局部晕染产品的颜色深浅,不仅会影响局部的体积感,也会影响全脸的体积感。

如选用颜色较深的眼部彩妆,在使得眼窝在视觉上显得更深邃的同时,也会令眼窝以外的部位,不仅是眼窝边的鼻梁,也包括同在头这个球体上距离眼窝相当遥远的下巴视觉上显得更凸出。
而相应的,如果在眉骨颧骨和笑肌顶部打更强的高光,在使得与其邻近的眼窝更深邃的同时,也会使得面部整个大球体中的额头和下巴因颜色相对较浅而显得相对更短且不凸起。
但这种对整体的影响可以通过对受影响的局部做光影调整来改善。如选择深邃眼窝,可在下巴的下唇下方打上深下浅的阴影,来让下唇显得更丰盈的同时,均衡加深眼窝带来的对下巴视觉效果的影响,并适当加深发际线来均衡对额头的影响。

2.操作技巧

2.1.修正肤色

底妆修正肤色主要是选对色号,这个在makeup foundation那篇里已经写过了,不赘述。额外需要注意的是,对于泛红皮肤的修正,最好是从抗过敏和抗出油这两个源头来解决,而不是靠遮瑕产品来掩盖。在洁面后护肤前使用抗过敏喷雾,在护肤后底妆前在出油区域使用抗出油妆前乳是最好的修正皮肤泛红的方法。

另一个修正肤色的方法是用适当颜色的彩妆品,来改变肤色给人的视觉效果。最简单的方法是选择比肤色乃至瑕疵更深的产品,这样通过一个更深的颜色来对比显得其它颜色更浅而且它们之间的色差在这个深色的对比下显得不明显,这是为什么很多人都钟爱色彩浓郁的唇部产品。但深色的产品也有它的问题,一是妆感会较浓,二是给局部一个深色那么会使得其它没有深色产品的面部区域视觉上显得更凸,需要去相应地调整其它区域的光影来均衡这个深色产品所致的附带问题。另一种更细微用彩妆品调整肤色的方法是在需要调整肤色的局部区域上叠加一个深浅与自身肤色差不多但略偏冷或略偏暖的产品,并通过上得特别薄来与原本的肤色叠加进行修正。比如薄涂一个暖调的覆盖力极低的裸色唇膏,往往可以很有效地修正唇色发紫。

2.2.精准线条

眉毛和唇线都是顺着原本的线条方向去描画就可以了,难度不大,画线条难度比较大且对精准度要求比较高的主要是眼线。画眼线一般有两种产品,一种是膏体,一种是液体,它们使用时的要点是不一样的。
液体的产品在画线条时需要竖起笔尖匀速画过,斜着笔尖或是在一些地方停留时间过长另一些地方过短都可能使得线条粗细不均。因此要画出流畅精准的线条,需要足够的练习,通过练习来对该画哪儿心里有数于是匀速画过不中途停顿,以及通过练习来让手不抖且位置准。眼线液的色彩比较浓郁,一般除非是画大浓妆否则需要把眼线完全画在睫毛根部的范围内,如果一笔画下去超出了一点,可以马上用一根尖头棉签把超出部分擦除,一定要马上擦,因为眼线液为了防水防晕总是干得很快而且干了就很难擦掉了。
膏体的产品在使用时则可以慢慢描画,同时对于画错的线可以随时用尖头棉签调整,因此对于画出自然的线条相对简单。膏体的难点在于很容易画粗,以及无论选择多么防晕的产品一出油或者一哭都很容易晕妆。对于画粗这一点,眼线膏笔每次使用前一定要把笔尖磨尖,否则完全没法画内眼线,因为膏笔质地比较软,如果用削笔器一类的产品会非常容易弄断笔芯,因此最好是斜着笔在手上磨几圈就好了。而对于抗晕染,最好的办法是在画之前先用准备画眼窝的粉按一下,画好眼线后再在上面继续画眼影,这样只要不大哭一般不容易晕。膏体眼线笔还有一个问题是由于质地较为厚重,对于部分比较敏感的人,用它画内眼线会导致眼睛有异物感狂眨狂掉泪花,如果是这种体质,只能尽量选择敏感肌适用产品,如果怎么选都不行就还是老老实实苦练眼线液技术吧。

2.3.晕染手法

晕染基本上有三种思路,
一种是用比较上色的密毛刷子上色,然后用一把松散的刷子把边缘通过物理上的刷刷刷晕开。这种方法的好处是上色的区域会比较精准,色块中央色彩浓郁,缺点是对技巧和彩妆产品及工具的质量要求都比较高,并且晕染自然需要比较长的时间。
第二种方法和第一种类似,也是先用比较上色的密毛刷子上色,然后用一把松散刷子蘸点浅色去晕染边缘。这种方法能获得第一种的好处,同时更省时间,对质量和技巧的要求降低了,缺点是需要对色彩理解准确,才能选择好合适的晕染浅色,否则很可能会越晕越脏。比较省力不出错的选择是用肤色粉饼晕或者白色哑光眼影晕,缺点是前者可能会影响彩妆品本身的色泽,后者可能产生不必要的高光效果。
第三种方法是直接用松散但有一定支撑力的晕染刷子上色晕染一起做。这种方法的好处是晕染会非常自然,晕得再差也不会有色块,缺点是如果产品的显色度不够会上不了色,且对一些精细的位置可能会画不精准。对于前者,需在选择彩妆产品时即选择适合使用这种手法的显色度较好的产品;对于后者,可以通过尖头的小刷子大刷子混用,以及刷子先在色彩最深的地方略按一下再晕染上色的方式。

3.Debug

3.1.妆面脏

一般来说妆面脏的原因要么是色调乱了,要么是光影错了。如果彩妆色调统一、位置符合光影、晕染自然,那么无论什么颜色都不会显脏。因此最根本的办法是加强对色彩冷暖和光影明暗的理解。而如果短期内的理解有限,也可以通过一些方法来让它相对看起来比较不那么脏一点。

如果无法掌握光影的准确位置,那么尽可能选择颜色较浅的产品,少量多次地用前面说到的晕染手法的第三种来晕染上色,如果感觉不该上色的位置上了色,就用一点粉晕上去盖掉。这个试错的过程也能帮助加深对自己脸上的光影范围到底在哪里的理解和掌握。缺点是会非常费时。
另一种不那么费时的方法是局部小范围使用一些深色的彩妆单品,比如眼尾处或者咬唇中部,通过深色的对比来使得那些浅色显得不那么脏。注意边缘要晕染自然,且其它地方的高光阴影要配合加重。这种方法并非解决妆面脏的根本之计,但对于如果也想掌握画浓重妆面的技巧时在如何维持整个妆面的平衡上也是一个不错的练习。

3.2.妆感重

分两种,一种是产品质地造成的,一种是上妆手法的问题。
上妆手法的问题,一般是没有晕染好,或者线条没有修好,使得它们看起来不像光影而像线条和色块。解决方法参见前面操作技巧的精准线条和晕染手法。

产品质地问题又分两种,产品本身不够自然,或者脸上产品质地不统一。
产品质地不统一是水润程度不统一,一般来说,所有的底妆和彩妆产品无论是粉质还是膏体,妆效都可以按照从水到干分为水光、奶油、哑光三大类,这些妆效其实是模拟皮肤的干油性,也与皮肤的熟龄度有关,如果不统一就不自然了。比如哑光底妆产品配上玻璃唇的唇妆就会容易有突兀感,水光肌配上哑光唇也会感觉哪里怪怪的。
另一种是产品本身不自然,而导致不自然的原因有可能是产品不适合自己,也可能是选择了不适合该产品的上妆方式导致的。一般来说先考虑后者,排除了后者的可能再考虑前者。比如经常看到有观点说上眼影最好的方式是用手,但不难想到眼窝那么复杂的光影结构,对不够经验丰富的人来说,是很难用手指晕出自然的效果的。再比如判断眼影腮红高光等粉质需晕染产品是本身质地不好晕染还是自己没晕对,最好是在手上试试,如果在手上无论用什么刷子怎么晕也晕不出效果,那就是产品的问题,如果手上能晕出来,那么理论上脸上也能晕出来,没晕出来很可能是对光影的理解有误或者刷子太大了。

游戏设计导论

推荐度:★★★☆
授课方:加州艺术学院
平台:Coursera
费用:听课免费,证书收费但可申请全额助学金
语言:英语
字幕:中字

Repo:最零基础上手的游戏设计课程。
不同于许多别的在讲游戏设计之前得先讲好几个小时的如何使用某个游戏引擎来呈现你的设计的课程,这个课不需要任何意义上的前置技能,会用纸笔就行了。
特点是别说那么多就是干。课程的构架基本上是你先随便设计一个游戏,然后我们一起看看它是不是有点不那么耐玩,来加点什么东西进去,看看迭代以后的是不是好玩一点了,但还不够,我们一起看看最好再加点什么东西进去,现在是不是更好玩一点了,重复以上过程。
于是这门课基本上没有什么授课内容,更像我们小时候的兴趣课,每周讲十分钟,然后用十小时来做自己的游戏、改自己的游戏、看别人的游戏。btw,虽然课程只要求看三个别人的游戏就可以了,但多看没限制,墙裂推荐多看看,我上的时候深觉这门课讲课是赠品做东西是预备看别人的东西才是本体2333
这门课的不足之处也很明显,一是课程上让做的项目是桌游,而且是能简化到一页纸上的桌游,于是如果不是本身想做大富翁之类的游戏话可能直接的收获不大,更多的是收获管它做成啥样总之先行动起来的心态,以及迭代式开发的习惯;二是虽然整门课都在讲怎么提高游戏的游戏性,但讲授的方式更接近于直接丢出一堆公式去让人去套,对于为什么公式是这么写的如果我的情况不适合套公式有什么办法自己改公式或者造公式吗则没有涉及。

游戏化

推荐度:★★★★☆
授课方:宾夕法尼亚大学
平台:Coursera
费用:听课免费,证书收费但可申请全额助学金
语言:英语
字幕:中字

Repo:对游戏为什么好玩怎么设计才能让游戏好玩让人想玩讲得最深入的课程。
虽然这其实并不是一门讲游戏设计的课程,但确是我上过的所有课程中,对于如何让游戏好玩分析得最深入的。一般课程对这个问题的回答都是要么集中在游戏叙事和游戏机制的技术细节和经验技巧上,要么提一嘴根源是不断的落在玩家心流区域的正反馈,但为什么是正反馈,是什么样的正反馈,则少有课程去触及。而这门课从心理学角度去继续往下挖并提出这根源于人的motivation,处于刚刚超过人当前能力上方一点点的任务被完成的正反馈,会让人的competence(能力感,觉得自己有能力克服障碍解决问题)得到满足,这是人的三大intrinsic motivation(内生驱动力,不依赖于外物刺激仅仅源于内心意愿驱动)之一,而除此之外,人的另两个主要的内生驱动力autonomy(自主感,觉得自己是完全出于自我意志作出有意义的选择)和relatedness(归属感,觉得自身的行为让自己与某些外在的具体事物或超越的抽象概念产生了连结)也与游戏好玩与否密切相关,是游戏设计需要核心注意的内容。而在设计中,对于extrinsic motivation(外生驱动力,外在奖励刺激)这把双刃剑则应谨慎使用,用得好的情况下,外生驱动力能够在内生驱动力不足的情况下提供有效的补充让游戏变得更好玩,但如果用得不好,则会掉入替代效应的陷阱——原本玩家是出于内生动力热爱一件事物,但由于提供了外生奖励,于是人们反而变得依赖于外生奖励才能激发动力,内生的热爱被挤占消失了。原则上来说,外生驱动力的四种形式external regulation(外在调节,内心厌恶完全因为外在的强迫而不得不做)、introjection(摄入调节,尽管自己不喜欢也不认同但考虑到他人会因自己做这件事而认同自己因此选择做)、identifucation(认同调节,尽管不喜欢但认同这件事的一些部分是有意义的因此认为自己应该做)、integration(整合调节,完全认可这整件事的意义和价值觉得自己必须做只是不能从做这件事中获得乐趣于是感到很难坚持),越往后的形式越接近于内生动力,越往前越接近于无动力(amotivation),在设计的时候如果需要外生动力作为补充,最好选择尽可能靠后的形式。这个理论是在课程的第三周讲的,目前为止我没有看到比它更好用的理论,墙裂安利即使没有时间上完整门课,第三周这俩小时的课程视频也绝对值得一看。
这门课的不足之处几乎恰好是前面加州艺术学院那门课的相反面,这是一门讲如何运用游戏机制设计产品或者项目管理的商科课,也因此有着绝大部分商科课最典型的特点——分析了又分析挖掘了又挖掘但绝不撸袖子去做东西。这门课有三个作业,一个比一个要求的字数多,但始终不见让学生自己做方案,最后的两千词大作业也只让写出你认为在设计给定要求的方案时需要注意什么,而不是把方案本身写出来……所以如果不是想练英文写作,而是想学游戏设计,这门课本身的作业并没有太大帮助,不如给自己布置个运用所学分析自己玩过的游戏或者设计的游戏的作业更实用。

游戏产业概论

推荐度:★
授课方:上海戏剧学院
平台:Coursera
费用:听课免费,证书收费但可申请全额助学金
语言:中文
字幕:中字

Repo:我上过的游戏相关课程中唯一没有任何收获的,不推荐。
其实课程框架还可以,把游戏本身、游戏行业、资本环境都囊括到了,虽然产学结合算是高等教育的一个基本要求,但能做到的国内高校课程确实不多,理论上应该会是个好课程苗子。但很遗憾的是,即使相关知识极为有限的我也能明显感觉到,主讲老师对这三个领域都不太了解,于是理想很美好但执行不下去,于是只好给框架半颗星。有一点值得肯定的是,这门课也是我上过的唯一一门主讲老师会在课程论坛里跟学生交流的一门网课,这样的精神值得半颗星,这也给了这门课进化的可能,不知道几年过去这门课有没有迭代出撑得起框架的内容来。

以上三门课上于2016年春夏,不排除三四年过去课程内容有修改目前内容已与repo不符的可能。

以下课程为最近上的,repo内容即为当前内容

游戏开发导论

推荐度:★★★★☆
授课方:密歇根州立大学
平台:Coursera
费用:听课免费,证书收费但可申请全额助学金
语言:英语
字幕:部分中字

Repo:我上过的最系统的unity入门教程,如果时间有限只能选一个教程来学unity的话那就它吧。
课程设置的时长是四周,具体可以按自己进度调整,体测总共上下来需要大约25小时。第一周是装软件熟悉基本界面,第二周是用一个都不是游戏的例子来讲软件的基本功能和从新建一个空项目到做完打包输出适配指定平台的过程。第三周是从零做一个第三人称视角的3D小游戏的例子,所有功能的实现都是用unity自带组件。第四周是从零做一个第一人称视角的3D小游戏的例子,部分功能的实现需要写代码(但完全自己写代码的时候比较少大部分工作是当调包侠调用unity自己内置的一些组件和一些三方开源组件)。其中后两周的两个项目开着unity自己跟着做下来,虽然比较花时间,每个要花接近10小时,但超级值,上完之后会有一种自己会用这个软件了的错觉,当然很快真去自己做东西的时候会马上被打脸,但至少虽然做不出来但心里大概有点思路有几个方向,不至于像上课前那样完全两眼一抹黑。
虽然只扣了它半颗星,但这门课也有很多需要提高的地方,首先我一定要吐槽它用的素材实在太太太太太丑了,基本上都是开局unity里新建一个球就是主控角色,新建一个方块儿就是小怪,然后分别蒙上大红大绿的辣眼皮就开始讲课……尤其第二周讲的栗子甚至都还不是游戏,导致我差一点点就半途弃了,还好没有。虽然理论上我知道有时候随手用个方块圆球来演示是个省时省力的替代方式,在设计原型的时候也经常用到,但,如果……授课老师能在他第一周提供的那么多免费素材网站里去随便拖点不那么辣眼睛的素材来用就更好了。
另一个我觉得这门课或有不足的地方,是乐趣性不够高。部分原因可能是因为课程想要把软件的方方面面都讲到,于是在选例子的时候就拿这个为标准来选,于是除了第四周的栗子以外,另两个例子都并不是我们通常会玩到的游戏类型,于是乐趣性有不足。与它相反的是unity learn上的几个新手教程,基本上都是大家平时会玩到的rpg啊fps啊解密啊潜行啊roguelike啊,素材大部分也都美美哒,学的过程就愉快得多,当然,确实我也很明显的感觉到了unity learn的那几门课上下来都只学到一些很碎片的东西,脑子里缺少对unity能做什么不能做什么从头做一个游戏都需要做些什么的整体概念,而且很多东西知其然不知其所以然。最理想的是结合起来上就好了,但似乎有时候乐趣和全面不可得兼。我的感觉是,如果心中有明确的想要做的游戏的概念了,需要学unity来实现它,或者至少实现个demo或者原型,那就只上这门课就可以了。而如果还没有明确的概念,那就这个教程加unity learn上找点自己感兴趣的游戏类型的教程结合起来看,比较能兼顾学的效果和学的乐趣。

游戏设计原理

推荐度:★★★☆
授课方:密歇根州立大学
平台:Coursera
费用:听课免费,证书收费但可申请全额助学金
语言:英语
字幕:部分中字

Repo:感觉这门课的目标受众大概是有志从事商业游戏设计的海外党,但对非目标受众来说感觉水分比干货多。
这门课是前面那门课所属系列的第二门课程,因为有上门课的好印象加成,我对它期待值很高,但上下来感觉比上门课水得多,或者说我不是它的目标受众,于是接近半数的课程内容对我来说不太有价值。比如第一周整周都可以跳过,第二周只需要听游戏文档那小节就可以了,第三周虽然水分不少但干货也不少可以整个听听,第四周除了原型和测试外的俩小节都挺水的可以跳过。
但这门课尽管干货部分少,但干货部分确实对我来说有帮助和启发。一方面整体思路变清晰了,另一方面他偶尔的随口一句经常会让我发现自己之前可能想的有问题或者没有考虑到的地方。
不足之处首先是前面提到的需要精简一点去去水分,然后对里面的干货部分可以扩展开来多讲一讲,很多一句话带过的其实倒是对我比较有启发,如果能多深入讲一讲会挺好的。另外这门课有个与内容无关但对我来说体验很糟的地方,是它的音频。主讲人说话拖音比较重,而我听拖音一向跟听刮黑板一样浑身难受,一般遇到这种情况我的解决方法是开1.5倍速这样就听不到拖音了,但这个视频这么做会一卡一卡的更难受了,加上他发摩擦音的时候音频特别高,而他一句话里就要带一两个的口癖right更是一个拖音加一个摩擦音简直能把人逼疯,上完以后大松一口气,希望以后的课程不是他主讲了。

游戏分析与评测

推荐度:★★★★ (目前上完章5,总14章,不排除之后会更新评价)
授课方:腾讯
平台:学堂在线
费用:听课免费,证书收费
语言:中文
字幕:中字

Repo:我所有上过的国内课程中最好的,推荐。
目前上到第五章,除了第一章略水可以跳过以外,其它四章都很棒。这门课的结构是第二章讲对每一款游戏具体可以从哪些方面去分析它,然后第三章开始到第十四章每章分析一个游戏类型,按照这个类型的发展历史从早到晚,选出有代表性的作品去逐一分析,然后归纳出整个类型的核心特点和变化趋势。这种自下而上从微观到中观的分析思路对我来说比较亲切,虽然我个人更习惯自上而下从宏观到中观到微观的思路,但自上而下和自下而上可以结合验证。然后我要说这门课真的超有趣,除了能听到不少有趣的古早八卦,每章的主讲人们都是卖安利一把好手,才四个类别上下来我就吃了好多好多游戏的安利,to-play-list简直能一路排到明年。
不足之处的话就是太多地方浅尝辄止了,我刚觉得这个话题有意思结果就换话题了,虽然受限于课程时长大部分课程都这样,但一般会给出扩展阅读的资料清单,而这门课没有这么做。虽然我上的别的很多课给出的扩展阅读清单里的大部分我也没有兴趣去读,有些有兴趣读的下下来目录扫过去发现和我想像的内容偏差太大也就弃了,但也有少部分打开我新世界大门的,这门课如果能加上这个就好了。

游戏心理学

推荐度:★★
授课方:腾讯
平台:腾讯游戏学院
费用:听课免费,不提供证书
语言:中文
字幕:中字

Repo:题目很大内容其实不多就简单谈了谈心流的一门课。
对于把正反馈循环描述为一种魔法式的神秘过程的做法我个人不是特别认同。但这门课对我而言提供了一个很有启发的地方,即在探究心流所需要的一定难度的挑战上,把游戏的难度分为了思考难度和操作难度,然后把主流游戏画在了这个坐标轴中。
思考难度和操作难度这个分法有点像一个古早概念文和武,但我觉得其实更准确用来描述它们的应该是《思考快与慢》提出的大脑的两个系统,潜意识层面的条件反射系统和意识层面的思考系统。在玩OW的时候我想过这个问题,但没有深挖下去,在上这门课后又重新想起了这个话题,感觉应该找个时间详细想一想写一写。

Creator Kit: RPG

推荐度:★★★★
授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:英文

Repo:适合无游戏制作基础无编程基础的2D RPG游戏制作的入门教程。
非常新手友好的一门unity上手课程,不需要编程,涉及到需要实现的功能都预先写好脚本嵌入到组件了。对完全没有基础的人来说,也能一步步跟着做下来一个关卡。而且最大的优势是花的时间特别短,一个下午就能搞定,从游戏的角度来说就是反馈特别及时。
不足之处是涉及到的内容略少,对于RPG来说就涉及到对话和任务俩功能,很多RPG的内容都没有涉及到,对于它的标题来说显得不太名副其实。另外一方面对软件涉及到的也比较有限,上下来没法建立起整体概念,在另两个unity learn上的creator kit系列教程里也多少都有点这个问题。

Creator Kit: FPS

推荐度:★★★★
授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:英文

Repo:适合无游戏制作基础无编程基础的3D FPS游戏制作的入门教程。
和前面的RPG Kit一样,是不需要编程的新手教程,也是可以很快上手用最多大半天就可以跟着做出一个关卡的那种快速反馈大份快落的教程。有和前面差不多的问题,对标题所说的游戏类型里的功能只简单涉及到很少一部分但并不全,比如作为FPS但没有任何涉及小怪的移动或者小怪的攻击等等小怪行为的功能。对于软件整体也只涉及到很少的部分,没法让人建立起对整体的概念。

Creator Kit: Beginner Code

推荐度:★★★★
授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:英文

Repo:适合有一定游戏制作概念但无编程基础的编程入门教程。
和前面两个Creator Kit系列的教程不同,这个教程的内容不是让人用给到的素材和预写好的功能组件去自己做一个关卡,而是用给到的预写好的功能组件的代码去改吧改吧成自己的代码。之前密歇根州立的那门unity课在第四周提到了一个观念,说有代码基础分几种,初极就大概知道哪些东西能写出来哪些东西不能写出来,中级就大概能蒙出来别人代码的意思然后改吧改吧成自己的代码,高级才需要自己从零写代码,做美术代码基础只需要初极,做设计只需要中级就够用了。这个观点挺震惊我的,一是它默认应该全民有代码基础,二是有代码基础的绝大部分其实是有用代码的能力而不是有造代码的能力,这和我之前上的好些国内代码入门教程都是让人从造简单代码开始慢慢升级造复杂代码的思路是完全不一样的,而且不得不说这个思路比较实用。但那门课虽提了这个思路,课程里讲代码的时候还是从头写的,只是调包的活儿做得比较多。而这个unity learn的教程体现了一样的思路,而且内容也真的是从一个别人写好的代码出发,教人怎么去猜那些看不懂的代码里的关键要素,然后把关键要素改一改,去游戏里看看是不是猜对了,如果猜错了怎么一键还原继续猜,如果猜对了继续看需要改的东西是不是忒多了复制粘贴手动改要素太麻烦,是吧那看看怎么自定义个函数或者函数类,去让抄代码改要素的过程更省事儿诸如此类的手把手花式抄代码教学。

2D Roguelike

推荐度: (目前上到视频5,总14视频,完成后再打推荐度)
授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:部分中译

Repo:深刻体会到为啥这是一个中级教程了……前面仨视频都觉得还挺新手友好的呀,然后就被第一个脚本卡住了……耗了3个小时在上面现在还是有几个地方没看明白。按说有地方没看明白也没事,用前面俩教程的办法,可以先照抄然后去游戏里改变量来蒙,但是……把脚本拖到gameobject上的时候报错了,提示在修好bug之前挂不上去,但vs里标出来的bug我都修了呀……不管了先睡觉,眼睛都快成二筒了……

以上是能给到相对完整Repo的教程,下面是半途弃了于是仅能提供不完整感想的教程,因没看完不打推荐度

The Explorer: 3D Game Kit

授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:英文

Repo:适合无游戏制作基础无编程基础的3D第三人称RPG游戏制作的入门教程,硬盘和硬件杀手预警。
理论上这应该是一个不错的教程,从给出的Demo来看,会涉及到剧情触发、武器获得、战斗系统、解密系统等等常见的3D游戏会用到的功能,而且全是预制好的组件不需要自己编程,在几个无编程Kit教程中,这应该是涉及功能最多的一个,而且都挺实用的。然而,我只开了个头连试玩都没玩通就弃了的原因是,太太太太太太太卡了。我玩OW也从来没卡过的游戏本,在试玩这个游戏教程的Sample Level的时候硬生生卡得一个动作要延迟好几秒跑位起来看到的角色位置和实际的角色位置十万八千里……或许以后如果有一天我入了个台式会重新过一遍它,但目前,我能想到的使用方式大概只有需要用到里面预置的某些功能时看看能不能抄到点代码。

附1 近期准备上的课程

游戏是个大坑,目测以后还会遇到很多教程,这篇Repo会持续更新,先列一些近期准备上的教程

Ruby’s Adventure: 2D Beginner

授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:英文

Repo:其实2D教程里我最早下的是这个,然后大致浏览了一下框架,感觉适合有点基础的而不是纯萌新,于是转投了前面那个真新手教程。

John Lemon’s Haunted Jaunt: 3D Beginner

授课方:Unity
平台:Unity Learn
费用:听课免费,不提供证书
语言:中译

Repo:这个是我最早下的3D教程,因为它的标题里有个Beginner,又是Unity Learn上唯一一篇有中字的,看框架也还挺系统。然后我在第二章卡住了,跳了二三章以后,在第五章又卡住了,于是醒悟这个Beginner应该是指有一定游戏制作基础的Unity新手,而不是游戏制作新手。

附2 各平台使用Tips

1.学堂在线的视屏播放页面,在IE上无法播放显示,在Chrome上可以播放显示但页面各控件的位置会出错并互相遮挡,在Edge上可正常显示和播放。

2.Coursera的视频在国内大部分地区无法正常播放,解决方法是修改hosts就好。打开C:\Windows\System32\drivers\etc\hosts,在末尾粘贴如下语句并保存。

1
2
3
4
5
6
7
8
9
52.84.246.90    d3c33hcgiwev3.cloudfront.net
52.84.246.252 d3c33hcgiwev3.cloudfront.net
52.84.246.144 d3c33hcgiwev3.cloudfront.net
52.84.246.72 d3c33hcgiwev3.cloudfront.net
52.84.246.106 d3c33hcgiwev3.cloudfront.net
52.84.246.135 d3c33hcgiwev3.cloudfront.net
52.84.246.114 d3c33hcgiwev3.cloudfront.net
52.84.246.90 d3c33hcgiwev3.cloudfront.net
52.84.246.227 d3c33hcgiwev3.cloudfront.net

随后运行cmd,输入以下命令:

1
ipconfig/flushdns

刷新浏览器,会发现视频可以播放了。
随着时间推移上面的地址可能会失效,使用前先看看能不能ping通,如果不能ping通找一下最近的能ping通的。

3.Unity的教程素材下载有个巨坑,即无论是跟着Unity Hub给出的教程下载流程走,还是新建项目然后在Unity软件里打开Unity Asset Store去下载导入教程素材包,都会导致电脑里除了知道自己保存了的那个项目文件以外,还分别在C盘的两个临时文件夹中有两个文件备份。如果是下载的以M论的2D包还好,如果下载的3D包尤其是那个2个多G的课程包,分分钟C盘缩水近10G。
解决方法是该手动删掉手动删掉,该手动挪D盘手动挪D盘。
一般来说,下载的原始素材包会是一个有Unity图标的.unitypackage文件,这个文件在C:\Users\电脑用户名\AppData\Roaming\Unity\Asset Store-5.x,文件名一般就是你下载的那个素材的名字。直接挪到其它盘备份吧,以后如果需要用的时候可以重复导入。
然后当在Unity hub的教程页面里打开下载的那个原始素材包的时候,会生成一个原始的项目文件,准确的说是文件夹,文件夹下面和自己手动保存的项目文件夹下面的目录是一致的,这个文件夹在C:\Users\电脑用户名\AppData\Local\Temp,并且,文件夹名是乱码,也就是说没法通过名称找到它,只能通过推断。推断方法是,先选日期,筛选出打开它那个日期的所有临时文件,然后看文件大小,找到和自己手动保存的项目文件大小差不多的乱码文件夹,点开看看是不是和自己手动保存的项目文件夹内容大体一致,是的话就它了,直接删掉吧。

环境变量配置错误

问题原因:
通常来说在安装Nodejs和Hexo时,会自动进行环境变量配置。但有时系统未进行该配置,或在安装其它程序后,其它程序安装时对环境变量的自动配置覆盖了之前安装Hexo时的配置,导致path报错。

问题表现:
在使用$ hexo g等命令时报错,错误提示为:

1
Erorr: Command not found

问题解决:
手动配置环境变量,将Nodejs和Hexo加入环境变量,具体如下:

Nodejs:
找到/nodejs在c盘中的位置,一般是在/program files/program files(x86)下,复制该文件夹路径,如C:\Program Files\nodejs
打开控制面板——系统和安全——系统——高级系统设置——高级——环境变量——系统变量——Path——编辑——新建,如上面复制的C:\Program Files\nodejs路径不在Path列表中,则将以上粘贴到新建行。

Hexo:
同样,找到\blog\hexo\node_modules\hexo\bin在电脑中的位置,复制该文件夹路径,如D:\BLOG\hexo\node_modules\hexo\bin,复制到上面所示的Path处。

本地服务器端口冲突

问题原因:
Hexo博客默认使用的本地服务器端口为4000,但这个端口很容易被别的进程占用,导致无法使用http://localhost:4000进行博客的本地预览。

问题表现:
在使用$ hexo s时报错,错误提示为:

1
Error: listen EADDRINUSE

同时http://localhost:4000上看不到博客页面。

问题解决:
改在别的端口预览就好了,比如5000,在$ hexo s时使用如下语句:

1
$ hexo server -p 5000

然后浏览器打开http://localhost:5000进行本地预览即可。

Nunjuck解析错误

问题原因:
Hexo博客是使用Nunjucks来进行解析的,这会导致博文中的`{{ }}`或`{% %}`一类的字符与之冲突,从而无法生成html文件。

问题表现:
在使用$ hexo g时报错,错误提示为:

1
Nunjucks Error: [Line xxx, Column xxx] unexpected token: }}

问题解决:
在会冲突的字符前后,使用raw把字符包裹起来,避免解析时报错。具体使用方式如下:

1
{% raw %}需包裹的字符{% endraw %}

需注意的是,如果不对.md的文件中的冲突字符进行上述包裹操作,即使.md文件并不放在_posts文件夹下,而是仅仅放在诸如_drafts等文件夹下,也无法正常使用$ hexo g命令。