Järjestelmäkäsikirja
Pelinkirjoitus-moduli
Yleistä
Pelinkirjoitus-moduli (Writers-module) huolehtii pelin kirjoittamis osuudesta. Sen avulla käyttäjät voivat luoda ja käsitellä pelin eri komponentteja; paikkaoja
tavaroita ja ominaisuuksia, sekä määritellä näiden välisiä riippuvuuksia. Riippuvuuksien määrittely tapahtuu määrittelemällä pelille tapahtumia.
Vaatimuksena oli että peliä on mahdollista muokata mistä päin maailmaa tahansa. Niimpä pelin muokkaus tapahtuukin WWW-pohjaisen
editorin kautta. Moduli- lähettää käyttäjälle hänen WWW-selailijaan HTML-sivuja, joita tässä dokumentissa kutsutaan muokkaussivuiksi. Näiden
muokkaussivujen avulla käyttäjä rakentaa peliä. Jokaisen muokkaussivulla on vakio yläosa, jonka avulla käyttäjä pääsee liikkumaan eri muokkaussivulta
toiselle. Sivujen runko osalla pelaaja määrittelee haluamansa tiedot ja lähettää ne systeemillemme joka suorittaa halutut toimenpiteet.
Toteutus
Jokaiselle eri seikkailun komponentille on oma muokkaussivunsa.
Jokaisella sivulla on vakio yläosa, jossa olevia buttoneita käyttämällä pelin kirjoittaja
pääsee liikkumaan muokkausivulta toiselle.
Sivun "runko osalla" määritellään ko komponentin tiedot ja käytettävissä on SAVE- ja DELETE-
buttonit, jotka suorittavat nimensä mukaisen toiminnan.
Runko osan alapuolella ovat NEW- ja OPEN-buttonit, sekä SELECT-form, jolla valitaan
muokkausta varten avattava komponentti.
Seikkailun muokkaussivu on siinä mielessä erikoisessa asemassa että käyttäjällä
on mahdollisuus käyttää sitä ainoastaan mikäli hänellä on riittävästi oikeuksia.
Käytännössö write_all-, teacher- tai administration-oikeudet.
Liittymät systeemin muihin osiin
Moduli käynnistyy kutsuttessa start_we-scriptiä.
start_we-scripti olettaa löytävänsä UserID ja
RoundNumber nimiset hidden objektit.
Writer-moduli käyttää Authorise- ja DatabaseManagement-moduleiden funktioita.
Authorise-modulilta kutsutaan funktioita, jotka huolehtivat käyttäjien oikeuksista suorittaa haluttuja toimenpiteitä ja siittä että heillä
on ylipäätänsä oikeus pelin kirjoittamiseen.
Database-moduli taas huolehtii kaikesta tietokannan käsittelystä. Koko Writers-moduli on hyvin pitkälle nimenomaan tietokannan muokkausta, mutta
varsinaiseen tietokantaan koskevat funktiota on haluttu koota kaikki yhden ja saman modulin alle. Llisäksi on haluttu Writers-modulin huolehtivan
pelin editoimisesta hieman korkeammalla tasolla. Näin on saatu aikaan rajapinnat, jotka helpottavat tulevaisuudessa eri osien muuttamista.
Liittymät esteisiin
Obstacle editor
Obstacle editoria kutsutaan obstacle_editor.pl-scriptinä, jolle
välitetään seuraavat hidden objektit:
start_obstacle_editor=start
UserID
RoundNumber
AdventureID
Memo
Ko hidden objektien oletetaan kulkevan obstacle editorin mukana.
Paluu tapahtuu top_buttons-scriptiä kutsumalla.
Link obstacle
Actionin muokkausivulta kutsutaan link_obstacle.pl-scriptiä, joka
hoitaa tapahtumaan linkitettävän esteen valinnan.
Link-obstacle-scriptille välitetään seuraavat hidden objketit:
select_linked_obstacle=select
UserID
RoundNumber
AdventureID
ActionID
Memo
Ko hidden objektien oletetaan kulkevan link_obstacle-scriptin mukana.
Paluu tapahtuu kutsumalla olink_done-scriptiä.
Writers-modulin jako alimoduleihin
- Location-module hoitaa paikan luomiseen ja sen käsittelyyn liittyvät rutiinit.
- Item-module hoitaa tavaroiden luomiseen j a käsittelyyn liittyvät rutiinit.
- Property-module hoitaa ominaisuuksien luomiseen ja käsittelyyn liittyvät rutiinit.
- Picture-module hoitaa kuvien kopioimiseen ja niiden käsittelyyn liittyvät rutiinit.
- Action-module hoitaa pelin tapahtumien määrittelyyn ja käsittelyyn liittyvät rutiinit.
- Generate-pages-module tarjoaa käyttäjälle lähetettä'vien sivujen luomiseen tarkoitetut funktiot.
Generate-pages-moduli
Yleistä
Generate-pages-moduli luo kaikki käyttäjälle lähetettävät muokkaussivut. Muokkaussivuilla on vakio yläosa, jonka avulla
liikutaan muokkaussivulta toiselle. Huomioitavaa on että ko liikkuminen EI-talleta ko sivun tietoja. Lopulla muokkaussivulla
on ko sivun runko osa, jonka avulla käsitellään ko sivun komponenttia (paikkaa, esinettä...).
Toteutus
Vakio yläosa
Muokkausivujen yläosa on yksi formi, jossa painonappeina seuraavat napit; "LOCATION"-, "ITEM"-, "PROPERTY"-, "ACTION"-,
"PICTURE"- tai "HELP".
Painettaessa joyain näistä kutsutaan top_buttons-scriptiä
Loppuosa
Yläosan jälkeen tulee jokaiselle muokkaussivulle ominaiset asiat. Ko asiat on sisällytetty yhden formin sisälle ja
aina kun muokkaussivulla halutaan tehdä jotakin kutsuu formi ko sivun scrriptiä.
Muokkaussivujen ulkoasut:
Funktiot, jotka luovat ko muokkaussivuja ja joita muut writers interfacen modulit kutsuvat.
void create_basic_item_page(hid)
std_hidden *hid;
void create_item_page(item, hid, message)
Item *item;
std_hidden *hid;
char *message;
void create_item_page_by_id(id, hid, message)
long int id;
std_hidden *hid;
char *message;
void create_basic_location_page(hid)
std_hidden *hid;
void create_location_page_by_id(id, hid, message)
long int id;
std_hidden *hid;
char *message;
void create_location_page(loc, Data, hid, message)
location *loc;
char *Data;
std_hidden *hid;
char *message;
vvoid create_adventure_page(hid, message)
char *message;
std_hidden *hid;
void create_basic_property_page(hid)
std_hidden *hid;
void create_property_page(property, hid, message)
Property *property;
std_hidden *hid;
char *message;
void create_property_page_by_id(id, hid, message)
long int id;
std_hidden *hid;
char *message;
Location-moduli
Yleistä
Location-moduli huolehtii kaikesta paikkojen käsittelyyn liittyvistä asioista. Pelaajalla on mahdollisuus luoda uusia
paikkoja, muuttaa paikan nimeä, kopioida paikan informaatio toiselta WWW-serveriltä, poistaa paikka ja listata tietoja
pelin paikoista. Paikka on perusrakenteeltaan HTML-tiedosto. Paikkaan voidaan liittää toimintoja. Toiminnot ovat kuitenkin itsenäisiä
komponentteja ja niiden luominen tapahtuu tapahtuman-muokkaussivun kautta. Paikan muokkaussivulla on kuitenkin
linkit jo määriteltyihin tapahtumiin ja mahdollisuus kutsua suoraan uuden tapahtuman lisäys-funktiota.
Toteutus
Moduli on toteutettu siten että käyttäjälle lähetetään HTML-muodossa oleva paikan muokkaussivu, jonka avulla hän voi käsitellä eri
paikkoja ja niiden tietoja. Kun käyttäjä on valmis hän painaa haluamaansa submit-nappulaa. Painettaessa mitä tahansa nappulaa
kutsutaan aina location-scriptiä, joka huolehtii varsinaisesta toteutuksesta.
Paikan -muokkaussivulla on:
Vakio yläosa. (Katso generate_pages-moduli)
Tieto mitä paikkaa ollaan muokkaamassa. (Käsiteltävä paikka)
Mahdolliset virheilmoitukset.
Piilotettuina tiedot:
- UserID; käyttäjän tunniste.
- RoundNumber; authorisointi numero.
- AdventureID; seikakailun tunniste
- Memo; Tulevaisuutta varten
Input-kentät:
- Name; määrittelee paikan nimen.
- LocationData; sisältää paikan HTML-muodossa olevat tiedot.
- Description; Paikan kuvaus
Submit-napit:
- Save; tallettaa käsiteltävän paikan tiedot. Palauttaa käyttäjälle saman muokkaussivun.
- Delete; poistaa käsiteltävän paikan. Palauttaa käyttäjälle muokkaussivun, jossa ei käsiteltävää paikkaa.
- Add New Action; tallettaa käsiteltävän paikan tiedot. Luo uuden tapahtuman liitettynä ko
paikkaan Palauttaa käyttäjälle tapahtuman muokkaussivun, jossa käsiteltävänä tapahtumana juuri luotu tapahtuma.
- Edit Action; tallettaa ko paikan tiedot. Palauttaa käyttäjälle tapahtuman muokkausivun, jossa käsiteltävänä
tapahtumana. ActionName-tapahtuma.
- New; luo uuden paikan. Palauttaa käyttäjälle paikan muokkaussivun, jossa käsiteltävänä paikkana ko uusi paikka.
- Open; aukaisee paikan. Palauttaa käyttäjälle paikan muokkaussivun.
Selectit:
- OpenID; Valitsee paikan mikä avataan.
Listattuna tiedot paikkaan liitetyistä tapahtumista.
Listattuna tiedot paikkaan oletusarvoisesti sijoitetuista tavaroista.
Liitteenä Paikan muokkaussivun ulkoasu.
location-scripti
- Jaottelee ohjelmalle tulevat argumentit erilleen toisista.
- Suorittaa authorisoinnin.
- Tutkii mitä nappia ollaan painettu.
- Kutsuu ko funktiota, jotka puolestaan suorittavat halutun toimenpiteen
käyttäen hyväkseen DatabaseManagement-modulia.
Item-moduli
Yleistä
Item-moduli huolehtii kaikesta esineiden käsittelyyn liittyvästä. Esineitävoidaan luoda, poistaa, uudelleen nimetä ja lisäksi käyttäjä
voi listata pelin esineet. Esineellä on neljä ominaisuutta, sillä on; paikka missä se sijaitsee, nimi , kuvatiedosto (optionaalinen) ja kuvaus.
Toteutus
Käyttäjälle lähetetään esineen muokkaussivu, jossa hän määrittelee esineen tiedot haluamallaan tavalla. Täytettyään haluamansa tiedot
hän kutsuu item-scriptiä, joka huolehtii käyttäjän haluamasta toimenpiteestä.
Esinneen muokkaussivulla on:
Vakio yläosa. (Katso generate_pages-moduli)
Tieto mitä esinettäollaan muokkaamassa. (Käsiteltävä esine)
Mahdolliset virheilmoitukset.
Piilotettuina tiedot:
- UserID; käyttäjän tunniste.
- RoundNumber; authorisointi numero.
- AdventureID; seikakailun tunniste
- Memo; Tulevaisuutta varten
Input-kentät:
- Name; määrittelee paikan nimen.
- PictureFile; kuvatiedoston nimi
- Description; Esineen kuvaus
Submit-buttonit:
- Save; tallettaa käsiteltävän esineen tiedot. Palauttaa käyttäjälle saman muokkaussivun.
- Delete; poistaa käsiteltävän esineen. Palauttaa käyttäjälle muokkaussivun, jossa ei käsiteltävää esinettä.
- New; luo uuden paikan. Palauttaa käyttäjälle paikan muokkaussivun, jossa käsiteltävänä esineenä ko uusi esine.
- Open; aukaisee esineen . Palauttaa käyttäjälle esineen muokkaussivun.
Selectit:
- OpenID; Valitsee esineen mikä avataan.
Liitteenä esineen muokkaussivun ulkoasu.
item-scripti
Jaottelee ohjelmalle tulevat argumentit erilleen toisista.
Suorittaa authorisoinnin.
Tutkii mitä nappia ollaan painettu.
Kutsuu ko funktiota, joka suorittaa käyttäjän haluaman toimenpiteen käyttäen hyväkseen DataBaseManagement-modulia.
Lopuksi, joku kutsuttava funktio tai itse scripti palauttavat käyttäjälle uuden muokkausisvun.
Property-moduli
Yleistä
Property-moduli huolehtii kaikesta ominaisuuksien käsittelyyn liittyvästä. Ominaisuuksia voidaan luoda, poistaa, uudelleen nimetä ja lisäksi käyttäjä
voi listata pelin ominaisuudet. (tarkoittaa tietenkin ominaisuuksi joita pelaajala on pelissä) Ominaisuudella on neljä "ominaisuutta" :-),
sillä on; arvo, nimi , kuvatiedosto (optionaalinen) ja kuvaus.
Toteutus
Käyttäjälle lähetetään ominaisuuden muokkaussivu, jossa hän määrittelee ominaisuuden tiedot haluamallaan tavalla. Täytettyään haluamansa tiedot
hän kutsuu property-scriptiä, joka huolehtii käyttäjän haluamasta toimenpiteestä.
Ominaisuuden muokkaussivulla on:
Vakio yläosa. (Katso generate_pages-moduli)
Tieto mitä ominaisuutta ollaan muokkaamassa. (Käsiteltävä ominaisuus)
Mahdolliset virheilmoitukset.
Piilotettuina tiedot:
- UserID; käyttäjän tunniste.
- RoundNumber; authorisointi numero.
- AdventureID; seikakailun tunniste
- Memo; Tulevaisuutta varten
Input-kentät:
- Name; määrittelee ominaisuuden nimen.
- Description; sisältää ominaisuuden kuvauksen.
- DefaultValue; sisältää ominaisuuden oletusarvon.
- PictureFile; määrittelee mahdollisen kuvatiedoston nimen, joka kuvaa ominaisuutta.
Submit-buttonit:
- Save; tallettaa käsiteltävän ominaisuuden tiedot. Palauttaa käyttäjälle saman muokkaussivun.
- Delete; poistaa käsiteltävän ominaisuuden. Palauttaa käyttäjälle muokkaussivun, jossa ei käsiteltävää ominaisuutta.
- New; luo uuden ominaisuuden. Palauttaa käyttäjälle ominaisuuden muokkaussivun, jossa käsiteltävänä ominaisuutena ko uusi ominaisuus.
- Open; aukaisee ominaisuuden.
Selectit:
- OpenID; Valitsee ominaisuuden mikä avataan.
Liitteenä ominaisuuden muokkaussivun ulkoasu.
property-scripti
Jaottelee ohjelmalle tulevat argumentit erilleen toisista.
Suorittaa authorisoinnin.
Tutkii mitä nappia ollaan painettu.
Kutsuu ko funktiota, joka suorittaa käyttäjän haluaman toimenpiteen käyttäen hyväkseen DataBaseManagement-modulia.
Lopuksi, joku kutsuttava funktio tai itse scripti palauttavat käyttäjälle uuden muokkausisvun.
Picture-moduli
Yleistä
Picture-moduli huolehtii kaikesta kuviatiedostojen käsittelyyn liittyvästä. Kuvatiedostoja voidaan kopioida toisesta WWW-palvelijasta,
uudelleen nimetä ja poistaa. Pelin kitjoittaja voi käyttää kuvia ominaisuuksien ja esineiden kuvaajana sekä sijoittaa kuvia
paikan HTML-sivulle. (LocationData).
Toteutus
Käyttäjälle lähetetään kuvien muokkaussivu, jossa hän valitsee toiminnon jonka haluaa suorittaa. Painettuaan haluamaansa
submit-nappulaa kutsutaan picture-scriptiä, joka huolehtii käyttäjän haluamasta toimenpiteestä.
Kuvan muokkaussivulla on:
Liitteenä ominaisuuden muokkaussivun ulkoasu.
picture-scripti
Jaottelee ohjelmalle tulevat argumentit erilleen toisista.
Suorittaa ykkös- ja kakkostason authorisoinnin.
Tutkii mitä nappia ollaan painettu.
Kutsuu ko funktiota, joka suorittaa käyttäjän haluaman toimenpiteen.
Lopuksi, joku kutsuttava funktio tai itse scripti palauttavat käyttäjälle uuden muokkausisvun.
Actions-moduli
Yleistä
Action moduli huolehtii nimensä mukaisesti tapahtumien muokkauksesta.
Kuytsuttaessa ko modulia ilman ActionID:tä palautetaan käytäjälle sivu,
jolta hänen pitää ensin valita minkä paikan tapahtumia hän haluaa
muokata. Valittuaan haluamansa paikan käyttäjä voi joko luoda
uusia tapahtumia tai vaihtoehtoisesti avata jo olemassa olevan
tapahtuman muokkausta varten.
Kun pelaajalla on tapahtuma muokattavanaan hänellä on käytössään seuraavat
mahdollisuudet:
Hän voi tallettaa ko tapahtuman tiedot
Hän voi deletoida ko tapahtuman
Hän voi liittää tapahtumaan ehtoja
Hän voi poistaa tapahtumasta ehtoja.
Hän voi liittää tapahtumaan teon osia
Hän voi poistaa tapahtumasta teon osia.
Hän voi linkittää tapahtumaan esteen.
Hän voi poistaa esteen taphtumalta
Toteutus
Sivulla on piilotettuina objekteina seuuraavat tiedot:
- UserID; käyttäjän tunniste.
- RoundNumber; authorisointi numero.
- AdventureID; seikakailun tunniste
- Memo; Tulevaisuutta varten
- ActionID; ko actionin ID.
Seuraavat submit-buttonit:
- Save; Tallettaa ko actionin tiedot
- Delete; Poistaa ko actionin tiedot
- Add_item_logic; Lisää itemeihin liityvän ehdon.
- Add_IL_logic; Lisää itemeihin ja paikkoihin liityvän ehdon.
- Add_property_logic; Lisää propertyihin liityvän ehdon.
- delete_cond; Poistaa teon ehdon.
- Add_part; Lisää teon osan
- delete_part; Poistaa teon osan
- link_obstacle; Kutsuu link_obbstacle scriptiä.
- New; Luo uuden tapahtuman.
- Open; Aukaisee tapahtuman muokkausta varten.
Lisäksi sivulla on lukuisa joukko SELECT-formeja joita käytetään teon
ehtojen ja teon osien määrittelyyn.
Liitteenä tapahtuman muokkausivun ulkoasu
top_buttons-scripti
Top_buttons on scripti jota kutsutaan painettaessa writer interfacen yläosassa
olevia buttoneita. Scripti palauttaa käyttäjälle ko buttonin määritelemän
editoimissivun.
Buttonit jotka tunnistetaan ovat:
BUTTON_adventures
BUTTON_locations
BUTTON_actions
BUTTON_items
BUTTON_properties
BUTTON_obstacles
BUTTON_main
Lisäksi scipt olettaa löytävänsä seuraavat hidden objektit:
UserID
RoundNumber
AdventureID
Memo
ja jokin buttoneista
olink_done-script
Olink_done on scripti jota kutsutaan link_obsctacle modulista käsin.
Script liittää inputtina saamansa obstaclen tiedot ko actioniin ja luo
actionin editoimis sivun.
Script olettaa löytävänsä seuraavat inputit.
UserID
RoundNumber
AdventureID
Memo
+ obstaclen tiedot:
ObstacleClass
ObstacleName
ObstacleInstance
ObstacleOptions