Added Godot based server
This commit is contained in:
56
world/Arena.blend.import
Normal file
56
world/Arena.blend.import
Normal file
@ -0,0 +1,56 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://tgmbtt7u172g"
|
||||
path="res://.godot/imported/Arena.blend-c720f6651d38b4cfd30aa3f4d2266924.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://world/Arena.blend"
|
||||
dest_files=["res://.godot/imported/Arena.blend-c720f6651d38b4cfd30aa3f4d2266924.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={
|
||||
"nodes": {
|
||||
"PATH:Plane": {
|
||||
"physics/shape_type": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
123
world/Game.tscn
123
world/Game.tscn
@ -1,61 +1,90 @@
|
||||
[gd_scene load_steps=22 format=3 uid="uid://b40y7iuskv1ar"]
|
||||
[gd_scene load_steps=23 format=3 uid="uid://b40y7iuskv1ar"]
|
||||
|
||||
[ext_resource type="Script" path="res://world/Game.gd" id="1_xmqq4"]
|
||||
[ext_resource type="Script" path="res://network/Network.gd" id="4_ao4cj"]
|
||||
[ext_resource type="Script" path="res://network/Ping.gd" id="4_vx388"]
|
||||
[ext_resource type="Script" path="res://network/client/Client.gd" id="4_ao4cj"]
|
||||
[ext_resource type="Script" path="res://network/client/Ping.gd" id="4_vx388"]
|
||||
[ext_resource type="PackedScene" uid="uid://2lcnu3dy54lx" path="res://player/Player.tscn" id="5_6c2x8"]
|
||||
[ext_resource type="Environment" uid="uid://dixa0yso2s1u3" path="res://world/Environment.tres" id="5_bll74"]
|
||||
[ext_resource type="Script" path="res://world/Sun.gd" id="5_pf5uw"]
|
||||
[ext_resource type="CameraAttributesPractical" uid="uid://b835orxyqq6w5" path="res://world/CameraAttributes.tres" id="6_8wfwf"]
|
||||
[ext_resource type="PackedScene" uid="uid://cch67vqpsmtej" path="res://ui/debug/DebugLabel.tscn" id="6_076g5"]
|
||||
[ext_resource type="Script" path="res://network/Login.gd" id="6_augbg"]
|
||||
[ext_resource type="Script" path="res://network/client/Login.gd" id="6_augbg"]
|
||||
[ext_resource type="Script" path="res://ui/debug/FPSLabel.gd" id="7_3qgww"]
|
||||
[ext_resource type="Script" path="res://network/server/Ping.gd" id="7_8mtv7"]
|
||||
[ext_resource type="Script" path="res://ui/debug/PingLabel.gd" id="7_kmy1y"]
|
||||
[ext_resource type="Script" path="res://network/server/Login.gd" id="8_1y1wq"]
|
||||
[ext_resource type="Script" path="res://ui/debug/PositionLabel.gd" id="8_fge13"]
|
||||
[ext_resource type="Script" path="res://ui/debug/VelocityLabel.gd" id="9_f25hg"]
|
||||
[ext_resource type="Script" path="res://world/Camera.gd" id="9_qfhy4"]
|
||||
[ext_resource type="Material" uid="uid://ddy5gkw0k16dq" path="res://world/shader/OutlineMaterial.tres" id="10_dii8l"]
|
||||
[ext_resource type="Material" uid="uid://ddy5gkw0k16dq" path="res://shader/OutlineMaterial.tres" id="10_dii8l"]
|
||||
[ext_resource type="PackedScene" uid="uid://hnn0n1xc2qt7" path="res://world/Tree.blend" id="15_csh38"]
|
||||
[ext_resource type="PackedScene" uid="uid://cb2t7bvvf3gwh" path="res://enemy/Slime.tscn" id="16_fuixr"]
|
||||
[ext_resource type="PackedScene" uid="uid://tgmbtt7u172g" path="res://world/Arena.blend" id="17_q45cd"]
|
||||
[ext_resource type="Script" path="res://network/server/Server.gd" id="19_bwh1t"]
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_7yiqd"]
|
||||
material = ExtResource("10_dii8l")
|
||||
flip_faces = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r8n03"]
|
||||
diffuse_mode = 3
|
||||
albedo_color = Color(0.482353, 0.470588, 0.47451, 1)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_0bujj"]
|
||||
material = SubResource("StandardMaterial3D_r8n03")
|
||||
size = Vector3(20, 0.5, 20)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_58ws3"]
|
||||
size = Vector3(20, 0.5, 20)
|
||||
|
||||
[node name="Game" type="Node"]
|
||||
script = ExtResource("1_xmqq4")
|
||||
|
||||
[node name="Network" type="Node" parent="."]
|
||||
[node name="Client" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("4_ao4cj")
|
||||
ip = null
|
||||
port = null
|
||||
|
||||
[node name="Ping" type="Node" parent="Network"]
|
||||
[node name="Ping" type="Node" parent="Client"]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("4_vx388")
|
||||
|
||||
[node name="Timer" type="Timer" parent="Network/Ping"]
|
||||
[node name="Timer" type="Timer" parent="Client/Ping"]
|
||||
autostart = true
|
||||
|
||||
[node name="Login" type="Node" parent="Network"]
|
||||
[node name="Login" type="Node" parent="Client"]
|
||||
script = ExtResource("6_augbg")
|
||||
playerScene = ExtResource("5_6c2x8")
|
||||
|
||||
[node name="Timer" type="Timer" parent="Network/Login"]
|
||||
[node name="Timer" type="Timer" parent="Client/Login"]
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="Server" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("19_bwh1t")
|
||||
|
||||
[node name="Ping" type="Node" parent="Server"]
|
||||
script = ExtResource("7_8mtv7")
|
||||
|
||||
[node name="Login" type="Node" parent="Server"]
|
||||
script = ExtResource("8_1y1wq")
|
||||
|
||||
[node name="Players" type="Node3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Enemies" type="Node3D" parent="."]
|
||||
|
||||
[node name="Slime" parent="Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.53558, 1.28057, -3.79687)
|
||||
|
||||
[node name="Slime2" parent="Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.00829, 1.28057, -1.95247)
|
||||
|
||||
[node name="Slime3" parent="Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.53558, 1.28057, -0.306177)
|
||||
|
||||
[node name="World" type="Node3D" parent="."]
|
||||
|
||||
[node name="Tree" parent="World" instance=ExtResource("15_csh38")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.11323, 0, -4.64839)
|
||||
|
||||
[node name="Tree2" parent="World" instance=ExtResource("15_csh38")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.11323, 0, 5.35161)
|
||||
|
||||
[node name="Arena" parent="World" instance=ExtResource("17_q45cd")]
|
||||
|
||||
[node name="UI" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@ -96,7 +125,7 @@ script = ExtResource("8_fge13")
|
||||
layout_mode = 2
|
||||
script = ExtResource("9_f25hg")
|
||||
|
||||
[node name="SubViewportContainer" type="SubViewportContainer" parent="."]
|
||||
[node name="Viewport" type="SubViewportContainer" parent="."]
|
||||
texture_filter = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -105,14 +134,14 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
stretch = true
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"]
|
||||
[node name="SubViewport" type="SubViewport" parent="Viewport"]
|
||||
handle_input_locally = false
|
||||
size = Vector2i(1152, 648)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="CameraPivot" type="Node3D" parent="SubViewportContainer/SubViewport"]
|
||||
[node name="CameraPivot" type="Node3D" parent="Viewport/SubViewport"]
|
||||
|
||||
[node name="Camera" type="Camera3D" parent="SubViewportContainer/SubViewport/CameraPivot" node_paths=PackedStringArray("center")]
|
||||
[node name="Camera" type="Camera3D" parent="Viewport/SubViewport/CameraPivot" node_paths=PackedStringArray("center")]
|
||||
transform = Transform3D(0.707107, 0.353554, -0.612372, 0, 0.866026, 0.5, 0.707107, -0.353554, 0.612372, -10, 10, 10)
|
||||
projection = 1
|
||||
current = true
|
||||
@ -123,52 +152,20 @@ script = ExtResource("9_qfhy4")
|
||||
center = NodePath("..")
|
||||
follow_speed = 5.0
|
||||
|
||||
[node name="PostProcessing" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/CameraPivot/Camera"]
|
||||
[node name="PostProcessing" type="MeshInstance3D" parent="Viewport/SubViewport/CameraPivot/Camera"]
|
||||
unique_name_in_owner = true
|
||||
extra_cull_margin = 16384.0
|
||||
mesh = SubResource("QuadMesh_7yiqd")
|
||||
|
||||
[node name="Sun" type="DirectionalLight3D" parent="SubViewportContainer/SubViewport"]
|
||||
transform = Transform3D(0.984808, 0.122788, -0.122788, 0, 0.707107, 0.707107, 0.173648, -0.696364, 0.696364, 0, 5, 0)
|
||||
[node name="Sun" type="DirectionalLight3D" parent="Viewport/SubViewport"]
|
||||
transform = Transform3D(0.984808, 0.122788, -0.122788, 0, 0.707107, 0.707107, 0.173648, -0.696364, 0.696364, 0, 10, 0)
|
||||
shadow_enabled = true
|
||||
directional_shadow_mode = 0
|
||||
script = ExtResource("5_pf5uw")
|
||||
|
||||
[node name="Environment" type="WorldEnvironment" parent="SubViewportContainer/SubViewport"]
|
||||
[node name="Environment" type="WorldEnvironment" parent="Viewport/SubViewport"]
|
||||
environment = ExtResource("5_bll74")
|
||||
camera_attributes = ExtResource("6_8wfwf")
|
||||
|
||||
[node name="World" type="Node3D" parent="SubViewportContainer/SubViewport"]
|
||||
|
||||
[node name="Ground" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/World"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
|
||||
mesh = SubResource("BoxMesh_0bujj")
|
||||
skeleton = NodePath("../../../..")
|
||||
|
||||
[node name="Ground" type="StaticBody3D" parent="SubViewportContainer/SubViewport/World/Ground"]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="SubViewportContainer/SubViewport/World/Ground/Ground"]
|
||||
shape = SubResource("BoxShape3D_58ws3")
|
||||
|
||||
[node name="Tree" parent="SubViewportContainer/SubViewport/World" instance=ExtResource("15_csh38")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.11323, 0, -4.64839)
|
||||
|
||||
[node name="Tree2" parent="SubViewportContainer/SubViewport/World" instance=ExtResource("15_csh38")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.11323, 0, 5.35161)
|
||||
|
||||
[node name="Players" type="Node3D" parent="SubViewportContainer/SubViewport"]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Enemies" type="Node3D" parent="SubViewportContainer/SubViewport"]
|
||||
|
||||
[node name="Slime" parent="SubViewportContainer/SubViewport/Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.53558, 1.28057, -3.79687)
|
||||
|
||||
[node name="Slime2" parent="SubViewportContainer/SubViewport/Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.00829, 1.28057, -1.95247)
|
||||
|
||||
[node name="Slime3" parent="SubViewportContainer/SubViewport/Enemies" instance=ExtResource("16_fuixr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.53558, 1.28057, -0.306177)
|
||||
|
||||
[connection signal="timeout" from="Network/Ping/Timer" to="Network/Ping" method="send_ping"]
|
||||
[connection signal="timeout" from="Network/Login/Timer" to="Network/Login" method="send_login"]
|
||||
[connection signal="timeout" from="Client/Ping/Timer" to="Client/Ping" method="send_ping"]
|
||||
[connection signal="timeout" from="Client/Login/Timer" to="Client/Login" method="send_login"]
|
||||
|
@ -1,76 +0,0 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded;
|
||||
|
||||
uniform sampler2D screen_texture : source_color, hint_screen_texture, filter_nearest;
|
||||
uniform sampler2D depth_texture : source_color, hint_depth_texture, filter_nearest;
|
||||
uniform sampler2D normal_texture : source_color, hint_normal_roughness_texture, filter_nearest;
|
||||
|
||||
uniform bool depth_layer = true;
|
||||
uniform bool normal_layer = true;
|
||||
uniform bool original_layer = true;
|
||||
|
||||
uniform float depth_edge_strength : hint_range(-1, 1, 0.01) = -0.5;
|
||||
uniform float normal_edge_strength : hint_range(-1, 1, 0.01) = 0.5;
|
||||
|
||||
uniform float depth_edge_threshold : hint_range(0, 1) = 0.2;
|
||||
uniform float normal_edge_threshold : hint_range(0, 1) = 0.6;
|
||||
|
||||
uniform vec3 normal_edge_bias = vec3(1, 1, 1);
|
||||
|
||||
float get_depth(vec2 screen_uv, mat4 inv_projection_matrix) {
|
||||
float depth = texture(depth_texture, screen_uv).r;
|
||||
vec3 ndc = vec3(screen_uv * 2.0 - 1.0, depth);
|
||||
vec4 view = inv_projection_matrix * vec4(ndc, 1.0);
|
||||
view.xyz /= view.w;
|
||||
return -view.z;
|
||||
}
|
||||
|
||||
vec2[4] create_uvs(vec2 screen_uv, vec2 texel_size) {
|
||||
vec2 uvs[4];
|
||||
uvs[0] = vec2(screen_uv.x, min(1.0 - texel_size.y, screen_uv.y + texel_size.y));
|
||||
uvs[1] = vec2(screen_uv.x, max(0.0, screen_uv.y - texel_size.y));
|
||||
uvs[2] = vec2(min(1.0 - texel_size.x, screen_uv.x + texel_size.x), screen_uv.y);
|
||||
uvs[3] = vec2(max(0.0, screen_uv.x - texel_size.x), screen_uv.y);
|
||||
return uvs;
|
||||
}
|
||||
|
||||
float normal_detection(vec2 uv, vec3 normal) {
|
||||
vec3 neighbor_normal = texture(normal_texture, uv).xyz * 2.0 - 1.0;
|
||||
vec3 normal_diff = normal - neighbor_normal;
|
||||
float normal_bias_diff = dot(normal_diff, normal_edge_bias);
|
||||
float normal_indicator = smoothstep(0.01, -0.01, normal_bias_diff);
|
||||
return dot(normal_diff, normal_diff) * normal_indicator;
|
||||
}
|
||||
|
||||
void vertex() {
|
||||
POSITION = vec4(VERTEX, 1.0);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec3 original = texture(screen_texture, SCREEN_UV).rgb;
|
||||
vec3 normal = texture(normal_texture, SCREEN_UV).xyz * 2.0 - 1.0;
|
||||
float depth = get_depth(SCREEN_UV, INV_PROJECTION_MATRIX);
|
||||
vec2 texel_size = 1.0 / VIEWPORT_SIZE.xy;
|
||||
vec2 neighbors[4] = create_uvs(SCREEN_UV, texel_size);
|
||||
|
||||
float depth_diff = 0.0;
|
||||
float normal_diff = 0.0;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
float neighbor_depth = get_depth(neighbors[i], INV_PROJECTION_MATRIX);
|
||||
depth_diff += neighbor_depth - depth;
|
||||
normal_diff += normal_detection(neighbors[i], normal);
|
||||
}
|
||||
|
||||
float strength = 0.0;
|
||||
|
||||
if (depth_layer && depth_diff > depth_edge_threshold) {
|
||||
strength = 1.0 + depth_edge_strength;
|
||||
} else if (normal_layer && normal_diff > normal_edge_threshold && depth_diff > 0.0) {
|
||||
strength = 1.0 + normal_edge_strength;
|
||||
} else if(original_layer) {
|
||||
strength = 1.0;
|
||||
}
|
||||
|
||||
ALBEDO = original * strength;
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://ddy5gkw0k16dq"]
|
||||
|
||||
[ext_resource type="Shader" path="res://world/shader/Outline.gdshader" id="1_fmkjv"]
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_fmkjv")
|
||||
shader_parameter/depth_layer = true
|
||||
shader_parameter/normal_layer = true
|
||||
shader_parameter/original_layer = true
|
||||
shader_parameter/depth_edge_strength = -0.5
|
||||
shader_parameter/normal_edge_strength = 0.5
|
||||
shader_parameter/depth_edge_threshold = 0.2
|
||||
shader_parameter/normal_edge_threshold = 0.6
|
||||
shader_parameter/normal_edge_bias = Vector3(1, 1, 1)
|
Reference in New Issue
Block a user