commit 9013361e29c9233a7b00b47f6fb0fcb59ebe238b Author: dusk Date: Tue Feb 24 18:22:35 2026 +0100 Initial diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a237109 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# Godot 4+ specific ignores +.godot/ +/android/ + +# Godot-specific ignores +.import/ +export.cfg +export_credentials.cfg +*.tmp + +# Imported translations (automatically generated from CSV files) +*.translation + +# Mono-specific ignores +.mono/ +data_*/ +mono_crash.*.json diff --git a/camera_3d.gd b/camera_3d.gd new file mode 100644 index 0000000..5f32008 --- /dev/null +++ b/camera_3d.gd @@ -0,0 +1,7 @@ +extends Camera3D + +@onready var player: CharacterBody3D = $"../Player" + +func _process(delta: float) -> void: + self.position.x = player.position.x + self.position.z = player.position.z diff --git a/camera_3d.gd.uid b/camera_3d.gd.uid new file mode 100644 index 0000000..1ffa0fc --- /dev/null +++ b/camera_3d.gd.uid @@ -0,0 +1 @@ +uid://b5ebibi08tjvd diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..9cfef87 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwp08vjv8v6h6" +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/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/level.tscn b/level.tscn new file mode 100644 index 0000000..4dcb2e7 --- /dev/null +++ b/level.tscn @@ -0,0 +1,45 @@ +[gd_scene format=3 uid="uid://dxap1hj0okhli"] + +[ext_resource type="PackedScene" uid="uid://cmb3b7xrlboy3" path="res://player.tscn" id="1_u52ul"] +[ext_resource type="Script" uid="uid://b5ebibi08tjvd" path="res://camera_3d.gd" id="2_vonw3"] + +[sub_resource type="Environment" id="Environment_vonw3"] +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) + +[sub_resource type="PlaneMesh" id="PlaneMesh_vonw3"] + +[sub_resource type="BoxMesh" id="BoxMesh_vonw3"] +size = Vector3(10, 15, 10) + +[sub_resource type="BoxMesh" id="BoxMesh_oi3di"] +size = Vector3(10, 7.5, 10) + +[node name="Level" type="Node3D" unique_id=1248504413] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=2012504496] +environment = SubResource("Environment_vonw3") + +[node name="Player" parent="." unique_id=1536233267 instance=ExtResource("1_u52ul")] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1868750631] +transform = Transform3D(1.9467738, 0, 0, 0, 1.9467738, 0, 0, 0, 1.9467738, 0, 0, 0) +mesh = SubResource("PlaneMesh_vonw3") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=306152407] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.031, 7.5, 0) +mesh = SubResource("BoxMesh_vonw3") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=373905113] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.031, 3.5, -11.78) +mesh = SubResource("BoxMesh_oi3di") + +[node name="Camera3D" type="Camera3D" parent="." unique_id=2083164402] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 10, 0) +current = true +fov = 55.0 +script = ExtResource("2_vonw3") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1835820889] +transform = Transform3D(0.8695725, -0.45099428, 0.20111632, 0, 0.4072787, 0.91330403, -0.49380532, -0.7941841, 0.35415834, 5.7922945, 3.8191757, 14.293542) +shadow_enabled = true diff --git a/player.gd b/player.gd new file mode 100644 index 0000000..f9094af --- /dev/null +++ b/player.gd @@ -0,0 +1,7 @@ +extends CharacterBody3D + +func _process(delta: float) -> void: + var dir = Input.get_vector("player_move_left", "player_move_right", "player_move_up", "player_move_down") + + self.velocity = Vector3(dir.x * 5, 0, dir.y * 5) + self.move_and_slide() diff --git a/player.gd.uid b/player.gd.uid new file mode 100644 index 0000000..9d55dcd --- /dev/null +++ b/player.gd.uid @@ -0,0 +1 @@ +uid://bobw4cfg1v6gj diff --git a/player.tscn b/player.tscn new file mode 100644 index 0000000..073a6a2 --- /dev/null +++ b/player.tscn @@ -0,0 +1,24 @@ +[gd_scene format=3 uid="uid://cmb3b7xrlboy3"] + +[ext_resource type="Script" uid="uid://bobw4cfg1v6gj" path="res://player.gd" id="1_4flbx"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_sh265"] +size = Vector2(0.5, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4flbx"] +albedo_color = Color(1, 0, 0, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_sh265"] +size = Vector3(0.5, 0.1, 0.5) + +[node name="Player" type="CharacterBody3D" unique_id=17046866] +script = ExtResource("1_4flbx") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1740724392] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) +mesh = SubResource("PlaneMesh_sh265") +surface_material_override/0 = SubResource("StandardMaterial3D_4flbx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=271233394] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) +shape = SubResource("BoxShape3D_sh265") diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..a9032ea --- /dev/null +++ b/project.godot @@ -0,0 +1,53 @@ +; 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="Valencia Rail Rush" +run/main_scene="uid://dxap1hj0okhli" +config/features=PackedStringArray("4.6", "GL Compatibility") +config/icon="res://icon.svg" + +[input] + +player_move_left={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +player_move_right={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +player_move_up={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +player_move_down={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +rendering_device/driver.windows="d3d12" +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility"