准备开始写一个win8游戏开发教程了,现在这里整理一下思路。

需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。

1.阅读这个教程需要什么样的基础?

2.这个教程能带来一个怎样的DEMO,结束之后能开发什么游戏?

3.这个教程覆盖哪些知识,使用什么语言和工具开发?

问题1: 首先是编码能力,这不是一本程序教材,编码基础不讲,选择c#作为主要开发语言,读者需对c#有一定的了解。其次一定的动手能力,有时需要一定的c++开发,会提供详细的代码,如果你跳过这些代码,最起码你应该能够编译他们,使用他们。第三、探索精神,重点是针对win8 游戏开发这个专题,专题以外的知识一定有更合适的资料去了解和学习。

问题2: 这个教程不会带来一个完美的游戏,但一定会向你展示开发一个Win8 Metro 游戏所需要的方方面面。带来一个 2D 3D 绘图、音乐音效、多点触控,资源、线程管理的一系列例子,以及把多个示例穿起来的演示项目,挑选一个简单的游戏方式来说明如何把这些例子穿成一个游戏。理论上来讲,你可以开发任何游戏了,只差一点,你的持续努力。

问题3:

这个教程会覆盖一定的算法、数据结构、图形学。

开发工具涉及DirectX、winrt、xaml、xml、winmd

开发语言工具涉及c#、c++,

环境要求 windows 8、vs2011 for windows8

其他工具:

图片、模型处理工具:简单点就是2D 3D美术工具,毫无意外的,这些东西程序员必须会使用,美术规格都应该由使用相关资源的程序员提供,自己当然要先熟悉。未免不必要的麻烦,虽然我基本都使用一些大牌美术工具,考虑到版权问题,教程中介绍时均采用免费工具,你可以用大牌工具完成一样的工作。

版本管理工具:即使你只是在本机写一些练习,也强烈要求你使用版本管理工具(比如svn),保存自己的每一步操作,学习一个版本管理工具花不了几个钟头,坚持使用他吧。

文本比较工具:版本管理的延伸,检查两个版本之间的差异,是一种非常实用的手段,当你搞不清楚改了什么出问题了,看看上个版本吧。

工作记录工具:文本、邮件、blog,随便什么,无论多少,把自己的点滴进展记录下来,经常回顾,坚持做计划,坚持执行计划。否则,几乎不可能完成一个需要10天以上的工作。30项工作你的大脑会把他拧成麻花,但是记录在纸上不过半页,而且很容易有条理,你今天只需关注今天的事情,别让大脑在这件事情上折腾,我们要思考的东西还多着呢。

嗯,工具说了一大堆,我在教程中并不会告诉你工具怎么用,我会尽量在教程中提示该使用哪些工具,但这些使用工具习惯的养成终究要靠你自己。

让我们开始说重点吧

为什么需要 windows 8 游戏开发教程

windows 8 使用的主要的界面叫做metro,传统的界面称为desktop,仅在win8桌面版支持,作为对老操作系统的兼容和过渡。Metro UI程序的开发,始于windows phone 7,和过去的windows桌面程序开发有比较大的不同。并且和windows phone 7也有很大的不同,甚至有种说法,windows phone 8 也会升级为和windows 8 类似的界面。

引入了winmd接口形式,c++的加入,dotnet性能的劣势部分和winrt、dotnet ramework中没有提供的功能,可以很容易的补上。winmd作为一个新的接口形式,还没有充足的资料,此教程也将作为winmd的资料。

有什么是新的

Metro UI :摒弃了窗口的概念,基本UI形式还是按控件组织,用xaml组织,从wpf->silverlight->metro ui这样发展而来。

WINMD:新的接口技术,像是com和dotnet的混血,使用c++、dotnet、js 都可以直接调用winmd接口。目前使用c++和dotnet都可以生产winmd接口的类库,dotnet可以生产跨平台的winmd接口类库,c++需要针对不同平台编译。

windows kits:非全新,有很大一部分来自windows sdk win32API,,c++头文件和lib,还有WINRT,这次提供了三种平台的lib(x86 x64 arm),并不包括所有的WIN32 API,Metro UI仅能使用windows kit,不要尝试使用传统win32 api。

winrt:用winmd接口包装的面向对象形式的windows api,基本上取代了dotnet framework或者说是dotnet framework中的大部分改成了winmd接口。现在c#开发metro ui应用,大部分调用都是winrt。c++ 和 js 应用开发,也需要调用winrt。

从容量上对比,就可以看出dotnet framework的大部分功能都瘦身掉了,瘦身掉了的部分就由winrt补上了,开发中调用的 windows命名空间中全部是winmd接口,他们就是winrt。

c++ cx:c++和 winmd 通讯的扩展,典型语法"^“ “ref new xxx”

看上去很可怕,一大堆新东西,其实呢,你根本不用关心winmd winrt都是什么东西,他们都是api,调用时都以命名空间的形式组织,作为类库来说扩展名是winmd,实际使用dotnet类库和winmd类库从编码角度没有差异,winrt中的lib 也是标准的c++类库。和c++以前链接库也没有差异。

有什么旧的可用

c++开发知识没有变化,毫无变化,唯一不同的是提供了三种平台的lib 多了arm。

c# 和dotnet 开发知识没有变化,dotnet framework 还是那么工作的,不过是有一部分被winrt替代了。而且替代部分也不影响你的开发,最多命名空间不同,重新找一下。

directX 知识,目前winrt中没有提供绘图API,dotnet framework中删去了绘图api,XNA还没有登陆win8的消息。所以使用c++ 调用 DX 来开发图形部分,成为目前开发windows 8 游戏的必然选择。

由于winmd接口的引入,混合编程变得容易,c++ 和 DirectX 积攒了大量的游戏、引擎,我们可以大胆预测,XNA4或许是最后一个版本,XNA5恐怕会以winmd接口形式出现,退回MDX的模式,作为DX的winmd接口版本,总之按照这个发展势头,XNA不再是平台唯一解决方案,他将面对无数的竞争,包括本教程^_^。

还可以大胆预测winmd这么华丽的形式,一定会登陆 windows phone 和 xbox,然后,dotnet的XNA会逐渐变成可选项,然后就没有然后了,还是那句话,XNA5可能就变成了DX的winmd包装。

如果发现有什么不对的地方,请求大家积极的批评指正。

预告、下周结合代码介绍Metro UI

Windows8 游戏开发教程-开篇相关推荐

  1. Windows8 游戏开发教程-二、关于资源和工具

    游戏主循环,帧.帧动画这些东西的理解非常重要. 常用的设计模式和编码调试技巧也非常重要. 但有点难以言传的意思,语言和文字并不能在以上两点帮助你,自己努力练习和理解吧. 就讲讲资源和工具. 很多人总是 ...

  2. 仙剑奇侠传 游戏 开发 教程 Xianjian qixia development Game development tutorial

    仙剑奇侠传 开发  游戏 开发 教程 Xianjian qixia development Game development tutorial 作者:韩梦飞沙 Author:han_meng_fei_ ...

  3. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  4. 微信小游戏开发教程-游戏实现3

    微信小游戏开发教程-游戏实现3 对象池 由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对 ...

  5. 微信小游戏开发教程-游戏实现2

    微信小游戏开发教程-游戏实现2 绘制地面 类似于绘制背景,读者自行完成代码.src/runtime/land.js 简易View系统 坐标布局对于复杂的页面来说维护相当困难,因此这里我们引入布局的概念 ...

  6. 微信小游戏开发教程-游戏实现1

    微信小游戏开发教程-游戏实现1 概述 微信开发者工具官方提供一个飞机大战的游戏Demo,这里我们不再使用这个demo,我们以FlappyBird为例,为了让读者更加容易理解. 源码 https://g ...

  7. 微信小游戏开发教程-2D游戏原理讲解

    微信小游戏开发教程-2D游戏原理讲解 原理 为了更加形象的描述,这里先上一张图: 背景 a. 首先,我们看到背景好像是一张无限长的图片在向下移动.实际则不然,这是一张顶部和底部刚好重叠的图片.这是一种 ...

  8. 微信小游戏开发教程-新建项目

    微信小游戏开发教程-新建项目 1. 新建小游戏项目 我们这回使用空项目,不要勾选使用模板创建. 2. 添加小游戏必要文件 项目创建好以后我们发现缺少一些必要的文件,我们手动添加即可: game.jso ...

  9. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

最新文章

  1. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
  2. pearsonr() python_十分钟搞懂“Python数据分析”
  3. 位运算实例(一):判断奇偶性
  4. ftp改为sftp_科普!一文详解 FTP、FTPS 与 SFTP 的原理
  5. 计算机科学与技术毕业答辩流程,计算机科学与技术学院毕业答辩工作细则
  6. 编译原理 —— 1.1 什么是编译
  7. 中科院-杨力祥视频教程 07课程
  8. html背景图片为什么找不到,css中背景图片显示不出来
  9. 解决Windows无法加载中文(中国)-王码五笔输入法(任何输入法都行) 键盘的布局的方法...
  10. java实现同步的几种方式(总结)
  11. 数组、集合和列表的区别
  12. 公用电信网间互联管理规定
  13. c语言错误不允许使用不完整的类型,C语言不允许使用不完整的类型报错是什么意思啊...
  14. python求奇偶数和_python奇偶数求和
  15. bash: /home/xxx/anaconda3/bin/conda: No such file or directory
  16. Ubuntu18.04安装教程(很详细)
  17. 恭主驾到:新手都知道的审车流程,你都知道吗?
  18. 【原创:毕业意味着什么】
  19. (x)html文档的结构,XHTML文档_xhtml文档的基本结构_HTML/XHTML-站长之家
  20. 【呼叫中心KPI解析】8、系统话务量

热门文章

  1. C# 海康DVR客户端开发系列(2)—— 封装API (1)
  2. PostgreSQL MySQL 兼容性之 - Gis类型
  3. Android 动态图文混排的常用方法
  4. CloudStack(二)基础网络模式安装部署
  5. Linux Oracle服务启动停止脚本与开机自启动
  6. [转]Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
  7. Windows2003开机后进不了系统
  8. 【机器学习】深度学习开发环境搭建
  9. java并发编程-volatile内存实现和原理
  10. 快速计算Distinct Count