[ SashaM @ 15.06.2004. 15:26 ] @
Pozdrav svima!

Znam da se ovaj forum bavi iskljucivo 3D programiranjem, ali kako nisam uspeo da nadjem pravi forum nadam se da mi necete zameriti sto ovde postavljam temu. Doduse, iako se radi o 2D igri programirao sam sa OpenGL API-em tako da mozda i nisam suvise promasio

Naime, trenutno radim na jednoj logickoj igrici koja je jos uvek u ranoj BETA fazi, ali kako se vec prilicno moze naslutiti o cemu se radi zamolio bih vas da mi kazete svoje misljenje.
Igricu, kada je zavrsim, nameravam da prodajem preko interneta kao shareware za nekih 10 dolara.

Osnovno pravilo igre je da treba da se ocisti cela tabla od svih dijamanata. To lakse zvuci nego sto izgleda jer postoji sest boja, a dijamanti nestaju kada se spoje tri ili vise istih boja. Tu, medjutim, postoji caka da dijamant jedne boje, kada se granici sa dva ili vise dijamanta druge boje, sagori, odnosno pocrni. Njega onda mozete ukloniti kada se granici sa tri ili vise dijamanata iste boje, ili belim dijamantom koji unistava sve crne dijamante oko sebe, a "zaradjuje" se kada ocistite pet ili vise dijamanata. Njega
iskoristavate sa desnim klikom misa. Ociscena boja se ne pojavljuje izvesno vreme.
Pravila mozda izgledaju komplikovano, ali posle 5 minuta igranja videcete da je igra sasvim jednostavna.

Stvari koje treba uraditi:
- igra nema kraj - nakon ociscene table se i dalje moze igrati
- postaviti prozore za pomoc, setup, TOP 10 i upis imena nakog zavrsetka igre
- dodati laksi i tezi nivo tezine (igra je trenutno podesena na srednji)
- dodati "arcade" mod gde se igra u trci sa vremenom
- dodati zvuk i jos grafickih elemenata
- "ispeglati" jos par stvari i sitnica

Nadam se da ce vam se svideti. Veoma bih cenio vase iskreno misljenje, ideje, sugestije itd. kako bih igricu napravio sto zanimljivijom i igrivom za svakoga.

Igricu otpakujte i pokrenite u bilo kom direktorijumu.

Link: http://dl.downloadhosting.com/download/protector/diamonds.zip [839 kb]

Srdacan pozdrav!

Sasa
[ blaza @ 15.06.2004. 16:50 ] @
Svidja mi se ideja.
Necu da ulazim u razmatranje grafickog resenja; to prepustam drugima.
Uzimajuci u obzir da igra nije gotova, evo par stvari koje mi najvise smetaju:
-kada je igra aktivna, procesor je 100% opterecen - treba ti bolji Game Loop.
-kada je igra minimizirana, procesor je i dalje 100% opterecen - zakljucak izvuci sam.
-nisi sprecio aktivaciju vise instanci aplikacije - ovo mozes vrlo lako:
Code:
Ovo je C++ verzija. Nemam pojma kako se to radi u Delphi-ju (Koristio si Delphi, zar ne?).

HANDLE m_hmutex = CreateMutex(0, FALSE, "_MTX");
if(GetLastError() == ERROR_ALREADY_EXISTS)...
ili 
if(FindWindow("TApplication ", "Diamonds")) ...

-kada minimiziram igru, ne vrati se originalna desktop rezolucija i refresh rate
-kada startujem igru, refresh rate se promeni na 60Hz, i slika treperi

Ako se jos necega setim, dodacu kasnije.
Da li je to tvoja originalna ideja?
[ SashaM @ 15.06.2004. 17:56 ] @
Ideju sam dobio kombinacijom nekoliko igara sa nekim svojim idejama. Igra je radjena u Delphi-u 7.
- Game loop zahteva malo optimizacije, ali s obzirom da (provereno) radi na low-end konfiguracijama (PII-466MHz, Riva TNT Vanta graficka) mislim da je u principu OK. Mozda je to opterecenje od 100% samo teorijsko?
- Sto se tice opterecenja kada je minimizirana igra - izbacicu proracune iz loop-a kada aplikacija izgubi fokus.
- Sprecavanje vise instanci programa sam, naravno, planirao da implementiram u zavrsnoj verziji. Ipak, hvala na savetu.
- Na kompjuterima na kojima sam testirao igricu (Win 98 i XP) podesavanje i vracanje rezolucije je radilo bez problema. Koji OS imas? Mozda je do drajvera za graficku?
Hvala na savetima. Ukoliko imas jos neke ideje rado bih voleo da ih cujem. Kako ti se cini igrivost (gameplay)?

Pozdrav
Sasa
[ blaza @ 15.06.2004. 18:59 ] @
Evo, probao sam par igara. Sve igre koje sam probao mogu da rade na P I 200MHz racunaru.
Neke opterecuju procesor 100% (Barton 2500+ BOX, ATI Radeon 9200 - verovatno renderujuci 300 frejmova u sekundi), neke svega 5-6%.
Zakljucio sam da uglavnom DirecX igre manje opterecuju procesor, za razliku od onih koje koriste OpenGL, verovatno zato sto je uobicajena praksa da se svaki OpenGL frejm renderuje kompletno - sto je korisno kod 3D igara, ali se ovo moze izbeci kod statickih 2D igara - renderovanjem samo onih regiona u kojima dolazi do promena.
Mozda je opterecenje 100% zato sto se tvoja igra trudi da izrenderujue sto je vise moguce frejmova, a ne, dovoljan broj frejmova. U principu, dok je igra u fullscreen modu ne smata opterecenje procesora 100%.
Btw. mozes ubaciti opciju (zelite li Fullscreen mode ili Windowed mode?).
Kada startujem igru, rezolucija se promeni na 1024*768 60Hz (ja koristim 1152*864 85Hz). Kada kliknem na minimize dugme, ili kad pritisnem Win+D, igra izgubi fokus i minimizira se, a rezolucija ostaje 1024*768 (60Hz).
S druge strane, kada izadjem iz igre klikom na X dugme, rezolucija se vraca na 1152*864 85Hz.
Nemoj da zaboravis da ubacis podrsku za vise jezika (naravno i za naski).
Igra je interesantna, ima tezinu. Ne zaostaje za igrama istog tipa. Ja najvise volim ovakve jednostavne igre. Bolje mi je da izgubim 15 min igrajuci ovakve igre, nego dane igrajuci velike igre (cast izuzecima - Tomb Raider 1..6).
I ja sam uvek zeleo da napravim neku igru ovog tipa, ali: 1. nisam jos dosao do originalne ideje, 2. lenj sam.
[ yooyo @ 25.06.2004. 15:09 ] @
Ako imas mrtvu petlju u programu onda ce i procesor na 3-4Ghz biti 100% zauzet.
Izjava da DX manje opterecuje procesor od OpenGL-a je netacna (potpuno pogresan zakljucak)

Da igrica ne bi trosila 100% mora se promeniti glavna petlja programa.
Ekran se moze osvezavati na 2 nacina:
1. kada se desi WM_PAINT event
2. Svakih N milisekundi izazivati WM_PAINT

Na ovaj nacin jednostavna igrica nece potrositi ni 1% CPU-a.

Pogledaj koliko procesora zauzima npr... Pinball u windows-u (kod mene < 1%)

yooyo
[ blaza @ 25.06.2004. 16:16 ] @
Hoces reci da, pod uslovom da game loop ogranicava fps, igra - npr. Sokoban klon, koja, recimo koristi IDirectDrawSurface3::BltFast metod i u svakom sledecem frame-u menja samo potrebne regione, vise ili jednako opterecuje procesor kao ista takva igra koja koristi OpenGL i renderuje svaki frame od nule?
[ bkaradzic @ 25.06.2004. 23:06 ] @
Citat:
IDirectDrawSurface3::BltFast


Ko jos koristi DirectDraw? I to verziju 3? :)

Branimir
[ yooyo @ 25.06.2004. 23:54 ] @
Citat:

Hoces reci da, pod uslovom da game loop ogranicava fps, igra - npr. Sokoban klon, koja, recimo koristi IDirectDrawSurface3::BltFast metod i u svakom sledecem frame-u menja samo potrebne regione, vise ili jednako opterecuje procesor kao ista takva igra koja koristi OpenGL i renderuje svaki frame od nule?


Graficke kartice su ovih dana toliko brze da cesto GPU *ceka* da mu CPU da nesto da radi (CPU limited). To znaci da ako napravimo 2 verzije sokobana (jedna koja osvezava samo delove ekrana i druga koja iscrtava ceo ekran) sa fiksnim frame rateom, procesorsko zauzece bice isto tj, <1%.
Poredjanja radi... na novijim spravama (FX-5900, 6800, Radeon 9800, X800) Quake3 je CPU limited tj. procesori nisu dovoljno brzi da iscede maksimum iz graficke kartice. To se lepo vidi u testovima kada kartica postize priblizno isti FPS i u 1024x768 i u 1600x1200. E sad uporedi quake3 i sokoban pa ces razumeti sta pokusavam da objasnim.

Jos jedna sitnica... u 3d igrama se uvek iscrtava ceo ekran jer se prakticno svi pixeli menjaju iz frejma u frejm.

yooyo
[ blaza @ 26.06.2004. 02:02 ] @
@bkaradzic
Skoro sve igre koje sam isprobao. Kao sto sam naglasio, sve igre koje sam isprobao mogu da rade na PI racunaru bez problema (DirectX 5-7).

@yooyo
Naravno da sa dovoljno mocnim hardware-om razlika nestaje za jednostavnije implementacije.

Dajte coveku savete kako da poboljsa igru.
[ bkaradzic @ 26.06.2004. 03:08 ] @
Citat:
Dajte coveku savete kako da poboljsa igru.


U principu igra je solidna, pa nema bas nekih posebnih saveta. Mislim da ne treba nesto poboljsavati sto se tice dizajna igre (mislim da ima potencijal uspesne igre). Mozda malo grafiku doterati da bude vise eye candy i interfejs da bude malo vise user friendly. Ali sve to je ocigledno pa i sam SashaM verovatno trenutno radi na tome.

Branimir
[ mloh @ 14.07.2004. 12:10 ] @
Igra je odlicna.