EXPLOSIVE SPLEEF REVERB. Devlogs

Due to some unforeseen results I have to restart development on my game EXPLOSIVE SPLEEF : REVERB.

Made a M79 Thumper 3D model in blender, detailed but at the same time a bit retro-ish due to the lack of textures (intentional).

And that’s it for day 1.

Days

Day 1: EXPLOSIVE SPLEEF REVERB. Devlogs
Day 2: EXPLOSIVE SPLEEF REVERB. Devlogs - #10 by mirawvj | EXPLOSIVE SPLEEF REVERB. Devlogs - #12 by mirawvj
DAY 3!!: EXPLOSIVE SPLEEF REVERB. Devlogs - #15 by mirawvj
day 4: EXPLOSIVE SPLEEF REVERB. Devlogs - #18 by mirawvj
DAY 5: EXPLOSIVE SPLEEF REVERB. Devlogs - #19 by mirawvj

Remember to join the server for updates and communicating with me:
YT: https://www.youtube.com/@jacoDub
Server: discomBOBulATEd softWOrKs

7 Likes

Pretty cool model. If i may… what happened that lead you to restart development?

1 Like

Too many bugs overwhelmed me… (Literally two bugs that I couldn’t fix so I decided to do a new fresh start in hopes of fixing them).

:pleading_face:

1 Like

Dang. I’m guessing those were some deep rooted bugs. What were they if i may?

1 Like

Not really but it was mainly desyncing issues between the client and the server caused by a ping compensation system I added.

The game relies on projectile motion. I had to do it on the client and server individually to make sure the client gets a live view without any stuttering even on high ping but the server at the end does sanity checks to prevent exploits.

Another was some directional movement shenanigans because my methods of creating a viewmodel are unholy. (I literally use CFrames to manipulate the arms so they behave as a viewmodel). After this I just thought frick it I’m dying inside…

2 Likes

Ouch. Lag compensation is always scary. For client projectile motion you may as well be really strict about it. Bullet type projectiles could simply exist visually on the client. Just send over the velocity and whatever else numbers to the client once and let it just do its own thing without the server checking in. Itll save on resources. But yeah in laggy situations it could look like as if those projectiles are still moving without anything actually happening. I doubt any sort of lag compensation would do much for you here though. At most you could just freeze the projectiles in the air but yknow… Freezing projectiles in the air vs let the projectiles on the client hit without anything happening. Which is the better “oh the game is lagging” indicator? In my own opinion its just not really worth it to bother in trying to fix an issue that wont actually ever be fixed.

Server (bullet) projectiles could simply be a series of stepped raycasts. Every server step you just raycast from the last projectile position forward by an X amount of studs (delta time * velocity). With this you can even get strict about your projectile stepping too. You could interlace bullet projectiles on the server and just cycle through half of the total running projectiles in one single frame. Run one batch one frame, then run the second batch the next and repeat (with a delta that is double the server’s own delta. 16.666 ms times 2).

Exploit wise, ill be honest, the only sanity checks you really need is just making sure players dont start flying or teleporting. You can simply calculate the max theoretical movement speed/velocity a player can have at any given time + a small window for error in case of lag (You mostly just need how long does it take for the client to get to the server plus the server delta). It would keep movement speed hacks pretty darn tight and teleports impossible. Do be careful with this, doing this wrong can cause innocent players to get flagged frequently. This approach usually requires a lot of state management done exclusively on the server to get right.

Noclips are a little trickier but essentially all you really need to do is just check whenever or not the rootpart of X Y and Z players are inside the bounds of parts. This can get relatively demanding for the server (Though not THAT much) but you can keep compute tight regardless. You could cache all map static instance’s cframes and sizes and just make your own little collision queries. If done right you could have some pretty crazy and speedy noclipping checks. Do make sure to give the the noclip checks a bit of headroom. All players can slightly clip into any and all parts by default. 1 to 3 studs is more than enough headroom. Also watch the memory usage on the server if youre planning to cache the cframes and sizes. It should not use much memory (more than like 10 mb for large maps i mean, 10 mb is still a ton.) but yknow.

Aimbots are trickier but relatively manageable. The main trick with aimbots is that they tend to only fire directly pointing at a player’s head or some specific body part. You can log fire directions for all players up to the latest like 30 to 60 fires. You can do a bit of estimation on all of these direction vectors (relative to where they hit, distance they hit and who they hit). If the estimations turn out to be a little too robotic then yknow. Flag em!

Flyhacks are you estimating the velocity of the player relative to their state and where they are located in the map. Fly hacks tend to be a little more… Y axis biased to put it lightly. And also a simple velocity trajectory vector will provide results WILDLY different for anyone flying.

As for the viewmodel… well, you probably already know a proper rigged model is the way to go. But… you can always cheat by abusing Motor6D’s!

I know its a bit of a yap fest but yeah. Hope this helps.

1 Like

Para 1:
I’m compensating for potential ping spikes and everything. I want the player to have the best visual experience and gameplay experience as possible without having stutters. Hence, doing some simulation work on the client is fine. It also saves bandwidth. The explosion system can return TONS of data and passing all that over a remote event would be a headache!
The data goes:
For every part, it’s health, outward vectors, intensity, the part appearance itself. This is done to use a voxel explosion module.

The game is fast-paced. Freezing the projectile can break immersion. Hence, I let the client do all the explosion etc etc and the server simply deletes the parts. The client also deletes parts but when the desync happens, it can sometimes destroy the wrong parts.

Para 2:
That’s already what I did lol.

The server does not have any projectile instance, it only does internal calculation and displays the result once the raycast hits.

Para 3:
I am protecting my game against actual exploiters with brains. Not script kiddies. Well script kiddies as well but also potential exploiters that know what they are doing.

Para 4:
Yes. I know.

I’m already cheating it and it’s a bit of a headache but I’m sure I can find a way out. I’m simply too lazy to make more animations for viewmodel separately then the arms separately. Like YIKES. Sooo much work… (I’m not blending them)

Thank you but not really. My problem is a bit more different and it’s honestly just really hard to explain it all.

My goal:
Create a seamless experience for the Player as well as other players, compensating for any network delays while keeping the game protected against all kinds of potential exploiters and glitches that can be catastrophic for a PVP game.

The point is, if the game gets popular (hopefully) people will make scripts for it, and script kiddies will use them. If I prevent the people from making scripts by having my games sanity checks strict, the script kiddies won’t appear.

I hope this clarified my goal. I appreciate you helping me out though! I truly do. Thank you.

2 Likes

I’ve added social links so you can join the games server or use my YT channel to see more in-depth videos as well as fast forward coding replays.

1 Like

I would love to stay up to date with this so i bookmarked it :"D

Best of luck ^^

1 Like

Day 2 (morning)

Camera System half done. I’ll finish it up after I’m done with the movement system.

2 Likes

Thank you!

2 Likes

Day 2 (Evening)


I guess school really did help… Using F = ma and some like F = CdpAv^2 and F = mg for some velocity calculations.
Result:


The result’s perfect.

2 Likes


JUMPYYYYYYYYYyyyyyyyyyyyyyY

3 Likes

Sorry guys for no update yesterday. It was my birthday :D

2 Likes

HOI!


Tada :tada:

2 Likes

@mirawvj Imagine being sorry – screw that!

Happy late birthday!

:sparkling_heart: :tada:

Thank you so much! I appreciate it ;D

2 Likes


Almost forgot about today…

Made that and made a few changes to the movement system that aren’t that visible honestly. Mostly back end changes.

WOO DAY 5 i think

BUT!!! we got AIMMINGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

I would like to appreciate younger me for creating the formula for seamless aimming. Really good job me!

1 Like

oooh – okay okay!!

investments soon ~ ? :eyes:

@mirawvj

I have donated over thousands . . .
image

Would love to support ya when my next check clears!