它和云风过往放出来的东西一样,是非常具有实践性的,可以解决实际开发问题的。目前我所在的手游项目使用 Erlang 进行服务器端开发的,如果重新开始,我会选择使用 skynet。

游戏服务器开发中的难点,上面 @无瞳已经提到了两个,我再加一个:隔离性。比如说,在C/C++写的服务器中,一行代码中的空指针访问,就会导致整个服务器进程crash,这就是很差的隔离性,在服务一个玩家的过程中发生的错误,会影响到对其他玩家提供服务的能力。

传统的端游服务器开发中,性能是硬性指标,语言上几乎没有选择,必须使用C/C++。但是页游和手游对单机性能的要求降到了非常低的水平。这个时候,Erlang在解决异步通信以及强隔离性上的优势就体现了出来。

但是 Erlang 也有它的问题。

首先,就是很难招人。

一方面,国内小公司很难招到靠谱的程序员。Erlang 本来就比较小众,所以大多数情况下只能是招进来不会 Erlang 的,让他自学+一些指导。

在我从某大厂出来以后面试的十几个人中,能好好用C语言写完一个 atoi 函数的,只有一两个。倒不是 Erlang 有多难学,只是功底差成这样的人,他会不会有意愿去学就是个很大的问题,你敢不敢相信他能学好都是其次了。

其次,Erlang 的一些特性确实降低开发效率。

这是一句非常招黑的话,我也没有时间写太详细,只是一些个人感受。

首先就是 Immutable。这个特性对游戏发开来说非常头疼。目前的手游服务器里数值计算占的比重不多,更多的是对状态的修改。玩家要升个级,你要Level+1,玩家做做这,做做那,最终体现到代码上的,都是对状态的修改。而 Erlang 的 Immutable,配合很费键盘的Record语法,让写这些代码的过程非常繁琐。

另外就是 Erlang 不支持在函数中间直接return,在写很多游戏逻辑的时候,是非常蛋疼的。

因为上面这些原因,我觉得最适合目前手游的服务器开发语言是这样的:

(1). 和 Erlang 一样的进程模型,强隔离性。

(2). 类似 C 的命令式语言。

但是要写出这样的一门语言,需要非常大的工作量(可以参考 Erlang 虚拟机的代码量。)

skynet 在我看来是做了一个trade off。它不支持如 Erlang 般便宜的进程(因此在隔离性上有所降低,但依然比C/C++强。),但是开发 skynet 本身所需的工作量大大降低。

go hive skynet_云风的skynet在国内外来看究竟算什么水平?可以一统国内游戏服务端框架吗?...相关推荐

  1. 基于skynet设计游戏服务端框架

    skynet并不是一个开箱即用的服务端框架,游戏后端在开展业务时,需要根据自身业务特点,合理设计相应的服务端框架.在这里我根据自身的设计目标,写下各方面的选择与取舍.对于小型企业来说,一些商业化的软件 ...

  2. 【云风skynet】详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨Linux服务器开发丨后端开发

    skynet中多核高并发编程给我们的启发 1. 多核并发编程 2. actor模型详解 3. 手撕一个万人同时在线游戏 视频讲解如下,点击观看: [云风skynet]详解skynet的多核高并发编程丨 ...

  3. 华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla)

    华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla) 第一章 使用FileZilla Server搭建FTP服务器 第二章 ...

  4. 基于滴滴云的棋牌游戏服务端架构设计

    现在小团队开发的棋牌游戏有很多,棋牌行业的相互攻击是非常普遍的现象,同行之间往往会采取 DDOS.CC 等攻击的手段来打击对手,这是目前棋牌运营商们面临的比较严峻的一个问题,那么在设计棋牌游戏服务端架 ...

  5. skynet服务端_skynet总体架构

    前言 skynet是我们游戏服务端的底层框架,当初在技术选型的时候仔细阅读过它的源码,发现它是一个C语言的工程典范.大多数游戏服务端,要么使用C++,要么使用java,使用C是非常少见的.但是skyn ...

  6. 云风Skynet——skynet非官方网站

    http://skynetclub.github.io/ skynet非官方网站 skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sk ...

  7. skynet服务端_skynet服务的缺陷 lua死循环

    这边有一个关于云风skynet的视频推荐给大家观看 点击就可以观看了! 知乎视频​www.zhihu.com skynet是一套多人在线游戏的轻量级服务端框架,使用C+Lua开发.skynet的显著优 ...

  8. 在云服务器搭建 socket服务端

    1.环境:腾讯云服务器.ubuntu16.python3.git 2.在自己电脑(我的win10)用python3写好socket服务端代码,上传到自己的GitHub,然后在云服务器里git clon ...

  9. 【2021/2/17发布适用】轻松在云服务器 Windows 上架设 ARK: Survival Evolved 的单地图基本服务端(基于官方教程)

    目录 零.前言 一.前置的准备 1.硬件配置(最低配置) 2.运行环境 二.安装过程 1.安装 .NET 4.0+ 2.安装 Steam CMD 3.安装 Ark: Survival Evolved ...

最新文章

  1. Java I/O Demo
  2. 如何用ActionScript制作绚丽的特效——Silk
  3. Python-OpenCV-- 台式机外接摄像头pyTesseract文本框实时检测
  4. [提示]使用普通用户,通过sealos安装ks,默认还是要通过root用户才能正常使用kubectl等命令
  5. bootstrap 可以拖动 表格宽度_word表格技巧:如何快捷调整表格
  6. Verilog代码风格
  7. Lightbox 效果
  8. MIT Scheme 使用 Edwin
  9. CMD命令大全(已更新)
  10. [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
  11. 让nginx支持php
  12. 7 - Struts.xml各属性说明(待补充)
  13. 扩展GeoServer数据源
  14. Android入门笔记04
  15. Listview实现不同类型的布局
  16. python入门基础语法答案_第一阶段:Python开发基础 Python基础语法入门  day03 课后作业...
  17. 用Amos/Mplus/Lisrel等软件做的就是结构方程模型吗?
  18. 几张趣图助你理解HTTP状态码
  19. 融云2.8.8简单的陌生人聊天
  20. poj 3626 Mud Puddles

热门文章

  1. 使用Swagger轻松记录您的Play Framework REST API
  2. sql并发 锁 优化思路_并发优化–减少锁粒度
  3. spring分布式事务示例_Spring声明式事务示例
  4. 了解Spring Web初始化
  5. 适用于MongoDB和Mongometer的SpiderMonkey至V8
  6. 自定义Spring Data JPA存储库
  7. JSF开发人员应该知道的5种有用方法
  8. Java EE过去,现在和云7
  9. Linux 命令之 unrar -- 解压 rar 格式的文件
  10. QPW 用户签署协议日志表(tf_user_agreement_log)