首页 > 其他分享 >[Godot] 多人联机小游戏基础导读

[Godot] 多人联机小游戏基础导读

时间:2023-01-03 15:13:19浏览次数:61  
标签:Godot 联机 network -- server 小游戏 peer remote 客户端

参考项目:

【蘩】[Godot教程]局域网联机小游戏制作教程 ep6 - 基本联机功能的制作_哔哩哔哩_bilibili

基础知识:

远程调用RPC (remote procedure call)

RPC的修饰属性(不常用的未列举)

1. remote函数

调用远程的函数或者设置变量

2. remotesync函数

同事调用远程和本地的函数或者设置变量

调用函数

1. 远程端(函数调用)

rpc("remote_func",args)

rpc_id(peer_id,"remote_func",args)

2. 执行端(函数执行)

定义函数 remote func remote_func(args)

最终,从远程端调用的rpc会在执行端执行对应的remote函数

 

设置变量

1. 远程端

rset("a1",args)

rset_id(peer_id, "a1", args)

2.执行端

remote var a1

 

场景树的获取

get_tree() #调用当前的场景树

场景树信号

server

network_peer_connected #客户端连接出发的signal

network_peer_disconnected #客户端断开连接触发的signal

 

client

connected_to_server #client连接到server成功触发的signal

connection_failed #client连接到server失败触发的signal

server_disconnected #server 断开连接触发的signal

 

开启联机

创建对等点(开启联机)

var peer = NetworkedMultiplayerENet.new()  #基于udp协议的底层库

服务器

peer.create_server(port) #在localhost创建一个port端口号

客户端

peer.create_client(server_address,port) #传入服务器地址和端口号, 会开始创建客户端,并且会触发对应的信号

在创建完client和server后,需要吧对应的peer赋值给场景树的network_peer属性方便后续调用

get_tree().network_peer = peer

 

Peer ID

用于识别唯一的客户端(服务器固定为1)

 

NetWork Master

其实就是peer id,默认为1,那么就是服务器,一般用于判断是否是本地操作的玩家

判断是否为本地操作

get_network_master() == get_tree().get_network_unique_id() OR is_network_master()

 

 

游戏架构:

GameSystem (单例,游戏系统, 可以在全局访问)

  -- GameManager(UI管理)

    -- 各种UI界面,UI音效

      -- ChatDisply(聊天框)

    -- 游戏世界

      -- 静态物体

        --场景地图

      -- 网络物体(NetworkIdentifier)

        -- PlayerManager (玩家管理器)

        -- Cat (NetworkTransform,用于同步坐标)

        -- Mouse (NetworkTransform)

        -- Ball

  -- GameConsole (游戏控制台,发送游戏信息,游戏指令)

  -- NetworkManager(网络管理器,游戏的核心,用来管理网络方面)

  -- ClientProxy(客户端代理,在服务器负责管理对应的客户端)

  -- LinkingContext (链接表,分配,记录网络物体ID)

  -- CompetitionManager (竞赛管理器)

 

标签:Godot,联机,network,--,server,小游戏,peer,remote,客户端
From: https://www.cnblogs.com/lengblog/p/17022032.html

相关文章

  • Android小游戏-九宫格,有源码的哦!
    为了学习Android,自己编了一个小游戏,就是9宫格。特点:1.自动分析可选数字。2.自动判断结果3.支持Undo功能(Command设计模式)4.支持自编题目。 功能简介主画面功能:1.点击项目选......
  • 适合编程初学者的开源项目:小游戏2048(安卓版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。安卓版效果图技术特点安卓Kotlin工程截图开源地址https://gitee.com/lblbc/game_2048关于厦门......
  • 纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)
    Hello,大家好,我是兔哥,我又来分享好玩的入门级项目啦。今天给大家带来的是一个纯JavaScript入门级小游戏:兔子抢金币,规则非常简单,控制屏幕上的兔子去接天上掉下来的金币,接满20......
  • 利用Python制作第一人称射击小游戏 含源代码
    大家好我是毕加锁(锁!)今天教大家利用Python制作第一人称小游戏 涉及知识点1.sprites2.pygame混音器3.图章  4.python基础语法.代码1发射声fromspritesimport*......
  • 小游戏赛道的变现方式是什么?
    根据《2022微信小游戏增长白皮书》显示,目前微信小游戏开发者数量已经超过10万人次,特别是在持续出现小游戏爆火社交平台的趋势下,小游戏发展势头强劲。此外仅看微信小游戏的商......
  • 如何基于FinClip实现Android系统在自有App中引入小游戏
    ​实现效果:在自有App中实现小程序游戏运行使用技术:FinClip(​​下载/升级最新版IDE​​即可使用)测试机:Android测试Demo:​​飞机大战​​在 Android 项目中引入FinClip......
  • 不局限大平台,如何拓宽小游戏分发渠道?
    9月份《羊了个羊》的突然爆火,让已经四岁的微信小游戏再次引起了大众的广泛关注。相比手游与端游,小游戏以超级应用(微信、抖音、百度等)作为载体,具备无需下载、点开即玩等优点,......
  • Android系统,怎么在自有App中引入小游戏?
    之前有跟大家分享过ios系统上引入FinClipSDK,并将小程序游戏运行到自有App中,这周就继续分享如何在Android系统中引入FinClipSDK。​​​​实现效果:在自有App中实现小程......
  • 干货|小游戏赛道如何做到成功变现?
    伴随着2022年微信小游戏的不断发展,据统计,目前阶段微信小游戏的开发者数量已经高达了十万多人。尤其是在小游戏爆火社交平台的不断出现的背景下,小游戏的发展劲头更是强盛。从......
  • 【木棉花】基于JAVA UI开发的小游戏——推箱子(上)
    前言在上期文章中,分享了关于项目的效果预览图,从这一期开始,将逐步分享这个项目的构建流程。实际上,笔者在进行开发的过程中,并不是写完一个界面的内部逻辑,就开始对界面进行美......