Open Zinlock opened 1 year ago
Just a thought/suggestion with regard to ObjectCollision. The implementation of that DLL yields a less-than-desirable result due to the fact that these changes in collision are not predicted by clients and, realistically, cannot be predicted since they work with the results of a server-side callback on every collision. I would propose an alternative method where the server can register a set of non-colliding bitmask pairings which are then synced to the client and can be applied to a networked field and tested against on both the client and server side simultaneously; allowing client-predictable (but still rather flexible) application of this feature.
Here is a rough concept of how this idea might look in action.
$CollisionMasks::Player = 1;
$CollisionMasks::Team0 = 2;
$CollisionMasks::Team1 = 4;
package myCollision
{
function gameConnection::spawnPlayer(%this)
{
%return = parent::spawnPlayer(%this);
// Give every player our Player collision mask which will make them non-colliding with each other
%this.player.collisionMask = %this.player.collisionMask | $CollisionMasks::Player;
}
};
activatePackage(myCollision);
function Player::setTeam(%this, %teamIndex)
{
// Give our teams their own collision masks which we can negate the collision rules of
%this.collisionMask = %this.collisionMask | $CollisionMasks::Team[%teamIndex];
}
// By default, players collide with each other, but we can change that behavior by registering a non-colliding mask
// Make all players not collide with each other by default
registerNonCollidingMask($CollisionMasks::Player, $CollisionMasks::Player);
// But we want players on opposite sides of Team0 and Team1 to still collide against one another, so we'll add a negation to the previous mask
registerCollidingMask($CollisionMasks::Team0, $CollisionMasks::Team1);
I'd like to suggest some more DLLs that could be added too, such as the floating precision, network priority, trace buddy, and datachunker fix DLLs that came with V21. I think these would come in handy or at least adding more features to Rebuilt.
Here are the links to those, unless these were already added.
https://gitlab.com/Eagle517/float-precision https://gitlab.com/Eagle517/network-priority https://gitlab.com/Queuenard/TraceBuddy https://gitlab.com/Eagle517/datachunker-fix
Feature Pitch
Implement features from useful v21 dlls such as:
Potential Use Cases
Selective Ghosting could be used to point out far away objectives or teammates to team members, as well as creating environment zones Move Handler could be used for gamemode replay systems, as well as more complex vehicles (like helicopters but without requiring heightcontrol) Object Collision could be used to disable team collisions in small maps