Compare commits

...

5 Commits
rc1 ... master

Author SHA1 Message Date
Spencer Killen 31af1360f2
Add README 2023-01-05 12:55:50 -07:00
Spencer Killen 20646c952b
2023-01-05 12:49:04 -07:00
Spencer Killen d7a766dc9f
scary sound 2023-01-03 01:24:44 -07:00
Spencer Killen c4ceeca1d4
subtle bugfixes 2023-01-02 22:01:36 -07:00
Spencer Killen b468dac283
bugfixes 2023-01-01 19:59:44 -07:00
34 changed files with 118 additions and 70 deletions

16
README.md Normal file
View File

@ -0,0 +1,16 @@
# Goodnight Jellybean
Your parents took your games away. All you have to play is this boring learning game your Aunt handed down to you. I wonder why she didn't want to keep it for her youngest? You're a kid, computer controls are challenging, especially when the industry has yet to establish good design paradigms. Read and reread the instructions carefully; Learning takes time!
A 90s-esque edutainment game with a psychedelic horror aesthetic
Play-time: ~10 minutes to reach final end-screen
The very first game to leverage FunMouse(tm) (licensed by ExaSoft) an exciting new technology guaranteed to elevate your child's learning.
Created by Spencer for GamesDenUoA F22 Anthology
https://itch.io/jam/games-den-anthology/rate/1859515
[Download](https://km-k.itch.io/goodnight-jellybean)

BIN
blends/environment.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +1,3 @@
source_md5="f6f19525174d964bcfbd5e0d10af60f4" source_md5="7c602c98ab6b6d162738d3826a346a58"
dest_md5="b244913244895512a1541ec37a177db9" dest_md5="58079185907704af747ce80864c8e4a0"

View File

@ -0,0 +1,3 @@
source_md5="7c7297785e72c853ef99942fb2a995d0"
dest_md5="92315a7fb8e813c3a546ecd8d2eeb343"

View File

@ -104,10 +104,9 @@ func _process(_delta):
set_color() set_color()
var locked = false
func _physics_process(delta): func _physics_process(delta):
inc_time_buffer(delta) inc_time_buffer(delta)
if locked: if GlobalCursorState.is_frozen:
return return
var dir = input_direction() var dir = input_direction()
var speed = input_speed() var speed = input_speed()
@ -117,8 +116,3 @@ func _physics_process(delta):
sound_bump() sound_bump()
elif speed != 0.0: elif speed != 0.0:
sound_click() sound_click()
func _on_AnimationTree_motion_status(value):
locked = value

View File

@ -5,6 +5,9 @@ var is_frozen = false
signal cursor_interact signal cursor_interact
func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
func set_cursor(set_as: Node): func set_cursor(set_as: Node):
cursor = weakref(set_as) cursor = weakref(set_as)
@ -17,13 +20,14 @@ func fire_interact():
func get_cursor(): func get_cursor():
return cursor.get_ref() return cursor.get_ref()
signal freeze(enabled) signal freeze
signal unfreeze
func freeze(): func freeze():
is_frozen = true is_frozen = true
emit_signal("freeze", true) emit_signal("freeze")
func unfreeze(): func unfreeze():
is_frozen = false is_frozen = false
emit_signal("freeze", false) emit_signal("unfreeze")
# Interact events: # Interact events:

View File

@ -3,14 +3,27 @@ extends Node
onready var drone_fsm: AnimationNodeStateMachinePlayback = $DroneAudioFSM.get("parameters/playback") onready var drone_fsm: AnimationNodeStateMachinePlayback = $DroneAudioFSM.get("parameters/playback")
func _ready(): func _ready():
GlobalCursorState.connect("set_camera_zone", self, "check_attic")
$NormalDrone.play() $NormalDrone.play()
yield(get_tree().create_timer(.1), "timeout") yield(get_tree().create_timer(.1), "timeout")
$SicklyDrone.play() $SicklyDrone.play()
var has_scared = false
func _on_AnimationTree_motion_status(value): func _on_AnimationTree_motion_status(value):
if value: if value:
drone_fsm.travel("play_sickly_drone") drone_fsm.travel("play_sickly_drone")
else: else:
drone_fsm.travel("play_normal_drone") drone_fsm.travel("play_normal_drone")
func check_attic(where):
if where == "camera_attic_inner" and not has_scared:
yield(GlobalCursorState, "unfreeze")
$NormalDrone.stop()
$SicklyDrone.stop()
$SicklyDrone2.play()
yield($SicklyDrone2, "finished")
$NormalDrone.play()
$SicklyDrone.play()

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=13 format=2] [gd_scene load_steps=17 format=2]
[ext_resource path="res://assets/audio/sicky_drone.ogg" type="AudioStream" id=1] [ext_resource path="res://assets/audio/sicky_drone.ogg" type="AudioStream" id=1]
[ext_resource path="res://assets/audio/vocal_drone.ogg" type="AudioStream" id=2] [ext_resource path="res://assets/audio/vocal_drone.ogg" type="AudioStream" id=2]
[ext_resource path="res://assets/audio/AmbientSound.gd" type="Script" id=3] [ext_resource path="res://assets/audio/AmbientSound.gd" type="Script" id=3]
[ext_resource path="res://assets/audio/sicky_drone_2.ogg" type="AudioStream" id=4]
[sub_resource type="Animation" id=1] [sub_resource type="Animation" id=1]
length = 0.001 length = 0.001
@ -88,6 +89,9 @@ tracks/1/keys = {
[sub_resource type="AnimationNodeAnimation" id=4] [sub_resource type="AnimationNodeAnimation" id=4]
animation = "play_normal_drone" animation = "play_normal_drone"
[sub_resource type="AnimationNodeAnimation" id=11]
animation = "play_sicker"
[sub_resource type="AnimationNodeAnimation" id=5] [sub_resource type="AnimationNodeAnimation" id=5]
animation = "play_sickly_drone" animation = "play_sickly_drone"
@ -95,12 +99,18 @@ animation = "play_sickly_drone"
[sub_resource type="AnimationNodeStateMachineTransition" id=7] [sub_resource type="AnimationNodeStateMachineTransition" id=7]
[sub_resource type="AnimationNodeStateMachineTransition" id=12]
[sub_resource type="AnimationNodeStateMachineTransition" id=13]
[sub_resource type="AnimationNodeStateMachine" id=8] [sub_resource type="AnimationNodeStateMachine" id=8]
states/play_normal_drone/node = SubResource( 4 ) states/play_normal_drone/node = SubResource( 4 )
states/play_normal_drone/position = Vector2( 336, 128 ) states/play_normal_drone/position = Vector2( 336, 128 )
states/play_sicker/node = SubResource( 11 )
states/play_sicker/position = Vector2( 524, 446 )
states/play_sickly_drone/node = SubResource( 5 ) states/play_sickly_drone/node = SubResource( 5 )
states/play_sickly_drone/position = Vector2( 683, 227 ) states/play_sickly_drone/position = Vector2( 683, 227 )
transitions = [ "play_normal_drone", "play_sickly_drone", SubResource( 6 ), "play_sickly_drone", "play_normal_drone", SubResource( 7 ) ] transitions = [ "play_normal_drone", "play_sickly_drone", SubResource( 6 ), "play_sickly_drone", "play_normal_drone", SubResource( 7 ), "play_normal_drone", "play_sicker", SubResource( 12 ), "play_sicker", "play_normal_drone", SubResource( 13 ) ]
start_node = "play_normal_drone" start_node = "play_normal_drone"
[sub_resource type="AnimationNodeStateMachinePlayback" id=9] [sub_resource type="AnimationNodeStateMachinePlayback" id=9]
@ -116,6 +126,10 @@ volume_db = -10.0
stream = ExtResource( 1 ) stream = ExtResource( 1 )
volume_db = -10.0 volume_db = -10.0
[node name="SicklyDrone2" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
volume_db = -10.0
[node name="DroneAudioAnimation" type="AnimationPlayer" parent="."] [node name="DroneAudioAnimation" type="AnimationPlayer" parent="."]
anims/RESET = SubResource( 1 ) anims/RESET = SubResource( 1 )
anims/play_normal_drone = SubResource( 2 ) anims/play_normal_drone = SubResource( 2 )

BIN
godot/assets/audio/sicky_drone_2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/sicky_drone_2.ogg-2840f8c9e588a8dc24ba32874f0439b2.oggstr"
[deps]
source_file="res://assets/audio/sicky_drone_2.ogg"
dest_files=[ "res://.import/sicky_drone_2.ogg-2840f8c9e588a8dc24ba32874f0439b2.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/room/camera_positions.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -40,3 +40,28 @@ application/product_name=""
application/file_description="" application/file_description=""
application/copyright="" application/copyright=""
application/trademarks="" application/trademarks=""
[preset.1]
name="Linux/X11"
platform="Linux/X11"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../../Downloads/gb/Goodnight Jellybean.x86_64"
script_export_mode=1
script_encryption_key=""
[preset.1.options]
custom_template/debug=""
custom_template/release=""
binary_format/64_bits=true
binary_format/embed_pck=false
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true

View File

@ -53,7 +53,7 @@ margin_bottom = 842.0
mouse_filter = 1 mouse_filter = 1
text = "Welcome to Goodnight Jellybean! We're excited to have you join us on this educational adventure. text = "Welcome to Goodnight Jellybean! We're excited to have you join us on this educational adventure.
We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. Interact with nearby objects by pressing the middle mouse button. We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. Interact with nearby objects by pressing the middle mouse button. Please make sure your audio is turned on.
Don't have a mouse with a scroll wheel? You can also use the arrow keys and space bar to navigate and interact with the game. However, your child will be missing out on learning an important skill. Don't have a mouse with a scroll wheel? You can also use the arrow keys and space bar to navigate and interact with the game. However, your child will be missing out on learning an important skill.

View File

@ -241,10 +241,15 @@ on_leave_func = "_on_Cursor_set_camera"
call_string = "camera_outer_attic" call_string = "camera_outer_attic"
[node name="SecretEnter" parent="CameraMoveZones" instance=ExtResource( 6 )] [node name="SecretEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 8.71637, 0, 0, 0, 13.8749, 0, 0, 0, 5.83956, 0, 0, 15.4817 ) transform = Transform( 8.71637, 0, 0, 0, 13.8749, 0, 0, 0, 6.0468, 0, 0, 15.4817 )
on_enter_func = "_on_Cursor_set_camera" on_enter_func = "_on_Cursor_set_camera"
call_string = "camera_bookshelf_secret" call_string = "camera_bookshelf_secret"
[node name="SecretLeave" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 8.71637, 0, 0, 0, 13.8749, 0, 0, 0, 7.8447, 0, 0, 15.4817 )
on_leave_func = "_on_Cursor_set_camera"
call_string = "camera_pos_corner"
[node name="AmbientSound" parent="." instance=ExtResource( 7 )] [node name="AmbientSound" parent="." instance=ExtResource( 7 )]
[node name="Attic" type="Spatial" parent="."] [node name="Attic" type="Spatial" parent="."]
@ -325,7 +330,6 @@ hop = true
transform = Transform( -0.23556, 0, -0.0837355, 0, 0.25, 0, 0.0837355, 0, -0.23556, 1.2157, -3.69864, 14.5479 ) transform = Transform( -0.23556, 0, -0.0837355, 0, 0.25, 0, 0.0837355, 0, -0.23556, 1.2157, -3.69864, 14.5479 )
hop = true hop = true
[connection signal="motion_status" from="AnimationTree" to="3DCursor" method="_on_AnimationTree_motion_status"]
[connection signal="motion_status" from="AnimationTree" to="AmbientSound" method="_on_AnimationTree_motion_status"] [connection signal="motion_status" from="AnimationTree" to="AmbientSound" method="_on_AnimationTree_motion_status"]
[connection signal="motion_status" from="AnimationTree" to="Attic/AtticAmberLight" method="_on_AnimationTree_motion_status"] [connection signal="motion_status" from="AnimationTree" to="Attic/AtticAmberLight" method="_on_AnimationTree_motion_status"]

View File

@ -1,8 +0,0 @@
# This is an Asset Catalog Definition file for Blender.
#
# Empty lines and lines starting with `#` will be ignored.
# The first non-ignored line should be the version indicator.
# Other lines are of the format "UUID:catalog/path/for/assets:simple catalog name"
VERSION 1

View File

@ -1,8 +0,0 @@
# This is an Asset Catalog Definition file for Blender.
#
# Empty lines and lines starting with `#` will be ignored.
# The first non-ignored line should be the version indicator.
# Other lines are of the format "UUID:catalog/path/for/assets:simple catalog name"
VERSION 1

BIN
komodo/dm_dragonskin3.png (Stored with Git LFS)

Binary file not shown.

BIN
komodo/drooly.jpeg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/face_scales.jpg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/front.jpeg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/interior_texture.jpeg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/komodo.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
komodo/level_0_normals.png (Stored with Git LFS)

Binary file not shown.

BIN
komodo/level_1_normals.png (Stored with Git LFS)

Binary file not shown.

BIN
komodo/scales.jpg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/side_open.jpeg (Stored with Git LFS)

Binary file not shown.

BIN
komodo/side_view.jpeg (Stored with Git LFS)

Binary file not shown.

BIN
store_assets/room_screenshot.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
store_assets/text.png (Stored with Git LFS) Normal file

Binary file not shown.