kategoria: AMOS
[#271] Re: Tworzenie gier

@mastaszek, post #268

Ale dało mi to trochę do myślenia, podłubałem w Sokobanie, bo tam rysowanie planszy odbywało się mozolnie wolno podczas DOUBLE BUFFER. Przepisałem DOUBLE BUFFER po rysowaniu planszy i było szybko, ale były artefakty. Domyśliłem się po kilku kombinacjach, które nie dały powodzenia, że to boby skrzynek powodują artefakty. Ostatecznie dałem dwie pętle wczytujące. Jedna pętla wczytuje murki i miejsca na skrzynki, a druga pętla od nowa czyta tablicę ale już po DOUBLE BUFFER i AUTOBACK. Dziwne, że do wczytywania samych skrzynek idzie szybko. No ale koniec końców udało się to zoptymalizować. Wrzucam tu gotową wersję w ADF :)
link
Nie wiem, co z tego będzie, ale ta gra pójdzie na konkurs portów gier. Działa na Kick 1.3, ale chyba lepiej minimum 2.05 dać, bo coś nie zawsze się uruchamia (może to wina Winuae beta). No i niby minimum 512 kB CHIP i FAST przy kick 2.05, ale procesor polecam podkręcić do 28 MHz minimum, bo jednak podczas gry czytanie tablic spowalnia grę na wielkich planszach. Te kilka pierwszych działa spoko.

A co do Tanks, to nie wiem zupełnie jak to ugryźć :) szkoda że człowiek nie chciał iść na informatykę :D
[#272] Re: Tworzenie gier

@tukinem, post #270

No bo chyba cls'em go czyścisz. Wiem że z tymi bobami też miałem parę razy problem i wyczajenia jak one działają trochę mi czasu zajęło. Nie wiem czy ty tam coś pod bob'em wyświetlasz. ale może najpierw dobrze obczaj tryby ich wyświetlania.
1
[#273] Re: Tworzenie gier

@tukinem, post #270

Przeanalizuj ten kod. Może pomoże.


' wycinamy boba
Screen Open 0,320,200,4,Lowres
Curs Off : Cls 0
Paper 0 : Pen 2
Print "Bobek"
Get Bob 0,1,0,0 To 40,8

' przygotowanie ekranu gry
Screen Open 0,320,200,16,Lowres
Curs Off : Flash Off : Cls 0

Paper 0 : Pen 1
For I=0 To 160
Print "tlo...";
Next

Double Buffer
Autoback 0
Bob Update Off


' petla glowna
Repeat

Bob 1,X,30,1
Bob Draw

Screen Swap
Wait Vbl

Bob Clear

Inc X
If X=320
X=-40
End If
Until Key State(69)

Erase All
[#274] Re: Tworzenie gier

@jimiche, post #272

wczytuję obrazek
ładuję boby z obrazka
ładuję tablicę planszy z pliku z danymi
czyszczę ekran
rysuję ramkę
wklejam boby planszy na podstawie tablicy
DOUBLE BUFFER
AUTOBACK 0

Główna pętla:
REPEAT
...
SCREEN SWAP
UNTIL KEY STATE (69)
END

to tak w skrócie jak to wygląda. Przy tej konfiguracji wyświetla się plansza bez czołgu.
Przy Autoback 1 to samo, ale reaguje na strzelanie, tzn. nie widać czołgu i strzału, ale murek znika.
Kilka razy dodałem SCREEN SWAP po drodze, lecz plansza zaczęła mrugać.
[#275] Re: Tworzenie gier

@tukinem, post #274

Uruchom ten mój kod z posta powyżej i zobacz co się dzieje. Musisz przy Double Buffer użyć Bob Update Off, a potem w pętli głównej Bob Draw i Bob Clear.

PS Komedy Bob Draw i Bob Clear w pętli głównej używasz tylko raz. Najpierw komendą BOB ustawiasz pozycję bobów, a później za jednym razem je rysujesz komendą Bob Draw.

Ostatnia aktualizacja: 31.08.2021 14:57:31 przez mastaszek
[#276] Re: Tworzenie gier

@mastaszek, post #273

ZgraBNY KOD :). to chyba będzie to OK.
Ja dodam od siebie jeszcze że Inc ZMIENNA przy najnowszej wersji Amos.Library nie warto stosować lepiej x=x+1. Wiem że kiedyś pisali że lepiej Inc ZMIENNA ale to już się zmieniło tak samo jak przesuwanie w prawo lub w lewo danych aby uzyskać dzielenie/ mnożenie przez 2 (do tego i tak musi być jakiś extension zainstalowany) to najszybciej jest mnożyć lub dzielić przez kolejną potęgę 2 .
[#277] Re: Tworzenie gier

@mastaszek, post #275

OK wyświetla czołg i strzał. Teraz po zestrzeleniu murku mruga miejsce, w którym murek jest zestrzelony. Tzn u mnie to działa na tej zasadzie, że gdy pocisk uderza w murek, to rysuję czarny bob 16x16 pikseli, który zakrywa wcześniejszy murek oraz aktualizacja tablicy, żeby go usunąć. Jednak teraz po zestrzeleniu murek mruga.
A strzelając w lewo lub prawo wyskakują mi artefakty, tak jak na początku pisania, zanim dodałem DOUBLE BUFFER. Ech ciężka sprawa :)

Ostatnia aktualizacja: 31.08.2021 15:03:59 przez tukinem
[#278] Re: Tworzenie gier

@jimiche, post #276

Masz rację z tym x=x+1. Natomiast nie trzeba extension do przesunięć, robią to polecenia ROL/ROR
[#279] Re: Tworzenie gier

@tukinem, post #277

Ten czarny bob stawiasz za pomocą Paste Bob?
[#280] Re: Tworzenie gier

@mastaszek, post #279

tak
[#281] Re: Tworzenie gier

@tukinem, post #280

podrzuć pliki, zerknę
[#282] Re: Tworzenie gier

@mastaszek, post #281

Gdy stawiasz 'pusty' Paste Bob, to jest on stawiany tylko na ekranie logicznym i dlatego miga. Są dwa rozwiązania:

1) musisz JESZCZE RAZ postawić tego pustego boba już po poleceniu Screen Swap

albo

2) w ogóle usuń 'pustego' paste boba i czyść zestrzelony fragment ekranu za pomocą CLS kolor,x1,y1 to x2,y2. Czyli po prostu zamalujesz ten kwadracik dowolnym kolorem. U Ciebie kolor czarny ma chyba nr 1.
[#283] Re: Tworzenie gier

@mastaszek, post #282

Można tak część ekranu wyczyścić? Spróbuję to zrobić później
[#284] Re: Tworzenie gier

@tukinem, post #283

Właśnie sprawdziłem i niestety metoda nr 2 też będzie migać, bo CLS też czyści tylko ekran logiczny. Za parę minut Ci napiszę jak to rozwiązać.
[#285] Re: Tworzenie gier

@mastaszek, post #278

Tak ale one chyba ratują.
[#286] Re: Tworzenie gier

@mastaszek, post #284

Po pierwsze, przesuń polecenie Bob Draw tuż przed samo Screen Swap.

A teraz się skup :)

To jest twój wyczyszczony fragment obrazu (tam, gdzie postawiłeś 'puste' Paste Boby):

(x1,y1)
|
#######
#######
#######
#######(x2,y2)

I teraz po postawieniu 'pustych' Paste Bobów, robisz:

Screen Copy Logic(0),x1,y1,x2,y2 to Physic(0),x1,y1

W ten sposób przekopiujesz ten 'pusty' kawałek z ekranu logicznego do ekranu widocznego i nic nie będzie migać. Powodzenia



Ostatnia aktualizacja: 31.08.2021 16:30:02 przez mastaszek
[#287] Re: Tworzenie gier

@mastaszek, post #286

Strzelanie do góry zrobiłem narazie i działa :)
Właśnie tak myślałem, że samo wycięcie ekranu CLS nie pomoże, bo to będzie to samo działanie na ekranie logicznym. Jak to zrobię, to będę myślał nad trawą.
[#288] Re: Tworzenie gier

@mastaszek, post #286

Strzelanie do góry i na dół działa. Na boki zostawia artefakty :/ zostaje ślad po strzale, a gdy strzelam blisko muru, to zostaje jego ślad.
link
tu jest już przerobiony przeze mnie plik ze wstawionymi współrzędnymi.
Próbowałem przesunąć BOB CLEAR przed strzelanie, bo myślałem, że nie będzie wtedy tego "zbierać" na drugi ekran, no ale jednak Amos jak zwykle uparty...
[#289] Re: Tworzenie gier

@tukinem, post #288

Skoro góra i dół działa, to znaczy, że sam mechanizm jest ok i musisz mieć gdzieś jakieś błędy we współrzędnych. Powiem Ci, że tam jest niezły gąszcz i sam bym się nie podjął szukania tych błędów :)

A jak miałeś wcześniejszą wersję bez Autoback 0, to wszystko działało, tzn murki znikały prawidłowo?
[#290] Re: Tworzenie gier

@mastaszek, post #289

Tak. Gdyby nie to dziadostwo, co zostaje to nawet bym DOUBLE BUFFER nie używał, bo właśnie to mi zostawało

link
tu jest spakowany już skompilowany plik bez AUTOBACK i on działa super

Ostatnia aktualizacja: 31.08.2021 17:13:36 przez tukinem
[#291] Re: Tworzenie gier

@tukinem, post #290

to co teraz zalinkowałeś mi się w ogóle nie uruchamia. Tzn wyskakuje z programu zanim cokolwiek się pokaże.

A co do artefaktów, to na pewno nie jest wina sposobu wyświetlania grafiki (double buffer, autoback 0 i boby). Musisz gdzieś mieć błędy logiczne w obliczeniach, albo warunkach. Tego jestem pewien.
[#292] Re: Tworzenie gier

@mastaszek, post #291

Musisz go wrzucić do folderu, gdzie masz pliki z gry, tzn level1 i brush.
Przestawiłem w warunkach strzelania z X na (X-5). Teraz jak strzelam z daleka to jest dobrze, a gdy strzelam z bliska, to zostaje mrugający murek.

W lewo się poprawiło, gdy strzelam z daleka. W prawo lipa :)

Ostatnia aktualizacja: 31.08.2021 17:31:54 przez tukinem
[#293] Re: Tworzenie gier

@tukinem, post #292

Coś musi być nie tak z XS i YS. Gdzieś coś się musi w obliczeniach nie zgadzać. Sam mechanizm rysowania masz już ogarnięty, więc zostawiam Cię z grzebaniem w obliczeniach. Trzymam kciuki!



Ostatnia aktualizacja: 31.08.2021 17:45:24 przez mastaszek
[#294] Re: Tworzenie gier

@tukinem, post #271

@tukinem
...Nie wiem, co z tego będzie, ale ta gra pójdzie na konkurs portów gier.

Wobec tego trzymam kciuki i życzę Ci powodzenia. Brakowało mi w Twoim projekcie ikony do Sokobana. Tak więc na zachętę dorzucam ją od siebie. Pozdrawiam


||
||
||
||
||
||
||
\/
Link do pobrania.
[#295] Re: Tworzenie gier

@p0su, post #294

Dzięki za dobre słowo ale tam jest ikona typu newicon :)
[#296] Re: Tworzenie gier

@tukinem, post #295

musze powiedziec, ze ogolnie watek ciagnie sie jak "magazyn 2" - moj ulubiony

a do rzeczy to....
wziales sie majster za najtrudniejsze rzeczy a wiedze z ksiazki masz nikla
proponuje poki co odstawic reczna obsluge ekranu i zrobic to prostszym sposobem


inicjacja ekranu:

Screen open 0,320,200,16,lowres
Flash off: Curs off: Cls 0
Double bufffer <-- aktywacja podwojnego buforowania ekranu (logiczny i fizyczny)

Autoback 1 <-- wlaczenie trybu polautomat, od teraz boby sa wsywietlane automatycznie ale nie mozna niczego rysowac w miejscu gdzie sie konkretnie znajduja. Czyli wszystko co bedzie narysowane komenda plot,draw,paste icon, paste bob, put block spowoduje glicza na ekranie w tym miejscu.

Bob Update off <- wylaczenie automatycznej aktualizacji polozenia bobow na ekranie.
Od teraz boby mimo zmiany wspolrzednych sie nie poruszaja. Zeby zobaczyc zmiane na ekranie po przesunieciu Bobow nalezy uzyc komendy Bob Update.

1. najpierw rysujesz mape komedna Put Bob czy Paste Icon
2. po narysowaniu wszystkich elementow stalych gry wyswietlasz obiekty ruchome
Bob 1,x,y,nr
Bob 2,x2,y2 nr
...
Bob 20,x20,y20,nr
itd..
zeby zobaczyc wyswietlone boby na koncu
Bob Update
wait vbl

petla glowna gry

Do
...
1. test klawiatury
2. test ruchu
3. jesli czolg sie rusza o 8 piksli w gore itp.. wyswietlamy boba

for i=1 to 8
Bob 1,x,y-i,nr
Bob Update
wait vbl
next i

4. jesli wykonano strzal ..

kroki= obliczona ilosc krokow pocisku

zmienne do kierunku lotu pocisku

xp= <--- wspolrzedne pocisku obliczane na podstawie miejsca gdzie znajduje sie czolg
yp=

ksx= -4 <--- np. 4 piksle poziomo w lewo lub +4 jesli w prawo
ksy= 0 <--- jesli w gore /dol to tu dodajesz lub odejmujesz 4



for i=1 to kroki
Bob 10,xp,yp,nr
Bob Update
wait vbl
xp=xp+ksx
yp=yp+ksy
next i

...tutaj konczy sie tor lotu pocisku i uwaga !!
Bob off 10 <--- zdejmujemy pocisk z ekranu
Autoback 2 <-- wlaczamy na chwile pelen tryb automat ekranu
xm= <--- obliczamy wspolrzedne murku (lewy gorny rog) na podstawie pocisku
ym=
Paste Bob xm,ym,murek <--- rysujemy w miejscu pocisku grafike na ekranie np. uszkodzony murek
wait vbl
Autoback 1 <--- przywracamy tryb ekranu polautomat
Bob Update
wait vbl
...
...
...
Exit if keystate(69)=-1
Loop
end

Ogolnie zasada jest taka, ze tryb najwolniejszy wlaczamy tylko w trakcie rysowania grafiki stalej, czyli w momencie uderzenia pocisku w murek zatem opoznienie na jedna chwile bedzie niezauwazalne.
Jak tego nie skumasz to pozniej wklepie jakis programik pogladowy w jazda czolgiem.

A teraz bierz sie za czytanie ksiazki i nie zgaduj, bo zgadywaniem i klepaniem w ciemno duzo nie uklepiesz poza Qpom. ok, racja




Ostatnia aktualizacja: 01.09.2021 10:28:30 przez selur
5
[#297] Re: Tworzenie gier

@tukinem, post #295

@tukinem
...ale tam jest ikona typu newicon :)


Zatem są dostępne dwa rodzaje. Dla zainteresowanych w "nowym" lub "starym" stylu :)
[#298] Re: Tworzenie gier

@selur, post #296

Dzięki za podpowiedzi. No właśnie domyślam się że dla wielu osób to może być wątek nawet gorszy niż "magazyn" bo często gdy czegoś nie pojmuję to jestem prowadzony "za rękę". Wielu rzeczy nie rozumiem i z książek nie umiem tego wykorzystać w rzeczywistości. Bez Waszej pomocy nie pojąłbym ani obsługi tablic ani wykorzystania pamięci do wczytania wszystkich kolorów z ekranu. Wiem że do wielu rzeczy muszę podejść łopatologicznie gdyż jestem amatorem w tej dziedzinie. Na codzień jestem pracownikiem fizycznym a nie programistą. Cieszę się że i tak wielu ma tu cierpliwość bo jak czytałem temat "magazyn" i falę hejtu jaka się tam wylewa to mnie czasem przeraża że przy moich problemach jakie tu wychodzą macie tyle spokojnych nerwów i empatii wobec moich "twórczości" :) póki co z dwóch moich projektów jestem zadowolony tj. Sokoban i siatkówka. Reszta stoi w miejscu z problemami do rozwikłania...
1
[#299] Re: Tworzenie gier

@selur, post #296

o nawet ja załapałem dzieki @selur bardzo prosto wytlumaczone
Nie wiem jak inny ale mi sie przyda ten manual.OK

ten watek jest potrzebny takich wlasnie mi brakuje na ppa bo krok po kroku mozna sie nauczyć Amosa.
A watek o magazynie jest zupelnie inny, czy mozna sie czegos z tamtego watku nauczyc? raczej nie ale mozna np. poznac uzytkownikow ppa ich osobowość
1
[#300] Re: Tworzenie gier

@tukinem, post #298

Pojawia się tu wiele cennych wskazówek i mimo, że odstawiłem Amosa na bok to też z uwagą śledzę wątek. Zauważyłem, że kilka problemów miałem bardzo podobnych ale idzie Ci z tym sprawniej niż u mnie. Powodzenia i wytrwałości :)
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