Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CL - Refactor #214

Open
50 of 79 tasks
AutumnThyme opened this issue Dec 24, 2024 · 0 comments
Open
50 of 79 tasks

CL - Refactor #214

AutumnThyme opened this issue Dec 24, 2024 · 0 comments
Assignees

Comments

@AutumnThyme
Copy link
Collaborator

AutumnThyme commented Dec 24, 2024

Reference

Discord

CL Rework

MVP:

  • Reflection Caching
  • Class Instance Function Overloads and Standardized Operators (math operators, __equals__, __hash__, etc...)
  • Convert all CustomLogicClassInstance builtin's to use Reflection Source Generation instead of if/else
  • Basic test against all gamemodes
  • Reveal, probably all outline modes have issues
  • Use Array/Collection Pooling for Short Lived elements (local variables/callstack)
  • Kwargs/optional argument support
  • Effect Spawning
  • Mode Settings has Type variable visible
  • .Parent transform vs Map Object dilemma - for now just supporting both
  • Rework Dictionary to use __hash__() and return back to constant time lookup
  • Range
    • Cache/Pool list -> Better solution than generate list to iterate over?
  • Collision/Collider CL Representations
  • Expand on already implemented unity API's (line renderer, vector3)
  • Toggle OSR/W via CL
  • Disable Transform Sync Events via map script element
  • Add hitbox transforms/collider to CustomLogicTitanBuiltin
  • OnGetHit, add a CustomLogicCollisionBuiltin parameter
  • Regression Testing - All builtins have been confirmed working - still need to rework mapobject builtin components and confirm compatibility.
  • Performance Testing - found issues, going with source gen, performance parity reached, should get better performance once issues are fixed due to other unrelated optimizations.
  • API Generation/Versioning
  • Play Testing/Release API to CL users and prompt feedback

Non-MVP:

  • MapObject Builtin Components need rework
    • Swap from massive if chain to builtin class instance for each.
    • Rigidbody
      • Must have all fields -> option to remove mock gravity value if unused.
    • PointLight
    • Tag
    • DirectionalLight
    • SpotLight
    • CustomPhysicsMaterial
    • NavMeshObstacle
  • Component-Scoped context for network views -> More things to consider when redoing this (network transfers and stuff need to be referencing the mapobject-global networkview)
  • Objects in callbacks are created and destroyed very quickly which fills up the GC with garbage.
    • Cache/Pool types within callbacks? OnTick, OnFrame, OnSecond, OnSpawn?
    • Generational GC
  • Gamemode Addons - Components defined outside the scope of a map that are intended to be layered on top of any generic gamemode. On startup, they are spawned and attached to an empty gameobject. Users are responsible for making addons that do not conflict with gamemode code (similar to map components)
    • Load Addon Code before game starts
    • Addon Code UI
    • Public Examples - AFK timer, Ping Check, Custom commands
    • Addon Hash For Verification

Compatibility Checklist:

  • Camera
  • Character
  • Collider
  • Collision
  • Color
  • Convert
  • Cutscene
  • Dict
  • Game
  • Human
  • Input
  • Json
  • LineCast
  • LineRenderer
  • List
  • Map
  • MapObject
  • MapObjectTargetable
  • Math
  • Network
  • NetworkView
  • PersistentData
  • Physics
  • Player
  • Quaternion
  • Random
  • Range
  • Room
  • Set
  • Shifter
  • String
  • Time
  • Titan
  • Transform
  • UI
  • Vector2
  • Vector3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant