Meeskond "Ready or Not, Here it Comes!": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Kstolin (talk | contribs)
No edit summary
Itelga (talk | contribs)
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[File:Heroes5 data.png|thumb|600px]]
== Link Lähtekoodile ==
 
Meie ootame arvustusi inimestelt kes veidi tunnevad XML failiformaati või on mingeid arvutimänge muutnud (modding).
 
Ülesse on pandud pakitud kujul (.rar) vaid mängu editor ja mõned pildid, mitte mäng ise.
 
[http://enos.itcollege.ee/~itelga/C_sharp/WPF%20Editor%20113.rar link lähtekoodile]
 
== Tagamaad ==
 
Kui mäng on korduma hakanud, siis tahavad aktiivsemad kasutajad tihti kätt proovida mängu oma soovidele vastavalt muutes.
Kui mäng on korduma hakanud, siis tahavad aktiivsemad kasutajad tihti kätt proovida mängu oma soovidele vastavalt muutes.
Selleks on tavaliselt mängu tegijad loonud mingid võimalused kas editoride või mingite inimkeeli loetavate ja kirjutatavate failide näol.
Selleks on tavaliselt mängu tegijad loonud mingid võimalused kas editoride või mingite inimkeeli loetavate ja kirjutatavate failide näol.


Tooks siin näiteks mängu "Heroes of Might and Magic V". Heroes 5 on läinud seda teed et ta enamiku oma andmeid on salvestanud XML-formaadis failidesse, mida on tuhandeid ja mis kokkupakitult võtavad ruumi 1.4 GB.
Tooks siin näiteks mängu "Heroes of Might and Magic V". Heroes 5 on läinud seda teed et ta enamiku oma andmeid on salvestanud XML-formaadis failidesse, mida on tuhandeid ja mis kokkupakitult võtavad ruumi 1.4 GB.
[[File:Heroes5 data.png|600px|border]]
   
   
Asi on antud "as is" ingl.k, ilma dokumentatsioonita, et väljade nimede järgi peavad inimesed ise aru saama millega on tegu, mis tähendab ka väga palju sihitut sobramist.
Asi on antud "as is" ingl.k, ilma dokumentatsioonita, et väljade nimede järgi peavad inimesed ise aru saama millega on tegu, mis tähendab ka väga palju sihitut sobramist.


Teine variant on teha selline editor, nagu kasutas mäng Age of Wonders II (Shadow Magic).
Teine variant on teha selline editor, nagu kasutas mäng Age of Wonders II (Shadow Magic).
[[File:Shadow_magic_editor.png|thumb|600px]]
 
[[File:Shadow_magic_editor.png|600px]]


Tavaliselt on sellisel editoril väljad aga hard-coditud, mis tähendab seda et kui sa lisad midagi mängu mootorisse, pead sa ümber tegema ka editori. Tihti jääb aga editor lihtsalt uuendamata, mis tähendab et kasutaja ei pruugi pääseda kõikidele vajalikele väljadele üldse pärast ligigi.
Tavaliselt on sellisel editoril väljad aga hard-coditud, mis tähendab seda et kui sa lisad midagi mängu mootorisse, pead sa ümber tegema ka editori. Tihti jääb aga editor lihtsalt uuendamata, mis tähendab et kasutaja ei pruugi pääseda kõikidele vajalikele väljadele üldse pärast ligigi.


Meie lähenemine oli teha mõlemat. Panna mängu data XML failidesse ja teha abiks veel editor, mis suudaks XML failidega automaatselt hakkama saada.


Võiks ju küsida, et kui asju saab muuta XML faili sisu muutes, et miks see editor siis üldse hea peaks olema? Minu vastus oleks "kiirus, mugavus ja ülevaade".  
Meie lähenemine oli teha mõlemat, panna mängu data XML failidesse ja teha abiks veel editor, mis suudaks XML failidega automaatselt hakkama saada.
 
Võiks ju küsida, et kui asju juba saab muuta XML faili sisu muutes, et miks seda editori üldse vaja peaks minema? Minu vastus oleks KIIRUS, MUGAVUS ja ÜLEVAATLIKUS.
 
=== Kiirus  ===
 
Editoris on nupud töö kiirendamise jaoks, nagu True, False väljade automaatne täitmine.
 
 
[[File:Mugavad truefalse nupud.png|600px]]


"Kiirus"
Editorile saad sa lisada nuppe, nagu True, False väljade automaatne täitmine. Mingite suurte elementide kustutamine on ka vaid üks


Mingite suurte elementide kustutamine on ka vaid üks
nupulevajutus.
nupulevajutus.
[[File:Elemendi kustutamis nupp.png|600px]]
Samuti elementide kopeerimine.
Samuti elementide kopeerimine.
[pilt]


"Mugavus"
 
=== Mugavus ===
Ma (Kristjan Stolin) olen modifitseerinud oma lemmikmänge ja ka oma projekte juba aastakümneid.  
Ma (Kristjan Stolin) olen modifitseerinud oma lemmikmänge ja ka oma projekte juba aastakümneid.  
Tihti on muutus mida sa tahad sisse viia suur töö.
Tihti on muutus mida sa tahad sisse viia suur töö.
Line 35: Line 61:
võrra juurde keerata. Ja jälle tööd kui palju.
võrra juurde keerata. Ja jälle tööd kui palju.


Et seda asja inimesele mugavaks teha, tegime oma editori sisse võimalusi kõiki välju korraga muuta, näiteks lisame Rangile 20% juurde.
Et seda asja inimesele mugavaks teha, tegime oma editori sisse võimalusi kõiki välju korraga muuta, näiteks lisame siin kõigele "Range" välja väärtustele 20% juurde.
 
[[File:Mass editing range.png|600px]]


[pilt]
Selle asemel et ükshaaval asju läbi käima hakata, selleks pole muud vaja teha kui kasutada välju kus meil on meil mõeldud kogu faili ulatuses asja muutmiseks.
Selle asemel et ükshaaval asju läbi käima hakata, selleks pole muud vaja teha kui kasutada välju kus meil on meil mõeldud kogu faili ulatuses asja muutmiseks.


[pilt]
Meie editor toetab moment üht tehet korraga, toetatud on nii jagamine, liitmine, lahutamine, korrutamine.
 
Näide 1:
 
Asendame real "Targets_Group" kollases tulbas väärtuse "=true" näiteks väärtusega "=false" ja kinnitamiseks vajutame S nuppu (Enter siin ei tööta).
 
Kõik "Targets_Group" väljad lähevad false-deks kõikides kohtades nagu "Magic Single Target Offense", "Melee Defence", "Summon Single"-  ühesõnaga igal pool.
 
Näide 2.
 
Asendame real "Damage_max" kollases tulbas (mis on tulp kui sa soovid kõikides kohtades seda muuta) väärtuse "=10" (või mis iganes number seal on) väärtusega "+5" (kustutame =10 sealt enne ära) ja vajutame S nuppu.
 
Kõikidele Damage_max endistele väärtustele liideti igal pool 5 juurde.


Meie editor toetab moment üht tehet korraga, toetatud on nii jagamine, liitmine, lahutamine, korrutamine.
Vea puhul kirjutatakse väljad lihtsalt üle sellega mis sa sisestasid.
Vea puhul kirjutatakse väljad lihtsalt üle sellega mis sa sisestasid.
Komakohtade jaoks kasuta koma, mitte punkti.
Komakohtade jaoks kasuta koma, mitte punkti.


"Ülevaade"
XML on tegelikult suht loetav aga editor annab siiski navigeerimisel eelise. Meie Editor leiab üles näiteks elemendi sisse peidetud Texture2D alamelemendid ja näitab neid võimalusel piltidena.


=== Ülevaatlikus ===
XML on tegelikult suht loetav aga editor annab siiski navigeerimisel eelise. Meie Editor leiab üles näiteks elemendi sisse peidetud Texture2D alamelemendid ja näitab neid võimalusel piltidena. Sa näed ka andmeid veidi inimsõbralikumas vormis.


Plaanis on teha XNA projektis tehtud mängule salvestamise funktsioon ja salvestatud failile toimetaja. Kasutame Windows Presentation Foundation vahendeid.  
XML faili sees olevate objektide puhul tekivad punakad nupud.


Mängu salvestamine toimub XML formaadis faili. Objektide XML formaati serialiseerimiseks kasutame XmlSerializer-it. Andmete kirjutamiseks faili kasutame StreamWriter-it.


XML toimetajas kasutame XML andmete failist mälusse laadimiseks, mälus töötlemiseks ja faili salvestamiseks klassi XElement.
Kasutasime Windows Presentation Foundation vahendeid. Mängu Objektide XML formaati serialiseerimiseks kasutame XmlSerializer-it. Andmete kirjutamiseks faili kasutame StreamWriter-it.
XML toimetajas kasutasime XML andmete failist mälusse laadimiseks, mälus töötlemiseks ja faili salvestamiseks klassi XElement. Kasutasime päringukeelt LINQ.


== Tööjaotus ==
== Tööjaotus ==
* Kristjan Stolin - idee & programmeerimine
* Kristjan Stolin - idee & programmeerimine & wiki
* Ilmar Telga - programmeerimine & disain & wiki
* Ilmar Telga - programmeerimine & disain & wiki
* Lauri Kermas - programmeerimine
* Lauri Kermas - programmeerimine, loogiline ülesehitus, juhendaja


== Logi ==
== Logi ==
=== 25. detsember ===
Õhtuks on uus versioon üleval arvustamiseks.
=== 22. detsember ===
Konsulteerisime üleeile Heiki Tähisega ja tema soovitas kasutada UserControl-i. Saime täna asja tööle nii nagu alguses plaanisime ehk nüüd on iga faili info eraldi Tab-idel.
=== 14. detsember ===
Esitlusel näitasime ühe Tab-i versiooni.
=== 11. detsember ===
=== 11. detsember ===
Proovisime DataTemplate-iga kuid see tundus liiga jäik ja ei õnnestunud asju dünaamiliseks teha
Proovisime DataTemplate-iga kuid see tundus liiga jäik ja ei õnnestunud asju dünaamiliseks teha
Line 77: Line 124:
Selgus, et objekti serialiseerija nõuab, et klassil oleks parameetrita konstruktor.
Selgus, et objekti serialiseerija nõuab, et klassil oleks parameetrita konstruktor.
Uurisime failikirjutajaid. Proovisime XmlWriter-it kuid see kirjutab failis teksti ühele reale. StreamWriter kirjutab XML elemendid faili eraldi ridadele ja liigendab need nii, et fail on ka inimesele loetav.
Uurisime failikirjutajaid. Proovisime XmlWriter-it kuid see kirjutab failis teksti ühele reale. StreamWriter kirjutab XML elemendid faili eraldi ridadele ja liigendab need nii, et fail on ka inimesele loetav.
[[Category: Programmeerimine CSharp keeles]]

Latest revision as of 16:47, 4 January 2011

Link Lähtekoodile

Meie ootame arvustusi inimestelt kes veidi tunnevad XML failiformaati või on mingeid arvutimänge muutnud (modding).

Ülesse on pandud pakitud kujul (.rar) vaid mängu editor ja mõned pildid, mitte mäng ise.

link lähtekoodile

Tagamaad

Kui mäng on korduma hakanud, siis tahavad aktiivsemad kasutajad tihti kätt proovida mängu oma soovidele vastavalt muutes. Selleks on tavaliselt mängu tegijad loonud mingid võimalused kas editoride või mingite inimkeeli loetavate ja kirjutatavate failide näol.

Tooks siin näiteks mängu "Heroes of Might and Magic V". Heroes 5 on läinud seda teed et ta enamiku oma andmeid on salvestanud XML-formaadis failidesse, mida on tuhandeid ja mis kokkupakitult võtavad ruumi 1.4 GB.

Asi on antud "as is" ingl.k, ilma dokumentatsioonita, et väljade nimede järgi peavad inimesed ise aru saama millega on tegu, mis tähendab ka väga palju sihitut sobramist.


Teine variant on teha selline editor, nagu kasutas mäng Age of Wonders II (Shadow Magic).

Tavaliselt on sellisel editoril väljad aga hard-coditud, mis tähendab seda et kui sa lisad midagi mängu mootorisse, pead sa ümber tegema ka editori. Tihti jääb aga editor lihtsalt uuendamata, mis tähendab et kasutaja ei pruugi pääseda kõikidele vajalikele väljadele üldse pärast ligigi.


Meie lähenemine oli teha mõlemat, panna mängu data XML failidesse ja teha abiks veel editor, mis suudaks XML failidega automaatselt hakkama saada.

Võiks ju küsida, et kui asju juba saab muuta XML faili sisu muutes, et miks seda editori üldse vaja peaks minema? Minu vastus oleks KIIRUS, MUGAVUS ja ÜLEVAATLIKUS.

Kiirus

Editoris on nupud töö kiirendamise jaoks, nagu True, False väljade automaatne täitmine.



Mingite suurte elementide kustutamine on ka vaid üks nupulevajutus.



Samuti elementide kopeerimine.


Mugavus

Ma (Kristjan Stolin) olen modifitseerinud oma lemmikmänge ja ka oma projekte juba aastakümneid. Tihti on muutus mida sa tahad sisse viia suur töö.

Näiteks tahad sa mängu tasakaalu huvides panna kõikidele mängu elukatele 20% võrra elupunkte juurde. Mida ma vaene inimene pean siis

tegema kui terve päeva kulutama sellele, et ma mingi ebamugava editoriga käin kõik need sajad elukad ükshaaval läbi ja arvutan peas kui palju elusid juurde lisada ja siis panen neile kõigile uue elude arvu. Ja voila! Oled rõõmus oma suure töö üle, kuid pärast paar päeva testimist selgub et sellest elude lisamisest oli ikkagi vähe ja vaja

kõigile elukatele veel elusid paari punkti võrra juurde keerata. Ja jälle tööd kui palju.

Et seda asja inimesele mugavaks teha, tegime oma editori sisse võimalusi kõiki välju korraga muuta, näiteks lisame siin kõigele "Range" välja väärtustele 20% juurde.

Selle asemel et ükshaaval asju läbi käima hakata, selleks pole muud vaja teha kui kasutada välju kus meil on meil mõeldud kogu faili ulatuses asja muutmiseks.

Meie editor toetab moment üht tehet korraga, toetatud on nii jagamine, liitmine, lahutamine, korrutamine.

Näide 1:

Asendame real "Targets_Group" kollases tulbas väärtuse "=true" näiteks väärtusega "=false" ja kinnitamiseks vajutame S nuppu (Enter siin ei tööta).

Kõik "Targets_Group" väljad lähevad false-deks kõikides kohtades nagu "Magic Single Target Offense", "Melee Defence", "Summon Single"- ühesõnaga igal pool.

Näide 2.

Asendame real "Damage_max" kollases tulbas (mis on tulp kui sa soovid kõikides kohtades seda muuta) väärtuse "=10" (või mis iganes number seal on) väärtusega "+5" (kustutame =10 sealt enne ära) ja vajutame S nuppu.

Kõikidele Damage_max endistele väärtustele liideti igal pool 5 juurde.

Vea puhul kirjutatakse väljad lihtsalt üle sellega mis sa sisestasid. Komakohtade jaoks kasuta koma, mitte punkti.


Ülevaatlikus

XML on tegelikult suht loetav aga editor annab siiski navigeerimisel eelise. Meie Editor leiab üles näiteks elemendi sisse peidetud Texture2D alamelemendid ja näitab neid võimalusel piltidena. Sa näed ka andmeid veidi inimsõbralikumas vormis.

XML faili sees olevate objektide puhul tekivad punakad nupud.


Kasutasime Windows Presentation Foundation vahendeid. Mängu Objektide XML formaati serialiseerimiseks kasutame XmlSerializer-it. Andmete kirjutamiseks faili kasutame StreamWriter-it. XML toimetajas kasutasime XML andmete failist mälusse laadimiseks, mälus töötlemiseks ja faili salvestamiseks klassi XElement. Kasutasime päringukeelt LINQ.

Tööjaotus

  • Kristjan Stolin - idee & programmeerimine & wiki
  • Ilmar Telga - programmeerimine & disain & wiki
  • Lauri Kermas - programmeerimine, loogiline ülesehitus, juhendaja

Logi

25. detsember

Õhtuks on uus versioon üleval arvustamiseks.

22. detsember

Konsulteerisime üleeile Heiki Tähisega ja tema soovitas kasutada UserControl-i. Saime täna asja tööle nii nagu alguses plaanisime ehk nüüd on iga faili info eraldi Tab-idel.

14. detsember

Esitlusel näitasime ühe Tab-i versiooni.

11. detsember

Proovisime DataTemplate-iga kuid see tundus liiga jäik ja ei õnnestunud asju dünaamiliseks teha

1. detsember

Proovisime andmete esitamist DataGrid-iga, kuid kuid LINQ päringutest saadud andmeid ei saanud muuta.

29. november

LINQ-ga harjutamine. Algus oli raske.

23. november

Esialgne XML toimetaja versioon.

16. november

Selgus, et objekti serialiseerija nõuab, et klassil oleks parameetrita konstruktor. Uurisime failikirjutajaid. Proovisime XmlWriter-it kuid see kirjutab failis teksti ühele reale. StreamWriter kirjutab XML elemendid faili eraldi ridadele ja liigendab need nii, et fail on ka inimesele loetav.