dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

ložu sistēma šaušanas spēlē - kā?
Goto page 1, 2, 3, 4, 5  Next
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 2:48 pm    Post subject: ložu sistēma šaušanas spēlē - kā?

man vajag jaunai spēlei ložu sistēmu..

uz gamemakera viss vienkārši - ar tām objektu instancēm...
bet c++ - nezinu..
varētu jau atvēlēt ložu masīvu un darboties kā ar point spraitu particle sistēmu, bet grūti to izveidot un saregulēt masīva lielumu...
var arī veidot tūlītējās sadursmes, bet tad vairs nebūs interesanti spēlēt, jo tad viss būs atkarīgs no pirkstu ātruma..

kā to sistēmu veido Lielās spēles? kā to veidot man?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 2:53 pm    Post subject:

Ko īsti tu nezini - kā zīmēt lodes? kā aprēķināt sadursmes? kā glabāt tās atmiņā?

Kur problēma ar masīvu izmēriem? Lieto std::vector un nebūs nekādu problēmu ar masīva izmēriem un tā aizņemtās atmiņas atbrīvošanu.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 2:59 pm    Post subject:

nezinu, kā glabāt atmiņā...

http://yy.lv/download.php?f=79604
tas mans darbs
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle


Last edited by snake5 on Sun Nov 11, 2007 3:05 pm; edited 1 time in total
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 3:05 pm    Post subject:

Nu es varu parādīt fragmentu koda kā es to iedomājos. Pēc tam modificē pēc saviem ieskatiem:
Code:
struct Vector
{
    float x,y,z;
};

struct Bullet
{
    Vector position;
    Vector velocity;
    Object* owner;  // kurš izšāvis šo lodi - atkarībā no spēles var arī nevajadzēt

// te pēc vajadzības saliec metodes:
    void Update();
    void Render();
};

typedef std::vector<Bullet*> Bullets;

{
    Bullets visas_lodes;

    Bullet* b = new Bullet();
    b->position = ...;
    b->velocity = ...;
    ...

    visas_lodes.push_back(b);
}


Ja Bullet struktūrai sāc likt metodes, tad pārtaisi to par klasi ar public/private daļām.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 3:09 pm    Post subject:

ok, paldies, tikai tad pēdējais jautājums:

kā tam std::vector'am pēc tam varēs visām lodēm pēc kārtas izpildīt funkcijas?

P.S. visu taisu tā, lai update un render ir vienā OnFrameMove funkcijā, vienkāršības pēc.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 3:30 pm    Post subject:

Code:
for (Bullets::const_iterator it = visas_lodes.begin(), itend = visas_lodes.end();
      it != itend;
      ++it)
{
    const Bullet* bullet = *it;

    // ...  te darbojies ar bullet
}

Ja nepieciešams modificēt tos Bullet*, kas ir vektorā, tad noņem abās divās vietās const nost.

Taču, ja ir vairāki šādi std::vector<X> ar dažādiem X, tad to augšējo for ciklu var itin ātri sākt apnikt rakstīt. Tamdēļ var uzrakstīt sekojošus makrosus:
Code:
#define EACH(Class, Container, Iterator) \
        (Class::iterator Iterator = (Container).begin(), \
                         IteratorEnd = (Container).end(); \
        Iterator != IteratorEnd; \
        ++Iterator)

#define EACH_CONST(Class, Container, Iterator) \
        (Class::const_iterator Iterator = (Container).begin(), \
                               IteratorEnd = (Container).end(); \
        Iterator != IteratorEnd; \
        ++Iterator)


Tagad iepriekšējais cikls izskatīsies šādi:
Code:
for EACH_CONST(Bullets, visas_lodes, it)
{
    const Bullet* bullet = *it;

    // ...  te darbojies ar bullet
}

Acīmredzami, ka ir mazāk ko rakstīt. Šie makrosi derēs arī ne tikai std::vector konteinerim, bet arī std::map, std::set, std::list un std::string konteineriem.
Tik šeit vienīgi ir jāuzmanās otrajā parametrā nedod kautkādu funkcijas rezultātu, tipa:
Code:
for EACH_CONST(Bullets, obj->getVisasLodes(), it)

Tad var sanākt pavisam slikti (lasi - programma nokrašos), ja tas getVisasLodes, kautko maina konteinerī. Tā vietā vajag funkcijas rezultātu piešķirt mainīgajam, kuru tad arī rakstīt tajā makrosa parametrā.

Ja gribas programmēt C++ pa nopietnam, tad jāskatās uz boost bibliotēku, kurā jau ir gatavs šāds for cikls pa konteineriem: http://boost.org/doc/html/foreach.html
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 3:56 pm    Post subject:

aha, nu ar to arī viss laikam ir uzzināts! paldies!

tagad tikai jāieliek iekš savas spēles :)

nu re, kas man sanāca Smile
PRESS HERE
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 11, 2007 7:34 pm    Post subject:

C# blajuj "USE ME!!!" xD

Par teemu : manupraat lodes nebuutu nemaz jaaziimee, ja nu vieniigi kaads particle effekts pie sadursmes un/vai lodes caulinja peec tam.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 7:44 pm    Post subject:

Tur ne tikai C# to bļauj. Bet arī Python un Java.

Quote:
manupraat lodes nebuutu nemaz jaaziimee

A ja spēlē paredzēts slow-motion efekts? Nu laiks tipa palēlinās 5 reizes. Ložu zīmēšana ļoti atkarīga no spēles. Paskaties uz to pašu Indago spēli 33rd: The Ultimate Destruction. Kā tā izskatītots, ja nezīmētu lodes? Manuprāt - slikti.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 11, 2007 7:58 pm    Post subject:

bubu wrote:
Tur ne tikai C# to bļauj. Bet arī Python un Java.

Ne jau prieks gamedeva Very Happy buusim reaali xD

Piekriitu par to ka atkariibaa no speeles, bet vai fps vispaar zimee taas lodes? Prieks slow motion, jaa - piemeeram F.E.A.R. ir loti skaisti uztaisiits, bet tas tikai apvienojumaa ar attieciigu post-effektu un tikai tad kad vajag. Preteejaa gadiijumaa izshauta lodiite savaa leenajaa lidojumaa nekaadu labo iespaidu nerada, ja nu vieniigi tas aatrums nav pieliidzinaats += relalitaatei (lasiit : action lai buutu xD) bet ja vinja lido aatri taapat vai kaads redzees? Atkariigs arii no veida kaa vinjas ziimee, ja katrai lodei ir savs draw calls tad es stipri vien apdomaatu vai tas ir taa veerts, var jau pielietot kaadu instancingu/batchu bet... who knows vai to vajag dariit, es jau skatos peec konkreetas speeles Wink
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 8:04 pm    Post subject:

Esmu pavisam reāls. Uzskatu, ka šāda veida valodas ir vispiemērotakās iesācējiem. Kāda gan jēga programmēt C++'ā, ja nesaprot/nezin/nemāk lietas, kas C++ padara par C++? Protams, ja grib no sistēmas izspiest visu max, tad nekas labāks par C++ vēl nav izdomāts.

Quote:
Piekriitu par to ka atkariibaa no speeles, bet vai fps vispaar zimee taas lodes?
Kur runa bija par fps žanru? Cik atceros no iepriekšējiem snake5 postiem viņš tagad cepj 2d spēli.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 8:52 pm    Post subject:

ne tikai pēc postiem, bet arī pēc piemēriem!
jā, veidoju 2d spēli - pārstrādāju veco shooteri, kuru biju izveidojis uz GM
nesen ieliku FMOD - ar to superviegli strādāt, bet tas tā offtopikam.

C# nelietošu, jo tad man vēl jāmācās.. C++ jau tīri sakarīgi kautkas iznāk (pēc šī mazā piemēra http://yy.lv/download.php?f=79629 skatoties)!
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 11, 2007 9:03 pm    Post subject:

Tu vari tam, protams, neticēt, bet uzsākt C# un to iemācīties ir daudz vieglāk nekā C++. Kā arī tajā diezgan daudz lietām vajag mazāk koda, lai panāktu to pašu, ko C++'ā (nemaz nerunājot par kompilēšanas laikiem..) To pašu varu teikt arī par Python.

Taču uz exe failu skatoties nu nekādīgi nevar spriest vai un kā tev padodās C++. Par to var spriest tikai tad, ja redz izejas kodu.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 11, 2007 9:38 pm    Post subject:

Tasi speeli taapataas vien, snake? Negribi kaadu sacensiibu? XDD Taisam peec kaut kaadiem kriteerijiem itkaa vienu un to pasu speeli, peec tam skatamies kuram labaaks, buus sacensiiba, buus arii 3x labaaka speele Very Happy ?
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 11, 2007 10:46 pm    Post subject:

nop, sacensību vēl nē..
mana pirmā "pure cpp" spēle, vienkārši vēlos pārnest veco 2d shooteri uz cpp (kā jau iepriekš teicu)
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page 1, 2, 3, 4, 5  Next
Page 1 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group