前言 本书的目标 移动游戏在近几年非常流行。随着Nintendo的Gameboy的出现,人们就意识到能将他们的游戏随身携带。随着技术更加复杂,这些游戏也在不断地成长,融合了复杂的游戏机械学、先进的2D和3D图形技术以及引人入胜的故事和游戏世界,使玩家流连其中。 在游戏不断成长的同时,移动通信设备也实现了巨大的普及。几乎所有的人每次出门在外时都会携带一部手机,然而现在这些手机已经不只是打电话,它们能够提供联系人管理、E-mail、Web浏览、卫星导航以及强大的娱乐功能。 为移动设备编写游戏时能将这些趋势都融合到一起。人们拿起手机来玩游戏是一件很容易的事,因为人们通常将手机放在口袋中。在乘坐火车时可以进入角色扮演游戏打发时间,在等待约会时可以玩几分钟休闲游戏,这些需求手机游戏都可以提供。 本书旨在让您掌握创建在Windows Mobile及Window Phone经典设备上的游戏所需的知识和技术。首先介绍了平台及开发环境方面的基础知识,然后逐渐扩展到3D图形之类的高级主题。本书将引导您逐步创建一个简单且可管理的环境,您可以通过它编写自己的手机游戏,还能将游戏向外部发布,用于娱乐或盈利。本书还提供了示例项目,对所有讨论到的技术都进行了演示,这些示例项目是理想的试验素材。 要适应Windows Mobile硬件的多样性是有难度的。本书将展示如何创建能适用于尽可能多的设备、适用于不同的屏幕分辨率、触摸屏或非触摸屏设备,满足各种您可能需要处理的其他硬件功能的需要的游戏。 本书的读者对象 本书适用于已经对C#或Visual Basic.NET(Visual Studio中两种主要的托管语言)比较熟悉的读者,假定您已经掌握了程序设计的基础知识,并且能够熟练使用基于PC的应用程序开发环境。本书并不是专门介绍编程或Visual Studio开发环境本身的。 然而,本书将全程引导您设置Windows Mobile程序开发环境,编译首个程序,以及在Visual Studio的Windows Mobile仿真器或真实手机上对游戏进行交互式调试。 要为您的手机开发软件,需要使用Visual Studio 2005标准版或Visual Studio 2008专业版。虽然本书中许多项目都可以通过Windows Mobile仿真器进行开发,但还是强烈建议您使用真实的手机来测试您的游戏。 为了使用OpenGL开发游戏,您需要一部支持OpenGL硬件加速的手机,因为当前没有仿真器能够提供该功能(这在本书最后一个部分会讨论)。大多数新手机都支持OpenGL——当不确定时,您可以通过Internet进行查询。 本书中的示例全部使用C#语言编写,但大部分可以毫无问题地转换为VB.NET。在书中会为VB.NET程序员给出提示和建议,对于少数无法直接进行转换的情形也给出了解决方案。 各章内容简介 下面简要介绍各个章节。各章之间是相互衔接的,所以建议您按照顺序阅读以避免在后续章节中出现知识缺漏的问题。 第1章介绍了Windows移动平台及如何使用Visual Studio开发环境创建Windows移动游戏应用程序。还涵盖了一些您可能会遇见的不同的硬件配置,最后介绍了如何在仿真器和硬件设备上安装简单的。NET Compact Framework项目。 第2章探究了用户界面,介绍如何使用窗体和控件、菜单、计时器以及一些特定的主题,如使用摄像头捕获图片。 第3章介绍了第一个游戏开发的概念,介绍了图形设备接口(Graphics Device Interface,GDI)系统。尽管GDI在性能上还相当原始,但仍能用于开发有趣而可玩的游戏,也能够适用于所有的Windows Mobile设备。其创建方式将详细调研。 第4章开始构建一个可重用的游戏引擎,在创建复杂灵活的游戏时,需要用到许多功能,该游戏引擎使这些功能在使用方式上简单化。它还提供了一套简单的机制,用于创建游戏环境中独立的对象和相互关联的对象,还对GDI渲染过程进行了优化,使游戏在运行速度上尽可能快。 第5章介绍如何使游戏中的计时器在所有设备上保持一致,而不论其速度、图形性能或系统其他部分的处理器负载有何不同。动画的速度完全可以预测,不会损失灵活性或流畅度。 第6章涵盖了用户输入这一主题,Windows Mobile设备支持各种输入设备,从触摸屏和键盘到重力感应器,该章会详细介绍如何将这些设备应用于游戏操控中。 第7章介绍声音,揭示了各种游戏音频格式选项,包括简单的MP3音效及背景音乐。您需要了解的各方面的游戏声音知识都可以在该章找到。 第8章将之前讨论过的所有技术都融合到一个名为GemDrops的完整游戏中。该游戏图形颜色丰富、提供能够适用于不同设备的操控方式、自适应屏幕分辨率、包含音效和音乐,整个游戏是一步一步构建完成的,向您展示了如何开发一个实际的游戏。 第9章提供了一系列可重用于任何游戏中的组件。其中包括:对用户设置进行加载和保存,一个信息提示窗口,一个灵活的积分排行榜,以及一个应用程序信息页面。通过这些组件您可以将重心放到游戏本身,而不用再费力开发这些功能。 第10章打开了OpenGL for Embedded Systems(OpenGL ES)图形编程的大门。探究了OpenGL ES的概念和后台运行机制,同GDI进行了对比和对照。在该章中您可以学到如何初始化OpenGL ES环境,以及如何提供颜色丰富的纹理映射图片。 第11章将第10章中介绍的OpenGL ES功能整合到游戏引擎中,提供了一系列可重用的函数用于简化OpenGL ES游戏开发。该章的焦点是对2D图形使用该游戏引擎,探究了OpenGL ES所提供的这些功能是如何超越GDI所提供的相应功能的。 第12章进入到OpenGL ES的3D功能中,解释如何创建3D游戏世界。涉及的主题包括视角、深度缓冲区以及光照,使场景真正能够接近现实。 第13章继续探索OpenGL ES在3D世界中的应用,为游戏引擎引入了许多有用的新功能。这包括导入3D对象及第三方模型包、在游戏世界中移动和处理镜头以及对3D场景应用雾化。 第14章将所有这些代码包装起来用于向外界发布您的游戏,介绍了版本控制、创建安装包、注册码系统、反向工程以及游戏升级方面的信息。