学会了搭建官方Demo,这可不行,我们目的可是用KBEngine为我们所用。所以从这一回开始,我们开始一步一步学习搭建我们自己工程。
1.kbe引擎文件夹中的asset就是最小的项目工程,我们可以在此基础上一点一点构建我们的东西。
①先找到你kbe中的kbengine_defalut,xml(kbe->res->server),用vs打开,
将port改为3306和设置你的mysql数据库用户名和密码。
将此处设置为你的数据库名称。
再往下翻
将是否开放注册改为true,登录合法时游戏数据库找不到游戏账号则自动创建设置为false。
②在当前服务器资源文件夹中(即assets)也找到kbengine.xml(assets->res->server)做和上面一样的步骤,
不过只用修改登录合法时游戏数据库找不到游戏账号不自动创建。
2.设置服务器的UID(可选)
前面在安装KBEngine时跳过了一些不必要的步骤,其中在环境变量配置中就少了UID这一项。官方解释:
多台硬件服务器共同维护一组服务,
那么每一台机器上的系统uid环境变量都应该保持一致,否则无法形成服务组。
windows下你只要在你的环境变量中添加UID即可,切记0<UID<32767
附上完整的环境变量设置:
之前没有设置这个环境变量服务器也能运行,是因为在服务端资产库启动服务器的脚本中已经具备自动化临时设置环境变量正确启动服务器功能。
当你启动服务器的时候,你仔细看第一个跳出来的窗口会有个UID显示,不过她似昙花一现,之后就看不到了。我执着于找寻她的身影,在windows下有个好处是官方提供了一个可视化工具,在这个工具中我找到了她。
点开guiconsole.bat
后来,蓦然回首发现她竟在灯火阑珊处
这个是machine.exe(第一个)黑窗口。另外我标红的地方,似乎有种似曾相识的感觉。
3.开始搭建我们的客户端工程(unity3d) 取名MyKBE
①先命名几个文件
Plugins中存放的是KBE的插件,这个插件可以在你的KBE根目录下的assets文件夹下点gensdk.bat生成,然后复制到MyKBE的Plugins里就可以了。
Scripts里再新建两个脚本文件夹,一个是个插件层用的,另一个给客户端渲染层用的。
②在Hierarchy面板新建空物体命名为clientApp,这就是客户端。
我们需要为它写一个脚本clientApp.cs.
存放的位置看清楚啦。脚本内容很简单。添加using KBEngine,继承KBEMain,其余的都删掉。
这些参数暂时不要管,保持默认就好。
点击unity的播放按钮,在Console下会显示这样的信息,说明客户端已经启动。客户端关闭后也会有相应的显示,你可以自己看看。
③搭建简易的login界面
在u3d_scripts下创建c#脚本,命名为ClientLogin,挂到Login下。
①引用KBEngine和System(using KBEngine;using System;)。
②我们先在ClientLogin.cs中写下这段代码,回到u3d,在登录Button中添加单击事件。
//登录请求
public void Login()
{
Debug.LogFormat("请求登录,username:{0},passwd:{1}", username.text, passwd.text);
//向服务器发送登录请求代码模板,除了请随意其它的都不用改
KBEngine.Event.fireIn("login", username.text, passwd.text, System.Text.Encoding.UTF8.GetBytes("请随意"));
}
//注册请求
public void Register()
{
Debug.LogFormat("请求注册,username:{0}", username.text);
// 向服务器发送注册请求代码模板
KBEngine.Event.fireIn("createAccount",username.text,passwd.text,System.Text.Encoding.UTF8.GetBytes("请随意"));
}
②在kbe_scripts文件夹中新建Account.cs(必须是这个名)
这里先这样写,这是处理登录成功时的情况。
③添加登录时错误提示(先在Console下提示)
//登录失败,错误回调
public void onLoginFailed(UInt16 failedcode)
{
Debug.LogFormat("登录失败,错误码{0},失败原因{1}", failedcode, KBEngineApp.app.serverErr(failedcode));
}
回调函数我们需要在start内注册一下,让服务器知道在这个脚本中有这么一个方法。
KBEngine.Event.registerOut("onLoginFailed",this, "onLoginFailed");
④添加注册失败的回调函数
//注册时候的回调函数
public void onCreateAccountResult(UInt16 retcode, byte[] datas)
{
if (retcode != 0)
{
Debug.LogFormat("注册失败,错误码:{0},失败原因:{1}", retcode, KBEngineApp.app.serverErr(retcode));
return;
}
else
{
Debug.Log("注册账号成功!");
}
}
同样我们也需要注册一下onCreateAccountResult这个函数。
至此,我们的注册和登录就写完了。注册了一个账号后,可以查看游戏数据库中是不是生成了这个账号数据信息。至于账号和密码的合法性这个就需要你自己去设定啦,想想该怎么去做(#^.^#)。
好啦,下回见咯,Bye~~~~