Tapaustutkimus
CarmaClouds: Monialustainen VTT-hahmosynkronointiohjelmisto
Laajuus
175,000+
Koodirivien kokonaismäärä
3
VTT:n alustat
Chrome + Firefox
Selaimen kohderyhmät
20+
Discord-komennot
50+
D&D 5e:n rajatapaukset
Ongelma
Pelaajat, jotka luovat D&D 5e -hahmoja DiceCloud V2:ssa, joutuvat kärsimään työläästä työnkulusta: alusta tarjoaa kattavat hahmonhallintatoiminnot, mutta kun on aika pelata Roll20:ssa, Foundry VTT:ssä tai Owlbear Rodeossa, jokainen ominaisuusarvo, loitsu ja ominaisuus on syötettävä uudelleen käsin. Yli 100 tietopistettä, jotka on kirjoitettu käsin, ja kirjoitusvirheet kertyvät pelisessioiden myötä.
Aiemmin ei ollut olemassa työkalua, jolla DiceCloud olisi voitu yhdistää mihinkään VTT-alustaan. Ekosysteemissä ei ollut yhteentoimivuutta.
Tärkeimmät ominaisuudet
RollCloud
DiceCloud–selaimen laajennus Roll20:lle (Chrome + Firefox)
Jäsentää DiceCloud-hahmotiedot ja täyttää Roll20-hahmolomakkeet Roll20:n DOM-mallin kautta. Käyttää Manifest V3:a (Chrome) ja Manifest V2:ta (Firefox), jotka on käännetty jaetusta lähdekoodista ESBuild-työkalulla.
OwlCloud
DiceCloudista Owlbear Rodeoon -natiivilaajennus
Muuntaa DiceCloud-tiedot Owlbear Rodeon omaksi laajennusrajapinnaksi. Kattavin integrointivaihtoehto – Owlbearin laajennusmalli on hyvin dokumentoitu ja vakaa.
FoundCloud
DiceCloudista Foundry VTT -moduuliin
Foundry vaatii upotettuja esineitä pelkkien attribuuttien sijaan, mikä tekee käännöksestä monimutkaisemman kuin Roll20:ssa. D&D 5e:n luokkien esineet on kartoitettu järjestelmän esinekokoelman avulla.
CoyoteCloud
Kaksisuuntainen DiceCloud-synkronointi Coyotes and Candles -virtuaalipöytäpeliohjelmistossa
Tuotantokäytössä eniten hyödynnetty komponentti. CoyoteCloud tuo DiceCloudin kirjoitustoiminnon Coyotes and Candles -virtuaaliseen pelipöytään (VTT) – VTT:ssä tehdyt hahmomuutokset siirtyvät reaaliajassa takaisin DiceCloudiin ja päinvastoin. Käytössä viikoittaisissa live-kampanjapeleissä.
Pip2 Discord Bot
Hahmotiedot Discordin slash-komentojen kautta
Yli 20 slash-komentoa hahmotietojen hakemiseen, noppien heittämiseen täydellisellä muokkaajakontekstilla sekä kampanjatilanteen hallintaan Discordissa.
Tekniset kohokohdat
DiceCloud käyttää Meteor DDP:tä, ei REST:iä
DiceCloudin sovellusliittymä (API) perustuu Meteor DDP -protokollaan, joka on WebSocket-pohjainen julkaisu- ja tilausjärjestelmä ilman REST-rajapintaa. Toteutin mukautetun DDP-asiakasohjelman, jossa pyynnöt jonotetaan, jotta vältetään sovellusliittymän käyttörajoitusten ylittäminen.
Alustan tietomallit ovat pohjimmiltaan yhteensopimattomia
Roll20 käyttää tasomaisia hahmo-ominaisuuksia. Foundry edellyttää upotettuja kohteita, joilla on tietty rakenne. Owlbearilla on oma mallinsa. Sovitinmalli – yhteinen jäsentämisvaihe, joka syöttää tietoja alustakohtaisille sovittimille – teki uusien alustojen lisäämisestä edullista kahden ensimmäisen jälkeen.
D&D 5e -sääntöjärjestelmä, jossa on yli 50 erityistapausta
Perusominaisuuksien kopioiminen on helppoa. Tarkka laskenta – erikoiskyvyt, aseiden tunnistus, laajennetut kriittisten osumien alueet, moniluokkisten loitsupaikkojen laskeminen – on itse tuote. Jokainen erityistapaus on sääntömoottorissa modulaarinen mallintunnistin.
Chromen ja Firefoxin laajennusrajapinnat eroavat toisistaan perustavanlaatuisesti
Ratkaisu löytyi kirjoittamalla jaettuun lähdekoodiin ja ajamalla ESBuild-putkisto, joka tuottaa molemmat kohteet. Automaattinen ZIP-tiedostojen luominen rakennusvaiheessa estää sekaannukset käyttöönotossa.
Monorepo-konsolidointi
RollCloud, OwlCloud ja FoundCloud olivat alun perin erillisiä koodivarastoja. Niiden yhdistäminen yhdeksi monorepoksi, jossa on yhteinen ydinlogiikka, poisti eroavaisuudet ja mahdollisti sen, että DiceCloudin jäsentämiseen tehdyt muutokset tulivat voimaan kaikkialla kerralla.
Kuvakaappaukset



