RedM (RDR3) client pool-size limits (increase_pool_size)
Generated from the Cfx-published pool-size-limits list. Source: https://content.cfx.re/mirrors/client/pool-size-limits/redm.json (Last-Modified: Wed, 25 Feb 2026 12:08:09 GMT, ETag: "16b454c54abb2fa8ff299a474ef70a8a"). Regenerated by the server at boot and every 24h — do not hand-edit.
What these numbers mean
The game allocates fixed-capacity pools for engine objects (script objects, networked entities, texture dictionaries, doors, interior portals, …). When a pool is full, further allocations fail: entity-creating natives (CREATE_PED, CREATE_OBJECT, CREATE_VEHICLE, …) return 0, or the client crashes with a pool-full error. This is what "pool exhaustion" means.
A server owner can enlarge a pool for every connecting client from server.cfg:
increase_pool_size "Object" 1500
Cfx publishes the set of pools that may be enlarged and the maximum increase allowed per pool. Both the server and every client fetch that list at startup; an increase_pool_size for a pool not in the list, or above its cap, is rejected. The table below is that list. The values are the largest permitted increase argument — not the engine's default pool size and not the resulting total.
Pools and maximum increase (RedM (RDR3))
| Pool | Max increase |
|---|---|
AttachmentExtension |
430 |
CAnimalGroupMember |
110 |
CAvoidanceComponent |
1300 |
CCrimeObserver |
150 |
CDoorExtension |
160 |
CDoorSyncData |
20 |
CLightEntity |
2000 |
CMoveObject |
100 |
CNetObjDoor |
20 |
CNetObjObject |
100 |
CNetObjPedBase |
110 |
CNetObjVehicle |
40 |
CompEntity |
50 |
CPedAvoidanceComponent |
256 |
CPedSyncData |
50 |
CPropSetObjectExtension |
950 |
DrawableStore |
50000 |
FragmentStore |
4000 |
GrassBatch |
2000 |
InteriorProxy |
450 |
NavMeshRoute |
200 |
netGameEvent |
400 |
Object |
2000 |
OcclusionInteriorInfo |
10 |
OcclusionPathNode |
1500 |
OcclusionPortalEntity |
140 |
OcclusionPortalInfo |
140 |
PortalInst |
150 |
ScaleformStore |
100 |
StaticBounds |
6500 |
TxdStore |
26000 |
Guidance for scripters
- Every ped, object, prop or vehicle a resource spawns takes a slot in a client-side pool shared with the game world and every other resource. Budget spawns and delete what you create (
DELETE_PED,DELETE_OBJECT,DELETE_VEHICLE,DELETE_ENTITY, orSET_ENTITY_AS_NO_LONGER_NEEDED), including on resource stop. - Networked entities are the tightest budget: the
CNetObj*pools (CNetObjPedBase,CNetObjVehicle,CNetObjObject,CNetObjDoor) cap how many network peds / vehicles / objects / doors a client can track beyond the engine default. Spawn local (non-networked) entities when they don't need to sync. - Measure before tuning:
GET_GAME_POOL("CPed"),"CObject","CVehicle","CPickup"returns every handle currently in that client pool. - If a design genuinely needs more, the server owner adds
increase_pool_sizelines within the caps above — there is no per-resource override and no way to exceed the cap. - Streaming pools (
TxdStoretexture dictionaries,DrawableStore,FragmentStore,StaticBounds) and map-data pools (CDoorExtension,CPropSetObjectExtension,InteriorProxy,Occlusion*,PortalInst) are the ones to look at when custom maps, prop sets or many custom textures fail to load rather than when entities fail to spawn.