Love the slick modernize design! Well done and keep up the good work
really cool module, any plans to continue expanding it yourself or is it a free for all
having chat rescale and drag and drop theming would be cool, rather than attributes, module script perhaps
other than that, really good base for a chat system, might use it
We plan to do these things over time.
WinryChat is actively expanding as and when we can facilitate resources to it, and there are some issues (notably documentation) I’d personally like to work out with the code.
Looking forward to it!
There are many new systems out there and this could be one of the best.
Thank you!
We’ve developed the system in the scope of clanning, but the goal is to release more systems that we’re developing for completely free. As we speak, WinryChat Version 1.3 is already in development from internal and external feedback.
And if anyone’s curious or suspicious as to why this is free: We want feedback, suggestions and perspective from everyone, so that we can improve our tools for our own community, other communities and improve how we build our internal (clan-specific) and free tools. That’s the trade we look to make with the games development community.
We’re testing the drag resize feature now, while we test something relating to TextChatCommands. Drag and Drop Theming is something that may take more time, due to complexity, but here’s some testing images!
We are also working out some issues where the application losing focus keeps the dragging enabled. But this will be shipping with WinryChat 1.3 on your request! (It’s also just handy to have in general.)
looks really good, good job!
Let me know when this is public
It’ll be out with the next release. There’s also safeguards built in for a minimum size and restraining the chat window to within the Viewport. This includes a new setting for a Safe Zone if you want some padding between the bottom right corner and the drag resize UI.
Of course, the issues with making drag-and-drop theming is the amount of settings provided to users. So that would take more time, if it is even possible with the existing logic. In the mean time, we’ve been reworking how the settings are applied. We want to make way for a settings panel for users can try out custom themes with in the future (and a developer setting for enabling or disabling custom theming).
Winry Chat - Update Log for Version 1.3
Happy New Years folks! We intended to ship this yesterday, yet the Autocomplete feature couldn’t be completed in a single 4 hour sprint… so it took another 4 hour sprint today to debug and address that feature in a way that integrated nicely with the chat.
Our goal with WinryChat as an open-source utility is and always will be the same: Minimize Impact on Developer Workflows.
New Features
-
Drag Resizing (Feature Request) We understand the importance of being able to see and resize your chat window, especially for those moments where someone spills the tea. So, we made it a top priority to get this in first for developers.
-
Autocomplete for Command Arguments (Internal Request)
Something missing from our server manager, Winry, was the ability to display information for TextChatCommand arguments. While we considered it as an internal feature in settings or in a separate panel, that just wouldn’t cut it. With some careful considerations, we found a way we believe to be unobtrusive to developers’ workflows for this feature.
New Settings (Attributes)
DragCornerColor : Color3
Changes whether the text box is cleared or not when using the keyboard shortcut for focusing chat or clicking on the text area of chat. Default: (10, 185, 255)
MaxResizeSafeZone : Vector2
An offset in pixels from the viewport’s bottom right corner to limit resizing to. Default: {16, 72}
New Functions
BindDragResizeFeature : () → ()
Binds functions to UserInputService and the DragArea (ImageButton) so that players can use the new Drag Resize feature.
CreateCommandInfoForAlias : ( {} , string, {} ) → (ChatCommandInfo)
Consolidated the creation of command info for command aliases into one function, so that redundant code is reduced. First and Third Arguments are custom types with names too long to keep this on a single line.
SetAppearanceAndBehaviourFromSettings : () → ()
Refresh the appearance and behaviour of the Chat UI from it’s settings attributes. This has been added ahead of time, for when we can find an appropriate way to integrate a settings panel for custom theming.
SetInteractableState : (boolean) → ()
Set the interactable property of the Chat Channels list, Channel View and Input Area.
Bugfixes
-
Fixed an issue where MessageTemplate was requesting an attribute called
TextMesageFont
and notTextMessageFont
. -
Fixed a few conditional statements and added more object clearing / destruction steps where appropriate to prevent memory leaks.
-
Fixed the initial Interactable state of Chat UI elements. Core elements were not reverted to
true
after testing the dragging feature.
These changes should be live now!
If you’re reading this a few minutes after it’s posted, we’ll be updating the initial forum post to be reflective of the new version. We will also add additional information on how to specify information to display for an argument of a TextChatCommand, so that it can appear with our Autocomplete.
[Update]: We’ve rewritten the original post to reflect the changes, and provide better documentation.
@Wertyhappy27 - Here’s Version 1.3 for you too!
As a Ui designer myself, that is very good!
Keep up the great work, looking forward to it!
Thank you!
We’ve brought our internal version of WinryChat 1.3 up to parity with the open-source version now, and are doing some bug hunting in a live production (good for case studies too). A few small patches to the open-source version should roll out for the argument autocomplete.
Update: This seems to be specific to our project’s object creation pipeline, but if we can identify a cause that’s caused by WinryChat’s scripting, we’ll push a patch as soon as possible.
Hello, I was just wondering but does WinryChat have a community server we can join for support or live discussions?
Hi, Iris!
We didn’t previously consider a community server for WinryChat, as it’s an independent system from our main server system. These were developed in house for The Horizon Ascendancy. We’ll look at creating one, though given the original community space our projects come from, this may take a while.
I’ll discuss with TigerValdos on how to approach this request, as there’s moderation & user/staff safety to setup too. In the mean time, I can try my best to answer your queries.
– May / extraclear
29-01-25 Hotfix - WinryChat 1.3.1
We noticed during testing of Teensy Tiny Tankery and Outpost Gambit that the floodchecked message was absent by mistake. This has been added in while we’re looking into Controller Support. The controller support feature set is a necessary feature we need for our titles as well, so it is a top-priority task.
Winry Chat - Update Log for Version 1.4
After the hotfix dropped, we got to work straight away on the newest version. There are a list of features we’re looking to include over time, as and when possible. This release focuses on Gamepad Support and an Integrated On-Screen-Keyboard for testing and devices that don’t have an on-screen keyboard.
We’re also deprecating the GetKeyCodeIdAsEnumValue(number) function, as we noticed there is a workaround with the Studio Command Bar to set Enum attributes to scripts. While we do intend to remove this function later, it will still be made available to developers who wish to use this function for the time-being.
This update matters on a personal level too. During my studies at university, I developed a plethora of custom tools for Unity Engine and Unreal Engine that allowed for better Controller/Gamepad support. Some of which are open-source to this day. By adding this support for gamepads, we hope to expand the accessibility of ROBLOX’s Chat System for platforms that otherwise may not be able to use it. Unfortunately, we can’t do this for PlatformChat or ROBLOX’s integrated features.
New Features
-
Gamepad Support for XBOX, PlayStation and Nintendo Switch accessories. We see you, console gamers!
-
WINRY VIRTUAL KEYBOARD - An Integrated On-Screen Keyboard for all platforms. This has primarily been designed for ROBLOX Studio, ROBLOX for Desktop (UWP) and ROBLOX for 64-bit Windows, however, it should work for all paltforms regardless. Instead of this just being an integrated UI, you will be able to copy this new On-Screen Keyboard independently of WinryChat and adapt it to your own works.
Official XBOX, PlayStation and Nintendo Switch Pro Controllers have been tested with this, and work as intended. If unexpected behaviour is encountered, please report the full accessory title and encountered behaviour.
New Settings (Attributes)
FocusChatKeyCode : Enum.KeyCode
Changes the keyboard button used for focusing chat. Default: Enum.KeyCode.Slash
GamepadFocusChatKeyCode : Enum.KeyCode
Changes the keyboard button used for focusing chat. Requires GamepadSupportEnabled to be true to have an effect. Default: Enum.KeyCode.DPadUp
ToggleChatVisibilityKeyCode : Enum.KeyCode
Changes the keyboard button used for showing and hiding chat. Default: Enum.KeyCode.DpadDown
GamepadToggleChatVisibilityKeyCode : Enum.KeyCode
Changes the keyboard button used for showing and hiding chat. Default: Enum.KeyCode.DpadUp
GamepadSupportEnabled : boolean
Whether Gamepad Support is enabled for the WinryChat UI. Includes built-in UI Focus Navigation support. Default: true
Changes
-
FocusChatKeyCodeId has been removed and replaced with FocusChatKeyCode, an attribute with the type
Enum.KeyCode
. - GetKeyCodeIdAsEnumValue(number) now marked as DEPRECATED.
- The placeholder text for the Text Input Field now uses
UserInputService:GetStringForKeyCode(Enum.KeyCode)
instead of the “Name” property of anEnum.KeyCode
value. - Placeholder text for the Text Input Field now automatically changes it’s wording depending on if the player is using a Gamepad or Keyboard and Mouse.
Closing Notes
This was a triumph. I’m making a note here, huge success. It’s hard to overstate my satisfaction…
Seriously. I stumbled upon GuiService looking for something else 7 hours ago now… wrote this update devlog as I was going along and now we’re at release at 4:10 AM GMT on 31/01/25. I spent the best part of 7 hours designing, debugging and polishing an on-screen keyboard for everyone to enjoy. And big note!
We’ll be Open-Sourcing Winry Virtual Keyboard soon after on it’s own for developers to use in their experiences, but it’s shipping with WinryChat 1.4 first. This virtual keyboard has Mouse support as well, but works independently of your keyboard. It also resizes based on your screen size!
All completely for free, and it will follow the same NO-ATTRIBUTION License as WinryChat does!
Winry Virtual Keyboard can be found alongside Winry Chat as “OnScreenKeyboard”.
Finally, console chat!! One feature I would suggest is “Chat templates” for console users (as typing out messages manually is very tedious…)
How it would work is that console players would type out their chat template message, then store it somewhere as a clickable button (maybe on the right side of the screen? It’s pretty empty), and when they click that button they’ll chat out the full premade message!
Maybe the premade messages should also be saved inside of a datastore, because manually retyping them everytime you join can be tedious too xd
I ran into this too during testing, while trying to do the Still Alive song in portal as a test. The scope of WinryChat and WinryVirtualKeyboard are client-sided only, so I can’t exactly add data-store related features to the system.
However, if you and other console users have examples of frequent messages and phrases you’d like to be able to type out with a drop-down menu, I’d be more than happy to build them into WinryChat alongside any feature requests for WinryVirtualKeyboard.
Accessibility matters, and so does socialising with your friends!
Ahh, that’s right… client sided only…
Instead, I was thinking maybe you can instead add some kinda dropdown menu for commonly used words (word shortcuts), where if you type a letter into the chat box it’ll show commonly used words starting with that letter (or those letters), and if you click one it’ll add it to your chat box (This way it’s still quite fast without having to type out entire sentences you want to use)
Here are some common words I can think of that can be used in basically every game:
“Yes”
“No”
“What”
“Why”
“Don’t”
“Do”
“Where”
“For”
“Some”
“Reason”
“How”
“When”
“Ah”
“So”
“That”
“This”
“In”
“Out”
“Side”
“Game”
“Leave”
“Join”
“Friend”
etc…
Honestly this is very similar to how the PS4 virtual keyboard works and I use it alot and it’s very fast
This will definitely be in for WinryChat 1.5.
WinryChat 1.4 was created in a very spur-of-the-moment atmosphere where I found a part of ROBLOX I never knew existed (GuiService) and ran for the hills with it, as far as I could go. I didn’t even know there wasn’t a console chat. I wanted to make it so that players with accessibility controllers (like the XBOX Adaptive Controller) on PC could socialise with everyone else.
This would be a great feature to enhance communication skills for everyone with a controller, so expect it to come out soon too.