风暴战争 完整客户端+服务端

QQ截图20181203160727.jpg

引擎版本: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()


升级超级VIP会员 全站(99%)的资源免费下载,虚拟可复制资源不支持任何理由的退款请求!

微信公众号

标签: 服务 客户端 风暴 完整 战争