What are you working on currently? (2025)

I am working on a fun first person shooter game that I am hoping to be released in the next 3 months

I’m working on a game like Doors, but vertical and with a timer.

Been working on a third person shooter. Inspired by “The finals”. When it’s finished you will be in a map with 6 other teams of 3 competing to earn money. Currently there is no objective, as it’s still a work in progress… But I hope to get it done soon!

Game if anyone wants to check out my progress:

Recent post I made on it:

1 Like

Still working on my space game! Last time (2024) I posted about how many new features I’ve added to it! (If anyone wants to try, here’s the link: untitled space game - Roblox)

I’ve added some missions and contracts, (Missions are not procedural, contracts are.)

I’ve also added a Flight UI, which displays the orientation with an ADI. it also has a progress bar, speed and altitude indicator.
{DBFF12BE-38B7-409C-B134-DF4176566D2A}

I have also been at work doing the Gemini Capsule! Once that’s done I’ll probably post here again. Either way, lots of progress in one month!

I’m working on a heavy duty NPC system

Their functionality is similar to Restaurant Tycoon 2 NPC’s

I decided I want to have a LOT of NPC’s at once, so I didn’t want to use physics or use humanoids. I also try to avoid the usage of instances (indexing properties is slow!) in favor of everything being data oriented (there’s a name for this?), and finally didn’t want the server have to do any real-time replication of moving NPC’s.


Paths are easy to construct

The paths are constructed via an array of “Actions”. I’m very fond of how easily paths are constructed; it is simply calling a function to add a Wait, a Position, a FloorChange, etc, and everything else is done behind the scenes.

In the case of the game this is for, the NPC must travel to the closest elevator, go up it, and then travel to the destination.

Due to the simplistic nature of how paths are represented, my pathfinder is just this:
image

The NPC wants to get to a point, and starts from another point.

Screenshot of path that is constructed:

It starts at the white circle, travels around the wall, walks to the elevator, waits a second, travels up the elevator, waits a second, and finally navigates around the wall and to its destination, the beautiful green circle.

It then serialized the path into a string, and sends it off to the client!

The path serialized is this:
f1/p0[0/a1/t7741.7=p0[0/p1.7[-36.6/p8.3[-36.6/p10[0/p10[0/t1/f3/p10[0/t1/p10[0/p21.2[6.7/p21.3[11.2/p10[20/p10[20 (if you can depict what the data represents then im impressed)

The client receives it, finds the record, and starts rendering the NPC. Here’s the NPC being moved along the path by the client:

Keep in mind things aren’t very worked on visually, just the data side of things are done. In the future the NPC won’t be named NPC and fly through the air while stiff like a board.

Caching speeds things up by a LOT

Paths are relatively predictable as long as the NPC is going to a destination that has already been pathed to atleast once before. To speed things up, I implemented caching which simplifies the work done in both the server and client context by a ton.

Without caching, the following happens:

Server:

  • Construct initial data
  • Construct path
  • Calculate total path duration
  • Serialize path

Client:

  • Deserialize initial data
  • Deserialize path (VERY time consuming)
  • Calculate per-waypoint duration

With caching, this happens:

Server:

  • Construct initial data
  • Data is already cached, so reuse it (nearly instant)

Client:

  • Deserialize initial data
  • Data is already cached, so reuse it (nearly instant)

Creating 1000 NPC’s at once (all their paths calculated at the same time)

Without caching, it takes around 5 minutes of rocky framerate (it’s hard to measure exactly the time taken / context). This is because roblox’s PathfindingService is not instant; the time is takes to compute paths ranges ultimately expands the computation time by a huge amount.

With caching enabled, the server creates them all in ~5 ms, and the client receives them in ~3.5 ms. This is VERY significant, and I’m looking for ways to optimize this even further.

The client is responsible for visuals

The nice thing with how the system is structured is there’s nearly no network usage. Paths are replicated as just string values, and the client does the rest. The server only calculates the path data and keeps a record that the NPC exists. This makes it easier to add extra optimizations that the client is totally responsible for.

In the video, you’ll notice how the NPC starts out smooth, but then as it reaches it’s target floor it starts to move choppy. This is because the client will purposefully update NPC’s slower the farther away they are from the players current floor.

Everything. Massive shortage of developers so the frontend scripter (me) has to do everything.
GFX, VFX, SFX, every letter in the alphabet appended with ‘-FX’.

Though given some trials and tribulations I think it looks nice.



1 Like

I know you didn’t mean it but this is funny

3 Likes

This is really cool! Good job. One of my favorites so far in this thread

Hey!

I like what you’ve got going. The destruction physics felt a little weird and inconsistent but I’m sure that can be ironed out. For example, It is not clear what you can/cannot destroy and it seems like it only works sometimes.

I playtested the guns with a friend and it seems fluid and entertaining. Keep at it!

Medieval type sword

4 Likes

That’s man! Highly appreciated, I think I know why the destruction physics are happening.

So when you destroy something, each weapon has a distance, size, intensity of the “explosion” that does terrain damage, but if there is a wall in front of you sometimes the explosion will be inside of another wall, causing it to blow up the other wall and not the one in front of you.

I’m really working quite hard on the game and I am pumping out updates as fast as I can.

Could you explain what you mean by, can and cannot destroy? Everything on the map can be destroyed except the base floor.

1 Like

Okay that’s what I assumed as far as what can be destroyed.

Feel free to contact me when you think you’ve fixed the destruction physics, I’d like to playtest a bit more! Do you plan to make buildings fall if they have no support like in The Finals?

Yes, but I honestly have no idea how to do that at the moment lol.

If you know how, please contact me! I’m currently using these destruction physics:

Ill take a look later for sure! I’m working on my game 4 hours a day at the moment so I’ll get back to you when I find the time :blush:

1 Like

Soon, I will figure out how to properly raise GDP according to population, inflation, taxes, etc, just a test for now. Currently testing out unit movement in Deterrence: REWORK 0.4, pathfinding through cities instead of moving a unit in a straight line (to prevent traveling in water without transport ships)

It is definitely not perfect yet.

2 Likes

Screen Shot 2025-02-15 at 1.40.57 AM
trading card game
(excuse the horrible art i’m a scripter not picasso)

1 Like

I … think it looks quite good!
Maybe you cod add a very small yellow to dark yellow gradient so it looks a little nicer when there’s a huge amount of space left.

1 Like

Thanks for the input, I’ll keep that in mind for future use
Any other suggestions are welcome!

Heat map of player





14.704 megabytes of data, tableted into 5.4 megabytes, Then further deleting any position with less than 3 player per position

3 Likes