kategoria: AMOS
[#721] Re: Tworzenie gier

@lukzer, post #720

Przy uruchamianiu mogą się nie zgrywać. Później już raczej powinny. Co do gnicia zbiorów... wiązałoby się to z kolejną porcją grafiki, dodania kolejnych warunków i zmiennych liczących czas. Może coś takiego będzie, gdy już ustawię ostateczny czas dojrzewania. Najpierw muszę jeszcze rozwinąć dojrzewanie tak, aby odróżnić czas dojrzewania roślin np. czas pszenicy 10 sekund, marchwi 1 minua itd.
[#722] Re: Tworzenie gier

@lukzer, post #720

- procenty zapełnienia magazynu poprawione
- poprawiony błąd podczas zbierania mleka do magazynu
- dodana kura, która gdacze, gdy zniesie jajka (wcześniej trzeba ją nakarmić)
- dodane nowe wskaźniki myszy (stworzone przez Selura, ale jeszcze obsługa ich wymaga dopracowania kodu)
- ciągle staram się optymalizować kod gry

Obecnie tak to wygląda:



Proszę o testowanie, bo u mnie w emulatorze strasznie mrugały rośliny po uruchomieniu z CPU 7MHz. Chyba to poprawiłem, ale lepiej, niech jeszcze więcej osób to przetestuje.

Widzę, że nawet Saberman zainteresował się grą
1
[#723] Re: Tworzenie gier

@tukinem, post #722

A o co generalnie w tym chodzi? Sadze co tam mi pod rękę wpadnie, potem zbieram. Ale gdzie tu będzie gra?
[#724] Re: Tworzenie gier

@Aniol, post #723

Jak nie wiadomo o co chodzi w grze, to chodzi o piniondze. pomysł
Sa one w prawym gornym rogu, jak sie zarobi milion, to pozniej juz tylko bedzie mozna wydawac na zachcianki. Na lepszy domek, wieksze jeziorko, fajniejsza krowa , fajna swinie ,plotek z betonu i stali, moze jakis ciagnik a na samym koncu.... przyjdzie urzednik i wszystko zabierze, bo KRUSu nie oplacono i wtedy zacznie sie zrecznosciowa czesc gry - strzelanie za pomoca celownika do grupy interwencyjnej Policji cos jak nasze, slynne, polskie "Miasto Smierci" nota bene tez napisane w Amosie ok, racja

Ostatnia aktualizacja: 14.05.2022 04:08:24 przez selur
2
[#725] Re: Tworzenie gier

@selur, post #724

To może lepiej od razu te rzeźnię zrobić, bez przekombinowanego wstępu
1
[#726] Re: Tworzenie gier

@tukinem, post #722

No gry mogą być nowatorskie. Przykładem jest np. gra Paper Boy, czy Tapper. Nie powielają schematów.

Twoja gra wygląda sympatycznie. Widzę wiele fajnych pomysłów.

Wysuwane panele są super, ale z tego co pamiętam AMOS ma też możliwość tworzenia okienek z ramkami oraz prześlicznych okien dialogowych.

Jeżeli masz ambicję na grę ekonomiczną rozgrywaną na wsi to spróbuj zaplanować sobie gameplay.

Uważam, że dobrym wzorcem mogłyby być takie gry jak Sim City. Pamiętam, że lubiłem tę grę na Amidze.

Ludzie tworzyli nawet symulację torów kolejowych w Railroad Tycoon. Ważne by mieć pomysł na grywalność, coś co wciągnie gracza.

Proponuję też, by ułatwić sobie pracę - zostawić grafikę jako szkic (wypełniać później), nie martwić się o dźwięki - bo dodanie dźwięku jest proste.

Jeśli chodzi o optymalizację kodu, to warto pisać procedury w taki sposób, by kluczowy dla wydajności kod był wydzielony od reszty.

Może zmniejsz póki co liczbę elementów aktywnie animowanych. Przecież krowa nie musi być w tej chwili animowana i muczeć. Jak już zrobisz te zestawienia i panele - kluczowe dla gry - to dodasz i animacje.

Pozdrawiam.

P.S. Na minus, to aktualnie przygrywające podczas gry dźwięki są troszkę irytujące - według mnie lepiej je wyłączyć i dodać na koniec już dopracowane.
1
[#727] Re: Tworzenie gier

@Hexmage960, post #726

Zacząłem grę od słabości Amosa, czyli chciałem sprawdzić na ile mogę sobie pozwolić z graficznymi bobami w 32 kolorach, kilku ekranach, jak to się będzie zgdywać z dźwiękiem. Na wprowadzenie poszczególnych zadań przyjdzie czas. Powiedzmy, że bez solidnego szkieletu reszta się rozsypie. Zmniejszając grafikę nie wyłapię wielu błędów, które później może być ciężko wyeliminować.
[#728] Re: Tworzenie gier

@tukinem, post #727

Powiedzmy, że bez solidnego szkieletu reszta się rozsypie. Zmniejszając grafikę nie wyłapię wielu błędów, które później może być ciężko wyeliminować.

Rozumiem. Również uważam, że szkic/szkielet jest najważniejszy. Ale powinien on dotyczyć również grafiki oraz animacji.

Chciałeś przetestować wydajność AMOSa - dobrze, przy czym w Twojej grze zawsze możesz zastąpić/zredukować elementy animowane, bo nie są one kluczowe dla rozgrywki.

To o co mi głównie chodziło, to wydzielić funkcję rysującą, którą - później - można by optymalizować np. poprzez zmniejszenie liczby obiektów.

Ostatnia aktualizacja: 14.05.2022 08:03:05 przez Hexmage960
[#729] Re: Tworzenie gier

@Hexmage960, post #728

To o co mi głównie chodziło, to wydzielić funkcję rysującą, którą - później - można by optymalizować np. poprzez zmniejszenie liczby obiektów.

Nie bardzo rozumiem... za brak płynnej animacji w tej grze odpowiada spora ilość bobów (sprajty programowe), które spowalniają płynność i szybkość. Jest ich tu aż 15 na ekranie 32 kolorowym. Do tego dochodzi ciągłe sprawdzanie stref myszy, których jest jeszcze więcej. Oprócz tego jest liczenie klatek programu służących do animacji oraz liczenie rzeczywistych sekund dla czasu dojrzewania roślin i produkcji mleka/jajek. Już nie wiem jak to bardziej zoptymalizować. Spróbuję dzisiaj jeszcze poprawić zmiany wyglądów kursorów, bo nie zawsze działa to jak powinno. Jeśli się uda to dodam też nowe grafiki dla następnych roślin. Tego nigdy za wiele.

Swoją drogą za półtora miesiąca mam urlop, więc może wtedy ruszę z menu gry, misjami do wykonania i gra będzie miała zupełnie inny charakter...

Ostatnia aktualizacja: 14.05.2022 08:50:08 przez tukinem

Ostatnia aktualizacja: 14.05.2022 08:51:24 przez tukinem
[#730] Re: Tworzenie gier

@tukinem, post #729

Nie bardzo rozumiem... za brak płynnej animacji w tej grze odpowiada spora ilość bobów (sprajty programowe), które spowalniają płynność i szybkość. Jest ich tu aż 15 na ekranie 32 kolorowym. Do tego dochodzi ciągłe sprawdzanie stref myszy, których jest jeszcze więcej. Oprócz tego jest liczenie klatek programu służących do animacji oraz liczenie rzeczywistych sekund dla czasu dojrzewania roślin i produkcji mleka/jajek. Już nie wiem jak to bardziej zoptymalizować.

Piętnaście obiektów aktywnie animowanych to całkiem sporo.

Wydzielenie procedury odpowiedzialnej za animację umożliwi w przyszłości przyśpieszenie programu.

Zoptymalizować rysowanie możesz:

- Zmniejszając tempo animacji. Nie wszystkie obiekty muszą być animowane 50 klatek na sekundę. Przecież drzewka, rośliny oraz krowa to raz na kilka sekund wystarczy.

- Zmniejszając rozmiar obiektów.

Wiem, że AMOSie może być to trudne, bo kod rysowania BOBów jest sztywny.
1
[#731] Re: Tworzenie gier

@Hexmage960, post #730

Tu zmiana częstotliwości animacji nic nie da, bo taka krowa, czy kura rysowane są nie poprzez Paste Bob, tylko Bob. Próbowałem Paste Bob, ale to tu nie zda rezultatu. Wszystko mrugało przy zmianach animacji. To nie Sokoban, gdzie przerysowywało się 4 kafle 16x16 pikseli

Dlatego tu musiałem użyć "sztywnych" bobów programowych.

Co do obiektów, to już są powycinane odpowiednio, oraz są do nich porobione strefy ZONE.

Animację mam zrobioną w sposób taki:
1. KLATKA to zmienna klatek na sekundę zwiększana o 1
2. Jeśli KLATKA=50, to zmienna jest zerowana
3. Jeśli KLATKA jest podzielna przez 5, to rośnie zmienna LICZNIK_ANIMACJI.

Równolegle idzie liczenie sekund, czyli:
1. Jeśli 1/50 TIMER=1, to TIMER jest zerowany, a rośnie zmienna SEKUNDA
2. Co sekundę (czyli przy każdej zmianie zmiennej SEKUNDA) jest sprawdzane, czy któraś roślina urosła, czy krowa skończyła dawać mleko itd.

Tak to mniej więcej wygląda.
1
[#732] Re: Tworzenie gier

@tukinem, post #731

Lepiej staraj sie nie uzywac dzielenia, bo jest bardzo wolne. Nie wiem na ile sprytny jest AMOS, ale zeby bylo szybciej to normalnie w asemblerze uzywa sie instrukcji przesuwajacych bity, czyli najczesciej dzieli sie przez 2, 4, 8, 16, 32, 64, 128, 256. Wiec byc moze przez 4 byloby szybciej.
1
[#733] Re: Tworzenie gier

@selur, post #724

Prawdziwe pieniadze to sie robi na bimbrze. Ale to najpierw trzeba posadzic buraki cukrowe, przerobic je na cukier. Kupic w GS-ie drozdze. Posiac zboze, posadzic ziemniaki. Zebrac zbiory. Zdobyc pieniadze na sprzet do destylacji itd. Wiec jeszcze sporo rzeczy bedzie sie w grze dzialo.
1
[#734] Re: Tworzenie gier

@Don_Adan, post #732

Napisałem narazie od nowa warunki zmiany wskaźników kursora. Teraz działają bezproblemowo.

Odnośnie dzielenia, to chyba raczej nie robi różnicy w Amosie. Przeliczanie akurat jest ok, w przeciwieństwie do obsługi grafiki i rysowania. Myślę, że to tak jak z komendą INC i DEC, które kiedyś spowalniały Amosa, ale to już mit.

Przez napisanie od nowa obsługi grafiki kursorów myszy, znowu pojawił się problem mrugania, ale już wiem o co chodzi. Zbyt daleko w kodzie miałem rysowanie bobów i komendę Vait Vbl : Screen Swap. Pozmieniałem trochę kolejność i dochodzę już do bezbłędnej obsługi gry.

Co do bimbru, to ciekawe rozwiązanie Buraki i pszenica już są. Do tego grafika aparatury do bimbru i losowe pojawianie się policji szeroki uśmiech jeśli policja wyczuje produkcję, to aparatura będzie zabierana i będzie kolegium szeroki uśmiech
2
[#735] Re: Tworzenie gier

@tukinem, post #734

Zalezy ile razy dzielenie jest wykonywane, ale ogolnie lepiej jest unikac uzywania dzielenia w programie na Amidze jesli to ma byc szybkie, bo jedno dzielenie to jest ekwiwalent nawet parudziesieciu instrukcji, jesli chodzi o czas wykonywania. Duzo szybsze sa tabele.
[#736] Re: Tworzenie gier

@Don_Adan, post #732

To nie kwestia dzielenia czy mnozenia, wiekszosc poczatkujacych programistow Amosa wrzuca wszystko do glownej petli, co powoduje kilkukrotne spowolnienie jego dzialania a i tak wiadomo, ze sam Amos to slimak.

Kilka lat temu zrobilem sobie sporo testow i okazuje sie, ze optymalizacja w AMOSie za pomoca instrukcji nie ma kompletnie sensu. Przyspieszenie uzyskuje sie jedynie za pomoca stablicowania wszystkiego w pamieci i ulozenia odpowiednio programu tak, zeby nie robil zbednych rzeczy i odswiezal grafike jak najmniej sie tylko da.
No i dochodzi sprawa kiepskiego opisania trybow ekranu przez co ludzie nie wiedza jaki tryb nalezy zastosowac i jak go obslugiwac i stad moje pytanie jakim cudem ktos moze pisac gre w C, skoro nie ogarnal prostego w programowaniu AMOS'a... to jest dla mnie czarna magia.
1
[#737] Re: Tworzenie gier

@selur, post #736

Ogólnie problem stwarza sama obsługa bobów. Jeśli tego jest dużo na ekranie to się zaczynają właśnie spowolnienia i nic tu nie poradzisz.

Amos jest prosty ale jest ograniczony i samo pisanie w nim nie jest trudne, a trudnością jest walka z jego ograniczeniami. Konieczność użycia podwójnego buforowania spowalnia wszystko i żadne tryby Autoback nie zniwelują tego. Użyłem sporą ilość kolorów w palecie oraz dużą ilość bobów na ekranie więc takie są skutki.
[#738] Re: Tworzenie gier

@tukinem, post #737

Otoz to, tu masz calkowita racje "samo pisanie w nim nie jest trudne, a trudnością jest walka z jego ograniczeniami".
Dopiero po jakims czasie programista nabiera nazwijmy to "amosowych" nawykow, ktore pozwalaja na wykorzystanie jego mozliwosci.
Na poczatku jest zawsze walka z czasem wykonywania instrukcji a raczej jego brakiem dla wykonywania instrukcji. Ale jak mawia stare porzekadlo "trening czyni Miszcza Amosa" ok, racja
[#739] Re: Tworzenie gier

@selur, post #736

To jest oczywiste, ze w glownej petli powinno byc jak najmniej, i niektore rzeczy/eventy powinny byc sprawdzane co 2, 5, 10 albo 50 klatek. Ale lepiej jest zamiast dzielenia przez 5, uzyc dodawania +1 i w momencie gdy licznik osiagnie 5 wykonac akcje i wyzerowac licznik.
[#740] Re: Tworzenie gier

@Don_Adan, post #739

Sprawdziłem to. Pousuwałem dzielenia, a dodałem zerowania zmiennych. Nic to nie zmieniło. Problem to samo rysowanie grafiki. Sprawdzanie stref, czy zmiennych i obliczenia to jest nic w porównaniu z trzymaniem 15 bobów na 32 kolorowym ekranie. Fizyki się nie oszuka. No ale już tak zostawię, skoro dzielenie może stanowić jakieś tam opóźnienia. Bardziej mi się wydaje, że opóźnia sama obsługa tej myszy i zmiany wskaźników. Niby Change Mouse używane jest tylko, gdy zmienia się zmienna myszy, ale i tak to jest dodatkowe kilka linijek kodu, które program musi "zaliczyć".
[#741] Re: Tworzenie gier

@tukinem, post #740

Ja bym rozdzielil ekrany. Strzalka w lewo, np zwierzeta, strzalka w prawo np. uprawy. Po srodku (czyli aktualny widok) budynki gospodarcze, bimbrownia, piwniczka, studnia itp. Nie ma co wszystko na jeden ekran wrzucac.
1
[#742] Re: Tworzenie gier

@Don_Adan, post #741

Trochę szkoda miejsca marnować w adf-ie na grafikę. Mam pomysł na destylarnię. Już zacząłem zbierać grafikę, ale jednego mi brakuje. Postawiłem koło domku wychodek. W nim po otwarciu będzie bimbrownik. Zrobiłem grafikę małej aparatury (nie pytajcie skąd, ale jest ładna malutka, kto się domyśli z jakiej gry może zgadywać), grafikę flaszeczki zrobiłem, jeszcze zostało narysowanie samego wychodka. Ten, który ja narysowałem w PPaincie, to jest karygodne aha dodałem pseudo trzeci wymiar dla domku, tak po swojemu.
Oto ekran gospodarstwa:


A tu grafika do wycięcia środka wychodka, bimbrownika oraz flaszki:


Tu będzie dodatkowo jeden animowany bob samej aparatury podczas pracy. Tylko ten wychodek to tragedia. Ktoś by się podjął "poprawienia" go trochę?

PS. Na pewno sam Giees, to będzie osobna grafika i tam będzie można kupić aparaturę oraz puste butelki. Sprzedaż plonów (zastanawiam się). Albo będzie skrzynka na listy, w której będą ogłoszenia, lub w samym gieesie będzie się sprzedawać plony. Nie wiem, co będzie lepsze.

Ostatnia aktualizacja: 14.05.2022 19:23:38 przez tukinem
[#743] Re: Tworzenie gier

@tukinem, post #742

Hej, czy próbowałeś te komendy do okienek oraz okien dialogowych w AMOSie?

Okna dialogowe (Interfejs AMOSa) mają osobny bardzo obszerny rozdział nr 9 w podręczniku do AMOSa Pro.

Okienka są w rozdziale nr 5.07.

Jestem pewien, że Ci się bardzo to przyda do zbudowania okien dialogowych gdzie np. poprosisz użytkownika o dokonanie wyboru, wyświetlisz komunikat, statystyki itp.

Kiedyś kiedy pisałem w AMOSie pamiętam, że używałem tych okienek.

P.S. Czy AMALa nie można przypadkiem użyć do optymalizacji animacji (komenda UPDATE EVERY)?

Ostatnia aktualizacja: 14.05.2022 19:43:01 przez Hexmage960
[#744] Re: Tworzenie gier

@Hexmage960, post #743

Jasne, że AMALa można użyć do animacji, ale trzeba bardzo ostrożnie z synchronizacją. Po drugie AMALem mogę przesuwać boby, ale nie wiem jak ze zmianą samego obrazka na następny. Tutaj samo wyświetlanie bobów pobiera całą płynność. AMALem mogę urozmaicić i wstawić latającą muchę na ekran w formie sprajta i wtedy nie będzie problemu z optymalizacją, bo AMAL zrobi wszystko w tle nie spowalniając reszty

Co do okien dialogowych to wykorzystam to na ekranie sklepu (gieesu), gdzie będzie można kupić oraz sprzedać towar. Nigdy tego rozdziału AMOSa nie ruszałem, więc chętnie się podejmę tego. W tej grze jak najbardziej to się przyda. W menu głównym również na ekranie opcji trzeba tego będzie użyć np. do zaznaczania opcji muzyki, wczytywania save itd.
[#745] Re: Tworzenie gier

@tukinem, post #744

Tutaj samo wyświetlanie bobów pobiera całą płynność.

Tak, wyświetlanie Bobów zabiera płynność. Dlatego też prawdopodobnie można skorzystać z polecenia "Update Every n", które aktualizuje Boby co n klatek.

Proszę, oto fragment instrukcji to opisujący (rozdział o AMALu):

UPDATE EVERY
instruction: control update intervals
Update Every number
The UPDATE EVERY command slows down the updating process, so that even the largest Object can be re-drawn
during a single screen update. The animation system is regulated by this process, once again providing smooth
movement. After the UPDATE EVERY command, simply specify the number of vertical blank periods between
each screen update, in 50ths of a second. Begin your timing changes with a value of two, and increase the value by
one unit at a time until the animation becomes smooth.
One useful effect of using UPDATE EVERY is to reserve more time for AMOS Professional to execute the main
program. In fact, with careful use of this instruction, it is possible to speed up programs by as much as one third,
and still maintain excellent animation.

Przyznam, że bardzo wielu rzeczy z AMOSa zapomniałem i mogę się mylić. Może niech inni bardziej obyci koledzy (Selur) się wypowiedzą.

Ostatnia aktualizacja: 14.05.2022 20:11:43 przez Hexmage960
[#746] Re: Tworzenie gier

@Hexmage960, post #745

Przeglądałem teraz o tej instrukcji w książce. Faktycznie można aktualizować boby tą komendą nawet bez AMALa, tylko że chodzi o zmianę numeru grafiki w bobie w danym odstępie czasowym np.
Bob 1,X,Y,2

a za pół sekundy zmienić na
Bob 1,X,Y,3

Tego ta komenda chyba nie zrobi. AMALem można sobie przesuwać boba w odpowiednio zaprogramowanym odstępie czasowym. To jest bardzo wygodne, bo nie musisz ustawiać liczenia klatek itd. Wszystko jest zawarte w jednej linijce. Później jedynie się uruchamia kodem np.
Amal On 1
[#747] Re: Tworzenie gier

@tukinem, post #746

Przeglądałem teraz o tej instrukcji w książce. Faktycznie można aktualizować boby tą komendą nawet bez AMALa, tylko że chodzi o zmianę numeru grafiki w bobie w danym odstępie czasowym np.

Obraz Boba aktualizujesz sobie samodzielnie co pół sekundy. Ta komenda tylko instruuje AMOSa by odświeżał Boby co n klatek. Domyślnie jest 1/50 sekundy (1 klatka). W książce radzą by sprawdzić najpierw z parametrem 2, później 3 aż osiągnie się pożądaną płynność.

Chodzi o to, żeby Boby, które aktualizujesz co pół sekundy nie były odświeżane co 1/50 sekundy, tylko co np. 2/50 sekundy lub rzadziej. Piszą, że poprawi to wydajność animacji.

Ostatnia aktualizacja: 14.05.2022 21:00:45 przez Hexmage960
[#748] Re: Tworzenie gier

@Hexmage960, post #747

Rozumiem. Z ciekawości z książki użyłem dokładnie komendy Autoback 0, zamiast Autoback 1 i muszę przyznać, że jeśli się odpowiednio napisze, to nawet jest całkiem przyjemnie. Będę musiał to jeszcze potestować.

Co do Update Every, to wpisałem tą komendę w pętli głównej z parametrem 2. Nie pomaga to wcale. Jeszcze gorzej jest. menu dolne wysuwa się skokowo, wszystko działa wolniej. Parametr 3 daje jeszcze gorszy efekt. Pewnie przez to, że gra i tak już wolno pracuje. To chyba nie nadaje się do palety 32-kolorowej i tylu bobów ekranowych.
[#749] Re: Tworzenie gier

@tukinem, post #748

AAAAAAAAAAAAAAaaaaaaaaaaaaa..... PSIK
[#750] Re: Tworzenie gier

@selur, post #749

Na zdrówko

Czyżby alergia Cię dopadła?
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