论坛首页 综合技术论坛

使用erlang 开发 web的选择

浏览 30862 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-25  
只有并发好像意义并不大,不知道是否适合MMORPG类游戏开发?核心算法用其它语言实现难度怎样?erlang的扩展库还是比较难写吧,不能长时间阻塞,更不能有线程锁这类东西。。。
0 请登录后投票
   发表时间:2007-05-25  
qiezi 写道
只有并发好像意义并不大,不知道是否适合MMORPG类游戏开发?核心算法用其它语言实现难度怎样?erlang的扩展库还是比较难写吧,不能长时间阻塞,更不能有线程锁这类东西。。。


<EVE ONLINE>是stackless python写的,我想python在效率方面比不上erlang.我还见过N多的泡菜游戏用Java写,为了进行快速表查找和各种缓存,一启动就是2G内存那种,这点上erlang的menisa效率要好得多.
其实再不济可以参考openpoker的做法,把erlang server写成一个socket adapter,专门负责通信和分布式存储,具体的游戏算法用C/Java写,通过tcp/ip插在adapter上.
另,erlang的c/java的插件是通过port或者driver实现的,内部实则上是运行在一个native thread pool里面,所以cport的block不会影响其他的erlang process的运行.不过具potain实际使用下来,c/port或者driver好像不那么稳定总是会把整个erlang 拖死掉,所以还是用tcp/ip写个c服务器更好些.


0 请登录后投票
   发表时间:2007-05-25  
port不稳定,用inets库调用频率一上去就出莫名其妙的问题。
0 请登录后投票
   发表时间:2007-05-25  
MMORPG,就服务器端来说,我认为从架构上,都是差不多的,从实现角度,我谈谈我的看法。
在通信框架方面,Erlang会方便很多,那篇OpenPoker的文章主要是讲的分隔的休闲游戏,各个服务器之间没有太大的关联。MMORPG,如果是大世界,会涉及到跨服务器的通信,这方面也是Erlang的强项。
可能会有问题的是人物交互设计上,按照Erlang Way,对于游戏里面的人物,都要设计为Process,而不是C++里的Object。各个Process基于Message来进行并发的活动和交互,这样设计对绝大多数人来说还是比较陌生。
还有就是游戏逻辑上面,貌似大部分网游都是用python,lua这样的脚本来写的逻辑,如果要用Erlang开发,用FP风格写这些比较灵活的逻辑,可能会比较痛苦。

国外已经有人研究过Erlang开发MMORPG的可行性,这里顺便将ppt放上来吧。
  • 1000slaski.zip (582.8 KB)
  • 描述: A Virtual World Distributed Server developed in Erlang as a Tool for analysing Needs of Massively Multiplayer Online Game Servers
  • 下载次数: 217
0 请登录后投票
   发表时间:2007-05-25  
另外说道,并发/并行.我觉得很多人都搞不太清楚之间的差别.具体的区别我就不说了.我只是想说,在SMP架构上去做并行任务实际意义不大,虽然你可以通过OpenMP之类的库实现并行优化,但是实际上尽管CPU可以独立运行,但是I/O,memory都是仍然是共享的,这对于真正的并行计算来说是个致命伤.除非你用Numa,那情况又两说了,不过Numa那种东西很奢侈吧,现在google的PC farm大行其道的年代,谁用Numa就真有些人傻钱多速来的嫌疑了.

0 请登录后投票
   发表时间:2007-05-25  
T1觉得Folding@Home这种方式的分布式运算,是否比SMP架构更适合?现在游戏主机和一些显卡的计算能力非一般的猛。
0 请登录后投票
   发表时间:2007-05-25  
AvinDev 写道
T1觉得Folding@Home这种方式的分布式运算,是否比SMP架构更适合?现在游戏主机和一些显卡的计算能力非一般的猛。

这实则上是分布式结构,和SMP/Numa已经没有关系了,分布/并行/并发的概念区别还是很大的.我不清楚Folding@Home具体的结构,不过我猜想这是一种SPMD并行,这其实是一种比较简单的并发模式了,每一个node上运行的计算程序相同,然后把一条蛋白质上的数据切成几小块,分给不同的节点做.每一个节点上运行的程序相同,但是不care具体的计算机是什么样的.但是事实上能做到SPMD的应用是不多的,大多数的应用都是MPMD,如果你要写MPMD的话,网络通信上的问题可能已经是优先级很低的问题了,最主要的工作是小心的设计并行算法.Folding@Home这种方式也就很难奏效,因为很有可能某些计算机由于配置比其他的低,而拖慢整个计算.
0 请登录后投票
   发表时间:2007-05-25  
另外理论上说Functional的程序可以天然并行计算,很多functional的特性像lazy evaluation,好像就是专门为并行而量身定做的.比如说
result;
for(int i;i<100000;i++)
{
  result+=power(i,3)
}

这样的代码,用OpenMP无论如何是不可能对其做任何优化的.但是如果你有惰性求职就可以.不过这目前也仅仅停留在理论上,实际使用FP语言的虚拟机需要为这些Funtional特性寻找特别的优化算法.这目前看来也只能期待数学上的突破了.


0 请登录后投票
   发表时间:2007-05-25  
wzgme 写道
turing 写道
像Second Life那样的虚拟社区,大家有没有关注过?它的后台语言好像叫Linden。


确定?

只知道Linden Lab是一个公司.

从招聘来看底层是C++/OpenGL,Web是PHP


SecondLife里的脚本语言是Linden
用这个可以自己在里面创建物品等
后台语言好像不是
0 请登录后投票
   发表时间:2007-05-25  
Trustno1 写道
另外说道,并发/并行.我觉得很多人都搞不太清楚之间的差别.具体的区别我就不说了.我只是想说,在SMP架构上去做并行任务实际意义不大,虽然你可以通过OpenMP之类的库实现并行优化,但是实际上尽管CPU可以独立运行,但是I/O,memory都是仍然是共享的,这对于真正的并行计算来说是个致命伤.除非你用Numa,那情况又两说了,不过Numa那种东西很奢侈吧,现在google的PC farm大行其道的年代,谁用Numa就真有些人傻钱多速来的嫌疑了.



要不了多久,每一台计算机都会是传统意义上的 SMP 和 NUMA 系统了。多核 CPU 势不可挡,而当核心数量达到一定程度的时候(Intel 打算在几年内推出 80 核的 CPU),某个核心独享的 cache 甚至是内存也会不可避免。

到时候会很有趣吧,怎么样同时利用好多核 CPU 和 PC 集群的并行能力。我猜想,会有新的奇迹传说诞生的。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics