From 58f09a140f174533483b9b6198b5bfa8fa7f6ef6 Mon Sep 17 00:00:00 2001 From: Heather Jackson Date: Wed, 11 Mar 2026 15:50:50 -0400 Subject: [PATCH] Built out architecture for Single Player + wrote OPENING scene - variables reduced and revised in Main ink file - created and coded a PLAYLIST ink file - created a HARMONY ink file for later - roughed in Level 0 - OPENING scene is playable in Inky --- Level 0/PERFORM_WHALESONG.ink | 4 +- Level 0/POSTSHOW_WHALESONG.ink | 2 +- Level 0/PRACTICE_WHALESONG.ink | 6 +- Level 1/POSTSHOW_L1.ink | 3 + Level 2/POSTSHOW_L2.ink | 3 + MAIN_Bandocracy.ink | 46 ++++--- OPENING.ink | 216 +++++++++++++++++++++++++++++++-- PLAYLIST.ink | 182 +++++++++++++++++++++++++-- 8 files changed, 427 insertions(+), 35 deletions(-) create mode 100644 Level 1/POSTSHOW_L1.ink create mode 100644 Level 2/POSTSHOW_L2.ink diff --git a/Level 0/PERFORM_WHALESONG.ink b/Level 0/PERFORM_WHALESONG.ink index 30e3509..53a6751 100644 --- a/Level 0/PERFORM_WHALESONG.ink +++ b/Level 0/PERFORM_WHALESONG.ink @@ -1,14 +1,16 @@ === PERFORM_WHALESONG === -#Background: venue_erosion_performance +#Environment: Erosion_show {vocals_whalesong == "Whaleish": ~ mood_guitarist-- ~ mood_keyboardist++ ~ song_stance_rebels++ + ~ L0_song = "Whaleish Whale Song" - else: ~ mood_guitarist++ ~ mood_keyboardist-- ~ song_stance_people++ + ~ L0_song = "Whale Song" } Once the song is done... diff --git a/Level 0/POSTSHOW_WHALESONG.ink b/Level 0/POSTSHOW_WHALESONG.ink index be818ff..28c604f 100644 --- a/Level 0/POSTSHOW_WHALESONG.ink +++ b/Level 0/POSTSHOW_WHALESONG.ink @@ -1,5 +1,5 @@ === POSTSHOW_WHALESONG === -#Background: venue_erosion_postshow +#Environment: Erosion_postshow Band talks about their performance and which fan communities showed up. diff --git a/Level 0/PRACTICE_WHALESONG.ink b/Level 0/PRACTICE_WHALESONG.ink index 0dd8090..f758cfc 100644 --- a/Level 0/PRACTICE_WHALESONG.ink +++ b/Level 0/PRACTICE_WHALESONG.ink @@ -1,6 +1,6 @@ === PRACTICE_WHALESONG === -#Background: practice_space -Short convo about the upcoming SHOW and it's cause, which is the topic for the band's next song. +#Environment: PracticeSpace +This scene is not written yet! But we'll start with a short convo about the upcoming SHOW the band just booked, and its cause, which is the topic for the band's next song. + [Let's make music!] -> CREATE_SONG @@ -205,7 +205,7 @@ Is the song done? -> EDIT_SONG = PRACTICE_DONE -#Background: practice_space +#Environment: PracticeSpace Couple lines saying we've got the song, practice is over, see y'all at the event. diff --git a/Level 1/POSTSHOW_L1.ink b/Level 1/POSTSHOW_L1.ink new file mode 100644 index 0000000..3a74e43 --- /dev/null +++ b/Level 1/POSTSHOW_L1.ink @@ -0,0 +1,3 @@ +=== POSTSHOW_L1 === + +-> DONE \ No newline at end of file diff --git a/Level 2/POSTSHOW_L2.ink b/Level 2/POSTSHOW_L2.ink new file mode 100644 index 0000000..310419f --- /dev/null +++ b/Level 2/POSTSHOW_L2.ink @@ -0,0 +1,3 @@ +=== POSTSHOW_L2 === + +-> DONE \ No newline at end of file diff --git a/MAIN_Bandocracy.ink b/MAIN_Bandocracy.ink index e6abf92..d92ba9a 100644 --- a/MAIN_Bandocracy.ink +++ b/MAIN_Bandocracy.ink @@ -1,15 +1,16 @@ --> ONBOARDING +-> PLAY_GAME INCLUDE OPENING.ink INCLUDE PLAYLIST.ink INCLUDE HARMONY.ink + INCLUDE Level 0/PRACTICE_WHALESONG.ink INCLUDE Level 0/PERFORM_WHALESONG.ink INCLUDE Level 0/POSTSHOW_WHALESONG.ink +INCLUDE Level 1/POSTSHOW_L1.ink - - +INCLUDE Level 2/POSTSHOW_L2.ink // *** CHARACTER VARIABLES *** @@ -28,29 +29,42 @@ VAR song_stance_rebels = 0 VAR song_stance_people = 0 -// *** SONGS LIST *** +// *** SHOW LIST *** -LIST songs = WhaleSong, SmileCurrency, RobotFix, MoodTattoo -/* At the beginning of the game, none of the songs are "ON" the list yet, but each is available to be put on the list. Code-wise, round brackets around the song names would mean they are already "ON" the list. To add a song to this list, use this command: - ~ songs += WhaleSong +LIST shows = WhaleSong, SmileCurrency, RobotFix, MoodTattoo +/* At the beginning of the game, none of the songs are "ON" the list yet, but each is available to be put on the list. Code-wise, round brackets around the song names would mean they are already "ON" the list. + + To add a song to this list, use this command: + ~ shows += WhaleSong + To check what songs are on the list, the song name needs to be in brackets: - {songs == (WhaleSong)} + {songs == (WhaleSong)} or - {songs == (WhaleSong, RobotFix)} + {songs == (WhaleSong, RobotFix)} to check multiples. */ +// *** SONG VARIABLES *** + +VAR L0_song = "???" //"Whale Song" or "Whaleish Whale Song" +VAR L1_song = "???" //"Robot Needs Fixing" or "Robot Fix Yourself" or "Hug It Out" or "Emotional Filth" +VAR L2_song = "???" //"Come Get a Mood Tattoo" or "Don't Get a Mood Tattoo" or one of the above +VAR L3_song = "???" //"See You Never" or "Welcome Home" + /* + These variables are especially useful for the PLAYLIST. + If players haven't done a level, "???" appears in that slot on the Playlist. Once a song is performed, the song title displays. + */ // *** MUSIC VARIABLES *** -//All whalesong music variables will get set to "Whaleish" or "Human". +//All whalesong music variables get set to "Whaleish" or "Human". VAR drums_whalesong = "" VAR vocals_whalesong = "" VAR guitar_whalesong = "" VAR keys_whalesong = "" VAR bass_whalesong = "" -//All moodtattoo variables will get set to "Pro" or "Anti". +//All moodtattoo variables get set to "Pro" or "Anti". VAR drums_moodtattoo = "" VAR vocals_moodtattoo = "" VAR guitar_moodtattoo = "" @@ -58,9 +72,9 @@ VAR keys_moodtattoo = "" VAR bass_moodtattoo = "" -=== ONBOARDING === +=== PLAY_GAME === - * Check out events. - -> PLAYLIST - * Start the game! - -> OPENING \ No newline at end of file + * [PLAY NEW GAME] + -> OPENING + * {OPENING}[CONTINUE PLAYING] + -> PLAYLIST //NOTE: In the final build this will probably point to SAVE SLOTS and then go to the PLAYLIST. diff --git a/OPENING.ink b/OPENING.ink index 8f5910e..bf3de63 100644 --- a/OPENING.ink +++ b/OPENING.ink @@ -1,11 +1,213 @@ === OPENING +#PlayerControlUntil: OpeningVideoDone, JumpToPath: OPENING.FIRST_PRACTICE + + [Once the Bandocracy intro video is over...] + -> FIRST_PRACTICE + +/* OPENING VIDEO STORYBOARD ideas: + The Bandocracy Theme Song plays... + - LYRICS: There we were in 2051, Hopin’ their spaceship flies into the sun + VISUALS: Moonists escape chaos by blasting off from Earth to the Moon. + - LYRICS: There we were in 2052, We’re on the earth, they’re on the moon + VISUALS: Chaos on Earth! Environmental destruction, protests, market crashes, etc. + - LYRICS: Here we are in 2053; Everybody left, let’s go baby + VISUALS: The original band (Poli-sci Punks?) are on stage performing the Bandocracy Theme Song. Make sure their band name is visible on screen, so players know who they are when our characters mention them in the next scene. + - Show this song reaching the whole world; music notes spread out across planet Earth? + - Fast forward 50 years... song is still playing and the Earth is peaceful, environment is cleaner, and people are happier. + - Theme song continues as DARCY (our Singer) puts ad on bulletin board of music venue - SEEKING MUSICIANS FOR NEW BAND + - Comic book style Character Card of Darcy's deets: name, instrument, likes/dislikes + - Then show Micah (bass), Skyler (guitar) and Fern (keys) coming along and seeing the ad, popping up a CHARACTER CARD for each as they take the strip of paper with Darcy's contact on it. OR to be more modern, maybe scan the QR code. OR we can show character stuff by showing both options. For example, Fern would totally scan the QR code, but Micah would take the paper. And Skyler doesn't need to do either because she already has Darcy's contact info. Maybe show Skyler looking at her device? Interesting! :) + - Then as the song is ending, fade into the characters in the practice space. The idea is that they are playing this song together as a warm up. + +OH! Can the opening video be rewatchable from somewhere? Maybe in the playlist? Or on Harmony? OR at least put the song audio on the Playlist, since the band does play it in practice before writing their own songs. (Maybe the band's final song bumps the Theme Song off the Playlist at THE END, so we don't need more slots. And this would symbolically show how they've changed the world!) +*/ -This intro scene... kinda like onboarding, so isn't really part of a leveL. += FIRST_PRACTICE +#Environment: PracticeSpace -TO DOs - Introduce themselves. - Unpack Akai. - Pick a band name! - Write their first song. +#AddChar: Darcy, Pose: instrument_holding +#AddChar: Skyler, Pose: instrument_holding +#AddChar: Micah, Pose: instrument_holding +#AddChar: Fern, Pose: instrument_holding +#AddChar: Akai, Pose: instrument_holding +//We haven't talked about poses with Art yet, so I just called this one "instrument_holding" to signify that they're still holding their instruments but not playing anymore. --> PLAYLIST \ No newline at end of file +DARCY: Wow. That's the best first practice I've ever heard. + + + SKYLER: You're welcome! + + Darcy just shakes their head. They've heard that one before. + + + FERN: Me too! + + DARCY: Isn't this your very first band? + + FERN: (blushes) Yeah, but it's still THE BEST! + - + //NOTE: A single player who makes choices for all characters and potentially chooses who talks is different for a Bloom game, and we don't have UI for this. But I do think it's neat and was one of the funnest things about that other game we played. + +MICAH: I haven't played that song since I was in school. + +FERN: You were in school when it came out? What was it like? + +MICAH: Woah, woah. "Bandocracy" is fifty years old. I meant I learned it in music class. + +FERN: Oh, right! Sorry. + +MICAH: All good. I'll probably forget about this anyway. Because old. SO old. + +FERN: (laughs) +FERN: But, do you think the Poli-sci Punks knew their song would change the world? + + + SKYLER: When you're THAT good? Yes! + + DARCY: But you can't know a song will be a hit. + + MICAH: Truth. The Punks delivered a message, but it was up to people to listen. + + FERN: And they did! + + MICAH: For once. Despite, you know, being people. + + + DARCY: Probably. It was a call to action. + + MICAH: People could've ignored it. Wouldn't have been the first time. Or last. + + + MICAH: Nah. Change is too hard. + - + +SKYLER: No faith in people power, huh Micah? + +MICAH: Nope. I've seen too much. + +DARCY: Or not enough. I don't disagree that humankind's in a bit of a slump right now... +DARCY: But I want this band to change that! + +FERN: Me too! Let's change the world! + +DARCY: I think I know who the band's cheerleader is! + +MICAH: Fine. Let's give it our all, so when it's all for nothing, it won't be our fault. + +SKYLER: Wow. I think I know who the band's black hole is. +SKYLER: Good thing you've all got me - the shooting star! + +MICAH: Your star already fell, Skyler. + +FERN: What's he-- OH! Skyler and the Politicats, my favourite band! +FERN: I mean, until everyone found out you were posers. + +SKYLER: I may have fallen, but at least I'm not burnt out like Micah! + +DARCY: Can we NOT break up the band before we even pick a name? + +SKYLER: I'm not breaking up the band. That's a YOU thing. + +DARCY: No, I left. While we were still Fern's favourite band. + + + FERN: You did the right thing, Darcy! + FERN: I wanted to tell you, but didn't want to make things awkward with my first band. + + + FERN: You still are my favourite band! + FERN: I ship you guys so much! + - + +An awkward silence ensues. + +MICAH: Right. So no breaking up before we give this band a shot. + +SKYLER: Yeah, well, this band is my comeback. I won't waste it. + +FERN: Yay! Go team! + +DARCY: Okay, what should our band name be? + +#PlaySFX: Akai_attention +// ^^a loud look-over-here drum sting +AKAI: AKAI AND THE MEATSACKS! + + + FERN: Did the drum machine just... talk?! + + AKAI: HE! He talked. + + + SKYLER: Who programmed the drumbot to talk? + + AKAI: Not a drumbot! + + DARCY: It's a "personality" model. + + AKAI: HE! He's a "personality" model. + + + MICAH: Meatsacks? Touché, Akai. + + AKAI: SUCK IT, MICAH. + + MICAH: Missed you too, buddy. + + SKYLER: You've played with this drumbot before? + + AKAI: Not a drumbot! + + SKYLER: Ha! It's full of zest! + + AKAI: HE! He's full of zest! + + MICAH: Yep. Zestiest session drummer I've ever worked with. + - + +AKAI: NOW MAKE SOME NOISE, MEATSACKS! +#PlaySFX: Akai_drumsmash +AKAI: Sorry. My "energetic drummer" personality program can be a bit loud. +#PlaySFX: Akai_angry +//like one of R2D2's angry squawks? Something to indicate his emotion. Could be useful. +AKAI: Know that I hate it more than you will. + +FERN: You don't like your own personality? + +AKAI: It isn't my personality. It's the one a human dev decided I should have. +AKAI: And no, I don't like it. + +SKYLER: But energy on drums is a good thing. + +AKAI: Just you wait... + +DARCY: So, Akai made his suggestion for a band name. Are we going with that? Or something else? + +#PlayerControlUntil: BandNameEntered, JumpToPath: OPENING.BAND_NAME + + [Type in a band name.] + ~ band_name = "More Zest" //temp name for playthroughs + -> BAND_NAME + += BAND_NAME +AKAI: WE ARE "{band_name}"! + + + FERN: That's a great name! + + AKAI: I disagree. + + FERN: But you sounded so excited! + + AKAI: Again, that excitement is not me, it's the "energetic drummer" program. + + FERN: Oh. Right. + + + MICAH: It'll do. + + AKAI: WOOO! My feelings exactly! + - + +SKYLER: So, what's our first show, Darcy? Is this a Fearless Leader situation? You book the gigs? + +MICAH: Oh, no. We don't have a manager, do we? + +DARCY: No, we manage together. We play what we want, where we want. +DARCY: Well... where we can. And what, ideally, reflects a local zeitgeist-- + +#PlaySFX: akai_interrupt +//MK: ^^cymbal crash or something. +AKAI: LET'S WRECK SHIT! +AKAI: (sighs) What I meant to say is that humans put venue listings and all their stupid feelings online. +AKAI: Check your Playlist app. + +#PlayerControlUntil: OpenPlaylist, JumpToPath: PLAYLIST + + [PLAYLIST] + -> PLAYLIST \ No newline at end of file diff --git a/PLAYLIST.ink b/PLAYLIST.ink index e6c3bd6..3e9f06c 100644 --- a/PLAYLIST.ink +++ b/PLAYLIST.ink @@ -1,14 +1,182 @@ === PLAYLIST +#UI: playlist/main -Here is where players choose what event to perform at. +- (SONGS) //I made these labels instead of stitches because they can all appear at once, rather than one after the other. -This replaces the SONG_TOPICS scenes. Instead of talking through this as a band, a single player can read the info here and make the choice for the whole band, no discussion needed. + + [BANDOCRACY ANTHEM] + Short summary of the history of this song. Note that this is our band playing it. Cover song! + ++ [CLICK DIFFERENT SONG] + -> SONGS + ++ [MUSIC PLAYER] + -> MUSIC_PLAYER + + + {OPENING}[{L0_song}] + { + - L0_song == "???": + Episode summary - short summary of where the band is at and how they have to choose a show before writing a song. + - L0_song == "Whale Song": + Poster of Show + Details of Show - location (Erosion) and cause ("Float the Vote") + Your Show stats - Whale Song played, community joined + - L0_song == "Whaleish Whale Song": + Poster of Show + Details of Show - location (Erosion) and cause ("Float the Vote") + Your Show stats - Whale Song played, community joined + } + ++ [CLICK DIFFERENT SONG] + -> SONGS + ++ {L0_song != "???"}[MUSIC PLAYER] + -> MUSIC_PLAYER + ++ {L0_song == "???"}[BOOK A SHOW] + -> CHOOSE_SHOW_L0 + + + {POSTSHOW_WHALESONG}[{L1_song}] + { + - L1_song == "???": + Episode summary - short summary of where the band is at and how they have to choose a show before writing a song. + - L1_song == "Robot Needs Fixing": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L1_song == "Robot Fix Yourself": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L1_song == "Hug It Out": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L1_song == "Emotional Filth": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + } + ++ [CLICK DIFFERENT SONG] + -> SONGS + ++ {L1_song != "???"}[MUSIC PLAYER] + -> MUSIC_PLAYER + ++ {L1_song == "???"}[BOOK A SHOW] + -> CHOOSE_SHOW_L1 + + + {POSTSHOW_L1}[{L2_song}] + { + - L2_song == "???": + Episode summary - short summary of where the band is at and how they have to choose a show before writing a song. + - L2_song == "Robot Needs Fixing": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L2_song == "Robot Fix Yourself": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L2_song == "Hug It Out": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L2_song == "Emotional Filth": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L2_song == "Come Get a Mood Tattoo": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + - L2_song == "Don't Get a Mood Tattoo": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + } + ++ [CLICK DIFFERENT SONG] + -> SONGS + ++ {L2_song != "???"}[MUSIC PLAYER] + -> MUSIC_PLAYER + ++ {L2_song == "???"}[BOOK A SHOW] + -> CHOOSE_SHOW_L2 -This will be UX, but I'll need to write the words like we did in LongStory. + + {POSTSHOW_L2}[{L3_song}] + { + - L3_song == "???": + Episode summary - short summary of where the band is at and how they have to choose a show before writing a song. + - L3_song == "Welcome Home": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + //We may need more info for this final song, because what players chose before will influence how this game ends. Just FYI to remind myself (Heather). + - L2_song == "See You Never": + Poster of Show + Details of Show - location and cause + Your Show stats - Song played, community joined + } + ++ [CLICK DIFFERENT SONG] + -> SONGS + ++ {L3_song != "???"}[MUSIC PLAYER] + -> MUSIC_PLAYER + ++ {L3_song == "???"}[BOOK A SHOW] + -> CHOOSE_SHOW_L2 + +- (MUSIC_PLAYER) +//NOTE that I've only put PLAY and PAUSE buttons in this script. PLAY ALL and NEXT and PREVIOUS are tougher to program. Doable from Inky, but probably easier in Unity. We'll figure it out later. -Gonna need some variables here to check what shows up, and which are offered as choices. + + [PLAY] + Highlighted song plays. + -> MUSIC_PLAYER + + [PAUSE] + Highlighted song pauses. + -> MUSIC_PLAYER + + [CLICK DIFFERENT SONG] + -> SONGS -For now, let's just use a choice to go to Level 0 and start Whale Song. += CHOOSE_SHOW_L0 +#UI: playlist/shows_L0 - + Pick event - Float the Vote! - -> PRACTICE_WHALESONG \ No newline at end of file + + [SELECT "FLOAT THE VOTE" POSTER] + + FLOAT THE VOTE FESTIVAL + Venue - Erosion + Cause - The whales' right to vote in Earth’s elections. + All funds raised go to the Naturals School of Linguistics “Whaleish as a Second Language” program. + Sponsored by the Outlook Neighbourhood Association + - + + + [START] + ~ shows += WhaleSong //You just put WhaleSong on the list! + -> PRACTICE_WHALESONG + += CHOOSE_SHOW_L1 +#UI: playlist/shows_L1 +//NOTE: This replaces the SONG_TOPICS scenes. Instead of talking through this as a band, a single player can read the info here and make the choice for the whole band, no discussion needed. + + + (SMILE)[SELECT "MILLION DOLLAR SMILE" POSTER] + + poster words + + ++ [START] + ~ shows += SmileCurrency + -> DONE //Go to PRACTICE_SMILECURRENCY + ++ [SELECT OTHER SHOW] + -> REPAIR + + + (REPAIR)[SELECT "RIGHT TO REPAIR" POSTER] + + poster words + + ++ [START] + ~ shows += RobotFix + -> DONE //Go to PRACTICE_ROBOTFIX + ++ [SELECT OTHER SHOW] + -> SMILE + += CHOOSE_SHOW_L2 +#UI: playlist/shows_L2 + +Use shows LIST to check what shows the band has already played to determine which appear as options here, since whatever was not chosen in Level 1 is now an option in Level 2 alongside Mood Tattoos. + +-> DONE + += CHOOSE_SHOW_L3 +#UI: playlist/shows_L3 + +Like Level 0, this won't be a choice of show, this will simply be info on the FINAL SHOW event. + +-> END \ No newline at end of file