Part 1: Game Jam - concept inception and core framework functionality (10/3/2023 -10/12/2023)
Editor's Note: Channel: Death started as a game jam game for Chicaghoul 2023. The jam began on October 3. For this jam, participants were only asked to create a horror, horror themed, or Halloween related game. Entries "officially selected" by an anonymous peer review process would be showcased at an in-person reception.
I met Ian, a programmer working on indie game dev, through previous local game jam showcase but had never worked with him. I went to college with Mike and we have been long time collaborators.
Ian had floated the premise of doing a game where the controller was a TV remote during a Chicago game industry meetup and I was immediately interested. We still needed to figure out how that concept worked as an actual game idea. The game jam deadline was 11:59PM October 17.
Whatevers clever, I'm in ββββ for Darkest Dreams and ββββ for my other contract work, so either of those are fine, I'll be able to use anything.
5:39 PM
Repo is good. I actually don't know now how to spin one up, I share perforce with a couple other studios so never had to start one myself.
Should we schedule a time to do a chat about the project? I'm booked solid tonight but tomorrow morning or late evening, or thursday afternoon/evening would be fine with me.
We use the built in for all our projects, but I'm not opposed to learning new stuff. My partner handles a lot of the graphics so I'm not super knowledgable in the area.
but it kind of seems easier to find shader graph tutorials for specific effects than to write shader code I guess so that is one of my lines of rationale
6:01 PM
if there are existing assets you want to use that might influence the decision too
Well I'm pretty any IR remote should be able to control a tv, so we are gonna have to cover the TV's receiver with like a piece of tape or something. But once that is done, we could use your remote.
lol just jump button triggers a jump scare, that would be great. For the adapters we most likely need hdmi to vga, but we also might need a sound output? Not sure. That TV looks great. Remote wise I think a design question would be whether you can type in channel numbers to jump to them, or would numbers be locked to interact with the current channel and you can only use ch+ or ch- to navigate
Yeah, for sound output, at the live event, I think we might need like wireless headphones straight from the PC.
1
7:09 PM
I should have something like that laying around I think
7:11 PM
Turns out I did not have the HDMI > RCA / s-video, only vice versa. So I just ordered the needed thing.
7:13 PM
"Remote wise I think a design question would be whether you can type in channel numbers to jump to them, or would numbers be locked to interact with the current channel and you can only use ch+ or ch- to navigate"
7:14 PM
Yeah I am not sure about that either.
7:15 PM
I don't know what this was for originally
7:15 PM
But it seems like something we can use that has no other built in meaning
7:17 PM
I guess pro's of letting numbers do channels is: that's what they do normally, so it's kind of intuitive / expected
7:17 PM
it also allows for some weird hidden things
7:17 PM
like channels that don't come up in the normal ch up / ch down list
7:17 PM
but that could be too hard to find. Maybe if we did the physical TV guide concept IDK.
Yeah that would def be cool. There could be some sort of delay and we only accept channel numbers of 2 numbers or something. So if they type 3rd number within 1-2 second we dont change channel, otherwise we do
I like the idea of getting kind of meta / 4th wall breaking with it. Like maybe there is one channel where there is just some creepy message but you can barely hear it and you have to use the volume buttons
One idea I have been wondering about, curious what you guys think, is some kind of way that everyone who tries the game at the event is somehow working together to solve the puzzle
7:40 PM
I'm not sure how that works exactly. Maybe it's not any different than just making the puzzle more time consuming to solve. But maybe also there needs to be more natural entrance and exit points. Like natural moments to quit and let the next person try
I have seen in person puzzle video games that encourage people to leave physical sticky notes on the game to provide clues for other people coming along. If the main solution required a specific input which is learned from other channels but the game doesn't track "progress" (just displays a portion of the final input until the channel is changed) or something it might work?
Do you think it's too weird if we set up a camera and have it's view in the game at some point? lol
8:01 PM
There could be like a camera in the ceiling corner or something lol
Editor's Note:
I was researching TV / VHS distortion artifact effects and somehow came across a sample project that turned on my webcam. This seemed like it could be an easy device that was creepy, engaging for live event audiences, and fit the TV / video themes we were working with. This would eventually turn into one of our channel minigames.
Editor's Note:
During the call, we decided I would work on the main framework for channel changing and the central puzzle, and that it would include a James Bond inspired slow moving impending doom. Ian would tackle getting the IR remote signal read in Unity. Mike would focus on visual design. Then we could collectively switch focus to creating minigames for each channel, with the benefit that they could exist encapsulated from everything else from code, design, and presentation value perspectives, and we could add more of them as time went on.
Get inspiring royalty-free stock footage shot by the industry's top cinematographers with unlimited downloads and a license that covers every type of video
Editor's Note:
While originally thinking about James Bond villain death traps, the game a shocking scene from A.I. Somnium Files came to mind. This would be easy to animate! This was a big puzzle piece falling into place for one of the defining elements of the game. π
Well, I decided to use the "new" Input System just to keep practicing it. I don't know the best patterns for it so LMK if what I have done is confusing
Here's some progress with a basic channel structure. Next I will add some kind of win / loss state tracking
11:57 PM
I am such a nerd in that all of those images are pro wrestling related since I happened to have been wearing a pro wrestling hat
11:58 PM
Also the current video filter effects do not impact the UI (the number in top right). So I will have to look into that or we may end up using a different implementation anyhow.(edited)
I ended up buying that black and white TV from consignment lounge last night lol
1
12:25 PM
But I don't know if there's really any way to use it for this project.
Editor's Note:
With the conveyor belt buzz saw death trap materializing, I knew I wanted some good gore to punctuate kills in a climactic way and call back to gory slasher films of the 80s and 90s. π
A simple, yet powerful chromakey / greenscreen solution for Unity. Designed to be used with virtual production. - GitHub - otdavies/UnityChromakey: A simple, yet powerful chromakey / greenscreen so...
Editor's Note:
The idea here was that once one victim died, a new one would be put in peril. π
3:42 PM
multiple victim support added
3:43 PM
it can scale and uses an object pool, will repeat after we get done with the pool. We can come up with random names though and just reuse the same models
3:45 PM
K, I have to go for now. Next thing I do I think should be the central puzzle thing. The win state.
Editor's Note:
Here is another pivotal design moment. Deciding the interface for rescuing the victims, which paved the way for deciding how the minigames would ultimately work (reveal a digit to the passcode). One thing I like about these jams from a design process journal perspective is that there is so little time to deliberate that the key design vision moments are very clear and then immediately find their way into the work. π
3:47 PM
I guess I'll set it up to be like four digits you have to enter
3:47 PM
and if you enter the correct digits a victim is saved
3:47 PM
somehow lol
3:48 PM
but then a new victim is still put in peril and we can come up with new randomized solution password digits
3:49 PM
We need to think about the interface for inputting the password digits
3:49 PM
I think we can use like card suit symbols
3:49 PM
to correspond with each digit position and help people understand which position a given clue they found relates to
3:50 PM
And I guess we can have the player type in the numbers with the remote
3:51 PM
So if there are four digits I guess we need four channels / minigames?
Yeah if we are doing suits we would need min 4. If we end up more we could cycle them for different victims. Suits are good because the important channels could have a suit indicator somewhere while filler channels could lack them
@David I wrapped up that vfx tut, a lot going on, had to restart 1/2 through because I messed up a node flow, do you want to pull down the git project and create one in there?
Mike
@David I wrapped up that vfx tut, a lot going on, had to restart 1/2 through because I messed up a node flow, do you want to pull down the git project and create one in there?
I think rather than try to implement it now (which would be fun and what I would like to do) I am going to focus on the passcode thing since that's more critical to playtesting
5:11 PM
I guess I'm thinking the only interactivity on this screen will be the number buttons on the remote
If we had more time I think it would be cool to have one channel that's just a live news cast covering the story
10:31 AM
and then they could have clips of victims who were saved being found on park benches or something. Reunited with family. Interview random people around town asking about the situation
10:31 AM
"I want to try and help but if I get the password wrong and someone dies I don't want that on my hands"
10:31 AM
other parodies of shitty 24/7 news cycle
10:38 AM
I might actually have some time I can spend during work day today
10:38 AM
It will probably bite me in the ass later but it sounds fun so F it
I'm going to try to get some stuff done later tonight once my lexcture is done, I might try to knock out the "channel switch" effect when you go to the next channel, should be an easy effect/video to make in After Effects
Mike
I'm going to try to get some stuff done later tonight once my lexcture is done, I might try to knock out the "channel switch" effect when you go to the next channel, should be an easy effect/video to make in After Effects
Just an update from me, finally got some free time, planning on banging out the rest of the IR stuff and setitng up the "fake" remote in unity today.
2
Editor's Note:
I'm sad this Bing / Copilot AI search result (π) did not save properly. I thought this was going to be a cool way to document things. Maybe it just broke when they changed it from bing to copilot? Anyway, this was me asking for a list of many names that fit in a campy horror film from the 80s / 90s. I ended up redoing this later to get a ton more names when we realized we were going to try to have the game be persistent across a long (~3 hours) event.
I spent some time wondering how to handle gender and names in the game. I wanted to consider diversity and representation, but also wanted to generally have names match the physical look of the characters. Ultimately I (using GPT AI) created a large list of masculine, feminine, and unisex names and then marked each model we used as either masculine or feminine and procedurally selected at runtime a name from either the unisex list or the genedered list that matched the setting on the model.
This would come into play again later when we added the rescued victim interrogation scene, and the fact that the game wasn't tracking the combinations used became somewhat problematic as the NPC model a player rescued in the "killing floor" scene didn't necessarily exactly match the model used in the interrogation scene (though the names of the victims are maintaned across scenes). Considering the time crunch I lived with this.
Okay we working. Iβm pulling from the input actions, so we can just keep setting them up for the keyboard. Iβve discovered that different remotes can use different protocols so we will need to do a custom setup for the final remote (will be quick, just linking some hex codes and input actions on a scriptable object)
Ian
Okay we working. Iβm pulling from the input actions, so we can just keep setting them up for the keyboard. Iβve discovered that different remotes can use different protocols so we will need to do a custom setup for the final remote (will be quick, just linking some hex codes and input actions on a scriptable object)
Yeah, I'm starting to think about how I should encase it, I think maybe a box that looks like a mini cable box or something. Theoretically if there is space we could hide a webcam in there too.
Yeah, I just dont want like the raw circuit board out (and cable length is a thing too) so gonna have to figure out something at least, can't guarentee pretty though ;P
I think the basic setup I have now is that the top level game object for a channel needs to stay active and have the "channel" script on it. and it has some events that can do whatever. So either deactivating child container object or moving things off camera
I'm not sure if I made any of the test channels actually prefabs yet but I think that only matters when we want to work on them w/out stepping on each others toes.(edited)
Editor's Note:
Here we have the basic framework of the game in place (IR sensor connected to Unity, changing channels, central puzzle with stakes and time limit) and begin switching gears to minigame development.
Ok, I have random names going, and some messages to kind of help convey cause and effect and what's happening. We will want to make it look better one day hopefully. But this should work for some basic testing.
I guess we could move the whole channel parent game objects around to make it look like that. or we could use like multiple cameras (one per channel?) and have render textures and move the render textures around. I don't know what the smartest way to do it is.(edited)
11:44 AM
I think we should leave this for something to do later if we have time since we can always just crank up the screen distortion effects and then switch channels and then reduce them back down, and that is needed either way, even in the fancy "push" animation.
1
Editor's Note:
Here we can see the visual design of the "killing floor" scene taking shape. π
I guess I'll put the blood in and make the channel change static ramp up next.
2:43 PM
Or I guess I could make a minigame
Editor's Note:
Ah the volume minigame. You can see its genesis here, but it would go on to have a long and arduous road ahead, ultimately getting cut before GDC, as usability was problematic and we did not have time to successfully address it despite some attempts.
@Ian hey how does the simon says game work so far, design wise?
5:38 PM
I was thinking about something with the volume but I want to make sure it's not too close to what you're already doing.
5:38 PM
My idea is to have two sound sources. You have to turn the volume down when the βevilβ sound source starts playing. If you donβt, you get a jump scare and the channel changes (that would force you to restart).
5:38 PM
and then when the "good" sound source plays you turn it up to hear the first part of the clue
Unfortunately I didn't get to a lot of planning, had a publisher get back to me about Darkest Dreams so been scrambling to get stuff together for them.
My very sketchy plan was to have numbers of things displayed on screen (3 skulls, followed by 4 blood spatters, etc) and the player would have to type the code back once the pattern finished displaying. Several loops of this, with the pattern getting longer each time
I think we could use the breaking news on of the other screens to reinforce wha t is going on, but this main screen is very game UI, it's breaking reality rules for the sake of player clarity, but if you want to make it more obtuse I think that's fine
11:10 AM
I was also thinking this screen is within a screen, the speaker and the top part would be part of a wrap around shell
Editor's Note:
The "hallway minigame" was a reference to an idea we had about making something inspired by the Friday the 13th NES game section where the player explored a cabin in a first person view. We never fully realized it for Chicaghoul, but when Mack later joined the team ahead of GDC / Day of the Devs we got it in. It had an interesting trajectory ultimately settling into a "backrooms" inspired concept that became one of the more popular (and personal favorite) minigames. More on this later!
one thing that is kind of annoying is that since the main camera lives outside the channel prefabs, we'd have to set that for every prefab in the main scene eventually. Just something to remember later I guess.(edited)
K I also made a new public function on Channel that lets you disable / enable all the renderers on a channel in case you need to leave it running while it's not the active channel.
11:26 PM
But if you don't you can still just deactivate the container object in the channel like before.
If we don't have time for 4 minigames, we could just fill channels with weird public domain stuff and put the solutions on different random channels each time a.new victim spawns
12:26 AM
There's a lot of neat content out there on archive.org and national archives
Simon says is fun! That was a good idea. Have you tried it on remote? I added bindings in input actions for WASD to make it so I could test on keyboard for now. I feel like I was pushed to my limits but I still did it so I think that's pretty good (edited)
Just tested with remote, stuff is working okay, but we are having issues with holding buttons. Button presses are always registering performed and canceled on the same frame (which is causing issues with volume and simon feedback). I think I can change it in the remote code, will keep ya updated.
Okay that should be working better now. We are hardware limited to detecting buttons release to .15f time ticks, but it works well enough. You may want make the repeat voulme delay a little longer, but that's up to you. Also saw a bug that when leaving the channel and coming back, the volume bar and volume don't match.
Yeah, the sketchy plan is to get scary images with numbers superimposed, but easiest is just numbers in scary font or something.
1
Editor's Note:
That's all for part 1, which I somewhat arbitrarily cut off just before Friday the 13th. But this is also about halway through our discourse as we assembled the game jam prototype. Tune in to part 2 to see how things came together for our first exhibition at Chicaghoul!