当前位置:游戏 > 程序开发

分享在PC上制作iOS游戏的经验(上)

类型:非原创 用户名:tina 发布时间:2013年05月09日

免责声明:火星网文章来源于作者原创或整理自互联网,仅为提供更多信息,不代表火星时代同意其观点或描述,版权归原作者所有,如需转载,请联系原作者并注明出处,如涉及作品内容、版权或其他问题,请及时与我们联系,我们将在第一时间予以更改或删除,感谢您的理解和包容!

即时游戏

我认识的许多商业开发者都会尽量避免编写多线程方案。为什么?因为各行其事的两条独立线程之间会发生冲突,这是测试者的噩梦。一旦应用崩溃,就可能是同时发生了多种排列错误,重制错误已经很困难了,更别说永远地修复漏洞。


plant lost

说到游戏,它们已经是即时的了,因为Update()循环每隔毫秒就会执行一次。在Windows Forms开发中,没有所谓的“阻塞”调用的概念。这就是游戏,不是我现在要说的。

我说的是即时游戏和回合制游戏。回合制游戏要等待玩家输入,然后做出相应的回应;而等待用户互动时,屏幕上可能会显示一些东西,如洪亮的特效等,但游戏的实际状态并未改变。在即时系统中,游戏状态一直在变化,无视玩家的交互作用。

对于我们的游戏处女作,我们肯定不会选择即时游戏。

在《Catch the Monkey》中,玩家要费很多功夫让所有东西在不断变化的环境下发挥作用。测试场景的数量可能20倍于回合制游戏。复制场景是极其困难的,甚至当程序性特殊单位的测试发生时。在构建阶段后期的某一时刻,我不知道怎么让它停止崩溃。幸运的是,Marmalade内置了一些非常了不起的内存监视工具,可以找到所有问题(个人认为)。

这个教训太深刻了。现在我们正在制作另一款回合制游戏。

对象层级结构

显然,面向对象编程(OOP)能够构建小的、聚焦的、封闭的对象,然后在此基础上达到更高层次。我的目标是制作一个知道如何实体化、移动和渲染自身的对象层级。

在我的职业生涯中,有一段时间我是不做模型的。当我知道Rational Rose、UML和建模时,我就一头扎进建模中去了。我总是自己模拟代码,甚至不对外公开的个人项目也是如果,因为我发现这是在代码建模以前思考问题的最好办法。Rational Rose(或任何合适的建模工具)可以帮助你一边思考一边设计。我使用Rational Rose已经好几年了,但当我准备做自己的项目时,我发现自己承担不起2000美元的版权费。幸好有开源社区提供的StarUML。StarUML是一个强大的、免费的对象建模工具。其实它与Rational Rose差不多(至少我在2003年使用的最新版本是这样的)。


StarUML

看上图类设计图,注意两个基本对象:GameObject和UIObject。二者都继承Graphic的属性。Graphic包括了所有Marmalade 2D API交互作用,所以无论是猴子、故事板还是文本对象都必须渲染。

GameObject就是在GameScene(你玩游戏的关卡)中使用的对象。它管理自己的状态、子帧、深度计算、缩放(根据深度)、点击操作和碰撞侦测。所有游戏对象都继承GameObject。UIObject与GameObject类似,但更简单,而且是用于游戏场景的,如文本、按钮和商店或工具选择面板上的图像。