游戏引擎:通过配表的方式来完成游戏开发

一:目标

1.合理的节约开发周期,减少重复劳动,逐渐实现固化逻辑

2.实现程序开发新功能,策划通过配表来完成游戏开发

二:思路

1.我的这套引擎逻辑  借鉴了页游的一些思路,通关配表来实现游戏开发

2.之所以选择cocos2dx开发  是因为coco2dx 前期采用了  代码和界面的绝对分离的做法 能够最大限度的缩短开发周期

3.要让策划看的懂,就必须固化功能,减少程序冗余,精简逻辑结构

三:如何实现

1.如何实现通过配表来完成开发,简单说就是怎么把配表转成代码

2.采用什么格式来存储这些配表数据

3.尽可能简化配表属性,同时要完美的来实现用户的多操作。如,用户捡取道具的操作,可能会触发

     1.道具栏道具增加 2道具在界面上消失 3播放捡取动画 4实现一些特殊的功能(捡取钥匙 那么们机关这个时候 就应该可以被点击)

4.因为逻辑是配表完成的,用户的操作具有不可控性 ,那么迫切需要断点保护机制,来防止用户的一些特殊操作,如强退游戏,导致存储数据混乱

5.怎么实现复杂的用户交互机制  比如说机关

四:最终实现

1.本人总结有两种方式实现 1,通过plist来实现配表 ,2 通过excel来实现


plist

   excel 实现 目前还不是很成熟 只能处理前端的层级关系 和关联 

   有兴趣的可以去看哈xlsx2json 是一个开源的项目

    https://github.com/koalaylj/xlsx2json.git

2.本人采用的json来存储数据  json是目前很常用的数据格式

3.简化代码,一个引擎可以这样简单


全部的引擎文件

   通过66来标记用户是多操作  多操作处理逻辑通过数组来同步实现


4.断点保护,采用的是和3A大作 一样的思路 ,通关节点来存储数据,用户强退游戏后可以恢复到用户存储数据时的状态

5.因为机关的复杂性 采用的是代码和配表相结合的机制  type 表示机关类型 


代码段 如下

 case 3://数字  0-9

        {

            CCLOG("机关正确%s",g_organPassword.c_str());

            if(button->getTag()==0) {


                CCLOG("我点了OK,结果:%s", itemStr.c_str());

                if(itemStr==g_organPassword) {

                    organEvents(g_organSucceed);

                    OrganScene::gameStop();


                }



            }else{

                 SimpleAudioEngine::getInstance()->playEffect("Sounds/click-button.mp3");

                intko =atoi(button->getTitleText().c_str());

                ko++;

                if(ko>9) {

                    ko=0;

                }

                std::stringnumeral =StringUtils::format("%d",ko);

                itemStr.replace(button->getTag()-1,1, numeral);

                button->setTitleText(cocos2d::StringUtils::format("%d",ko));



            }

        }

            break;

五:成效  

一个密室逃脱类的游戏 开发周期只需要五天  三天开发 两天测试 然后直接上线

六:下期预告

通过rapidjson来实现在coco2dx中来实现数据的存储和编辑

你可能感兴趣的:(游戏引擎:通过配表的方式来完成游戏开发)