The Missing Editor for Unity Development: Visual Studio Code

Recently, I am working for my own game project, using Unity. I used Unity for almost 5 years. Unity is great, it make game developing a lot more easy and enjoyable. But there is a problem that annoyed me so long: I can't find a great editor for coding (in C# script). The default IDE of Unity, MonoDevelop, is awkward for use: it take long time to launch and has a terrible user interface. I have also tried Sublime Text and Vim, but both of them have some issue. Then, Microsoft brought Visual Studio Code. I used it since the day it was introduced and I must say, it is like "giving a glass of ice water to somebody in hell" for Unity developer, especially if you are using Mac.

Microsoft made Visual Studio Code a cross-platform editor. Whether you are using Windows, OS X, Linux, no problem, you can use it in your own computer. Also, it is free, just download, unzip and start coding.

Unlike MonoDevelop, Visual Studio Code is a lightweight IDE. It launch instantly, scrolling and navigating fluidly, have low CPU and memory usage. It have clear, modern, highly-polished user interface, support Full Screen mode in OS X, just like Sublime Text.

Getting Visual Studio Code integrating with Unity is fairly simple: get the plugin, put it into your Unity project, enable it in the Preference window, done, see the official guide. After integration, Visual Studio Code works well with Unity. Double click the error and waring hints in Unity, it will jump into the right place in the Visual Studio Code editor window.

Visual Studio Code have plenty features works perfectly such as code colorization, bracket matching, IntelliSense, split view and so on. I love features called "Code Lens" and "Peek": you can see the number of references to an method directly above the method, and you can click it to show where the method is used:

Visual Studio Code - Code Lens and Peek

I use C# script as programming language in my own Unity project and the syntax highlighting works well with C# script. I also wrote some custom shaders for fascinating 2D visual effects. Since version 0.8, Visual Studio Code support code highlighting of ShaderLab:

Syntax Highlighting of ShaderLab

If you are using Visual Studio Code on Mac, you can debug right in the Visual Studio Code. Of course, it's great!

Since these great features, Visual Studio Code is definitely the missing editor for Unity development. Good works, Microsoft!

Blender 初学者设置指南

前些日子,介绍过一款 3D 内容创作软件 Blender. 个人使用了一段时间 Blender,感觉比起 Autodesk 3ds Max 和 Maya 学起来和用起来更加顺手、高效。不过初学 Blender 时,可能会遇到一些困惑。而这些困惑,有很大一部分是由于设置不当所导致的。而我也是初学者,在学习这款软件的时候也遇到过各种各样的问题。所以,就写一篇文章,简单说一下比较关键的一些设置,希望后面的人能少走一些弯路。

如果您不清楚 Blender 是什么,可以先从这篇文章里了解一下,觉得不错的话,可以到 Blender 的官方下载页面下载最新版本的 Blender. Blender 一般每两三个月会发一个新版本,新版本会提供一些令人兴奋的新功能,并且会修正一些错误。下载好后,就开始来设置一下 Blender 吧。

  • 第一步,把软件语言改成中文

在 2011 年 Blender 2.5 版发布后,彻底更新了软件界面,开始支持多国语言文字,并且可以把界面文字按抗锯齿效果显示出来。现在官方的 Blender 同样自带了简体和繁体中文文字界面。不过,默认的语言是英语,需要改一下系统设置才能切换成中文语言。无论您的英语水平是 sorry for my poor English 那种级别的,还是过了专八看小说看文档无所不能,在这里都建议把语言换成中文的。为什么?因为只要英语水平不是母语级别,那么中文就是比英文看着更亲切,能更快被理解。这一点特别适合去初学者去随便探索 Blender 的众多功能,更利于学习。避免出现看到满屏英语,即使都能看懂也没耐心看的情况。所以,建议别嫌用中文界面显得很 low,把软件语言切换为中文。

启动 Blender,从欢迎界面窗口外面随便用鼠标点一下把欢迎界面关掉。然后,点开窗口顶部的 "File" -> "User Preference" 。如图所示:

[ blender 设置入口

然后,在 "Blender User Preference" 窗口中的 "System" 这个选项卡中,把 "International Fonts" 选项勾上,开启国际化字体。接着在 "Languages" 中选择简体中文或繁体中文。最后,把下面 "Translate" 子选项中的 "Interface", "Tooltips", "New Data" 三个选项都点上打开。这样,软件界面的绝大多数命令、选项、提示都变成中文的了。设置如图:

Blender 英文界面

开启中文界面后:

Blender 中文界面

  • 把鼠标选择方式改成地球人通用的

大家从小到大,在各种各样的软件、应用里,要选择某个对象,一般都是点击鼠标左键吧。比如类似在 Finder/资源管理器 中选择文件,或是在 Keynote/PowerPonit 里选择某个文本框或图片,一般都是用左键单击需要选择的文件、对象是吧。不过默认情况下,Blender 偏不是这样。如果在 Blender 的 3D 视口中试图用左键单击选择物体,那么得到的操作结果是——把 3D 光标移到了刚才左键所点击的地方。那要想选择某个物体怎么办呢?是在物体上点击鼠标右键。WTF?!

还好,可以在系统设置里把它改过来,改成使用鼠标左键单击选择物体。在 「输入」选项卡的「选择键」选项中,把默认的右键改成左键就可以了。我自己就是这样做的,改过之后用了两三个月,觉得没遇到过什么不方便的地方。所以推荐所有初学者也这样做。

关于这个问题,Blender 社区内部就有不少争论。有人认为这是传承下来系统化的操作方式中很重要的一环,不能轻易更改。另一些人认为这种操作完全是反人类。对于我来说,更认同著名 Blender 高质量教程网站 BlenderGuru 站长 Andrew Price 的看法,即这是一个用户体验上的败笔。很简单,因为绝大多数其他软件都不是这样做的。几乎所有新用户试图在这里使用在其他软件中习得的经验来操作时,会遇到与预期不一致的操作结果,进而会感到困惑。这样做的后果是让大量潜在的用户流失了。Blender 本来就不是一个主流的 3D 内容创作软件,禁不起这样的潜在用户的流失。再有,不仅右键选择这个操作与大多数操作系统和其他应用软件不一致,同时也破坏了 Blender 自己内部的一致性,因为点击界面选项、按钮、菜单等时用的是左键。这样,即使新用户用了一段时间后,也许仍然会时不时感到困惑和挫败感。

  • 模拟数字键盘(仅限于使用笔记本电脑的用户)

Blender 官方推荐的操作方式是使用一个带数字键的键盘,外加一个三键鼠标(也可以是两键 + 滚轮),操作时一只手一直放在键盘上,另一只手一直握鼠标。不过好多笔记本电脑是没有数字键盘的,而偏偏数字键盘还挺常用的,比如在视图之间的切换,还有平行投影与透视投影切换都要用到数字键盘。好在,可以在 Blender 的设置里修改一下,让用户可以使用主键盘区上方的数字键来代替小键盘区的数字键。

方法是,同样是在 「输入」选项卡中,勾选「模拟数字键盘」,就可以了。

  • 开启持续拖拽

在 Blender 里,经常会需要拖拽鼠标移动。不过会遇到这样一个问题:指针拖拽移动到视口/窗口边上了,不能再继续移动了。对于这个问题,开启持续拖拽后就可以解决。开启持续拖拽后,当指针移动到视口/窗口边缘时,再移动指针,那么指针将会从视口/窗口的对面出现,这样又可以继续移动指针了。这个功能在 3ds Max 里也有提供。

不过,不知道为什么,这个挺实用的功能默认却是关闭的。打开这个功能的方法是:依然是在「输入」面板,把「持续拖拽」这个选项勾上。这样就可以使用这个相当强大的功能了。

  • 开启自然触控板(OS X 10.7 以上用户)

Blender 也有 Mac 版,并在 Mac 版里对做了一些对 Mac 系统和硬件上的优化。对于 Mac 强大的触控板,Blender 同样也支持得很棒。使用触控板,可以用多点触控手势来操作 Blender,如用双指移动手势来旋转视图,等等。不过默认情况下,手势方向与 OS X系统(10.7 以上)是相反的,而更类似 Snow Leopard 里的操作方式。好在,仍可以在系统设置里改过来。在「输入」选项卡中把「自然触控板」这个选项勾上即可。

上面的设置全部修改后,应如下图所示这样:

Blender 输入推荐设置

  • 更改撤销步数

Blender 默认是能撤销 32 次,不过有时候做东西做到一半,想从中途大改一下,32 次可能有时候不够用,希望能撤销更多次。而 Blender 运行占用的内存相对来说,算比较低的。既然如此,那为什么不多增加一下撤销步数呢?尤其是对于使用 8GB、16GB 大内存的用户来说,空闲空间留着也是浪费,不如全投入有用的地方去。因此,如果内存比较足,建议把撤销步数改得更多一些。

在 「编辑」选项卡中「撤销」->「步数」中,把步数从 32 调到更多一些,即可。

  • 关掉 Python 提示

Blender 大量采用 Python 这个脚本语言来实现从界面到建模等众多功能,并且可以使用 Python 来写脚本、开发插件。默认下将鼠标移动到某个菜单、按钮、选项时弹出的工具提示中,会显示相关的 Python API 提示,类似这样的:

Python 提示

不过这个似乎对很多人没太多用途。如果您不想在工具提示中看到 Python API 信息,可以在「界面」选项卡里,取消掉 「显示 Python 工具提示」这个勾选。(但总觉得默认就应该是不勾上的才对……)

  • 使用 GPU 来加速渲染出图(仅部分显卡可用)

Blender 默认是使用 CPU 来渲染场景。在 Blender 自带的 Cycles 渲染引擎里,可以启用 CUDA 或 OpenCL 技术,来使用 GPU 来渲染。使用 GPU 渲染通常要比使用 CPU 快几倍,因此推荐如果可行的话,使用 GPU 来渲染出图。开启的方法是在「系统」选项卡的「计算设备」选项中,把计算设备由 CPU 改为 CUDA 或其他。

不过,这个特性仅支持部分显卡。首先,需要有个独立显卡。然后,对 nVidia 显卡需要 GTX 2xx 以上,对 ATI 显卡需要支持 OpenCL 1.1 以上版本。还有,使用 OpenCL 技术渲染目前仍为实验特性,仍处于开发阶段,目前并不完善。对于一些着色器,如次表面散射,仍不支持使用 GPU 渲染。在显存不足等情况下,Blender 也会切换到使用更慢的 CPU 来渲染。

(我的 2010 年中版的 MacBook Pro 就不支持使用 GPU 渲染,哭……)

  • 插件

Blender 可以使用很多 Python 写的插件,而初学者可能会很容易忽略掉这些。不过如果能用好插件,可以起到事半功倍的效果。比如若希望给人物模型绑定骨骼,就可以使用自带的 Rigify 插件很轻松生成一套骨骼系统。或者希望支持导入、导出某些格式的文件,同样也可以通过插件解决。做一些复杂但「套路化」的工作,如制作一个窗户,同样也可以用插件来解决。在「插件」选项卡中,即可以发掘一些实用、有趣的插件。

差不多就这样了,祝玩的愉快!

Unity 现已支持原生 2D 开发

如果说当今最流行的游戏引擎,那么一定是 Unity 了。使用 Unity 工具,可以高效、便捷地制作游戏,并且还可以将游戏轻松发布到 Mac / PC / Linux / iOS / Android / Blackberry 等相当多的平台上面。Unity 此外,Unity 还有素材商店(Assest Store)、Union 联合发布平台(现已改名为 Unity Games) 等创新的商业模式。Unity 也一直与相关厂商,如 Apple、Oculus VR 等等保持不错的关系,有最新的技术后总能快速跟进。因此,越来越多的游戏厂商和独立游戏开发者选择用 Unity 来制作游戏。基于 Unity 的游戏更是横扫去年的 App Store Best of 2012 list (来源:Unity Powered Games Dominate iOS AppStore in 2012).

Unity 的侧重点主要是 3D 游戏开发制作,因此国内一般把 Unity 称为 Unity3D 或 U3D 等等。其实,Unity 也不是不支持 2D 的开发,像 Angry Bird 的姊妹游戏 Bad Piggies 就是用 Unity 做的。不过用起来总不是那么方便,毕竟 Unity 最早并不是为创作 2D 游戏而设计的,2D 游戏与 3D 游戏制作起来,总有一些不同。这不能不说是一些小遗憾。

不过,今年在温哥华举行的 Unity 开发者大会,即 Unite 上,Unity 官方宣布,将在下一个版本的 Unity 上,即 Unity 4.3,支持原生的 2D 游戏开发。这样,这点小小的缺憾终于消失了。

根据 Unity 公司官方博客的描述,使用 Unity 4.3 的 2D 游戏开发套件,可以轻松导入 2D Sprite 图像,并可以轻松设置动画、状态等。最难得可贵的是,Unity 强大的物理引擎现在对 2D 游戏做出了相当多的优化,在 2D 的游戏里现在也可以方便地使用物理效果了。

这样,相对于 Cocos2D、Box2D 等框架来说,使用 Unity 来开发 2D 游戏会更加简单、直观、愉快,并且 Unity 的基础版本仍是免费的。3D 游戏的制作者,现在也可以尝尝鲜,做 2D 游戏玩玩。可以预见,未来一定会有更多基于 Unity 的优秀 2D 游戏。

嗯,2D 游戏创作功能现已加入 Unity 豪华午餐。

你也可以玩 3D 摄影 —— 介绍 Autodesk 123D Catch

当我们出门旅游的时候,如果看到了高大宏伟的古迹、优美的风景、富有表现力的油画,我们可以用数码相机、智能手机等设备把这些美好的事物,通过照相的方式,捕捉下来。

那么,您有没有想过,如果我们照相照出来的不是一张张只有宽和高的二维数字图像,而是一个个三维模型呢?比如说,给雕塑拍照,照出来的不是单个一张照片,而是从不同角度都可以观看的三维模型?

现在,3D 重建技术已经可以做到类似的要求。使用 3D 重建技术,一开始还是要拍照,不过要给被拍摄的物体从多个角度拍很多照片,然后放在计算机里,根据照片之间的相机视差,来还原出物体的 3D 几何形态,做成一个 3D 数字模型。今年日本那个很火的 3D 摄影棚采用的就是这样的 3D 重建技术。

听起来很酷吧?不过看着觉得好难啊,是不是要用什么专业的设备,以及复杂的软件什么的?

其实,您也可以玩类似这样的 3D 摄影,通过 Autodesk 出品的 123D Catch 即可完成。123D Catch 的功能很简单,却很有意思,即通过您从不同角度给物体拍摄的照片,上传到 Autodesk 的云端计算机群处理,云端计算机群会还原出 3D 模型,然后返回处理完成的 3D 模型。在硬件上,您不需要任何专业设备,只需要:

  • 一个带摄像头且能联网的 iPhone、iPod touch、iPad,或一个数码相机、可拍照的智能手机 + 一台能联网的电脑;
  • 然后没了;

即可以做到。您不需要有任何使用诸如 3Ds Max、Maya、Blender 等三维建模软件的经验。更难得可贵的是,Autodesk 123D Catch 这个服务是免费的。

123D Catch 有网页版 App 和 PC 端程序,还有一个 iOS App。下面,简单介绍一下,怎样用 iOS 设备来玩 123D Catch。

首先,在 App Store 下载 123D Catch 这个应用:https://itunes.apple.com/us/app/123d-catch/id513913018?ls=1&mt=8。这个是一个通用应用,既可以安装到 iPhone/iPod touch 上,也可以安装到 iPad 上。安装完毕后,进入这个应用。在应用第一次启动时,会播放一段介绍视频,可以通过这个介绍视频大概了解一下 123D Catch 能干什么,以及怎样玩。

视频播放完后,会进入 Example 这个 Tab 页面,在这个页面里,可以选择 123D Catch 自带的示例模型来查看:

[Autodesk 123D Exmples

[123D Catch 3D 模型示例

可以看到,一些示例模型效果还是颇为不错的。那么,接下来,我们就看看如何制作我们自己的 3D 模型。

点击屏幕下方的拍照按钮,进入拍照界面,然后给物体拍照。123D Catch 对拍出来的照片要求挺严格的,如果拍不好,很可能会制作失败,或者制作出来的效果不好,比如模型有很多孔洞。因此拍摄时为保证成功率,需要遵循这些原则:

  • 从物体的不同角度拍照;
  • 至少要拍 12 张,拍出 20 张到 40 张照片左右的效果最佳;
  • 拍照时尽量避开物体的高光、玻璃的反光、镜面这些会严重干扰处理的东西;
  • 尽量保证从不同角度拍的物体大小不变;
  • 被拍摄物体尽量不要有孔洞;
  • 拍出来的照片,尽量保证互相之间有一些重叠;
  • 被拍摄物体必须完全静止(如果要是别人给您拍照,您千万别拍着拍着笑了);
  • 尽量对焦清晰;

拍照完毕后,即可以上传到云端。第一次使用时会提示登入 Autodesk 帐号,按提示注册一个,登入。点击上传符号按钮,输入作品名称、类别、是否公开等信息,上传照片。上传后,Autodesk 的云端会花几分钟来处理照片、生成 3D 模型。生成完毕后,就可以下载到 "Captures" 页面的模型库里查看了。下面这个是我做的模型,西安小雁塔博物馆里的一个雕塑:

[Buddha Status Captured By 123D Catch

想看看别人做的模型?在第三项 "Community" Tab 页面里,可以查看 123D Catch 社区里其他创作者发布的模型。

在 PC 版以及 Web 版的 123D Catch 应用里,还可以把模型导出为行业通用的 OBJ 格式。导出后,可以把模型导入进 Blender、3DS Max、Maya 里做进一步的编辑。也可以把 OBJ 模型连同一并导出的材质文件一同放到 Unity 游戏引擎里用,我试过了,完全可以的。

想玩些更酷的?可以通过与 Autodesk 合作的一些服务商,把自己的模型通过 3D 打印、激光切割、数控机床、全息照片做成真的家伙!在 Autodesk 123D 的网站,使用 刚才创建的 Autodesk 帐号登入进去后,即可选择所需要的模型、服务商以及相应的服务,填写收件地址,使用信用卡支付,然后就可以等着快递把做出来的作品送到手中了。

最后,要提一句,Autodesk 在 iOS 平台上有很多有趣的 App,甚至还有两个游戏。我自己比较喜欢的有 Autodesk Formit,一款非常类似 SketchUp 的一个 3D 建模软件,以及 123D Sculpt,3D 雕刻软件,等等

下次旅游时,来试着玩玩 3D 摄影吧!

推荐一个 3D 动画创作软件:Blender

render

如果您是初学动画、数字艺术专业的学生,或是想玩玩 CG 创作的爱好者,以及手游制作团队的成员,可能会面对这样一个问题:

我该选择什么动画创作软件?

SketchUp? 确实非常容易上手,不过功能实在是太弱了。最显而易见的是,内置的渲染引擎根本无法渲染出照片真实级图像。并且 SketchUp 的建模功能也不强,比如不可操控顶点、完全没有曲面建模等。SketchUp 也不带有动画功能。SketchUp 虽然是免费的,不过付费的专业版才支持将模型导出为行业通用的 FBX,OBJ 等格式。导出时若不选择导出为双面模型则很容易出现法线混乱的情况。因此,很显然 SketchUp 并不能作为主力 3D 软件,即使用 SketchUp 做 3D 草图确实非常好用。

Autodesk 的 3Ds Max 或 Maya?功能确实非常强大。不过功能也过于强大了,以至于大量的菜单、面板被很多不常用到的命令、选项所占用。不仅界面臃肿,而且不易学习。在 3Ds Max 和 Maya 诞生之际,行业对用户体验不够重视,因此在使用 3Ds Max 和 Maya 时会不得不进行许多低效的操作。这更加给初学者带来了挫败感。并且,3Ds Max 和 Maya 的授权费用极其高昂。虽然搞到「中国特色版」的 3Ds Max 和 Maya 也不是很难的事情,不过难免会良心不安。

所幸,我们还有一个武器: Blender

Blender 简单来说,其实和 Autodesk 3Ds Max 以及 Autodesk Maya 一样,都是 3D 建模、动画创作软件。那么,为什么推荐使用 Blender 呢?

  • 首先,Blender 容易入门,且入门后可以高效地使用。

Blender 诞生于荷兰的一个小动画工作室。由于高昂的授权费用,以及苛刻的授权条件(有的 3D 动画软件的授权条件竟然包括使用该软件创作的作品之著作权属于该软件商!)。于是这个工作室自己开发了一个动画软件,即 Blender 的雏形,给自己用。在 Blender 开源后,更保持了开发者与使用者高度重合的状况。这和软件开发商与创作者分离的商业模式正相反,使得 Blender 能真正满足创作者的需求。

当今的 Blender 用户界面及交互逻辑深刻参考了苹果公司极其著名的用户体验圣经 Apple Human Interface Guidelines。Blender 的界面初次看,可能略显复杂一些。不过上手之后,会发现界面布局非常符合逻辑,命令、参数、选项总会在预期的地方被找到。上手后,您还会爱上其他用户体验上的亮点,如 Blender 从来不会出现一个窗口叠在另一个窗口上方的情况,以及丰富的快捷键,保证了用户可以快速入门,且入门后可以高效地使用。这些都是 3Ds Max 与 Maya 这样的商业软件至今仍未能做到的;

  • Blender 是一个全功能的 3D 动画创作软件。

Blender 包含了完整的多边形建模、曲线、曲面建模功能,修改器、雕刻、贴图展 UV 设定材质、烘培场景、骨骼绑定、动画创作、粒子效果、物理仿真模拟、光线追踪引擎(Cycles)、相机追踪、图像后期合成等丰富、强大的功能。Blender 甚至还自带了一个游戏引擎。Blender 可以导入、导出如 OBJ、FBX、DAE 等行业通用的 3D 文件格式,保证了工作流程可以顺畅对接。由于 Blender 是开源的,因此更新比较快,几个月就会发布一个新版本,提供一些新功能、修复Bug。此外,Blender 还有许多基于 python 的插件.

点击这里可以观看完全由 Blender 创作的动画短片,来感受一下 Blender 强大的功能吧;

  • Blender 对系统配置要求很低。猜一猜 Blender 的安装文件多大?不到 100 MB;

  • Blender 支持 OS X、Linux、Windows、Solaris 系统。基本可以满足绝大多数用户的要求。不会出现类似「我靠 3DS Max 为毛没有 Mac 版!」的情况。支持 Linux 还意味着可以组渲染农场而省下几百、上千套 Windows 正版授权费用。因此,当今的一些云渲染服务,如阿里云渲染,支持渲染 Blender 文件。

  • Blender 自带中文界面,只需安装后在偏好设置里改一下就可以了;

  • Blender 的文档相当得详细、清晰、友好;

  • 最重要的是,由于 Blender 是基于社区协作开发的开源软件的,所以上面的一切特性您都可以免费得到。这样,就不用到处去找序列号、注册机,有更新时可以放心、大胆地去升级。更不用担心用盗版使得良心不安;

在高中,我尝试使用过一段时间 Ubuntu Linux 系统。由于 Blender 是为数不多能在 Linux 上运行的 3D 动画软件,因此在软件目录上看到了。不过当时 Blender 界面并不如当今那样好学、好用,因此没有深入研究下去。在 2011 年,Blender 发布了 2.5 版,在用户界面以及交互逻辑上做出了巨大改变。后来再次尝试的时候,就觉得很容易上手了。上相关课程时,也用 Blender 来创作。本文最前面的那个图,就是我简单地做了一个场景,然后使用 Cycles 渲染引擎渲染出来的。

说到缺点,Blender 也是有一些的。比如不可避免地功能相对于商业软件弱一些,另外也存在一些少量的 Bug。不过,在我使用的过程中,感觉现有的 Blender 功能基本上足够我用的了。少量的 Bug 虽然有时候会带来一些困扰,不过仍可以正常完成作品。而且 Blender 的 Bug 其实用起来感觉几乎没有多少机会遇到。事实上,我个人感觉 Blender 是少数无论是从软件功能、软件质量以及用户体验上均可以与商业软件相提并论的开源软件之一。在 YouTube 上的一个教程中,甚至有用户这样评论:「这个包含价值一万美元功能(指相机跟踪)的软件竟然是免费的?他妈的「捐赠」按钮在哪儿!」

Blender 的另一个缺点,专门针对中文用户,可能就是相关的中文学习资源较少。不过虽然少,还是有一些教程、文档的。如果英语还可以,并且有境外自由行工具的话,可以在 YouTube 和 Vimeo 上观看很多高质量的教程。我个人喜欢这个网站的教程。最终成品的质量都相当不错,且讲的也很棒,在 YouTube 上有人说「我没有这个软件,但我居然从头看到尾了」。

如果您是学生,可能会担心,如果我用这个软件做东西,老师不接受这软件的格式怎么办?其实,大多数情况下是不必要担心的。正如前文所说,Blender 可以导出成 FBX、OBJ、DAE 等行业常用的文件格式。把作业导出为这些格式之一,然后连贴图放在一起打包上交就可以了。如果老师不是很变态的话,一般是会接受的。至少我当时的游戏动画课作业全部使用 Blender 创作的,最后课程分数也还不低。

总之,如果您是学生、CG 爱好者、小型游戏工作室的成员,大胆去拥抱 Blender 吧。相信您一定会爱上的。

网站技术概览

经过一番努力,昨天终于把这个网站弄上线了。感到幸运的是,从一开始到把网站弄上线的过程中,没有走太多弯路。现在想谈谈网站从无到有的过程中,都用了哪些技术。这样,如果您也想弄一个自己的独立个人网站,或许能令您少走一些弯路。如果您不太了解网站建设,您也可以通过这篇文章大概了解一下网站是怎么一回事儿。

声明: 我也是个菜狗,至少在网站建设这一方面。如果您对这一方面很懂,大概扫一眼就可以了;如果您有兴趣,欢迎帮我挑挑错。

  • 服务器
  • 服务器操作系统
  • SSH
  • 域名
  • HTTP 服务器软件
  • 数据库
  • 服务器端脚本语言
  • WordPress
  • 安全宝

那么,就挨个介绍一下吧。

  • 服务器

服务器嘛,就是一个根据用户要求,把保存在自己这里的网页、版式布局、图片这些东西调出,通过网络交给用户的计算机。基本上,大多数能联网的电脑都可以用作服务器,包括您现在正在用来看本站的电脑,只要您的电脑安装相应的服务器软件就可以。当然,并不是所有可以用作服务器的计算机都适合作为服务器来用。用作服务器的电脑相对于普通家用电脑,还是有一些要求的。比如,服务器总不能三天两头就死机,不能安个软件就要求重启电脑,也不能很轻易地就染上病毒或被人黑掉。因此,服务器相对于家用机来说挺「娇贵」的,比如为了保证服务器运行稳定,服务器所在的环境必须保持一个固定的温度和湿度。

可见,对于一般人来说,是不愿意伺候服务器的。做网站本身就够累的了,还要给服务器大爷吹空调、保证不间断供电、还要时不时清灰什么的。因此,就有聪明人想了一个办法:既然你们不愿意伺候服务器,那么就让我们包办吧,我们负责清灰、提供舒适的机房、高速的网络连接,你们就安心做网站吧,只要你们每月或每年付我多少多少管理费。

就这样,诞生了一大批专门做服务器机房生意的公司或业务事业部。国内的有万网、阿里云等;国外的有亚马逊、Linode 等等。本站的服务器使用的就是国外虚拟主机商 Linode 的。

这里再解释一下虚拟主机的概念。自从有聪明人发明服务器机房后,后来有更聪明的人依靠软件,将一个大型的计算机「分割」成很多个虚拟的小计算机,这些虚拟出来的计算机共同使用这台大型计算机的 CPU、存储空间、内存、带宽等。相对于使用单独的小计算机,使用虚拟化方案会带来少许的性能损失,不过带来了一个很大的好处,即可以根据需要很方便的升级或降级。比如如果网站用户数上去了,带宽、存储空间很难满足用户需求时,使用虚拟服务器的话就可以很方便地升级(从母机上划一块磁盘空间、多分一些带宽就可以了),要是使用普通的机子,还要自己添置硬盘什么的。可见,使用虚拟服务器方案也便于机房来统一管理、维护服务器。

Linode 口碑极佳,速度很不错,也很稳定。曾经支付宝的技术专家,现丁香园 CTO 冯大辉 Fenng 也曾推荐使用 Linode。Linode 在全球有多个机房,国内可以使用日本东京机房,不过现阶段,由于众所周知的原因,东京机房的很多 IP 在国内不好用了。因此,我的这个服务器所在机房选用的是美国加州费利蒙市(Fremont)的。Linode 可以通过注册一个帐号来免费试用三个小时,在免费试用时可以选择东京机房试试。如果觉得东京机房好用,那么就用它吧;如果不好用,可以换到其他地方的机房。Linode 的服务器提供的是完全的管理员权限,可以随便折腾安软件什么的。Linode 也提供了一个详尽的文档库,方便用户上手。此外,Linode 还提供了一个 iPhone App,可以用来监视服务器的运行状态。Linode 也会时不时地升级,如最近就将所有方案的内存翻了一倍,而且月租金仅提高了 0.05 美元。Linode 的价格也很划算,最基础的服务器每月月租 19.5 美元。这最基础的服务器方案提供了每月高达 2TB 的带宽、24 GB 的硬盘、1 GB 的内存,足够大多数人用了。

因此,如果您为选择什么服务器发愁的话,Linode 是您的最佳选择。如果您想租 Linode 服务器,希望您能用这个链接购买。使用这个链接购买,我可以得到 20 美元的 credit,您也不会有任何损失。好人一生平安。

购买 Linode 服务器是需要一个国际信用卡的。不过根据现阶段政策,在校学生不可申请信用卡。为应对这种情况,推荐使用腾讯财付通的虚拟美国运通卡来购买。

题外话:就像船长可以给自己心爱的小船取名字一样,我们是可以给服务器取名字的,比如我的这个服务器名字就叫做 "Akira-Tower".

  • 服务器操作系统

既然服务器的本质就是计算机,那么同样需要安装操作系统。和大多数普通 PC 机不同的是,现阶段使用 Windows 系列的服务器市场份额并不是很大,反而是 Linux 的市场份额比重较大一些。其中原因有很多。首先,绝大多数 Linux 服务器系统是不带图形界面的,这样降低了内存与 CPU 的消耗,还增加了系统稳定性。Linux 中有很多发行版是免费的,意味着使用 Linux 可以减少一笔授权费用;如果一个公司使用的服务器不是一台,而是几千、几万台,那么省下的授权费用相当可观。Linux 有相当数量优秀的系统工具。Linux 的内核是开放源代码的,方便移植、修改。还有,Linux 的一些特性也比较适合用作服务器,比如 Linux 开进程所需要的时间远小于 Windows。

我的服务器也不例外,使用的也是 Linux,准确的说是 64 位版的 Ubuntu Server 13.04。(别笑话我用的是 Ubuntu,我知道我很菜。)

如果您也是初学者,选择 Ubuntu 吧。Ubuntu 现在是最热门的 Linux 发行版之一,文档什么的都很齐全,用户社区规模也较大。这意味着有什么问题,可以很快地找到解决方案,不会耽搁太多时间与精力。除了 Ubuntu 外,Debian 也是比较不错的选择。

  • SSH

我们有了一个服务器,但这个服务器在美国或日本等别的地方,怎么用这个服务器呢?显然,专门坐飞机飞到费利蒙或东京很不现实。这就需要一个工具,从我们的电脑通过网络远程连接到服务器上进行操作。实际上,很早人们就这样做了。最开始人们是用一个叫 Telnet 的工具连接远程服务器。不过 Telnet 有一个严重的问题:通过 Telnet 传送的数据居然是不加密的!这就意味着我们的数据、操作命令、甚至服务器的管理员密码都有可能被网络中间一些不怀好意的节点所截获。为解决这个问题,有聪明人写出了 Secure Shell 这个工具 [注1] ,即 SSH。使用 SSH 可以在我们的计算机与远在日本、美国的服务器之间建立一条加密的数据通道,这些数据即使被其他人截获也无法获取其含义。

OS X 与 Linux 系统均自带 SSH,Windows 用户可以使用 PuTTY 工具通过 SSH 连接远程服务器。

  • 域名

在拥有服务器后,如果现在就要急匆匆地搭一个网站的话,那么访客只能通过在浏览器栏输入类似 "http://192.168.10.30" 这样的东西来访问网站,而不能通过输入类似 "http://www.google.com" 、 "http://zh.wikipedia.org" 这样的。这就需要购买一个域名来让用户可以通过输入更容易记住的字串,而非一串难以记忆的数字,来访问网站。域名,简单来说就是类似 "google.com", "wikipedia.org" 这些。我们需要购买一个域名的所有权,然后把这个域名指向一个 IP 地址(就是上面那一串数字)。用户通过输入类似 "domain-name.com" 等字符来访问我们的网站时,网络上一些其他的计算机(DNS 服务器)会将这个 "domain-name.com" 翻译为类似 "192.168.10.30" 的 IP 地址,从而正确地找到我们的服务器。

国内外有很多注册商可以提供域名购买服务。在这里,不建议在国内的注册商那里购买域名。建议在 GoDaddy 那里买,原因就是他们很靠谱,而国内大多注册商连「靠谱」都不算。GoDaddy 虽然是美国的注册商,不过支持支付宝,当然也支持各种国际信用卡了。

在域名选择这方面,建议如果能用 .com 域名就用 .com 域名。如果想把网站做大,那么 .com 域名是唯一的选择。为什么我的这个网站用的是 .me 域名?很简单,因为 "zhangboning.com" 已经被人注册了。还有,永远不要考虑使用 .cn 、.com.cn 域名。

关于域名的一些要点,可以参考我的这篇博文

  • HTTP 服务器软件

配置好服务器、绑域名后,用户可以通过输入网址来找到我们的服务器了。不过我们的服务器还没有准备好接受用户请求,按用户的请求找到网页、图片这些交给用户。这就需要一个服务器软件。

常用的服务器软件有 Apache,Nginx(读作 Engine X)等,Windows 上还有 IIS。本站使用的是 Apache。

  • 数据库

然后,我们要是写文章,存在哪里?我们网站上的评论、用户 ID 什么的要怎么存?

一个很显而易见的方案是,存成一个一个的文件。不过缺点也有很多,比如以文件形式保存数据较为散乱,查找、储存都不是很方便。所以,要用到数据库。

这个网站的数据库选用的是 MySQL,同样也是开源的产品。根据需求的不同,还可选择 monoDB、Redis 等数据库。我选用 MySQL 的目的纯粹是为了用下文提到的 WordPress。

  • 服务器端脚本语言

为了更好地完成网站的功能,如管理文章、发表评论、换头像等,还需要一个脚本语言,用这个脚本语言把静态的网页变成一个基于网页的程序。

脚本语言可以选用 PHP、Python、Ruby、JSP 等。各有各的优点,如 PHP 功能强大、用户数多,Python 语法简洁,Ruby 很灵活,等等。本站使用的是 PHP 作为脚本语言。

  • WordPress

当然,我们可以自己从头写网页、连接数据库、写服务器脚本语言来搭建一个网站,不过既然有现成的方案,为什么还要亲自做、重新发明轮子呢?WordPress 就是这样一个适合个人网站、博客的现成方案。WordPress 功能相当齐全,且界面美观。如果觉得 WordPress 缺少什么功能,还可以通过安装插件来弥补。WordPress 除了默认的主题外,全世界的用户还贡献了许多精美的第三方主题。WordPress 安装起来也很快捷方便。

嗯,对,本站用的就是 WordPress。

  • 安全宝

如果网站流量上去了,有可能引起一些无聊之徒的注意,遭到他们的攻击。这就可以用到安全宝的服务。

安全宝的服务可以有效的抵挡一些常见攻击,比如最常见的,纠集一大群计算机不停地刷网站直到网站瘫痪(即 DDOS 攻击)。而且安全宝的设置非常便捷。使用安全宝后,还可以享受加速服务,原理就是把慢服务器上的内容存到他们的快服务器上,用户访问网站时直接从他们的快服务器上获取内容。非常适合个人小网站使用。

大概就这些吧。


[注1]: Secure Shell 实际上是一个协议,将 Secure Shell 称为工具是不严谨的说法。此处将其称为工具是为了便于理解。