|
|
(5 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| [[Category: Programmeerimine CSharp keeles]]
| | {{db-g7}} |
| | |
| =Mängu üldine kirjeldus=
| |
| | |
| Mängu graafiline pool peaks põhinema Axiom graafika mootoril (http://axiom.codeplex.com/), sisend ning heli (ja mõned asjad ehk veel) XNA komponentidel. Võimalik on täiendavate võrgu ja füüsika komponentide lisamine.
| |
| | |
| | |
| =Tiimiga liitumine=
| |
| | |
| Tiimiga liitumiseks pole vaja teha muud, kui lisada oma nimi liikmete loetellu (kui seal veel vabu kohti on), ja lisaks saata ka meil oma kontakt andmetega (vähemalt meili aadress) IT Kolledži meilile "lkermas" (saadetud andmed edastatakse hiljem ka teistele tiimi liikmetele, kuhugi veebi neid välja ei panda).
| |
| | |
| Projektiga seonduvate küsimuste ja probleemide korral võib samuti kirjutada IT Kolledži meilile "lkermas" (üldiselt üritan hiljemalt paari päeva jooksul vastata).
| |
| | |
| Lisaks võib end kohe kirja panna ka all pool toodud projekti alam töödele, mida teha soovitakse.
| |
| | |
| ==Tiimi nime valik==
| |
| | |
| Ideid?
| |
| | |
| ==Axiom'i ülesse seadmine==
| |
| | |
| Järgnevalt on toodud lühike juhend, kuidas Axiom Visual Studio 2010 all käima saada. Vastav materjal on saadaval ka Axiom'i enda lehel ([http://axiom3d.net/wiki/index.php/Basic_Tutorial_0_(Setting_up_your_application,_Windows) Setting up your application]), ent on siiski paar aspekti, mida siin tasuks mainida.
| |
| | |
| '''Antud meetod töötab ja on järgi proovitud ka klassis 317.'''
| |
| | |
| Kui pole plaanis Axiom'i lähtekoodist kompileerida, siis võib selle alla laadida projekti lehelt (http://axiom.codeplex.com/) Downloads sektsioonist (fail nimega '''Axiom-0.8.0.0-B2'''). Lisaks on Axiom'i kasutamiseks vajalik, et arvutis oleks installitud '''SlimDX''' (SDK versioon) ja/või '''XNA'''.
| |
| | |
| Seejärel tuleks Visual Studio's luua uus C# Console Application projekt. Loodud projekti kausta luuakse kaust '''PROJECT\PROJECT\bin''' (PROJECT tähistab projektile antud nime). Sellesse kausta tuleb kopeerida meedia kaust Axiom'i pakist asukohaga '''AXIOM\samples\media''' (AXIOM tähistab Axiom'i kausta nime). Lisaks kopeerida kausta '''PROJECT\PROJECT\bin\Debug''' kõik DLL ja XML failid kaustast '''AXIOM\samples\dotnet'''.
| |
| | |
| Visual Studio's tuleb siis Solution Explorer'is teha parem klõps projekti puus '''References''' valikul ning valida '''Add Reference''' ja avanevas aknas liikuda '''Browse''' tab'ile. Seejärel liikuda kausta '''PROJECT\PROJECT\bin\Debug''' ning kasutades Shift ja Ctrl klahve valida kõik DLL failid, välja arvatud '''cg.dll''', '''DevIL.dll''', '''ILU.dll'''.
| |
| | |
| Kui see on tehtud, siis lisada projekti '''Main''' meetodisse Axiom'i tutorial'is ([http://axiom3d.net/wiki/index.php/Basic_Tutorial_0_(Setting_up_your_application,_Windows) Setting up your application]) lehe alumises osas olev kood. Seejuures tuleks kopeeritud koodis kontrollida, et koodi teisel real oleks seatud õige renderdus süsteem. Vastavalt kas siis
| |
| | |
| root.RenderSystem = root.RenderSystems["OpenGL"];
| |
| | |
| või hoopis
| |
| | |
| root.RenderSystem = root.RenderSystems["DirectX9"];
| |
| | |
| kuna Axiom DirectX10't veel ei toeta (seega Windows 7 ja Vista kasutajad peaks valima OpenGL variandi).
| |
| | |
| Lõpuks tuleks '''Main''' meetodiga faili algusesse seada veel järgmised '''using''' laused (need using laused, mis seal algselt on, võib ära kustutada).
| |
| | |
| using System;
| |
| using Axiom.Core;
| |
| using Axiom.Graphics;
| |
| using Axiom.Demos.Configuration;
| |
| using Axiom.Math;
| |
| | |
| Enne programmi käivitamist tuleks kontrollida, et see kompileeritakse '''x86''' arhitektuurile, mitte aga '''x64''' arhitektuuri jaoks (kuna Axiom'i allalaetavad failid on x86 arhitektuuriga). Arhitektuuri valik on Visual Studio üleval ribal käivitus noole ja Debug valiku kõrval.
| |
| | |
| Kui kõik on valmis saab test koodi käivitada. Ekraanile peaks tekkima pilt. Pildi akna sulgemiseks sulgeda konsooli aken.
| |
| | |
| Juhul, kui aga pilti ei teki, tuleks esmalt kontrollida, et SlimDX (SDK versioon) ja/või XNA oleks installitud. Samuti ei tohiks projektini viivate kaustade nimedes olla tühikuid. Kui see ei aita, võib proovida uuendada oma video kaarti draivereid.
| |
| | |
| Kui siiski ei õnnestu pilti ekraanile saada, siis võib pöörduda Axiom'i Tutorial'i lõpus ([http://axiom3d.net/wiki/index.php/Basic_Tutorial_0_(Setting_up_your_application,_Windows) Setting up your application]) toodud foorumi lingile, ning seal arendajatelt abi küsida.
| |
| | |
| ==Mängu komponentide/tööde ülevaade==
| |
| | |
| Siin siis toodud algne ülevaade asjadest, mida mängu juures teha tuleks. Lisaks on igale alam ülesandele üritatud anda ka umbkaudne keerukuse hinnang. Kui on soovi projekti juures mõne loetelust välja jäänud tööga tegeleda, siis võib selle siia lisada.
| |
| | |
| Tabelisse võiks kirja panna, kes millegagi tegeleda soovib. Sama asjaga saaks tegeleda ka mitu inimest, kui see pole just väga väikse. Lisaks, need kes end progemises veidi kindlamalt tunnevad, võiks muidugi valida raskemaid töid.
| |
| | |
| Üldiselt ehitatakse kogu mäng ühe keskse komponendi ümber. Seepärast ei ole suurt probleemi, kui mõni valikuline töö tegemata jääb.
| |
| | |
| Tööd ise jagunevadki sisuliselt 3 klassi:
| |
| * '''oluline''' - neid komponente on kindlasti vaja, et asi töötaks;
| |
| * '''nõutud ülesandes''' - ära toodud ülesande kirjelduses;
| |
| * '''vajalik''' - sellised tööd tuleks ära teha, ehkki mängu tööd need suurt ei mõjuta;
| |
| * '''valikuline''' - neid asju pole tingimata vaja, aga need annaks midagi juurde.
| |
| | |
| Baas komponent on see, mis teisi käivitab ja haldab. Mängu üld tsüklit võiks kujutada umbes järgneval viisil.
| |
| | |
| Baas komponendi initsialiseerimine
| |
| Baas komponendi tsükli käivitamine
| |
| Sisendi komponendilt andmete võtmine
| |
| Võrgu komponendilt andmete võtmine
| |
| Mängu objektide liigutamine
| |
| Füüsika vastava komponendi poolt
| |
| Muu mängu loogika ja ülejäänud komponendid
| |
| Graafika komponendi poolt pildi joonistamine
| |
| Baas komponendi kustutamine
| |
| TÖÖ LÕPP
| |
| | |
| Iseenesest on enamik töid projektis tehtavad ülejäänud mängust eraldi, kuna nende tulemuseks luuakse võrdlemisi iseseisvad komponendid (näiteks objektide üle võrgu saatmise komponent).
| |
| | |
| Kui vaja, siis Wiki's tabelitega töötamisel võib abiks olla järgnev link: http://en.wikipedia.org/wiki/Help:Table.
| |
| | |
| | |
| ===Mängu olulisemad komponendid/tööd===
| |
| | |
| {| border="1" | |
| ! scope="col" | Komponendi/töö nimetus
| |
| ! scope="col" | Olulisus ja lühikirjeldus
| |
| ! scope="col" | Oletatav keerukus
| |
| ! scope="col" | Kes mida teeb/teha tahab
| |
| ! scope="col" | Tähtaeg orienteeruvalt
| |
| |-
| |
| ! scope="row" | Baas osa progemine
| |
| | Oluline - alus edasisele tööle.
| |
| | keskpärane/raske
| |
| | Lauri Kermas - hetkel tegelen rakenduse üldise põhja loomisega (loodan selle valmis saada hiljemalt 7. oktoobriks).
| |
| | 07.10 (neljapäev)
| |
| |-
| |
| ! scope="row" | Sisend süsteeemi loomine
| |
| | Oluline - sisend klaviatuurilt ja hiirelt.
| |
| | lihtne
| |
| |
| |
| | 09.10 (laupäev)
| |
| |-
| |
| ! scope="row" | Xbox'i puldi sisend
| |
| | Nõutud ülesandes - sisend puldilt.
| |
| | lihtne/keskpärane
| |
| |
| |
| | 11.10 (esmaspäev)
| |
| |-
| |
| ! scope="row" | Võrgus andmete vahetamise komponent
| |
| | Oluline - vajalik andmete saatmiseks üle võrgu.
| |
| | keskpärane/raske
| |
| |
| |
| | 14.10 (neljapäev)
| |
| |-
| |
| ! scope="row" | Punktiarvestus
| |
| | Nõutud ülesandes - mängijate tapmised/surmad.
| |
| | lihtne/keskpärane
| |
| |
| |
| | 16.10 (laupäev)
| |
| |-
| |
| ! scope="row" | Mudelite loomine
| |
| | Vajalik - tanki 3D mudelid.
| |
| | keskpärane
| |
| |
| |
| | 16.10 (laupäev)
| |
| |-
| |
| ! scope="row" | Heli komponent
| |
| | Valikuline - audio komponent.
| |
| | lihtne/keskpärane
| |
| |
| |
| | 16.10 (laupäev)
| |
| |-
| |
| ! scope="row" | Võrgutoe integreerimine projekti
| |
| | Oluline - mängu klient/server kujule viimine.
| |
| | raske
| |
| | Lauri Kermas
| |
| | 17.10 (pühapäev)
| |
| |}
| |
| | |
| | |
| ===Mängu täiendavad komponendid/tööd===
| |
| | |
| {| border="1"
| |
| ! scope="col" | Komponendi/töö nimetus
| |
| ! scope="col" | Olulisus ja lühikirjeldus
| |
| ! scope="col" | Oletatav keerukus
| |
| ! scope="col" | Kes mida teeb/teha tahab
| |
| ! scope="col" | Tähtaeg orienteeruvalt
| |
| |-
| |
| ! scope="row" | Mängusisene menüü
| |
| | Valikuline - lihtsa mängusisese menüü loomine.
| |
| | keskpärane
| |
| |
| |
| | 17.10 (pühapäev)
| |
| |-
| |
| ! scope="row" | Füüsika lisamine
| |
| | Valikuline - lihtne 3D füüsika.
| |
| | keskpärane/raske
| |
| |
| |
| | 17.10 (pühapäev)
| |
| |-
| |
| ! scope="row" | Graafika efektid
| |
| | Valikuline - täiendav silmailu (nagu näiteks suitsu efektid).
| |
| | keskpärane/raske
| |
| |
| |
| | 18.10 (esmaspäev)
| |
| |}
| |
| | |
| | |
| =Komponentide ja tööde pikemad kirjeldused=
| |
| | |
| ==Baas tsükkel ja haldus==
| |
| | |
| Mängu keskne komponent on vajalik mängu üldiseks haldamiseks. See kasutab .NET ja Axiom'i teeke mängu põhitsükli ülesse seadmiseks ja haldamiseks.
| |
| | |
| See komponent kuulub baas osa juurde.
| |
| | |
| ==Keskkonna halduse komponent==
| |
| | |
| Mängu "maailma" hoitakse ja hallatakse Axiom'i komponentide abil.
| |
| | |
| See komponent kuulub baas osa juurde.
| |
| | |
| ==Graafika komponent==
| |
| | |
| Graafika komponent luuakse samuti Axiom'i abil.
| |
| | |
| See komponent kuulub baas osa juurde.
| |
| | |
| ==Täiendavad graafika efektid==
| |
| | |
| Antud töö puhul on tegemist graafiliste efektide (nagu suits, sädemed jne.) lisamisega mängule. Kuna mängu graafika põhineb Axiom graafika mootoril, siis on järgnevalt toodud mõningad seda puudutavad materjalid.
| |
| | |
| Axiom põhineb oluliselt OGRE 3D graafika mootoril. Seepärast on ehk parem alustada järgnevatelt lehtedelt. Lisaks eksisteerib ka OGRE .NET wrapper MOGRE, mis sarnaneb veidi rohkem Axiom'ile - need materjalid peaks seega antud projekti puhul veidi asjakohasemad olema.
| |
| * OGRE põhileht: http://www.ogre3d.org/.
| |
| * MOGRE tutorial'id: http://www.ogre3d.org/tikiwiki/Mogre+Tutorials.
| |
| * OGRE tutorial'id: http://www.ogre3d.org/tikiwiki/Tutorials.
| |
| * OGRE manual: http://www.ogre3d.org/docs/manual/.
| |
| * OGRE code snippets: http://www.ogre3d.org/tikiwiki/Snippets.
| |
| | |
| Axiom'i materjalid.
| |
| * Axiom'i põhi leht: http://axiom3d.net.
| |
| * SourceForge leht, kus on ka Axiom'i lähtekood: http://sourceforge.net/projects/axiomengine/.
| |
| * Axiom'i foorum: http://www.axiom3d.net/forums/.
| |
| | |
| ==Sisend komponendid==
| |
| | |
| Sisendi võib üldiselt jagada kaheks: arvuti sisend (klaviatuur ja hiir); Xbox'i sisend (pult). Nende sisendi süsteemide toe võib realiseerida erinevatel aegadel, ent oluline on arvuti sisend süsteem üsna kiirelt valmis saada. Sisendi realiseerimisel saab hästi kasutada XNA teeke.
| |
| | |
| Abiks võivad olla järgnevad materjalid.
| |
| * XNA teemaline raamat (vt. sisendi peatükk): https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119.
| |
| * Responding to User Input: http://msdn.microsoft.com/en-us/library/bb203899.aspx.
| |
| | |
| Sisendi süsteemi loomisel võib olla abiks ka järgnevate avatud koodiga projektide lähtekood.
| |
| * http://oopsframework.codeplex.com/
| |
| * http://ig.codeplex.com/
| |
| * http://inputhandlers.codeplex.com/
| |
| * http://xcui.codeplex.com/
| |
| * http://ixnae.codeplex.com/
| |
| * http://gp2kb.codeplex.com/
| |
| * http://xnaextend.codeplex.com/
| |
| * http://autumn.codeplex.com/
| |
| * http://dwcontrollers.codeplex.com/
| |
| * http://saga.codeplex.com/
| |
| | |
| ==Võrgutoe komponent==
| |
| | |
| Komponendi eesmärgiks on saata andmeid (soovitavalt objektide kujul) üle võrgu. Eeskujuks võiks siin ehk võtta [http://goblinxna.codeplex.com/ Goblin XNA] võrgu komponendi (või selle komponendi koguni antud projekti üle tuua), või võrgu toe hoopis ise kirjutada.
| |
| | |
| Näitena sobiks ehk järgnevad avatud koodi projektid.
| |
| * http://goblinxna.codeplex.com/
| |
| * http://kaleta.codeplex.com/
| |
| | |
| ==Füüsika komponent==
| |
| | |
| Antud komponent peaks lisama füüsika reeglitele vastava käitumise mängu objektidele. Kasutada võiks ehk [http://jiglibx.codeplex.com/ JigLibX] või [http://oopsframework.codeplex.com/ Oops Framework] teeki, ent kui on soovi, saab antud osa ka ise progeda.
| |
| | |
| Füüsika teegid, või projektid, mis sisaldavad ise loodud füüsika komponenti.
| |
| http://jiglibx.codeplex.com/
| |
| http://oopsframework.codeplex.com/
| |
| http://ig.codeplex.com/
| |
| http://oxgameengine.codeplex.com/
| |
| | |
| ==Heli komponent==
| |
| | |
| See komponent peaks võimaldama mängida heli ühekordselt või tsükliliselt. Lisaks peaks saama muuta heli tugevust. Heli komponent peaks olema lihtsalt realiseeritav XNA teekide abil.
| |
| | |
| Abiks võivad olla järgnevad raamatud/lehed.
| |
| * XNA teemaline raamat (vt. heli peatükk): https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119.
| |
| * Creating and Playing Sounds: http://msdn.microsoft.com/en-us/library/bb195038.aspx.
| |
| | |
| Näiteks võib võtta järgmised heli kasutavad projektid.
| |
| * http://oopsframework.codeplex.com/
| |
| * http://ixnae.codeplex.com/
| |
| * http://autumn.codeplex.com/
| |
| | |
| | |
| =Üldiselt kasulikud lingid XNA ja antud projekti jaoks=
| |
| | |
| XNA Creators Club Online
| |
| | |
| http://creators.xna.com/
| |
| | |
| XNAWiki
| |
| | |
| http://www.xnawiki.com/
| |
| | |
| XNA Game Studio (MSDN)
| |
| | |
| http://msdn.microsoft.com/en-us/library/aa468128.aspx
| |
| | |
| Introduction to Programming Through Game Development Using Microsoft XNA Game Studio
| |
| | |
| https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119
| |
| | |
| Introduction to Programming Through Game Development Using Microsoft XNA Game Studio - Text Sample Code
| |
| | |
| https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8178
| |
| | |
| ==Axiom==
| |
| | |
| * Axiom'i põhi leht: http://axiom3d.net.
| |
| * SourceForge leht, kus on ka Axiom'i lähtekood: http://sourceforge.net/projects/axiomengine/.
| |
| * Axiom'i foorum: http://www.axiom3d.net/forums/.
| |
| * OGRE põhileht: http://www.ogre3d.org/.
| |
| * MOGRE tutorial'id: http://www.ogre3d.org/tikiwiki/Mogre+Tutorials.
| |
| * OGRE tutorial'id: http://www.ogre3d.org/tikiwiki/Tutorials.
| |
| * OGRE manual: http://www.ogre3d.org/docs/manual/.
| |
| * OGRE code snippets: http://www.ogre3d.org/tikiwiki/Snippets.
| |