Сборка и запуск локального сервера
##################################

Данная инструкция описывает способ сборки и запуска **Space Station 14** 
из исходных кодовов ("исходники") для локального использования.

.. note::
    Данная инструкция рассчитана на пользователей операционной системы **Windows**


Установка необходимых программ
******************************

Для работы с исходным кодом, нам понадобятся:

1. Система управления версиями |link_git|
2. Высокоуровневый язык |link_python|
3. Комплект для разработки прогррамм |link_dotnet|


Установка Git
=============

Установка выполняется в обычном режиме, ничего менять не нужно.
Кроме одного: выбор текстового редактора
("Choosing the default editor used by Git").

По-умолчанию предлагается выбрать некий "Vim". **Если вы не знаете что это, то
вы обязаны поменять его на что-либо другое!** Например, на стандартный Блокнот
("Notepad")

.. image:: _static/git_install_img1.png
  :alt: Выбор текстового редактора для Git


Проверка
--------

1. Открываем **PowerShell**
2. Выполняем команду

  .. code-block::

    git --version

  При корректной установке, напишется версия
  
  .. code-block::

    git version 2.25.1.windows.1

  .. note::

    Если у вас не совпадает версия с указанной здесь, то ничего страшного:
    указанная версия может не совпадать с текущей актуальной верией **Git**.


Установка Python
================

В первом окне установщика обязательно поставьте галочку в пункте "Add python.exe to PATH"

.. image:: _static/python_install_img1.png
  :alt: Установка Python

Для старта установки, нажимаете на строку "Intall Now".

Дальше установка выполняется в обычном режиме.

Проверка
--------

1. Открываем **PowerShell**
2. Выполняем команду

  .. code-block::

    python --version

  При корректной установке, напишется версия
  
  .. code-block::

    Python 3.12.3

  .. note::

    Если у вас не совпадает версия с указанной здесь, то ничего страшного:
    указанная версия может не совпадать с текущей актуальной верией **Python**.


Установка .NET SDK
==================

Установка проходит в обычном режиме.

Проверка
--------

1. Открываем **PowerShell**
2. Выполняем команду

  .. code-block::

    dotnet --info

  При корректной установке, напишется много разной информация об установленном **.NET**.
  Нас интересует строчка вида 
  
  .. code-block::

    .NET SDKs installed:
      8.0.205 [C:\Program Files\dotnet\sdk]

  .. note::

    Если у вас не совпадает версия с указанной здесь, то ничего страшного:
    указанная версия может не совпадать с текущей актуальной верией **.NET SDK 8**.

  .. warning::

    Не допускайте установки множества версий **.NET SDK 8**!
    Если у вас уже установлен, например, .NET SDK **8.0.205**, то не следует
    ставить .NET SDK **8.0.300**. Иначе будут проблемы со сборкой **Space Station 14**.


Загрузка исходных кодов
***********************

.. note::
    Для примера будет использоваться код с |link_ss14git|

.. warning::
    **Внимание!** Не допускать в пути кириллических и пробельных символов! |br|
    Пути вида ``C:\Users\Васян\Desktop\Сасака 14`` могут вызвать различные
    проблемы в будущем.

1. Откройте папку, в которую желаете загрузить исходные коды **Space Station 14**

2. На пустом месте, через :kbd:`Shift+ПКМ`, открываем контекстное меню и
   выбираем |br| *"Открыть окно PowerShell здесь"*
  
  .. image:: _static/context_menu_powershell.png
    :alt: Контекстное меню

3. Выполним команду клонирования репозитория

  .. code-block::

      git clone https://github.com/space-wizards/space-station-14.git   

  Исходные коды **Space Station 14** будут загружены в под-папку ``space-station-14``.

  .. image:: _static/powershell_git_clone.png
    :alt: Клонирование репозитория

4. Выполним команду перехода в папку с исходным кодом

  .. code-block::

    cd space-station-14

5. Выполним команду для загрузки игрового движка SS14 (RobustToolbox) и подключения git hooks

  .. code-block::

    python .\RUN_THIS.py

  .. image:: _static/powershell_runthis.png
    :alt: Загрузка игрового движка RobustToolbox


Первая сборка
*************

1. Откройте **PowerShell** в папке, в которой находятся исходные коды **Space Station 14**.

2. Выполните команду

  .. code-block::
    
    dotnet build

  .. image:: _static/powershell_build.png
    :alt: Сборка Space Station 14

В консоли будет очень много "желтого" текста (warnings). Не пугаться, *это нормально*.

.. note::

  При первом запуске ``dotnet build`` в консоль может написаться много
  приветственного текста вида "Вас приветствует .NET 8.0!".

.. note::

  Скорость сборки будет зависит от мощности вашего ПК и от типа используемого
  диска (SSD или HDD).


Запуск
******

Сервер
======

1. Откройте **PowerShell** в папке, в которой находятся исходные коды **Space Station 14**.

2. Выполните команду

  .. code-block::
    
    dotnet run --project Content.Server

  .. image:: _static/powershell_server_run1.png
    :alt: Запуск Сервера из исходников

Появление в консоли текста вида ``[INFO] net: "0.0.0.0": "Network thread started"``
ознаменует успешный запусе Сервера.

.. image:: _static/powershell_server_run2.png
  :alt: Успешный запуск Сервера

.. note::
  Если не была произведена первичная сборка или вы что-то поменяли в коде,
  перед запуском может начаться сборка проекта.

.. note::
  Сервер запуститься в dev-режиме, в котором множество игровых механик отключены
  (например отсутствует лобби) в угоду быстрого тестирования.

  Если требуется запустить полноценный сервер, то нужно изменить команду
  запуска:

  .. code-block::
    
    dotnet run --project Content.Server --configuration Release

Клиент
======

1. Откройте **PowerShell** в папке, в которой находятся исходные коды **Space Station 14**.

2. Выполните команду

  .. code-block::
    
    dotnet run --project Content.Client

  .. image:: _static/powershell_client_run.png
    :alt: Запуск Клиента из исходников

.. note::

  Если не была произведена первичная сборка или вы что-то поменяли в коде,
  перед запуском может начаться сборка проекта.


.. ########################################################################## ..

.. |link_git| raw:: html

    <a href="https://git-scm.com/downloads" target="_blank">Git</a>

.. |link_python| raw:: html

    <a href="https://www.python.org/downloads/" target="_blank">Python</a>

.. |link_dotnet| raw:: html

    <a href="https://dotnet.microsoft.com/en-us/download/dotnet/8.0" target="_blank">.NET SDK 8.0</a>

.. |link_ss14git| raw:: html

    <a href="https://github.com/space-wizards/space-station-14" target="_blank">официального репозитория <b>Space Station 14</b></a>

.. |br| raw:: html

    <br />
