You are viewing a potentially older version of this package. View all versions.
pander33-SailwindCoop-0.1.5 icon

SailwindCoop

Sailwind LAN Co-op Mod - Play with friends over LAN or VPN.

Date uploaded 2 weeks ago
Version 0.1.5
Download link pander33-SailwindCoop-0.1.5.zip
Downloads 44
Dependency string pander33-SailwindCoop-0.1.5

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

Sailwind LAN Co-op Mod

English | Русский


English

📖 Description

Sailwind LAN Co-op is a mod that adds multiplayer functionality to the game Sailwind. It allows you to play with friends over LAN (Local Area Network) or through VPN/tunneling services.

Current Version: 0.1.5
Requirements: BepInEx 5.x, Sailwind

✨ Features

  • LAN Multiplayer: Play with friends on the same network
  • Cross-Internet Play: Use with VPN services (Hamachi, ZeroTier, etc.)
  • Configurable Settings: Adjust network parameters, player name, and more
  • In-game Co-op Menu: Press F8 to host, join, disconnect, choose avatar, show diagnostics, and open debug tools
  • Default Avatar Included: The release includes avatar.bundle for remote player models
  • Avatar Customization: Replace avatar.bundle with your own compatible bundle if desired
  • Up to 4 Players: Host a game with up to 4 clients simultaneously
  • Shared Sea: Waves, weather and time of day run on the host's clock, so every player sees the same water under the same hull
  • Quiet by Default: The mod writes nothing to the log unless you switch logging on from the menu

📥 Installation

Prerequisites

  1. Sailwind installed via Steam
  2. BepInEx 5.x installed for Sailwind

Mod Installation

  1. Download the latest release archive
  2. Extract SailwindCoop.dll, LiteNetLib.dll, and avatar.bundle to: Sailwind/BepInEx/plugins/SailwindCoop/
  3. If you use a custom avatar, replace the included avatar.bundle with your compatible bundle
  4. Launch the game

🎮 How to Play

For gameplay details such as economy, missions, cargo, items, damage, mooring, anchor, sleep, and guest progress, read MULTIPLAYER_GUIDE.md.

Hosting a Game (You will be the server)

  1. Launch Sailwind
  2. Load or start a save game
  3. Press F8 to open the Sailwind Co-op menu
  4. Click Host
  5. Share your IP address with friends (see "Finding Your IP" below)
  6. Wait for friends to connect

Joining a Game

  1. Launch Sailwind
  2. Important: Do NOT load a save game (stay at main menu)
  3. Press F8 to open the Sailwind Co-op menu
  4. Enter the host IP and click Join
    • Default IP is 127.0.0.1 (localhost)
    • The menu writes the value to BepInEx/config/com.sailwind.coop.cfg
  5. The host's world is sent to you automatically and loaded into the co-op save slot — wait for it to finish

Disconnecting

  • Press F8 and click Disconnect

Overlay/Debug Info

  • Press F8 and use Show Status / Hide Status
  • Logging switches the log file on and off without restarting the game. It is off by default; turn it on before reproducing a problem, otherwise the log will hold nothing useful
  • Dump water state writes debug/water-*.txt. Press it on both machines at the same moment if the sea ever looks different on one of them
  • The Debug button opens the developer panel, and only works if EnableDebugPanel is set in the config

Skin Selection

  • Press F8 and click Avatar to open the skin selection menu
  • Skin changes are visible to other players in real-time

Menu Input

  • While the co-op menu is open, the mouse cursor is captured by the menu and does not interact with the world.
  • Closing the co-op menu closes companion panels such as Avatar and Debug, then returns cursor control to the game.

⚙️ Configuration

Configuration file location: Sailwind/BepInEx/config/com.sailwind.coop.cfg

Setting Default Description
Network
Port 7777 UDP port for hosting (must be forwarded if playing over internet)
ListenIp 0.0.0.0 IP address to listen on (0.0.0.0 = all interfaces)
JoinIp 127.0.0.1 IP address of the host to connect to
PlayerName Player Your display name in-game
MaxClients 4 Maximum number of players (1-4)
SnapshotHz 20 State snapshot send rate
InterpDelayMs 100 Interpolation buffer delay, in ms
Avatar
VerticalOffset -0.6 Vertical offset for client avatar model
HostVerticalOffset -0.6 Vertical offset for host avatar model
Save
CoopSaveSlot 5 Slot the client writes the received host world into. The local save in this slot is overwritten.
ForceHostSaveOnJoin true Host makes a fresh save on join so the client gets the current world
PauseHostOnJoin true Host world is paused while a client loads it, so nothing drifts during the join
Debug
EnableLogging false Write diagnostics to BepInEx/LogOutput.log. Also toggleable in-game (F8 → Logging)
EnableDebugPanel false Developer/test panel. The Debug button in the menu does nothing until this is on
UI
MenuKey F8 Open/close the Sailwind Co-op menu

🔍 Finding Your IP Address

For LAN Play (same network):

  • Windows: Open Command Prompt and type ipconfig
  • Look for "IPv4 Address" under your network adapter (usually starts with 192.168.x.x)

For Internet Play (with VPN):

  • Hamachi: Use the Hamachi IP (5.x.x.x)
  • ZeroTier: Use the ZeroTier-assigned IP
  • Other VPN: Use the VPN-provided IP address

🛠️ Troubleshooting

Issue: Friends can't connect

  • Ensure port 7777 (or your custom port) is open in your firewall
  • For internet play: Set up port forwarding on your router
  • Try disabling antivirus/firewall temporarily
  • Make sure all players are using the same mod version

Issue: Game crashes on startup

  • Verify BepInEx is installed correctly
  • Check that SailwindCoop.dll is in the right folder
  • Look at BepInEx/LogOutput.log for error details

Issue: Avatars appear incorrectly

  • Adjust VerticalOffset and HostVerticalOffset in the config file
  • Ensure avatar.bundle exists in Sailwind/BepInEx/plugins/SailwindCoop/

Issue: Reporting a bug

  • Press F8 → Logging to switch logging on, reproduce the problem, then attach BepInEx/LogOutput.log
  • Say which version both machines were running

Issue: High latency/lag

  • Reduce SnapshotHz in config (lower = less network traffic)
  • Increase InterpDelayMs for smoother interpolation
  • Check your network connection quality

📝 Notes

  • This mod is in early development (v0.1.5). Expect bugs!
  • Only works with players who have the mod installed, and every machine must run the same version — the network protocol changes between releases, so mismatched builds refuse to connect
  • The client loads the host's streamed world save into a dedicated co-op slot, while guest character progress is kept in a local co-op profile
  • The host's game state is authoritative
  • The default avatar bundle ships with the release and must sit next to the plugin DLL
  • For best performance, play on a wired network connection

🤝 Contributing

Found a bug? Have a suggestion?
Visit: https://github.com/pander33/SailwindCoop


Русский

📖 Описание

Sailwind LAN Co-op — это мод, добавляющий мультиплеер в игру Sailwind. Позволяет играть с друзьями по локальной сети (LAN) или через VPN/туннелирование.

Текущая версия: 0.1.5
Требования: BepInEx 5.x, Sailwind (Steam версия)

✨ Особенности

  • LAN мультиплеер: Игра с друзьями в одной сети
  • Игра через интернет: Работает с VPN сервисами (Hamachi, ZeroTier и др.)
  • Настраиваемые параметры: Настройка сети, имени игрока и др.
  • Меню кооператива в игре: F8 открывает меню для хоста, подключения, отключения, выбора аватара, диагностики и отладки
  • Аватар по умолчанию в комплекте: Релиз содержит avatar.bundle для моделей удаленных игроков
  • Кастомизация аватаров: При желании можно заменить avatar.bundle на совместимый свой bundle
  • До 4 игроков: Хост может принять до 4 клиентов одновременно
  • Общее море: Волны, погода и время суток идут по часам хоста — вода под лодкой одинакова у всех
  • Тишина по умолчанию: Мод ничего не пишет в лог, пока логирование не включено из меню

📥 Установка

Необходимые условия

  1. Sailwind установлен через Steam
  2. BepInEx 5.x установлен для Sailwind

Установка мода

  1. Скачайте последний архив релиза
  2. Распакуйте SailwindCoop.dll, LiteNetLib.dll и avatar.bundle в: Sailwind/BepInEx/plugins/SailwindCoop/
  3. Если используете свой аватар, замените комплектный avatar.bundle на совместимый bundle
  4. Запустите игру

🎮 Как играть

Подробное английское описание работы экономики, миссий, карго, предметов, повреждений, швартовки, якоря, сна и прогресса гостя: MULTIPLAYER_GUIDE.md.

Создание сервера (Вы будете хостом)

  1. Запустите Sailwind
  2. Загрузите или начните новую игру
  3. Нажмите F8, чтобы открыть меню Sailwind Co-op
  4. Нажмите Host
  5. Сообщите друзьям свой IP адрес (см. "Как узнать свой IP" ниже)
  6. Ждите подключения друзей

Подключение к игре

  1. Запустите Sailwind
  2. Важно: НЕ загружайте сохранение (останьтесь в главном меню)
  3. Нажмите F8, чтобы открыть меню Sailwind Co-op
  4. Введите IP хоста и нажмите Join
    • IP по умолчанию: 127.0.0.1 (локальный)
    • Меню сохраняет значение в BepInEx/config/com.sailwind.coop.cfg
  5. Мир хоста передаётся автоматически и загружается в co-op слот сохранения — дождитесь окончания

Отключение

  • Нажмите F8 и кнопку Disconnect

Оверлей с информацией

  • Нажмите F8 и используйте Show Status / Hide Status
  • Logging включает и выключает лог-файл без перезапуска игры. По умолчанию выключено; включайте до воспроизведения проблемы, иначе в логе не будет ничего полезного
  • Dump water state пишет debug/water-*.txt. Нажмите на обеих машинах одновременно, если море где-то выглядит иначе
  • Кнопка Debug открывает панель разработчика и работает только при включённом EnableDebugPanel в конфиге

Выбор скина

  • Нажмите F8 и кнопку Avatar, чтобы открыть меню выбора скина

Управление курсором

  • Пока co-op меню открыто, курсор работает только с меню и не взаимодействует с миром.
  • При закрытии co-op меню закрываются сопутствующие панели Avatar/Debug, затем управление курсором возвращается игре.

⚙️ Настройка

Файл конфигурации: Sailwind/BepInEx/config/com.sailwind.coop.cfg

Настройка По умолчанию Описание
Сеть
Port 7777 UDP порт для хостинга (нужно открыть для интернета)
ListenIp 0.0.0.0 IP адрес для прослушивания (0.0.0.0 = все интерфейсы)
JoinIp 127.0.0.1 IP адрес хоста для подключения
PlayerName Player Ваше отображаемое имя в игре
MaxClients 4 Максимум игроков (1-4)
SnapshotHz 20 Частота отправки снапшотов состояния
InterpDelayMs 100 Задержка буфера интерполяции, мс
Аватар
VerticalOffset -0.6 Вертикальное смещение модели клиента
HostVerticalOffset -0.6 Вертикальное смещение модели хоста
Сохранения
CoopSaveSlot 5 Слот, куда клиент пишет полученный мир хоста. Локальное сохранение в этом слоте перезаписывается.
ForceHostSaveOnJoin true Хост делает свежее сохранение при подключении, чтобы клиент получил актуальный мир
PauseHostOnJoin true Мир хоста стоит на паузе, пока клиент его грузит — иначе состояние успевает разойтись
Отладка
EnableLogging false Писать диагностику в BepInEx/LogOutput.log. Переключается и в игре (F8 → Logging)
EnableDebugPanel false Панель разработчика. Кнопка Debug в меню не работает, пока это выключено
UI
MenuKey F8 Открыть/закрыть меню Sailwind Co-op

🔍 Как узнать свой IP адрес

Для игры по LAN (в одной сети):

  • Windows: Откройте командную строку и введите ipconfig
  • Найдите "IPv4 адрес" вашей сетевой карты (обычно начинается с 192.168.x.x)

Для игры через интернет (с VPN):

  • Hamachi: Используйте IP Hamachi (5.x.x.x)
  • ZeroTier: Используйте назначенный ZeroTier IP
  • Другой VPN: Используйте IP, предоставленный VPN

🛠️ Решение проблем

Проблема: Друзья не могут подключиться

  • Убедитесь, что порт 7777 (или ваш порт) открыт в брандмауэре
  • Для интернета: настройте проброс портов на роутере
  • Попробуйте временно отключить антивирус/брандмауэр
  • Убедитесь, что все используют одинаковую версию мода

Проблема: Игра вылетает при запуске

  • Проверьте, что BepInEx установлен правильно
  • Проверьте, что SailwindCoop.dll в нужной папке
  • Посмотрите BepInEx/LogOutput.log для деталей ошибки

Проблема: Аватары отображаются неправильно

  • Настройте VerticalOffset и HostVerticalOffset в конфиге
  • Убедитесь, что avatar.bundle лежит в Sailwind/BepInEx/plugins/SailwindCoop/

Как сообщить о баге

  • Нажмите F8 → Logging, чтобы включить логирование, воспроизведите проблему и приложите BepInEx/LogOutput.log
  • Укажите версию мода на обеих машинах

Проблема: Высокая задержка/лаги

  • Уменьшите SnapshotHz в конфиге (меньше = меньше сетевого трафика)
  • Увеличьте InterpDelayMs для более плавной интерполяции
  • Проверьте качество вашего сетевого соединения

📝 Примечания

  • Мод в ранней разработке (v0.1.5). Возможны баги!
  • Работает только с игроками, у которых установлен мод, и у всех должна быть одна и та же версия — сетевой протокол меняется между релизами, разные сборки не соединятся
  • Клиент загружает полученный от хоста сейв мира в отдельный co-op слот, а прогресс персонажа гостя хранится в локальном co-op профиле
  • Состояние игры хоста является авторитетным
  • Аватар по умолчанию входит в релиз и должен лежать рядом с DLL мода
  • Для лучшей производительности играйте по проводному соединению

🤝 Участие в разработке

Нашли баг? Есть предложения?
Посетите: https://github.com/pander33/SailwindCoop


📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

Этот проект лицензирован под MIT License - подробности в файле LICENSE.

CHANGELOG

Changelog

All notable user-facing changes are documented in this file.

[0.1.5] - 2026-08-13

A stability release: joins that finish cleanly, boats and items that stay where they belong, a sea that is the same sea on every machine, and a mod that is quiet unless you ask it not to be.

Added

  • The co-op menu now reports problems that previously only reached the log file: a joining player who never finished loading, an unreadable or missing host save, a client rejected because the host has no world loaded, and a world that was un-paused automatically after a join. If something goes wrong during a join, the reason is on screen.
  • Logging can be switched on and off from the F8 menu at any time, without restarting the game.

Changed

  • Logging is now off by default. A normal session writes nothing to BepInEx/LogOutput.log. Turn it on from the co-op menu (F8 → Logging) when you need to diagnose something or report a bug; the choice is remembered in the config file. Serious errors are still written even with logging off — a few lines, never a flood — so a broken installation can never look identical to a healthy one.
  • Debug tools are hidden unless explicitly enabled in the config, so a public build no longer exposes them by accident. The menu says which mode it is in.
  • Joins are now handled one at a time. If several players connect at once, each waits its turn for the world transfer instead of the transfers overlapping; the queue releases itself if a transfer stalls, so one bad join no longer blocks everyone behind it.
  • Fewer scene-wide searches per frame while sailing, which removes a source of stutter — and with it the frame hitches that could drop a player through the deck.

Fixed

  • Fixed boats sinking into the waves on the client. The ocean ran on each machine's own clock, and the shape of a wave is a function of that clock — so the host placed the boat on a crest at a spot where the client was drawing a trough, and a passing wave swallowed the hull. The client's sea now runs on the host's clock, and so do the size and direction of the waves, which each machine used to decide for itself on its own free-running weather cycle. The water is also drawn at the same instant as the boat itself (the hull is rendered slightly in the past to smooth out network jitter; the water used to be drawn at the present moment) and no longer lags behind by the connection's latency.
  • Fixed the client's sea running on while the host had the game paused, and fixed the water tearing across the screen when the host un-paused with the boat below the surface.
  • Fixed other players walking on the spot while the boat sails. A crewmate standing still on deck was shown marching (and turning, when the ship came about), because the mod worked out whether someone was walking from how fast their position changed — and on a moving ship, the ship's own motion counts. Walking and turning are now measured at the source, against the deck the player is actually standing on.
  • The client is now held still while the host has the game paused. Opening the host's menu stops the host's world, but a guest could still walk around it, step off the ship or fall in the water. Guests are now frozen for the duration and told why on screen; they are released the moment the host resumes, or if the connection drops.
  • Fixed a joining player being attached to the wrong boat. While the world was still spawning boats, a boat could briefly answer to another boat's number, and a guest could be teleported onto — or have their view locked to — a hull that was not theirs. Boat numbering is now withheld until it is proven stable on both machines.
  • Fixed items jumping to the player. Items carried on a deck could snap to whoever was looking at them for a fraction of a second after the boat set changed (most visibly right after buying a boat).
  • Fixed the world staying frozen after a player joined. If the host opened the game menu during the join freeze and closed it afterwards, the world could end up paused with nothing left to un-pause it, which needed killing the game. This is now detected and undone automatically.
  • Fixed a join un-pausing the game behind an open settings menu. Joining while the host already had the game paused no longer resumes the world, and no longer changes physics settings owned by that menu.
  • Fixed a guest being left behind when the client's boat snaps into place on join. The player is now carried with the deck in the same step, instead of the boat moving out from under them.
  • Fixed mooring ropes and deck controls going unresponsive for about three seconds after a boat was bought or the boat set otherwise changed.
  • Fixed remote players sometimes taking up to half a second to appear after a world finished loading, including after the host reloads a save or leaves a shipyard.
  • Fixed a stalled world transfer holding the host frozen until the two-minute safety timeout, and fixed a transfer cancelled by a disconnect interfering with the next player's join.
  • Fixed failures inside the mod's own error handling going unreported, which could leave a subsystem silently doing nothing for a whole session.

Notes

  • The wire protocol moved from 47 to 53. Every machine must be updated together0.1.3 and 0.1.5 cannot connect to each other.
  • The co-op menu gained a Dump water state button. Press it on both machines at the same moment and compare the two debug/water-*.txt files if the sea ever looks different on one of them.
  • The water fixes and the two player fixes are verified on two machines: the client's ocean clock now matches the host's to a few milliseconds, the wave field matches exactly, crewmates stand still on a sailing deck, and a guest is held in place while the host has the game paused. The rest of this release is verified by code review only — please report anything that behaves differently from 0.1.3 with logging switched on.

[0.1.3] - 2026-07-07

feat(sync): Enhance player synchronization and item handling

  • Improved player synchronization on boats by stabilizing local positions and adding a fallback mechanism for boat detection.
  • Introduced a new PatchHealth reporting system to monitor the success of various synchronization patches across different game systems (Save, Shop, Shipyard, Sleep).
  • Added comprehensive item synchronization patches to ensure consistent item interactions (pickup, drop, eat, nail, etc.) across clients and hosts.
  • Implemented a protocol smoke test to validate message types and ensure proper serialization/deserialization of network messages.

[0.1.2] - 2026-07-06

Added

  • Added the F8 Sailwind Co-op menu for hosting, joining, disconnecting, avatar selection, diagnostics, and debug tools.
  • Added a high-contrast dark menu backdrop/window background for readability in bright scenes and the main menu.

Changed

  • Replaced separate F6/F7/F8/F9/F10/F11 co-op hotkeys with menu-driven controls.
  • Moved the debug panel to the left side of the screen so it does not overlap the co-op menu.
  • The co-op menu captures cursor input while open and closes companion Avatar/Debug panels when closed.

[0.1.1] - 2026-07-06

Added

  • Added character skin switching through the avatar selection menu.

[0.1.0] - 2026-07-04

Added

  • Added host save streaming for joining clients: the host sends the current world save in reliable chunks, and the client loads it into a dedicated co-op slot.
  • Added a separate client co-op profile for persistent character progress across sessions: currency, reputation, needs, known prices, missions, journal data, and personal belt inventory.
  • Added join-pause handling while the host save is being transferred and loaded by the client.
  • Added wave state synchronization so client sea surface and host-authoritative boat position stay aligned.
  • Added fishing rod cast visual sync, including bobber position, line length, and rod bend.
  • Added client support for throwing, placing, hanging, loading/unloading, and inventory movement of synced items.
  • Added debug tools for island teleport and expanded coordinate diagnostics in the overlay.

Changed

  • Expanded item synchronization to cover more runtime state: attached/placed items, crates, cargo, inventory slots, sold goods, market-spawned goods, rod hooks, and lamp hooks.
  • Improved economy, mission, and journal synchronization, including richer mission reward data and client-side trade flow handling.
  • Updated the wire protocol from 39 to 47 and added message types SaveSnapshotBegin, SaveSnapshotChunk, SaveSnapshotEnd, ClientWorldLoaded, and RodState.
  • Updated documentation and project status notes for the new save/profile, item, economy, and debug workflows.

Fixed

  • Fixed client purchase of trade goods in port.
  • Fixed host interaction lockouts after a client unloaded items from cargo.
  • Fixed client-side unloading behavior.
  • Fixed moving items while the boat is underway.
  • Fixed client cross-session inventory handling.
  • Fixed client fastener/attachment handling.
  • Fixed grill/brazier visuals turning into a white cube after pickup/drop replication.
  • Fixed several fishing-related synchronization issues.

Notes

  • Client world loading now depends on the host's streamed save and overwrites the configured local co-op slot on the client.
  • All peers must use the same mod build because the protocol changed after 0.1.0.

[0.0.1] - 2026-06-29

Added

  • Initial public LAN co-op release for Sailwind.
  • Host/join/disconnect controls and diagnostic overlay.
  • LAN and VPN/tunneling play support through LiteNetLib UDP.
  • Host-authoritative boat, environment, controls, anchor, mooring, interaction, and player state synchronization.
  • Default remote player avatar bundle: avatar.bundle.
  • Basic avatar customization by replacing the included avatar.bundle with a compatible Unity 2019 Windows x64 AssetBundle.

Notes

  • This is an early release. Save-game progress is owned by the host and is not synced as separate guest progress.
  • All players should use the same mod version and install SailwindCoop.dll, LiteNetLib.dll, and avatar.bundle together.