【游戏理论】初来乍到

来源:互联网 发布:web微信开发工具linux 编辑:程序博客网 时间:2024/05/10 18:20

【跟大家打个招呼】

    初来乍到,还请大家多多指教,有问题随时欢迎探讨,文章可能写的不够好还请见谅。“羞射的笑容.gif”


【做个自我介绍】

    亦泽。自学者。主攻基于Unity3D的游戏开发以及基于XCode的苹果App开发。主要是做程序方面。开始试着写博客,一方面是想对初入这些领域的人提供一些个人的经验,另一方面也是督促自己掌握的更深更广泛。会不定时更新一些有关Unity的博文,关于苹果App开发这边后续有机会也可能写一写,因为暂时没有苹果设备- -。希望能与各位共同学习共同进步,有任何建议或者问题都可以私信我,我会在我有限的能力里给大家提供最大的帮助。


【先谈谈面向对象编程的思想】

    什么?怎么突然聊到面向对象编程思想了?大多数人接触的编程语言应该是诸如C语言之类的面向过程编程思想的语言,而面向对象编程思想却是在应用开发领域中用的最多的思想,在转换编程思想时,很多人还是习惯的在用面向过程的编程思想来解决实际项目当中的问题。这点极为不可取。

    这两种思想有什么区别呢?面向过程的特点是逻辑性过于缜密,为了解决问题而去解决问题,导致其实现的功能不易扩展,随着问题越来越庞大,也更加难以实现和维护。面向对象的特点是把一个大的问题分成不同类别的小问题,将小问题各个击破从而解决整个问题。就好比你要攻打一座城池,部队源源不断的攻击一个点,敌人也势必凝聚起来抵抗你。你很难在较短的时间内在较少的损失下攻下此城;但如果你把部队分开,攻打城池不同的点,那么当一支部队成功时也势必会对其他部队带来帮助,从而速度更快损失更少的拿下此城。二者的区别就在于此。建议没接触过面向对象编程语言的人可以先接触、了解这样的编程思想,势必会对以后的游戏开发带来帮助。


【再来说说程序与游戏】

    无论你在入门游戏开发前学习学过的编程语言是什么,控制台相信你是再熟悉不过了。可当从黑底白字(或者其他颜色,不要纠结)的控制台突然变成可视化的游戏元素时,你是不是又兴奋,又一脸大写的懵逼了呢?(我这么直白会不会给我河蟹吃QAQ)不要方,要记住做程序开发注重的是逻辑,而不是形式。没有控制台就不会编程了么?别把编程学的太死!

    程序设计无非是为了解决问题。不管是做控制台的练习,还是做游戏开发,本质上都是用程序在解决问题。只不过在游戏开发中,编程的方式更加贴近生活。在编程语言的学习中,你往往只需要程序解决你的问题,然后把问题的结果告诉你;在游戏开发中,游戏由各种不同的游戏元素组成,他们都有自己的“生存方式”,你要用程序去塑造每一个游戏元素,这也是上个标题里说到的用面向对象的思想来处理问题。

    怎么用程序塑造游戏元素呢,说了这么半天,是时候举个栗子了!CS大家都玩过吧(没玩过我也没办法QAQ),它是一个经典的第一人称射击游戏。我们现在只考虑主角(也就是玩家操控的个体)这个游戏元素。它应该有血量、移动速度、跳跃高度等基本属性,它会有控制运动、开枪、受伤等方法。这些就组成了一个鲜活的角色。当我们在设计一个游戏的时候,最基本的,应该先冷静的分析游戏中每个元素的属性和方法。说到这可能还是有人不太理解我的意思,下面我用一些简单的代码大概表示一下:

    //定义人物的血量    public float Blood = 100.0f;    //定义人物的移动速度    private float movedSpeed = 5.0f;    //定义人物的跳跃速度    private float jumpSpeed = 10.0f;    //定义人物所受重力    private float gravity = 10.0f;    //实现玩家的移动功能(走动、跳跃等)    private void PlayerMoved()    {        // code...    }    //实现玩家射击功能    private void PlayerShoot(Weapon weapon)    {        // code...    }    //当玩家收到伤害时触发此函数    public void PlayerOnDemaged(float damageValue)    {        // code...    }

    我们把主角当成一个对象,这里简单的定义了我刚才提到的主角具有的属性和方法(即变量和函数)。看,没有想象的那么复杂吧?一切想得到的东西都可以转换成对应的属性和方法,这便是由面向对象思想做基础的游戏设计。

    至此,只是简单叙述了从编程语言的学习到实际应用的过渡。这的确是很多人迷茫的。很多人在学习编程语言时,不清楚程序到底能做什么;或者有部分人知道程序所能做的,又一时无法知晓此间的联系。希望上述内容对处于这种困惑间的人有所帮助。


【最后说说兴趣】

    按理说最后应该说说行业前景之类的事,但是我就是一个不按讨论出牌的人=v=。回归正题,个人不强调行业前景的原因是互联网相关行业发展与淘汰的极为迅速,很难说当你真正掌握了一门技术的时候这门技术在业内的生存状况如何。所以说在学一门技术前,你要考虑你对它的兴趣是否占主导地位。兴趣更能激发学习的动力和新颖的思维。没有什么技术能在现在的发展速度下经久不衰,但你可以赋予你感兴趣的技术源源不断的新的生命力,从而迸发出强大的创造力。


【小小的总结】

    第一次写还是略为杂乱。作为一个程序员把文章的逻辑搞成这样我也是醉醉的= =。还是那句话,希望能对大家有所帮助,也希望之后的篇章可以越写越好。

2 0
原创粉丝点击