3/5/2017 in devlog
When switching to a new user interface one should always make sure that every aspect of the game has been migrated, or else you'll end up writing a devlog about how you adapted an age-old system to the new design.
Unfortunately, I had to meet a deadline on a customer project and I spent all of this week on that. So other than a bit of organizational stuff and some reading on infrastructure topics, nothing to report from me this time.
Sometimes in long running projects like ours it can happen that a piece of prototype design or code sticks around for a long time and no one updates it in the coming design iterations. That is exactly what happened to our in-game chat system. We wrote and designed it quite a while ago, but then somehow forgot it. When we were revisiting what features we want in our alpha milestone it came to mind again.
Originally we designed the chat to exist in a single window which had tabs for the different channels and a fixed tab for the chat controls (to add new channels, for example). When we switched to tiles instead of windows no one updated the chat. The chat still works in a tile, but having tabs within a tile doesn't feel right. The tile becomes to heavyweight.
So this week I redesigned the chat and split it up into two main tiles: the channel list (
COM) and individual channels (
CHA). The channel list contains all active conversations, regardless if it's a private conversation with a single other user or a group channel. Every entry in list shows the participants of that channel and if there are any new messages that have not been seen yet. Clicking on an entry will open the channel tile. It basically contains what has been in a single tab before: the message list, the user list and the prompt to enter new chat messages.
When creating a new channel the player has to define a channel name or channel participants. The necessary UI elements have been in an extra tab before. We decided that the channel list should not have that clunky UI visible all the time so we had to come up with a new method to show the elements only when needed. The channel list now has a few buttons to create new channels and each will open an overlay of the tile which contains the UI elements to enter the name or participants. The overlays are bound to a single tile, so they can be open while doing something else in another tile. This is important since most other solutions for this problem would have involved opening new tiles in buffers, which can get unclear when doing too much.