Siirry sisältöön

Tapaustutkimus

CarmaClouds: Monialustainen VTT-hahmosynkronointiohjelmisto

Rooli: Solo DeveloperKesto: 2024-nykyinenLive: MIT (open source)Tila: Aktiivinen – käytössä käynnissä olevissa kampanjatapahtumissa
TypeScriptJavaScriptSupabaseChrome Ext. (MV3)Firefox Ext. (MV2)Discord.jsMeteor DDPESBuild

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)

valmis 85–90 %

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

95 % valmis

Muuntaa DiceCloud-tiedot Owlbear Rodeon omaksi laajennusrajapinnaksi. Kattavin integrointivaihtoehto – Owlbearin laajennusmalli on hyvin dokumentoitu ja vakaa.

FoundCloud

DiceCloudista Foundry VTT -moduuliin

70 % valmis

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

Aktiivinen

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

Itsenäinen toiminta

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

DiceCloud character sheet - sync source
Browser extension popup
Roll20 - synced character sheet
Owlbear Rodeo - synced character

Linkit