Meeskond "hetkel nimetu": Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
(Replaced content with '{{db-g7}}')
 
Line 1: Line 1:
=Mängu üldine kirjeldus=
{{db-g7}}
 
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ä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===
 
{| 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)
|}
 
 
===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)
|}
 
 
===Vähetähtsad 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 konsool
| Valikuline - konsooli loomine mängu.
| keskpärane/raske
|
| 17.10 (pühapäev)
|-
! scope="row" | 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 [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/
 
==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 [http://redbulb.codeplex.com/ RedBulb] teksti konsooli komponendilt (sellel projektil paistab olevat ka mingisugune meedia konsool, ent see vist ei puutu siia).
 
Lingid.
* http://redbulb.codeplex.com/
 
==Skriptitavus==
 
Skriptimise võimaluse lisamine mängule. Selle jaoks võiks mängule lisada mõne skriptimootori.
 
Mõned lingid C# skriptimootoritele.
* http://ksharp.codeplex.com/
* http://blitscript.codeplex.com/
 
==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.
* http://www.blender.org/
 
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
 
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/.
* 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.

Latest revision as of 21:25, 8 June 2011