> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SummerJoinTarget

> Which placement provider brings this player into a World.

**Class:** `SummerJoinTarget` · **Inherits:** RefCounted

Which placement provider brings this player into a World.

The single argument of [`Summer.client.join()`](/api-reference/gdscript/client#join). A target is an immutable statement of intent built with one of the static constructors: [`queue()`](/api-reference/gdscript/types/join-target#queue) for solo matchmaking, [`party_queue()`](/api-reference/gdscript/types/join-target#party_queue) to queue with the account party, [`world()`](/api-reference/gdscript/types/join-target#world) for a direct or open World join, [`invite()`](/api-reference/gdscript/types/join-target#invite) for a private code, [`follow()`](/api-reference/gdscript/types/join-target#follow) for a party or player, [`portal()`](/api-reference/gdscript/types/join-target#portal) for an authority-issued transfer, [`resume()`](/api-reference/gdscript/types/join-target#resume) for a reconnect, and [`local()`](/api-reference/gdscript/types/join-target#local) for the in-process development fixture.
Every target yields the same [`SummerJoinOperation`](/api-reference/gdscript/types/join-operation), the same progress stages, the same typed failures, and the same [`SummerWorld`](/api-reference/gdscript/types/world) and [`SummerSession`](/api-reference/gdscript/types/session) after admission. Only queue targets can ever raise [`SummerJoinOperation.acceptance_required`](/api-reference/gdscript/types/join-operation#acceptance_required); a game that never matchmakes never sees a proposal or a Match.
Targets carry safe intent only. They never contain tickets, tokens, endpoints, or platform identifiers.

## Properties

| Property | Type | Access | Description |
| - | - | - | - |
| <a id="display_name" />`display_name` | String | read-only, `get_display_name()` | Local fixture display name, otherwise empty. |
| <a id="follow_target" />`follow_target` | String | read-only, `get_follow_target()` | |
| <a id="invite_code" />`invite_code` | String | read-only, `get_invite_code()` | |
| <a id="kind" />`kind` | [`SummerJoinTarget.Kind`](/api-reference/gdscript/types/join-target#kind) | read-only, `get_kind()` | The placement provider this target selects. |
| <a id="kind_name" />`kind_name` | StringName | read-only, `get_kind_name()` | Stable lowercase name of `kind`, for diagnostics and typed failure messages. |
| <a id="local_address" />`local_address` | String | read-only, `get_local_address()` | |
| <a id="local_port" />`local_port` | int | read-only, `get_local_port()` | |
| <a id="portal_destination" />`portal_destination` | String | read-only, `get_portal_destination()` | |
| <a id="request" />`request` | [`SummerMatchmakingRequest`](/api-reference/gdscript/types/matchmaking-request) | read-only, `get_request()` | Optional matchmaking tuning for a queue target, otherwise `null`. |
| <a id="resume_handle" />`resume_handle` | String | read-only, `get_resume_handle()` | |
| <a id="world_id" />`world_id` | String | read-only, `get_world_id()` | |

## Methods

### follow

```gdscript theme={null}
func follow(target: String) -> SummerJoinTarget static
```

Join the World a party or player is currently in.

| Parameter | Type | Default |
| - | - | - |
| `target` | String | required |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### get\_queue

```gdscript theme={null}
func get_queue() -> StringName const
```

Queue name for a queue target, otherwise empty. Exposed as a method because the static factory [`queue()`](/api-reference/gdscript/types/join-target#queue) owns the \[code skip-lint]queue\[/code] name.

**Returns:** StringName

### invite

```gdscript theme={null}
func invite(code: String) -> SummerJoinTarget static
```

Join through a private code or a server-browser entry.

| Parameter | Type | Default |
| - | - | - |
| `code` | String | required |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### local

```gdscript theme={null}
func local(address: String = "127.0.0.1", port: int = 0, display_name: String = "") -> SummerJoinTarget static
```

Join a local development World over loopback. No platform is involved. `port` `0` selects the default local port. A sandboxed embedded Debug app must explicitly authorize its admitted package and exact preview endpoint before Engine startup; a game cannot grant this permission. Missing authorization fails with nonretryable `capability_unavailable`. This preview does not grant hosted access or general network permission.

| Parameter | Type | Default |
| - | - | - |
| `address` | String | `"127.0.0.1"` |
| `port` | int | `0` |
| `display_name` | String | `""` |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### party\_queue

```gdscript theme={null}
func party_queue(queue: StringName, request: SummerMatchmakingRequest = null) -> SummerJoinTarget static
```

Enter the named queue together with the player's current Summer party. The same target serves every member. When the leader joins it, the party search starts; every member must have this Game open with a compatible Build, otherwise the join fails with retryable `party_member_offline`. When another member joins it, they attach to the party's search in progress for the same queue and receive their own Session in the same match; with no such search it fails with retryable `party_not_searching`. Members typically join when [`Summer.client.party.search_started`](/api-reference/gdscript/client/party#search_started) fires. Outside a party it fails with `party_not_found`.
Every party member goes through the same search, proposal, cancellation and admission lifecycle as [`queue()`](/api-reference/gdscript/types/join-target#queue), and receives the ordinary join result. Party membership and private chat persist across Games and remain owned by the Summer account; the game never receives the party's private chat history or credentials. Requires a Host advertising `find_party_session`; unavailable Hosts fail explicitly. Local play has no account party and fails with `capability_unavailable`.

```gdscript theme={null}
var party := Summer.client.party
party.search_started.connect(func(queue: StringName) -> void:
    if not party.is_leader():
        var result := await Summer.client.join(SummerJoinTarget.party_queue(queue)).completed
        if not result.is_ok():
            push_warning(result.message)
)
```

| Parameter | Type | Default |
| - | - | - |
| `queue` | StringName | required |
| `request` | [`SummerMatchmakingRequest`](/api-reference/gdscript/types/matchmaking-request) | `null` |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### portal

```gdscript theme={null}
func portal(destination: String) -> SummerJoinTarget static
```

Follow an authority-issued transfer to another World.

| Parameter | Type | Default |
| - | - | - |
| `destination` | String | required |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### queue

```gdscript theme={null}
func queue(queue: StringName, request: SummerMatchmakingRequest = null) -> SummerJoinTarget static
```

Enter through matchmaking on the named queue. The optional `request` only tunes region preferences and the bounded search lifetime; a request naming a different queue fails the join with `invalid_argument`. When the queue declares acceptance, the operation pauses at [`SummerJoinProgress.STAGE_PROPOSED`](/api-reference/gdscript/types/join-progress#stage_proposed) and emits [`SummerJoinOperation.acceptance_required`](/api-reference/gdscript/types/join-operation#acceptance_required).

| Parameter | Type | Default |
| - | - | - |
| `queue` | StringName | required |
| `request` | [`SummerMatchmakingRequest`](/api-reference/gdscript/types/matchmaking-request) | `null` |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### resume

```gdscript theme={null}
func resume(handle: String) -> SummerJoinTarget static
```

Return to an existing Session after a client restart.

| Parameter | Type | Default |
| - | - | - |
| `handle` | String | required |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

### world

```gdscript theme={null}
func world(world_id: String) -> SummerJoinTarget static
```

Join a specific authorized World by its stable identity. A sleeping persistent World wakes and restores before admission. The operation waits up to 300 seconds and can be cancelled; authorization remains a platform decision. No proposal, no Match.

| Parameter | Type | Default |
| - | - | - |
| `world_id` | String | required |

**Returns:** [`SummerJoinTarget`](/api-reference/gdscript/types/join-target)

## Enums and constants

### Kind

| Name | Value | Description |
| - | - | - |
| `KIND_QUEUE` | `0` | Matchmaking provider. The only kind that can propose accept/decline. |
| `KIND_WORLD` | `1` | Direct or open World join. |
| `KIND_INVITE` | `2` | Private code or server-browser entry. |
| `KIND_FOLLOW` | `3` | Party or player follow. |
| `KIND_PORTAL` | `4` | Authority-issued transfer destination. |
| `KIND_RESUME` | `5` | Reconnect to an existing Session. |
| `KIND_LOCAL` | `6` | In-process development fixture; no platform. |
| `KIND_PARTY_QUEUE` | `7` | Queue with the player's current account party. |

***

What is live on the platform today: [platform capability status](/knowledge-base/source-status). Check availability at runtime before you offer a feature.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.