Impossible to Reproduce Bug for Low End Devices within Studio

Not sure that this would be the right category, however it’s the closest I can find.

We’ve recently released a game called Super Slayers. I’d be lying if I said the launch itself went smoothly as the game realistically coudlve used another month in testing and refinement. There’s one problem that I’ve been receiving reports of from low end mobile users (and have finally reproduced atleast on mobile myself) that plain and simple has me stumped though, it genuinely should be impossible as the system functions fine on pc or any non-potato phone.

The problem is essentially this: When another player joins the server, or occasionally just by equpping/unequiiping, your swords models seem to vanish out of actual existence (while still being present in some form as pritning through them shows they’re still somewhere in workspace but I sure don’t know where as even having billboardguis makes it impossible to see). As they’re created on each client from a server side linked model, other clients will still see your weapons fine and will still even see them attack npcs you click on, but on your client they just seem to be gone. Although I’ve managed to reproduce this bug on my phone, the enviroment makes it impossible to gain any sort of idea of what might be going on and how to fix it.

I’ve tried emulating a mobile device within studio with as low as 28 mbs (yeah, 28), and using a program named Clumsy simulating extreme lag as well as duplicating and dropping packets. No matter how absolutely terribly I get it running in studio, this bug quite literally has never once happened on my computer or in studio environment. I’m pretty stumped here on where I should go next to try to figure out and reproduce this problem, so hoping someone here might have some ideas on reproducing bugs for extremely low end devices on studio.

For anyone interested in how the system itself works it essentially breaks down like so:

  • A Player joins the server. On each client a new object of a LocalPlayer class is instantiated, and when their character is loaded, a weaponhub is created on each client following their rootpart via an align position and rotating in place.

-On the server side, once the character loads in it runs through, creates a serverside model for the pet (just an inivisble part) that gets welded to their root and tagged with “ServerSword”

-Each new sword is added to a PetControl module that simply keeps a table of each players team as well as their SentOutOrder to redirect in the order you sent if you attack another npc while all are attacking. This also assigns an attribute for the number of pets equipped to the player. It furthermore also instantiates a server side sword class that handles functions such as DealDamage, GetTravelTime(used to validate a weapon should be to an npc before attacking), and others.

-For each instance of an object tagged “ServerSword”, a new object of a LocalPet class is instantiated. This object has various methods including UpdateModel which will create a visual representation of it and hook up animations and various state change events depending on its fidelity (distance to localplayer character)

-When a pet is created locally, the players WeaponHub is updated by creating a circle of equidistance attachments around it. Each sword runs through searching for a free one and attaches to it.

1 Like

print(LinkedSword.Handle.Position) will tell you where the position of a tool (in this case Linked Sword) is in workspace.