kategoria: Blitz
[#181] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #180

Miszczuniu wez wywal ta instrukcje point(), to jest bardzo czasochlonna instrukcja (szczegolnie dla wielu bitplanow).
Zastap wszystko tablica 160*256 elementow czyli ekran podzielony przez dwa. To tylko 40kb danych we Fascie.
Odczyt pilki bedzie wygladal : px=pilka_x/2, py=pilka_y/2, adres=py*160+px , wartosc_pola=peek(adres).
Aby jeszcze bardziej przyspieszyc dzialanie, dzielenie przez dwa zastepujesz rotacja bitow zmiennej w prawo a dla mnozenia *160 robisz tablice (LUT) z 256 elementow po 4 bajty, dla kazdego Y z podanym adresem.
2
[#182] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #180

Jeśli ten Point(,) jest taki wolny jak amosowy, to może warto się zastanowić nad innym rozwiązaniem? Zamiast bitmapy, można stworzyć obszar w pamięci (tablicę z elementami 1-bajtowymi) z wartościami kolorów i czytać peek'iem z pamięci zamiast Point'em z bitmapy.

Poza tym czy ja dobrze rozumiem, że używasz w kodzie dzielenia (lub mnożenia?). Tego trzeba unikać gdzie się da, bo to wolne jest. Dzielenie przez 2 (lub 4,8,16 itd) można zrobić poprzez rotację bitów. W amosie się to robi za pomocą Ror.b (dla bajtów) i Ror.w (dla word'ów). Nie wiem jak się to robi w BlitzBasicu, to już ktoś kompetentny by się musiał wypowiedzieć.

PS O widzę, że Selur mnie uprzedził. Wszelkie mnożenia/dzielenia lepiej sobie poprzeliczać do tablic i odczytywać, niż wykonywać te działania na żywca w pętli głównej.



Ostatnia aktualizacja: 17.12.2022 23:16:17 przez mastaszek
[#183] Re: Powstawanie nowej gry w Blitz 2

@mastaszek, post #182

Jeśli ten Point(,) jest taki wolny jak amosowy, to może


wlasnie o tym samym pomyslalem, nie wiem jak w Blitzie ale point() w AMOSie nie nadaje sie do niczego, procz jakiegos programu narzedziowego gdzie nie liczy sie czas wykonania. Mega zolw szeroki uśmiech
[#184] Re: Powstawanie nowej gry w Blitz 2

@selur, post #183

Obstawiam, że przez bitplane'ową konstrukcję amigowej grafiki, ten Blitzowy Point też będzie żółwiem, bo taka funkcja musi jednak co nieco poprzeliczać i szybsze będzie czytanie peek'iem z pamięci.
[#185] Re: Powstawanie nowej gry w Blitz 2

@mastaszek, post #184

Jeżeli sprawdza kolor jednego piksela na klatkę animacji, to nie powinno mieć to znaczącego wpływu na koszt algorytmu.
[#186] Re: Powstawanie nowej gry w Blitz 2

@Hexmage960, post #185

Na pewno sprawdza więcej niż jeden
[#187] Re: Powstawanie nowej gry w Blitz 2

@selur, post #183

Skoro w sumie już zjechałeś z tym stołem do 32 kolorów - tą rampą bym się nie przejmował, dithering można poprawić - to może spróbowałbyś o ile by ci się chciało, zrobić przynajmniej jakieś upośledzone demko w Amosie na szybko, bo zaraz się okaże, że to może normalnie śmigać na ECS.

Ostatnia aktualizacja: 18.12.2022 02:37:52 przez san_u
[#188] Re: Powstawanie nowej gry w Blitz 2

@san_u, post #187

Moge jedynie dokonczyc przerabianie tego obrazka ze stolem, ale nie podejmuje sie tworzenia pinibala nawet dla celow testowych (zreszta to kompletnie nie moj typ gier), aczkolwiek na forum jest przynajmniej kilka osob, ktore wladaja AMOS'em i moze one stworzylyby jakas namiastke.

Trzeba dac ogloszenie i cos na zachete. Moze obeitnica, ze jak to zrobia ta konwersje, to przez tydzien dostana moderatora na PPA i zarcie w KFC za darmo
[#189] Re: Powstawanie nowej gry w Blitz 2

@selur, post #181

Nie kolego tu się mylisz. Point jest prawie tak szybki jak czytanie z tablicy. Kolega Szafir zrobił test i oto wynik:


Point w Blitzu to nie Point z Amosa gdyby był taki powolny to nie odzyskałbym płynności gry.

Ostatnia aktualizacja: 18.12.2022 03:51:14 przez tukinem
[#190] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #189

Selur: no to żeśmy się powymądrzali
[#191] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #189

eeee


Nie no prosze mi tu kod testowy wrzucic, bo nie wierze. Dla ile bitplanow byl ten point sprawdzany
[#192] Re: Powstawanie nowej gry w Blitz 2

@selur, post #191

Ja u siebie pobieram z 4 bitplanów. Dajmy spokój. Pisałem że to blitowanie wyświetlacza elektronicznego spowalniało. Na potrzeby dopisania fizyki gry do końca zostawię go jeszcze "aktywnego" co 8 klatek, ale później będzie ręcznie sterowany, czyli wtedy gdy się zdobędzie punkt. On jest w pojedynczym buforowaniu więc niech sobie blituje całość w jednej klatce. Nie będę tego rozbijać bo procedura od niego jest skończona.

Jeśli Ci się nudzi to możesz użyć swego talentu i usunąć z głową te łapki z bitmapy? ja się tego nie podejmę
[#193] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #192

no ale konkretnie z ktorego obrazka...
[#194] Re: Powstawanie nowej gry w Blitz 2

@selur, post #193

Z mojego ADF z chomika co tu jest link. Tam jest 7-bitplanowy IFF na DF0:LEV3/bmap.ilbm
[#195] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #194

to moze wklej mi tutaj tego linka do obrazka, bo zanim znajde...
[#196] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #189

Tablice za zwykle duzo szybsze niz mnozenie i dzielenie na 68k (oprocz 68060 i 68080), dlatego sie ich uzywa. Wiec albo to jest specyficzny lub dziwny kod, albo po prostu nie ma prawidlowej emulacji szybkosci 68020 w WinUAE. Testy najlepiej dokonac na prawdziwej 68020, a jesli w WinUAE to wybrac 68000.
[#197] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #189

No to analogicznie w Amosie dla 100 tys. powtorzen dla Amigi 1200+Fast

Point(x,y) : 4.42 sek dla 1 btpl (2 kol.) , 5.04 sek dla 5 btpl (32 kol.)
Peek(adr): 1.36 sek
[#198] Re: Powstawanie nowej gry w Blitz 2

@mastaszek, post #182

Tego trzeba unikać gdzie się da, bo to wolne jest. Dzielenie przez 2 (lub 4,8,16 itd) można zrobić poprzez rotację bitów. W amosie się to robi za pomocą Ror.b (dla bajtów) i Ror.w (dla word'ów). Nie wiem jak się to robi w BlitzBasicu, to już ktoś kompetentny by się musiał wypowiedzieć

chyba nie rotacje bitów a logiczne przesunięcia (Logical Shift). drobna różnica, bez uszczypliwości ;)
W BB można zastosować w wyrażeniu po prostu komendy assemblera więc dzielenie przez dwa będzie wyglądało tak:
px=pilka_x LSR 1
mnożenie przez 160 można faktycznie ztablicować ale nie robił bym tego w tabliczach Dim. Te, jak mam wrażenie też nie są za szybkie. Ja używałem po prostu "assemblerowaego" deklarowania przestrzeni pamięci przez Dc.b, Dc.w.
Można też zrobić rozdzielność mnożenie względem dodawania (podstawówka ;) ) go 160 = 128+32 i to by była suma przesunięć x LSL 7 + x LSL 5
No i najlepsza chyba rzecz w BB to to, że można w dowolnym miejsu pisać w assemblerze oraz podejrzeć we wbudowanym debugerze kod asm jaki się generuje.

Ostatnia aktualizacja: 18.12.2022 10:12:39 przez c64portal
[#199] Re: Powstawanie nowej gry w Blitz 2

@selur, post #197

Dobra napisałem swój tester na Amidze bezpośrednio.



Oto mój kod napisany na prawdziwej Amidze.

Przy ustawieniu bitmapy na 8 bitplanów, wypluwa wyniki:
POINT: 600
TAB: 314

Przy 7 bitpmanach:
POINT: 550
TAB: 314

Przy 4 bitplanach (jak w Pinballu):
POINT: 462
TAB: 313 (takie odchylenie odczytu bym olał)

Więc reasumując 313, a 462 to różnica raczej nie kolosalna prawda?

Do kodu chyba nikt nie ma zastrzeżeń?

Ostatnia aktualizacja: 18.12.2022 11:28:07 przez tukinem
[#200] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #199


A to wyniki z winuae przy 020 + cycle exact + 8MB Fast Z2 na zapętlonym kodzie, który pyta użytkownika ile ma przeliczać bitplanów. Nijak się ma Winuae do Amigi.
[#201] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #199

Roznica nie jest duza, ale chyba najszybsza bylaby wersja wspomniana wyzej przez "c64portal". Czyli czysty asembler skoro sie da dolaczyc do BB. Czyli np. tak:

lsl.l #5,D0 ; *32
move.l D0,D1 ; *32
lsl.l #2,D1 ; * 128
add.l D1,D0 ; * 160

Input D0, output D0
temp D1
Mozna tez uzyc innych rejestrow i dostosowac do kodu BB.
[#202] Re: Powstawanie nowej gry w Blitz 2

@Don_Adan, post #201

Możliwe, ale ja nie będę używać czegoś, w czym nie mam zielonego pojęcia. A szkoda. Może kiedyś za wiele wiele dziesiąt latek, jeśli dorosnę do takiego kodowania
[#203] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #202

A ile razy używasz tego POINTa w pętli głównej gry?
[#204] Re: Powstawanie nowej gry w Blitz 2

@ppill, post #175

Udało mi się znaleźć dobrą dyskietkę
Też zagrałem, ale nie jedną ręką szeroki uśmiech: link (A1200.030)
Czasami szarpie grafiką, ale w większości czasu chodzi płynnie. Jest coraz bliżej amigowych pinbali OK
[#205] Re: Powstawanie nowej gry w Blitz 2

@AmiClassic, post #204

Dzięki za przetestowanie :) Cieszę się, że się podoba. U mnie działa z podobną płynnością.

@Mastaszek: często używam Point, a nawet za często bo chyba ze 30 razy w klatce, ale to nie robi znaczenia, bo testy, które robiłem tu programem to były testy 320x512 razy, więc to jest pikuś.

Próbuję bardziej profesjonalnie podejść do rzeczy i całą fizykę napisać w takim stylu, w jakim są oryginały napisane.
[#206] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #205

no to przy 30 razach masz kolosalna roznice :)
[#207] Re: Powstawanie nowej gry w Blitz 2

@juen, post #206

320 * 512 odczytów dało 200 kilka milisekund, czy jak to nazwać
30 odczytów da kolosalną różnicę?

Zresztą ja fizykę będę pisać od nowa.

Mam zastosowany wektor. Na klatkę są sprawdzane 3 punkty piłki (przód zgodny z kierunkiem ruchu oraz 2 na ukos). Więc 3 odczyty Point na klatkę to już będzie chyba idealnie prawda?

Ostatnia aktualizacja: 18.12.2022 17:56:46 przez tukinem
[#208] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #207

btw. to czytales? tu sie wypowiada oryginalny autor Pinball Dreamsa
https://www.gamedev.net/forums/topic/55242-pinball/
[#209] Re: Powstawanie nowej gry w Blitz 2

@michal_zukowski, post #208

Mógłby dać jakieś skromne przeliczenia

Zanim dogram teraz fizykę piłki od nowa to miną ze 2 tygodnie, ale wiem że jestem na dobrej drodze i że w oryginale również stosowano wektor kierunku piłki i prędkość.

Dziwi mnie że autor pisze o wykrywaniu kolizji na każdym pikselu piłki, skoro piłka zawsze uderza przodem lub bocznym rogiem o przeszkodę przy tej fizyce.
[#210] Re: Powstawanie nowej gry w Blitz 2

@tukinem, post #209

piłka zawsze uderza przodem lub bocznym rogiem


.. lub bokiem, w przypadku kiedy leci wzdluz jakiegos tunelu (tak sadze).


Ostatnia aktualizacja: 18.12.2022 21:03:06 przez selur
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem