Showing posts with label Game and Development. Show all posts
Showing posts with label Game and Development. Show all posts

July 9, 2010

ContainerView的HitTest

有时候想把Flash里的常用的用空Sprite来管理内容层级的方法用在iOS里,用一个空的UIView来管理UIView Hierarchy, 但是不希望这个空白的UIView吃掉下层的Touch Event, 这时候可以Override UIView的hitTest:withEvent:来解决.


(Link)

但是iOS毕竟不比Flash,大多数的View还是Opaque的为妙,基本上不鼓励透明的Subview Overlap,而且也没有自动的Per-pixel检测的HitTest(也没必要),估计这个方法也只能用在Subview数量很少的Case里。

June 21, 2010

Xcode 4

Down了几个WWDC10的iTunes U Session下来看…果然Xcode4改动巨大…弄得Xcode3都懒得打开了…

主要内容在Session 300 - Developer Tools State of the Union里有很详细的介绍,可以在这里down到,不过需要一个Apple ID.

新的All-in-One interface

原来Xcode很不爽的一点就是无数的Floating Panel,3.2里把Search&Replace和Compile Error放到Edit Panel的上面,遮盖的问题有所改善,但是编辑空间就少了很多…这次的UI就彻底解决了这个问题,左边的Tree View加上了小Tab,Search&Replace,Navigation,Compile Issues都放在这里,可以很方便地导航。右边则是Dynamic Help(没啥用),IB里的Properties和Object Library,还有Snippets.上面的BreadCrumb也在所有的编辑窗口里都功能一致.

Git/SVN支持以及历史版本Diff功能

历史文件的Diff功能非常贴心的做成了一个Time Machine一样的界面,可以在中间的时间条上拖动来对比。右边可以显示每行代码的Sumbit Log…左边导航条的Filter功能可以方便的一键Filter出所有没有Submit的文件.

LLVM带来的Code Completion和Fix it

Fix it其实类似代码的Spell Check,会提示你是不是用错了“=”号,是不是变量名拼错,是不是漏了分号等等…和Compile Error不一样,它是你边打代码边分析的,而且还有快捷键来自动改掉上一个发现的错误…号称和Static Analysis一样Powered by LLVM,所以非常智能

其他的改进还有:

  • Interface Builder被整合到Xcode当中…而且整合Class代码和IBOutlet变得简单很多,选择IB里的控件会自动在右边窗口显示相关的代码
  • 左右窗口同时显示.h和.m,或者.m和super class
  • LLDB和新的Debug UI
  • 某几只新的Instrument以及某些Instrument可以在iPhone上跑了,更方便的Profile

其他很多细节都很棒,例如Search&Replace里的小Slider,还有Debug的时候让Simulator显示在Xcode前面等等,接下来就是等啥时候放出了…

January 16, 2010

绕过iPhone SDK的Code Signing实机测试

是给Jailbreak众用的, 在花99刀之前可以在自己的机器上跑跑看写好的程序.

步骤其实很简单:

  1. 在Terminal里打开SDK的目录

    open /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
    
    然后可以看到下列的SDK

  2. 打开其中你所需要的一个, 修改里面的SDKSettings.plist为

    <key>DefaultProperties</key>
     <dict>
      <key>AD_HOC_CODE_SIGNING_ALLOWED</key>
      <string>NO</string>
      <key>CODE_SIGNING_REQUIRED</key>
      <string>NO</string>
      <key>CODE_SIGN_ENTITLEMENTS</key>
      <string></string>
      <key>DEAD_CODE_STRIPPING</key>
      <string>YES</string>
      <key>ENTITLEMENTS_REQUIRED</key>
      <string>NO</string>
    </dict>
    ...

    注意修改操作需要root权限,建议试用Smultron之类的文本编辑软件

  3. 最后在Project->Edit Project Settings里把Code Signing关掉
然后便可以Command + R直接跑了

November 30, 2009

难得夸奖下ubi的游戏

当然说的是Assassin's Creed 2

首先宣传下行业形势. 这两年Console业的趋势貌似就是大作越做越大, 连Marketing+Production, 例如CoD, GTA这种投入上亿, 销售额几亿的. 然而群众的消费能力却没有水涨船高, 于是第二集团就活的很苦. 通常年景再差, 一般Average Rating 8+的主流游戏卖个一两百万还是没有问题的, 但是到了这两年能蹭到100w就算万事大吉了, 估计要到第二年才能Break Even, 和能卖5m-10m的一线大作相比真是一个天上一个地下. 于是今年的游戏就一个赛一个的往大作方向膨胀, 或者就干脆延期避风头, 看是不是在来年多蹭点分... (当然与此相对的就是indie游戏的一只又一只小强了, 不过这是后话...)

ubi今年的赌注就押在Assassin's Creed 2上了. 不过说来Assassin 1真的是有史以来根基最好, 然而Content最拖后腿的游戏了...主角动画的无数Seamless transition + 不错的密集Crowd实现 + 还行的Sandbox + 帅气的背景设定, 硬是被无数一模一样的set piece任务给毁了. 当年赶工出货恐怕是这项目4年的周期已经快要突破总部老大的底限, 没想到居然一炮走红, 就算是个完成度80%的类Tech Demo也卖了6m套, 这次AC2终于可以把所有精力都放在Content上了

改进的第一点很简单, 看过了GTA的同学都明白, 这年头的游戏一半靠Gameplay Variety, 另一半靠Story Telling. Gameplay是那玄之又玄, 有的没的东西, 但是Story Telling做起来就简单多了, 堆人力嘛. 于是就硬是帮主线剧情每个任务配上了Intro/Outro, 总计大概四五个小时的RTC时间, 说实话, 效果的确立竿见影.

第二点也是偷学自GTA, 你要做的Action尽管还是原来那一套, 但是任务的Context则要比以前丰富多彩的多, 例如不是让你去收集某种道具A, 叫你去帮盗贼工会踩点; 又例如不是让你到A点到B点到C点, 叫你去为下一次暗杀在教堂附近踩点. 然后这次除了Basic Gameplay搞重用和Ramp Up之外, 终于给我们做了几段帅气的Unique Gameplay, 例如马车和滑翔翼, 只用一次群众才会印象深刻嘛.

第三点就是时代背景了(1450-1500). 当然初代十字军东征的背景其实也不错, 但是由于故事线过于简单的缘故, 最后连除了主角连印象深刻的名字也没记下一个...这次的剧本对于政治戏+亦真亦假历史背景的使用终于到了登峰造极的地步. 除了主角家族以外, 大多数的登场人物都在历史当中有迹可循, 而且为了满足群众这方面的需求, 游戏还特地设计了Codex和The Truth系列互动谜题, 把阴谋论的Scope扩大化, 把几千年历史可能可以用来搞阴谋论的人物事件说了个遍.

当然游戏的技术优势在过了两年后一样还在, 至少在这个世代在Free-Running这个Catagory估计不会有这个游戏的敌手了.

有史以来最大Scope的代价就是3个Studio一起才好不容易完成了这个游戏的Content制作, 据说顶峰时期有近600人挂在这个项目的名号下...就算如此, 除了Firenzi和Venice之外的几个城市几乎没有啥主线剧情, 好多人物也是匆匆登了个场之后就再也没有出现过. 估计也是到后来实在没法按时做完, 只能砍掉一点了...就算如此这游戏还是有近20小时的游戏时间, 比一般ubi游戏的长度长了一半还多...

最后发一点牢骚. 感觉现在Console业实在是Risk越来越大, 像EA这样几十个项目同时开工, 凑到今年这样不大好的年份也只能吃瘪, 先前的资本输得底裤也没了. 而Activision或者2K这样的如果一年没有个千万级的Blockbuster估计剩下项目也要歇火, 归根到底还是渠道和受众实在太单一. 特立独行的游戏群众看不到也买不到, 大多数项目的精力都花在翻版去年或者今年的Marketing Trend上, 只是加上不同的味精而已, 死于同质化竞争也是活该吧.

May 9, 2009

工作时间与工作效率

据在法国工作的群众说法国人一年大多数的星期都只有4天工作日...外加之5个星期的年假日和无限制的全薪病假...貌似工作日要比国人少很多...可能这就是传说中的社会主义社会吧...

法国众说他们工作时间短但是工作效率高...因为法国人做事有条理, 有秩序, 所以4天可以干其他国家5天+的事情...这点虽然不敢苟同, 但是又一个命题确是确实存在的, 工作时间和工作成果真得成正比么? 或者说是不是工作时长越短, 其实工作效率更高, 生活质量也更高, 反过来能够做出更多的成果呢?

很容易理解的一点是OT和工作效率是成反比的... 其实在我大多数的经验中, 如果一天OT3小时的话其实大多数情况下事都是可以在8小时内解决的... 但是还是要留下来的情况有

  1. 制度规定. 也就是说非个人完全自愿
  2. 工作上的依赖性. 也就是说某日收尾的活要等待别人的Feature或者Verification
  3. 流程的需要. 也就是说Routine的工作内容要占用大量的工作时间, 以至于只有OT才有可能解决

通常情况下, 很明显的一点就是正常工作时间外的工作效率和通常的工作效率相比有级数的差别...例如原来10分钟能完成的事情现在要画上1个小时这个样子...这还不计算因为工作时间过长犯的错误造成的延误...

更加隐形也更加危险的一点是单位工作时间价值的贬值... 在上海的出租车司机要拼死拼活开12个小时才能勉强赚个三四千块钱一个月, 而且要不停的奔波劳顿找生意, 基本上是个强体力活; 而在大多数的发达国家可能一个星期出租车司机就能赚到生活所需的钱, 而且大多数时候以电话预约为主, 没生意的时候是切切实实的休息...

生活质量的下降当然也会造成工作态度的差别...长次以往更加悲惨的一点就是市场会认为出租车司机单位时间的工作还不值现在的钱, 因为选择很多, 态度又很差...所以出租车司机只能工作更长的时间才能够赚到同样的钱, 或者由于通货膨胀的缘故, 维持现有的生活水准...

当然这里的出租车司机只是一个生活切面的写照而已...所有行业都可能如此...洋人有年假有午休, 我们则有24小时便利店来创造就业机会...很多时候我也会想生活所谓的便利到底给我们带来了什么...

不过长久来看...所有的重复性劳动工作都会被机器所代替, 只有真正创造价值的东西才会保留下来...其实现实情况已经如此

Did you know 3.0里说:
The top 10 in-demand jobs in 2010...
...did not exist in 2004

尽管短期内看可能事情并不尽如人意, 但是长远来看, 每个人都能不受束缚, 做有意义的事情才是世界真正发展的方向...

March 18, 2009

Big Bang Mini


其实这个GS 9.0的DS游戏应该不算一个Sleeper Hit...但是每年的Blockbuster占据了大半的档期, 大半的头条和大半的广告, 像这只游戏一样的真正的好东西真的在我们面前悄悄溜走了不少.

如果要为这只游戏的悲惨命运找个理由的话, 首先可能是它该死的, 一脸Budget Game相的民字了. Big Bang本身就宅到爆, 不管它是不是想让人联想到更宅的Big Bang Theory. Mini这个添头更是不知所谓...其次就是该死的图像Busted的香港关作为第一关...充分暴露了DS游戏的本质.

但是, 这真的是只好游戏, 甚至很难为它归类. 不确切的说, 这是只弹幕Shooter, with a twist.

基本的Gameplay很简单, 你控制一个下屏的Sprite, 你的任务是消灭上屏的怪, 然后接住怪死后掉下来的小星星. 用触摸笔在屏幕任意位置向上屏滑动, 就会发出一枚子弹. 而那一点Twist就是如果你的子弹没有打中敌人的话, 击中版边就会形成礼花状弹幕, 然后你就要吞下自己种下的苦果了..

当然如果就这点Gameplay让你反反复复搞90关的话, 相信所有人都会抓狂, 于是设计者就给你每个World搞点新鲜玩意.

例如我很爱的像素风的这关的子弹反弹功能. 由于很多怪的移动速度很快, 又加之有云朵阻挡我的子弹, 提前预判变得非常困难...于是这个功能就变得非常顺手了...
有时Twist则是在敌人的Behavior上, 例如在Safari这关中的敌人被消灭后会射出一道DoT的阳光来, 你要及时躲开才行, 但是假设你用3连击火球一次消灭了多个敌人的话, 很多道阳光可是很难躲开噢...

除此之外, 还有风向, 追踪弹, 时间暂停, 旋律Combo, 子弹反弹, 偷敌人武器等若干Player Ability和相应的敌人设置的9大世界...这也是这游戏的精华所在...

每个世界有9个普通关, 通常都会用足教给你的技能. 每关结束后, 会有个Optional的收集星星的小游戏...


每关的Bonus小游戏也都有不同的Gameplay噢


每个世界的最后一关照例是一场弹幕Bossfight, Boss会多段变身...

Design上比较有争议的一点就是不管是什么关卡, 玩家都只有一条命, 死了从开始Restart...尽管每关的长度基本不到5分钟, 但是后面弹幕的难度还是有点令人发指...但是我觉得Frustration过了之后的爽快感还是不错的...-.-

( 最后插播一句不相干的新闻. 群众们期待已久的GTA: Chinatown Wars已经出了. Liberty City全程Dynamic Loading外加24小时Day/Night Cycle以及各种天气变化使得这游戏在技术上无懈可击. 而Gameplay上自然秉承了GTA的优良传统... Review 9.5+ 目指 )

January 5, 2009

Personal Favorites of 2008

Favorite Gadget
iPhone 8G (1st gen)

Favorite WebApp
Google Reader

Favorite Movie
Be Kind Rewind

Favorite Game
Fallout 3

Favorite Album
We Sing, We Dance, We Steal Things - Jason Mraz

December 21, 2008

啥是Content?

通关游戏时间长短?
可探索的世界范围大小?
可以做的不同事情的多少?
还是Production Value抑或Cinematic质量的高低?

貌似育碧流游戏最近在这个问题上碰了个头青脸肿...

November 26, 2008

Retro Futuristic

“他们居然做到了。”

在Capital Wasteland游荡50小时,找齐了30瓶NukaCola Quantum之后,我意犹未尽的完成了最后一个任务。

我觉得此刻最自豪的应该还是Bethesda的那群低调的疯子了。他们又一次证明了自己是现在这个世代最好的RPG制作团队。
  • 自信

    出于对自己系统设计的自信,他们设计了我有史以来见过的最简单的战斗系统,让你们看一万遍不能跳过的,过分暴力到甚至有点可笑的爆头动画。

    出于自己对Quest设计的自信,游戏里大把的剧情没有任务信息,没有Log记录,随便让你错过,只是只要你稍微投入进去,总有几个会让你碰到。

    他们设计了近200个地点,大多数地方连指向性的任务都不提供,只是白白的留给你“探索”。

    他们说他们是抱着把Fallout1/2看成自己的作品的想法来做Fallout 3的,所以我们才看到了这么一个在细节上原汁原味的世界,从空旷,无力的感觉上,这个作品无懈可击。

  • 瑕疵

    当然的,神作都是有着各种各样的不如人意之处的。

    例如我快到最后才接到收集30瓶NukaCola Quantum的任务,之前捡到的十几瓶都被我卖掉了。

    例如开始的第一个小镇Megaton,地形对于刚刚从Vault中苏醒的群众来说有点过于复杂...作为exposition level不是很合适。

    例如简陋的Local Map。

    例如DC市区因为内存不够,大量只能从地铁Tunnel才能到达的location。

    例如略显无力的结局。

    不过这些都不重要,关键是他们做到了。
P.S.

最棒的Fallout3时刻:

在地图西北角打开一扇门,背后是一堵光秃秃的墙,用红色墨水写着F**k You.

D.C. Map:


查看大图

October 31, 2008

Fable 2


这次彼得大叔真的让我吃了一大惊...晚上把光盘放进360光驱以后,居然一口气打到了12点多...仿佛在最近一年里也很少会有游戏能粘人到这种程度的...

其实看到Credits已经是好几天前的事情了...不过一直没有时间好好想想为什么这个游戏会变成现在这样...要挑这个东西的毛病还是很简单:主线好短,大概只有10小时不到的时间;还是一如既往的Feature堆砌,可以做的事情很多,但大半没什么深度...但是当你发现你在游戏里大搞房地产和商品买卖,努力保持自己角色的体型和身材,担心着自己的老公和小三的关系的时候,这个游戏肯定胜了...
  • Life Simulator

    其实Fable是个Life Simulator,从某种程度来说,它和The Sims很像。游戏花了很大的精力在塑造一个栩栩如生的人类社会上。你可以工作,你可以出名,你可以娶妻生子,当然周遭的所有人也会因你的人品而对你有不同的反应...从这方面来说,它甚至比上一个成功的这类游戏:老滚4还要成功。(是不是比Fallout 3还要成功就要看下周了...)

    每天早上,小贩定时上班,在买卖物品积攒了点钱财之后,你甚至还可以把商铺买下,坐收租金...甚至在你关机的时候你的勤劳的员工还在为你积攒着财富...(为此我似乎每天晚上都要多花半个小时多赚点钱好供个房子...上一个类似的游戏貌似是The World Ends with You ,害得我每天都开机打一下...利用人赚小便宜的心理真是无敌...)中午,街上熙熙攘攘,你可以让吟游诗人为你的英雄伟绩赋歌一曲,周围的群众会为你鼓掌。晚上则是流莺出没的时间,同时那些对你有所企图的村民也蠢蠢欲动...

    整个系统充满各种Icon的卡通化描述方式显然是沿袭于Sims系列,你的每个行为的后果也都清清楚楚的用数字方式写在屏幕上,但是游戏没有因此而在细节处理上偷工减料,人们的Behavior还是非常丰富翔实,充满真实感。
  • 善恶系统

    善恶系统总是充满争议的。广泛被群众接受的论调就是通过一个简单的善恶值(Karma)来定义一个人的好坏非常可笑,而且以此为主打的游戏通常又通常充斥着非常无稽幼稚的二择任务,不管是扮演好人还是坏人,你总是觉得没有代入感。Fable的解决方式很聪明,但是也不是每个人都学的来的,他们的做法是:

    1. 每件事情几乎都有其独特的consequence,让你对任务之外事情的发展充满好奇
    2. 两难的抉择,而不是黑或者是白这么简单

    1的例子例如一个农场强盗的任务,你帮一个农场主找杀他全家的强盗头子报仇,最后你可以选择是杀了强盗头子,或者是把强盗头子交给农场主让他亲自复仇;最后我选择了后者。农场主犹豫了一下还是把强盗送到了镇上法办。亮点是10年后我从小岛回来的时候,农场因为当年农场主理智的行为发展的异常壮大,连人带牲口已经几十口了...游戏中的很多区域都有因为你的行为而使得区域发生极大变化的设定...当然你也可以说,最多只是把游戏世界做两套么,一套光明一套黑暗...是啊,只是工作量 x 2不到而已嘛...因为说到底,任务关联性的问题还是一个工作量取舍的问题...大多数群众只会打一遍都不到,这就意味着你50%+的Content那个玩家不会看到...所以不是每个开发商都会尝试这样做的

    2的例子也数不胜数,例如在高塔中的任务,你可以选择服从,也没有任何惩罚,而选择不服从,则每次抗辩都会扣除你的经验值...在这个时候两种选择都很无奈,也都很有诱惑力;又例如后期的亡灵山洞的任务,你可以选择让你自己年老10岁或者是让你身边误闯禁地的某不知名少女年老十岁,如果在此之前你非常重视你的外表的话,那在做这个选择的时候真的会好好犹豫一下了...

  • 无处不在的Accessibility

    首当其冲的当然是有史以来做得最棒的狗了...不像大多数的sidekick一样,他的功能恰到好处,指路,探宝,顺便在Cinematic里当当配角...可能他是我在最后3选1时候选择放弃几千条生命的原因之一...

    然后是那根具有争议的金线,把你任务的方向明明白白的写在你的面前...某些传统玩家可能觉得他极大的削弱了探索这部分的代入感...但是我觉得首先找路这个Gameplay就很愚蠢,其次狗这个Element很大程度上弥补了探索的问题...

    一样有争议的还有他的一键式战斗系统,X是肉搏,Y是远程,B是魔法...特别是魔法系统的设置和大多数游戏的设定很不一样,如果你想要在战斗中快速切换魔法的话,这个系统显得非常麻烦...但是Design的用意其实是让你根据你的战术来选择1-5级的魔法各一个,例如我有一个5级的闪电术,4级的时间减缓,3级的剑刃,开打之后其实是长按B键,蓄出时间减缓,然后再长按B键,乘敌人行动迟缓的时候放闪电术,最后再用剑刃收尾。其实整个系统简洁而无需任何记忆。区域魔法如果用手柄指向目标就变成了单体伤害魔法,这个设计也非常的Intuitive。

    任务系统会把你当前可做的任务全部列举出来,甚至你不需要事先去找那个带着金色感叹号的家伙。然后你选择了你想要的任务以后游戏甚至还会把你自动Teleport到离任务点最近的路点,只有那些你从来没有去过的地点需要你去探索一下...
当然这游戏还有很多其他的优点,例如大量大量的Voice-over,无数的收集要素让你总有事可做,以及大量的内嵌不算无聊的小游戏等等,但是最能打动人的还是诚意这两个字,特别是当狮子头已经Flop了这么多次了之后,居然还是能够耐心的做完这个东西,而且不带赶工的痕迹...同时彼得大叔也第一次应允了他大多数的承诺...

October 4, 2008

iPhone游戏画面的标杆出现了...Kroll

一如既往的来自于某个独立工作室...



菜单就很华丽...有3D翻页特效,而且这个书本还可以拖拽一下哦~




第三关的游戏画面,有点惊艳的感觉,还有点即时的光影哦...秒杀了NDS...

可惜这个游戏完成度和打击感虽说不错,但是Gameplay有点点无聊,基本上只在一个横轴上选择打左边或者右边...而且也略有点Frustrating,流程也很短...除去Retry的时间不到一小时吧...不过应该说的确在图像上已经是一个标杆了...

$7.99 from AppStore

September 30, 2008

一只n00b的两个月ActionScript开发经验 (3)

续上文
  • 用Flex来做Profiling

    在AS2的时代有一只叫ASProf的插件来分析AS代码的效率...到了AS3时代,Adobe的Flex 自带Profile SWF的工具...而且还是Run-time的哦...(Adobe 官方的介绍 )

    你要做的就是如下几步

    1. 在Flash中的SWF的Publish Setting里把Permit Debugging勾上
    2. Publish一只SWF
    3. 把Flex切换到Profiler模式
    4. 选择Profile External SWF...
    5. 选到那只SWF,然后Run之,你马上就会看到的是即时的Memory Overhead
    6. 对偶来说Memory不是很关键...然后点Reset Performance Data,让他跑一会,再点Capture Performance Snapshot, 看到的就是在这段时间内,你的所有Function call的次数和time cost...非常有用

    很后悔Flex的这个功能直到很后面才发现...之前都一直是用trace(getTimer());的方法来做的...效率极其低下...
  • 用SafelyRemove来代替removeChild

    刚开始总是碰到的一个问题就是DisplayList的维护经常出岔子...因为removeChild的指令几乎没有容错度,如果那个obj不存在也会报错,如果那个obj不是child也会报错...如果有耐心的同学就应该修掉每一个bug...如果像偶这样没有耐心的就可以用下面这个safelyRemove来忽略一切细节...

    ActionScript 3语言: safelyRemove
    public function safelyRemove(obj, objContainer = "this"){
          if (objContainer == "this")
               var container = this;
          else
               container = objContainer;
          if (obj!=null)
               if (container.contains(obj))
                     container.removeChild(obj);
    }

  • DrawOrder的处理

    和寻路一样...DrawOrder总是很麻烦的...当场景上有几百个object的时候,让他们的遮罩关系时刻保持正确总是一件很麻烦的事情...

    下面是偶的做法:

    • 能用DisplayList的不同层次来解决的就用DisplayList来解决。在GameVisual中建几个不同的空Sprite Object来放那些显然不是同一个Layer的东西,例如UI,GPE,Background,不管怎样,他们之间的遮盖关系总是一定的...

    • 排序的算法:每个obj都有一个用来排序的index值,每次某个obj移动的时候就更新他的index,然后再在调整DrawOrder的时候来对index值排序,然后把obj set到相应的childIndex上

    • 最开始很容易想到的就是每一帧对每一个object做DrawOrder的排序...不过后来就会发现效率跟不上,因为对600个物体做一次排序,然后再做setChildIndex就要大概 4ms 的时间...

      改进的算法是总是维护排好序的{obj,index}数组,每次有一个obj的index值发生改变的时候先确认他是不是需要重新排序,如果需要则把它从数组中删掉,然后找到他的新的位置...然后把他更新到相应的childIndex...
本系列到此完结...之前的内容:

September 18, 2008

从Steam说起...

下午和冲哥聊了下Google收购Valve的那只Rumor...(当然Valve已经矢口否认了...)

PC游戏...特别是PC单机游戏的确已经病入膏肓了...PC游戏商的解释往往有以下几点:
  1. 盗版
  2. Console游戏的挤压
  3. 硬件更新太快,市面上的配置参差不齐...
其实最大的问题还是一从PC游戏诞生开始就百年不变的渠道问题...要打一个PC游戏...作为正版用户...你需要
  1. 在周二到商店排队
  2. 拿回家花半小时安装
  3. 对付各种配置问题带来的麻烦(这点视厂商而定...但大多数厂商做的不好)
  4. 如果碰到像EA这样的DRM爱好者,还会有更多的麻烦...
  5. 你终于进游戏了...但是Patch/设置...还会有更多的东西让你头疼
作为盗版用户甚至可能会有更棒的用户体验...
  • 你可以直接到BT站搜索下载,用Daemon模拟
  • Crack版的游戏会绕过大多数的DRM,让你更快地玩上...
回到主题...群众并不是不想消费PC游戏,而是消费的过程实在是过于痛苦,以至于和游戏本身的质量相比并不相称...

解决方案之一是iTunes Store(App Store)类似的自由市场模式...
  • 对于用户来说,他需要
    • 一站式的浏览/购买/使用体验
    • 无缝的升级
    • 大量的软件源
  • 而对于厂商来说,他需要
    • 一个“中立“的平台 (这点上和Apple的iTunes store不大一样)
    • 低廉的分销费用
    • 更大的客户群(尤其对于小开发商甚至个人作品更有利)
当然其实在现在这样PC游戏以Windows平台占绝对比重的市场,微软本身应该会想去做这件事情...可能这个东西也在他的Games for Windows的远景规划之列...只是360的业务以及Vista的拓展不力拖了后腿...

Valve有这个野心,但是Half-life 系列是很棒的游戏...但Valve本身并不是一个举足轻重的平台开发商...尽管Steam本身经营的非常不错,但除了少部分厂商之外,大多数的出版商还是仅仅把它用来作为老游戏的潜力挖掘地...

而Google则非常适合来做这件事情
  • 他是个坚定的平台商
  • 对于游戏业来说,他是中立的...(不过关键问题在于如何分赃)
  • 他总能在一潭死水的市场找到新的盈利模式...(不仅仅是in-game ads,可以想象一下YouTube for Games)
  • (我总感觉游戏会和其他应用软件一样,慢慢走到云端去,可以想象一下Flash游戏或者网页游戏的复杂度会突破一个界限,让群众觉得表现力已经足够,甚至可以和Console相提并论..."安装"可能都是一个已经逝去的名词...)
当然这些都只是YY而已啦... 不过现在我要说在这方面...国人远远的走在了洋人的前头...网络游戏一般都有比较无缝的试玩体验过程,而且在设计上也都注重满足人性,碰到问题也都能及时更新...不过这是后话了...

September 17, 2008

Force Unleashed for iPhone

其实是个挺有诚意的游戏...原因如下...

  • 手绘背景+3D人物很有Art Feeling...也掩饰了技术力的不足
  • 尽管被群众们斥为电子小说,但还算Original的战斗系统
  • 极高的Tolerance让群众玩的压力全无
  • 横屏/竖屏转换支持...相信我,对于一个游戏来说这不仅仅是call一个transition...
  • 不错的Control Scheme...笔笔划划迅速上手...
不过要期待Console版本的质量或者Gameplay,那就是苛求了...

September 12, 2008

一只n00b的两个月ActionScript开发经验 (2)

续上文
  • 矢量还是Bitmap
    • Flash处理矢量自然比较方便,可以比较容易的做关键帧动画效果...不过在有多层遮罩计算的情况下,复杂矢量图形的遮罩会大大拖慢Render的速度。在Flash IDE的stage上的object可以勾上cacheAsBitmap的勾,这样只要那个object不做scale/rotate,Flash Player就会先生成一个bitmap的cache来提高效率...在我碰到的一个例子里,300个物体大概可以提高50%的帧数。不过对于动态加到Scene上的Library Class,就要手动设这个flag,用法是 DisplayObject.cacheAsBitMap = true; 
      而在不需要关键帧动画的情况下...不带alpha的bitmap+mask可能是最快的...不过后来偷懒,一直没有把png的alpha层改成mask...
    •  动画
      • 尽量少用关键帧动画...因为用Flash IDE做的动画修改起来往往比较麻烦...特别是如果要重用到另外的Symbol上的话...解决方法是把动画导出成XML,用Copy Motion as ActionScript 3.0... 而对于简单的不需人工干预的移动旋转Fade in/Out特效,用enterFrame来写费时费力...其实可以用fl.transitions.Tween类一次性解决,其实就是对于MovieClip的某一个属性做渐变...轻松易用...
      • FPS
        • Fps一定要在项目开始就定下来...否则日后要调整所有Timeline相关动画的帧率...非常麻烦...如果交互性很强,例如RTS/Action Game的话,20是比较合适的...如果是Puzzle或者Adventure Game的话,甚至12也足够了...只要帧率稳定,玩家完全没有感觉...
        • TimeLine Code
        • 尽量不要用Timeline代码...因为Debug起来非常麻烦...我唯一用到的可能就是一些stop();啊之类的命令...不过其实也是多余的...因为如果call的时候就是gotoAndStop();的话根本就没有问题
        待续...

        September 9, 2008

        一只n00b的两个月ActionScript开发经验 (1)

        ActionScript是Flash的Script语言,以下内容基于ActionScript3,即Flash CS3 +
        内容基本上都是两个月过程中碰到过的林林总总的问题...如果群众们也有兴趣做做Flash小游戏的话,可能会有帮助。
        • Singleton Mode
          即单态模式,通常似乎都是Design Pattern的第一章的内容...其实就是对于那些在整个游戏进程中只有一个实例的Class,用单态模式会相当程度的简化各个组件间的互相访问...偶的Prototype里大多数的Class都是Singleton Mode
        ActionScript 3语言: Singleton Mode
        package {
        public class Singleton{

              public static var instance:Singleton;

              public function Singleton(){
              }

              public static function getInstance():Singleton{
                    if (instance == null){
                          instance = new Singleton();
                          return instance;
                    }
                    else
                          return instance;
              }        
        }
        }
        • 尽量不要用Timer类
          很多UI或者逻辑的Behavior,最直观的想法就是用Time Event来实现...但是首先Timer多了很难Manage,因为如果要有Pause Game或者有新的状态打断Timer的话就需要很多代码来维护每一个Timer...还有一个问题就是Flash的Timer不是一个精确的Timer,他的每次CallBack其实是Timer的时间+其他Function累积的时间...在极端情况下甚至一个100ms * 50次的Timer会需要10秒钟才能爬完...因此...正确的做法是只使用一个update Timer,其他的都用累积dT时间来处理...
        • 带FPS补偿的Global Update做法...
          其实就是调整每次update的Timer...会使各种逻辑上的update顺畅很多...
        ActionScript 3语言: Global Update Loop
        private function init(){
               updateTimer = new Timer(gameLogic.UPDATE_INTERVAL,1);   //inifinite Loop
               updateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, update);
               lastUpdatedTime = getTimer();             
          }

          private function update(e:TimerEvent){
               //Update Logic
               //Blablabla
             
               //New Timer
               var currentTime:Number = getTimer();
               var newTimeInterval = gameLogic.UPDATE_INTERVAL - (currentTime - lastUpdatedTime - gameLogic.UPDATE_INTERVAL);
               lastUpdatedTime = currentTime;
               if (newTimeInterval <= 0)
                     newTimeInterval = 5;
               updateTimer = new Timer(newTimeInterval,1);    //inifinite Loop
               updateTimer.start();
               updateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, update);
        }
        待续...

        July 24, 2008

        Accelerometer 的准确性问题

        弄了个iPhone猴子球, 但是玩得郁闷无比...


        本来这四轴的控制就已经令人郁闷了; 猴子球里把Turn和Camera绑定的效果做的又
        尤其生硬, 在很小的范围内只Turn不转Camera, 过了阈值就狂转Camera. 才第七关
        我就死了20条命才过去, 真不知道后面的一百多关会长成什么样...


        一个改进的方法是增加场景的自动Camera辅助,不过可能会影响后面关卡的挑战
        性...

        可预见的是iPhone上会有一大把纯用四轴的游戏, 通过算法的过滤通常一
        个轴向的输入没什么问题, 不过第二个轴向还是应该采用超大量的辅助或者把输入
        频率做得超级低才行..

        Sent from my iPhone

        June 29, 2008

        Diablo III

        快10年了...貌似暴雪现在有10年出续作的习惯了... 还是一如既往的怀念红瓶蓝瓶,单纯的砍杀和技能树... 其实过了10年,游戏也没有多大的变化...

        June 25, 2008

        一只Flash Actionscript的bug...

        有的时候Flash作为一只IDE真的有点让人不能忍...今天下午遇到一只在Debug模式运行会引起Flash本身Crash的bug...最后一眼看到的是刷了好几屏的异常,然后Stack Overflow...在正常模式下运行会抛出一个叫#1068: x and x cannot be reconciled的错误... 开始以为是自己代码哪里写错编译器没查出来...边咒骂便仔细查看了半个钟头还是一无所获... 后来小心翼翼的google了一下...发现居然是Adobe的一只bug...

        出处是像下面这样的代码...switch/if/return嵌套...

        switch(xx){ case 1: if (yy) return zz; }
        于是便可以获得那只华丽的异常了... 恩恩... walkaround的方法就是不要在switch...case里面return...参见adobe的jira,貌似是只VM的bug,还木有人修...

        May 26, 2008

        The World Ends With You

        中文名唤作美妙世界,是一个很容易被错过的好游戏。日文版大概是去年夏天时候出的,那时候被扑头盖脸的满屏日文秒间打翻,还以为这是个少年Jump大乱斗的右脑版... 今年终于出了美版,而且GS居然很给面子的给了9分...

        如果说好游戏分为两种,一种是完成度高,画面精美,Gameplay tune的非常合适,CoD4, GTA以及暴雪流大抵可以归为这种;另一种可能内容上没有这么复杂,然而有一个非常统一的基调,而所有的其他要素都非常完美的随着这个基调混响,例如今年的No More Heroes, 这也是我很爱的所谓的有“Style”的游戏。也有例如像MGS这样,个人风格明显,然而有时让人觉得用力过度的例子。 而The World Ends With You尽管是个DS游戏,但其实却兼有Style和完成度,兼有非常Original的gameplay和很棒的故事线。

        游戏的故事线很棒,主角被丢到一个平行世界里去玩三个星期的生死游戏。第一个星期的队友是看似刚强开朗,实则内心柔弱的女主角;第二个星期又遇上了神样的强者屈尊来做队友。期间反反复复让你猜测你死亡来到这个世界的理由;同时事件的幕后主宰也始终在几个角色之间摇摆。直到最后的5分钟,故事才肯给你一个差不多大概的答案...Narrative大多是通过漫画式的过场交代,过场一般都很简单,但是诡异的视角让人印象深刻。

        上下屏的玩法的确初玩有点脑残,但是没想到他们居然弄出了这么多的花样。其中以Beat的凑扑克牌对Gameplay为最高,在下屏紧张操作的同时喵着上屏打出combo非常有快感。几十种不同的Pin分别代表下屏主角不同的招式,而Pin的收集也是游戏的乐趣之一,只是太多的Pin管理起来稍微有一点问题...要观察每个Pin的属性才能辨认出自己希望发展的,可能有个什么自动Group的功能会好一些。

        客观的来讲游戏的Tutorial和Hinting已经算是相当的不错了,在大多数的难点都有大红字的提示。但在这个有Pin收集系统,Pin升级系统,人物升级系统,人物道具装备系统,食物系统,商店系统,店员好感度系统,Pin品牌系统,品牌流行度与攻击力联动等等超丰富的系统的游戏中,刚刚开始的时候还是不免的让人有点无所适从...

        最后还有一点以后如果做便携式Casual Game一定要学的...关机时间涨经验值...第一天144点,第二天72点....此后按等比数列...经验值不算很多,但也绝对不算少。这个简单而体贴的小小诱惑让我几乎每天都在睡觉前打开NDS打那么一小会...

        Update: Yatzee同学居然也看上了这只游戏做Review...