设为首页收藏本站

电玩巴士游戏论坛

 找回密码
 注册
查看: 7960|回复: 15

[资料] 【PSS SDK官方教程文档翻译】(3)编程向导之一:程序框架

[复制链接]

27

帖子

10万

猥币

1

巴士票

猥服出巡 Lv.4

Rank: 3Rank: 3Rank: 3

积分
773

发表于 2012-4-29 11:59 | 显示全部楼层 |阅读模式
本帖最后由 PSV果然棒 于 2012-5-19 21:23 编辑

1、程序框架
这篇文章通过制作一款简单的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
1.png
扩展名为sln的文件是解决方案文件,它描述了项目文件的结构。
扩展名为csproj的文件是项目文件,它描述了源代码(cs文件)的结构以及生成方法。
Sample01文件夹中构建应用程序的内容被称为“项目”。
※请注意,“项目文件csproj”与“项目”的含义是不同的。
2.png
解决方案文件和项目文件的结构关系
解决方案文件是项目的起点,所以在开始开发应用时就要打开该文件。
打开解决方案文件后并生成后,按F5键执行。
3.png
恭喜你!不过这个程序只有一个全黑的屏幕,其它什么都没有,请点击窗口右上的×键或在PS Suite Studio中按下Shift+F5键来结束程序。

PSS应用的基本框架
那么,先来看看下面的源代码吧。想要看到下面的源代码,需要在左边的解决方案浏览器里双击AppMain.cs文件。
4.jpg
这里需要注意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()以垂直同步的时间来切换帧缓冲。
我们把最后的“以垂直同步的时间来切换帧缓冲”部分拿出来做个详细的说明。
为了能让大家更直观地了解程序是怎样运作的,我们将程序改成以下的样子,有<-的地方表示追加部分。
5.jpg
执行该程序之后,画面的背景色会逐渐变白,然后再次切换成黑色。
6.png
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毫秒就会更新一次。

处理流程
双缓冲
处理流程图如下所示。
7.png
显示图像的显存区域被称为帧缓冲。
在游戏应用当中,一般都有两个显示画面的图像区域,这种方式被称为双缓冲。
渲染流程如下:
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的。

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

评分

参与人数 5浮云 +9 猥币 +300 收起 理由
飛蓬 + 1 **……我去
k1lrmma6 + 1 药药药!切克闹!
wyarcher + 1 学游戏的飘过~~~~~大一即将大二的表示能看.
砂糖 + 5 + 300 敌羞吾去脱它衣!
Dadai6670 + 1 看到我頭暈..

查看全部评分

1444

帖子

13万

猥币

1

巴士票

猥风八面 Lv.8

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
29436

水元素【普通成就】常客【普通成就】

QQ

发表于 2012-4-29 12:02 | 显示全部楼层
看到頭都炸了...
支持了.

回复

使用道具 举报

392

帖子

214万

猥币

1

巴士票

猥我独尊 Lv.10

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
429201

发表于 2012-4-29 12:10 | 显示全部楼层
拜托都翻译了吧,我的公司也可能要上psv项目,现在就缺少些这种东西。

点评

肯定都会翻译的,到时候欢迎来交流心得传授技术哦。  发表于 2012-4-29 12:14
回复

使用道具 举报

437

帖子

10万

猥币

1

巴士票

猥风八面 Lv.8

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
20381

发表于 2012-4-29 12:32 | 显示全部楼层
能不能在以后的教程贴里加上前面帖子的传送门,实在是懒得翻……
回复

使用道具 举报

4931

帖子

215万

猥币

1

巴士票

猥我独尊 Lv.10

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
432801

发表于 2012-4-29 12:42 | 显示全部楼层
看不懂。。。。。帮顶了。。。。。。。
回复

使用道具 举报

3092

帖子

10万

猥币

1

巴士票

猥风八面 Lv.8

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
24307

水元素【普通成就】Lucky☆Star【稀有成就】小千金的癖好【普通成就】管理团队【光辉事迹】常客【普通成就】成就猎人Rank.D【普通成就】

发表于 2012-4-29 12:44 | 显示全部楼层
支持PSS的一切资料
PSV仙境传说RO区曾经的版主,已隐退,纪念逝去的RO和青春
回复

使用道具 举报

213

帖子

10万

猥币

1

巴士票

猥风八面 Lv.8

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
20981

发表于 2012-4-29 17:59 | 显示全部楼层
学习了,感谢翻译
回复

使用道具 举报

2万

帖子

13万

猥币

1

巴士票

猥震海内 Lv.9

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
38048

我的朋友很多【普通成就】水精灵【稀有成就】浮云爱好者【普通成就】常客【普通成就】水元素【普通成就】

发表于 2012-4-29 18:12 | 显示全部楼层
渣渣就支持了
回复

使用道具 举报

1万

帖子

241万

猥币

1

巴士票

猥我独尊 Lv.10

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
62566

PS4国行首发纪念【稀有成就】XBOX ONE首发纪念【稀有成就】PSVR首发纪念管理团队【光辉事迹】水元素【普通成就】常客【普通成就】

QQ

发表于 2012-4-29 18:32 | 显示全部楼层
给C#跪了 、、、、、、很少用C#勉勉强强能看明白点
祝FFC一路走好。。。。祝天下的喷子全部死绝,祝某公司业绩“步步高升”
回复

使用道具 举报

178

帖子

10万

猥币

1

巴士票

猥风八面 Lv.8

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
21315
QQ

发表于 2012-5-1 12:13 | 显示全部楼层
表示用C++多过C#。。。还是看别人吧。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|电玩巴士游戏论坛 ( 渝ICP备14007792号-12 )  

GMT+8, 2018-1-18 15:54 , Processed in 0.295593 second(s), 15 queries , MemCache On.

Powered by Discuz!

 

快速回复 返回顶部 返回列表