Nov 15

在大概8到10年前, 2D的单机游戏盛行, 游戏重视的是可玩性. 那时候, 只要掌握了图像的移动, 再加一个好的创意, 几乎就能开发一款不错的游戏. 那些游戏, 瓶颈在于创意和计算机的速度.

而到了网络游戏, 特别是MMORPG, 需要的技术可就复杂多了, 甚至比Web开发所需要的技术还多得多了. 几乎从网络知识, 到操作系统, C语言, 脚本, 数据库, 3D等等. 但是, 现在的所谓的MMORPG引擎, 似乎就是图形引擎, 至少图形引擎的内容点整个"游戏引擎"的80%以上, 而在网络, 系统存储, 开发模式等非常少.

按我的理解, MMORPG开发的本质是实现一个超大规模的网络计算机. 这样想, 如果你有一个计算机, 网络带宽达到1T, 内存有1T, CPU能力相当于100个当下主流CPU, 那么, 我们就可以很容易实现一个能容纳10万人同时在线的"无缝世界"的网游. 因为, 这样的一个计算机, 你在内存中保存着对应客户端的"对象", 你可以非常快速地对这些对象进行创建, 查找, 更新, 删除操作, 以及网络接收和发送. 这就是所有的计算机应用的本质.

Written by benegg at 2009-11-15 12:19:16

Sep 11

像因特网的Web系统一样, 几乎所有的大规模软件系统, 都会使用脚本语言. 在网络游戏服务器的开发中, 也会应用脚本语言. 游戏开发常用的脚本语言主要有: Python, Lua. 本文介绍在C语言中嵌入Python支持, C语言和Python语言通过API进行交互.

任何两种语言要整合, 首先要解决通信问题. C要和Python进行通信, 要进行数据结构转换, 把C的数据结构转为Python的对象, 和把Python对象转换为C数据结构.

Continue reading »

Written by benegg at 2009-09-11 23:03:07

Jun 21

前期文章: 网络游戏的架构

大厅服务器(Hall Server)接受房间服务器(传输服务器)的连接并保持, 向房间服务器发送指令, 指示创建和销毁临时登录口令. 销毁口令的指令一般由房间服务器发给大厅服务器, 在用户断开与房间服务器的连接时.

大厅服务器有控制接口, 接受TCP短连接发来的指令, 如创建口令, 销毁口令, 转交给相应的房间服务器.

大厅服务器维护着一个关于所有房间服务器的状态的列表, 并向外提供查询接口. 该查询是TCP短连接的形式.

控制接口和查询接口使用相同的访问点.

Written by benegg at 2009-06-21 15:02:21 | tags: ,

Jun 20

前期文章: 网络游戏的架构

传输服务器(Transport Server), 也即传输服务器(Room Server)需要和三种角色进行交互: 一个或者多个游戏客户端, 一个大厅服务器, 一个游戏服务器(逻辑服务器).

传输服务器接受游戏客户端的连接, 读取客户端指令, 周期地转发给游戏服务器. 在一个周期内, 为每一个客户端最多转发一个指令.

传输服务器读取来自大厅服务器的指令, 动态地创建客户端口令(口令可能由大厅服务器生成). 传输服务器将口令放在内存中, 当客户端连接登录时, 只用很少的计算周期便可完成验证, 避免数据库查询等慢速操作.

传输服务器读取来自游戏服务器的指令, 立即转发给相应的客户端.

角色C/S关系:

  • 传输服务器连接大厅服务器
  • 传输服务器连接游戏服务器
  • 游戏客户端连接传输服务器

Written by benegg at 2009-06-20 18:04:06 | tags: ,