---
metadata:
  - name: generator
    content: Diplodoc Platform v5.56.0
alternate:
  - https://yandex.com/dev/games/doc/en/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/hi/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/ko/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/ru/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/tr/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/vi/concepts/local-launch.md
  - https://yandex.com/dev/games/doc/zh/concepts/local-launch.md
  - href: vi/concepts/local-launch.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/vi/llms.txt

# Chạy từ máy chủ cục bộ

Để đơn giản hóa quá trình phát triển và kiểm thử trò chơi, bạn có thể chạy nó từ máy chủ cục bộ. Việc kiểm thử có sẵn trong [môi trường prod](#prod-env) và [môi trường dev](#dev-env).

Sau khi khởi chạy trò chơi trên máy chủ cục bộ, bạn có thể sử dụng tất cả các chức năng của SDK từ nó.



## Môi trường Prod {#prod-env}

{% note alert "Hạn chế" %}

Yêu cầu [đăng ký](https://yandex.com/dev/games/doc/vi/console/manage-account.md) trên nền tảng Yandex Games và [bản nháp trò chơi](https://yandex.com/dev/games/doc/vi/console/add-new-game.md#step-create-draft).

{% endnote %}

Phù hợp ở giai đoạn kiểm tra cuối cùng trước khi gửi trò chơi để kiểm duyệt. Trong chế độ này, trò chơi tương tác với nền tảng Yandex Games thực tế.

Đặc điểm:

- Trò chơi mở bằng địa chỉ thực trên [yandex.com/games](https://yandex.com/games).
- Để gửi yêu cầu đến các máy chủ bên ngoài, cần [thêm](https://yandex.com/dev/games/doc/vi/console/add-new-game.md#step-check-host) chúng vào quy tắc CSP.
- Hiển thị quảng cáo thực.
- Người chơi đăng nhập thông qua Yandex Passport.
- Dữ liệu người chơi và bảng xếp hạng được lưu trên máy chủ.
- Danh mục sản phẩm được tải từ máy chủ, giao dịch mua hàng được xử lý trên máy chủ.
- Để gỡ lỗi, có thể sử dụng [bảng debug](https://yandex.com/dev/games/doc/vi/console/debug-panel.md) thông qua tham số trên thanh địa chỉ `&debug-mode=16`.

Có thể thiết lập phiên bản cục bộ của trò chơi trong môi trường prod bằng cách:

- [Tự cấu hình](#self-setup)
- [Sử dụng gói npm](#setup-localhost)

### Tự cấu hình máy chủ cục bộ {#self-setup}

1. Thiết lập máy chủ `localhost`.
1. Mở trò chơi ở [chế độ bản nháp](https://yandex.com/dev/games/doc/vi/console/test-game.md).
1. Thêm tham số `?game_url=https://localhost` vào địa chỉ.

{% note info "Ghi chú" %}

Vì lý do bảo mật, tham số `game_url` chỉ hỗ trợ tên miền `localhost`.

{% endnote %}

### Cấu hình máy chủ cục bộ bằng gói npm {#setup-localhost}

1. Cài đặt `npm` theo hướng dẫn trên trang [Node.JS](https://nodejs.org/en/).
1. Sử dụng `npm` để cài đặt gói [@yandex-games/sdk-dev-proxy](https://www.npmjs.com/package/@yandex-games/sdk-dev-proxy):

    ```console
    npm install -g @yandex-games/sdk-dev-proxy
    ```

1. Khởi chạy trò chơi. Bạn có thể:

   {% list tabs %}

   - Proxy đến máy chủ cục bộ

      ```console
      npx @yandex-games/sdk-dev-proxy -h <Địa chỉ máy chủ cục bộ>
      ```

   - Chỉ định thư mục chứa tài nguyên trò chơi

       ```console
       npx @yandex-games/sdk-dev-proxy -p <Đường dẫn đến thư mục chứa trò chơi>
       ```

   {% endlist %}

    Gói này sẽ proxy các yêu cầu đến tài nguyên SDK trên cùng máy chủ nơi trò chơi của bạn sẽ được đặt.


Nếu bạn chỉ định tham số `--app-id`, khi khởi chạy sẽ mở trò chơi của bạn trên [yandex.com/games](https://yandex.com/games):


```console
npx @yandex-games/sdk-dev-proxy -p <Đường dẫn đến thư mục chứa trò chơi> --app-id=<ID trò chơi>
```

Nếu không chỉ định `--app-id`, trong console sẽ hiển thị liên kết mẫu đến trò chơi trên dịch vụ và liên kết đến máy chủ cục bộ.

#### Tham số khởi chạy {#start-params}

#|
|| **Tham số** | **Mô tả** ||
|| `--help` | Hiển thị trợ giúp. ||
|| `--host`, `-h` | Máy chủ nơi đặt máy chủ cục bộ của trò chơi (ví dụ: sử dụng cho `webpack-dev-server`). ||
|| `--path`, `-p` | Đường dẫn đến thư mục chứa tài nguyên trò chơi. ||
|| `--port` | Cổng mà máy chủ sẽ mở (mặc định là 8080). ||
|| `--app-id`, `-i` | ID bản nháp trò chơi. ||
|| `--csp`, `-c` | Thêm thẻ meta với `Content-Security-Policy`. Nó tương ứng với thẻ sẽ được tạo trong `index.html` trên dịch vụ. ||
|| `--log`, `-l` | Bật ghi nhật ký yêu cầu vào console (mặc định là bật). ||
|| `--tld` | Thay đổi [tên miền](https://yandex.com/dev/games/doc/vi/concepts/languages-and-domains.md) `yandex.tld`, ví dụ thành `yandex.com` (mặc định là `ru`). ||
|| `--dev-mode` | Nếu là `true`, trò chơi sẽ chạy trong môi trường dev (mặc định là `false`, tương ứng với môi trường prod). ||
|#



## Môi trường Dev {#dev-env}

{% note info "Ghi chú" %}

Không yêu cầu đăng ký trên nền tảng Yandex Games hoặc bản nháp trò chơi.

{% endnote %}

Phù hợp trong giai đoạn phát triển tích cực và gỡ lỗi logic trò chơi. Trong chế độ này, trò chơi không có kết nối thực tế với nền tảng Yandex Games và tất cả các lệnh gọi SDK được thay thế bằng [mock](*mock), cho phép tải lại trang nhanh chóng và xem các cập nhật.

Đặc điểm:

- Trò chơi mở trực tiếp tại `https://localhost`.
- Không có hạn chế CSP, có thể gửi yêu cầu đến bất kỳ máy chủ bên ngoài nào.
- Thay vì quảng cáo thực, hiển thị placeholder, nhưng tất cả các hàm callback hoạt động tương tự như môi trường prod.
- Xác thực người chơi hoạt động thông qua mock của hộp thoại trình duyệt.
- Dữ liệu người chơi và bảng xếp hạng được lưu trong `localStorage`.
- Danh mục sản phẩm được tải từ [tệp cục bộ](#local-catalog-set), giao dịch mua hàng của người chơi được lưu trong `localStorage`.
- Để gỡ lỗi, có thể đặt [tham số](#available-params) thông qua thanh địa chỉ trình duyệt.
- Trong console trình duyệt, tất cả các lệnh gọi SDK được ghi nhật ký tự động với phân chia theo mô-đun.

Khởi chạy trong môi trường dev cũng có sẵn thông qua gói npm [@yandex-games/sdk-dev-proxy](https://www.npmjs.com/package/@yandex-games/sdk-dev-proxy). Hướng dẫn cấu hình tương tự như [môi trường prod](#setup-localhost), chỉ cần chỉ định tham số `--dev-mode=true` khi khởi chạy.

Bạn có thể:

{% list tabs %}

   - Proxy đến máy chủ cục bộ

      ```console
      npx @yandex-games/sdk-dev-proxy -h <Địa chỉ máy chủ cục bộ> --dev-mode=true
      ```

   - Chỉ định thư mục chứa tài nguyên trò chơi

       ```console
       npx @yandex-games/sdk-dev-proxy -p <Đường dẫn đến thư mục chứa trò chơi> --dev-mode=true
       ```

{% endlist %}

#### Các tham số có sẵn cho thanh địa chỉ trình duyệt {#available-params}

```ts
export interface SDKMocks {
    /** Có được phép thêm phím tắt lên màn hình chính không? */
    canShowPrompt?: boolean;
    /** Người chơi đã xác thực chưa? */
    isAuthorized?: boolean;
    /** Nếu trò chơi bị khóa hướng màn hình. */
    lockedOrientation?: ELockedOrientation;
}

/** Hướng màn hình bị khóa của trò chơi trên thiết bị di động. */
export enum ELockedOrientation {
    /** Trò chơi chỉ hỗ trợ [landscape](*landscape). */
    LANDSCAPE = 'landscape',
    /** Trò chơi hỗ trợ cả hai hướng. */
    NONE = 'none',
    /** Trò chơi chỉ hỗ trợ [portrait](*portrait). */
    PORTRAIT = 'portrait',
}
```

**Ví dụ**

```text
localhost:8080?mocks={"canShowPrompt":true,"isAuthorized":true,"lockedOrientation":"landscape"}
```

#### Thiết lập danh mục sản phẩm cục bộ {#local-catalog-set}

Để mô phỏng danh mục sản phẩm, tạo tệp `purchases-catalog.json` trong thư mục gốc của dự án và thêm danh sách sản phẩm vào đó — giống như bạn đã hoặc dự định thêm vào [Bảng Điều Khiển của nhà phát triển](https://games.yandex.com/console). SDK trong chế độ dev sẽ tải danh sách sản phẩm từ tệp này.

**Ví dụ**

```json
[
    {
        "description": "Well styled modern avatar image",
        "id": "avatar",
        "imageURI": "{path-to-image}",
        "price": "100 RUB",
        "priceCurrencyCode": "RUB",
        "priceValue": "100",
        "title": "Premium avatar",
        "getPriceCurrencyImage": "[return ''](*return)"
    }
]
```

Khi gọi mua hàng, sẽ hiển thị mock của hộp thoại với các tùy chọn mua hàng thành công và hủy bỏ, để bạn có thể kiểm tra cả hai kịch bản.

[*landscape]: Hướng ngang.
[*portrait]: Hướng dọc.
[*mock]: Các đối tượng hoặc hàm nhân tạo mô phỏng đối tượng thực. Được sử dụng để kiểm tra mã mà không phụ thuộc vào tài nguyên hoặc thành phần bên ngoài.
[*return]: Trong `''` có thể thêm đường dẫn đến hình ảnh.
