none
请问用Visual C#能开发像类似魔兽世界那种类型的游戏吗? RRS feed

  • 问题

  • 由于我对程序开发不是很懂,但我有个项目想用Visual C#来做开发,基本跟魔兽世界那种服务器端与客户端的形式构成。不知道能用Visual C#开发吗?还有XNA到底是什么东西,能为游戏开发带来哪些方便呢?
    2009年7月12日 3:50

答案

  • 是的,可以的。而且C#还很适合做这些事情。
    XNA是微软基于.net设计的游戏开发框架 - XNA Framework,XNA Framework是一系列帮助开发人员编写游戏的类库,可以为游戏开发提供非常强大的支持!
    另外,XNA Studio是用于游戏开发的Visual Studio,它是一个集成的、基于团队的、为游戏产品量身定做的开发环境,可以在Windows和Xbox360两个平台上用C#开发游戏。
    希望楼主早日设计开发个游戏出来,让我们玩玩~:)

    http://hi.baidu.com/2009ajun
    2009年7月12日 8:42

全部回复

  • 完全可以,现在市面上好多游戏就是基于.NET开发的了。不过你光会C#是不可能的,至少也要会数据库的操作。XNA简单的说就是基于DirectX-3D的一个高级应用集,能简化开发3D游戏的门槛。
    2009年7月12日 7:56
  • 是的,可以的。而且C#还很适合做这些事情。
    XNA是微软基于.net设计的游戏开发框架 - XNA Framework,XNA Framework是一系列帮助开发人员编写游戏的类库,可以为游戏开发提供非常强大的支持!
    另外,XNA Studio是用于游戏开发的Visual Studio,它是一个集成的、基于团队的、为游戏产品量身定做的开发环境,可以在Windows和Xbox360两个平台上用C#开发游戏。
    希望楼主早日设计开发个游戏出来,让我们玩玩~:)

    http://hi.baidu.com/2009ajun
    2009年7月12日 8:42
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua

    2009年7月13日 1:54
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua

    呵呵,别这么绝对,存在即有道理。

    http://hi.baidu.com/2009ajun
    2009年7月13日 13:30
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua

    呵呵,别这么绝对,存在即有道理。

    http://hi.baidu.com/2009ajun

    呃, 请问那款类似魔兽世界那种规模的网络游戏可以用来证明这个存在的道理的....我真的很想学习一下

    因为我亦从事对性能有较高要求的网络服务端开发工作。C# 即使用上异步或者托管的IOCP,也比 C++ 的 IOCP 的系统差上一截。当然这有很多原因的,但是一直无法找到一个更好的范例,兄弟你要知道的话还请提醒一下
    2009年7月13日 14:36
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua

    呵呵,别这么绝对,存在即有道理。

    http://hi.baidu.com/2009ajun

    呃, 请问那款类似魔兽世界那种规模的网络游戏可以用来证明这个存在的道理的....我真的很想学习一下

    因为我亦从事对性能有较高要求的网络服务端开发工作。C# 即使用上异步或者托管的IOCP,也比 C++ 的 IOCP 的系统差上一截。当然这有很多原因的,但是一直无法找到一个更好的范例,兄弟你要知道的话还请提醒一下
    别急别急,不要动气,此话题就此打住。
    淡定,淡定。

    http://hi.baidu.com/2009ajun
    2009年7月13日 22:45
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua


    呵呵,
        我支持你的观点。c#和java一种类型的语言。这种托管语言本身的机制导致了它固有的缺陷。执行效率比不了c、c++。它不适合做图形渲染效果要求很高的游戏。魔兽世界我就不做什么评价了。C#如何做到这种高质量、高效率的3D渲染效果是个问题。
       我知道的朋友做图形软件开发的都是c/ c++.C#也许可以做一些简单的,相对性能要求不高的游戏。但是魔兽世界这种level的就算了。~
       
     
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月14日 4:50
    版主
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua


    呵呵,
        我支持你的观点。c#和java一种类型的语言。这种托管语言本身的机制导致了它固有的缺陷。执行效率比不了c、c++。它不适合做图形渲染效果要求很高的游戏。魔兽世界我就不做什么评价了。C#如何做到这种高质量、高效率的3D渲染效果是个问题。
       我知道的朋友做图形软件开发的都是c/ c++.C#也许可以做一些简单的,相对性能要求不高的游戏。但是魔兽世界这种level的就算了。~
       
     
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    兄弟你真的不知道什么是xna?

    360上的3d游戏哪个游戏没有wow 的dx8强涅  ?


    图形渲染效果什么年代需要和托管不托管扯上关系了? 能用显卡功能的是王道阿。  渲染用非托管库和硬件支持的滤镜 物理运算用物理引擎  .net就是个调度而已

    答案900, 目标五颗星
    2009年7月14日 5:00
    版主
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua

    呵呵,别这么绝对,存在即有道理。

    http://hi.baidu.com/2009ajun

    呃, 请问那款类似魔兽世界那种规模的网络游戏可以用来证明这个存在的道理的....我真的很想学习一下

    因为我亦从事对性能有较高要求的网络服务端开发工作。C# 即使用上异步或者托管的IOCP,也比 C++ 的 IOCP 的系统差上一截。当然这有很多原因的,但是一直无法找到一个更好的范例,兄弟你要知道的话还请提醒一下

    我正好有个IOCP的问题一直在讨论,我分别发到中英文论坛了,WCF与IOCP的,我基本弄清楚了答案。你看看你能给点什么好的看法不?
    1.http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/1e6bf941-6b99-4096-bb8c-d708962d7517
    2.http://social.microsoft.com/Forums/zh-CN/wcf/thread/3f45500d-6de0-4c90-8a62-f08e1ede053e
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月14日 5:08
    版主
  • 所说的差上一截是比较有趣的   
    我们组织c# iocp socket和c++的程序员写iocp    tcp echo server 压力测试过 不过是局域网c#12000连接和c++16000连接的差别  
    猜猜传奇用什么,delphi 自建线城池 p3 800也能600稳定在线。大不了用虚拟化多系统多网卡  有什么办不到的呢

    答案900, 目标五颗星
    2009年7月14日 5:13
    版主
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua


    呵呵,
        我支持你的观点。c#和java一种类型的语言。这种托管语言本身的机制导致了它固有的缺陷。执行效率比不了c、c++。它不适合做图形渲染效果要求很高的游戏。魔兽世界我就不做什么评价了。C#如何做到这种高质量、高效率的3D渲染效果是个问题。
       我知道的朋友做图形软件开发的都是c/ c++.C#也许可以做一些简单的,相对性能要求不高的游戏。但是魔兽世界这种level的就算了。~
       
     
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    兄弟你真的不知道什么是xna?

    360上的3d游戏哪个游戏没有wow 的dx8强涅  ?


    图形渲染效果什么年代需要和托管不托管扯上关系了? 能用显卡功能的是王道阿。  渲染用非托管库和硬件支持的滤镜 物理运算用物理引擎  .net就是个调度而已

    答案900, 目标五颗星

    呵呵,我确实对XNA不熟悉。因为一直没从事游戏相关的开发工作。
        不过对魔兽世界早有耳闻。个人理解,c#可以做游戏开发,但是魔兽世界这个level的游戏,就目前的c#技术条件来说,能开发到什么效果,就难说了。
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月14日 15:02
    版主
  • 请允许我在这里我额外问一个问题……360上的游戏分托管和非托管吗?


    Xlfdll
    2009年7月15日 16:17
  • 兄弟你是连魔兽世界也没怎么玩吧   dx8的游戏 画面out 的很  靠美术人员苦撑 level相当于ps2


    游戏本身不应该不分托管非托管  xna本身是一种架构体系 无论是特效还是物理引擎 都是应当交给非托管代码和硬件做的


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月16日 0:31
    版主
  • 谢谢回答。

    魔兽世界我也想多说一句。WOW的引擎不行,我和我朋友用GTX295把全部特效开到最高都还是觉得有卡的情况(帧数很不稳定,一会儿超过60一会儿又掉到20左右)。
    很不可思议。

    画面也确实是靠美术人员苦撑的,这个我也同意。可以开一个Mangos然后自己进去浏览浏览……


    Xlfdll
    2009年7月16日 4:08
  • 貌似是用软件模拟dx8并不支持的阴影跟踪还是什么得  。

    现在wow图形引擎瓶颈主要还在dx8


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月16日 5:08
    版主
  • 我不是很同意 韦恩卑鄙版主 的说法

    第一,关于 IOCP,12000 和 16000 的负荷量已经很说明问题了。而对于网络游戏服务端来说,一两万的负荷是必须要考虑的问题。即使用上均衡负载,也应该考虑更高的效率以节省成本。

    第二,关于虚拟化多系统多网卡。对于解决负荷问题很明显是没有帮助的。服务端负荷过重并非是系统资源耗尽,而是服务器不堪负重。

    第三,关于 XNA,老实说不了解,没有XBox360,但是看 Wiki 上的介绍,用的公司不是很多。基本的原因是封装的太漂亮了,灵活性较差。

    基本上感觉,客户端怎么写还不是一样,反正一部PC或者主机上只有一个实例,资源,性能,效率的要求非常宽松。服务器端则要认真考虑这些问题。

    当然,这也可能是我这个仅专注于服务端开发的人的偏见而已。

    2009年7月17日 1:51
  • 1  wow 一台机器负荷上万条连接了么?  根本没有

    2 连接的瓶颈  是操作系统的tcp栈负荷 通过虚拟化 和每个系统各自独立网卡  可以有效缓解这一问题

    3 我也是专注服务端开发的 我看到的是实际用例和实际瓶颈  而不是用一个2核的pc来臆想  36核16网卡的虚拟化服务器
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月17日 2:01
    版主
  • 另外 wow类型的mmo  所谓连接数符合  比起运算符合来差的太远
    当你服务器能够满足10000tcp连接的时候   你后面的运算量已经超过5倍这台机器的负荷了   实际上你的机器负载在运算上的时候  一台能跑16000的机器  最多只能负载2000实际活动在线   那么12000和16000有差别么?  我不这么认为


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月17日 2:13
    版主
  • wow 的副本  是一个很好的动态生成负载server 实例的模型。 这个模型很适合 hyper-V 为基础的虚拟化平台
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月17日 2:24
    版主
  • WOW 的服务端我亦只能够猜测。但是在我见过的另外一个网络游戏服务端, 它是分成几个大块的: auth server, game server, NPC server, cache server, database。此外还有 web 等外围。所以基本不用担心运算负荷的问题。

    WOW 单服人数的确不多,所以他们定期有跨服的活动。而其他游戏跨服交流比较少,所以追求单服的容量。

    而且,性能差异也并非仅仅表现在连接方面,例如服务端要发一个数据包,它其中的一些内容,其内存布局在服务端与客户端是相同的。若 C# 则必须老老实实地逐个写入封包中,但 C++ 却能很方便的使用内存复制,简单快捷方便,当然,其风险不言而喻,需要谨慎地处理。(C#可能有更好的解决方案,仅是我不知道而已)

    所以,在做一些性能要求较高的服务端的时候。我还是没有胆量跑到老板面前,说:“尽管 C++ 的解决方案能够提供 33% 的性能提升,但我决定采用 C# 的方案”。

    但是说到底,我觉得应该是和韦恩卑鄙版主的工作需求方向不同,所以在同一个问题上,看问题的角度就不一样了。
    2009年7月17日 9:14
  • 不错啊,很好的贴子,版主们能否再深入的探讨一下
    2010年7月8日 13:32
  • 我没有见过一款网络游戏是由 C# 开发的。

    因为网络游戏通常都需要脚本系统支持的,所以基本上都是 C++,而 C# 在这个方面非常的差。同时感觉 C# 的灵活性受制颇多,例如只要是网络封包,C#非拆开重组不可,性能损耗严重啊(因为C#的类的内存布局是不确定的),而 C++ 一句 memcpy_s,搞掂..(当然,如果哪位高人C#在这方面有经验的,恳请告知,我为这个问题烦恼很久了)

    魔兽世界的服务端的脚本系统是用 lua


    你没写过WOW的插件吧!WOW的UI是由lua驱动的。C++ + Lua 是WOW的开发模式,服务器端使用Lua,我还真没听说过。
    2010年7月9日 2:12