# External Integrations

**Analysis Date:** 2026-05-01

The repo is a preservation archive — most "integrations" are historical artifacts of a defunct multiplayer game (2008–2017) plus a 2026 mirror pipeline. There are no live external services owned by this codebase. Integrations are grouped by subsystem.

## Networking — GameMaker Game (legacy/open-source-release, legacy/servers, legacy/source-archive)

**Transport DLL: `39dll.dll`** — third-party GameMaker TCP/IP extension by 39ster. Bundled at:
- `legacy/open-source-release/39dll.dll`
- `legacy/servers/enlyzeam-current/39dll.dll`
- `legacy/servers/enlyzeam-archive/39dll.dll`
- `legacy/servers/local-current/39dll.dll`

Loaded into GML via `external_define()`. Provides TCP/UDP socket management with its own internal contiguous buffer accessed through `clearbuffer()`, `writebyte()`, `writestring()`, `writedouble()`, `sendmessage(socket, ip, port)`, `receivemessage()`, `readbyte()`, `readdouble()`, `readstring()`. Wire protocol is raw byte-stream; structure is dictated by call order. Documented in `decomp/wiki/08-39dll-networking.md`.

**Wire protocol opcodes:** documented in `legacy/open-source-release/BN Online Message ID's Table.xls` (Excel binary; not parsed here). No formal schema, no JSON/XML wrapper.

**Server connection lists:**
- `legacy/open-source-release/localList.txt` — alternating-line username/password registry (~thousands of accounts; first 20 lines confirm format `user\npass\nuser\npass...`). Used as the account whitelist by the master server. **Contains plaintext credentials.**
- `legacy/servers/enlyzeam-current/localList.txt`, `remoteList.txt` — same format, separate snapshots.
- `legacy/servers/local-current/localList.txt`, `remoteList.txt` — same.

**Watchdog process:** `Server Saver.exe` plus `Crasher (Test With Server Saver).exe` (paired test crasher). Native Win32 binaries, source not in repo.

**Account utilities (binaries only, no source):** `Account Updater.exe`, `Old Account Updater.exe`, `Old Accounts Reloader.exe` (in `legacy/servers/enlyzeam-current/` and `legacy/servers/local-current/`). Likely manipulate `User_DB.bnu` / account-related `.bnu` files.

## Networking — Unity Port (legacy/unity-project)

**Built-in legacy Unity networking (`UnityEngine.Network`):** Used by `legacy/unity-project/Assets/_Scripts/Networking/NetMenu.cs`:
- Hardcoded server: `connectionIP = "decidel.com"` (line 6), `portNumber = 49009` (line 7).
- API calls: `Network.Connect(connectionIP, portNumber)` (line 39), `Network.InitializeServer(4, portNumber, true)` (line 42), event hooks `OnConnectedToServer`, `OnServerInitialized`, `OnDisconnectedFromServer`.
- This API was deprecated/removed after Unity 5.x.

**UNet (`UnityEngine.Networking`):** Used by `legacy/unity-project/Assets/_Scripts/Networking/SerializePlayer.cs` (`NetworkBehaviour`, `isLocalPlayer`). UNet has been removed from current Unity LTS. Referenced in `Assembly-CSharp.csproj` line 70 via `UnityEngine.Networking.dll`.

**Photon (Exit Games, `Photon3Unity3D.dll`):** Bundled at `legacy/unity-project/Assets/Plugins/Photon3Unity3D.dll` (with `.mdb`, `.pdb`, `.xml` siblings). Referenced in csproj line 73 with original HintPath `E:/Dropbox/Brand New Onlinegame/BNO Unity Project/Assets/Plugins/Photon3Unity3D.dll`. **Not invoked from any surviving `.cs` file** — appears to be evaluated and abandoned. No Photon AppId, region, or cloud config detected.

**Unity Cloud Services flags** (DefineConstants, csproj line 22): `ENABLE_CLOUD_SERVICES_ADS`, `ENABLE_CLOUD_HUB`, `ENABLE_CLOUD_PROJECT_ID`, `ENABLE_CLOUD_SERVICES_PURCHASING`, `ENABLE_CLOUD_SERVICES_ANALYTICS`, `ENABLE_CLOUD_SERVICES_UNET`, `ENABLE_CLOUD_SERVICES_BUILD`. These are Unity's compile-time feature flags only — no Project ID, no API keys, no analytics endpoints configured anywhere visible. `legacy/unity-project/ProjectSettings/UnityConnectSettings.asset` and `UnityAdsSettings.asset` exist but were not inspected.

## Data Storage

**No databases.** No SQL, no SQLite, no Mongo, no key-value store. All persistent state is flat files on the host filesystem.

**Proprietary GameMaker formats** (per-game, no public spec — see `decomp/wiki/16-bno-bnb-notes.md`):
- `.gmd` — GameMaker 5.x source (ZLIB+XOR). The canonical "project file."
- `.gb1` … `.gb9` — IDE auto-backups, byte-identical to `.gmd`.
- `.bno` — proprietary binary settings (e.g. `MSettings.bno`, `Settings.bno`).
- `.bnb` — proprietary binary log (e.g. `MB_Log.bnb`, message-board log).
- `.bnu` — proprietary binary user data (e.g. `User_DB.bnu`, `User_DBUpdated.bnu`, `Areas_*.bnu` 0–10, `News_*.bnu` 0–17+ in `legacy/open-source-release/UserData/MB_News/`).

**UserData subdirectory layout** (consistent across `legacy/open-source-release/UserData/`, `legacy/servers/enlyzeam-current/UserData/`, `legacy/servers/local-current/UserData/`):
- `Areas (VOID)/`, `Areas_*.bnu` — area/world state
- `HXB/`, `HXB Backup 09-09/` — likely hex/save data with dated backup
- `Inv/`, `Inv Backup 09-09/` — inventory state
- `MB_News/News_*.bnu` — message board persistent storage

## File Formats Consumed / Produced

**Consumed by GameMaker game:**
- WAV, MIDI, MP3 (audio embedded in `.gmd`)
- BMP, PNG (sprites/backgrounds embedded in `.gmd` as ZLIB pixel arrays)
- Custom `.bno`/`.bnb`/`.bnu` (read/written via 39dll-style sequential `file_bin_*` calls)

**Produced by GameMaker game:**
- `.bnu`, `.bnb`, `.bno` files (server runtime persistence)
- Plaintext logs: `server_log.txt`, `DebugLog.txt`, `Server_Status.txt`, `Mrah.txt`

**Consumed by Unity port:**
- `.fbx` (`legacy/unity-project/Assets/_Animations/megaman_anim_v005.fbx`) from Maya pipeline
- `.obj` mesh files (~16 tile/portal models in `Assets/_Models/`)
- Unity `.prefab`, `.mat`, `.unity` (scenes), `.shader` (HLSL/ShaderLab), `.controller` (animator)
- `.psd` source images via Maya intermediate (`legacy/maya-project/sourceimages/*.psd`)

**Produced by Unity port:**
- Windows: `legacy/unity-project/Test Builds/Windows/NetTestBuild.exe` + `NetTestBuild_Data/` + `player_win_x86.pdb`, `player_win_x86_s.pdb`
- Android: `Test Builds/Android/test_2015-04-04.apk`, `test_2015-04-06.apk`

**Consumed by Maya:**
- `.mb` (Maya Binary) scenes — 11 files in `legacy/maya-project/scenes/`
- `.psd`, `.png` source images
- `.exr` HDR latlong renders (`latlong_render__5320.exr`, `latlong_render__7220.exr`)
- `.nk` (Nuke compositing) — `latlong_transform.nk` (cross-tool integration with Foundry Nuke for HDR processing)

**Produced by Maya pipeline:**
- `.obj`, `.fbx` exports → fed to Unity (`legacy/maya-project/scenes/export_to_unity/`)

## Audio Assets

`legacy/audio/quotes/Zig Zag or Joog Jaug_.mp3` — single voice clip (Brandon Smith, original creator).

`legacy/audio/bno-songs/` — 10 MIDI files (`.mid`): Mega Man Battle Network 3/4/5 themes, EXE themes, cyberworld theme. Sourced from Google Talk file transfers (per `legacy/README.md` provenance line 41).

## Mirror / Provenance Pipeline (legacy/.mirror.js, .mirror-fix.js)

**Network protocols used by the mirror script:**
- **Everything HTTP** (port 80) — file-listing API on each source machine. JSON endpoint: `http://${host}:80/?json=1&path_column=1&size_column=1&count=20000` (`legacy/.mirror.js` line 49).
- **Everything ETP** (port 29) — FTP-like file transfer; remote pulls invoke `curl` over `ftp://enlyzeam:29/...` (per `legacy/.mirror.js` line 58).
- **Local fs.copyFile** — for the localhost machine.

**Required external services (host-side):** voidtools Everything 1.5a running with HTTP + ETP servers enabled on both source hosts.

**Hardcoded source hosts:**
- `enlyzeam` (NetBIOS / DNS hostname on local LAN)
- `127.0.0.1` (local machine)

**Hardcoded destination:** `C:\\Users\\decid\\Documents\\projects\\rebno\\legacy` (`legacy/.mirror.js` line 7) — Windows-only.

**Output artifact:** `legacy/.mirror-report.json` — per-bucket fetch results, 0 failures across 7958 files / 778 MB.

## Authentication & Identity

**GameMaker game:** Plaintext username/password pairs in `localList.txt` / `remoteList.txt`. No hashing. No salting. No transport encryption (39dll TCP is plaintext).

**Unity port:** No auth code in surviving 11 scripts. `NetMenu.cs` exposes a single "Connect" / "Host" button pair with no credentials.

**Mirror scripts:** None — Everything HTTP/ETP servers run unauthenticated on trusted LAN.

**Repo / git:** Not a git repo. No CI, no remote, no signing.

## Monitoring & Observability

**GameMaker servers:** Plaintext rolling logs only.
- `server_log.txt` (every server snapshot)
- `DebugLog.txt` (every server snapshot)
- `Server_Status.txt` (`legacy/servers/enlyzeam-current/`)
- `MB_Log.bnb` — binary message-board log (per `decomp/wiki/16-bno-bnb-notes.md`, structure derivable from GML)
- `,ServerCommands.txt` and `Ctrl+O Codes.txt` — operator keybind references (e.g. `Ctrl+E` exec clipboard code, `Ctrl+Q` inspect var, `Ctrl+M` view boards) per `legacy/open-source-release/,ServerCommands.txt`.

**Unity port:** Standard Unity log only. No Sentry, no Crashlytics, no analytics SDK linked.

## CI/CD & Hosting

**None.**
- No `.github/`, no `.gitlab-ci.yml`, no `azure-pipelines.yml`, no Jenkinsfile.
- No deploy targets, no Dockerfile, no `docker-compose.yml`.
- The GameMaker server historically ran on physical home PCs (`enlyzeam`, `FRAGZON` per `legacy/README.md` line 93). No cloud hosting.
- Unity port never shipped (abandoned 2017-05).

## Webhooks & Callbacks

**None present.** No HTTP routes, no webhook receivers, no outgoing webhooks.

## Environment Configuration

**No `.env` files anywhere.** No `.npmrc`, no `.netrc`, no credential files, no service-account JSON.

**Hardcoded values to be aware of (not secrets, but coupled config):**
- `decidel.com:49009` — Unity port server target (`Assets/_Scripts/Networking/NetMenu.cs`)
- `C:\\Users\\decid\\Documents\\projects\\rebno\\legacy` — mirror script destination (`legacy/.mirror.js` line 7)
- `enlyzeam`, `127.0.0.1` — mirror source hosts (`legacy/.mirror.js` BUCKETS array)
- Multiple csproj `HintPath` entries pointing at `E:/Program Files (x86)/Unity/Editor/...` and `E:/Dropbox/Brand New Onlinegame/...` — original developer machine paths (`legacy/unity-project/Assembly-CSharp.csproj` lines 41, 44, 67, 70, 73)

**Plaintext credentials at rest** (preservation artifacts, not active secrets):
- `legacy/open-source-release/localList.txt` and parallel `localList.txt` / `remoteList.txt` files in `legacy/servers/*/` contain the historical BNO account database. Many entries appear to be placeholder `testpass` values (verified in first 20 lines of OSR copy), but the file is the production user/pass list as-shipped in 2014.

## Reverse-Engineering Tool Dependencies (referenced by decomp/, not bundled)

The `decomp/` documentation references but does not include:
- **GMD-Recovery** by VBGAMER45 (VB6, GitHub) — dynamic memory decompiler for GM 4.x–5.3a
- **GM Decompiler v2.1** (Java, `gmdecompiler_v2_1.jar`) — static decompiler, GM 5.3a–7.0
- **LateralGM** (Java) — open-source `.gmd` parser/editor
- **GmkSplitter** by MedO (Java, `gmksplit.jar`) — `.gmk`/`.gm81` to VCS-friendly tree
- **UndertaleModTool / Altar.NET** — explicitly noted incompatible (`decomp/wiki/13-modern-tool-incompat.md`)

## Cross-Subsystem Integration Points

- **Maya → Unity:** `.obj`/`.fbx` export through `legacy/maya-project/scenes/export_to_unity/`. Source `.psd` baked to `.png`, then meshed in Maya, exported to Unity `Assets/_Models/`.
- **GameMaker → Unity:** Conceptual only. The Unity port was a "Successor" project (working title "BNO Successor" per csproj filenames) intended to replace the GM game. **No data, schema, or wire protocol bridge exists.** Unity port uses Unity's `Network` API on a different port and protocol than the GML 39dll server.
- **Audio assets → game(s):** MIDI files in `legacy/audio/bno-songs/` are sourced separately (Google Talk transfers); some likely embedded into earlier `.gmd` versions but no extracted manifest confirms which.

---

*Integration audit: 2026-05-01*
