PDA

Prikaži potpunu verziju : Pomoc oko programiranja igara


Master_C++
14.6.2006, 16:18
Pozdrav.Napisao sam svoj prvi 2D engine u verziji 1.0, mada ima dosta nedostataka.Recimo engine podrzava samo bitmape.Podrske za ostale formate nema.Takodje ne podrzava pozadine koje se skroluju.To su dve najvece mane u celom engineu(izuzimajuci da je engine za 2D igre).Posto te dve stvari nisam znao da odradim molim vas za pomoc.Engine je pisan u C++-u.Unapred zahvalan: Master_C++.
P.S za dva dana punim 14 godina i molim vas da me razumete!

Master_C++
14.6.2006, 21:52
I da kazem da engine nema veze sa DirectX-om.Sve je Win32 API.I imam jos jedan problem u vezi Visual Studia 2005.Problem je do vectora.Kada pokrenem neki primer i zavrsim ga ili izvrsim neke radnje dobijam error: Debug Assertation Failed!Expression: ("this->_Mycont != NULL", 0) U cemu je problem?Da li ima neko VC++ pa da mi posalje include fajl vector na adresu: master_cpp@hotmail.com

holodoc
14.6.2006, 23:23
Zaboga zašto si instalirao Visual Studio 2005. Komplet je težak kao crna zemlja u smislu da se vuče kao mrcina na alama od mašina. Ja sam ga isporbao na nekoliko stvarno nabudženih mašina i uvek sam se razočarao sporinom. Pa zamisli kada se na brand Dell-ovim radnim stanicama u fakultetskoj laboratoriji (3GHz-a Pentium IV, 1GB RAM-a i Raptor diskovi) vuče ko crevo. Dobro, kada se prvi put učita brzina rada u njemu nije loša ali prvo učitavanje je katastrofa. Ako insistiraš na .NET tehnologiji nabavi VS 2002 ili VS2003. Mnogo! su brži od 2005! Ne mogu da se setim koji od ove dve verzije se dobija patch-ovanjem pa proveri informaciju.

Ja recimo još uvek često koristim Visual Studio 6. Ima nekih svojih nedostataka ali pošto program koristiš za pisanje "čistih" aplikacija (ne koristiš vizuelnu komponentu) ne bi bilo loše da probaš sa njim.


A što se tiče konkretnog problema tvoje pitanje ne može da se odgovori sa jednostavnim "zbog toga". Može da postoji hiljadu razloga za pojavu bilo koje greške u kodu. Pominješ da ti engine za sada podržava prikaz samo bitmapa a reći tako nešto je poprilično uopšteno. Šta su ti bitmape? Da li to znači da bitmape možeš da učitaš na recimo žičani model engina ili nešto drugo? I da,... Koji su to drugi formati koje treba da učita?

Što se tiče ovog tvog problema očigledno je da si neku funkciju pozivao sa argumentom koji pokazivač na nešto što ne postoji ali ovo je gruba procena! I nisi napisao tačno koji ti header za vektore treba jer postoji par header-a u c++ koji sadrže vektore.

Da ne bi dužio dalje ako očekuješ pomoć moraćeš detaljno da objasniš o čemu se radi ili da negde postaviš gotov kod pa da se tek pogleda o čemu se radi. E sad ako je u pitanju neki super tajni projekt ;)

priest (of_the_moon)
15.6.2006, 11:54
Zaboga zašto si instalirao Visual Studio 2005.
Ne verujem da je imao toliko izbora kao i ti...

Takodje ne podrzava pozadine koje se skroluju.
Pozadine koje se skroluju nisu ništa specijalno u odnosu na prikazivanje običnog bitmap-a. Ako poznaješ funkciju BitBlt (a trebalo bi), ne vidim šta je problem. Npr ovako: (kod je sklepan na brzaka, ali radi, sigurica :))

int y = y_scroll - y_velicina_slike;
while(y < y_velicina_ekrana)
{
int x = x_scroll - x_velicina_slike;
while(x < x_velicina_ekrana)
{
BitBlt(hDC_backbuff_ekrana, x, y, x_velicina_slike, y_velicina_slike, hDC_slika, 0, 0, SRCCOPY);
x += x_velicina_slike;
}
y += y_velicina_slike;
}

Naravno, da bi bilo skrola x_scroll i/ili y_scroll moraju da se menjaju (recimo y_scroll++; u svakom prolazu) i ne bi trebalo da budu < 0 ili > velicina_slike. Pod velicina_ekrana podrazumevam veličinu prozora (ili rezoluciju ako je fullscreen), velicina_slike je nadam se jasno.
Ovo "int y = y_scroll - y_velicina_slike;" i "int x = x_scroll - x_velicina_slike;" može biti malo nejasno, ali da se provaliti uz malo mozganja, probaj prvo sam.
Da li trebam da pitam koristiš li double buffering da sve to lepo i izgleda?

Recimo engine podrzava samo bitmape.Podrske za ostale formate nema.
Teško ćeš sam napisati zadovoljavajući kod za dekodiranje nekog kompresovanog formata slika (što najverovatnije želiš). Preporučio bih ti da koristiš neku biblioteku za dekodovanje, tj da je pozivaš u tvom engineu kada treba učitati sliku. Pretraži net i nađi šta ti najviše odgovara (šta je free). Mislim da su neke i opensource, mada, to sada neće mnogo da ti znači ;).

Problem je do vectora.Kada pokrenem neki primer i zavrsim ga ili izvrsim neke radnje dobijam error: Debug Assertation Failed!Expression: ("this->_Mycont != NULL", 0) U cemu je problem?
A da okačiš konkretan kod programa koji pravi probleme pa da vidimo šta ga muči?

Master_C++
15.6.2006, 15:04
Hvala na kodu za pozadinu.Sada posto je taj engine radjen pomocu jedne knjige imam primer igre radjene u njemu(engineu).Kompajlirana je na VC++ 2002(v7.1) i perfektno radi.Posto je engine potpuno isti resih ja da kompajliram njihov kod na mom VS 2005.I tada se javio problem sa vectorom.U prilozima imate kod enginea i igre(zasebno) i bitmape.Link ka zvucnim fajlovima je: http://d.turboupload.com/d/693527/Music.zip.html Vi vidite sta nije u redu pa mi javite.

Master_C++
16.6.2006, 12:07
Pa jel problem do VS 2005 ili do koda?Zna li neko?Molim vas odgovorite sto pre hitno mi treba pomoc!A sto se formata slika tice treba mi podrska za .jpg i .gif

priest (of_the_moon)
16.6.2006, 13:29
Sve je u redu sa kodom.
Kod DevC++ (mingw) compile prolazi bez problema (uz dodavanje nekih nebitnih redova). Nemam VS 2005 pa ne mogu da budem od pomoći...
Jedino što mi pada napamet je da probaš da dodaš ovaj red na početku GameEngine.cpp:
#pragma comment(lib, "winmm.lib")

Molim vas odgovorite sto pre hitno mi treba pomoc!

Što je to toliko hitno? :)

Eh, kad se setim... I ja kada sam prepisao neki BASIC kod iz nekog priručnika na c64 mislio sam da sam master i da mi niko nije ravan :). Što sam više učio, postajalo mi je jasnije kako stvari stoje i koliko malo znam.

Master_C++
17.6.2006, 19:17
Evo dobio sam Dev-C++ najnoviju verziju na Micro DVD-u.Kod mene kompajliranje ne prolazi.Zaustavlja se na funkciji TransparentBlt i kaze undentified identifier.U parametrima projekta u delu Linker dodam libmsimg32.a i libwinmm.a i dalje nista!Kako da ispravno podesim projekat u Dev-C++ pa da prodje TransparentBlt?

Master_C++
18.6.2006, 14:08
Što je to toliko hitno? :)

A zeleo bih da vec jednom krenem da programiram igre pa mi je toliko hitno.Pa jel znas kako da podesim pravilno Dev-C++ da prodje kompajliranje?

priest (of_the_moon)
18.6.2006, 18:33
Ok, ako je hitno, dodaj #define WINVER 0x0500, pre reda #include <windows.h> (zatim uradi jedan "Execute->Rebuild All" iz menija) i neće biti problema.

Master_C++
19.6.2006, 12:21
Ni to ne pomaze.:( Bolje mi ti daj projekat pa cu ja da vidim kako si ga konfigurisao.Moze?

priest (of_the_moon)
19.6.2006, 13:47
Ostao mi je u kanti, imaš sreće. :)

Master_C++
19.6.2006, 15:02
Sada radi!Hvala ti puno!!!!!Posto je misterija sa engineom resena mogu da krenem da pravim igre.Obavesticu vas o napretku.Jos jednom puno ti hvala!!!

Master_C++
19.6.2006, 21:19
Blah, the sickness continues:
C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp In member function `void GameEngine::CaptureJoystick()':
285 C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp [Warning] passing NULL used for non-pointer converting 3 of `MMRESULT joySetCapture(HWND__*, UINT, UINT, BOOL)'
C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp In member function `void GameEngine::PlayMIDISong(TCHAR*, BOOL)':
432 C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp [Warning] passing NULL used for non-pointer converting 1 of `MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD)'
C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp In member function `void GameEngine::PauseMIDISong()':
462 C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp [Warning] passing NULL used for non-pointer converting 4 of `MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD)'
C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp In member function `void GameEngine::CloseMIDIPlayer()':
470 C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Moje Umotvorine\Test\GameEngine.cpp [Warning] passing NULL used for non-pointer converting 4 of `MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD)'

EclipsE
19.6.2006, 21:32
sto si se ponovo registrovo?? ako ne gresim ti si Andross?

Master_C++
19.6.2006, 22:25
E EclipsE pomesa me.Andross mi je buraz.Ucimo iz istog.Samo ne radimo isto.

/edit i koristimo isti komp.Bez razdvojenih accounta.

EclipsE
19.6.2006, 22:33
pa dobro, moje hakerske sposobnosti kazu da koristite isti komp a sad... :D

edit: savet od mene - predji na VB6
imash i engine koji sam postavio, full source

Master_C++
19.6.2006, 22:36
Hakerske sposobnosti post #14 :D evo ga uploaduje GS v0.5 (Andross)

hacker_aca
19.6.2006, 22:46
edit: savet od mene - predji na VB6

Jedno pitanje kad se već pominje VB6. Učim pomalo programiranje u Visual Basic-u. Koristim Microsoft Visual Studio .NET - Enterprise Architect i sa njim sam napravio neke male programčiće ali uz pomoć tutoriala. Pošto vidim da je toliko poznata ta "šestica", da li je isto ovaj program što ja koristim i VB6 ili se razlikuju? I po čemu?

A takođe imam i neku knjigu, programiranje u VB6 koja sadrži skoro 900 stana pa ne znam da li da počinjem i sa njom da učim ako je sve isto kao ovo što ja koristim? Unapred zahvalan.

priest (of_the_moon)
23.6.2006, 0:28
Blah, the sickness continues...
Za Androssa i burazera:
To su upozorenja koja DevC++ prijavljuje (sitničarski :)), engine će sasvim lepo raditi bez obzira na njih.

NenadN
23.6.2006, 2:27
Jedno pitanje kad se već pominje VB6. Učim pomalo programiranje u Visual Basic-u. Koristim Microsoft Visual Studio .NET - Enterprise Architect i sa njim sam napravio neke male programčiće ali uz pomoć tutoriala. Pošto vidim da je toliko poznata ta "šestica", da li je isto ovaj program što ja koristim i VB6 ili se razlikuju? I po čemu?

A takođe imam i neku knjigu, programiranje u VB6 koja sadrži skoro 900 stana pa ne znam da li da počinjem i sa njom da učim ako je sve isto kao ovo što ja koristim? Unapred zahvalan.
Visual Studio .Net je napredniji i bilo bi lepo da ostanes na njemu, razlike su male, Inace famouzna sestica je vrh visual basic-a, dok je .net malo doradjena verzija, inace 6 je dosta brza i ima razumljiviji interfrace i koristi drugi engine, dok net koristi iskljucivo .net framework 1.0,1.1,2.0 u zavisnosti od verzije Visual Studia. Kod se ne razlikuje mnogo i kao sto rekoh u .net verziji neke (dosta je stvari olaksano) funkcije izgledaju drugacije.

Andross
23.6.2006, 13:58
Nije nama dvojici do toga, vec Dev-C++ nece da napravi exe.Cak ni onaj tvoj primer nece da napravi.Samo ispise navedeno i na kraju: C:\Documents and Settings\Filip\Desktop\Hell Entertainment\C++ programi\Windows\Primeri\Space Out\Space Out DevC++\Makefile.win [Build Error] ["Space] Error 1
To je u vezi tvog primera, a ni ostale nece da napravi.Moracu da nabavim VC++ 6.0 ili 2002.U svakom slucaju hvala na pomoci.