Jos olet puuhaillut sen kanssa jonkin aikaa Tekstipohjaiset MUD-pelit ja Telnet-asiakasohjelmat mobiililaitteillaOlet luultavasti törmännyt samaan ongelmaan: kaikki puhuvat Telnetin historiasta, nostalgiasta ja anekdooteista... mutta lähes kukaan ei selitä selkeästi, miten asiakas ja palvelin todellisuudessa kommunikoivat. Tämä artikkeli pyrkii täyttämään tämän aukon: perehtymään protokollaan, viesteihin, ohjaussekvensseihin ja siihen, miten saat oman MUD-palvelimesi toimimaan saumattomasti olemassa olevien asiakkaiden kanssa.
Tarkastellaanpa asiaa tarkemmin Perusteellinen ja käytännöllinen selitys tyypillisen Telnet-pohjaisen MUD-protokollan toiminnastaTämä selittää, mitä laajennuksia alalla käytetään (GMCP, MSSP, pakkaus jne.), miten viestit muotoillaan, mitä mobiilisovellus odottaa näkevänsä ja mitä sinun on lähetettävä palvelimeltasi varmistaaksesi, että kaikki toimii sujuvasti ilman, että sinun tarvitsee luoda protokollaa tyhjästä. Kaikki tämä selitetään espanjaksi (Espanjasta) selkeiden esimerkkien avulla ja ilman tarpeetonta ammattikieltä.
1. Telnet pohjana: mitä useimmat MUDit todellisuudessa käyttävät
Useimmat klassiset MUD-ajoneuvot eivät keksi uutta kulkuvälinettä: ne ovat riippuvaisia Telnet asiakkaan ja palvelimen välisenä viestintäkerroksenaTämä tarkoittaa, että päivän päätteeksi lähetetään TCP:n kautta tavuvirtoja, joissa normaali teksti sekoitetaan erityisiin Telnet-komentoihin, joita edeltää tavu 255 (0xFF).
MUD-palvelin käyttäytyy verkon näkökulmasta kuin Perus Telnet-palvelin, jossa on paljon valinnaisia laajennuksiaAsiakasohjelma (olipa se sitten mobiililaite, pöytäkone tai yksinkertainen Telnet-yhteys järjestelmään) muodostaa TCP-yhteyden MUD-porttiin (usein 23, 4000, 5000 jne.) ja siitä alkaa pieni optiokaupan tanssi.
Ensimmäisessä neuvottelussa molemmat osapuolet lähettävät toisilleen Telnet-ohjaussekvenssit Komentoja, kuten ”WILL”, ”WONT”, ”DO” ja ”DONT”, käytetään ominaisuuksien, kuten kaiun, ikkunan koon, lisäprotokollien, kuten GMCP:n ja pakkauksen, aktivointiin tai deaktivointiin. Kaikki tämä sekoitetaan pelitekstiin, mutta asiakas pystyy erottamaan sen, koska ohjauskomennot on merkitty tutulla 0xFF:llä.
2. MUD-laitteiden käyttämän Telnet-protokollan runko
Telnetissä kaikki ohjauskomennot alkavat tavulla IAC (Tulkitaan komennona, arvo 255)Seuraavaksi tulee yksi tai useampi tavu, joka ilmaisee komennon tyypin ja monissa tapauksissa asetuskoodin. Tavallisessa MUD-protokollatasolla kohtaat pääasiassa:
- IAC DO"Haluan sinun (asiakkaan) aktivoivan tämän vaihtoehdon."
- IAC EI"En halua sinun käyttävän tätä vaihtoehtoa."
- IAC TULEE: "Minä (palvelin) voin ja haluan käyttää tätä vaihtoehtoa."
- IAC TAPAHTUU"En aio käyttää tätä vaihtoehtoa."
Vaihtoehdot on merkitty numerolla; jotkut ovat vanhempia Telnet-standardeja, toiset MUD-yhteisössä sovittuja laajennuksia (esimerkiksi GMCP, MSSP, COMPRESS2), jotka eivät esiinny klassisissa Telnet RFC:issä, mutta joista on tullut tosiasiallinen "näennäisstandardi", koska tärkeimmät asiakasohjelmat tukevat niitä.
MUD-hahmona aloitat yleensä vuoropuhelun lähettämällä IAC DO / IAC WILL -sekvenssit Testataan, mitä asiakasohjelma tukee: hyväksyykö se GMCP:n, haluaako se pakkausta, tarjoaako se päätetietoja jne. Asiakasohjelma vastaa WILL/WONT- tai DO/DONT-vaihtoehdoilla tilanteen mukaan. Palvelimesi on kunnioitettava näitä vastauksia eikä se saa käyttää vaihtoehtoa, jota asiakasohjelma ei hyväksy.
3. Pelitekstin ja Telnet-ohjauksen erottaminen toisistaan
Yksi tyypillisistä kysymyksistä on, miten erottaa ohjauskomentojen normaali pelitekstiSääntö on yksinkertainen: kaikki, mitä ei edeltä 0xFF, katsotaan tekstiksi. Telnet-komennot alkavat aina kyseisellä tavulla juuri sekaannusten välttämiseksi.
Käsitteellinen esimerkki (sinun ei tarvitse kopioida sitä sanatarkasti, se on vain visualisointia varten): palvelin voi lähettää ympäristöä kuvaavat rivit, joita seuraa IAC-sekvenssi option kauppaamiseksi. Asiakas lukee tavu tavulta: kun se näkee 0xFF, se siirtyy "komentotilaan"; muina aikoina se käsittelee sitä tekstinä, käyttää tarvittaessa ANSI-väriä ja näyttää sen.
Jos sinun on jossain vaiheessa lähetettävä tavu 0xFF osana tekstiä (melko harvinaista, mutta mahdollista), sinun on "paetakseen sitä" kopioimalla senToisin sanoen, kirjaimellisen 0xFF:n lähettämiseksi käyttäjämaan datavirrassa lähetetään kaksi 0xFF:ää peräkkäin, ja asiakas tulkitsee ne oikein "yhdeksi 0xFF-tekstiksi, ei komennoksi".
4. Tekstiviestin muoto: rivit, rivinvaihdot ja värit
Suurin osa MUD-sovelluksesi lähettämästä sisällöstä on Luettavat tekstiviestit: kuvaukset, valintaikkunat, objektiluettelot ja komennotVaikka se vaikuttaa triviaaliselta, kannattaa kiinnittää huomiota joihinkin yksityiskohtiin, jotta Telnet-asiakkaat (etenkin mobiililaitteilla) näyttävät sen oikein.
Yleisesti ottaen MUDit käyttävät edelleen klassista tyyliä CRLF (\r\n) -päätteiset rivitJotkin asiakasohjelmat tukevat vain LF (\n) -merkkiä, mutta parhaan mahdollisen yhteensopivuuden takaamiseksi lähetä aina rivinvaihto ja sen jälkeen rivinvaihto.
Värien ja muodon osalta MUD-tiedostot käyttävät tyypillisesti ANSI-koodien pakokoodit tekstiin upotettuja. Esimerkiksi sekvenssit, jotka alkavat ESC:llä (0x1B) ja jatkuvat "[31m":llä punaiselle tekstille, "[1m":llä lihavoinnille jne. Nämä eivät ole osa itse Telnet-protokollaa, mutta useimmat päätelaitteet ja edistyneet MUD-asiakasohjelmat, mukaan lukien monet mobiiliasiakasohjelmat, ymmärtävät ne.
5. MUD-laajennukset Telnetin yli: GMCP, MSSP ja yritys
Pelkän tekstin lisäksi monet MUDit yhdistävät nykyään Telnetin lisäprotokollia strukturoidun datan vaihtamiseen asiakkaiden kanssaTämä mahdollistaa mobiiliasiakkaille monipuolisempien käyttöliittymien näyttämisen kuin pelkkä tekstivirta.
Yleisimpiä laajennuksia ovat:
- GMCP (yleinen MUD-tiedonsiirtoprotokolla): lähettää tietoja JSON-muodossa (vaikkakaan ei aina 100 % standardin mukaisesti) hahmosta, kartasta, kanavista jne.
- MSSP (Mud Server Status Protocol): suunniteltu tarjoamaan palvelintietoja (MUD-nimi, pelaajien määrä, sukupuoli jne.) listauspalveluille ja uteliaille asiakkaille.
- PAKKAUS / PAKKAUS2Tiedon pakkaus kaistanleveyden vähentämiseksi, erittäin arvostettu hitailla yhteyksillä.
Näistä laajennuksista neuvotellaan aivan kuten mistä tahansa muusta Telnet-asetuksesta: palvelin lähettää yleensä IAC TEKEE GMCP:tä vai TEKEEKÖ IAC GMCP:tä? ja odota vastausta. Kun sovittu, laajennus itse määrittelee, miten tiedot kapseloidaan (esimerkiksi GMCP kuuluu Telnet-alineuvotteluihin: IAC SB … IAC SE).
6. Alineuvottelu (SB ja SE): erityistietojen kapselointi
Kun Telnet-vaihtoehto vaatii enemmän datan lähettämistä kuin yksinkertaisen kyllä/ei-vaihtoehdon, käytetään seuraavaa: alineuvotteluKuvio on:
- IAC SB IAC SE
Tuon lohkon sisällä voit lähettää merkkijonoja, numeroita tai laajennuksen määrittelemiä erityisiä rakenteitaEsimerkiksi GMCP lähettää yleensä jotain, joka näyttää hyvin paljon JSON-objektilta, lainausmerkeillä, aaltosulkeilla ja arvoilla.
Kun asiakas vastaanottaa IAC SB GMCP:n, se tietää, että kaikki IAC SE:hen asti on osa GMCP-pakettia eikä normaalia pelitekstivirtaa. Siksi se voi Erota selkeästi graafiseen käyttöliittymään menevä sisältö perinteiseen tekstipuskuriin menevästä sisällöstä..
7. Mitä MUD-palvelin lähettää: tyypillinen viestintäkulku
Kuvittele tilanne siitä hetkestä lähtien, kun pelaaja muodostaa yhteyden Mobiili Telnet-asiakasohjelma MUD-palvelimellesi:
- Asiakas avaa TCP-yhteyden MUD-porttiin.
- Palvelin lähettää sinulle tervetulobannerin (tekstiviestin) ja luultavasti jonkin verran IAC-sekvenssit optioiden kaupankäyntiin (kaiku, GMCP, pakkaus…).
- Asiakas vastaa hyväksymällä tai hylkäämällä vaihtoehdot WILL/WONT- ja DO/DONT-sanomilla.
- Sieltä palvelin lähettää kirjautumisnäytön (tekstin) ja käsittelee pelaajan kirjoittamat komennot.
Palvelimen on aina kyettävä lukea asiakkaan syötettä tekstin ja Telnet-komentojen yhdistelmänäAivan kuten asiakasohjelma tekee tulosteellasi. Kun pelaaja kirjoittaa esimerkiksi "pohjoinen" ja painaa Enter-näppäintä, asiakasohjelma lähettää yleensä kyseisen merkkijonon, jota seuraa rivinvaihto ja rivinvaihto. Palvelimesi lukee rivin loppuun ja tulkitsee sen pelaajan komennoksi.
Jos asiakas päättää käynnistää jonkin vaihtoehdon (esimerkiksi käynnistää ikkunan koon neuvottelun), sinun on myös oltava valmis vastaanottamaan IAC-sekvenssit asiakaspuolella ja vastaa oikein, ei vain toisinpäin.

8. Mitä Telnet-asiakasohjelma lähettää (mukaan lukien mobiiliasiakkaat)
Palvelimesi näkökulmasta tavallinen Telnet-asiakasohjelma (mobiili tai työpöytä) lähettää sinulle periaatteessa kahdenlaisia asioita: käyttäjän teksti- ja Telnet-komennotTeksti on yleensä ASCII- tai UTF-8-merkistöä asiakkaasta riippuen; nykyään on suositeltavaa olettaa vähintään UTF-8.
Saamasi Telnet-komennot ovat ennen kaikkea vastauksia neuvottelupyyntöihisiJos lähetät IAC DO GMCP -komennon, asiakas vastaa IAC WILL GMCP -komennolla, jos se tukee sitä, tai IAC WONT GMCP -komennolla, jos se ei tue sitä. Se voi myös itse aloittaa neuvotteluja (esimerkiksi päätelaitteen tyypistä).
Tärkeä mobiiliyhteensopivuuden yksityiskohta on, että monet nykyaikaiset asiakkaat Ne tulkitsevat lähetyksen merkki merkiltä tai rivi riviltä kokoonpanon mukaan.Yleisin lähestymistapa on rivi riviltä, joten rakenna komentosyötejäsentimesi ajattelemalla kokonaisia rivejä erotettuna \r\n \n -merkillä yksittäisten merkkien sijaan.
9. Välityspalvelimien käyttö ja verkko-ongelmat MUD-laitteiden kanssa rajoitetuissa verkoissa
Joissakin ympäristöissä (esim. yritysverkoissa, kampuksilla tai tietyillä matkapuhelinoperaattoreilla) tyypilliset MUD-korkeat portit voivat olla palomuurin estänytNäissä tapauksissa pelaajat huomaavat, etteivät he voi muodostaa yhteyttä suoraan MUD-porttiin, vaikka Telnet itsessään on sallittu vakioporteissa.
Klassinen ratkaisu sisältää käytön välittäjäpalvelin kuuntelee sallittua porttia (kuten Telnet-portti 23 tai FTP-portti 21) ja välittää yhteyden MUDin varsinaiseen porttiin. Välityspalvelin toimii siltana: asiakas muodostaa yhteyden välityspalvelimeen, ja välityspalvelin puolestaan avaa yhteyden pelipalvelimelle.
On myös yleistä, että työtoverilla, jolla on pysyvä internetyhteys, on työtoveri. Asenna välityspalvelin koneellesi ja jätä muut pelaajat Syötä MUD IP-osoitteesi kauttaJaettujen IP-osoitteiden kanssa on kuitenkin oltava varovainen: jos useat tilit muodostavat yhteyden samasta IP-osoitteesta, jotkut MUD-käyttäjät saattavat tulkita tämän laittomaksi moninpeliksi ja määrätä rangaistuksia. Ihannetapauksessa sinun tulisi ilmoittaa pelin ylläpitäjille, jos aiot jakaa IP-osoitteesi jatkuvasti.
10. MUD-arviointiin liittyvien sijaisarvojen rajoitukset ja riskit
Vaikka välityspalvelin voi nykyään pelastaa sinut erittäin suljetuissa verkoissa Luotettavia julkisia anonyymejä välityspalvelimia ei ole runsaasti. Ja ne muutamat jäljellä olevat ovat yleensä ylikuormitettuja, alhaalla tai kiellettyjä turvallisuussyistä.
Lisäksi samat verkot, jotka estävät korkeita portteja, voivat myös portti 8080 on estettyTämä on hyvin yleistä HTTP-välityspalvelimissa. Siksi, jos joku perustaa yksityisen välityspalvelijan MUD-yhteyden muodostamiseksi, on suositeltavaa sijoittaa se porttiin, jota ei juuri koskaan suodateta (23, 21 tai jokin muu erittäin yleinen ja sallittu portti kyseisessä verkossa).
Älä unohda, että näillä asetuksilla on tietoturvavaikutuksia: liikenne kulkee välikoneen kautta, istunnot, salasanat jne. voidaan kirjata lokiin. MUD-palvelimen suunnittelun näkökulmasta protokolla ei muutu, mutta sinun on oletetaan, että monet yhteydet tulevat "käärittyinä" välityspalvelimen kautta, mahdollisella ylimääräisellä viiveellä tai useammin esiintyvillä katkoksilla.
11. Esimerkki narratiivisesta vuorovaikutuksesta tekstimuotoisessa MUD-muodossa
Teknisten näkökohtien lisäksi tekstipohjainen MUD perustuu rikkaat kuvaukset ja tunnelmaMonissa peleissä on ikonisia tekstikatkelmia, kirjallisia lainauksia tai lähes runollisia katkelmia, jotka palvelin lähettää sanatarkasti asiakkaalle parantaakseen pelaajan immersiota.
Näytölle saattaa esimerkiksi ilmestyä teksti [epäselvä] "Litania pelkoa vastaan" Tämä ilmestyy, kun hahmo kohtaa ratkaisevan hetken. Teknisesti se on yksinkertaisesti rivien sarja tekstiä, jossa on sopivat vaihdot ja haluttaessa väriä tai muotoilua. Mutta käyttäjäkokemuksen kannalta sillä on merkittävä vaikutus.
Tuollainen tekstityyppi, vaikka se ei muuttaisikaan Telnet-protokollaa, asettaa ehtoja haluamallesi tavalla. rivivälin, sivutuksen ja päivityksen hallintaJos heität useita pitkiä kappaleita kerralla yhteen jaksoon, niistä voi tulla lukukelvottomia pienillä näytöillä (kuten matkapuhelimilla). Siksi monet palvelimet käyttävät sivutusjärjestelmiä, jotka pysäyttävät tulostuksen tietyn rivimäärän jälkeen ja odottavat, että pelaaja painaa näppäintä jatkaakseen.
12. Ulkoiset resurssit ja tekninen lisädokumentaatio
Toisin kuin muut erittäin standardoidut protokollat, MUD-ekosysteemiä on ruokkinut... hajallaan olevia dokumentteja, akateemisia PDF-tiedostoja ja irrallisia artikkeleita jossa kuvataan variantteja, laajennusehdotuksia ja tutkimuksia vuorovaikutuksesta MUD-ympäristöissä.
Yliopistojen arkistoissa ja digitaalisissa kirjastoissa on saatavilla teoksia, jotka analysoivat MUD-laitteiden asiakas-palvelinarkkitehtuuri, kehitys pelkästä Telnetistä rikkaisiin protokolliin...ja jopa käyttökokemusongelmia tekstikäyttöliittymissä. Vaikka monet näistä dokumenteista eivät opeta rivi riviltä viestien muotoilua, ne tarjoavat hyödyllistä kontekstia sen ymmärtämiseksi, miksi tiettyjä protokollia otettiin käyttöön ja miten niitä yhdistetään.
Toteutuksen täydentämiseksi on myös suositeltavaa tarkastella suosittujen MUD-asiakasohjelmien dokumentaatio (sekä työpöytä- että mobiiliversioissa), joissa ne yleensä kertovat, mitä laajennuksia ne tukevat (GMCP, MXP, MSDP jne.), mitä merkistöjä ne käsittelevät, miten ne käsittelevät ANSI-värejä ja mitä rajoituksia niillä on pienillä näytöillä.
13. Massiiviset verkkotunnukset ja isäntänimet: Infrastruktuurin näkyvä kaaos
Jos olet joskus tarkastellut suurten hosting-palveluntarjoajien DNS-tietueita, olet nähnyt valtavia nimilistoja, kuten www, sähköposti, ftp, webmail, smtp, pop3, imap, paneeli, cPanel, admin, dev, test ja loputtomasti muunnelmiaVaikka se saattaa vaikuttaa hälinältä, se heijastaa sitä, miten monia MUD-yksiköitä ja niihin liittyviä palveluita ylläpitävä infrastruktuuri on todellisuudessa organisoitu.
Satoja aliverkkotunnuksia voidaan linkittää yhteen verkkotunnukseen: tietokantapalvelimet, testikoneet, välityspalvelimet, kuormituksen tasaajat, tilastopalvelut, sähköpostialustat, tallennustila, VPN...ja usein juuri se portti, jota MUD kuuntelee. Joissakin tapauksissa peli sijaitsee erillisellä aliverkkotunnuksella; toisissa se jakaa IP-osoitteen useiden palveluiden kanssa, jotka vaihtelevat foorumeista wikeihin ja hallintapaneeleihin.
Tämä nimien runsaus on olennaista, jos mietit julkaise MUD-tiedostosi jaetulla palvelimella tai pelaajille tarkoitettujen tiettyjen välityspalvelimien määrittämisessä: sinun on koordinoitava huolellisesti, mitkä aliverkkotunnukset osoittavat mihin koneeseen, mitkä portit avataan ja miten turvallisuutta hallitaan, jotta Telnet-liikenne ei sekoitu vaarallisesti muiden kriittisten palveluiden kanssa.
14. Käytännön huomioitavia asioita Telnet-asiakkaille mobiililaitteilla
Leikkiä tai kehittyä Telnet-asiakasohjelma mobiililaitteissa Se lisää ongelman: pieni näyttö, kosketusnäppäimistö, mahdolliset tiheät verkkoyhteyden katkeamiset ja joskus asiakkaiden omat rajoitukset laajennustuen suhteen.
Kun suunnittelet MUD-palvelinta, pidä mielessä muutama seikka:
- Vältä liian pitkiä jonoja: paremmat lyhyet kappaleet, jotta käyttäjän ei tarvitse vierittää sivulta toiselle.
- ANSI-koodien käytön kohtuullisuus Ja varmista, etteivät ne riko asettelua asiakkaille, jotka eivät tulkitse niitä hyvin.
- Käsittele sivutusta huolellisesti. jotta kokemus ei olisi mahdoton seurata tekstiseinä.
- Toteuta pehmeät uudelleenkytkennätMobiililaitteella signaalin menetys ja uudelleenmuodostus on helppoa; palvelimesi pitäisi sietää tämä keskeyttämättä pelaajan istuntoa ensimmäisen lyhyen keskeytyksen yhteydessä.
Jotkut MUD-tiedostoihin erikoistuneet mobiiliasiakasohjelmat sisältävät jo tuen GMCP:lle ja muille laajennuksille, joten jos otat ne käyttöön palvelimella, voit Tarjoa jäsenneltyä tietoa, jota asiakas voi näyttää koontinäyttöinä, kuntopalkkeina ja pikakarttoina ja muita visuaalisia apuvälineitä klassisen tekstin yläpuolella.
15. Luo oma MUD-palvelimesi, joka on yhteensopiva olemassa olevien asiakkaiden kanssa
Jos olet päättänyt kirjoittaa oman MUD-palvelimesi tyhjästä, eristäytymisen välttämisen avain on Kunnioita Telnetiä pohjakerroksena ja neuvottele vaihtoehdoistasi oikein.Protokollaa ei tarvitse keksiä uudelleen, vaan kannattaa noudattaa jo hyväksi havaittuja käytäntöjä.
Lyhyesti sanottuna, ollaksesi yhteensopiva yleisimpien asiakkaiden kanssa, sinun tulisi:
- toteuttaa Telnet-komentojen jäsentäminen (IAC, DO, DONT, WONT, WONT, SB, SE).
- Tue ainakin joitakin yleisiä vaihtoehtoja: kaiku, paikallinen kaiunvaimennus, GMCP Jos haluat rikastettua dataa ja ehkä pakkausta.
- Lähettää teksti käyttäjäystävällisessä muodossaCRLF, ANSI valinnainen, ilman pitkien linjojen liikakäyttöä.
- Hyväksy syöte online-tilassa ja käsittele mobiiliasiakkaiden lähettämät rivinvaihdot oikein.
Sieltä voit laajentaa palvelintasi lisäprotokollilla tai jopa omalla asiakasohjelmallasi, mutta tältä pohjalta aloittaminen mahdollistaa Testaa peliäsi olemassa olevilla Telnet-asiakkailla ja hyödyntää koko ekosysteemiä, joka on vuosien varrella luotu MUDien ympärille.
Kaikki tämä Telnet, laajennukset, välityspalvelimet, isäntänimet ja mobiiliasiakasohjelman omituisuudet saattavat aluksi vaikuttaa hämmentävältä, mutta jos purat sen askel askeleelta, huomaat, että ydin on melko yksinkertainen: tekstinkulku, jossa on muutama hyvin määritelty ohjaussekvenssi. Ymmärtämällä, miten nämä viestit muodostetaan, miten vaihtoehdoista neuvotellaan ja mitä tyypillinen asiakas odottaa näkevänsä, saat vankan käsityksen järjestelmästä. Tarvittavat työkalut vankan, yhteensopivan ja nautinnollisen MUD-palvelimen rakentamiseen, johon pääsee käsiksi mistä tahansa Telnet-asiakasohjelmasta, olipa kyseessä sitten mobiililaite tai pöytätietokone..

