Basic networking, RPC, etc.

This commit is contained in:
Paul Black 2023-02-15 23:41:14 -07:00
parent 06f8180169
commit b9f39efc72
11 changed files with 86 additions and 41 deletions

View file

@ -11,12 +11,14 @@ var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
@onready var neck := $CollisionShape3D/Neck
@onready var camera := $CollisionShape3D/Neck/Camera3D
@onready var selfTeddy = self.get_path()
var teddyNode
var globalscene
func _ready():
Global.playingGame = true
Global.selfTeddy = selfTeddy
teddyNode = get_node(selfTeddy)
func _unhandled_input(event):
if event is InputEventMouseButton:
@ -91,7 +93,7 @@ func _physics_process(delta):
if Global.menuOpen == false:
print("shoot")
var b = Bullet.instantiate()
owner.add_child(b)
teddyNode.add_child(b) ### DO RESEARCH ON WHAT OWNER IS DEFINED AS, I FORGOT WHAT IT IS. FOR NOW IT WILL BE REPLACED WITH teddyNode BUT BULLETS ARE WACK THIS WAY
b.transform = $CollisionShape3D/Neck/Camera3D/BulletGenerator.global_transform
b.velocity = -b.global_transform.basis.z * b.muzzle_velocity
if Input.is_action_just_pressed("console"):

View file

@ -88,6 +88,9 @@ privacy/network_volumes_usage_description=""
privacy/network_volumes_usage_description_localized={}
privacy/removable_volumes_usage_description=""
privacy/removable_volumes_usage_description_localized={}
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
@ -99,3 +102,45 @@ open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
[preset.1]
name="Linux/X11"
platform="Linux/X11"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="export/teddy.x86_64"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_encryption_key=""
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_script=1
binary_format/embed_pck=false
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

View file

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://objects/Bullet/Bullet.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://pni78bumc5f5" path="res://objects/Bullet/model/Bullet.dae" id="2"]
[sub_resource type="BoxShape3D" id="BoxShape3D_h2x0g"]
[sub_resource type="BoxShape3D" id="BoxShape3D_jya8v"]
size = Vector3(0.40456, 0.406836, 0.393048)
[node name="Bullet" type="Area3D" groups=["bullet"]]
@ -12,7 +12,7 @@ script = ExtResource("1")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." groups=["bullet"]]
transform = Transform3D(0.957696, 0, 0, 0, 1, 0, 0, 0, 1.66763, 0, 0, -0.295843)
shape = SubResource("BoxShape3D_h2x0g")
shape = SubResource("BoxShape3D_jya8v")
[node name="Bullet" parent="." instance=ExtResource("2")]
transform = Transform3D(0.200224, 0, 0, 0, -8.75207e-09, 0.200224, 0, -0.200224, -8.75207e-09, 0, 0, 0)

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://dp1q51kvd8uow"]
[gd_scene load_steps=4 format=3 uid="uid://dp1q51kvd8uow"]
[ext_resource type="Script" path="res://characters/teddy/Teddy.gd" id="1_ywxo5"]
@ -7,14 +7,6 @@ size = Vector3(1, 1.99126, 1)
[sub_resource type="CapsuleMesh" id="CapsuleMesh_qq44a"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_6xwyk"]
properties/0/path = NodePath(".:position")
properties/0/spawn = true
properties/0/sync = true
properties/1/path = NodePath(".:rotation")
properties/1/spawn = true
properties/1/sync = true
[node name="Teddy" type="CharacterBody3D" groups=["human"]]
script = ExtResource("1_ywxo5")
@ -32,6 +24,3 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.859224, 0)
[node name="BulletGenerator" type="Marker3D" parent="CollisionShape3D/Neck/Camera3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.104801, -0.858231)
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_6xwyk")

View file

@ -1,7 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://bpq4yjx2gs3l6"]
[gd_scene load_steps=8 format=3 uid="uid://bpq4yjx2gs3l6"]
[ext_resource type="Script" path="res://scripts/maps/playground.gd" id="1_gtai1"]
[ext_resource type="PackedScene" uid="uid://dp1q51kvd8uow" path="res://scenes/Teddy.tscn" id="1_p7gbl"]
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="2_ggrqc"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ell6n"]
@ -44,6 +43,3 @@ mesh = SubResource("PlaneMesh_gx0jf")
[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_qgsp1")
[node name="Teddy" parent="." instance=ExtResource("1_p7gbl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08165e-12, 1, 2.08165e-12)

View file

@ -16,6 +16,7 @@ var consoleCommand # Defined by console.gd
var consoleOutput # Defined by console.gd
var godMode = false # Defined by console.gd
var selfTeddy # Defined as soon as the player script is initalized
var multiplayerCurrent = false
func _process(delta):
if godMode:
@ -46,3 +47,7 @@ func reset_variables():
playerDead = false
playerAlive = true
playerPleaseRespawn = false
func add_player_character(mapNode):
var player_character = preload("res://scenes/Teddy.tscn").instantiate()
mapNode.add_child(player_character)

View file

@ -1,13 +1,7 @@
extends Node
var SCENE
var peer:= ENetMultiplayerPeer.new()
func peer_connected(pid: int):
print("Peer connected: ", pid)
func peer_disconnected(pid: int):
print("Peer disconnected: ", pid)
var peer = ENetMultiplayerPeer.new()
func _ready():
pass
@ -52,7 +46,7 @@ func _on_start_button_pressed():
func load_map(map, port, maxPlayers):
var result = peer.create_server(port, maxPlayers) # Second paramater specifies the player limit. Can be anything between 1 and 4095
peer.get_incoming_connections()
multiplayer.multiplayer_peer = peer
prints("Creating server result:", result)
if result == OK:
print("Server should be listening on port: ", port)
@ -60,4 +54,21 @@ func load_map(map, port, maxPlayers):
printerr("Port is being used by something else!")
else:
printerr("Server can't start, and idk the problem")
get_tree().change_scene_to_file(map)
#Global.multiplayerCurrent = true
#get_tree().change_scene_to_file(map)
peer.peer_connected.connect(
func(new_peer_id):
print("NEW CONNECTION FROM ", new_peer_id)
#await get_tree().create_timer(1).timeout ## Might not be required anymore...
add_newly_connected_player_character()
)
@rpc
func add_newly_connected_player_character():
print("add_newly_connected_player_character() has been run!")
get_tree().change_scene_to_file("res://scenes/Playground.tscn")

View file

@ -1,9 +1,12 @@
extends Node
@onready var mapNode = get_node("/root/Playground")
func _ready():
Global.playerHealth = 100
Global.fatigue = 100
if Global.multiplayerCurrent == true:
Global.add_player_character(mapNode)
func _process(delta):

View file

@ -1,13 +1,6 @@
extends Node
var peer:= ENetMultiplayerPeer.new()
func _on_peer_connected(id: int):
print("Peer connected: ", id)
# add your code here to handle the successful connection
func _on_peer_disconnected(id: int):
print("Peer disconnected: ", id)
var peer = ENetMultiplayerPeer.new()
func _ready():
pass
@ -42,8 +35,6 @@ func _on_join_button_pressed():
else:
$errorLabel.text = "ERROR: NO PORT SPECIFIED"
return
peer.connect(&"peer_connected", _on_peer_connected)
peer.connect(&"peer_disconnected", _on_peer_disconnected)
var result = peer.create_client(IPADD, intPORT)
var resultString = str(result)
$errorLabel.text = resultString
@ -54,5 +45,8 @@ func _on_join_button_pressed():
if result == OK:
print("Connected to server at IP ", IPADD, ":", intPORT, "!")
$errorLabel.text = "Connected to server!"
multiplayer.multiplayer_peer = peer
Global.multiplayerCurrent = true

View file

@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/blender.svg-30745d3fde109c2dd09fe06f35ced49b.
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false

View file

@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/godot.svg-dfd0c6d0b550de1675c2ab4f6216d77f.ct
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false