Skip to content

Latest commit

 

History

History
22 lines (15 loc) · 1.59 KB

2014_03_07_client_vs_server.md

File metadata and controls

22 lines (15 loc) · 1.59 KB

[game-dev] 游戏服务端、客户端程序的异同

做了五年服务端程序,三年客户端程序。服务端算是从头打造过一个产品的方方面面,而客户端大体修过一些引擎的bug、维护维护编辑器,以及用脚本写写业务逻辑。

服务端的问题:

  1. 网络,I/O模型。event-multiplexing 还是 per thread or per process。数据请求是 state-sensitive 还是 stateless。
  2. 存储,SQL or NoSQL,根据业务模型来设计。游戏服务器应该如何解决存储问题,云大大已经总结得很好了,看 这里
  3. 服务器结构,硬件多核是趋势。服务端多进程or多线程结构,自然都是趋势。

客户端的问题:

  1. 渲染和物理,一旦引入的3D、GUI等东西,就各种复杂了。
  2. 网络,一般只需要考虑与服务器的socket,一个或几个连接而已。
  3. 存储,简单的就是xml等配置文件读取;复杂点的,可能就是sqlite之类。
  4. 客户端结构,多线程、并发是趋势。包括渲染、物理、声音等等,都会尽量并发、异步,影响着结构设计和写代码的方式。

如果按引擎部分用C/C++,业务层部分用脚本Lua、Python。

客户端引擎的代码量要远大于服务端的。因为 MySQL 这种东西,使用就好,除非特例,一般不需要修改代码。而客户端就不同了,就算用了 Unreal3,一款游戏,为了需求,C/C++ 层很少能不改动的。

原因就是客户端牵扯到了图形。扯上图形,特别是3D,就各种复杂了。