Hey! I’m running into an issue with my fishing game.
In the game, players can place eggs that hatch into fish. Each fish is a physical model that gets saved to their plot, and there’s a limit of 100 fish per plot. The problem is: when there are a lot of players, the game starts lagging a lot — probably because of the huge number of fish models. Strangely, it doesn’t lag as much on mobile.
To fix this, I was thinking of only showing the fish on the client side, while keeping all the data stored on the server. My idea was:
- On the server: store a version of the fish model, but without any visuals — basically just the data.
- On the client: use that data to spawn the actual animated fish with bones and movement.
- That way, each player would see their own fish and other players’ fish, but they’d only be loaded and animated locally, to save performance.
I’ve tried a few different ways to make this work, but I keep running into problems:
- When I tried rebuilding everything locally and only saving part of the data to the server, players would lose their progress if they left or the game shut down before the data fully loaded.
- I also tried using both server and client models, with a
CFrameValue
inside to track positioning. That sort of worked, but it was super inconsistent — like, if I tabbed out while the game was loading, the fish would show up fine. But if I stayed focused in the game, they wouldn’t appear at all.
So yeah, what I need is:
- A setup where fish are only displayed locally, but the data is still saved and managed on the server.
- Something reliable that keeps data safe even if the game closes or the player leaves while it’s loading.
- A way to show both your own fish and other players’ fish — all locally, to keep the game running smoothly.
Would really appreciate some help or suggestions on how to pull this off.
Here’s how it’s organized in scripts, if it helps:
- EggPlacement_Server → In ServerScriptService
This script is the core of my whole fishing/farming system, handling:
Placement
Growth
Rare traits
Persistence (saving/loading)
Limits and rules
Visual/audio effects
- PlotAssignment_Server → In ServerScriptService
This script handles the plot (farm) system in my fishing game, doing:
Assigns free farm to player
Sets up the sign in front of the plot to showcase the players user and character image
Teleports player to their farm
Keeps track of which farms are taken and free
When the player leaves:
Saves fish and egg datas + Clears the farm for next player who joins
- EggPlacement_Client → In StarterPlayerScripts
This LocalScript mostly just handles visual stuff, like highlights, the hovering model of the egg when you move your mouse and else. Don’t think it needs much of a description.
This is pretty much it.