Podłączanie klienta
Ta sekcja jest dla osób, które piszą własnego klienta albo konfigurują istniejący. Do samego grania nie jest potrzebna — wystarczy przeglądarka.
Dwa wejścia
Dział zatytułowany „Dwa wejścia”| Transport | Port | Dla kogo |
|---|---|---|
| telnet | 9600 | Mudlet, TinTin++, MUSHclient, telnet, własne klienty |
| WebSocket | 9601, ścieżka /ws | przeglądarka i wszystko, co mówi po WebSockecie |
Oba prowadzą do tego samego świata i tej samej postaci. Różnią się tylko sposobem pakowania danych.
Serwer sam zaczyna negocjację i proponuje:
| Opcja | Numer | Po co |
|---|---|---|
| GMCP | 201 | strukturalne dane obok tekstu |
| MCCP2 | 86 | kompresja strumienia |
| SGA | 3 | tryb bez „go-ahead”, potrzebny do sensownej pracy |
| NAWS | 31 | serwer pyta o rozmiar twojego okna |
| TTYPE | 24 | serwer pyta o typ terminala |
Serwer oferuje GMCP, MCCP2 i SGA (WILL), a prosi o NAWS i TTYPE (DO).
Klient odpowiada DO/DONT i WILL/WONT jak w zwykłym telnecie.
Sterowanie echem (przy wpisywaniu hasła) idzie zwykłym IAC WILL/WONT ECHO.
WebSocket
Dział zatytułowany „WebSocket”Tu nie ma negocjacji — GMCP działa od razu. Ramki to JSON o jednym kształcie:
{ "type": "input", "text": "spójrz" }Pole type decyduje o reszcie:
type | Kierunek | Pozostałe pola |
|---|---|---|
input | klient → serwer | text — komenda gracza |
text | serwer → klient | text — zwykły tekst gry |
gmcp | oba | package i data |
echo | serwer → klient | enabled — czy pokazywać wpisywane znaki |
Pakiet GMCP wygląda więc tak:
{ "type": "gmcp", "package": "Char.State", "data": { "hp": 5 } }Co warto obsłużyć
Dział zatytułowany „Co warto obsłużyć”Kolejność mniej więcej według opłacalności:
Room.InfoiRoom.Players— mapa i lista obecnych bez parsowania opisów.Char.State— pasek życia. Pamiętaj, że przychodzi częściowo: scalaj, nie podmieniaj.Objects.Data— klikalne cele. Tu jest pułapka zuid, przez którą przeszedł też nasz własny klient webowy.Char.Items.List— ekwipunek na żywo.Comm.Channel.Text— osobne okno na rozmowy.
Polskie znaki
Dział zatytułowany „Polskie znaki”Wszystko leci w UTF-8, łącznie z komendami. Klient, który tnie do ASCII, będzie
działał — gra przyjmuje spojrz tak samo jak spójrz — ale opisy świata
zrobią się nieczytelne.
- GMCP — pełna referencja
- Jak zacząć grać — dla grających, nie piszących klienta