电玩巴士 > PSV > 软件教程 > 正文

PS Suite SDK官方开发帮助文档完整中文翻译

发布时间:2012/5/29 16:33:44 来源:电玩巴士 作者:天楼神威

论坛PSS专区

  编程向导之一:程序框架

  这篇文章通过制作一款简单的2D射击游戏,来向玩家说明游戏应用的基本组成与PS Suite SDK的开发方法。此外,该文档是以以下读者为目标而撰写的。

  对象读者

  ·初次开发游戏应用的人
  ·理解C#语言基础的人

  最小的PS Suite程序

  那么,首先让我们来执行一个最小的PS Suite程序吧。打开PS Suite Studio,在File->Open中打开Sample/Tutorial文件夹。Sample/Tutorial folder默认安装路径如下。
  ·Windows XP系统:"C:/Documents and Settings/All Users/Documents/Pss/"
  ·Windows 7系统:"C:/Users/Public/Documents/Pss/"

  sample/Tutorial/Sample01

  扩展名为sln的文件是解决方案文件,它描述了项目文件的结构。扩展名为csproj的文件是项目文件,它描述了源代码(cs文件)的结构以及生成方法。Sample01文件夹中构建应用程序的内容被称为“项目”。
  ※请注意,“项目文件csproj”与“项目”的含义是不同的。

  解决方案文件和项目文件的结构关系

  解决方案文件是项目的起点,所以在开始开发应用时就要打开该文件。打开解决方案文件后并生成后,按F5键执行。

  恭喜你!不过这个程序只有一个全黑的屏幕,其它什么都没有,请点击窗口右上的×键或在PS Suite Studio中按下Shift+F5键来结束程序。

  PSS应用的基本框架

  那么,先来看看下面的源代码吧。想要看到下面的源代码,需要在左边的解决方案浏览器里双击AppMain.cs文件。

  这里需要注意Main(), Initialize(), SystemEvents.CheckEvents(), Update(), Render(), and SwapBuffers()函数。

  Main()
  ·程序都是从Main()函数开始的。每个应用中必须有一个Main()函数。如果存在2个或更多,生成时会出错。

  Initialize()
  ·Initialize()里的内容主要描述了初始化的过程。在这个程序框架下这个过程只在启动时被执行1次。

  while
  ·接着进入一个while循环。换句话说,SystemEvents.CheckEvents(), Update()和Render()会在里面被重复执行。

  SystemEvents.CheckEvents()
  SystemEvents.CheckEvents()用来检查系统依赖事件。举个例子,可以在这检测到Android设备上一个程序最小化事件等,或者在这检测到在Windows上处理窗口消息等。

  Update()
  Update()中主要描述了委托CPU的计算处理的内容等。

  Render()
  Render()中主要描述了渲染处理以及委托GPU处理的内容等。在Render()中,帧缓冲先被graphics.Clear()清空。

  SwapBuffers()
  通过SwapBuffers()以垂直同步的时间来切换帧缓冲。

  我们把最后的“以垂直同步的时间来切换帧缓冲”部分拿出来做个详细的说明。为了能让大家更直观地了解程序是怎样运作的,我们将程序改成以下的样子,有<-的地方表示追加部分。

  执行该程序之后,画面的背景色会逐渐变白,然后再次切换成黑色。

  graphics.SetClearColor(int r, int g, int b, int a)是通过传入的参数来清除画面的。r=255, g=255, b=255是白色。a被称为阿尔法,是用来表示透明度的。0是完全透明,而255则是完全不透明的意思。也就是说,只要多执行几次colorValue++;就会明白它是怎样处理的了。该数值在PC模拟器中1秒中会更新60次,也就是说约16.6毫秒就会更新一次。

  处理流程

  双缓冲

  处理流程图如下所示。

  显示图像的显存区域被称为帧缓冲。在游戏应用当中,一般都有两个显示画面的图像区域,这种方式被称为双缓冲。渲染流程如下:

  1、首先将后面的区域(back)清除为r=1, g=1, b=1(为了更加容易理解上图,我们将其调整得偏白一些)。
  2、如果渲染结束,就要等待经过16毫秒。
  3、16毫秒经过后,被清除为r=1, g=1, b=1的区域就移动到前方(front)来了。
  4、这次轮到后面的区域被清除为r=2, g=2, b=2了。
  5、如果渲染结束,就要等待经过16毫秒。
  6、16毫秒经过后,被清除为r=2, g=2, b=2的区域就移动到前方(front)来了。

  不断重复该过程,程序就会继续运行下去。之所以要进行切换区域显示,是为了避免在渲染过程当中画面显示不正常。这种配合显示的更新时间被称为“等待垂直同步”。显示的更新时间约为16.6毫秒(注1),所以帧缓冲的切换也要配合这一数字。这一系列的过程都是在SwapBuffers()里执行的。在SwapBuffers()中,每次等待画面切换一轮的这个过程被称为1帧。我们用fps(Frame Per Second: 帧/秒)做单位来表示每秒中更新了多少帧。如果是每秒更新了60次,那就要写成60fps。
  (注1)请注意在某些Android设备中是无法达到60fps的。

  术语定义

  本节中,出现了一些术语,为了避免混淆,让我们重新认识一下。
  显示:是指硬件显示设备。
  屏幕:是指软件的画面。
  帧缓冲:为了显示画面,在显存中开辟的区域。
  本节中,出现的术语也会在今后章节中继续沿用下去,请记好。

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  ... 下一页  >> 

提示:支持键盘“← →”键翻页 阅读全文

相关推荐

评论