kategoria: AMOS
[#31] Re: Tworzenie dem

@san_u, post #30

Zrobione, fizyka działa, przeszedłem level 1 na różne sposoby uderzając po ścianach itd, były też problemy przy zdejmowaniu paczki z pola docelowego ale poradziłem z tym. Jedyny problem teraz to już malutko miejsca w programie do wklepania innych leveli (około 16000 znaków).
[#32] Re: Tworzenie dem

@tukinem, post #31

AMOS ma jakieś ograniczenie wielkości źródła? Nie jest to limitowane po prostu ilością dostępnej pamięci?
Napisałem 3 komercyjne gry i nawet nie wiedziałem o tym. szeroki uśmiech Nigdy by mi nie przyszło do głowy, że ilość znaków w źródłówce może mi się skończyć. szeroki uśmiech

Teraz sobie próbujesz, uczysz się. Ale musisz wiedzieć, że nikt czegoś takiego w pliku źródłowym nie trzyma. Takie rzeczy trzyma się w zewnętrznych plikach (np. tekstowych) i wczytuje. Pozwalałoby to robić nowe levelu każdemu.

Tak jak ktoś wcześniej zauważył, powinieneś się najpierw pobawić różnymi funkcjami AMOSa, popatrzeć na przykłady. Jest ich w zestawie AMOS Pro kilkaset. I bardzo dobrze pokazują różne funkcje, możliwości, realizację typowych zadań (np. właśnie wczytywanie pliku tekstowego do tablicy). Uruchomić każdy, popatrzeć jak działa, jak został napisany. A po tygodniu takiej zabawy zabrać się za pisanie czegoś.

No i ja bym też się nie bawił w taką grę na znakach. To takie... ośmiobitowe. AMOS daje od razu spore możliwości w zakresie dowolnego poruszania niemal dowolnej wielkości Bobów, dostajemy od razu kolizje między nimi, AMAL daje tak jakby multitasking do animacji. Lepiej może to wykorzystać niż robić coś tak jakby "znakowego". To jest domena ZX Spectrum, Atari XL/XE czy C64, bo tam inaczej się za bardzo nie da. szeroki uśmiech Amiga (nawet 500) to coś więcej i warto to wykorzystać.

Ostatnia aktualizacja: 12.07.2021 18:06:47 przez MDW
[#33] Re: Tworzenie dem

@tukinem, post #31

Gdzieś to się ustawia...
[#34] Re: Tworzenie dem

@tukinem, post #31

Jeśli chodzi o levele to pamiętam, że w Basicu jest instrukcja DATA, za pomocą której możemy wpisywać do programu dowolne dane.

Wpisuje się np.: DATA 0, 3, 4, 1.

W AMOSie powinien istnieć odpowiednik.

Zatem zamiast pieczołowicie przypisywać kolejne liczby do każdego pola tablicy, można stworzyć pętlę, która wczyta do niej sekwencję danych:

REM Zaczynamy wczytywanie od etykiety Mapa1
RESTORE Mapa1

FOR Y=0 TO 15
    FOR X=0 TO 19
       READ TAB(X, Y)
    NEXT X
NEXT Y

Mapa1: 
DATA 1, 3, 6, 3, 2, 4

Wydaje mi się, że najlepiej jednak skorzystać z zewnętrznych plików. MDW już to zauważył. Należy plik otworzyć i zamienić READ na polecenie INPUT #. Wymaga to jakiegoś edytora/konwertera plansz, chociaż takiego, który przekonwertuje znaki kodu ASCII na liczby reprezentujące kafelki.

Uwaga: Dawno nie pisałem w AMOSie więc mój opis może zawierać błędy.

Ostatnia aktualizacja: 12.07.2021 18:46:41 przez Hexmage960
[#35] Re: Tworzenie dem

@tukinem, post #31

W menu na górnej belce EDITOR > SET TEXT BUFFER

Tam wpisujesz ile potrzebujesz i wszystko Ci się zmieści.

A co do tablic, to Hex ma rację. Komenda READ wrzuci to co masz zapisane w DATA do tablicy.

--------------------

Dim tablica(rozmiar)

For i=0 to rozmiar-1
Read tablica(i)
Next

a na samym końcu programu wpisujesz np

DATA 2,0,0,2,4,5,6,2,2,4,5,3,4,3,2,3,3
DATA 3,6,3,4,5,2,5,6,4,2,7,5,4,3,3,5,7
itd.



Ostatnia aktualizacja: 12.07.2021 19:05:05 przez mastaszek
1
[#36] Re: Tworzenie dem

@tukinem, post #18

U mnie to było mniej więcej coś takiego w pętli głównej:

If Jleft(1)=0 Then LEWO=0
If Jleft(1) and LEWO=0 Then LEWO=1
If LEWO=1 Then LEWO=2 : tutaj procedurka od sprawdzania/ruchu czy co tam potrzeba, do ruchu po 1 tajlu wystarczało :)
[#37] Re: Tworzenie dem

@mastaszek, post #35

Mam jeszcze jedno pytanie. Po przejściu levela nie mogę wyczyścić tablicy. Zrobiłem tak:
FOR I=1TO20
FOR J=1TO17
TAB (I,J)=0
NEXT:NEXT

Niestety nie czyści mi tablicy, jednak nanosi nową planszę na starą. Odnośnik do pętli jest prawidłowy. Czy jest takiś inny sposób na wyczyszczenie tabeli? Może ją przy każdym nowym levelu usuwać i tworzyć jeszcze raz jeśli się da?
[#38] Re: Tworzenie dem

@tukinem, post #37

Ale jak nie czyści? Nie bardzo rozumiem. Chodzi o wyzerowanie tablicy, czy o wyczyszczenie ekranu?
[#39] Re: Tworzenie dem

@mastaszek, post #38

o wyzerowanie tablicy, tak jak podałem na przykładzie. Chyba że ekran trzeba jeszcze odświeżyć?
[#40] Re: Tworzenie dem

@tukinem, post #39

Zerowanie tablicy wygląda ok. Musisz wyczyścić ekran i narysować nowy poziom na podstawie nowych wartości w tablicy. Jeśli nie jesteś pewien, to sprawdź czy masz w tablicy same zera:

FOR I=1 TO 20
FOR J=1 TO 17
PRINT TAB (I,J);
NEXT:NEXT
WAIT KEY


Ostatnia aktualizacja: 12.07.2021 21:21:56 przez mastaszek
[#41] Re: Tworzenie dem

@mastaszek, post #40

już mam same zera.

Teraz mam inny problem. Pierwszy lvl ładuje się dobrze.
Po przejściu do drugiego resetuje się ekran, czyści się tablica i rysuje nowy ekran. I ta funkcja jest zapętlona. W kółko ekran się resetuje i rysuje. Odnośniki są dobre, bo przy przestawieniu w kodzie na odpalanie najpierw od 2 levela to działa prawidłowo. Wtedy przy 3 levelu znowu się wiesza.

AHA JUŻ CHYBA WIEM!!! :) Zaraz to spróbuję poprawić :)

Ostatnia aktualizacja: 12.07.2021 21:32:43 przez tukinem
[#42] Re: Tworzenie dem

@tukinem, post #41

link

proszę o testowanie i wyrozumiałość. Przy ekranie uruchamiania wybiera się paletę kolorów a'la CGA lub Tandy, lecz CGA jest lepiej odwzorowane. Gdy chłopek czeka przed magazynem trzeba dłużej fire trzymać, aż przejdzie do ekranu "ładowania". Wybór joystick/klawiatura jest obojętny póki co i działa tylko joy.
[#43] Re: Tworzenie dem

@tukinem, post #42

Działa nawet na gołej A500. Nieźle jak na początkującego.OK
[#44] Re: Tworzenie dem

@forge, post #43

Dzieki ale 4 lvl chyba ma problem z ladowaniem z tego co testowalem. No i to sterowanie troche kuleje.
[#45] Re: Tworzenie dem

@tukinem, post #44

Sterowanie to może być wina emulatora, jutro przetestuję w realu bo muszę rozłożyć sprzęt. Dopisz jakiś "cheat mode" co by szybciej testować.
[#46] Re: Tworzenie dem

@tukinem, post #41

Brawo! OK
[#47] Re: Tworzenie dem

@tukinem, post #42

no całkiem spoko :)
[#48] Re: Tworzenie dem

@forge, post #45

Sterowanie kuleje bo tam jest bardzo dużo pętli i moim zdaniem w złym miejscu wstawiłem funkcję wait i chyba parametr trzeba by lekko przestawić. Już sprawdzałem że jak dam za dużo to jest gorzej a jak dam zero to też nie jest dobrze. Na szybkiej konfiguracji chodziło lepiej a na gołej jest gorzej. Idealnie było bez DOUBLE BUFFER ale wtedy boby zasłaniały bitmape.
[#49] Re: Tworzenie dem

@tukinem, post #48

Tak się robiło na komputerach ośmiobitowych i na starych pecetach (co tutaj było chore, bo miały tysiące możliwych konfiguracji). Prędkość poruszania się i animowania czegokolwiek powinna być związana z czasem. W czasie 1 sekundy ludzik musi przebyć dokładnie taką samą drogę zarówno na gołej A500 68000 7MHz jak i najszybszym PowerPC G5 2GHz. :) Każdy zmienny parametr musi być przemnożony przez czas jaki minął od ostatniej aktualizacji pozycji. Inaczej będzie jak na ośmiobitowcach na których jest to akceptowalne, bo mamy gwarancję tej samej prędkości. Na innych platformach jest to rozwiązanie nieakceptowalne.
Z tego co pamiętam to prędkość jest ilorazem drogi i czasu. Znamy czas jaki minął odkąd ostatnio przesuwaliśmy ludzika, znamy jego prędkość (sami ją nadajemy). Więc i drogę (czyli o ile pixeli go przesunąć) się wyliczy. I wtedy będzie działało dokładnie tak samo na wszystkim. Przy dużej prędkości na jakichś absurdalnie wolnych sprzętach będzie tylko "skakało". Ale jest to efekt jaki chcemy uzyskać, bo sprajt MUSI przebyć tę samą drogę niezależnie od tego co potrafi z siebie wycisnąć maszyna. Będzie to też uniezależnione od tego czy ktoś ma obraz w 50Hz, 60Hz, 120Hz, 1000Hz. Czas jest czas i zawsze płynie tak samo (teorie Ensteina nas tutaj nie interesują, hehe).
Brzmi może nieco skomplikowanie ale jest to bardzo proste.

Ostatnia aktualizacja: 13.07.2021 11:34:40 przez MDW
1
[#50] Re: Tworzenie dem

@MDW, post #49

Tutaj raczej nie ma predkosci i czasu bo ludzik jest po prostu przestawiany z miejsca w miejsce o x pikseli bez jakiejkolwiek animacji. Po prostu znika w punkcie x,y a pojawia sie w x+16,y. Chodzi o to ze nie zawsze przy slabszej konfiguracji potrafi zaskoczyc wczytywanie joya. Jesli program akurat sprawdza te petle warunkowe od fizyki gry to wtedy nie lapie joysticka. Zazwyczaj zalapie ruch ale czesto zdarza sie ze nie zaskoczy. Mysle ze to kwestia zmiany parametru WAIT oraz przestawienia tej funkcji w bardziej trafne miejsce w programie. No i musze poprawic ladowanie leveli.
[#51] Re: Tworzenie dem

@tukinem, post #50

To nie ma znaczenia. Stan joysticka łapiesz i sobie przechowujesz we własnej logice gry. Może minąć godzina i wtedy go zrealizujesz. :) Najprostsze przesuwanie sprajta też powinno być związane z czasem. Cała logika, wszystko. No ale nie wymagam za dużo, bo tego nawet wielki gamedev czasem nie ogarnia. Postać w grze za 300 milionów dolarów (Assasins Creed) na szybszych komputerach szybciej robi się głodna czy coś w tym stylu (nie gram, tylko mi opowiadali ci co grają).

Czasem mam okazję widzieć jak koszmarne błędy architektoniczne kryją się w potężnych produkcjach. I nie chodzi mi o znikanie obiektów jakimś Cyberpunku. Wbrew pozorom te koszmarki są prawie niewidoczne. A głowa boli gdy się pomyśli, że tak proste, szkolne rzeczy nie zostały ogarnięte w tak ogromnych produkcjach przy których pracują setki zawodowców za przepotężne pieniądze. Może właśnie za... zbyt duże.
1
[#52] Re: Tworzenie dem

@MDW, post #51

Próbowałem w prostą pętlę obrócić tą grę. Działało ciut lepiej ale za to omijało wiele warunków związanych z fizyką i chłopek się nie przemieszczał, tylko obracał. Proste 5 warunków zapętliłem. Joy(1) góra, dół, lewo, prawo i zero. Wszystko zaczyna się chrzanić, gdy wchodzi w te serie warunków żeby nie wchodził w murek, żeby przesuwał obiekty i żeby przy przesuwaniu obiektu nie blokowało go nic. Do tego dochodzą warunki jeśli paczka schodzi z pola docelowego, lub wchodzi na pole docelowe. I tak często pomijane są te warunki funkcją GOTO jeśli nie ma potrzeby sprawdzania tego. Już to analizuję drugi dzień.
Troszkę poprawiło dodanie komendy Autolock 1:Screen Swap.
Levele już rysuje dobrze za każdym razem, bo przy każdym ładowaniu levelu dałem nowe ScreenOpen.
Rozszerzyłem bufor w programie, więc mogę wpisywać kolejne levele. Jakoś boję się operować na zewnętrznych plikach jeszcze.
[#53] Re: Tworzenie dem

@MDW, post #51

link

tu wrzucam wersję po poprawkach.
Po DOUBLE BUFFER dodałem AUTOBACK 2:SCREEN SWAP
Szybszy ekran powitalny
Dodany wybór plansz.

Chciałem dodać jakieś napisy na dole, np. numer planszy ale po każdej komendzie LOCATE gra chodzi strasznie wolno. Podczas testów, aby mi wyświetlało jakąś zmienną musiałem wyłączać DOUBLE BUFFER, żebym mógł sprawdzać czy zmienne pokazują prawidłowo.
[#54] Re: Tworzenie dem

@mastaszek, post #46

Witam.
Czy przy wklejaniu bobów da się ustalić który bob ma być na wierzchu a który pod spodem? Zacząłem robić drugą gierkę i bob1 wchodzi za boba 2. A chciałem na odwrót. Odwróciłem kolejność wyświetlania bobów na ekranie ale nic to nie dało. WAIT Vbl przestawiłem pod drugiego boba ale to też nic nie dało
[#55] Re: Tworzenie dem

@tukinem, post #54

Na szybko z pamięci ale poszukaj bob priority
1
[#56] Re: Tworzenie dem

@Lucus, post #55

Dzięki znalazłem.

PRIORITY ON daje boby o niższej numeracji na pierwszy plan.
[#57] Re: Tworzenie dem

@mastaszek, post #4

Udało mi się kupić książkę o Amosie o której była tu mowa. Czytam ją i tak się zastanawiam czy przenosząc fizykę gry, czyli boby do AMALa będzie działać lepiej? Same przeliczenia wszystkie warunki i szukanie oraz aktualizowanie tablicy danych odbywałoby się w AMOSie a operacje graficzne jak rysowanie napisałbym w AMALu. W książce pisze że AMAL i Amos pracują jednocześnie a AMAL jest płynniejszy.
[#58] Re: Tworzenie gier

@mailman, post #1

Tworzenie gier jest dosyć proste. Wystarczy się nauczyć
programować, mieć talent plastyczny i jakieś pomysły
i można tworzyć fajne gry szeroki uśmiech
[#59] Re: Tworzenie gier

@mmarcin2741, post #58

Właśnie się uczę programować. Dużo ludzi ma tu spore doświaczenie i dlatego pytam czy AMAL jest szybszy od AMOSa oraz czy podczas przeliczeń AMOSA, AMAL będzie osobno w jednym czasie pracować na swoich procedurach.
[#60] Re: Tworzenie gier

@tukinem, post #59

AMAL to coś innego niż AMOS. AMAL pracuje pod kontrolą AMOSA i jest czyms w rodzaju programu w programie, w rodzaju multitaskingu. Stąd AMAL głównie wykorzystuję do animacji czy ruchu, do rzeczy działających w tle.
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