3 Commits

Author SHA1 Message Date
5f0a48e96d fix: new dialogue
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 2m29s
2025-08-03 15:34:34 +02:00
cfe154e754 fix: sound tweaks
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 2m31s
2025-08-03 15:27:43 +02:00
8775e17258 feat:ambiance
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m42s
2025-08-03 14:43:49 +02:00
21 changed files with 316 additions and 43 deletions

View File

@ -2,7 +2,7 @@ extends RigidBody2D
@onready var area_2d: Area2D = $Area2D
@onready var kill_after: Timer = $KillAfter
@onready var kill_audio: AudioStreamPlayer = $KillAudio
@onready var kill_audio: AudioStreamPlayer2D = $KillAudio
@export var speed = 100
@export var rotation_speed = 1

View File

@ -51,8 +51,9 @@ wait_time = 3.0
one_shot = true
ignore_time_scale = true
[node name="KillAudio" type="AudioStreamPlayer" parent="."]
[node name="KillAudio" type="AudioStreamPlayer2D" parent="."]
stream = SubResource("AudioStreamRandomizer_l8mgh")
max_distance = 100.0
bus = &"SFX"
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -5,29 +5,41 @@ bus/1/name = &"SFX"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = -9.2092
bus/1/volume_db = -12.4611
bus/1/send = &"Master"
bus/2/name = &"Ambiance"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = -9.2092
bus/2/volume_db = -16.4004
bus/2/send = &"Master"
bus/3/name = &"Music"
bus/3/solo = false
bus/3/mute = false
bus/3/bypass_fx = false
bus/3/volume_db = -4.003
bus/3/volume_db = -16.4004
bus/3/send = &"Master"
bus/4/name = &"Gearup"
bus/4/solo = false
bus/4/mute = false
bus/4/bypass_fx = false
bus/4/volume_db = 0.0
bus/4/volume_db = -6.25101
bus/4/send = &"Master"
bus/5/name = &"Steps"
bus/5/solo = false
bus/5/mute = false
bus/5/bypass_fx = false
bus/5/volume_db = -20.3684
bus/5/volume_db = -23.3524
bus/5/send = &"Master"
bus/6/name = &"Dialogue"
bus/6/solo = false
bus/6/mute = false
bus/6/bypass_fx = false
bus/6/volume_db = -10.9863
bus/6/send = &"Master"
bus/7/name = &"BadGuy"
bus/7/solo = false
bus/7/mute = false
bus/7/bypass_fx = false
bus/7/volume_db = -0.526013
bus/7/send = &"Master"

View File

@ -17,6 +17,7 @@ extends Node
@export var start_with_left = false
@export var left_picture: Texture2D
@export var right_picture: Texture2D
@onready var dialogue_player: AudioStreamPlayer = $DialoguePlayer
signal dialogue_ended
@ -96,7 +97,8 @@ func _on_next_letter() -> void:
ui_flicker_timer.stop()
e_ui_button.visible = false
next_label.visible = false
dialogue_player.pitch_scale = randf_range(5, 6)
dialogue_player.play()
var next_letter = current_dialogue_split.get(0)
current_dialogue_split.remove_at(0)
current_dialogue += next_letter

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://bmng6wjt0paof"]
[gd_scene load_steps=3 format=3 uid="uid://bmng6wjt0paof"]
[ext_resource type="Script" uid="uid://k2r3aatbbyie" path="res://dialogues/dialogue_manager.gd" id="1_6nn6f"]
[ext_resource type="AudioStream" uid="uid://cx7g00rpjodv3" path="res://world_assets/audio/speech.wav" id="2_8cgcf"]
[node name="DialogueManager" type="Node"]
script = ExtResource("1_6nn6f")
@ -13,5 +14,9 @@ ignore_time_scale = true
wait_time = 0.05
ignore_time_scale = true
[node name="DialoguePlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_8cgcf")
bus = &"Dialogue"
[connection signal="timeout" from="UIFlickerTimer" to="." method="toggle_ui"]
[connection signal="timeout" from="TimeBetweenLetters" to="." method="_on_next_letter"]

View File

@ -87,7 +87,7 @@ one_shot = true
stream = ExtResource("5_iblih")
autoplay = true
max_distance = 400.0
bus = &"SFX"
bus = &"BadGuy"
[connection signal="body_entered" from="TriggerHit" to="." method="_on_trigger_hit_body_entered"]
[connection signal="timeout" from="TimeToFinishHit" to="." method="_on_time_to_finish_hit_timeout"]

20
main.gd
View File

@ -25,6 +25,8 @@ var active_camera: SuperCamera
@onready var red_hood_cutscene: AnimationPlayer = $RedHoodCutscene
@onready var final_cutscene: AnimationPlayer = $FinalCutscene
@onready var ambiance: AudioStreamPlayer = $Ambiance
var ambiance_stream: AudioStreamInteractive
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
@ -32,8 +34,9 @@ func _ready() -> void:
if is_instance_of(child, SuperCamera):
child.became_active.connect(on_camera_became_active)
#opening_cutscene.play("opening_cutscene")
#opening_fade_to_black.visible = true
ambiance.get_stream_playback().switch_to_clip_by_name("Start")
opening_cutscene.play("opening_cutscene")
opening_fade_to_black.visible = true
func on_camera_became_active(camera: SuperCamera):
active_camera = camera
@ -56,6 +59,7 @@ func _process(delta: float) -> void:
func _on_start_dancing() -> void:
dance_cutscene.play("dance")
ambiance.stop()
func restart_at_first_scene():
get_tree().change_scene_to_file("res://main.tscn")
@ -81,3 +85,15 @@ func _on_final_armor_dialogue_ended() -> void:
func _on_final_cinematic_body_entered(body: Node2D) -> void:
final_cutscene.play("cutscene")
func _on_balade_ambiance_body_entered(body: Node2D) -> void:
ambiance.get_stream_playback().switch_to_clip_by_name("Forest")
func _on_squelettes_ambiance_body_entered(body: Node2D) -> void:
ambiance.get_stream_playback().switch_to_clip_by_name("Squelettes")
func _on_cave_ambiance_body_entered(body: Node2D) -> void:
ambiance.get_stream_playback().switch_to_clip_by_name("Cave")

144
main.tscn
View File

@ -1,4 +1,4 @@
[gd_scene load_steps=122 format=4 uid="uid://s1cx1gvt4bed"]
[gd_scene load_steps=128 format=4 uid="uid://s1cx1gvt4bed"]
[ext_resource type="Script" uid="uid://cvtt52wodbopm" path="res://main.gd" id="1_272bh"]
[ext_resource type="PackedScene" uid="uid://yvp44oauis4n" path="res://player/player.tscn" id="1_ig7tw"]
@ -28,6 +28,10 @@
[ext_resource type="AudioStream" uid="uid://dfmfve4c3l4fb" path="res://world_assets/audio/564024__gertraut_hecher__harp-arpeggio-medieval-tune.wav" id="26_xuqvo"]
[ext_resource type="AudioStream" uid="uid://cqqa1wa2qs8ib" path="res://world_assets/audio/575585_gertraut_hecher_medieval_life_minstrels_and_jugglers.wav" id="27_qsp4k"]
[ext_resource type="AudioStream" uid="uid://ohxncjlv12wy" path="res://world_assets/audio/787351__gertraut_hecher__medieval-dance-saltarello.wav" id="28_kq58d"]
[ext_resource type="AudioStream" uid="uid://d2vbc5xbu67no" path="res://world_assets/audio/ambiance/forestStart.wav" id="29_seu75"]
[ext_resource type="AudioStream" uid="uid://cp2acg3q53jia" path="res://world_assets/audio/ambiance/forestBalade.wav" id="30_htxhm"]
[ext_resource type="AudioStream" uid="uid://bsosrbr0tgg25" path="res://world_assets/audio/ambiance/squelettes.mp3" id="31_jq2sk"]
[ext_resource type="AudioStream" uid="uid://o8kcbs7gk61y" path="res://world_assets/audio/ambiance/cave.wav" id="32_htxhm"]
[sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"]
atlas = ExtResource("3_dg77c")
@ -1265,31 +1269,104 @@ stream_0/stream = ExtResource("26_xuqvo")
stream_1/stream = ExtResource("27_qsp4k")
stream_2/stream = ExtResource("28_kq58d")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_htxhm"]
size = Vector2(14, 33)
[sub_resource type="AudioStreamInteractive" id="AudioStreamInteractive_4k2k6"]
clip_count = 4
clip_0/name = &"Start"
clip_0/stream = ExtResource("29_seu75")
clip_0/auto_advance = 0
clip_1/name = &"Forest"
clip_1/stream = ExtResource("30_htxhm")
clip_1/auto_advance = 0
clip_2/name = &"Squelettes"
clip_2/stream = ExtResource("31_jq2sk")
clip_2/auto_advance = 0
clip_3/name = &"Cave"
clip_3/stream = ExtResource("32_htxhm")
clip_3/auto_advance = 0
_transitions = {
Vector2i(0, 0): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 0
},
Vector2i(0, 1): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 1
},
Vector2i(1, 1): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 0
},
Vector2i(1, 2): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 1
},
Vector2i(2, 2): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 0
},
Vector2i(2, 3): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 1
},
Vector2i(3, 3): {
"fade_beats": 1.0,
"fade_mode": 3,
"from_time": 0,
"to_time": 0
}
}
[node name="Main" type="Node2D"]
script = ExtResource("1_272bh")
[node name="OpeningDialogue" parent="." instance=ExtResource("2_efxa6")]
dialogue = "Aha! Finally I will beat you!
dialogue = "Finally I will vanquish you!
---
Who are you ?
---
No one can destroy me anymore!
"
---
But who are you?
---
I am tougher, more violent and more unfeeling than ever!
---
But why do you want to attack me?
---
I AM THE BEST!"
start_with_left = true
left_picture = SubResource("AtlasTexture_ycdy4")
right_picture = ExtResource("5_cegan")
[node name="NPCFirstDialogue" parent="." instance=ExtResource("2_efxa6")]
dialogue = "They attacked you too? I had to fight! I'm not a fighter...
dialogue = "You look worried, traveller. Were you attacked?
---
The villain wants to destroy me too!
Yes, I couldnt do a thing! I cant handle this villain!
---
Well the only way through this way is with my shield."
Well, there are villains onward too. Im gearing up to resist them.
---
I need to gear up too!
---
Well the only way forward is with my shield…"
left_picture = ExtResource("5_cegan")
right_picture = ExtResource("6_getpj")
[node name="ShieldChoice" parent="." instance=ExtResource("2_vivmo")]
choice = "Well the only way through this way is with my shield."
choice = "Well the only way forward is with my shield"
accept_option = "Take shield"
reject_option = "Dance instead"
@ -1408,7 +1485,7 @@ collision_mask = 4
shape = SubResource("RectangleShape2D_w48qg")
[node name="ArrowSpawner" parent="." instance=ExtResource("15_vivmo")]
position = Vector2(3392, -8)
position = Vector2(3391, -11.485)
[node name="TriggerSecondNPCDialogue" type="Area2D" parent="."]
position = Vector2(3455, -11)
@ -1427,12 +1504,12 @@ dialogue = "You beat my arrow trap!
---
Yes, I am tough enough.
---
But you cannot pass here without dirtying your hands."
But you cannot pass here without dirtying your hands, ranger."
left_picture = ExtResource("5_cegan")
right_picture = ExtResource("14_getpj")
[node name="SwordChoice" parent="." instance=ExtResource("2_vivmo")]
choice = "*She drops a sword*"
choice = "*She throws a sword at your feet*"
accept_option = "Take sword"
reject_option = "Dance instead"
@ -1466,10 +1543,11 @@ autoplay = "default"
frame_progress = 0.37434
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="Armoire"]
position = Vector2(0, 17)
stream = ExtResource("19_0odxb")
autoplay = true
max_distance = 400.0
bus = &"SFX"
bus = &"BadGuy"
[node name="Firewall" type="AnimatedSprite2D" parent="."]
position = Vector2(5386, -32)
@ -1479,13 +1557,13 @@ autoplay = "idle"
frame_progress = 0.470971
[node name="Skeleton" parent="." instance=ExtResource("19_d13ii")]
position = Vector2(3753, -16)
position = Vector2(3764, -16)
[node name="Skeleton2" parent="." instance=ExtResource("19_d13ii")]
position = Vector2(3822, -16)
position = Vector2(3841, -16)
[node name="Skeleton3" parent="." instance=ExtResource("19_d13ii")]
position = Vector2(3935, -16)
position = Vector2(3934, -16)
[node name="TriggerFinalDialogue" type="Area2D" parent="."]
position = Vector2(5178, -11)
@ -1499,7 +1577,7 @@ dialogue = "Impressive, you destroyed your ancestors bodies!
---
Yes, I am strong enough.
---
You are worthy of passing the fire wall."
You are worthy of passing the fire wall, warrior."
left_picture = ExtResource("5_cegan")
right_picture = ExtResource("14_getpj")
@ -1515,9 +1593,7 @@ left_picture = ExtResource("5_cegan")
right_picture = ExtResource("14_getpj")
[node name="FinalArmor" parent="." instance=ExtResource("2_efxa6")]
dialogue = "Victory! I cannot feel the fire now!
---
Hehehehehehe..."
dialogue = "Victory! I cannot feel the fire now!"
start_with_left = true
left_picture = ExtResource("5_cegan")
right_picture = ExtResource("14_getpj")
@ -1700,6 +1776,35 @@ libraries = {
stream = SubResource("AudioStreamRandomizer_seu75")
bus = &"Music"
[node name="BaladeAmbiance" type="Area2D" parent="."]
position = Vector2(347, -13)
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="BaladeAmbiance"]
position = Vector2(-18, -5.5)
shape = SubResource("RectangleShape2D_htxhm")
[node name="SquelettesAmbiance" type="Area2D" parent="."]
position = Vector2(2397, -14)
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="SquelettesAmbiance"]
position = Vector2(-18, -5.5)
shape = SubResource("RectangleShape2D_htxhm")
[node name="CaveAmbiance" type="Area2D" parent="."]
position = Vector2(4364, -13)
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="CaveAmbiance"]
position = Vector2(-18, -5.5)
shape = SubResource("RectangleShape2D_htxhm")
[node name="Ambiance" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamInteractive_4k2k6")
autoplay = true
bus = &"Ambiance"
[connection signal="dialogue_ended" from="OpeningDialogue" to="Player" method="_on_dialogue_manager_dialogue_ended"]
[connection signal="dialogue_ended" from="NPCFirstDialogue" to="ShieldChoice" method="start_choice"]
[connection signal="accepted" from="ShieldChoice" to="NPCShieldDialogue" method="on_dialogue_started"]
@ -1729,3 +1834,6 @@ bus = &"Music"
[connection signal="dialogue_ended" from="FinalArmor" to="." method="_on_final_armor_dialogue_ended"]
[connection signal="dialogue_ended" from="FinalArmor" to="Player" method="_on_final_armor_dialogue_ended"]
[connection signal="body_entered" from="FinalCinematic" to="." method="_on_final_cinematic_body_entered"]
[connection signal="body_entered" from="BaladeAmbiance" to="." method="_on_balade_ambiance_body_entered"]
[connection signal="body_entered" from="SquelettesAmbiance" to="." method="_on_squelettes_ambiance_body_entered"]
[connection signal="body_entered" from="CaveAmbiance" to="." method="_on_cave_ambiance_body_entered"]

View File

@ -21,7 +21,7 @@ var gravity_modifier = 1
@onready var base: AnimatedSprite2D = $Base
var current_sprite: AnimatedSprite2D
var is_in_cutscene = false # back to true on build
var is_in_cutscene = true # back to true on build
var current_animation = "idle"
var is_hitting = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=90 format=3 uid="uid://yvp44oauis4n"]
[gd_scene load_steps=91 format=3 uid="uid://yvp44oauis4n"]
[ext_resource type="Script" uid="uid://c1fqj3lba7wik" path="res://player/player.gd" id="1_yw30f"]
[ext_resource type="Texture2D" uid="uid://cjruk5xlt3tyn" path="res://ennemy/MechantVol.png" id="2_ebec5"]
@ -11,6 +11,7 @@
[ext_resource type="Texture2D" uid="uid://dsxvqsh3umw01" path="res://player/assets/RunCycle.png" id="5_boad6"]
[ext_resource type="PackedScene" uid="uid://djwoetcyvvofc" path="res://damageable/damageable.tscn" id="5_g6k8r"]
[ext_resource type="Shape2D" uid="uid://6rhdwj5jxbxn" path="res://player/player_collision.tres" id="5_qjkh3"]
[ext_resource type="Texture2D" uid="uid://bhrqdo0cadpf4" path="res://player/assets/IdleArmes.png" id="6_s7qer"]
[ext_resource type="Texture2D" uid="uid://dw6tn0grt2ajc" path="res://player/assets/WalkCycle.png" id="10_yllr7"]
[ext_resource type="PackedScene" uid="uid://7sqwi3lygb1u" path="res://damageable/hitbox.tscn" id="11_2ieo8"]
[ext_resource type="AudioStream" uid="uid://cw85p1vga71gf" path="res://world_assets/audio/443275__loscolt890__regularfootstep001.wav" id="14_32hag"]
@ -184,13 +185,13 @@ region = Rect2(128, 0, 32, 32)
atlas = ExtResource("4_8t03j")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ieo8"]
atlas = ExtResource("2_hg6s5")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j3r50"]
atlas = ExtResource("6_s7qer")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ebec5"]
atlas = ExtResource("2_hg6s5")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_utr5e"]
atlas = ExtResource("6_s7qer")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yllr7"]
atlas = ExtResource("2_hg6s5")
@ -325,10 +326,10 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_2ieo8")
"texture": SubResource("AtlasTexture_j3r50")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ebec5")
"texture": SubResource("AtlasTexture_utr5e")
}],
"loop": true,
"name": &"idle",
@ -611,10 +612,8 @@ autoplay = "power_up"
visible = false
position = Vector2(0, -16)
sprite_frames = SubResource("SpriteFrames_jfgyi")
animation = &"hit"
animation = &"idle"
autoplay = "idle"
frame = 5
frame_progress = 1.0
[node name="Shield" type="AnimatedSprite2D" parent="."]
visible = false

Binary file not shown.

BIN
world_assets/audio/ambiance/cave.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://o8kcbs7gk61y"
path="res://.godot/imported/cave.wav-071e4e9db8b82e78f5761bb71d5d3a50.sample"
[deps]
source_file="res://world_assets/audio/ambiance/cave.wav"
dest_files=["res://.godot/imported/cave.wav-071e4e9db8b82e78f5761bb71d5d3a50.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
world_assets/audio/ambiance/forestBalade.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cp2acg3q53jia"
path="res://.godot/imported/forestBalade.wav-9617cba8117af19ba773ed0a8684bf46.sample"
[deps]
source_file="res://world_assets/audio/ambiance/forestBalade.wav"
dest_files=["res://.godot/imported/forestBalade.wav-9617cba8117af19ba773ed0a8684bf46.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
world_assets/audio/ambiance/forestStart.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d2vbc5xbu67no"
path="res://.godot/imported/forestStart.wav-2520218bd0752b21dd94fed54c0e8eb5.sample"
[deps]
source_file="res://world_assets/audio/ambiance/forestStart.wav"
dest_files=["res://.godot/imported/forestStart.wav-2520218bd0752b21dd94fed54c0e8eb5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
world_assets/audio/ambiance/squelettes.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bsosrbr0tgg25"
path="res://.godot/imported/squelettes.mp3-9027dfbd5e5cfc4a67500f4d603f2764.mp3str"
[deps]
source_file="res://world_assets/audio/ambiance/squelettes.mp3"
dest_files=["res://.godot/imported/squelettes.mp3-9027dfbd5e5cfc4a67500f4d603f2764.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

BIN
world_assets/audio/speech.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cx7g00rpjodv3"
path="res://.godot/imported/speech.wav-bc0a9d9ada1c2a9d6bbebfb9544b3b3b.sample"
[deps]
source_file="res://world_assets/audio/speech.wav"
dest_files=["res://.godot/imported/speech.wav-bc0a9d9ada1c2a9d6bbebfb9544b3b3b.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2