Meeskond "hetkel nimetu"
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 (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 (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 (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äike. Lisaks, need kes end progemises veidi kindlamalt tunnevad, võiks muidugi valida raskemaid töid. Tööd ise on täpsemalt kirjeldatud all pool.
Üldiselt ehitatakse kogu mäng ühe keskse komponendi ümber. Seepärast ei ole suurt probleemi, kui mõni valikuline töö või komponent 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). See peaks võimaldama arendada eraldiseisvaid komponente ilma, et neid pidevalt omavahel või siis üldise projektiga kooskõlastama peaks.
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
Komponendi/töö nimetus | Olulisus ja lühikirjeldus | Oletatav keerukus | Kes mida teeb/teha tahab | Tähtaeg orienteeruvalt |
---|---|---|---|---|
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) |
Sisend süsteeemi loomine | Oluline - sisend klaviatuurilt ja hiirelt. | lihtne | 09.10 (laupäev) | |
Xbox'i puldi sisend | Nõutud ülesandes - sisend puldilt. | lihtne/keskpärane | 11.10 (esmaspäev) | |
Võrgus andmete vahetamise komponent | Oluline - vajalik andmete saatmiseks üle võrgu. | keskpärane/raske | 14.10 (neljapäev) | |
Punktiarvestus | Nõutud ülesandes - mängijate tapmised/surmad. | lihtne/keskpärane | 16.10 (laupäev) | |
Mudelite loomine | Vajalik - tanki 3D mudelid. | keskpärane | 16.10 (laupäev) | |
Heli komponent | Valikuline - audio komponent. | lihtne/keskpärane | 16.10 (laupäev) | |
Võrgutoe integreerimine projekti | Oluline - mängu klient/server kujule viimine. | raske | Lauri Kermas | 17.10 (pühapäev) |
Täiendavad komponendid/tööd
Komponendi/töö nimetus | Olulisus ja lühikirjeldus | Oletatav keerukus | Kes mida teeb/teha tahab | Tähtaeg orienteeruvalt |
---|---|---|---|---|
Mängusisene menüü | Valikuline - lihtsa mängusisese menüü loomine. | keskpärane | 17.10 (pühapäev) | |
Füüsika lisamine | Valikuline - lihtne 3D füüsika. | keskpärane/raske | 17.10 (pühapäev) | |
Graafika efektid | Valikuline - täiendav silmailu (nagu näiteks suitsu efektid). | keskpärane/raske | 18.10 (esmaspäev) |
Vähetähtsad komponendid/tööd
Komponendi/töö nimetus | Olulisus ja lühikirjeldus | Oletatav keerukus | Kes mida teeb/teha tahab | Tähtaeg orienteeruvalt |
---|---|---|---|---|
Mängusisene konsool | Valikuline - konsooli loomine mängu. | keskpärane/raske | 17.10 (pühapäev) | |
Skriptimis võimaluse lisamine | Valikuline - Skriptimootori lisamine. | keskpärane/raske | 17.10 (pühapä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/.
Sisendi 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 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.
Füüsika komponent
Antud komponent peaks lisama füüsika reeglitele vastava käitumise mängu objektidele. Kasutada võiks ehk JigLibX või 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.
Mängusisene menüü
Axiom mootoril puuduvad sisse ehitatud võimalused mängusisese menüü loomiseks. Siiski on sellel eesmärgil kasutatavad Axiom'i overlay'd. Väga keerulisi asju nendega tõenäoliselt teha ei saa, ent antud projekti jaoks peaks nendest piisama.
Mõned materjalid overlay'de kohta.
- OGRE Overlay lühikirjeldus: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=-Overlay.
- OGRE Manual - Overlays: http://www.ogre3d.org/docs/manual/manual_12.html#SEC15.
- Axiom'i näiterakendus: http://axiom3d.net/wiki/index.php/ExampleApplication.cs.
Mängusisene konsool
Teksti konsool mängusiseste käskude andmiseks. Siin võibolla saab malli võtta RedBulb teksti konsooli komponendilt (sellel projektil paistab olevat ka mingisugune meedia konsool, ent see vist ei puutu siia).
Lingid.
Skriptitavus
Skriptimise võimaluse lisamine mängule. Selle jaoks võiks mängule lisada mõne skriptimootori.
Mõned lingid C# skriptimootoritele.
3D mudelite loomine
Peamiselt on vaja luua vaid tanki mudel. Milline see välja peaks nägema, on juba tegija enda otsustada.
Mudelite loomiseks saaks kasutada programmi Blender.
Mudelite tegemisel ja Axiom'i (OGRE) jaoks konverteerimisel on ehk abiks.
- http://www.ogre3d.org/tikiwiki/DCC+Tutorials
- http://www.ogre3d.org/tikiwiki/DCC+Articles
- http://www.ogre3d.org/tikiwiki/DCC+Resources
Üldiselt kasulikud lingid XNA ja antud projekti jaoks
XNA Creators Club Online
XNAWiki
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/.
- Axiom'i näiterakendus: http://axiom3d.net/wiki/index.php/ExampleApplication.cs.
- 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.