Shinkai: A Subnautica Multiplayer Mod
- 1 Shinkai: A Subnautica Multiplayer Mod
- 1.1 Shinkai: A Subnautica Multiplayer Mod
- 1.2 Shinkai: A Subnautica Multiplayer Mod
- 1.3 Please log in or register
- 1.4 Nitrox — Multiplayer Mod
- 1.5 File information
- 1.6 Tags for this mod
- 1.7 About this mod
- 1.8 __________
- 1.9 Где ещё нас найти:
- 1.10 Subnautica играть по сети и интернету ЛАН
Shinkai: A Subnautica Multiplayer Mod
|368||добавили в избранное|
I decided to create this guide because there was no tutorial in French on the installation of the mod Nitrox that allows to play in multiplayer Subnautica, available at this address: https://github.com/SubnauticaNitrox/ Nitrox /
You can also see what has already been done here: https://trello.com/b/ftPCv2DL/subnautica-nitrox
I want to clarify that I am not the creator of this mod, it is under development and that bugs can exist.
This is not an official mod, the creators of Subnautica are not at the origin of this mod.
This mod allows to play in multiplayer on Subnautica, pending a possible official update for multiplayer.
/! This mod modifies the internal core of Subnautica, so the method is not risky for the game, but in case of problems, a complete reinstallation of the game removes the mod.
In case of update of the game, I do not know if the mod is deleted or not, but if in doubt, it is better to put it on Subnautica. /!
You just need to create an account (for free) and choose manual download of the mod, extract the installer from the .rar and launch it, then change the path with the path of Subnautica and finish the installation.
After that, the NitroxServer is located on the folder of Subnautica in SubServer, at this point you can do the III without the I and the II !
-Install these programs. For Visual Studio, a window will appear to ask you to install «components», install the component for .Net (about 3Go
-Enter the window that appears: «git clone —recurse-submodules https://github.com/SubnauticaNitrox/Nitrox.git Documents / Nitrox»
-Go to «Documents» then «Nitrox»
-Start Visual Studio in Administrator
(Attention, Subnautica must be on the C: base disk, in C: Program Files (x86) Steam steamapps common Subnautica, if it is not, a modification is to do, see II)
-In Visual Studio File-> Open Project and go to the window that opens the file Nitrox.sln in «Documents Nitrox», click Open
-Click on Generate then on Generate the solution
-Once the generation is complete, it is supposed to be written «Generation: 8 passed, 0 failed, 0 updated, 0 was ignored»
-Click on File-> Open and go to the folder where is to install Subnautica, go to Subnautica_Data Managed and click Assembly-CSharp.dll then Open
-Click on the search icon (the magnifying glass icon on the top right of dnSpy) and search for «GameInput»
-Double-click on GameInput (normally the first result that appears)
-Press Ctrl + F and write «awake»
-Do Ctrl + O, normally you are still in the «Managed» folder, look for NitroxPatcher.dll and open
-In dnSpy go to the line after «GameInput.SetupDefaultBindings ((GameInput.Device) i);» and write (without the «») NitroxPatcher.Main.Execute (); » without forgetting the; (Its very important)
-Click Compile bottom right
-Then click File-> Save All-> Ok
-You can close everything
-A «Multiplayer» button is supposed to have appeared on the main menu
-You are ready to play online
* Method if Subnautica is not in C: Program Files (x86) Steam steamapps common Subnautica:
-Once the file Nitrox.sln «built» (See I), an error is supposed to appear and a file named «DevVars.targets» will be created in the folder «Nitrox»
-Open the file «DevVars.targets» with Notepad and at the line , put the installation path where Subnautica is located, then save the file
-Then redo the manipulation of Visual Studio
To create a Subnautica server, it’s very simple.
-Open the port 11000 of your box in TCP and UDP, many tutorials on how to do and depending on the type of box are available on the internet, that’s why I will not detail the procedure to follow in this guide.
-Go to a site to know your IP like: http://www.mon-ip.com/
-Lancer in Documents Nitrox NitroxServer bin Debug software NitroxServer.exe
-A console opens, leave it open while you play
-Your server is online
-In Subnautica, click on Multiplayer
-Click on add server and enter a name and as IP «localhost»
-Then click on your server, enter a username and click Join
-In Subnautica, click on Multiplayer
-Click on add server and enter a name and the ip of the person who Host the server
-Then click on the server, enter a nickname and click Join
Shinkai: A Subnautica Multiplayer Mod
Posted on 2018/05/01
Shinkai (深海) is a multiplayer mod for the game Subnautica. It is open source and available on GitHub.
The mod was tested on the March update of the game (Update 84), but it seems to work with the April build too. I have personally verified that the game was playable from beginning to completion with 3 friends online, but there isn’t any forced limit. As far as a feature list goes, most of the single player experience carries over to multiplayer the way you would expect it to.
Notes on development of the mod and its challenges follow below.
Mod History: Nitrox
Before developing Shinkai, I looked into existing efforts to make the game multiplayer. The only organized attempt I could find was Nitrox. However, it no longer seems to be in active development and was missing many core features that I felt were required for a fun co-op experience:
- No support for loading or saving progress
- Base building was non functional, no piece/room rotation support
- Base building was only synced for players that were currently connected to the server
- Most bases pieces (reactors, growbeds, etc) were non functional
- Can’t see equipment on other players
- Player and vehicle positions desynchronize, no Cyclops submarine support
- Poor latency in real networking conditions
I have addressed all of these issues with the development of Shinkai.
Subnautica is a game developed in Unity, so it’s trivial to reverse engineer. You can use tools like ILSpy to dump the full source code for the game contained in its Assembly-CSharp-* files. To get the game loading the mod, I use DNSpy to patch the C# IL on a function that gets called at game startup. This patch calls into the Shinkai assembly and its initialization functions.
Although you can write entire mods by modifying the original assemblies directly with DNSpy, it’s not really manageable when you have to apply a lot of patches. Most Unity game modders make use of Harmony – a library for modifying the C# IL dynamically at runtime. It’s what I use for Shinkai and its
I use UDP for any real-time game networking. Unreliable packets are a great bandwidth and performance optimization for anything sent on an interval (like physics). Everything else – connection negotiation, gameplay actions, entity spawning, state changes and chat – require an additional TCP-like reliability layer on top of UDP to ensure their packets are delivered and in-order.
I tried out LiteNetLib for the reliability layer for Shinkai since I didn’t want to spend the time developing something custom for a C# project. It picked it mostly because its API, but it also seemed to perform well on benchmarks for performance. This is something I would probably reevaluate if I went back to the project, however. It took modification of the default MTU rates and queue sizes to get something that work reliably under real world conditions, and I’m still not content with how clients can’t “reconnect” without recreating the socket and changing their local connection port.
Saving and Loading
Subnautica save files serialize game entities (bases, vehicles, the player) and the map (voxel data, loot spawns). Game entities are fast to synchronize, since that data is only a few kilobytes in size. The map data weighs in at multiple megabytes, and because the generator state isn’t deterministic it means that future spawns won’t be synchronized. I opted to have the server be in control of a custom save format.
I first modded the loot and entity spawners in the game to be deterministic based on a server seed, to save having to synchronize megabytes when a client connects. Since players can encounter chunks in any order, I mix the server seed with the position data for the spawn location on the map. The loot remains fairly random, and players can share locations of loot and research unlocks with each other since the map is the same. However, I don’t synchronize gathering of the resources between clients. The world’s resources are finite and fairly scarce – with many players you’d quickly run out of loot.
For game entities like bases and vehicles, I store their relevant information on the server and “replay” the messages back to clients that are joining. This works well in practice and saved a lot of development time, but it’s a fairly inefficient method of handling the problem. If I were to refactor the project, I would work on trying to share/update something similar to the game’s “root” object tree for this kind of data.
I treat most game progression (unlocked research, data logs, equipment) as individual progression. Player data is synchronized and saved on the server as you would expect.
This was the hardest to get working right between the clients. In hindsight, all of the problems associated with synchronizing base building could have been solved by doing a full serialize/sync with the associated base after any construction event, even if this is inefficient bandwidth-wise.
The way the building currently works is loosely based on existing work by the Nitrox team – when a player builds or modifies a base piece, it is simulated across all clients.
The first problem was handling piece rotation. To have the pieces rotated the same across on each client, each rotatable piece needed a unique patch to Subnautica’s code. If the game adds any new types of pieces in the future, more work be required to support them.
The second problem was dealing with synchronization. When deconstructing a base piece, a new object is typically spawned in its place. Knowing which object is replaced is tricky, and the server doesn’t have knowledge of the base structure itself – which means any modification must be stored on the server, even if the base piece gets removed later.
Since any number of events can be received in a single frame, problems arise with base pieces getting blocked by pieces that would be considered gone on the next frame after Unity has processed the destruction event. This typically only happened with window / reinforcement pieces, and required patches to resolve the bug.
With these problems fixed, implementing missing functionality for synchronized base pieces is fairly trivial. Most of the functional base pieces are glorified item containers and simply requiring maintaining a shared GUID across all clients that was generated during placement.
All vehicles have synchronized upgrades, inventories and health. The Prawn Suit was one of the vehicles I had the most fun with in the main game, so I put extra work into making sure all of its animations and events work the same as in single player. Attacking with the arms, grappling, drilling and the walking animations are all fully functional and synced between clients.
The Cyclops submarine is a fairly complex and large mobile base in Subnautica. I’ve implemented most of the “fun” functionality for it – lights, horns, engine state, docking, building all worked mostly as you’d expect. Synchronized leaks and fires are something that I would have liked to add, but never got around to.
In Nitrox, most objects continuously interpolated towards their real position but would never attain the actual value. Vehicles were also mishandled by relying on PhysX to be deterministic (it’s not) with velocity simulation – in my tests, vehicle position would drift by many meters over time.
In Shinkai, players and controlled vehicles are interpolated towards their last received position from the server at a dynamic rate. The rate is determined by the calculated packet update frequency and latency. To keep things smooth if packets are dropped or late, limited extrapolation is allowed when the interpolation deadline expires.
Players can push around items and unmanned vehicles in Subnautica, so I wanted to synchronize those too. Since these are typically slow moving, I rely on the client’s physics simulation to keep them in roughly the same place. Whenever they stray too far away from their last updated position, the player notifies the server of the new location. While saving bandwidth with nice, this also lets any client interact and push these objects — everyone is considered the host when it comes to shared physics experiences like this.
Release and Future Support
Having played through the game multiple times alone and with friends, I think it’s time to say goodbye to the world of Subnautica. The public release of Shinkai is not a fully engineered product, but a collection of ideas and concepts I tried when creating a playable experience for a close group of friends over a few weeks of programming in my free time.
I’m open to community contributions to the project, but I think they would be better forward towards the development of Nitrox – the project that sparked my interest in developing Shinkai.
© 2018 nkga. Code snippets licensed under the MIT License.
Please log in or register
To enjoy the benefits of Nexus Mods, please log in or register a new account
- All games
- Nitrox — Multiplayer Mod
Nitrox — Multiplayer Mod
Tags for this mod
- Fair and balanced
- Utilities for Players
- Compatible with Unity 2019
View more.Tag this mod
- Files 1
- Images 6
- Videos 0
- Forum 5
About this mod
Nitrox is an open-source, multiplayer modification for the game Subnautica.
The mod is in the very early stages of development; however, a solid foundation has been laid for the community to iterate on.
Credits and distribution permission
- Other user’s assets All the assets in this file belong to the author, or are from free-to-use modder’s resources
- Upload permission You can upload this file to other sites but you must credit me as the creator of the file
- Modification permission You are allowed to modify my files and release bug fixes or improve on the features without permission from or credit to me
- Conversion permission You can convert this file to work with other games as long as you credit me as the creator of the file
- Asset use permission You are allowed to use the assets in this file without permission as long as you credit me
- Asset use permission in mods/files that are being sold You are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
- Asset use permission in mods/files that earn donation points You are allowed to earn Donation Points for your mods if they use my assets
Please check our current license for more information: https://github.com/SubnauticaNitrox/Nitrox/blob/master/LICENSE.txt
Donation Points system
This mod is not opted-in to receive Donation Points
Check out our trailer here: https://www.youtube.com/watch?v=Mw1lzj5l2zk
Subnautica Nitrox is an open-source, multiplayer modification for the game Subnautica.
What is the current status?
The mod is in the very early stages of development; however, a solid foundation has been laid for the community to iterate on. The following milestones have been completed:
- Client / Server Communication
- Player movement
- Picking up / Dropping item syncing
- Long-range world syncing
- Base building
- Furniture building
- Most furniture interactions (containers / medkit fabricators / chargers / etc)
- Power management
- Seamoth & Exosuit Syncing
- Basic cyclops syncing
- Rudimentary chat system
- New HUD for remote players
- Basic player animations
- Integration with Harmony
How can I play this mod?
Download the installer in the files section. Keep in mind that this is still in development and can have bugs.
How can I get help?
Please first read the steps on our wiki. If that doesn’t work, please ask our help chat in the discord channel.
How can I contribute?
Simply submit a pull request. Feel free to join us in our discord channel.
How can I donate?
We do not accept donations to the mod. Those wishing to give money can do so here: https://www.doctorswithoutborders.org/
Why the name ‘Nitrox’?
Nitrox is an alternative air mixture, used by scuba divers, to achieve longer bottom times. As a mod, it will provide a new dimension of gameplay to extend your enjoyment.
Случайная Сетевая Игра:
Где ещё нас найти:
Последнее с форума
ответ от: ShizuDelta, Сегодня, 19:28
ответ от: alienj12, Вчера, 21:02
ответ от: adawdwd, Вчера, 18:13
ответ от: Sergei30, Вчера, 08:24
ответ от: Patrican, Вчера, 06:17
Parsec VS Steam Remote Play
Помощь при скачивании
- Добавление друзей в Steam без пополнения (покупок)
- Не работает Контроллер в игре после установки фикса?
- Как пригласить друга в игру, не покупая игр?
- Чем открыть неизвестный мне ТИП ФАЙЛА?
- Как открывать образы игр или вставлять второй диск?
Subnautica играть по сети и интернету ЛАН
Изменена: 3-11-2021, 20:11.
Причина: новая версия фикса (126.96.36.199)
Обзор игры Subnautica и сетевой режим
Описание игры: Subnautica – инновационный жанр игры, соединивший в себе песочницу, кинематографию, исследовательский жарн, всё это приправленное интересными заданиями и открытым миром! Поэтому игра не оставит вас равнодушными и покажет на сколько разработчики Unknown Worlds мыслят не так как остальные.
Способ Игры: LAN.
Язык в Игре: Русский (текст).
Дата выхода: 2018./p>
Жанр: Приключенческие игры, Инди, Совместное Прохождение.
Максимальное количество игроков: *.
Возможность одиночной игры: Есть.
НАСТРОЙКА ДЛЯ СЕТЕВОЙ ИГРЫ:
1.1) Скачать игру Subnautica (последняя версия) торрент v 65786 (Репак от Хатаба)
1.2) Скачать сетевой фикс для игры Subnautica
Фикс от m3Zz (v188.8.131.52)
Запуск Subnautica по сети в мультиплеер:
2.1) Открываем ДЛЯ LAN игры: Любой эмулятор локальной сети / настоящую локальную сеть.
Создание сервера к Игре:
3.1) Запускаем файл NitroxLauncher.exe => Слева выбираем Server => Start Server => Теперь выполняем пункт с подключением:
Подключение к серверам:
4.1) В лаунчере выбираем Play Game => Play Multiplayer ( откроется стим, это нормально, сворачиваем его )=> Теперь открываем папку с игрой и запускаем файл Subnautica.exe => Multiplayer => Add Server IP => Вписываем IP из Эмулятора LAN в поле HOST => Add A Server => Подключаемся к этому серверу.
Доп. информация и возможные проблемы:
— Русский язык включен по умолчанию (и может быть изменён в настройках).