Meeskond "hetkel nimetu": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Lkermas (talk | contribs)
No edit summary
Lkermas (talk | contribs)
No edit summary
Line 1: Line 1:
[[Category: Programmeerimine CSharp keeles]]
=Mängu üldine kirjeldus=
=Mängu üldine kirjeldus=



Revision as of 14:04, 16 December 2010

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.

Axiom'i materjalid.

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.

Sisendi süsteemi loomisel võib olla abiks ka järgnevate avatud koodiga projektide lähtekood.

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.

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.

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.

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.


Ü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