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
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Sailwind LAN Co-op Mod
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.bundlefor remote player models - Avatar Customization: Replace
avatar.bundlewith 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
- Sailwind installed via Steam
- BepInEx 5.x installed for Sailwind
- If not installed, download from: https://github.com/BepInEx/BepInEx/releases
- Extract to your Sailwind game folder
Mod Installation
- Download the latest release archive
- Extract
SailwindCoop.dll,LiteNetLib.dll, andavatar.bundleto:Sailwind/BepInEx/plugins/SailwindCoop/ - If you use a custom avatar, replace the included
avatar.bundlewith your compatible bundle - 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)
- Launch Sailwind
- Load or start a save game
- Press F8 to open the Sailwind Co-op menu
- Click Host
- Share your IP address with friends (see "Finding Your IP" below)
- Wait for friends to connect
Joining a Game
- Launch Sailwind
- Important: Do NOT load a save game (stay at main menu)
- Press F8 to open the Sailwind Co-op menu
- 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
- Default IP is
- 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
EnableDebugPanelis 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.dllis in the right folder - Look at
BepInEx/LogOutput.logfor error details
Issue: Avatars appear incorrectly
- Adjust
VerticalOffsetandHostVerticalOffsetin the config file - Ensure
avatar.bundleexists inSailwind/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
SnapshotHzin config (lower = less network traffic) - Increase
InterpDelayMsfor 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 клиентов одновременно
- Общее море: Волны, погода и время суток идут по часам хоста — вода под лодкой одинакова у всех
- Тишина по умолчанию: Мод ничего не пишет в лог, пока логирование не включено из меню
📥 Установка
Необходимые условия
- Sailwind установлен через Steam
- BepInEx 5.x установлен для Sailwind
- Если не установлен, скачайте: https://github.com/BepInEx/BepInEx/releases
- Распакуйте в папку с игрой Sailwind
Установка мода
- Скачайте последний архив релиза
- Распакуйте
SailwindCoop.dll,LiteNetLib.dllиavatar.bundleв:Sailwind/BepInEx/plugins/SailwindCoop/ - Если используете свой аватар, замените комплектный
avatar.bundleна совместимый bundle - Запустите игру
🎮 Как играть
Подробное английское описание работы экономики, миссий, карго, предметов, повреждений, швартовки, якоря, сна и прогресса гостя: MULTIPLAYER_GUIDE.md.
Создание сервера (Вы будете хостом)
- Запустите Sailwind
- Загрузите или начните новую игру
- Нажмите F8, чтобы открыть меню Sailwind Co-op
- Нажмите Host
- Сообщите друзьям свой IP адрес (см. "Как узнать свой IP" ниже)
- Ждите подключения друзей
Подключение к игре
- Запустите Sailwind
- Важно: НЕ загружайте сохранение (останьтесь в главном меню)
- Нажмите F8, чтобы открыть меню Sailwind Co-op
- Введите IP хоста и нажмите Join
- IP по умолчанию:
127.0.0.1(локальный) - Меню сохраняет значение в
BepInEx/config/com.sailwind.coop.cfg
- IP по умолчанию:
- Мир хоста передаётся автоматически и загружается в 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
47to53. Every machine must be updated together —0.1.3and0.1.5cannot 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-*.txtfiles 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.3with 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
39to47and added message typesSaveSnapshotBegin,SaveSnapshotChunk,SaveSnapshotEnd,ClientWorldLoaded, andRodState. - 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.bundlewith 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, andavatar.bundletogether.