Shadow of the Lemming

Wiadomość
Autor
Awatar użytkownika
Axi0maT
Sponsor
Sponsor
Posty: 8596
Rejestracja: 2006-01-12, 12:40
Lokalizacja: Koszalin
Kontakt:

Re: Shadow of the Lemming

#16 Post autor: Axi0maT »

Na Sega Mega Drive bez zadnego kombinowania mozna od reki zrobic dwa ekrany w poziomie i dwa ekrany w pionie co mega ulatwia robienie gier. Wsparcie sprzetowe dla scrolla na Mega Drive jest super w mojej ocenie i jest zrobione nawet lepiej niz na np Atari Jaguarze ktory teoretycznie jest duzo mocniejszy.
siudym
'czasem cos napisze'
'czasem cos napisze'
Posty: 352
Rejestracja: 2006-05-06, 00:20

Re: Shadow of the Lemming

#17 Post autor: siudym »

Tylko nie czaje ograniczenia planu dla sprites, ktory ma limit na 0-511 realnie dla Y/X. Oczywiscie to nie problem gdy ustawimy ekran na np. 512x512 ale juz zaskoczylo mnie to ograniczenie gdy w w/w demku mialem 1024x256 :) Myslalem, ze cos mialem zle ustawione gdy podczas skrolowania sprites z prawej strony zaczely sie pojawiac w dalszej czesci ekranu.. Teraz doczytalem, ze niestety to limit dla max 512 na bok. Szkoda nieco.
Awatar użytkownika
Axi0maT
Sponsor
Sponsor
Posty: 8596
Rejestracja: 2006-01-12, 12:40
Lokalizacja: Koszalin
Kontakt:

Re: Shadow of the Lemming

#18 Post autor: Axi0maT »

No wlasnie to jest dobrze przemyslane wbrew pozorom. 512 pixeli w pionie i w poziomie zapewnia wystarczajacy margines. W praktyce sprity sa zlozone z mniejszych spritow wiec jak sprity wyjezdzaja poza ekran + zalozony margines to mozesz je wylaczyc i zwrocic do puli niewykorzystanych spritow, a co za tym idzie od razu wyswietlac cos kolejnego w innym miejscu na ekranie. Kiszenie spritow poza obszarem wyswietlania byloby marnowaniem zasobow. Jesli nie stosujesz dynamicznego zwalniania zasobow to 512 pixeli na szerokosci moze byc problematyczne kiedy masz duzy obiekt ze sprajtow na ekranie ktory zajmuje cala szerokosc ekranu (320pixeli) i przesuwajac go np. w prawo moze dojsc do sytuacji ze on jeszcze caly nie wyjechal z ekranu a juz zaczyna wylazic z drugiej strony. No ale to kwestia dopracowania silnika. To nie jest trudne do ogarniecia. Obsluzysz to sobie raz i pozniej juz zapominasz.
siudym
'czasem cos napisze'
'czasem cos napisze'
Posty: 352
Rejestracja: 2006-05-06, 00:20

Re: Shadow of the Lemming

#19 Post autor: siudym »

Ja to rozumiem oczywiscie. Chodzi tylko o to, ze skoro w SMD jest mozliwy tryb timemapy 128x32 to rowniez tryb sprites moglby zostac dodany. :)
Nie zawsze kazdy chce sie bawic w buforowanie podczas skrolowania, czasem mozna uzyc maksymalnej opcji wielkosci ekranu bez zabaw w dynamiczne wywalanie sprites poza ekran - jak chcemy jakas skrolowanke bez zbyt wielkiem mapy. Takie PC-Engine posiada 10-Bitowy koordynat X wiec umozliwia ustawianie w zakresie 0-1023 - co ciekawe tilemapa z tego co widze ma max 64x32 :) Wiec tu totalna odwrotnosc niz w SMD.
siudym
'czasem cos napisze'
'czasem cos napisze'
Posty: 352
Rejestracja: 2006-05-06, 00:20

Re: Shadow of the Lemming

#20 Post autor: siudym »

Udało się w prosty sposób ogarnąć sprites dla Planu wielkości 1024x224 (1024x256 TileMap). Jak wyżej marudziłem, że SMD umożliwia ustawienie TileMapy wielkości nawet 128 znaków na najdłuższym boku (1024pix) a ogranicza Sprites na 64 znaków (512), to jednak koordynaty sprites X/Y są w pełni 16-bitowe :) Chodzi o to, że nawet jak plan sprites jest max 512x512 to wartości X/Y mają pełen zakres 0000-FFFF (0-65535) ale oczywiście sprite "zawija się" po każdym 512 w tym zakresie ale wartości są zawsze 0000-FFFF. Jest to pomocne gdy chcemy porównywać pozycji sprite co oczywiście wykorzystałem.

Działa to w prosty sposób - kod sprawdza mi czy wartość X sprite jest w zakresie WIECEJ niż 128 i MNIEJ niż 432 a jak jest INACZEJ to wywala go poza widoczny Plan dodając zwyczajnie +256 do pozycji Y (i odwrotnie gdy pojawi się na 128-432 to znowu dodaje +256 do pozycji Y). Okno skrolowane zawsze ma stałe wartości pozycji sprites, wiec zawsze będzie mieć przypisane te 128-432 dla widocznego sprite wielkości 16x16. Oczywiście dodałem margines jeszcze poza ekranem -32 i +32 to tego zakresu. Wszystko działa idealnie :)

W demku sprites mają własną detekcje kolizji z tłem więc oczywiście nawet jak sprite jest niewidoczny i wywalony +256 niżej poza ekran to dodaje różnice 256 do detektora kolizji aby nawet "na dole" wyliczał kolizje względem planu wyższego :) Dzięki temu nawet niewidoczny poza ekranem "żyje" sobie tak jakby był tam gdzie trzeba (nie powoduje problemów ala poza ekranem chodzą sobie gdzie chcą).

Filmik:
https://www.youtube.com/watch?v=SKHNiErIK2Q

Będę chciał to zrobić także na SNES, ale tam będzie więcej kombinacji. Pozycja Sprites w SNES jest jeszcze jedną nogą w NES czyli 8-bitowa, a dodatkowy 9-ty bit jest jakby na doczepkę dodany w innym miejscu tablicy sprites (także ograniczenie 512x512).
ODPOWIEDZ