引擎版本:C++源码,包含服务端源码、客户端源码、文档,解压后1.25G
故事背景
《风暴战争》是一款以西方魔幻战争为背景故事,融合了兵种养成、排兵布阵、国王魔法修炼、基地建设等多种要素为一体的战略型手机游戏。在游戏中,你可以使用总共四个种族、超过七十种不同兵种进行策略搭配指挥战斗,配合各种炫酷的国王魔法技能,变幻出万千种组合,同时采集资源、建设基地,打造属于你的最强兵团。
架设说明
1:安卓开发中所遇到过的一些问题以及解决方案
多点触控:
安卓API默认最高支持3点触摸。
原理:
Int pointCount = event.getPointerCount();
获取当前的点击个数。
ACTION_POINTER_1_DOWN
ACTION_POINTER_2_DOWN
ACTION_POINTER_3_DOWN
ACTION_POINTER_1_UP
ACTION_POINTER_2_UP
ACTION_POINTER_3_UP
ACTION_POINTER_1_MOVE
ACTION_POINTER_2_MOVE
ACTION_POINTER_3_MOVE
获取各个点的事件响应
当玩家点击地一个点时,如果没有抬起操作那么就一直响应第一点操作。
同理第二点也一样。
2:安卓生命周期
默认的安卓生命周期为点击应用图标
OnCreat OnStart OnResume
Back键默认为走OnDestory
一般我们会选择屏蔽掉 Back键.
原因很简单,在很多手机游戏中假如玩家收到电话事件和短信事件,是会被弹出,游戏进入到
Onpause然后你点击Back键的时候就会导致Activity走到了OnDestory;
所以选择屏蔽.代码很简单只需要在截取到Back事件时return就可以了不要让他走周期流程
3:安卓强制横屏
很多游戏中是需要横屏的.
在代码中添加强制横屏这种做法是不行的.
遇到问题:之前是在代码中添加转横屏操作.后来发现当转的时候调用了onConfigurationChanged.并且又走了OnStart和OnCreat并且在他析构的时候调用了OnDestory.导致整个生命周期流程乱套了.
正确的做法,在创建Activity之前就将屏幕转好,具体写法
在XML 中添加
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:screenOrientation="landscape">
4:读写权限以及其他权限
安卓中的读写SDK里面的内容是需要添加权限的具体的常用权限以下归类
读权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
电话接收以及监听权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
短信接收以及监听权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
网页事件,用与在游戏中打开网页
<uses-permission android:name="android.permission.INTERNET"/>
5:JAVA层自定义类和JNI层交互
有的时候JAVA层需要传很多参数给JNI如果参数太多会导致代码太多维护麻烦.
所以需要这种方式.
在JAVA中自定一个类
Class MyData
{
Public:
Int a;
Int b;
Int c;
……..};
JAVA层中native函数申明
public static native void GetData (MyData data);
JNI层中声明
JNIEXPORT void JNICALL Java_com_perfect_zsdemo_LordJNILib_ GetData(JNIEnv *env, jobject obj,jobject m_pdata)
//获取a在JAVA中的赋值
jfieldID sound = env->GetFieldID(cls, "a", "I");
//C层给 JAVA层赋值
env->SetIntField(m_pdata, “a”, 5);
注意第二个参数要对应JAVA类定义时的声明不能搞错,否则就会挂掉.
6:工程搭建
首先编译引擎代码.
代码中新添加了GameClient目录.
需要重新 Cmake
编译好代码后打开ZSDome
将GameClient目录中的JNI 拷贝到ZSDome工程目录下
然后直接直接运行即可.
对应接口
Android
DemoInit----初始化引擎
Render----渲染主逻辑
7:BBZS客户端的使用
首先CMAKE GameClient,完了之后,如果是windows平台,会成libLordGameClient.lib
如果是android或者ios,会生成libLordGameClient.a
然后使用:
游戏主逻辑在Game里面,提供初始化接口init(),消息响应接口MsgOneHandle和MsgTwoHandle,主渲染和处理接口Logic()