ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

[linux环境] 基于thrift模拟游戏的简易匹配机制(三.完结)

2021-10-07 18:31:58  阅读:239  来源: 互联网

标签:匹配 server 模拟游戏 段位 linux cpp save thrift


目录

save服务的客户端和服务端

呜呜呜,报错了

测试一波

 本次commit记录

match server:3.0(考虑到段位)

消费者队列稍作改动

设计一下匹配机制 

本次conmmit记录

match server:4.0(多线程)

本次commmit记录

match server:5.0(兼顾段位和匹配时长)

新增秒数队列wt

判断段位匹配范围

匹配(删的时候注意先删后面的,再删前面的,因为先删前面的下标会变)

本次commmit记录



save服务的客户端和服务端

在thrift的文件夹下创建save.thrift

这里的password为服务器(基于ac terminal)的密码经md5加密后的前八位  7e379f37

AC Terminal (acwing.com)https://www.acwing.com/file_system/file/content/whole/index/content/2543025/

namespace cpp save_service

service Save {

    /**
     * username: myserver的名称
     * password: myserver的密码的md5sum的前8位
     * 用户名密码验证成功会返回0,验证失败会返回1
     * 验证成功后,结果会被保存到myserver:homework/lesson_6/result.txt中
     */
    i32 save_data(1: string username, 2: string password, 3: i32 player1_id, 4: i32 player2_id)
}

生成对应的cpp文件并更改gen-cpp 名为save_client

~/thrift_lesson/match_system/src$

thrift -r --gen cpp ../../thrift/save.thrift 
mv gen-cpp/ save_client

 需要删除save_client下的Save_server.skeleton.cpp, 在客户端并不需要该服务且 cpp编译时是不能同时存在两个main函数

Apache Thrift - C++https://thrift.apache.org/tutorial/cpp.html#client

在main.cpp中,按照官方文档的client样例,把缺少的头文件,save_client/save.h加上,以及引入命名空间save_service

记得把client.py的"localhost"改为 客户端本地IP (即127.0.0.1)

把main.cpp的"localhost"改为 服务器地址

因为game的服务是起在本地的, 而save的服务是起在服务器的

编译链接(先编译save_client下的cpp文件)

g++ -c save_client/*cpp
g++ *.o -o main -lthrift -pthread

呜呜呜,报错了

 经群内大佬指点,应该是有main的进程占用了端口,我一看,

 果然是昨天的tmux的窗口还连着,kill进程后重新运行./main报错消失了!!!

上面的编译环节千万别忘了编译main.cpp, 否则就会像我一样在服务器中找不到数据的存储而以为出了bug(其实没有....

测试一波

(左下为服务器模拟游戏数据存储的服务端,,左上模拟的是游戏数据的客户端和匹配系统的服务端,右上模拟的是游戏的客户端,三者均可为不同的服务器)

 本次commit记录

 implement save-client (0e5d2c9e) · Commits · Knight bit / thrift_lesson · GitLabhttps://git.acwing.com/knight/thrift_lesson/-/commit/0e5d2c9e198a789fa4dcc8ce7a223b00bb290f97


match server:3.0(考虑到段位)

简单的流程算是写完了

新增/删除玩家 

标签:匹配,server,模拟游戏,段位,linux,cpp,save,thrift
来源: https://blog.csdn.net/qq_39391544/article/details/120634143

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有