Kolizje obiektów (gra)

0

Może zabrzmi to śmiesznie, ale gdyby tak chcieć zrobić platformową grę, prostą z kolizjami kwadratów (TImage), to na jednym kwadracie zrobienie kolizji dla obiektu gracza (też TImage) jest bardzo, bardzo, bardzo proste. Gdyby obiektów było setki, to pewnie trochę pisania by było, ale mniejsza o to.

Pytanie brzmi - czy prosta gra platformowa ma sens w zrobieniu jej bez DirectX, OpenGL itd, po prostu normalnie (czyli tak jak wyżej opisałem, TImage wiele, wstawione na Formę + zaprogramowane kolizje i inne rzeczy)? Czy może to bez sensu? I czy wtedy podczas takiej pseudo gry, wykorzystywany jest tylko procesor, czy karta graficzna też?
I dla porównania, jeśli zrobienie tej gry tym pseudo sposobem jest dla mnie dość proste, to czy zrobienie jej w DelphiX, DirectX, OpenGL, czy czymkolwiek będzie hardkorowe? (bo przypuszczam, że tam jest 100 razy trudniej, ale to tylko przypuszczenia, bo nigdy nie zainteresowałem się tymi rzeczami, dlatego jakby było to hardkorowe, to przy tym mega amatorskim sposobie z Formą zostałbym, bo to nie wymaga za dużo kodu i zrozumiałe wszystko :D).

Dziękuję za odpowiedzi.

1

Pytanie brzmi - czy prosta gra platformowa ma sens w zrobieniu jej bez DirectX, OpenGL itd,

Robienie jakiejkolwiek gry bez DirectX/OpenGL nie ma żadnego sensu (beznadziejna wydajność i mizerne efekty).

I czy wtedy podczas takiej pseudo gry, wykorzystywany jest tylko procesor, czy karta graficzna też?

Ciężko powiedzieć (może zależeć od systemu czy samego kompilatora) - możesz przyjąć, że używane jest tylko CPU.

I dla porównania, jeśli zrobienie tej gry tym pseudo sposobem jest dla mnie dość proste, to czy zrobienie jej w DelphiX, DirectX, OpenGL, czy czymkolwiek będzie hardkorowe?

Pisanie w czystym DirectX/OpenGL to katorga.
Korzystając z silników będzie to znacznie łatwiejsze, a i efekty będą lepsze, niżeli programowanie na zasadzie przeciągania kontrolek.

bo to nie wymaga za dużo kodu i zrozumiałe wszystko

:| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :| :|

1
Patryk27 napisał(a):

Pytanie brzmi - czy prosta gra platformowa ma sens w zrobieniu jej bez DirectX, OpenGL itd,

Robienie jakiejkolwiek gry bez DirectX/OpenGL nie ma żadnego sensu (beznadziejna wydajność i mizerne efekty).
no nie do końca jest to prawdą. Można się "pobawić" np. w GDI+ tylko po to aby zobaczyć jak to działa. W brew pozorom jest to później użyteczne np. przy pisaniu własnych wizualnych komponentów. Jednak na pewno złym pomysłem jest tworzenie 200 TImage dla 200 obiektów. To się robi całkiem inaczej - trzeba rysować "ręcznie" na jednym płótnie a nie na 200.

0

ok, dzięki

@Patryk27
jakie wcześniej silniki wymieniłeś poza andorra 2d? Bo edytowałeś post i wywaliłeś je, nie wiem czemu.
A te silniki, korzystałeś z nich? Przyjemne są do gier 2d i proste, nie trzeba się bawić w pisania miliona linii kodu dla np. jednej kolizji z obiektem, a może ułatwione to jest i gotowa funkcja jest, że "if Gracz koliduje z Obiektem28 then ..." + inne rzeczy?

@abrakadaber
ok, rysowanie, ale jakby to była gra jak minecraft, gdzie z klocków wszystko jest zbudowane, ale wersja 2d, to wtedy informacje o klockach w pamięci trzymałbym, tak i wtedy sprawdzał, czy kolizja z jakimś klockiem zaszła? Jeśli tak to ok.

1

jakie wcześniej silniki wymieniłeś poza andorra 2d? Bo edytowałeś post i wywaliłeś je, nie wiem czemu.
A te silniki, korzystałeś z nich? Przyjemne są do gier 2d i proste, nie trzeba się bawić w pisania miliona linii kodu dla np. jednej kolizji z obiektem, a może ułatwione to jest i gotowa funkcja jest, że "if Gracz koliduje z Obiektem28 then ..." + inne rzeczy?

Wywaliłem, ponieważ źle przeczytałem pytanie ;)
Silniki graficzne z których korzystałem to Andorra 2D oraz ZenGL (w tym ostatnio piszę jedną grę, poza tym jest on ciągle rozwijany).
Oba korzystają zarówno z DirectX jak i OpenGL (ZenGL działa także na Linuxie, nie wiem jak Andorra).
Silniki fizyczne z których korzystałem to Chipmunk (jest on napisany w C++, ale jest wrapper do Pascala) oraz nieco Box2D.
Cd.sprawdzania czy obiekt koliduje z innym, to - nie wiem jak w Box2D, ale w Chipmunk - wystarczy taki prosty kod:

Function PreSolveCH(Arb: PcpArbiter; Space: PcpSpace; data: Pointer): cpBool; cdecl;
Begin
 czy_kolizja_z_jakimkolwiek_obiektem := (arb^.private_a^.body = utworzone_wcześniej_ciało_które_sprawdzamy_czy_koliduje_z_czymkolwiek);
 Result  := True;
End;
{...}
cpSpaceSetDefaultCollisionHandler(Space, nil, @PreSolveCH, nil, nil,nil);

Z tym, że po to są silniki fizyczne, abyś się nie martwił ręcznym sprawdzaniem kolizji...

0

mniej więcej tak

1 użytkowników online, w tym zalogowanych: 0, gości: 1