diff --git a/pulsjam2025/NPC/penguin/group.gd b/pulsjam2025/NPC/penguin/group.gd
index 370d21aa81b1a13af0613ac5d4a5d1d680ed8d90..784042e60e2773b7d4c8ecb3b3390bbec0a54d17 100644
--- a/pulsjam2025/NPC/penguin/group.gd
+++ b/pulsjam2025/NPC/penguin/group.gd
@@ -10,6 +10,7 @@ var penguin_scene: PackedScene = load("res://NPC/penguin/penguin.tscn")
 var penguins : Array[Penguin] = []
 
 func _ready() -> void:
+	Globals.pengu_group = self
 	timer.connect("timeout", Callable(self, "_on_timer_timeout"))
 	start_random_timer()
 	
diff --git a/pulsjam2025/NPC/penguin/penguin.gd b/pulsjam2025/NPC/penguin/penguin.gd
index 90c18643b233dcaec492df32989c09f858bd6803..aa27a0e8ce16135d65cc46ec915638df112e40f1 100644
--- a/pulsjam2025/NPC/penguin/penguin.gd
+++ b/pulsjam2025/NPC/penguin/penguin.gd
@@ -64,6 +64,8 @@ func _process(delta: float) -> void:
 	var dir = (target - position).normalized()
 	var bump_dir = Vector2.ZERO
 	
+	self.rotation = -get_parent().rotation
+	
 	var near_areas: Array[Area2D] = $Area2D.get_overlapping_areas();
 	cluster_score = 0
 	for area in near_areas: 
diff --git a/pulsjam2025/Player/PlayerScene.tscn b/pulsjam2025/Player/PlayerScene.tscn
index fd78fcbce1465642628442cfd71fa0544d5e289e..e4c60ccba3e83fe04dcdbd09d8894031cdea6898 100644
--- a/pulsjam2025/Player/PlayerScene.tscn
+++ b/pulsjam2025/Player/PlayerScene.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=22 format=3 uid="uid://cwmunv68b7txk"]
+[gd_scene load_steps=23 format=3 uid="uid://cwmunv68b7txk"]
 
 [ext_resource type="Script" uid="uid://babk78kqf724a" path="res://Player/PlayerMovement.gd" id="1_ihrqt"]
 [ext_resource type="PackedScene" uid="uid://dfe8d0dg2yioj" path="res://Player/FishScene.tscn" id="2_rded7"]
@@ -11,6 +11,7 @@
 [ext_resource type="Texture2D" uid="uid://c771pbnvtsr6t" path="res://Player/bird_up_2.png" id="9_dplev"]
 [ext_resource type="Texture2D" uid="uid://0il2dq67vsbg" path="res://Player/bird_down.png" id="10_7d6og"]
 [ext_resource type="Texture2D" uid="uid://uc2v17mafr6n" path="res://Player/bird_down_2.png" id="11_183bc"]
+[ext_resource type="PackedScene" uid="uid://bx2qxdfk08ti8" path="res://Player/camera/camera_2d.tscn" id="12_183bc"]
 
 [sub_resource type="GDScript" id="GDScript_yjw77"]
 
@@ -311,8 +312,6 @@ area2D = NodePath("Area2D")
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 shape = SubResource("CircleShape2D_ihrqt")
 
-[node name="AudioListener2D" type="AudioListener2D" parent="."]
-
 [node name="FishCooldownTimer" type="Timer" parent="."]
 one_shot = true
 
@@ -342,6 +341,8 @@ libraries = {
 }
 speed_scale = 1.5
 
+[node name="Camera" parent="." instance=ExtResource("12_183bc")]
+
 [connection signal="timeout" from="FishCooldownTimer" to="." method="_on_fish_cooldown_timer_timeout"]
 [connection signal="timeout" from="FishDespawnTimer" to="." method="_on_fish_despawn_timer_timeout"]
 [connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/pulsjam2025/Player/TestScene.tscn b/pulsjam2025/Player/TestScene.tscn
index 368a71e0756f8c6a06e1052fd40e2dd9c6fa88fb..2a51d25e50d8cd5de4fd3a67ad002b882c339aa9 100644
--- a/pulsjam2025/Player/TestScene.tscn
+++ b/pulsjam2025/Player/TestScene.tscn
@@ -5,9 +5,6 @@
 
 [node name="TestScene" type="Node2D"]
 
-[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(591, 335)
-
 [node name="SchollenSpektakel" parent="." instance=ExtResource("2_oh42m")]
 position = Vector2(-17, 66)
 
diff --git a/pulsjam2025/Player/camera/camera_2d.tscn b/pulsjam2025/Player/camera/camera_2d.tscn
new file mode 100644
index 0000000000000000000000000000000000000000..39d8a6ce98f7df4f33c147f4d98c2ebcf15feff0
--- /dev/null
+++ b/pulsjam2025/Player/camera/camera_2d.tscn
@@ -0,0 +1,92 @@
+[gd_scene load_steps=3 format=3 uid="uid://bx2qxdfk08ti8"]
+
+[ext_resource type="PackedScene" uid="uid://coryu5r8revlm" path="res://hud/hud.tscn" id="1_hmhh6"]
+
+[sub_resource type="GDScript" id="GDScript_etdkj"]
+script/source = "extends Node
+
+@onready var player = get_parent()
+@onready var base_zoom: Vector2 = %Cam.zoom
+@onready var min_zoom := Vector2(0.5, 0.5)
+@onready var max_zoom := Vector2(0.9, 0.9)
+
+# ScreenShake logic
+@export var max_offset: float = 5.0
+@export var max_roll: float = 10.0
+@export var shakeReduction: float = 2.5
+
+@export var move_factor := 30.0
+
+var stress: float = 0.0
+var shake: float = 0.0
+
+var extra_zoom := Vector2.ZERO
+var zoom_accel := Vector2.ZERO
+
+func _ready() -> void:
+	Globals.camera = self
+
+func _physics_process(delta: float) -> void:
+	if not Globals.level_center:
+		return
+	
+	# Position
+	var pos = Globals.level_center.global_position + (player.global_position + Globals.level_center.global_position) / move_factor
+	%Cam.offset = pos -Vector2.ONE * 50
+	#print(%Cam.global_position)
+	
+	# Zoom
+	zoom_accel = zoom_accel / 2.0
+	zoom_accel += Vector2(player.velocity.length(), player.velocity.length()) / 1000000 - Vector2.ONE / 2000
+	var distance = player.global_position.distance_to(Globals.level_center.global_position)
+	extra_zoom = -Vector2(distance, distance) / 100000
+	extra_zoom = clamp(extra_zoom + zoom_accel, min_zoom - base_zoom, max_zoom - base_zoom)
+	
+	#print(extra_zoom, zoom_accel, distance, pos, %Cam.global_position)
+	
+	%Cam.zoom = base_zoom + extra_zoom
+	_process_shake(delta)
+
+func _process_shake(delta) -> void:
+	# Lerp to normal position/rotation
+	%Cam.rotation_degrees = lerp( %Cam.rotation_degrees, 0.0, delta * 5.0)
+	
+	%Cam.position.x = lerp( %Cam.position.x, 0.0, delta * 5.0)
+	%Cam.position.y = lerp( %Cam.position.y, 0.0, delta * 5.0)
+	
+	# Shake logic
+	shake = stress * stress
+	
+	# Rotation
+	%Cam.rotation_degrees += max_roll * shake * _get_noise(randi(), delta) * 100
+	
+	# Position
+	var offset_x = max_offset * shake * _get_noise(randi(), delta + 1.0)
+	var offset_y = max_offset * shake * _get_noise(randi(), delta + 2.0)
+	
+	%Cam.position = Vector2(offset_x, offset_y) * 10
+	
+	# Shake reduction
+	stress -= shakeReduction * delta
+	stress = max(0, stress)
+
+func _get_noise(noise_seed, time) -> float:
+	var n = FastNoiseLite.new()
+	n.seed = noise_seed
+	
+	return n.get_noise_1d(time)
+
+func add_stress(amount: float) -> void:
+	stress += amount
+	stress = max(0, stress)
+"
+
+[node name="Camera" type="Node"]
+script = SubResource("GDScript_etdkj")
+
+[node name="Cam" type="Camera2D" parent="."]
+unique_name_in_owner = true
+
+[node name="CanvasLayer" type="CanvasLayer" parent="Cam"]
+
+[node name="HUD" parent="Cam/CanvasLayer" instance=ExtResource("1_hmhh6")]
diff --git a/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png b/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png
new file mode 100644
index 0000000000000000000000000000000000000000..becd10576834e1cd5441d5fae8cd19fa7d9cd1a8
Binary files /dev/null and b/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png differ
diff --git a/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png.import b/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png.import
new file mode 100644
index 0000000000000000000000000000000000000000..845d2dc858f29ce241939841836d5f813e7509ce
--- /dev/null
+++ b/pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png.import	
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bgcrh2gh8dd7d"
+path="res://.godot/imported/Screenshot 2025-03-15 at 22.17.23.png-d8fba5094fe8ec212930d27b8114ca90.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Screenshot 2025-03-15 at 22.17.23.png"
+dest_files=["res://.godot/imported/Screenshot 2025-03-15 at 22.17.23.png-d8fba5094fe8ec212930d27b8114ca90.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
diff --git a/pulsjam2025/globals.gd b/pulsjam2025/globals.gd
index 69e617d509f1a90266d23b072470eafb9bf3e9b6..6bdf9d8494680cb21e3456ae607e58f8b2ee5435 100644
--- a/pulsjam2025/globals.gd
+++ b/pulsjam2025/globals.gd
@@ -1,19 +1,32 @@
 extends Node
 
 signal score_changed
+signal highscore_changed
 
 var level_center: Node2D = null
 
 var ice_floes: Array[IceFloe] = []
 
+var camera: Node = null
+
 var score: int = 0:
 	set(val):
 		score = val
 		emit_signal("score_changed", val)
 
+var highscore: int = 0:
+	set(val):
+		score = val
+		emit_signal("highscore_changed", val)
+
+var pengu_group: Node
+
 var _score_timer := Timer.new()
 
 func start_round():
+	if not pengu_group:
+		printerr("Cant start - No pengu group")
+		return
 	add_child(_score_timer)
-	_score_timer.timeout.connect(func(): score += 1)
+	_score_timer.timeout.connect(func(): score += pengu_group.n_penguins)
 	_score_timer.start(1.0)
diff --git a/pulsjam2025/hud/hud.tscn b/pulsjam2025/hud/hud.tscn
index 756b81527ef73be305cf4c65ea8c0d6c2567f5fe..e36ffa6c0d6bef8920406a497e21a1177afa23b6 100644
--- a/pulsjam2025/hud/hud.tscn
+++ b/pulsjam2025/hud/hud.tscn
@@ -1,20 +1,34 @@
-[gd_scene load_steps=4 format=3 uid="uid://coryu5r8revlm"]
+[gd_scene load_steps=6 format=3 uid="uid://coryu5r8revlm"]
 
 [ext_resource type="FontFile" uid="uid://2c10u3pux7je" path="res://Winter Minie.ttf" id="1_6ca3a"]
+[ext_resource type="Texture2D" uid="uid://bgcrh2gh8dd7d" path="res://Screenshot 2025-03-15 at 22.17.23.png" id="2_2gk58"]
 
 [sub_resource type="GDScript" id="GDScript_6ca3a"]
 script/source = "extends Control
 
 func _ready() -> void:
 	Globals.score_changed.connect(update_score)
+	Globals.highscore_changed.connect(update_highscore)
 
 func update_score(score) -> void:
-	$MarginContainer/ScoreLabel.text = str(score)
+	%ScoreLabel.text = str(score)
+	%SCORE.text = str(score)
+
+func update_highscore(score) -> void:
+	%HIGHSCORE.text = str(score)
 "
 
 [sub_resource type="LabelSettings" id="LabelSettings_2gk58"]
 font = ExtResource("1_6ca3a")
 font_size = 86
+shadow_size = 5
+shadow_color = Color(0, 0, 0, 0.21)
+
+[sub_resource type="LabelSettings" id="LabelSettings_318vg"]
+font = ExtResource("1_6ca3a")
+font_size = 36
+shadow_size = 11
+shadow_color = Color(0, 0, 0, 0.21)
 
 [node name="HUD" type="Control"]
 layout_mode = 3
@@ -27,7 +41,7 @@ size_flags_horizontal = 3
 size_flags_vertical = 3
 script = SubResource("GDScript_6ca3a")
 
-[node name="MarginContainer" type="MarginContainer" parent="."]
+[node name="Gameplay" type="MarginContainer" parent="."]
 layout_mode = 1
 anchors_preset = 15
 anchor_right = 1.0
@@ -37,9 +51,124 @@ grow_vertical = 2
 theme_override_constants/margin_left = 20
 theme_override_constants/margin_top = 20
 
-[node name="ScoreLabel" type="Label" parent="MarginContainer"]
+[node name="ScoreLabel" type="Label" parent="Gameplay"]
+unique_name_in_owner = true
 layout_mode = 2
 size_flags_horizontal = 0
 size_flags_vertical = 0
 text = "0"
 label_settings = SubResource("LabelSettings_2gk58")
+
+[node name="Start" type="MarginContainer" parent="."]
+visible = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+theme_override_constants/margin_left = 20
+theme_override_constants/margin_top = 20
+
+[node name="TextureRect" type="TextureRect" parent="Start"]
+layout_mode = 2
+size_flags_vertical = 0
+texture = ExtResource("2_2gk58")
+stretch_mode = 3
+
+[node name="CenterContainer" type="CenterContainer" parent="Start"]
+layout_mode = 2
+
+[node name="label" type="Label" parent="Start/CenterContainer"]
+layout_mode = 2
+size_flags_horizontal = 0
+size_flags_vertical = 0
+text = "
+
+
+
+Press any key to
+Start"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 1
+
+[node name="GameOver" type="MarginContainer" parent="."]
+visible = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+theme_override_constants/margin_left = 20
+theme_override_constants/margin_top = 20
+
+[node name="CenterContainer" type="CenterContainer" parent="GameOver"]
+layout_mode = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="GameOver/CenterContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="ScoreLabel" type="Label" parent="GameOver/CenterContainer/VBoxContainer"]
+modulate = Color(0.999969, 0.614075, 0.555964, 1)
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+text = "-Game Over-"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 1
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="GameOver/CenterContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer2"]
+modulate = Color(0.819655, 0.819655, 0.819655, 1)
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+text = "Score:"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 1
+
+[node name="SCORE" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 10
+size_flags_vertical = 0
+text = "0"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="GameOver/CenterContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer"]
+modulate = Color(0.819655, 0.819655, 0.819655, 1)
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+text = "Highscore:"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 1
+
+[node name="HIGHSCORE" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 10
+size_flags_vertical = 0
+text = "0"
+label_settings = SubResource("LabelSettings_2gk58")
+horizontal_alignment = 2
+
+[node name="HSeparator" type="HSeparator" parent="GameOver/CenterContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+text = "
+Press SPACE to continue"
+label_settings = SubResource("LabelSettings_318vg")
+horizontal_alignment = 1
diff --git a/pulsjam2025/project.godot b/pulsjam2025/project.godot
index 026e724e4fa6bdcdf53e8d626881e8e622789390..976f7b58f6d4d9696ef6995b3c8ad40384e19eda 100644
--- a/pulsjam2025/project.godot
+++ b/pulsjam2025/project.godot
@@ -11,7 +11,7 @@ config_version=5
 [application]
 
 config/name="PulsJam2025"
-run/main_scene="uid://ch1i0q8d6r4f0"
+run/main_scene="uid://byb21wlyercnu"
 config/features=PackedStringArray("4.4")
 
 [autoload]
diff --git a/pulsjam2025/schollen_spektakel.tscn b/pulsjam2025/schollen_spektakel.tscn
index e513534a9834dbf6ec3ce6a71fc23fec23c63792..794540e0f949749da39369cf702c69d3c299b5ad 100644
--- a/pulsjam2025/schollen_spektakel.tscn
+++ b/pulsjam2025/schollen_spektakel.tscn
@@ -1,11 +1,10 @@
-[gd_scene load_steps=10 format=3 uid="uid://ch1i0q8d6r4f0"]
+[gd_scene load_steps=9 format=3 uid="uid://ch1i0q8d6r4f0"]
 
 [ext_resource type="Script" uid="uid://cik8umdfv5587" path="res://schollen_spektakel.gd" id="1_ij3xc"]
 [ext_resource type="PackedScene" uid="uid://d1vv1o7g2lp01" path="res://water/water.tscn" id="2_hycu0"]
 [ext_resource type="PackedScene" uid="uid://diilm3qbp1tly" path="res://ice_floe/ice_floe.tscn" id="2_ij3xc"]
 [ext_resource type="PackedScene" uid="uid://b23bxmjrcknm3" path="res://center_pos.tscn" id="4_6ndi4"]
 [ext_resource type="PackedScene" uid="uid://cgkfkbiyl02yl" path="res://ice_floe/floe_area.tscn" id="5_doghl"]
-[ext_resource type="PackedScene" uid="uid://coryu5r8revlm" path="res://hud/hud.tscn" id="6_2ljra"]
 
 [sub_resource type="FastNoiseLite" id="FastNoiseLite_doghl"]
 resource_local_to_scene = true
@@ -55,11 +54,3 @@ script = SubResource("GDScript_2ljra")
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FloeArea"]
 polygon = PackedVector2Array(-7071, -5132, 10762, -5282, 9681, 5706, -7101, 5466, -24, 690, 1193, 681, 1196, -60, -43, -63, -41, 697, -7131, 5464)
-
-[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(591, 335)
-
-[node name="CanvasLayer" type="CanvasLayer" parent="Camera2D"]
-
-[node name="HUD" parent="Camera2D/CanvasLayer" instance=ExtResource("6_2ljra")]
-metadata/_edit_use_anchors_ = true