Начните вводить название — например, MoreHead, Sodium или PEAK

OptionalNetworkAPI — иконка
Обложка GTFOМод для GTFO

OptionalNetworkAPI

от Dinorush

API for plugin developers to write networking for mods that don't require all players to have it.

  • Обычный
  • 5,5 тыс. скачиваний
  • Версия 1.3.3
  • Обновлён 3 ноября 2026
  • Библиотека

О моде OptionalNetworkAPI

OptionalNetworkAPI — мод для GTFO (ГТФО) от автора Dinorush. API for plugin developers to write networking for mods that don't require all players to have it.

Его скачали 5,5 тыс. раз: это 293-е место среди модов GTFO в нашем каталоге, редкость — «обычный» (нижняя половина по скачиваниям). Мод обновлялся в последний месяц, актуальная версия — 1.3.3.

Для работы ему нужны: BepInExPack GTFO.

Полное описание OptionalNetworkAPI

Текст автора на языке оригинала

OptionalNetworkAPI

Adds an API for plugin developers to more easily write networking for mods that don't require all players to have the mod.

This primarily includes detecting other players with the mod or sending data to other players with the mod, and has numerous callbacks to facilitate custom behavior if needed.

API

The API is exposed under OptionalNetworking.OptionalNetworkAPI. The primary endpoint is RegisterMod:

ModInfo OptionalNetworkAPI.RegisterMod(string name);

You should only run this once for your mod on Load. This creates a ModInfo object that exposes callbacks and info. As some examples:

  • OtherPlayers returns a collection of nonlocal players with the mod installed.
  • OnPlayerJoined callbacks run when a player joins the lobby.
  • OnPlayerModSet callbacks run when a player's mod is set as enabled (or disabled, in some Bot cases).

Example code:

private static ModInfo _modInfo;

internal static void OnLoad()
{
  _modInfo = OptionalNetworkAPI.RegisterMod("MyMod")
  _modInfo.OnPlayerJoined += (player) => Logger.Log($"{player.NickName} joined the lobby")
  _modInfo.OnPlayerModSet += (player, hasMod) => Logger.Log($"{player.NickName} mod installed: {hasMod}")
}

internal static void PrintModdedPlayers()
{
  List names = new();
  foreach (var player in _modInfo.Players)
    names.Add(player.NickName);
  Logger.Log($"Players with the mod: {string.Join(", ", names)}");
}

CustomData

ModInfo objects also expose CustomDataSender and CustomDataManager objects. These are handy objects that can send or sync your own custom data with other modded players.

CustomDataSender allows you to easily send data to all modded players, requiring only a function to call when data is received. You may provide a default data function to be sent to other players on initial connection. You can also specify on creation whether to include bots or yourself when sending data.

CustomDataManager operates as an extension of CustomDataSender that tracks data for each player. When host changes or a player leaves, it will automatically update or remove player/bot data from its internal storage. This abstracts away most of the player state tracking, only requiring you to add callbacks or retrieve the data when you need it.

Example code:

struct MyStruct
{
    public float width;
    public float height;

    public MyStruct(float width, float height)
    {
        this.width = width;
        this.height = height;
    }
}

private static ModInfo _modInfo;
private static CustomDataManager _dataManager;

internal static void OnLoad()
{
    _modInfo = OptionalNetworkAPI.RegisterMod("MyMod");
    _modInfo.OnPlayerSpawned += OnPlayerSpawned;
    _dataManager = _modInfo.AddCustomDataManager(DefaultData);
    _dataManager.OnDataSet += OnDataSet;
}

private static MyStruct DefaultData(SNet_Player player)
{
    return new MyStruct(player.NickName == "Dinorush" ? 100 : 1, 1);
}

private static void OnDataSet(SNet_Player player, MyStruct data)
{
    if (data.width > data.height / 2)
        Logger.Log($"{player.NickName} is wide");
    else
        Logger.Log($"{player.NickName} is normal");
}

private static void OnPlayerSpawned(PlayerAgent agent)
{
    if (_dataManager.TryGetData(agent.Owner, out var data))
        Logger.Log($"{agent.Owner.NickName} dimensions: {data.width} x {data.height}");
}

Нужно для работы

В r2modman ставится автоматически

Моды, которым нужен OptionalNetworkAPI

5 в каталоге

EnemyAnimationFix — иконка

EnemyAnimationFix

Fixes several enemy bugs for both clients and host.

Легендарный69,4 тыс.Библиотека

Anarchy — иконка

Anarchy

Teamwork is your only hope. Get The F*** Out!

Редкий16,2 тыс.Рандауны

Quixotic — иконка

Quixotic

Exceedingly idealistic; unrealistic and impractical.

Обычный8,1 тыс.Рандауны

GTFriendlyO — иконка

GTFriendlyO

A major overhaul to GTFO, designed to bring more depth and fun with friends WITHOUT removing all of the challenge! A unique class system, new & reworked weapons/tools, improved mechanics, overhauled boosters, enhanced enemies, and more!

Обычный7,3 тыс.Датаблоки

StatDisplay — иконка

StatDisplay

Displays in-game accuracy and damage. EWC-compatible.

Обычный5,5 тыс.Клиентский

Как установить OptionalNetworkAPI

Файл скачивается с официального сервера Thunderstore, без перезаливов и сторонних установщиков

Подробная инструкция для GTFO
  1. Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру GTFO.
  2. Создайте профиль — так моды не смешаются с чистой версией игры.
  3. Найдите «OptionalNetworkAPI» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами.
  4. Нажмите «Start modded» — игра запустится с модами.
  5. Для мультиплеера всем игрокам нужен одинаковый набор модов: в r2modman профиль можно экспортировать кодом и отправить друзьям.
Вы автор мода? Поставьте ссылку на русское описание

Вставьте значок в описание на Thunderstore, в README или в Discord — русскоязычные игроки сразу попадут на страницу с переводом и инструкцией.

Описание на русском — Модка
Markdown[![Описание на русском — Модка](https://modka.app/badge.png)](https://modka.app/gtfo/dinorush-optionalnetworkapi/)
HTML<a href="https://modka.app/gtfo/dinorush-optionalnetworkapi/"><img src="https://modka.app/badge.png" alt="Описание на русском — Модка" height="44"></a>
Steam (BBCode)[url=https://modka.app/gtfo/dinorush-optionalnetworkapi/]Описание на русском — Модка[/url]

Частые вопросы о OptionalNetworkAPI

Как установить OptionalNetworkAPI?

Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру GTFO. Создайте профиль — так моды не смешаются с чистой версией игры. Найдите «OptionalNetworkAPI» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами. Нажмите «Start modded» — игра запустится с модами. Для мультиплеера всем игрокам нужен одинаковый набор модов: в r2modman профиль можно экспортировать кодом и отправить друзьям.

Безопасен ли OptionalNetworkAPI?

Файл скачивается с официального сервера Thunderstore, куда его загрузил Dinorush. Мы не перезаливаем и не изменяем моды.

Нужно ли друзьям ставить OptionalNetworkAPI?

Автор не указал, клиентский это мод или серверный. Безопаснее, чтобы одинаковый набор модов был у всех игроков в лобби: проще всего поделиться профилем r2modman.

Что нужно для работы OptionalNetworkAPI?

Установите вместе с ним: BepInExPack GTFO. В менеджере модов зависимости подтягиваются автоматически.

Когда OptionalNetworkAPI обновлялся последний раз?

3 ноября 2026, актуальная версия — 1.3.3. Дата берётся с официальной страницы мода при каждом обновлении каталога.

Похожие моды

Все моды на GTFO
ProjectEternal — иконка

ProjectEternal

OBJECTIVE STACK REITERATION UNKNOWN - PROBE DEEPER UNTIL ://ERROR

Легендарный123,7 тыс.Рандауны

Zoersel — иконка

Zoersel

This is an extremely difficult outline.

Эпический63,2 тыс.Рандауны

Fatal Experiment 2 — иконка

Fatal Experiment 2

The ''Deep End'' of GTFO Modded, are you ready? 25 Expeditions. Custom Guns. 150+ Enemy Variants. Team of 4 recommended.

Эпический58,6 тыс.Рандауны

Legacy — иконка

Legacy

://[OMNI]-Legacy: Superjacent sectors access denied, find a way to disengage lockdown and retrieve ALL resources.

Эпический58,3 тыс.Рандауны

PerfectBoosters — иконка

PerfectBoosters

Change the effect value of boosters to optimal value, and they will never be consumed.

Эпический57,5 тыс.Клиентский

crislibrary — иконка

crislibrary

Asset bundles for rundown Project: Eternal

Эпический38,6 тыс.Ассеты