View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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
PRESS HERE _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: 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 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 |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: 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 ? |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
|