decentraland / decentraland/unity-explorer

Fishing Pond completely non-functional when scene backend (134-209-64-119.sslip.io) is unreachable — game state never initializes

Open
#9,714 1 comment 0 reactions 0 assignees View on GitHub
2-medium bug content-team Mac Only user-issue web-requests
Dominant language
C#
Stars
23
Forks
17
Avg merge
2d 16h
Merged PRs (30d)
101

Description

## Bug Report

**Reporter:** Ro
**Platform:** Mac (Apple M4 Pro, macOS 15.3.1)
**Explorer version:** v0.166.0-alpha-main (Unity 6000.4.0f1)
**Scene:** Genesis Plaza fishing pond, parcel `(-3, -2)`
**Scene CID:** `bafkreickby543uetmf3r3fsgxeiuxwg6n4umrv3qxdlq5tog63nb22vqaa`
**Reproduction index:** 10/10 (for this reporter only — other users unaffected)

## Symptoms

- Error modal shown in UI immediately on arrival at the plaza
- Cannot cast a fishing line
- Clicking the vending machine does nothing

## Root Cause

Immediately after scene `(-3, -2)` starts, three DNS resolution failures occur for the fishing pond's backend server:

```
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
```

The scene backend at `134.209.64.119` (accessed via `sslip.io` wildcard DNS) is unreachable for this user. Because the backend fetch fails, the scene's game state stores (`fishGameData` and `playerInventoryData`) are never populated. All downstream interactions then throw immediately and silently:

```
ScriptEngineException: Error: ERROR - fishGameData.ts/getMyGameState - Trying to access my game state but it is not stored
at VXe (Script [19]:63:86935)
at w4 (Script [19]:63:87166)
at Object.KXe [as getMyEquippedBait] (Script [19]:63:87365)
at UO.updateStep (Script [19]:63:672)
at Object.rhe [as fn] (Script [19]:63:31758)
at Object.o [as update] (Script [19]:1:308416)
at async Object.e7t (Script [19]:1098:107395)
at async __internalOnUpdate (Script [22]:13:21)
```

This exception repeats every update tick for the entire session. When the user interacts with the vending machine, a second store fails:

```
ScriptEngineException: Error: ERROR - playerInventoryData.ts/getItems - Trying to access inventory but it is not stored
at W2 (Script [19]:63:82170)
at Object.hXe [as getItems] (Script [19]:63:83245)
at QE (Script [19]:63:60019)
at Object.RGe [as activateVendingMachineUI] (Script [19]:61:3465)
```

Additionally, repeated TLS certificate errors appear throughout the session (separate issue, possibly related to the same backend):

```
Curl error 60: Cert verify failed. Certificate has expired. UnityTls error code: 7
```

## Steps to Reproduce

1. Launch Explorer and go to Genesis Plaza
2. Note the error modal on arrival
3. Walk to the fishing pond and attempt to cast a line — nothing happens
4. Click the vending machine — nothing happens

## Analysis

The failure is user-specific (10/10 for this reporter, 0/10 for others), pointing to one of:
- The backend at `134.209.64.119` is unreachable from this user's network (DNS block on `sslip.io`, or the IP is down/changed)
- The TLS certificate for the backend endpoint has expired (`Curl error 60`), which could cause connection failures even when DNS resolves

The scene does not handle the case where the backend fetch fails gracefully — `fishGameData.ts` and `playerInventoryData.ts` throw uncaught exceptions on every access attempt rather than degrading gracefully or showing a user-facing error.

## Suggested Actions

- **Scene owner:** verify that `134.209.64.119` is the current, reachable backend IP and that its TLS certificate is valid
- **Scene code:** add a fallback/error state when the backend initialization fetch fails, so the scene degrades gracefully rather than spamming `ScriptEngineException` on every update tick

## Related Issues

- #9539 — "No Active Session" modal during fishing (different trigger)
- #9536 — B001/B002/B003 errors on bait depletion (different scenario)

## Logs

Full `Player.log` attached below (condensed to relevant sections):

Scene start + DNS failures

```
13:25:59.778 - Scene '(-3, -2) - bafkreickby543uetmf3r3fsgxeiuxwg6n4umrv3qxdlq5tog63nb22vqaa' started
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
Curl error 6: Could not resolve host: 134-209-64-119.sslip.io
```

fishGameData.ts repeated exception (update loop, every tick)

```
ScriptEngineException: Error: ERROR - fishGameData.ts/getMyGameState - Trying to access my game state but it is not stored
at VXe (Script [19]:63:86935)
at w4 (Script [19]:63:87166)
at Object.KXe [as getMyEquippedBait] (Script [19]:63:87365)
at UO.updateStep (Script [19]:63:672)
at Object.rhe [as fn] (Script [19]:63:31758)
at Object.o [as update] (Script [19]:1:308416)
at async Object.e7t (Script [19]:1098:107395)
at async __internalOnUpdate (Script [22]:13:21)
```

playerInventoryData.ts exception (on vending machine interaction)

```
ScriptEngineException: Error: ERROR - playerInventoryData.ts/getItems - Trying to access inventory but it is not stored
at W2 (Script [19]:63:82170)
at Object.hXe [as getItems] (Script [19]:63:83245)
at QE (Script [19]:63:60019)
at Object.RGe [as activateVendingMachineUI] (Script [19]:61:3465)
at Script [19]:61:23002
at Object.fn (Script [19]:1:311453)
at Object.o [as update] (Script [19]:1:308416)
at async Object.e7t (Script [19]:1098:107395)
at async __internalOnUpdate (Script [22]:13:21)
```

TLS certificate expiry errors (repeated throughout session)

```
Curl error 60: Cert verify failed. Certificate has expired. UnityTls error code: 7
```

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the scene-start logs and the mentioned fishGameData.ts and playerInventoryData.ts stores, then reproduce with the fishing backend unreachable. Trace initialization and the fishing and vending-machine interaction paths. Done means failed initialization is handled gracefully, without repeated update-tick exceptions, and the user receives a clear error state.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, typescript
Domain
backend, game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.