前言:
上次写了一个消灭星星,很多人都回复了我,并且提出了宝贵的意见,先感谢大家啦~上几个月我发现了一个很好玩的游戏——《BattleHeart》,心里面想着,这么好的游戏要是可以联机跟好朋友一起玩(就像CS那样)那就爽歪歪了,于是就动手开始模仿这款游戏,并且为其加入网络模块。可惜,因为对多人网络游戏开发并不熟悉,虽然最后还是开发出来了,但是效果却差强人意。不过在开发过程中学到了很多新的知识和网络游戏用到的技术(例如boost::asio搭建服务器,网络游戏同步等),也算是一个不错的经历了。
由于网络版比较复杂,这里写的只是单机版的教程。。以后可能还会提供我写的一个用boost::asio搭建的服务器/客户端框架,不过这里先不涉及到网络模块方面的。
一、原版《BattleHeart》简介
在这里贴上几张《BattleHeart》的图片,让大家有个美好的期盼,哈哈。
二、山寨版《Flighting》
接下来就是我的山寨作品,大家做好心理准备啊。。。
只能怪美工咯,对不对,不过美工也是我担任的。。。
三、项目结构简介
说了那么多废话,现在开始讲我们的项目吧。
1)总体:
2)Data:个人习惯把一些默认的数据放在一个文件里面管理
3)Entity:实体类,主要包括Bullet(子弹类) Hero(英雄) Monster(怪物)Role(角色类,英雄和怪物类的父类)SkillBox(技能框)
4)SKillSelector :负责技能效果的选择
5)Util:主要是负责数据的录入(从Excel表转换成Json再录入到对象)
6)View:各个场景(Battle:战斗场景,Choose:选人场景,MenuView:开始菜单,PauseView:暂停画面)
7)AppDelegate:程序入口
这里,我用到的是1280x720的素材,而且默认的帧数改为45帧,所以AppDelegate的修改如下:
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("Flighting1.2"); director->setOpenGLView(glview); } glview->setFrameSize(1280,720); glview->setFrameZoomFactor(0.6f); glview->setDesignResolutionSize(1280,720,kResolutionExactFit); // turn on display FPS director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 45); // create a scene. it's an autorelease object auto scene = MenuScene::create(); // run director->runWithScene(scene); //engine->executeScriptFile("src/main.lua"); return true; }
简介就先到此为止。
我的csdn地址:http://blog.csdn.net/hezijian22
邮箱地址:[email protected]
如有问题或指教,请于我交流,谢谢。