commit
8d5714c215
@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
@ -0,0 +1,2 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
@ -0,0 +1,101 @@
|
||||
[preset.0]
|
||||
|
||||
name="Windows Desktop"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="./nzbrawl.exe"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=0
|
||||
binary_format/embed_pck=true
|
||||
texture_format/bptc=true
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
||||
binary_format/architecture="x86_64"
|
||||
codesign/enable=false
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PackedStringArray()
|
||||
application/modify_resources=true
|
||||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description=""
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
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="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||
$settings = New-ScheduledTaskSettingsSet
|
||||
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||
Start-ScheduledTask -TaskName godot_remote_debug
|
||||
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{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="build/nzbrawl.zip"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=0
|
||||
binary_format/embed_pck=false
|
||||
texture_format/bptc=true
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
||||
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}\""
|
@ -0,0 +1,3 @@
|
||||
extends Node
|
||||
|
||||
var players = {}
|
@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b2rvll882ejor"
|
||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.svg"
|
||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
@ -0,0 +1,53 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://r5n0cnh707fi"]
|
||||
|
||||
[ext_resource type="Script" path="res://scene_manager.gd" id="1_ywv22"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6olswaoek0bw" path="res://player.tscn" id="2_b15um"]
|
||||
[ext_resource type="PackedScene" uid="uid://dmbiy6vupfawk" path="res://platform.tscn" id="3_njyoi"]
|
||||
|
||||
[node name="Main" type="Node2D"]
|
||||
script = ExtResource("1_ywv22")
|
||||
player_scene = ExtResource("2_b15um")
|
||||
|
||||
[node name="PlayerSpawns" type="Node2D" parent="."]
|
||||
|
||||
[node name="0" type="Node2D" parent="PlayerSpawns" groups=["PlayerSpawnPoint"]]
|
||||
position = Vector2(526, 361)
|
||||
|
||||
[node name="1" type="Node2D" parent="PlayerSpawns" groups=["PlayerSpawnPoint"]]
|
||||
position = Vector2(848, 361)
|
||||
|
||||
[node name="CollisionShape2D" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(114, 593)
|
||||
scale = Vector2(9.84444, 4.5)
|
||||
|
||||
[node name="CollisionShape2D2" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(323, 448)
|
||||
scale = Vector2(9.40821, 0.413171)
|
||||
|
||||
[node name="CollisionShape2D5" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(606, 389)
|
||||
scale = Vector2(9.40821, 0.413171)
|
||||
|
||||
[node name="CollisionShape2D6" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(-50, 393)
|
||||
scale = Vector2(9.40821, 0.413171)
|
||||
|
||||
[node name="CollisionShape2D7" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(31, 273)
|
||||
scale = Vector2(9.40821, 0.413171)
|
||||
|
||||
[node name="CollisionShape2D3" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(289, 634)
|
||||
scale = Vector2(53.8059, 1.28385)
|
||||
|
||||
[node name="CollisionShape2D8" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(289, 634)
|
||||
scale = Vector2(53.8059, 1.28385)
|
||||
|
||||
[node name="CollisionShape2D4" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(-392, 155)
|
||||
scale = Vector2(26.2654, 622.781)
|
||||
|
||||
[node name="CollisionShape2D9" parent="." instance=ExtResource("3_njyoi")]
|
||||
position = Vector2(1499, 155)
|
||||
scale = Vector2(26.2654, 622.781)
|
@ -0,0 +1,89 @@
|
||||
extends Control
|
||||
|
||||
@export var port = 1717
|
||||
@export var max_players = 4
|
||||
var COMPRESSION = ENetConnection.COMPRESS_RANGE_CODER
|
||||
|
||||
var line_edit: LineEdit
|
||||
var peer: ENetMultiplayerPeer
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
multiplayer.peer_connected.connect(peer_connected)
|
||||
multiplayer.peer_disconnected.connect(peer_disconnected)
|
||||
multiplayer.connected_to_server.connect(connected_to_server)
|
||||
multiplayer.connection_failed.connect(connection_failed)
|
||||
|
||||
# We have to enable object encoding to send PlayerData, etc.
|
||||
multiplayer.allow_object_decoding = true
|
||||
|
||||
line_edit = get_node("LineEditName")
|
||||
|
||||
|
||||
# Called on both server and clients
|
||||
func peer_connected(id):
|
||||
print("Player connected " + str(id))
|
||||
|
||||
|
||||
# Called on both server and clients
|
||||
func peer_disconnected(id):
|
||||
print("Player disconnected " + str(id))
|
||||
|
||||
|
||||
@rpc("any_peer")
|
||||
func send_player_data(player_data: Dictionary):
|
||||
if !GameManager.players.has(player_data.id):
|
||||
GameManager.players[player_data.id] = player_data
|
||||
if multiplayer.is_server():
|
||||
for i in GameManager.players:
|
||||
send_player_data.rpc(GameManager.players[i])
|
||||
|
||||
|
||||
# Called only from clients
|
||||
func connected_to_server():
|
||||
print("Connected to server!")
|
||||
send_player_data.rpc_id(1, {
|
||||
"id": multiplayer.get_unique_id(),
|
||||
"name": line_edit.text if line_edit.text else "Player"
|
||||
})
|
||||
|
||||
|
||||
# Called only from clients
|
||||
func connection_failed():
|
||||
print("Couldn't connect!")
|
||||
|
||||
|
||||
func _on_host_pressed():
|
||||
# Create peer instance for host's player
|
||||
peer = ENetMultiplayerPeer.new()
|
||||
|
||||
var error = peer.create_server(port, max_players)
|
||||
if error != OK:
|
||||
print("Cannot host: " + error)
|
||||
peer.get_host().compress(COMPRESSION)
|
||||
|
||||
# Connect host's player
|
||||
multiplayer.set_multiplayer_peer(peer)
|
||||
|
||||
print("Waiting for players!")
|
||||
send_player_data({
|
||||
"id": multiplayer.get_unique_id(),
|
||||
"name": line_edit.text if line_edit.text else "Player"
|
||||
})
|
||||
|
||||
|
||||
|
||||
func _on_join_pressed():
|
||||
peer = ENetMultiplayerPeer.new()
|
||||
peer.create_client($LineEditIP.text if $LineEditIP.text else "127.0.0.1", port)
|
||||
peer.get_host().compress(COMPRESSION)
|
||||
multiplayer.set_multiplayer_peer(peer)
|
||||
|
||||
@rpc("any_peer", "call_local")
|
||||
func start_game():
|
||||
var scene = load("res://main.tscn").instantiate()
|
||||
get_tree().root.add_child(scene)
|
||||
self.hide()
|
||||
|
||||
func _on_start_game_pressed():
|
||||
start_game.rpc()
|
@ -0,0 +1,56 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://btcrmlpg4lrbt"]
|
||||
|
||||
[ext_resource type="Script" path="res://multiplayer_controller.gd" id="1_e6bhu"]
|
||||
|
||||
[node name="MultiplayerController" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_e6bhu")
|
||||
|
||||
[node name="Host" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 487.0
|
||||
offset_top = 259.0
|
||||
offset_right = 583.0
|
||||
offset_bottom = 290.0
|
||||
text = "Host"
|
||||
|
||||
[node name="Join" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 733.0
|
||||
offset_top = 167.0
|
||||
offset_right = 829.0
|
||||
offset_bottom = 198.0
|
||||
text = "Join"
|
||||
|
||||
[node name="Start Game" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 596.0
|
||||
offset_top = 257.0
|
||||
offset_right = 692.0
|
||||
offset_bottom = 288.0
|
||||
text = "Start Game"
|
||||
|
||||
[node name="LineEditName" type="LineEdit" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 419.0
|
||||
offset_top = 167.0
|
||||
offset_right = 727.0
|
||||
offset_bottom = 198.0
|
||||
placeholder_text = "Name..."
|
||||
|
||||
[node name="LineEditIP" type="LineEdit" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 417.0
|
||||
offset_top = 130.0
|
||||
offset_right = 731.0
|
||||
offset_bottom = 161.0
|
||||
placeholder_text = "IP..."
|
||||
|
||||
[connection signal="pressed" from="Host" to="." method="_on_host_pressed"]
|
||||
[connection signal="pressed" from="Join" to="." method="_on_join_pressed"]
|
||||
[connection signal="pressed" from="Start Game" to="." method="_on_start_game_pressed"]
|
@ -0,0 +1,15 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dmbiy6vupfawk"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dbjqbgu6ru4m1" path="res://white.png" id="1_eu1eh"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6fi6a"]
|
||||
size = Vector2(32, 32)
|
||||
|
||||
[node name="CollisionShape2D" type="StaticBody2D"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_6fi6a")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
modulate = Color(0.105882, 0.105882, 0.105882, 1)
|
||||
texture = ExtResource("1_eu1eh")
|
@ -0,0 +1,65 @@
|
||||
extends CharacterBody2D
|
||||
|
||||
@export var speed = 300.0
|
||||
@export var jump_velocity = -400.0
|
||||
@export var wall_jump_velocity = 600.0
|
||||
@export var ungrounded_x_lerp = 10.0
|
||||
@export var grounded_drag_lerp = 5.0
|
||||
@export var ungrounded_drag_lerp = 5.0
|
||||
@export var fox_time = 5
|
||||
@export var limp_gravity_modifier = 2.0
|
||||
|
||||
var x_velocity_offset = 0
|
||||
var x_movement = 0
|
||||
var desired_x_movement = 0
|
||||
var last_grounded = 0
|
||||
|
||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
||||
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||
|
||||
func _ready():
|
||||
$MultiplayerSynchronizer.set_multiplayer_authority(name.to_int())
|
||||
var username = GameManager.players[name.to_int()].name
|
||||
$Label.text = username
|
||||
var username_hash = 0
|
||||
for i in username.length():
|
||||
username_hash += username.unicode_at(i)
|
||||
$Sprite2D.modulate = Color.from_hsv((username_hash % 255) / 255.0, 0.5, 0.8)
|
||||
|
||||
func _physics_process(delta):
|
||||
if $MultiplayerSynchronizer.get_multiplayer_authority() != multiplayer.get_unique_id():
|
||||
return
|
||||
|
||||
# Add the gravity.
|
||||
if is_on_floor():
|
||||
last_grounded = Time.get_ticks_msec()
|
||||
else:
|
||||
velocity.y += gravity * delta * (limp_gravity_modifier if Input.is_action_pressed("limp") else 1)
|
||||
|
||||
var grounded = Time.get_ticks_msec() - last_grounded < fox_time
|
||||
|
||||
x_velocity_offset = lerpf(x_velocity_offset, 0, (grounded_drag_lerp if is_on_floor() else ungrounded_drag_lerp) * delta)
|
||||
|
||||
# Handle Jump.
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
if grounded:
|
||||
velocity.y = jump_velocity
|
||||
elif len($WallDetect.get_overlapping_bodies()) > 0:
|
||||
velocity.y = jump_velocity
|
||||
if $WallDetect.get_overlapping_bodies()[0].position.x > position.x:
|
||||
x_velocity_offset = -wall_jump_velocity
|
||||
else:
|
||||
x_velocity_offset = wall_jump_velocity
|
||||
|
||||
# Get the input direction and handle the movement/deceleration.
|
||||
# As good practice, you should replace UI actions with custom gameplay actions.
|
||||
var direction = Input.get_axis("move_left", "move_right")
|
||||
velocity.x = x_velocity_offset
|
||||
if direction:
|
||||
desired_x_movement = direction * speed;
|
||||
x_movement = lerpf(x_movement, desired_x_movement, 1 if grounded else ungrounded_x_lerp * delta)
|
||||
velocity.x += x_movement
|
||||
else:
|
||||
velocity.x = move_toward(velocity.x, 0, speed)
|
||||
|
||||
move_and_slide()
|
@ -0,0 +1,57 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://b6olswaoek0bw"]
|
||||
|
||||
[ext_resource type="Script" path="res://player.gd" id="1_0p8o6"]
|
||||
|
||||
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2xv6m"]
|
||||
load_path = "res://.godot/imported/white.png-d8533361663a5f8fe5200e5b5262a62d.ctex"
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_8wbiu"]
|
||||
size = Vector2(32, 48)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2cyhj"]
|
||||
size = Vector2(38, 48)
|
||||
|
||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_38o4e"]
|
||||
properties/0/path = NodePath(".:position")
|
||||
properties/0/spawn = true
|
||||
properties/0/sync = true
|
||||
properties/0/watch = false
|
||||
|
||||
[node name="Player" type="CharacterBody2D"]
|
||||
collision_layer = 2
|
||||
script = ExtResource("1_0p8o6")
|
||||
jump_velocity = -700.0
|
||||
wall_jump_velocity = 700.0
|
||||
fox_time = 100
|
||||
limp_gravity_modifier = 3.0
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
scale = Vector2(1, 1.5)
|
||||
texture = SubResource("CompressedTexture2D_2xv6m")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_8wbiu")
|
||||
|
||||
[node name="WallDetect" type="Area2D" parent="."]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallDetect"]
|
||||
shape = SubResource("RectangleShape2D_2cyhj")
|
||||
|
||||
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
|
||||
replication_config = SubResource("SceneReplicationConfig_38o4e")
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -24.5
|
||||
offset_top = -54.0
|
||||
offset_right = 24.5
|
||||
offset_bottom = -28.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "Player"
|
||||
horizontal_alignment = 1
|
@ -0,0 +1,62 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="nzbrawl"
|
||||
run/main_scene="res://multiplayer_controller.tscn"
|
||||
config/features=PackedStringArray("4.1", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
GameManager="*res://game_manager.gd"
|
||||
|
||||
[debug]
|
||||
|
||||
gdscript/warnings/shadowed_variable=0
|
||||
gdscript/warnings/shadowed_variable_base_class=0
|
||||
|
||||
[input]
|
||||
|
||||
move_left={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_right={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
jump={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
limp={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[physics]
|
||||
|
||||
2d/default_gravity=2000.0
|
||||
|
||||
[rendering]
|
||||
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
@ -0,0 +1,17 @@
|
||||
extends Node2D
|
||||
|
||||
@export var player_scene: PackedScene
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
var spawn_points = get_tree().get_nodes_in_group("PlayerSpawnPoint")
|
||||
for i in GameManager.players:
|
||||
var current_player: Node2D = player_scene.instantiate()
|
||||
current_player.name = str(GameManager.players[i].id)
|
||||
current_player.global_position = spawn_points[i % len(spawn_points)].global_position
|
||||
add_child(current_player)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dbjqbgu6ru4m1"
|
||||
path="res://.godot/imported/white.png-d8533361663a5f8fe5200e5b5262a62d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://white.png"
|
||||
dest_files=["res://.godot/imported/white.png-d8533361663a5f8fe5200e5b5262a62d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
Loading…
Reference in new issue