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个方位判定的,需要进一步了解。

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

时间: 2024-11-05 14:48:21

C#游戏之路-winform,wpf,directx,opengl的了解的相关文章

C# net winform wpf 发送post数据和xml到网页

由于项目需要发送数据到网页 这里用aspx做测试 采用post以及get发送数据,页面进行数据  首先这个东西很简单很简单,基本上学过的都会,但是原谅一直搞cs几乎不搞bs的猿类吧.三四年没接触bs. 除了记录自己用意外.也希望能帮助别人 写程序与bs交互的处理webservice也没别的了.冷不丁的遇到了还抓瞎,只能网上搜罗然后测试在整理,在学习....... 希望帮助没接触过的,以及也是一直搞cs的猿类,请bs大神,高手,给出更多的解决方案 首先采用最简单的微软子提供的方式 aspx可以用r

winform,wpf,winrt获取屏幕分辨率

winform 当前的屏幕除任务栏外的工作域大小     this.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;     this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; 当前的屏幕包括任务栏的工作域大小 this.Width=System.Windows.Forms.Screen.PrimaryScre

winform wpf 同时使用log4net出错处理

最近有个项目,主要是Winform开发,但其中会使用wpf的用户控件,其都要使用log4net进行日志记录,在编译的过程中会报如下错误: error MC1000: 未知的生成错误“因为没有预加载,所以无法解析程序集“log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”的依赖项.在使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve

winform/wpf 程序部署

(1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋友可以直接查找MSDN文档,或者看下面这里,这是百度百科上的,其实也是Ctrl + C版本.http://baike.baidu.com/view/1390498.htm 如果你对这些理论的东西不感兴趣,没关系,上面所提及的内容你完全可以无视之.我们只要知道,ClickOnce是一种应用程序部署方式

C# Winform WPF DeskBand 窗体嵌入任务栏,在任务栏显示文字

最近写了个小程序,用于将固态硬盘的写入量等信息显示在任务栏,最开始使用Windows API也可以实现,但是当任务栏托盘增加的时候,会被遮盖,最终采用了DeskBand来实现,填了很多坑. 参考的GitHub地址:https://github.com/dsafa/CSDeskBand DeskBand相关代码如下: COLORREF: // This code snippet was used by SharpShell. // using System.Drawing; using Syste

Unity 发送游戏画面到 Winform

一.首先看一下Unity界面: 设了2个摄像机,位置重叠,旋转相同,父子关系,在父摄像机上加上脚本A.cs,并将子摄像机复制给A脚本中的变量Cam: Cam用于为RenderTexture提供画面,Port是Socket监听的端口; 二.A.cs脚本代码(夜太深,改天再补充注释,直接贴代码) using System; using System.Collections; using System.Collections.Generic; using System.Net; using Syste

关于c#winform用sharpGL(OpenGL)绘制不出图形,绘制窗口是个黑框的坑

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11790309.html 在c++的opengl中可能是因为是最基本的库,很多东西都把你做好了 转到c#下用大牛们对opengl的支持库,比如sharpGL,使用起来需要非常的严谨 就比如: gl.Color(0.0f, 0.0f, 1.0f);这个设置颜色的代码 在c++下不管是0.0f也好还是0也好都可以,而在c#下sharpGL没有写0.0f的这种格式 图像就完全绘制不出来.让你完全找不

WinForm(WPF) splash screen demo with C#

https://www.codeproject.com/Messages/2549767/Splash-Screen.aspx https://www.codeproject.com/Articles/6511/Transparent-Splash-Screen https://www.codeproject.com/Articles/116875/WPF-Loading-Splash-Screen

WPF与Winform的选择

最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs.平时如自己写一些工具,小应用都是用winform就足够.但是界面总是很难看,据了解WPF在这一方面会强一些.因为之前对WPF并不熟悉,先花了点时间了解一下,和Winform做了一下对比.以下大概的整理,未做详细整理. wpf是啥技术? DHTML就是WPF的直系亲属.WPF里的大量核心概念和结构,如属性引擎.事件模型等,都是继承自 DHTML,最大的一个不同是外观和控件逻辑的分离.WPF应用和DHTML应用(HTA