Skip to content

v1.0.0 - #92

Open
weenachuangkud wants to merge 73 commits into
mainfrom
weenachuangkud-refactor
Open

weenachuangkud wants to merge 73 commits into
mainfrom
weenachuangkud-refactor

Conversation

@weenachuangkud

@weenachuangkud weenachuangkud commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Added

  • Automated testing by @Naymmmm
  • Better performance benchmarks by @Naymmmm
  • "Config.SimulationMode" (PerFrame/Fixed) and "CosmeticUpdateInterval" by @Naymmmm
  • "RAY_SEARCH_OFFSET" for pierce prevention
  • "cast.Mode"

Fixes

  • BenchmarkClient/BenchmarkServer
  • Various simulation logic bugs
  • "CastTerminating" callback/cleanup issues (Serial now invokes the user callback before cleanup)
  • Pierce prevention issues ("RAY_SEARCH_OFFSET" only applies after a pierce)
  • Motor6D movement issues
  • Parallel client initialization (Init is now retried until every actor is ready)
  • Refactor regressions found by the test suite
  • An annoying warning

Changes

  • "SerialSimulation" is no longer OOP-based and no longer creates a per-instance connection.
  • Replaced "BindableEvent" with Signal module (supports multiple listeners, function assignment still works)
  • Simplified "FastCastParallel:Init" API
  • Added "BindToSimulation"
  • Consolidated "TerminateCast"
  • Parallel fire requests are now batched into one message per worker per frame
  • Improved Serial/Parallel event systems
  • A lot of optimizations
  • Major code improvements
  • Improved documentation

Cancelled

  • Add dynamic RunService event configuration for Caster (feature)
    (Because you can simply edit the FastCast2 code if you want to change the specific RunService event.)
  • Create a Debugger GUI for benchmarking and testing (debuggergui)
    (Might add this back)

@weenachuangkud

Copy link
Copy Markdown
Owner Author

Proper review needed
Manual testing instructions: https://github.com/weenachuangkud/FastCast2/blob/main/TESTS.md

@weenachuangkud

Copy link
Copy Markdown
Owner Author

@Naymmmm Are you busy?

@weenachuangkud

Copy link
Copy Markdown
Owner Author

@Per2iako Bro

@Per2iako

Copy link
Copy Markdown
Contributor

@Per2iako Bro

  • 1,937 line of code😭

@Per2iako

Per2iako commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Yoooo it more readable LGTM

@Per2iako Per2iako left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be maintain easier good

@weenachuangkud

Copy link
Copy Markdown
Owner Author

I just need to test stuffs

@Per2iako

Copy link
Copy Markdown
Contributor

I just need to test stuffs

I busy rn i'll report test when am home

@weenachuangkud

Copy link
Copy Markdown
Owner Author

But I don't have a pc to use roblox studio, so I really need some help and I can't find anyone that actually understand how to do manual testing FastCast2 from .md instructions
@Per2iako

@weenachuangkud

Copy link
Copy Markdown
Owner Author

Okay ty, I'll working on SerialSimulation

@Per2iako

Copy link
Copy Markdown
Contributor

Okay ty, I'll working on SerialSimulation

your welcome i still use this module now a day

@weenachuangkud

Copy link
Copy Markdown
Owner Author

There must be a better way to implement SerialSimulation, because I don't like having per instance connection

@weenachuangkud weenachuangkud added enhancement New feature or request help wanted Extra attention is needed labels Sep 18, 2026
Naymmmm and others added 20 commits September 18, 2026 22:37
- Add src/Signal.luau lightweight synchronous event dispatcher
- Expose Caster events as multi-listener Signals with Connect/Once/Wait/Disconnect
- Keep function assignment as backwards-compatible shorthand for :Connect
- Batch parallel worker events into a single Output message per frame
- Add tests for multi-listener and Disconnect behavior
Resolve ParallelSimulation conflict by keeping upstream's packed-buffer
event queue and layering the per-frame event batch on top. Adapt the
hotpaths harness to pass Signals to the simulation, and exclude its Lune
runner from selene.
…ignals-replacing-bindableevents

feat(events): replace BindableEvent caster events with Signal
Dispatcher:Allocate sent 'Init' exactly once, so a client ClientVM that
bound its message handlers a frame late never initialized. Every later
'Raycast' message was then dropped and the caster produced no casts.

BaseCastParallel.Init now sets a FastCast2Ready attribute and the
dispatcher retries 'Init' until every actor reports ready.
Parallel casters sent one Actor message per shot, so a high fire rate spent
most of the main thread serializing and crossing the Actor boundary. Shots
are now queued and flushed once per frame, distributed round-robin across
workers. The behavior is snapshotted when queued so per-shot mutations such
as the raycast filter are preserved.
…hed-dispatch

perf: batch parallel fire requests into one message per worker per frame
…l-init

fix: initialize parallel actors reliably and document the client container
@weenachuangkud

Copy link
Copy Markdown
Owner Author

Dang, when @Naymmmm come in to assist with this PR everything got a lot better

@weenachuangkud

Copy link
Copy Markdown
Owner Author

I've checked TODO.md, this looks ready to merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request help wanted Extra attention is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants