Posted October 17, 2024 by Board Gamers
Most of my work this week has been focused on improvements for player interactions with our menus. Particularly with a large focus on the functionality and display of our stratagem menu on the HUD. To start, I made unique icons for each of the stratagems we currently have implemented, and color-coded them based on their behaviors. White is reserved for the reinforcement stratagem, blue for supportive stratagems, red for damage stratagems, and yellow for mission specific stratagems. Here's a snippet of how some of those icons look in game:
Other stratagem improvements I made this week include: a bug fix with cooldown text jittering and not displaying the required inputs when cooldowns are completed, allowing multiple stratagem cooldowns to be triggered by a single event, hiding situational stratagems from the list until usable, hiding reinforcement inputs unless reinforcements are needed, and updating the behavior of how many reinforcement uses are given to players based on co-op team size. Previously, if a player joined a game, it would add 5 charges to the reinforcement, but this could be abused by leaving and rejoining, adding 5 more charges each time. Now, if a player joins a game, and the team size does not exceed the size it ever was before they joined, it does not award extra reinforcement charges.
Another addition to the menus of the game is a confirmation popup window when selecting certain options. When leaving a mission, or exiting the game entirely, the game asks for confirmation so you can't do so accidentally. This behavior is also implemented for unsaved changes in our options menu. This wasn't incredibly difficult to create, but took a little extra time to make it modular enough to fit in any situation I'd want to reuse it. I also went ahead and converted all of the functionality of the widget into code, so it took a bit longer than it would have otherwise. Here's the result:
Now, my current task is creating a lobby menu between the main menu and gameplay, where teams can gather before missions, so they don't have to join into a mission that has already started. Eventually, this will also be useful for singleplayer, as it will be the hub for mission selection, loadout changes, and our planned meta-game feature: the Community. I won't go into the details of how that system is meant to work, as it is a bit complex to throw into a mostly unrelated post. That said, we have planned it out already, and believe it would be a very engaging system for progression if we can get it implemented within the next month. Anyway, today I started making mockups for both the menu itself and an extra mini-widget for holding player info when they join in:
It's still very early, and I'm back in a bit of a researching phase, as I'm having trouble figuring out how to get specific player info onto the "lobby" list of players from the menus that I made previously. The name shouldn't be an issue, but I thought I could get the Player's ping the same way I did in our Join Session menu, but I don't think it would update at all even if I found a way to pass it from that screen into this child widget. The other issue is that I want the host to have the ability to kick players from his team, and ending specific players' connection to the session seems straightforward, but I'm not sure how to guarantee that the players who get kicked will be returned to the Main Menu, or how I can inform them that they have been kicked in the first place. Again, I've only just started on this, so I doubt it will take too long to find solutions to these issues, and I'm aware of the ability to call functions on specific clients using Remote Procedure Calls (RPCs), so that will probably be my first lead to solving the kicking problem.