kategoria: AMOS
[#121] Re: Tworzenie gier

@jimiche, post #120

Na pewno będę musiał się ich nauczyć, ale przy tej grze tak jest lepiej. Teraz w edytorze narysuję np. level1 i zapisuję jako level1. Potem level2 jako level2 itd. Ciężko byłoby wszystko zapisywać do jednego pliku nie tracąc danych. Brak jakiegoś bajta spowodowałby, że żadnego levelu nie wczytałoby się. A tak jeśli któryś level się nie ładuje to wiem który plik jeszcze raz zrobić. Mam 53 levele do zrobienia w sumie :)
Jedyne co jest wolne w tej grze, to rysowanie w Double Buffer i przekopywanie się przez program funkcji warunkowych po całej tablicy planszy, ale to jakoś ujdzie myślę. No i chyba tego już nie przeskoczę.
[#122] Re: Tworzenie gier

@tukinem, post #121

Trochę pracy dzisiaj zrobiłem.
- dodałem nowe poziomy (w sumie jest 33)
- dodałem sterowanie chłopkiem w głównym menu (teraz można wybrać windę/edytor/wyjście z gry
- przy wyborze edytor/gra otwiera się winda
- w windzie jest wybór poziomu, chociaż tu chciałem inaczej, lecz nie wyszło, ale to za chwilę
- musiałem poprawić jedną rzecz, bo chłopek nie chciał przesuwać paczki na pole, w którym się pojawiał (przy wczytywaniu poziomu tablica musi wyzerować miejsce, w którym znajduje się chłopek)
- prace w PPaincie przy tworzeniu chłopka, który jest w windzie oraz w menu głównym
- dodanie wyjścia z rozgrywki do windy oraz z windy do menu głównego poprzez wybór poziomu "0"

Teraz pytanie związane z problemem.
Chciałem zrobić tak, jak jest w oryginalnej wersji, gdy chłopek stoi w windzie. Wybierając poziom podczas wciskania jakiejś cyfry jest animacja jak wciska guziki. Dałem komendy KEYSTATE i animacja była. Problem pojawił się taki, że nie wczytuje cyfr, które się wybiera. Chodzi o to, że np wybierając poziom 12 animacja jest, ale nie wiem jak zczytywać dane z klawiatury. Dałem póki co INPUT LEVEL, bo brak mi pomysłu jak to rozwiązać. Teraz po prostu nie ma animacji, tylko pojawia się znak zapytania i wpisuje się poziom, w którym chce się zagrać.
P.S. Trochę to zagmatwane, co napisałem, ale Ci co grali w wersję DOS, będą wiedzieli o co mi chodzi :)
[#123] Re: Tworzenie gier

@tukinem, post #122

Co do klawiatury, to: https://www.ultimateamiga.co.uk/HostedProjects/AMOSFactory/AMOSProManual/10/1002.html






Ostatnia aktualizacja: 24.07.2021 22:30:10 przez karolb
[#124] Re: Tworzenie gier

@karolb, post #123

No właśnie tak zrobiłem jak w książce. Gdy wciśnięty jest klawisz to jest animacja, ale nie umiem ustawić, żeby jednocześnie czytał liczbę którą wpisuję. Np 12 poziom. Wciskam 1 i potem 2. Key state wczytuje i wrzuca boba, ale musiałaby działać jednocześnie komenda INPUT żeby wczytać pełną liczbę 12.
[#125] Re: Tworzenie gier

@tukinem, post #124

Jak na moje (ale ja nie-amosowy jestem)

nrPiętra = 0
potem, na pętli póki nie wciśniesz enter oraz póki nrPiętra jest równy zero:

jeśli inkey$ = przycisk1:
- ustaw boba w położeniu takim a takim
- nrPiętra = nrPiętra * 10 + 1
jeśli inkey$ = przycisk2:
- ustaw boba w położeniu śmakim
- nrPiętra = nrPiętra * 10 + 2
itd.

Potem pewnie się okaże że będzie Ci w każdej klatce triggerował dany przycisk, więc musisz tam w treści ifów porobić setowanie zmiennej że którykolwiek przycisk został wciśnięty - zerujesz tę ją jak żaden przycisk nie jest aktualnie wciśnięty. Do warunku od każdego przycisku dorzucasz że ta magiczna zmienna ma być zero.

EDYT: teraz czytając skany powyżej to chyba jednak nie będzie co klatkę tego sprawdzał więc sposób z początku posta powinien być okej

Ostatnia aktualizacja: 24.07.2021 23:03:36 przez teh_KaiN
[#126] Re: Tworzenie gier

@teh_KaiN, post #125

Też miałem taką koncepcję ale tu spytałem bo może się da jakoś to zrobić bardziej w miarę normalnie niż wczytywać dziesiątki a później jedności żeby na koniec scalić to w jedną liczbę. Jutro popróbuję.
[#127] Re: Tworzenie gier

@teh_KaiN, post #125

link

Dokończyłem wszystkie poziomy.
Zrobiłem obsługę windy na tyle, na ile się udało.
Dodałem nową paletę kolorów (eksperymentalną).

Jeśli ktoś chciałby i miał ochotę to może dorobić grafikę dla Amigi. Starałem się to zrobić w standardowej palecie PPainta 16-kolorowej, jednak dla amatora zrobić grafikę to jednak duże wyzwanie :)

Testujcie i piszcie w komentarzach jakie wrażenia :)
Pozdrawiam i czekam na opinie.
2
[#128] Re: Tworzenie gier

@tukinem, post #127

Witam.
Od kilku dni tworzę nową grę, tym razem zręcznościówkę. Przy ustawieniu 7MHz 68000 w winuae działa bardzo płynnie. Jak tylko jeszcze poprawię kilka rzeczy to wrzucę Wam do przetestowania.

PS. Jeśli ktoś mi zarzuci brak pomysłów, to od razu przyznaję rację, że łatwiej jest zerżnąć grę niż stworzyć od podstaw. Dorzucam screen jak to wyszło w 16 kolorach:

[url=]link[/url]
PS2. Próbowałem dać więcej kolorów, jednak utknąłem, bo PPaint obsługuje 256 kolorów, a Amos dopiero 4096 :/ a szkoda bo wygląda biednie, no ale grać jakoś się gra, chociaż fizyki idealnie nie odwzoruję z orginału.
[#129] Re: Tworzenie gier

@tukinem, post #128

A dla czego nie Dałeś 32 kolory ?
to LowRes przecież ?

Ostatnia aktualizacja: 30.07.2021 19:44:27 przez UJP
[#130] Re: Tworzenie gier

@UJP, post #129

Właśnie nie pomyślałem i jutro będę od nowa robić grafikę. Zawsze 32 kolory to o wiele ładniej niż 16. Mam złe nawyki z PC gdzie było 16 kolorów lub 256.
[#131] Re: Tworzenie gier

@tukinem, post #130

Możesz też użyć trybu EHB ( 64 kolory ), tylko trzeba sobie dobrze dobrać paletę
[#132] Re: Tworzenie gier

@UJP, post #131

Więcej kolorów = pewnie będzie działać wolniej. No ale czekamy na wersję testową ;)
[#133] Re: Tworzenie gier

@karolb, post #132

[url=]link[/url]
Tak wyszło w 64 kolorach. Nie ma dużej różnicy. Palmy są ładniejsze i skały na wodzie, ale za to już wynik meczu nie jest na przezroczystym tle, bo jest wielka paleta kolorów i komenda PAPER nie czyta numeru koloru. Co do prędkości to faktycznie zwolniło. Muszę dać ręcznie 40MHz, żeby działało płynnie. Może przy 32 kolorach będzie płynnie. Jeśli nie, to wrócę do 16 kolorów. Chcę uzyskać pełną płynność na 7MHz :)
[#134] Re: Tworzenie gier

@tukinem, post #133

Dokończ kod i zatrudnij grafika. 16 kolorów spokojnie wystarczy, zwłaszcza do tak prostej gry.

Ostatnia aktualizacja: 30.07.2021 22:38:30 przez forge
[#135] Re: Tworzenie gier

@forge, post #134

16 kolorów to max. Przy 32 już chodzi wolno. Nie wiem, czy na 16 kolorów można to tło ładnie zrobić... Szczerze to już piksel po pikselu poprawiałem. Jutro spróbuję jak najlepiej to poprawić. A tak swoją drogą ciekawe jakby to chodziło w HighRes Laced 16 kolorów... Ale to musiałbym cały kod poprawiać pod nową rozdzielczość. Nie ma co. Będzie LowRes 16 kolorów i koniec. Z kodem to nie ma co tam pchać cudów, żeby nie spowolniło gry, tak jak miało to miejsce w Sokobanie. Najgorsze to odwzorowanie praw fizyki. Sterowanie jest już zrobione, gorzej z ruchem piłki, ale pracuję nad tym. Tak w sumie to teraz po skompilowaniu to nawet jest za szybka ta gra ale... jak sobie przypomnę grę Jaguar XJ220, to tam również jedynie grało się fajnie na 7MHz, bo przy lepszym procku już za płynnie wszystko chodziło :) chcę żeby gra była na samą A500 bez żadnych dopałek. Żeby mógł sobie w nią zagrać ktoś, kto ma czystą Amisię bez żadnych kart turbo. No może poza pamięcią RAM...
[#136] Re: Tworzenie gier

@karolb, post #132

link

Proszę testować. Lepiej tej fizyki w grze nie zrobię. Jak wyszło tak wyszło :)
Szczerze to samemu jak włączę tą gierkę to ciężko się gra, ale po chwili się idzie przyzwyczaić do niej. W orginał się wygrałem swego czasu sporo więc wiem, ile tu brakuje, ale nie potrafię tego dokładniej już zrobić bo zaczynają się cuda gdy dokładam kolejne warunki.

Czekam na wrażenia.
3
[#137] Re: Tworzenie gier

@tukinem, post #136

Zagrałem chwilę i powiem tak - fizyka dość szalona i w porównaniu z PC to chyba ta piłka szybciej lata, ale szacun się należy, ja bym dzisiaj nawet takiej fizyki nie napisał. Grafiką się imo nie ma co przejmować, ważne żeby był rozwój w programowaniu, "opakowanie" zawsze potem można podmienić gdy jakiś grafik przyjdzie ze wsparciem. Jedź do przodu :)
[#138] Re: Tworzenie gier

@tukinem, post #136

Fajne! Idziesz jak burza OK
[#139] Re: Tworzenie gier

@Lucus, post #137

Już przerabiałem paletę, piksel po pikselu poprawiałem, a i tak nie przeskoczę 16 kolorów. Przy sterowaniu myszką zostawiłem wskaźnik, bo łatwiej jest sterować jak widać kursor. Gdy go nie widać to nie wiadomo w którym miejscu się znajduje i przez to nie wiadomo jak się bob skieruje. Ciężko spowolnić grę, bo wszędzie mam zmienne całkowite. Musiałbym pozmieniać na zmienne rzeczywiste, żebym mógł operować ułamkami, ale nie wiem czy to nie spowolni samego przeliczania programu. W książce z Amosa pisze właśnie jak zmienne rzeczywiste spowalniają pracę komputera i chyba na kanale o Amosie z PolishRetroChannel też tam była o tym mowa z tego co pamiętam.
[#140] Re: Tworzenie gier

@Lucus, post #137

Udało się poprawić tą fizykę :) zmieniłem typ zmiennych na rzeczywiste (ale tylko te odpowiedzialne za ruch piłki w pionie). Jest lepiej. Nie ma takiego szaleństwa. Myślę, że teraz jakiś szybki kurs Pro Trackera zrobię, bo akurat w muzyce więcej wiem, niż w programowaniu, tylko potrzeba nauczyć się obsługi samego programu. Później jakieś dźwięki odbijania piłki i myślę, że będzie coś z tego :) bardziej mnie to cieszy niż Sokoban, bo działa bardzo płynnie. Tylko, czy jak dodam muzykę w tło i dźwięki, to czy nie będzie spadku płynności...
[#141] Re: Tworzenie gier

@tukinem, post #139

„Ciężko spowolnić grę, bo wszędzie mam zmienne całkowite.„
Prawie 100 postów o tym wspominałem. Ale nie cisnąłem, bo wiem jak to jest. Każdy sam musi dojść do wniosku, że wszystko musi być związane z czasem i działać na liczbach zmiennoprzecinkowych (albo dużych stałoprzecinkowych jeżeli z jakiegoś powodu boimy się „floatów”). Każdy prędzej czy później dochodzi do etapu w którym stwierdza, że na komputerach 16-bitowych (nawet słabych) pisanie metodami znanymi z ośmiobitowców to nie jest dobry pomysł. Trzeba pisać elastycznie.
Ale do tego najlepiej dojść samemu. Wtedy to poczuje się to na własnej skórze i zrozumie lepiej niż po wykładzie najlepszych profesorów z najlepszych uczelni świata. szeroki uśmiech
[#142] Re: Tworzenie gier

@MDW, post #141

Wtedy było odwrotnie, bo gra była zbyt wolna, lecz to było spowodowane nie samym rysowaniem, co wyczytywaniem tablicy danych. Tam już nic nie mogłem zrobić. Myślałem, że przy zmiennych rzeczywistych drastycznie spadnie prędkość, jednak było praktycznie to samo. Mogłem spokojnie pozmieniać te całkowite "jedynki" na połówki i ćwiartki :)
a tak swoją drogą jeden "#" przy zmiennej a tyle daje możliwości
[#143] Re: Tworzenie gier

@tukinem, post #140

No i pięknie, do przodu :)
Dźwięk odbijania piłki to akurat w amosie spoko, komenda sam play i samo pójdzie, odtwarzanie moduła to też o ile dobrze pamiętam jedna linijka ;)
[#144] Re: Tworzenie gier

@Lucus, post #143

Problem gdy się będzie chciało jednocześnie odtwarzać MODa i sampla. Jak wiadomo są tylko 4 kanały. Dla testów zrobiłem sobie moda który grał tylko na 4tym kanale i pod klawisze 1-3 podpiąłem sampel który grał na tych właśnie kanałach 1-3. Zdziwiłem się, bo sampel odgrywany na kanałach 1-3 powodował zakłócenia w odtwarzaniu MODa który grał tylko na kanale 4. Bez sensu.

Nie próbowałem z modułem odtwarzanym z *.Abk i z MEDa.
[#145] Re: Tworzenie gier

@tukinem, post #92

Zobacz ten wątek: Agonia w Amosie.

Linki już nie działają, ale efekt końcowy był bardzo ciekawy (płynny).
[#146] Re: Tworzenie gier

@karolb, post #145

link
ten link był w artykule. Przejrzałem wszystkie podstrony z grami i doszedłem do wniosku takiego jak wcześniej. Nie potrafię obsłużyć blittera. Nie umiem użyć dual playfieldu. Mam pomysł na fajny port gry na konkurs ale tam jest lekko w pionie scrollowany ekran. Nie chciałbym zdradzać co to za gra. Musiałbym chyba zrobić tło na rozmiar obrazka 320x1000 pikseli i używać SCREEN OFFSET. Jestem ciekaw jak w Amosie robi się wielkie plansze poza ekran, które są scrollowane. Przecież robiąc planszę do gry typu Alladin lub Zool to trzeba by zrobić ogromny obrazek, który będzie scrollowany. Wiem, że te gry nie były pisane w Amosie, ale są platformówki z poziomami o dużych rozmiarach. W książce nie ma nic o Blitterze, mało jest o Dual Playfield, bo za bardzo nie wiem jak go używać, pomimo że przepisałem przykład do programu i to fajnie wyglądało. Coppera również nie wiem jak użyć. Narysowanie flagi z dwóch kolorów to nie jest to.
[#147] Re: Tworzenie gier

@tukinem, post #146

Tak, screen offset to jest to jak się robi małe scrolle - najszybciej dla Amigi, tylko RAMu to potrafi zjeść sporo. Do dużych scrolli wykorzystuje się już specyfikę działania sprzętu i sprytne układanie danych.

Scroll góra-dół jesteś w stanie zrobić na Amidze względnie łatwo, bo z użyciem coppera:
- trzymasz bitmapę tła (bufor) wielkości ekranu a najlepiej trochę większą pionowo
- scrollujesz góra-dół jak normalnie, czyli sprzętowo wygląda to tak że zaczynasz wyświetlać ekran od np. 5 czy 15. linii
- jak już masz y-scroll na tyle duży że na dole mogą się wyświetlić śmieci spoza bitmapy, konfigurujesz copper żeby w momencie wyświetlania pierwszej problematycznej linii przestawił w tym miejscu wyświetlanie bufora na jego pierwszą linię.

To tak jakbyś kartkę papieru zwinął w rulon i obracał ją sobie - to co widzisz od boku to aktualna część wyświetlana na ekranie, a miejsce łączenia to pierwsza linia bufora. Na niewidocznej części rysujesz rzeczy które mają wejść zaraz na ekran.

Tak się to generalnie robi w C/asm - nie sądzę żeby to można było zrobić po ludzku w AMOSie. Scroll X jest trudniejszy - jak chcesz się wgryźć naprawdę w szczegóły to tu masz przykładowy kod asemblerowy + dokumentację jak ugryźć każdy ze scrolli.

Moja rada - najpierw zrób coś z małym scrollem, czyli to co zmieści Ci się bez problem w RAMie. Większe zostaw sobie na później.

Ostatnia aktualizacja: 02.08.2021 12:22:42 przez teh_KaiN
[#148] Re: Tworzenie gier

@tukinem, post #146

Tak wygląda efekt tego programu, który jest w wątku "Agonia w Amosie":



Jestem ciekaw jak w Amosie robi się wielkie plansze poza ekran, które są scrollowane. Przecież robiąc planszę do gry typu Alladin lub Zool to trzeba by zrobić ogromny obrazek, który będzie scrollowany.


Są składane z klocków, klocki są rysowane poza ekranem, potem ekran jest przesuwany, i kolejne są rysowane poza ekranem. Nie dam gotowego rozwiązania bo sam tego nigdy nie robiłem, Ale zobacz ten listing z Agony, a potem może to: https://retrogamecoders.com/amos-maps-and-scrolling/
[#149] Re: Tworzenie gier

@teh_KaiN, post #147

Udało mi się zrzucić jedną planszę. Wymiary to 320x502 piksele. Ekran będzie się przesuwać raz w górę, a raz w dół. Czy Screen Offset wystarczy do tego?
Gorzej z kolorami, bo wychodzi 32 kolory przy redukowaniu liczby i może być zbyt wolno. Na 16 kolorach jest za brzydko.
[#150] Re: Tworzenie gier

@tukinem, post #149

Na 32 kolorach w amosie na pewno będzie zbyt wolno. Jeśli ma być scroll sprzętowy, czyli przez Screen Offset, to najlepiej zrobić Dual Playfield (oba ekrany mogą mieć max po 8 kolorów, a tak naprawdę 7, bo kolor 0 jest przezroczysty). I wtedy ekran w tle sobie przesuwasz za pomocą Screen Offset, a całą akcję rysujesz na pierwszym planie.

Zainstaluj sobie rozszerzenie do amosa o nazwie AMCAF. Ma ono polecenie czyszczenia ekranu za pomocą blittera i ma polecenia do odtwarzania modułów i sampli Protrackera.

Tryb Dual Playfield robisz tak:

Screen Open 0,320,502,8,Lowres `otwierasz jeden ekran

Screen Open 1,320,502,8,Lowres `otwierasz drugi o takich samych wymiarach

Wait 10 ` Czekasz chwilę, bo bez czekania Dual Playfield czasami dziwnie działa

Dual Playfield 0,1 `włączasz tryb Dual i od tej pory masz jeden ekran nad drugim

Dual Priority 1,0 `opcjonalnie jeśli chcesz, to tak zmieniasz kolejność ekranów (ustawiasz który ma być na pierwszym/drugim planie)

---------------------------------------
Od teraz jeśli chcesz zdefiniować paletę, to musisz się przełączyć na ekran pierwszoplanowy (Screen NUMER) i wtedy możesz definiować kolory. Ekran pierwszy to kolory 0-7 a drugi 8-15. Mam nadzieję, że nic nie pomieszałem.

PS Na końcu programu pozamykaj wszystkie ekrany z wyjątkiem nr 0 (Screen Close NUMER)


Ostatnia aktualizacja: 02.08.2021 13:28:42 przez mastaszek
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