Ero sivun ”Xeno:Teknistä tietoa nörteille” versioiden välillä

Seikkailuoppaasta
 
(Yhtä välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 5: Rivi 5:
 
== Palvelin ==
 
== Palvelin ==
 
[[Tiedosto:Kehitys testausservu.jpg|thumb|Xeno käyttää pelimuotojen kehitys­prosessissa erillisiä kehitys­alustoja ja -palvelimia]]
 
[[Tiedosto:Kehitys testausservu.jpg|thumb|Xeno käyttää pelimuotojen kehitys­prosessissa erillisiä kehitys­alustoja ja -palvelimia]]
* Paper 1.18.2 (→ 1.19)
+
* Paper 1.19
 
* Yhdistelmä itse kehitettyjä ja valmiita palvelinlisäosia
 
* Yhdistelmä itse kehitettyjä ja valmiita palvelinlisäosia
 
** Itse kehitetyt on kirjoitettu pääasiassa tavanomaisina Java-plugineina
 
** Itse kehitetyt on kirjoitettu pääasiassa tavanomaisina Java-plugineina
Rivi 21: Rivi 21:
  
 
Vaikka Survin plugin-kanta ei ole yhtä monilukuinen kuin Kuningaskunnassa, on se täysin puhtaalta pöydältä rakennettuna monin paikoin kehittyneempi kuin aiemmissa projekteissa. Abstraktio ja laajennettavuus on pyritty pitämään tarpeellisuuden mittasuhteissa; esimerkiksi uuden teksturoidun palikan lisääminen (testi)palvelimelle onnistuu alle viidessä minuutissa.
 
Vaikka Survin plugin-kanta ei ole yhtä monilukuinen kuin Kuningaskunnassa, on se täysin puhtaalta pöydältä rakennettuna monin paikoin kehittyneempi kuin aiemmissa projekteissa. Abstraktio ja laajennettavuus on pyritty pitämään tarpeellisuuden mittasuhteissa; esimerkiksi uuden teksturoidun palikan lisääminen (testi)palvelimelle onnistuu alle viidessä minuutissa.
 +
 +
{{SiivoaKelluvat}}
 +
 +
== Mixinit ==
 +
Tarkempaa tietoa mixineistä löytyy [https://github.com/SpongePowered/Mixin/wiki täältä]. Mixinejä käytetään Xenossa pääsääntöisesti Paperin ja Spigotin pohjalla olevan NMS:n, eli Minecraftin vanillapalvelimen toiminnallisuuden muokkaamiseen niiltä osin kuin on pakko.
 +
 +
Esimerkiksi eräiden custom-palikoiden blockdatan/-staten muuttumattomuus on varmistettu estämällä se suoraan niiden vanillapalvelimen vastaavissa luokissa.
 +
 +
Xenon käyttämä mixin-moottori on [https://github.com/vectrix-space/ignite Ignite].
  
 
{{SiivoaKelluvat}}
 
{{SiivoaKelluvat}}

Nykyinen versio 4. heinäkuuta 2022 kello 17.34

Tämä sivu on pyhitetty kertomaan teknisistä ja kehityksellisistä seikoista, ja ylipäätään siitä, mitä Survissa tapahtuu kulissien takana. Tämän sivun sisältö ei välttämättä ole mielenkiintoista luettavaa ei-nörteille.


Palvelin

Xeno käyttää pelimuotojen kehitys­prosessissa erillisiä kehitys­alustoja ja -palvelimia
  • Paper 1.19
  • Yhdistelmä itse kehitettyjä ja valmiita palvelinlisäosia
    • Itse kehitetyt on kirjoitettu pääasiassa tavanomaisina Java-plugineina
    • Valmiit lisäosat (mm. CoreProtect, WorldEdit, Vault, jne.) tuovat tärkeitä yleishyödyllisiä ominaisuuksia palvelimen ylläpitoon ja kehitykseen

Xenon varsinaiset palvelimet asustavat Docker-konteissa Pterodactyl-hallintajärjestelmässä Xenon palvelimella. Testipalvelimet sen sijaan elävät hieman vapaammissa olosuhteissa hajautetusti sekä pilvessä, dedikoidulla raudalla, että paikallisilla testi- ja kehityskoneilla.


Lisäosat eli pluginit

Javan parissa työskentelyyn kukin valitsee oman suosikkityökalunsa, pitkällisen Eclipsen rakastamisen jälkeen Tapsa siirtyi IntelliJ IDEAn pariin.

Xenon palvelimilla, myös Survissa, on käytössä useita itse kehitettyjä lisäosia eli plugineita, joilla muutetaan ja täydennetään palvelimen toimintaa. Yhdessä resurssipaketin kanssa lisäosilla saadaan luotua hienoja illuusioita uniikeista ominaisuuksista.

Lisäosakehityksessä on käytössä tiimityöskentelyä helpottava Git-versionhallinta sekä sen verkkokäyttöliittymä Gitlab. Useimmat pluginit rakentuvat Maven-dependenssihallinnan päällä, käyttäen Xenoa varten kehitettyä "copier"-aputyökalua, joka muun muassa osaa automaattisesti kopioida buildit eri kansioihin, scp:llä palvelimille, ja tarvittaessa jopa uudelleenkäynnistää kohdepalvelimen.

Vaikka Survin plugin-kanta ei ole yhtä monilukuinen kuin Kuningaskunnassa, on se täysin puhtaalta pöydältä rakennettuna monin paikoin kehittyneempi kuin aiemmissa projekteissa. Abstraktio ja laajennettavuus on pyritty pitämään tarpeellisuuden mittasuhteissa; esimerkiksi uuden teksturoidun palikan lisääminen (testi)palvelimelle onnistuu alle viidessä minuutissa.


Mixinit

Tarkempaa tietoa mixineistä löytyy täältä. Mixinejä käytetään Xenossa pääsääntöisesti Paperin ja Spigotin pohjalla olevan NMS:n, eli Minecraftin vanillapalvelimen toiminnallisuuden muokkaamiseen niiltä osin kuin on pakko.

Esimerkiksi eräiden custom-palikoiden blockdatan/-staten muuttumattomuus on varmistettu estämällä se suoraan niiden vanillapalvelimen vastaavissa luokissa.

Xenon käyttämä mixin-moottori on Ignite.


Resurssipaketti

Survin ja Kuningaskunnan resurssipaketteja varten kehitetty "PackHelper"-työkalu

Kuningaskunnan ja Survin resurssipaketit eivät juuri muuta normaaleja pelin palikoita. Sen sijaan niissä on käytetty nokkelia kiertoreittejä uusien palikoiden ja tavaroiden lisäämiseksi peliin. Resurssipaketti luo ainoastaan visuaalisen ilmeen tavaroille ja palikoille; niiden toimintalogiikka on peräisin palvelimelle itse kirjoitetuista lisäosista eli plugineista.

Suurin osa tekstuureista on tehty avoimen lähdekoodin Gimp-kuvankäsittelyohjelmalla, ja 3D-mallit maksullisella Cubik-ohjelmalla.


Wiki

Wiki toimii avoimen lähdekoodin MediaWiki-alustan avulla. Wikissä on käytössä erinäisiä lisäosia ja frontendiä on myös muokattu omilla lisävirityksillä.

Wikiä ym. resursseja varten Xenolla on myös käytössä sisäisesti kehitetty Cubisti-järjestelmä, joka renderöi resurssipakettien 3d-mallit ja tekstuurit wiki- ja verkkosivukelpoisiksi kuviksi aina niihin muutoksia tehtäessä. Se mahdollistaakin siis esimerkiksi...

...tavara- ja palakuvien liittämisen vaivattomasti suoraan mallineilla:

...kaikissa asennoissa:

...jopa lennosta renderöityinä rakennelmina:

Järjestelmä kytkeytyy Gitlab-versionhallinta-alustaan ja päivittää tekstuurit ja renderöidyt kuvat niitä vastaavien 3d-mallien tai tekstuurien muuttuessa automaattisesti.