zoukankan      html  css  js  c++  java
  • DOTA与面向对象的编程思想(2)——三层架构,让游戏跑起来

          昨天的《DOTA与面向对象思想(1)》是我人生中的第一篇博客。特别开心,截止目前为止已经有200多人阅读过,有4个人给我留下了评论,在评论中我学到了一些东西。感谢各位的阅读,更感谢留下评论的同学们,谢谢你们没有批评,谢谢你们分享观点。同时,我希望有更多人指出我的错误之处,分享你们的看法。

      今天再次开笔,写第二篇,我的内心有了两种情感,1. 激情满腹,很激动。2. 忐忑不安。激情满腹,是由于会有那么多人看,可能将来会有更多的人看。让我突然明白了blog这个平台,太好了。至少来说带给我一点点成就感。忐忑不安,主要是因为所有关于DOTA和面向对象的东西,都是我臆想的,没有去看过任何大型游戏的编程资料。我只是按照自己的想法去描述DOTA是怎么实现的,用面向对象的编程思想自圆其说,不曾亲身实践。所以大家读来,可只为娱乐。如若误人子弟,罪过慎重,因此忐忑。

      OK,咱们言归正传。此篇题为“三层架构,让游戏跑起来”,先上图。

     

      如图,底层是魔兽1.24e中文硬盘版的各种,我是搞不懂那些文件具体干嘛用的。但是由于学习android,我理解他就像android里边的SDK文件,提供了各种编辑android软件所能够用到的API,包括图形,文字编辑,文字显示,按钮这些可视化的UI控件,以及更多不可见的方法。因此,我认为底层文件中一定存在着一个英雄的类,所有的英雄都要继承这个父类,他有血量、蓝量、移速、攻速等等许多共同的属性。

      第二层,地图,地图是一种可视化的展示了。它调用了底层的许多东西,使你可以阅读各个英雄的介绍,看看各个地方得地形,各个商店有什么物品等等。这让我觉得想Android的布局界面有点像,只需简单的编程,就能够把按钮,文本框等控件展示出来。但此时,游戏没有跑起来,因为主角还没上场。

      第三层,Replay。为什么是replay,不是游戏要通过鼠标键盘实时操作完成吗?我觉得实时操作和replay没什么区别。因为实时操作是你通过鼠标键盘实时控制你的英雄,而replay只不过是已经把你所有的操作记录了下来,然后控制你的英雄,所以你还可以不断回放,和你操作的一模一样。Replay真正的完成了让游戏跑起来,是因为你通过首选、-repick或-random得方式构建了游戏主角(英雄)的实例。这个英雄的实例,继承了底层文件中的英雄的类。但各个英雄的技能不一样,力量成长,智力成长,敏捷成长不一样,还有很多不同。但这都是他们共有的属性,只需要重写对应的方法,就完成了各个英雄的独特化。

      然后游戏进行,你看到英雄在地图上奔跑,在不同的地方放技能,杀人,暴走,拆塔….,推到冰封王座。所有这一切都是你操作你的英雄实例完成的。地图只不过是提供了一个可视化的效果而已,的操作实际上也是不断的调用底层的内容。

      到这里,我更加觉得这个游戏的思想和android的开发很相似,SDK就是我们需要调用的各种API所在的位置。而魔兽的这些底层文件,通过不同的地图,能够展示出不同的游戏,比如Imba,澄海等等。所以,是不是可以编辑一个地图,基于WAR3做一个火枪打小鸟的游戏,我想应该是可以的。

      由此,我又想,底层文件接近2G,也就是无论你是IMBA,DOTA还是如果可以的火枪打小鸡的游戏,都要带着这2G的游戏文件才能玩。这个就没有android做得好,因为最终我们编程完成的那些应用很小,它只需要将有SDK中用到的内容打包成apk,就成了。所以如果可以将war3做一个可开发的API存在,给编程人员提供变成接口,然后可以开发出各种各样的小型游戏,并且打包必需的文件,提供给用户。那时候火枪打小鸟,就不用带着2G的文件,而只是一个几十兆的文件包吧。

      感觉这是大型游戏,走向开源的一个方向,哈哈,纯属臆想,不知所云。

      未完待续…

  • 相关阅读:
    Qt 学习之路 :文本文件读写
    Qt 学习之路:文本文件读写
    Qt 学习之路:二进制文件读写
    Qt 学习之路 :文件
    安全通信 QSslSocket
    Qt 学习之路:绘制设备
    Qt 学习之路:坐标系统
    Qt 学习之路 :坐标系统
    dmesg 程序崩溃调试2
    dmesg 程序崩溃调试
  • 原文地址:https://www.cnblogs.com/cnblogs-susan/p/4522612.html
Copyright © 2011-2022 走看看