THIS WEEK’S ADVENTURE
- Developed a Dynamic Gameplay Scripting System
- Several Low-Level Systems Developed
- Mission Objective System Starts to Take Shape
- Dynamically Built UI elements
- Music Reference
Things That Should Have Been Completed But Weren’t
- Completing the conflict/meeting system
The Story This
Hey everyone, wow, this is a late update. I’ve slowed down my blogging to focus on development but I want to keep everyone in the loop all the same. I’ll be blogging once every 2 weeks from here on out, hoping to get back up to once every week once I get more comfortable and there’s more on-screen updates.
Dynamic Gameplay Scripting System
Due to the nature of how the game is structured the player will be re-visiting the same location several times. I wanted to ensure that each location will feel like it’s reacting correctly to the game world when the player visits it (Eg, NPCs discuss recent events, they’ll change their way-point paths, etc). Normally this would take a massive state machine to control all of this behavior. Something I was very uncomfortable with. So after a few days of pondering the issue I came upon a possible solution and created a data-driven approach. Something I’m calling the ‘cartridge’ system (behaviors you can swap out like game cartridges).
Effectively each behavior (a dialogue box, NPC way-point path, etc) is tied to a data structure that takes in a set of requirements. So I can set a bit of dialogue such as ‘I need you to pickup the investment portfolio from Dan for Thursday’s meeting’ to only occur if the player doesn’t have the investment portfolio item in their inventory and we’re in the gameplay state where the Thursday meeting is currently in the schedule.
I’ve also added in something similar for a ‘on complete’ action where when a gameplay item is finished it’s function it can flag another behavior (Item spawn, mission start, NPC way-point path, etc). So with this I can have you talk to an NPC, have the NPC assign you a task, then walk out of the room and cleanup all without any additional programming. (famous last words).
Low Level System Updates
Lots of the work of the past three weeks has been getting systems to talk with other systems. EG, have a dialogue box that will spawn an item, which in turn, starts a missing, which in turn populates a UI menu option, which in turn displays an onscreen alert that the player now has a new objective for them in their ‘Dayplanner’ interface. This was stuff I wasn’t expecting to get to until later in the project but since so much of these systems drive other gameplay behaviors I don’t want to fudge the behaviors on this. It’s cool to see all these systems populating and talking to each other and it’s also been a bit humbling as I’ve had to go back to some Computer Science 101 level stuff about software structure. Pro Tip: Spending 30 minutes with a pen and paper sketching out your program design and interface will save you DAYS of headaches.
Missing Objective System Starts To Take Shape
I’ve got a basic Task/sub-task system going where the player can talk to an NPC, get assigned a task and that task is populated with sub-tasks that need to be completed. These are all done dynamically so it’s possible that a player can miss some sub-tasks if they aren’t thorough. However, the game does have a ticking clock so spending too much time chasing leads can cost you valuable time elsewhere.
Dynamically Built UI Elements
Lots of time these past weeks spent wrestling with Unity’s UI system. But I’ve finally gotten the functionality I’m looking for. I’ve been trying to get the UI to be dynamically populated based on the current player state. Since parts of the game won’t unfold linearly I needed a system where menus would populate only to show the relevant information. For example, the player can only navigate to locations they’ve been told about, so the navigation menu needs to build itself from the player’s ‘location inventory’. I’m just putting the final touches on that system tonight, but after a few attempts I’ve got something structurally I’m comfortable with.
This has been really fun. I’ve been building a music reference library for our musician to refer to when making the compositions. Anything that felt like it belonged in the game got thrown into a YouTube playlist and sent along. It’s a very eclectic mix, 90’s NES music, Peyote Songs, 70’s style Rock, 80’s Style synth, the Theme song to Ultraman Next, Shinto Monk chanting and lots of other styles.
One of the things I want to have in the game is for the music to sometimes very directly call attention to itself during the title’s more reflective or quiet moments. Fortunately our musician is on the same wavelength and was genuinely excited at the wide range of reference.
Screenshots of This
week’s Month’s Work
The game is still EXTREMELY early in development and is missing art. What is seen below is all placeholder art in test levels. We’re still focusing on the low-level system development which doesn’t translate well to screenshots. However, I wanted to share these to provide a more complete picture of the development process.