欢迎来玩我写的多人在线小游戏 demo

技术要点:
服务器数据处理、交互:java SpringBoot+mybatisplus+satoken+Rsa+webscoket+自研根据数据库关系代码生成器
数据库:mysql、redis
游戏前端:cocos create 3.x + typescript
用户及后台管理:vue
中间件以及负载均衡:nginx
试玩账号:
11cdb2534170e660aabeefce1962e7b
密码都是123456
游玩地址:Cocos Creator | 黎明与星夜
后台管理:https://www.sinday.cn/
(后台管理你们只能登陆,查看 没有其他的修改权限哦 不要修改密码 不然别人玩不了)
游戏展示:


由于是demo,你们在游戏里面只能砍树,小怪和玩家对战我会在不久后加入
有bug可以反馈给我哦 1484987160@qq.com

1赞

大佬,牛 :smiley:

一起学习一起进步

荧妹图没扣好,一圈白边看起来挺难受。。。。。。

哈哈哈哈,马上改进

延迟多高啊

40-100ms

服务器在西部,西部会快一些

同步的数据主要是指令么?

发送数据用触发器,接收数据是实时的,服务器端发送的数据实时处理:
接收数据方法:
let sx = new WebSocket(shuxingweizhi.wsapi + “/websocket/” + allMess.userdq.uidname);
sx.onopen = function () {
console.log(“已连接!”);
allMess.txWebSocket = sx;//存起来全局使用 方便发送信息
sx.send(JSON.stringify(allMess.userdq));
}

    sx.onmessage = function (evt) {

        if (typeof evt.data == 'string') {

            var r_msg = evt.data;
            //var ms: string = "<br/>接收的信息为:" + r_msg;
            _this.heriUser(r_msg);
            // console.log(ms);
        } else { }


    };//接收时自己也会接收,可以自己设置过滤的if语句


    sx.onclose = function () {
        // 关闭 websocket
        console.log("链接关闭");
    };

在需要发送数据的地方(例如走动 拾取 攻击):
调用这个方法
socketSendSinday() {
let _this = this;
if (null != allMess.txWebSocket) {

            //console.log("连接状态:"+allMess.txWebSocket.readyState);
        if (allMess.txWebSocket.readyState == 1) {
            allMess.txWebSocket.send(JSON.stringify(allMess.userdq));
        } else if (allMess.txWebSocket.readyState == 3) {
            //重新联动
            let sx = new WebSocket(shuxingweizhi.wsapi + "/websocket/" + allMess.userdq.uidname);
            sx.onmessage = allMess.txWebSocket.onmessage;
            sx.onclose = allMess.txWebSocket.onclose;
            console.log("第" + _this.timeConnectSize + "次重连");
            if (_this.timeConnectSize == 0) {
                _this.timeConnectSize = _this.timeConnectSize + 1;
                //_this.schedule(function () {
                    
                sx.onopen = function () {
                        allMess.txWebSocket = sx;
                        allMess.txWebSocket.send(JSON.stringify(allMess.userdq));
                        let ybmes = find(shuxingweizhi.centerMess);
                        ybmes.getComponent(UIOpacity).opacity = 225;
                        ybmes.getComponent(RichText).string = '已重新连接!';
                        let sb: number = 225;
                        _this.schedule(function () {
                            // 这里的 this 指向 component
                            sb = sb - 25;
                            ybmes.getComponent(UIOpacity).opacity = sb;
                        }, 0.05, 9, 0);
                        console.log("已经重新连接");
                        _this.timeConnectSize = 0;
                        return;
                    }


                //}, 2, 1, 0);
            } else {

            }
            
            //_this.timeConnect = _this.timeConnect + 1;
           
            

        }
            
        
            
        
    }
}

密码被人改了 :flushed:

哈哈哈哈 我现在重置一下

牛蛙牛蛙~

直接把修改密码的接口先关了不就完事了

好了,账号是英文的那串哦,密码123456

:2: :2: :2: :2: :2: :2:

你这网页加载好丝滑啊

服务器是16核 64G运行内存 联通专线服务器

20221011更新日志-怪物逻辑

一年多少钱