~kmdodrill/my-brother-lives-in-a-canyon

ae2862646bacc363c5994654a888fb7b009b093e — Kenneth Dodrill 17 days ago fda826d
Fix gitignore exceptions
M .gitignore => .gitignore +3 -1
@@ 4,7 4,9 @@ export_presets.cfg

exports

assets
assets/*
!assets/dialogue
assets/dialogue/*
!assets/dialogue/*.json
!assets/shaders
!assets/world_environment

A assets/dialogue/end.json => assets/dialogue/end.json +139 -0
@@ 0,0 1,139 @@
[
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "jake? am I back?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah, I can hear you now."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "every time you come here we end up talking about the past."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "which isn't bad. but I wish we had more recent stories to tell."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "well...there are still lots of good stories to tell."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "like what?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "do you remember that time you were on the softball team?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "yeah...coach douglas?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "right. remember that game where the players found a gopher?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "oh yeah. I always wondered what happened to that little guy."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "the coach killed it."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "oh. that's sad. how do you know that?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "saw him do it. over by the dumpster. nobody else saw, I don't think."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "that's crazy."
  },
  {
    "type": "static"
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "did I lose you again?"
  },
  {
    "type": "static"
  }
]

A assets/dialogue/intro.json => assets/dialogue/intro.json +373 -0
@@ 0,0 1,373 @@
[
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "tom, you there?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "hey, jake."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "hi, tom."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "sorry I'm late. there were a few people broken down on the road."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "that's okay."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "...so how have things been?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "not much going on here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "well...I guess that makes sense."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "how are mom and dad?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "mom is still mom. dad - kinda funny - dad is recently super into race cars."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "but he always hated watching races! he always used to say it's not a real sport."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah...well I don't know what changed, but now he loves them."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "well, how about you? how're you doing?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I'm doing okay."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you sure?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "..."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "alright. how's your job going?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I hate it. I think I'm just not cut out to work with other people."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you've always been a \"party over here, I'll be over there\" kinda guy."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "how is beth?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "she's alright. she asked about you the other day."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "what did she say?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "...mostly just wondering how you can be living here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I wonder that, too."
  },
  {
    "type": "pause",
    "time": 4
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you there, jake?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah, I'm here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "remember when I would delete your save games when we were kids?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah. I stopped playing games for awhile because of that."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "well...guess you don't have to worry about that now."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "c'mon man. don't say things like that."
  },
  {
    "type": "pause",
    "time": 4
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "mom and dad still don't know?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "no."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I wonder how they would respond."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "probably wouldn't believe me."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you could just take them here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "do you really want that?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "maybe in the future. if I'm still here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I hope you'll be."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "...me too."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "static"
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "tom, you there?"
  },
  {
    "type": "static"
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "guess I lost him."
  }
]

A assets/dialogue/middle.json => assets/dialogue/middle.json +314 -0
@@ 0,0 1,314 @@
[
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "jake, can you hear me?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yep. guess I lost you for a bit."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you know what I really miss?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "what's that?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "root beer. I love root beer."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "remember that hat I would wear with that root beer logo on it?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah, man. you wouldn't wash that thing. so gross."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "that's just how much I loved root beer."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "listen to any good music lately?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "to be honest, I've been too busy. sometimes I'll listen in the car though."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "lotta years since we listened together."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "next time I can bring a radio or something."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "might not work well in here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "true. I'll just bring a cd player then."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "what kind of music do you want me to bring?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "reggae."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "...is that it? I don't remember you ever listening to reggae before."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I want to try something new is all."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "okay, tom. reggae it is."
  },
  {
    "type": "pause",
    "time": 4
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "jake...I get really lonely out here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "well, that's why I'm here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I'm really glad you are."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I am too."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I'm really glad you come to see me as often as you do."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "me too, tom."
  },
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "hey, remember when we went to the river near here?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "yeah, with the canoe?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "no, with the kayaks."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "oh, yeah. when you left me stranded."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I didn't leave you stranded, we were just joking around."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you and your friends took my paddle and left me there."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah, I guess we did. sorry about that."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "it's okay. I don't really care, just messing with you."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "static"
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "tom? did I lose you again?"
  },
  {
    "type": "static"
  }
]

A assets/dialogue/outro.json => assets/dialogue/outro.json +65 -0
@@ 0,0 1,65 @@
[
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "what?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "tom? can you hear me?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "jake, just keep walking in a straight line."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "okay."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "there's a lantern to your left. turn it on."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "hi, jake."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "hey, tom."
  }
]

A assets/dialogue/trailer.json => assets/dialogue/trailer.json +137 -0
@@ 0,0 1,137 @@
[
  {
    "type": "pause",
    "time": 2
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you there, jake?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah, I'm here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "remember when I would delete your save games when we were kids?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "yeah. I stopped playing games for awhile because of that."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "well...guess you don't have to worry about that now."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "c'mon man. don't say things like that."
  },
  {
    "type": "pause",
    "time": 4
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "mom and dad still don't know?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "no."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "I wonder how they would respond."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "probably wouldn't believe me."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "you could just take them here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "do you really want that?"
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "maybe in the future. if I'm still here."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "jake",
    "text": "I hope you'll be."
  },
  {
    "type": "pause",
    "time": 1
  },
  {
    "type": "voice",
    "name": "tom",
    "text": "...me too."
  }
]

A assets/shaders/dither.shader => assets/shaders/dither.shader +66 -0
@@ 0,0 1,66 @@
shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley;

uniform vec4 color: hint_color = vec4(0.5, 0.4, 0.4, 1.0);
uniform float shade_tweak = 0.5;
uniform float light_tweak = 1.0;
uniform float sharpness = 1.0;
uniform float scale = 2.0;

void fragment() {
	ALBEDO = COLOR.rgb * color.rgb;
}

float sample(vec2 coord, float alpha, float shade, float lit) {
    vec4 dither[] = {
        vec4(0.0, 0.5333333333, 0.1333333333,  0.6666666667),
        vec4(0.8, 0.2666666667, 0.9333333333,  0.4),
        vec4(0.2, 0.7333333333, 0.06666666667, 0.6),
        vec4(1.0, 0.4666666667, 0.8666666667,  0.3333333333)
    };

    int x = int(mod(coord.x, 4));
    int y = int(mod(coord.y, 4));

    for (int i = 0; i < dither.length(); i++) {
        if (y != i) {
            if (i == dither.length())
                return lit;
            continue;
        }
        
        vec4 vector = dither[i];
        switch(x) {
            case 0:
                if (vector[0] >= alpha)
                    return shade;
                break;
            case 1:
                if (vector[1] >= alpha)
                    return shade;
                break;
            case 2:
                if (vector[2] >= alpha)
                    return shade;
                break;
            case 3:
                if (vector[3] >= alpha)
                    return shade;
                break;
            default:
                break;
        }
        
        return lit;
    }
}

void light() {
	float f = min(ATTENUATION.r, min(ATTENUATION.g, ATTENUATION.b));
	float a = sample(
		FRAGCOORD.xy * (1.0 / scale),
		clamp(dot(NORMAL, LIGHT) + sharpness, 0.0, 1.0 + sharpness) * f,
		shade_tweak,
		light_tweak);
	DIFFUSE_LIGHT += ALBEDO * a;
}

A assets/world_environment/World.tres => assets/world_environment/World.tres +16 -0
@@ 0,0 1,16 @@
[gd_resource type="Environment" load_steps=2 format=2]

[ext_resource path="res://assets/world_environment/proceduralsky.tres" type="ProceduralSky" id=1]

[resource]
background_mode = 2
background_sky = ExtResource( 1 )
background_color = Color( 0.772549, 0.705882, 0.705882, 1 )
ambient_light_color = Color( 0.458966, 0.457779, 0.495436, 0.55604 )
ambient_light_energy = 1.1
ambient_light_sky_contribution = 0.3
fog_enabled = true
fog_depth_end = 700.0
fog_depth_curve = 1.31951
tonemap_mode = 2
tonemap_white = 16.0

A assets/world_environment/proceduralsky.tres => assets/world_environment/proceduralsky.tres +9 -0
@@ 0,0 1,9 @@
[gd_resource type="ProceduralSky" format=2]

[resource]
sky_top_color = Color( 0.101961, 0.360784, 0.564706, 1 )
sky_horizon_color = Color( 0.690196, 0.819608, 0.921569, 1 )
ground_bottom_color = Color( 0.690196, 0.819608, 0.921569, 1 )
ground_horizon_color = Color( 0.690196, 0.819608, 0.921569, 1 )
sun_angle_max = 30.0
sun_energy = 30.0