C#游戏之路-winform,wpf,directx,opengl的了解

终于审核通过了,开通了我的博客,虽然这么多年,已经长期在从事java相关的架构工作,但是,其实我内心,喜欢的语言一直是c#,可惜,很多时候光靠一人的力量,改变不了什么,现在的我,打算抛开自己的工作,做自己真正喜欢的事情,我开这个博客的目的主要就是为了用c#来开发大型游戏,我的第一个目标,打算使用c#实现《传奇》这样的大型网络游戏,这样的游戏会分成服务端和客户端分别开发,我的前期目标是先实现客户端,如果想了解服务端的可以订阅我,我后续会一并写完的。

从现在开始重拾8年前的c#确实有点生疏,但其实很多思想都是想通的,当然做游戏,首先要选择一种适合的技术。

今天,我主要是罗列了4项我还有点印象的实现方式。

winform,wpf,directx,opengl,下面分别说说我对这4种实现方式的理解吧,也算是给自己理个思路。

winform

winform这个技术我算是最熟悉的,记得大学毕业的时候,就是用winform做了个爬虫类的应用,专门爬网络上的美女图片,以致于老师们看到那么多美女图片,就给了我一个优秀毕业设计称号,哈哈,所以,其实我第一个想到的就是winform。对于winform,实现思路我想应该是一个窗口,里面放一个绘图控件,然后重写这个绘图控件,实现自己的自定义绘制,用的类那应该就是System.Drawing下面的那些类。在这里我想了下,要实现《传奇》这样的游戏,winform的绘图性能应该是一个考验,另外,游戏动画特别多,而且很多动画都是同时存在的,这样的难题应该是个考虑,我的想法是先新建多个bitmap,预先把绘制绘制到内存中,然后统一时间刷新,比如100MS刷新一次,那就是每秒10帧,曾经分析过传奇的代码,差不多就是每秒10帧这样的程度。

wpf

关于wpf这个,我也是在博客园里看到了一些相关的文章,有些人说wpf是完全重写的一套绘图机制,而且可以利用GPU进行加速,所以,我打算对wpf这个也研究一番,如果按照我理解的方式,我认为wpf的实现应该跟winform有点类似,而且据我一般的了解,我发现wpf做游戏控制界面非常容易,比如拖动,拖动动画之类相对容易实现,所以wpf也不失为一种好的方案。

directx

说到这个,网上搜了一大圈,经过总结,基本大部分都觉得win平台下directx是开发游戏最好的解决方案,也是目前成功游戏最多的解决方案,但是我看了下相关的sdk,我发现,假如用directx开发游戏,如果没有合适的游戏引擎,想要一个人实现《传奇》这样的大型游戏,感觉就是一个人建长城的工程,但是如果使用别人的引擎,我发现好多都是c++的语言,奈何我对c++不是特别熟,所以,我原则上认为directx是属于重量级的解决方案,需要更进一步了解。

opengl

和directx类似,也是重量级解决方案,有个不同的地方就是opengl是开源的,相对来说,实现自己的游戏引擎难度低一点,我记得我以前最喜欢玩的《暗黑破坏神2》好像就是用的opengl,说起来,如果光从客户端的角度来讲,《暗黑破坏神2》和《传奇》还是非常相似的,不过《暗黑破坏神2》的实现应该比《传奇》要复杂,因为《传奇》只有8个方位。而《暗黑破坏神2》应该是不止8个方位判定的,需要进一步了解。

今天,算是个开头吧,在博客园发文章不发代码好像不是好习惯,哈哈,不过这篇文章算是个开头吧,说实话,做这种大型项目,尤其是没有一分钱的情况下,纯属自己的爱好,难度倒还可以,就怕容易放弃,所以,开通博客园,写出来,也希望能获得更多人的支持,下一篇,我将会正式开始讲这个工程,以及相关的代码。