What are you working on? (Megathread)

I’ve been working on some Roact components which implement familiar Studio UI elements including Buttons, Checkboxes, Scrolling Frames, etc.

These are intended for making plugins with consistent and recognisable user interfaces. Theming works out of the box and each component is highly configurable.

Here’s what I have so far:

Project is very much WIP but the repo is here if anyone is interested in checking it out / contributing in future:

11 Likes

Been writing some tutorials for my UI library (still working on getting it ready for an alpha release, but I think having good documentation is important!)

8 Likes

Wrote a serializer for a plugin I’m working on to be able to store datatypes like Vector3 or PhysicalProperties as a string in plugin:SetSetting().

Currently supported datatypes:

primitives (string, number, bool)
Axes,BrickColor,CFrame,Color3,ColorSequence,DateTime,
EnumItem,Faces,Instance,NumberRange,NumberSequence,		-- (Instance saves the path and deserializes with best effort)
PhysicalProperties,Ray,Rect,UDim,UDim2,Vector2,Vector3

Currently unsupported datatypes: (These aren’t Properties so they weren’t MVP for my serializer)

CatalogSearchParams,ColorSequenceKeypoint,
DockWidgetPluginGuiInfo,NumberSequenceKeypoint,
PathWaypoint,Random,RaycastParams,RaycastResult,
RBXScriptConnection,RBXScriptSignal,Region3,
Region3int16,TweenInfo,Vector2int16,Vector3int16

Example:

Original Table:
▼ table: 0xd06348dd5d6ad810 = {
    ["some-big-guid"] =  ▼ table: 0x260250c8df47ce50 = {
       ["Properties"] =  ▼ table: 0x147af943d0b0f590 = {
          ["Adornee"] = Baseplate,
          ["Position"] = 1, 2, 3
       }
    },
    ["some-other-guid"] =  ▼ table: 0x1ef98342561df2d0 = {
       ["Properties"] =  ▼ table: 0x196db95924f6f310 = {
          ["CustomPhysicalProperties"] = *cannot read value as a string
       }
    }
}

Serialized String:
1,264|{!  A s o m e - o t h e r - g u i d!# :!! A P r o p!- t i e s!4!6 C u s t!& P h y s i c a l!8!:!<!>!@ A!5!# _ _ s a n i!= z e!4!#!H!J!L!N!P!; r!=!?!# ,!# E l a!E!L!^ y W e i g h t!4 1!n A!p!r!= c!u!4 0 . 2 5#  F r!L!= o n#( . 4 0#7#8 0 5 9 6 0 4 6 4 4 7 7 5 3 9 0 6#+#-#/ c#1 n!w!y!{!}#  D e n!K t y!4 7 . 8 4 9#a#a#> 6 3#+ 6 8 3#; 3#D }#n# !%!' - b!y!/!1!3!U!6!h!R!l#y!c o#X i#2!A!W!Y![!^ i!`!b A V e#M o r 3!m!# Z!4 3#  X#S!# Y!4 2 }#  A d$2 n e!a#~ A!X!Z!]!_$H :!# I#W t![ c$H#- u l l N a!'$- W$2 k s p a$V . B!r e p!q t$H#n#n

Deserialized Table:
▼ table: 0xb0d910c5ae520550 = {
    ["some-big-guid"] =  ▼ table: 0x657fc83585cb0010 = {
       ["Properties"] =  ▼ table: 0xb6e7505880e60650 = {
          ["Adornee"] = Baseplate,
          ["Position"] = 1, 2, 3
       }
    },
    ["some-other-guid"] =  ▼ table: 0x818c08d773a53c90 = {
       ["Properties"] =  ▼ table: 0xbde72036b70807d0 = {
          ["CustomPhysicalProperties"] = *cannot read value as a string
       }
    }
}


When I get this thing feature complete, I plan to open source it.

3 Likes

I just released the plugin that uses the above serializer!

5 Likes

Decided to take some time away from the responsibilities of a day-to-day job and just work on something simple yet fun.

For this project, I really didn’t want to stray away and make complicated systems to work around things I need, which proved to be especially challenging when I came around to working on the NPCs :woozy_face:

Now for a good safety measure, I wanted to handle 150 humanoid NPCs without lag, heh little did I know this isn’t very common or easy to accomplish as humanoids are a pain to work with sometimes… Though I couldn’t switch to a custom solution due to my main goal and the fact that humanoids have specific functionality I’d like.

A few days later and a damaged soul XD …

I was able to run over 340 NPCs with little to no lag.

(lag spike at the start due to switching from gif recorder to studio)

for those who’re curious about the performance (340+ NPCs in a live game):

Next goal is to have them fight each other :sweat_smile: so that’ll be fun!

4 Likes

Train Demonstration Video

This week I worked on creating a train that could move along curved tracks while still appearing to move smoothly on the client. An invisible blocky version of each train car has its position updated every second on the server and the client handles the appearance and in-between positions for the train cars. Since my game has streaming enabled, I have a tag for all the train cars and I have the client handle updating the car’s position only when the server’s counterpart has its cframe property changed. When the server’s part is no longer being streamed in or is deleted, the client doesn’t do anymore updates for that train car and removes the client’s model.

Other than that, I also worked on a chest model and practiced rendering it:

Since I didn’t look anything up on how to properly render stuff in blender, I ended up with a very flat and dull render. To make it feel more alive, I ended up bringing it into photoshop and made a few adjustments to make it pop out more. The coins I used in the render are just placeholders for now. In the final product I’ll probably have a different coin model and I’ll probably have them face the camera more.

4 Likes

I’ve added a couple of commands to the RoAPI bot that can view information about assets:

I’ve also added a “types” command that lists out all of the asset types:

and another one that views information about a specific asset type:
image

All of these commands use ro.py to send API requests.

1 Like

Working on a small project that involves immersive drag-and-drop style programming.

Currently not much, but the what is in my opinion the most complicated part is done. Working on the editing mechanism for various objects.

6 Likes

This tool automatically generates Python code examples for the Roblox web API!

6 Likes

I’ve spent the last couple weeks working on a remaster of my favorite showcase, Murder Mansion ^^ The main updates being future lighting, and a heaaaavily reduced level geometry, I’d guess it’s at least 2/3 more performant now (although, you wouldn’t know that with the upgrade from Voxel to Future :zipper_mouth_face:)

10 Likes

I wrote a module to generate static Beam circles. When I get the time, I would like to expand this to arbitrary arcs, which would allow for circular progress bars.
DrawBeamCircle.lua (github.com)

3 Likes

made a small plugin for a coworker! it lets you scale parts with your keyboard instead of mouse:

4 Likes

Trying to develop a full CI pipeline for my studio. It’s really exciting!

The ideal will be:

  • Docs auto generated from the Rojo file and Ldoc using MkDocs and Ozzypig’s LDoc2Mkdoc tool (done!)
  • TestEZ & run-in-roblox build runs on PR
  • Linting and codecov
  • Use remodel or rbxmk to combine game assets and the codebase and upload to the main site

Really excited - I want to do this properly now, and this will make our entire teams efforts so much simpler. Will release a template of my work once it is done!

2 Likes

I’ve been chipping away at my voxel engine optimisation efforts for Blox - check out how far it’s come:

It also runs in VR, and looks phenomenal in the process - it’s something that can’t really be conveyed on a flat screen, but it honestly is stunning:

Something about the way this cave was lit made it feel pretty real in VR:

Perhaps the most interesting observation is that this runs far better than any time I’ve tried running Minecraft with Vivecraft and shaders applied at the same time.

7 Likes

I haven’t been able to work in Roblox Studio for the past few months, so to get back into the flow I made a simple character controller from scratch! I already had the mesh laying around, so all I had to do was add some animations, program a character state machine and program the controls.

(I hope the video works)

1 Like

I just discovered the joy of importing real world heightmaps into Studio and playing around with lighting from Atmos, applying materials based on slope, and automatically scattering features around with a quick and dirty script. The result is a rather nice mountain scene based on real world geometry (though I did make some artistic deviations from real life):

(also, just look at those gorgeous new dynamic clouds)

I’ve been creating some client-rendered NPCs that don’t utilize Humanoids for movement. The server uses behavior trees to determine how NPCs should act, and the client renders and interpolates the movement via CFrame math.

Here’s a demonstration with 400 NPCs at once, easily sustaining 60 FPS!
compressed so that it fits the file size limit.

The past few days I did some work on a ruins map for a project I am working on. It is not finished yet, but I am very happy with how some of the sections of the map are turning out!

6 Likes

Our 3D Artist has been doing some cool stuff for us.

All of our color maps for player equipment use transparency. We plan to utilize this so that players can locally switch on an option that allows the player to customize the color for each team. This allows potential accessibility for those with a color vision deficiency.

This might also allow the player to customize their colors for FFA modes.

4 Likes

I’ve been trying to come up with some neat little additions to make my project feel more alive. We had already added leaves falling off trees and environmental sounds that play at random, but in the last two days I’ve also been working on adding some small animals!

Here are some frogs that jump in the water when you get close to them. :grinning_face_with_smiling_eyes: :frog:

3 Likes