kategoria: AMOS
[#391] Re: Tworzenie gier

@mastaszek, post #390

Za każdym razem tak jest. Niepotrzebnie tu jest pętla z kolorami bo i tak sprajty mają swoją paletę kolorów. A sprajt 6 pokazuje głupoty
[#392] Re: Tworzenie gier

@mastaszek, post #390

Wklepałem Twój kod i działa :/ już nic nie rozumiem z tego.

Skoro nie masz dostępu do komputera, to podam Ci kod z tego obrazka, który wrzuciłem wcześniej z tym błędnym sprajtem.

Screen Open 0,640,256,16,Lowres : Cls 0 : Hide On : Paper 0
Load Iff "prince2"
Get Sprite 1,0,0 To 7,31
Cls 0
Colour 48,$0
Colour 49,$222
Colour 50,$67B
Colour 51,$DDC
Colour 52,$79E
Colour 53,$FA6
Colour 54,$D64
Colour 55,$D22
Print At(0,21);" SPRITE nr:"
Print At(0,22);" 0 2 4 6";

Repeat
Sprite 0,X Hard(10),Y Hard(100),1
Sprite 2,X Hard(60),Y Hard(100),1
Sprite 4,X Hard(110),Y Hard(100),1
Sprite 6,X Hard(160),Y Hard(100),1
Until Key State(69)
Screen Close 0
End


Ostatnia aktualizacja: 21.11.2021 16:41:43 przez tukinem

Ostatnia aktualizacja: 21.11.2021 16:43:22 przez tukinem
[#393] Re: Tworzenie gier

@tukinem, post #392

Już mam :)
Żeby wczytać sprajta muszę otworzyć ekran o szerokości większej niż 320 pikseli. Natomiast do wyświetlenia sprajta 6 nie mogę mieć ponad 320 pikseli ekranu, bo wywala mi błąd. Nie wiedziałem że to może mieć wpływ na to. Teraz mogę to zmienić i naprawić. Twój przykład mi to pokazał dopiero :)

Sprawdzałem teraz i w grze zamykam ekran, który ma 640 pikseli. Używam samych ekranów 320 pikseli a i tak jest lipa :/

Ostatnia aktualizacja: 21.11.2021 16:58:20 przez tukinem
[#394] Re: Tworzenie gier

@tukinem, post #393

Czyli chodzi o rozmiar obrazka, z którego wycinane są sprajty? Dziwne to. No ale dobrze, że się wyjaśniło :)
[#395] Re: Tworzenie gier

@MDW, post #384

Tak, może się tak dziać jak mówiłem - dostępy po szynie CHIP nie są z gumy i jak przegniesz ze zbyt małą wartością display datafetch start (bo robisz poziomy overscan i/lub potrzebujesz zaciągnąć 16px więcej ze względu na scroll i/lub masz za dużo kolorów przez co Denise musi zaciągać więcej danych w linii - najczęściej złożenie dwóch z wymienionych przypadków, ale czasem starczy jeden) to ostatni sprite przepada. Z HRM:

NOTE
Some sprites become unusable when additional DMA cycles are allocated to displaying the screen, e.g. when enabling an extra wide display or horizontal scrolling. (See Figure 6-9 DMA Time Slot Allocation.)


i w Figure 6-9 takie coś:

SOME SPRITES ARE UNUSABLE IF THE DISPLAY STARTS EARLY DUE TO AN EXTRA WORD(S) ASSOCIATED WITH A WIDE DISPLAY AND OR HORIZONTAL SCROLLING. IN THIS CASE THE BIT PLANE DMA STEALS THE CYCLES NORMALLY ALLOCATED TO SPRITES, AS ILLUSTRATED ABOVE.


I wszystkie wątki na ADA/EAB dotyczące niedziałającego ostatniego sprite'a. To że Amiga umie tyle a tyle kolorów, taki a taki overscan i tyle sprajtów nie oznacza, że to działa jak się włączy wszystko naraz. ;)

Ostatnia aktualizacja: 21.11.2021 17:02:29 przez teh_KaiN
[#396] Re: Tworzenie gier

@teh_KaiN, post #395

Doszedłem już do tego, dlaczego tak się dzieje. Sprajty pobierałem z obrazka większego niż 320 pikseli, ale ekran był zamknięty. Następny powód błędów to był Dual Playfield. Niestety bez Dual Playfield cała gra mi się sypie, a z Dual Playfield nie postawię dwóch sprajtów do walki i dwóch sprajtów dla ich mieczy. Także cała koncepcja gry i praca idzie chyba na marne :/
Mam Amosa na dysku, w którym wszystko wyświetla dobrze mimo Dual Playfield, ale nie skompiluję w nim tej gry, bo tam mam użytą komendę AMCAFa SET SPRITE PRIORITY. Ewentualnie na siłę mógłbym użyć bobów dla przeciwników...
[#397] Re: Tworzenie gier

@teh_KaiN, post #395

Wydaje się to logiczne. Dzięki za merytoryczne wyjaśnienie.
[#398] Re: Tworzenie gier

@teh_KaiN, post #395

Tak jak myślałem...
Dual Playfield blokuje mi tego sprajta i przez to walka dwóch zawodników odpada. Miecz, czyli sprite nr 6 już pokazuje się z błędami :/

[#399] Re: Tworzenie gier

@tukinem, post #398

Pisałeś, że w Twojej wersji Amosa (bez AMCAFa) działa dobrze. Więc możliwe, że to nie wina Dual Playfielda, tylko dodatek AMCAF coś miesza.

Ostatnia aktualizacja: 21.11.2021 18:14:43 przez mastaszek
[#400] Re: Tworzenie gier

@mastaszek, post #399

Hehe to nie tak. Bez AMCAFA nie uruchomiłbym w Amosie tego. Oprócz Twojej wersji dyskietkowej mam Amosa z Amikitu. Skopiowałem go na swoją plikopartycję. On ma wgranego AMCAFa, lecz na jego kompilatorze nie mogę skompilować nic, jeżeli użyję właśnie komendy z AMCAFa. Normalnie tamten kompilator działa właśnie. Już pododawałem do S-S wszystkie wpisy, jednak i tak kompilator z tamtego Amosa nie widzi AMCAFa i przy każdej próbie kompilacji dochodzi do momentu danej komendy i wyskakuje błąd.
[#401] Re: Tworzenie gier

@tukinem, post #396

To skoro AMOS już bardziej zaczyna przeszkadzać niż pomagać, to może pora wypłynąć na głębszą wodę? Blitz? Asembler? C?

Czy dual playfield jest Ci potrzebne w przypadku używania wyłącznie sprajtów? Bo jego największą siłą jest względnie tanie pamięciowo/czasowo zamazywanie tego co blitter narysował na górnej warstwie (boby), a skoro używasz sprite'ów to może tego nie potrzebujesz. No ale tak, wcześniej gadaliśmy że pojawia się nawet paru przeciwników na ekranie, więc pewnie męczysz podejście mieszane.

Ostatnia aktualizacja: 21.11.2021 21:20:51 przez teh_KaiN
[#402] Re: Tworzenie gier

@teh_KaiN, post #401

Dual playfield jest potrzebny żeby niektóre elementy na poziomach zasłaniały bohatera bo one mają być na pierwszym planie. Bohater ma być w środku a w tle drugi plan. Przez to żeby pierwszy plan zakrył bohatera musiałem użyć komendy z Set Sprite Buffer która jest w rozszerzeniu Amcaf. Muszę użyć sprajtów bo przez Dual Playfield mogę mieć jedynie paletę 8 kolorów. Używając sprajtów mam dla nich osobną paletę czyli dodatkowe kolory Itd itd.

Co do przejścia na inny język programowania to nie :) nie mam głowy do trudniejszych języków. ASM to Mount Everest który nie jest do zdobycia dla zwykłego amatora. A po drugie nie chce mi się uczyć od nowa innego języka.
[#403] Re: Tworzenie gier

@tukinem, post #402

To ja Ci teraz powiem jak ja bym to ugryzł w swoim języku i ze swoimi narzędziami. Może zechcesz tak zrobić, bo wydaje mi się że prościej:

- 1 playfield, 16 kolorów, chyba że naprawdę potrzebujesz 32 ale nie polecam - Amiga wtedy już zaczyna zwalniać. 2PF ma wydajność jak ekran 64-kolorowy, to już generalnie jest masakra wydajnościowa.

- olać sprajty bo są i tak ograniczone

- wszystkie elementy scenerii, zasłaniające lub nie, narysować początkowo na tle - zasłanianie opisane niżej

- wszystkie ruchome obiekty (postacie) na bobach - zapamiętywać pod nimi tło, rysować obiekt blitterem, w następnej klatce zamazywać zapamiętanym tłem, zapamiętać na nowej pozycji, rysować na nowej, itd. AMOS ma gotowiec od bobów, ale nie wiem jak wydajny - może się okazać że lepiej napisać samemu.

- zasłanianie - jak narysowałeś swojego boba na czymś zasłaniającym, to potem na nim rysujesz jeszcze raz blitterem zasłaniający obiekt, z odpowiednią przezroczystością oczywiście. Dzięki temu masz przeważnie zero, a czasami jeden lub dwa dodatkowe obiekty do narysowania w klatce.

Najpewniej nie zmieścisz się w 50fps ale z tego co pamiętam PoP1 i 2 chodzą wolniej, coś koło 25 albo 12fps.
[#404] Re: Tworzenie gier

@teh_KaiN, post #403

Miałem taką koncepcję też. Boby mają to do siebie, że przy większej ilości zwalniałoby przy 7MHz. Do tego większe boby mogłyby mrugać. Trzeba by użyć Double Buffer, który lubi spowalniać na prcku 7MHz. Spróbuję zrobić przeciwników jako boby, jeśli starczy kolorów. Ale to na weekend. Albo przekoloruję miecze na 2 kolory i do każdej palety będę dokładać po te 2 kolory na początku żeby były dla mieczy. Coś muszę wykombinować. Za dużo już zrobiłem przy tej grze, żeby to porzucić :)
[#405] Re: Tworzenie gier

@teh_KaiN, post #403

Udało mi się skompilować w moim Amosie z Amikitu, który nie pokazuje błędów :D

Są 4 sprajty w Dual Playfieldzie pod OCS. I bądź tu mądry :) ta sama wersja Amos 2.0.0, tylko kopiowany z Amikitu. Taki błąd robiłem, że odpalałem sam kompilator z Workbencha, a trzeba odpalić Amos i w Amosie wybrać Compiler Shell i wtedy działa. Trzeba mieć tylko w Startup-sequence porobione odnośniki do Extensions, jeśli się używa Amcafa.
I teraz cała teoria, którą wypisałeś jest obalona przez jakąś poprawioną wersję Amosa :)
[#406] Re: Tworzenie gier

@tukinem, post #405

https://szybkiplik.pl/RGZozpgDCk

Tu jest skompilowana gra bez błędów. Na początku stoi żołnierz z mieczem, czyli 2 sprajty. Śmiało można księciem wyciągnąć miecz i cieszyć się 4 sprajtami na ekranie z Dual Playfieldem :)
[#407] Re: Tworzenie gier

@tukinem, post #405

W którym AmiKicie jest ta "poprawiona" wersja AMOS'a?
[#408] Re: Tworzenie gier

@AmiClassic, post #407

A ściągnąłem go może z kilka miesięcy temu. Chyba zaraz jak zacząłem naukę Amosa latem. Nie powiem Ci jaka wersja Amikitu, ale mogę Ci wysłać całą plikopartycję. Tam są bajery do Amosa, Asemblera, Amiga-E, Pure Basic, VBCC, Blitz.

A jest plik ReadMe :)
Development Package v1.1 for any AmiKit edition.
July 2021, czyli lipiec

Ostatnia aktualizacja: 22.11.2021 17:41:56 przez tukinem
[#409] Re: Tworzenie gier

@tukinem, post #408

A jest plik ReadMe :)
Development Package v1.1 for any AmiKit edition.
July 2021, czyli lipiec
To mnie naprowadziło na pliki, dzięki
[#410] Re: Tworzenie gier

@tukinem, post #406

Pykałem sobie w Amosie dalej kod do gry. Napotkałem kolejny poważny problem.

Otóż musiałem przekopać calutki kod gry i kompilować kilkanaście razy i sprawdzać. Do rzeczy.
Stworzyłem początek systemu walki. Wiem, dlaczego po wyciąganiu miecza gra zwalniała na 7MHz okropnie. Stworzyłem w ostatniej planszy stąpanie po kamieniach naszego sprajta. No właśnie "sprajta". Aby stworzyć kolizje dla sprajtów należy utworzyć maskę. To samo przy walce. Bez kolizji sprajtów ciężko cokolwiek. Kolejne komendy usuwałem i dodawałem, kompilowałem i sprawdzałem co spowodowało, że mi drastycznie gra zwolniła.
Komenda MAKE MASK.
Z książki o Amosie wyczytałem, że komendę tą należy poprzedzić komendą SPRITE OFF, więc tak zrobiłem, lecz dalej jest wolno. Gdy usunę komendę MAKE MASK, gra działa jak należy. Czy jest jakiś sposób, żeby komenda maski nie spowalniała działania gry? A może ja robię coś źle?

Najpierw miałem tak:
SPRITE 0,współrzędne : MAKE MASK
później miałem tak:
SPRITE OFF 0
MAKE MASK
SPRITE 0, wspórzędne

Gra działała jakby 5 razy wolniej (zależnie od procka jakiego ustawiłem). Teraz działa płynnie, lecz nie ma reakcji, gdy trafię mieczem przeciwnika.
[#411] Re: Tworzenie gier

@tukinem, post #410

Możesz kompletnie olać maskę sprajta i nie robić tak kolizji, tylko potraktować obiekty jako prostokąty i ręcznie sprawdzać czy np punkt będący końcówką miecza zawiera się w prostokącie - kolizja to proste sprawdzenie czy jego współrzędna X zawiera się między xLewo i xPrawo prostokąta, tak samo współrzędna Y między yGóra i yDół. Będzie o wiele szybciej. ;)
[#412] Re: Tworzenie gier

@teh_KaiN, post #411

Też tak właśnie myślałem. Zdziwiło mnie po prostu że stworzenie maski potrafi tak spowolnić działanie. Mógłbym to przyspieszyć usuwając komendy wait 1 ale to znowu na szybszych prockach działałoby za szybko. Będzie trochę więcej pisania ale za to będzie jednakowa płynność.

Jeszcze muszę wymyślić w ostatniej planszy jak rozegrać boby kamieni po których się chodzi. Teraz mrugrają bo nie użyłem DOUBLE BUFFER. Chyba po prostu do tej jednej "komnaty" użyję double buffer i autoback żeby zlikwidować mruganie. Chociaż w innych komnatach też nie powinno być problemu skoro same sprajty są używane.

Tak szczerze ta gra bardziej przypomina wyglądem Zorro z C64 a nie Prince of Persia 2 :D

Ostatnia aktualizacja: 25.11.2021 21:06:25 przez tukinem
[#413] Re: Tworzenie gier

@teh_KaiN, post #411

Miałeś rację :)

https://szybkiplik.pl/8Qp7MazeBT
Tu jest ADF z grą. Po przejściu w lewo jest ostatni poziom, czyli wejście do jaskini. Pozmieniałem MAKE MASK na czytanie współrzędnych. Działa super. Dodatkowo wrzuciłem DOUBLE BUFFER, żeby boby nie mrugały. Obyło się bez AUTOBACK i SCREEN SWAP :) Nie robiłem animacji znikania kamieni, tylko po prostu znikają. Tylko podczas skakania mruga wielki kamień po lewej blokujący wejście do jaskini. Pewnie przez to, że są użyte 4 sprajty w Dual Playfield. Lepiej już tego chyba nie zrobię. Kto chce, niech przetestuje.

Dla nie znających gry podpowiem, że nie wolno stanąć na kamień ze słoneczkiem...

Po wejściu do jaskini gra się wyłącza, bo narazie to będzie koniec demka :)

Zostało zrobienie systemu walki. Gdy to skończę, to albo zajmę się dźwiękami albo kolejnymi poziomami, które są o wiele bardziej złożone.

Ostatnia aktualizacja: 26.11.2021 20:40:33 przez tukinem
[#414] Re: Tworzenie gier

@tukinem, post #413

W dokumentacji do Amosa jest wyraźnie powiedziane, że Make Mask zabiera trochę czasu. Jest szybciej, jeśli zadeklarujesz tworzenie maski tylko dla konkretnego Sprite'a (a nie całego banku, bo tak się dzieje bez wskazania konkretnego). Tak czy owak nie robi się tego w pętli, bo to masakruje fps (o czym już się przekonałeś).

To, czego potrzebujesz, to plugin o nazwie PowerBobs. Kiedyś to sprawdziłem i osiągi były zaskakująco dobre. Co prawda ograniczeniem takich obiektów są tylko 32 piksele na szerokość (nie pamiętam wysokości, ale chyba też), ale za to możesz ich nawrzucać sporo na ekranie, a wydajność wciąż będzie zadowalająca.
1
[#415] Re: Tworzenie gier

@Umpal, post #414

Nie wiedziałem o istnieniu tego dodatku. Dzięki za podpowiedź.
[#416] Re: Tworzenie gier

@tukinem, post #413

Włączyłem, podbiegłem do ściany ze słońcem, podskoczyłem, wciągnęło mi Prince'a w kosmos :)
To bug czy taka pułapka?
Zamieszczam screen link , za drugim razem złapałem jak jeszcze był na ekranie, ale leci w górę dalej i wylatuje poza górną krawędz.
Edit: drugi link bo nie jestem pewien czy pierwszy działa jak należy: link

Ostatnia aktualizacja: 27.11.2021 10:03:26 przez Lucus
[#417] Re: Tworzenie gier

@Lucus, post #416

Hohoho :) nie wiedziałem że tak się może stać :D
musisz stąpać po kamieniach na których nie ma słońca. Gdy przejdziesz po wszystkich oprócz tego ze słońcem to on zniknie i otworzy się jaskninia. A to że go wywaliło to pewnie bug. Muszę zajrzeć co tam się dzieje w wolnej chwili. A na jakim sprzęcie to uruchomiłeś?

U mnie to tak działa jak tu w linku:
https://szybkiplik.pl/822obh2N28

Ostatnia aktualizacja: 27.11.2021 20:41:14 przez tukinem
[#418] Re: Tworzenie gier

@Lucus, post #416

Szczerze, nie wiem jak Ci się udało to zrobić. Dałem małą poprawkę i skompilowałem.
https://szybkiplik.pl/36cY9xbXky
Tu masz poprawioną wersję. Spróbuj na tym ADFie i daj znać koniecznie, bo mnie to ciekawi. Aha i napisz mi czy to uruchamiałeś w Winuae, czy na prawdziwej Ami, oraz jaki procesor miałeś ustawiony. Czasem moje gry z Amosa dziwnie działają na prockach wyższych niż 68000, dlatego pytam o to.
[#419] Re: Tworzenie gier

@tukinem, post #418

Tutaj jest watek o pisaniu w AMOS-ie z przykladami. Moze sie przyda.

link
[#420] Re: Tworzenie gier

@Don_Adan, post #419

Dzięki za link. Zaciekawił mnie potrójny playfield :)
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