kategoria: AMOS
[#241] Re: Tworzenie gier

@tukinem, post #239

Takie coś znalazłem - AMOS - Oszczędzamy miejsce na dysku.
[#242] Re: Tworzenie gier

@forge, post #241

Widziałem kiedyś ten artykuł. Czy to będzie szybciej działać, niż wczytywanie danych komendą POINT, oraz czy to będzie w miarę zaoszczędzone miejsce na dane? Szczerze to to mogę sprawdzić, ale gdy skończę fizykę gry. Robię wszystko prawie od nowa, bo jednak ten sprite był zbyt malutki i musiałem powycinać jeszcze raz z gry. Teraz wszystkie warunki i wymiary muszę poprzepisywać. Współrzędne musiałem pozmieniać i trochę poprzerabiać. Nawet lepiej się zachowuje teraz. Dołożyłem mu spadanie z góry. Zostało mi jeszcze zjeżdżanie na tej "różowej" lince oraz zablokować chodzenie na boki, gdy znajduje się na drabince. Ogólnie co włączę tą gierkę to zawsze znajdę coś co jeszcze można poprawić. I tak trochę zbyt szybko chodzi w porównaniu do oryginału, no ale czemu ma być tak samo "skokowo" :)
[#243] Re: Tworzenie dem

@MDW, post #7

Co sądzicie o tworzeniu gier w Scorpion Engine? Ktoś próbował? Widzę, że możliwości ma spore, tylko jak z poziomem trudności?
[#244] Re: Tworzenie dem

@tukinem, post #243

Nie znam się, ale to wygląda na dużo mniej pisania niż w amosie. To chyba narzędzie typowo do tworzenia gier.

Youtube filmik
[#245] Re: Tworzenie dem

@mastaszek, post #244

O to jak to jest w windowsie praca to odpada. Przynajmniej narazie. Ale temat ciekawy chyba.
1
[#246] Re: Tworzenie gier

@mastaszek, post #237

link

Porobiłem trochę fizyki do gry ale nie wiem sam. Oceńcie jak Wam się to widzi. Śmierdzi amatorszczyzną prawda? Mnóstwo warunków dodanych, żeby nie łapał się na różnych "pułapkach" i nie wieszał, a z drugiej strony żeby w miarę prawidłowo wszystko grało. Dodane jest wspinanie, schodzenie z drabinki, wjazd na zielonej lianie, zjazd na różowej linie, spadanie i animacja trupka. Średnio mi się to widzi...
[#247] Re: Tworzenie gier

@tukinem, post #246

Trudno mi ocenić bo nie grałem w pierwowzór, ale coś tu mi się nie zgadza... czy ludzikiem można sterować podczas spadania? Jak się wchodzi i schodzi z różowej liny? Jak zejść po zielonej linie? Gdy wpadnę do prawej dziury to muszę dwa razy wcisnąć ESC żeby wyjść z gry. Zeskok z drabiny kończy się spadnięciem na sam dół.
Wchodzenie na niebieskie drabinki jest ok, ale przydał by się jednak większy margines błędu.

Ostatnia aktualizacja: 14.08.2021 15:28:28 przez forge
[#248] Re: Tworzenie gier

@forge, post #247

link
tu jest gameplay z wersji dosbox. Po różowej linie tylko się zjeżdża. Zielona służy do wspinaczki. Niekiedy wskakując na niebieską drabinkę wiesza się rozgrywka, bo jeszcze nie wiem za bardzo jak to ogarnąć. Wychodząc w prawo lub lewo poza ekran zawodnik ma spaść na dół. Do wchodzenia na drabinę trzeba prawie idealnie na środku drabinki stanąć. Będąc na drabince nie da się iść w lewo lub prawo. Jedynie można w bok zeskoczyć, byle nie z większej wysokości bo się chłopek potłucze. Sama animacja jakoś dziwnie mi się widzi porównując do orginału.

Ostatnia aktualizacja: 14.08.2021 15:45:05 przez tukinem
[#249] Re: Tworzenie gier

@tukinem, post #248

Wrzucam tu swoje wypociny. Raz idzie lepiej, raz gorzej. Dziś jednak brak mi słów.
link
W Amosie wszystko działa. Po kompilacji nie uruchamia się nawet. Podejrzewam, że to może być problem z czytaniem tablic. Wrzucam plik z Amosa oraz gotowca po kompilacji. Gdyby ktoś mógł podejrzeć, przetestować i podpowiedzieć, co robię źle to byłoby super. Podpowiem, że po wyREMowaniu części dotyczącej czytania tablicy podczas strzelania, gra działa po kompilacji, jednak po usunięciu REMów znowu jest "Error Returncode 20" :/ domyślam się dlaczego tak się dzieje, lecz nie wiem jak to ugryźć, skoro w samym Amosie działa, a po kompilacji lipa...
[#250] Re: Tworzenie gier

@tukinem, post #249

W linii 133 masz:

If ...and TAB((XS-2)/8...

Wygląda na to, że początkowa wartość XS wynosi 0 (zero) i zapis "XS-2" wychodzi poza tablicę. Spróbuj przed pętlą główną ustawić np. XS=8 i zobacz czy pomogło...
[#251] Re: Tworzenie gier

@mastaszek, post #250

To jutro spróbuję, chociaż dziwne, bo nawet jeśli jest xs=0 to (xs-2)/8 daje właśnie 0 licząc po liczbach całkowitych.
[#252] Re: Tworzenie gier

@tukinem, post #249

jesli w Amosie cos dziala a po kompilacji nie dziala tzn. ze masz problem z jakims brakujacym plikiem/bankiem itp. Cos jest pewnie zle ustawione w opcjach kompilatora lub nie ma okreslonej biblioteki/pliku z jakiej korzysta dana funkcja/procedura.

Przekroczony zakres tablicy wyrzucilby blad juz z poziomu Amosa..
[#253] Re: Tworzenie gier

@selur, post #252

Tylko że pisałem wcześniej, że gdy wyremuję kilka linijek które sprawdzają właśnie tablicę i go skompiluję, to wtedy działa. Jutro sprawdzę sposób od Mastaszka i dam znać czy pomogło.
[#254] Re: Tworzenie gier

@tukinem, post #249

Pod emulatorem pokazuje się obrazek że sprajtami, potem rysuje się ekran gry.
Filmik pod linkiem.
https://szybkiplik.pl/a3aN8VL3Cz
Może to coś cię naprowadzi
[#255] Re: Tworzenie gier

@mastaszek, post #250

Miałeś rację jak zawsze :) zmieniłem xs i ys na 192, bo tyle ma maksymalna współrzędna. Nie może mieć mniej, niż 2, bo wtedy wyrzuca mnie z gry. Dziwne, że tak się dzieje po kompilacji, a w samym Amosie nie ma tego problemu. No ale teraz został mi drugi problem.
Jak zrobić, przy wjeżdżaniu czołgiem na "trawę", żeby czołg był pod spodem? Tzn. żeby "trawa" zakrywała czołg (no i kule od strzelania). Próbowałem SCREEN SWAP, AUTOBACK, SCREEN TO BACK i SCREEN TO FRONT. No i nic. Czy jedyna słuszna metoda to DUAL PLAYFIELD?
[#256] Re: Tworzenie gier

@tukinem, post #255

Selur wyczaił, że to błąd kompilatora.

Nie ma łatwego rozwiązania tego zadania. Bez Dual Playfielda musiałbyś ustawić trawę jako boba i rysować go nad czołgiem, co jest zupełnie nieopłacalne, bo amos się nie wyrobi wydolnościowo.

Można spróbować tak:

Robisz Dual Playfield. Na dalszym planie masz całą planszę, czołgi i pociski, OPRÓCZ trawy. Trawę rysujesz tylko raz, na pierwszym planie. Wtedy trawa będzie zakrywać wszystko co się znajdzie pod nią, a cała akcja gry rozgrywa się na dalszym planie.
[#257] Re: Tworzenie gier

@tukinem, post #255

Spróbuj przykryć obiektem typu Icon.
1
[#258] Re: Tworzenie gier

@mastaszek, post #256

Też tak właśnie myślałem. Musiałbym zmniejszyć paletę kolorów. Jednak muszę sobie poradzić jeszcze z tą tablicą bo dalej są błędy tym razem z czym innym.
[#259] Re: Tworzenie gier

@jimiche, post #257

do Icon nie musisz. Ja waliłem nawet w Ham6 icon (co prawda bez maski) i świetnie przykrywało resztę ekranu. Chyba jedyne to Icon ma większy narzut na pochłanianie zasobów.
[#260] Re: Tworzenie gier

@jimiche, post #259

A czy nie będzie zbyt zwalniać?

Narazie to przepisywałem całą tablicę, którą powiększyłem o 5, żeby nie wyjeżdżać warunkami poza jej granice. Całą planszę pododawałem o "5" na każdym kaflu, więc trochę mi to zajęło :) Trochę klepania przy tym było, a dopiero poprawiłem samą planszę+sterowanie. Jeszcze zostało strzelanie, ale to już chyba nie dziś. Póki co, błędów po kompilacji nie widać.
[#261] Re: Tworzenie gier

@jimiche, post #259

Popoprawiałem wszystko i jest dobrze. Co do jazdy "pod trawą" to PASTE ICON bardzo spowalnia wszystko. PASTE BOB również. Próbowałem zjechać paletą na 8 kolorów dla DUAL PLAYFIELD, jednak brakuje mi kolorków. Musi być minimum te 8 kolorów. Chyba..., że zamiast bobów czołgów i strzelania użyję sprite'ów. Jednak z tym to różnie bywa, bo niekiedy mogą mi zanikać, gdy będą dwa czołgi w jednej linii. Już przerabiałem te sprite'y i w żaden sposób nie przemawiają do mnie. Chyba zostanie na tym, że czołg będzie jeździć po trawie, a nie pod nią.
[#262] Re: Tworzenie gier

@tukinem, post #260

Żeby czołg przejeżdżał pod trawą można zrobić przykładowo tak:

Sposób 1.

Dorobić dodatkową maskę (która opisuje piksele nieprzeźroczyste, czyli te zasłaniane przez trawę) i wykonywać dynamicznie operację koniunkcji AND na obu maskach zapisując wynik w osobnej, tymczasowej masce.

Używając nowej maski, narysujemy wtedy tylko część czołgu niezasłoniętą przez trawę.

Nie jestem pewien jak to zrobić w AMOSie. Zwyczajnie użyłbym do tego jedną operację Blittera D = AB, gdzie A to maska czołgu i B to maska trawy.

Koszt jak rysowanie tylko jednego bitplanu obiektu, czyli niewielki.

Poniżej tabelka pomocnicza. Mam nadzieję, że w miarę to jasne:

Maska (czołg)	Wynik
0		Przeźroczyste
1		Czołg

Maska (trawa)	Wynik
0 		Trawa
1 		Przeźroczyste

Maska (czołg)	Maska (trawa)	Nowa maska
0		0		0	
0		1		0
1		0		0
1		1		1

Nowa maska	Wynik
0		Przeźroczyste (Tło albo Trawa)
1		Czołg

Sposób 2.

Zrobić z trawy dodatkowego BOBa wyświetlanego nad czołgiem.

W drugim przypadku trawa powinna być stosunkowo mała, bo odrysowujemy ją na bieżąco.

Ostatnia aktualizacja: 30.08.2021 20:18:46 przez Hexmage960
1
[#263] Re: Tworzenie gier

@Hexmage960, post #262

Pierwszego sposobu nie bardzo umiem rozgryźć, a dodatkowo utrudnia mi brak umiejętności rysowania blitterem. Co do drugiego sposobu, to póki co może i dało by radę, lecz gdy dojdzie czołg przeciwnika plus jego strzały, lub nawet dwa czołgi przeciwnika, to wtedy płynności na pewno nie będzie. Na 8-bitowym NESie takich czołgów przeciwnika było całkiem sporo naraz i to grało płynnie, jednak domyślam się, że tu za całe spowalnianie będzie odpowiedzialny wysokopoziomowy język Amosa niestety.
[#264] Re: Tworzenie gier

@tukinem, post #263

Przede wszystkim musisz ustawić autoback 0, bo w przeciwnym wypadku za każdym razem gdy jakąś rzecz narysujesz na ekranie, to amos automatycznie robi screen swap, a to bardzo spowalnia działanie gry.

Przy autoback 0, rysujesz wszystko co masz narysować i dopiero wtedy sam wywołujesz screen swap.

Jeżeli zrobisz tak jak napisałem i trawę zrobisz jako paste bob (max 4 kolory!!!) i ten bob będzie niewielki (16x16 pix?), to wtedy może się uda.

I nie rysujesz wszystkich kafelków trawy jako paste bob, tylko jeżeli czołg wjedzie na trawę, to wtedy w miejscu tego konkretnego kafelka trawy robisz paste bob.

PS Jeżeli tam ma być dużo czołgów i dużo pocisków (też chyba robionych bobami), to moim zdaniem to w amosie nie pójdzie płynnie bez zastosowania jakiegoś sprytnego rozwiązania.

PS2 wszystkie dzielenia i mnożenia w pętli głównej spowalniają program. Zamiast dzielić, zrób sobie tablicę dzielenia, np. tak:

DIM dziel_przez_8(100)
For i=0 to 99
dziel_przez_8(i)=i/8
Next

A potem w pętli głównej zamiast tab(x/8) robisz tab(dziel_przez_8(x))


PS3 @Hex: poniosło Cię ziom ;) takie rzeczy to nie w amosie



Ostatnia aktualizacja: 30.08.2021 20:46:17 przez mastaszek
1
[#265] Re: Tworzenie gier

@tukinem, post #263

Nie bawiłem się tym ale spróbuj icon z turbo Extension bo podobno są tam szybsze. Inna sprawa jak używasz tablic takich typowo amosowych to zawsze będzie wolno. Tylko banki są w miarę szybkie. Nie wiem co masz w tej tablicy ale jeżeli czołg ma nie wyjeżdżać po za jej obszar czyli ma przybierać maksymalną wartość dla powiedzmy lewej krawędzi 320 to lepiej zastosować vclip (oczywiście z Amcaf'a). Ale najlepiej napisz sam silnik do gry tak żeby działa na 100% a potem optymalizuj... I nie zapomnij że teraz są Extension łatwo dostępne a dzięki nim naprawdę poprawią się dużo możliwości samego Amosa.
1
[#266] Re: Tworzenie gier

@tukinem, post #263

A tak na marginesie - taka gra już została genialnie zrobiona przez szanownych kolegów obecnych tu na PPA.

Link do YT





Ostatnia aktualizacja: 30.08.2021 21:21:19 przez mastaszek
[#267] Re: Tworzenie gier

@mastaszek, post #266

Ładne to Tanks Furry. Takie amigowe :) nie to co moje straszydło :D

Co do kombinowania w AMCAF, to nie mam tak czasu uczyć się na przykładach zawartych w tym dodatku. A co do Autoback, to pisałeś o DUAL PLAYFIELD, czy po prostu zastosować to do DOUBLE BUFFER?
A teraz z ciekawości sprawdzałem i na 7MHz działa to płynnie i zmazywanie murku po przestrzeleniu też w miarę szybko pracuje. Aż się zdziwiłem. Jak na DOUBLE BUFFER to naprawdę jestem w szoku dodając czytanie tablic itd. Ciekawe czemu Sokoban tak wolno chodził, skoro tam nie było animacji, ani nie było takich działań przy czytaniu tablic. Pewnie tam była wina dużej ilości bobów.

Ostatnia aktualizacja: 30.08.2021 21:43:02 przez tukinem
[#268] Re: Tworzenie gier

@tukinem, post #267

Miałem na myśli Autoback 0 przy Double Buffer. I pod koniec pętli głównej, jak już będziesz miał narysowaną klatkę do wyświetlenia, dajesz Screen Swap
[#269] Re: Tworzenie gier

@mastaszek, post #268

Rozumiem. Jutro jak znajdę chwilę to spróbuję to zrobić. Jeśli się uda to zostanie dodawanie wrogich czołgów i ta nieszczęsna sztuczna inteligencja komputera
[#270] Re: Tworzenie gier

@mastaszek, post #264

Autoback 0 nie wyświetla mi boba. Autoback 1 wyświetla, ale dzieje się wtedy to samo, co się działo bez DOUBLE BUFFER.
Dopisałem DOUBLE BUFFER i AUTOBACK 0 zaraz po CLS ekranu przed pierwszym rysowaniem. Na końcu pętli głównej dałem SCREEN SWAP i zanika mi obraz.
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