atarionline.pl ROBO TYPE - wszystko o grze - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthortdc
    • CommentTime28 May 2013 zmieniony
     
    Po przerwie prezentuję Wam nową wersję gry o numerze 3.0.

    Tym razem rozgrywka zmieniła się niemal nieodczuwalnie, natomiast zmieniło się bardzo wiele drobnych szczegółów, jednak w następnych wersjach należy się spodziewać większych zmian rozgrywki.

    Warto opisać w tym miejscu moje zmagania z kodem w ostatnich wersjach bo warto wiedzieć że Action! coś takiego umożliwia.

    Otóż w ostatnich 10 wersjach nie widać jakiś znaczących zmian w samej rozgrywce, dlatego że bardzo usilnie pracowałem nad jakością kodu, co określa się słowami: refaktoryzacja oraz optymalizacja. Oznacza to tyle, że po prostu napisałem na nowo/przepisałem znaczną część istotnego kodu gry w celu jego przyspieszenia, skrócenia rozmiaru a także dodania pewnych drobnych nowych elementów.

    To ciekawe, ale faktycznie to fajnie wyszło bo we wszystkich ostatnich wersjach kod gry kończył się około adresu $8100. Gdy dopisałem do gry jakiś drobny nowy element to kod zwiększał się o około 150 bajtów, potem ja optymalizowałem jakieś wybrane fragmenty gry i kod spadał poniżej $8100 o jakieś np. 100 bajtów. Potem znów coś napisałem i tak w kółko.

    To fajne, bo ja ciągle do gry coś dopisywałem przez 10 wersji i kod cały czas zajmował mniej więcej tyle samo miejsca !;)

    Oczywiście takie ciągłe zaoszczędzanie tych np. 200 bajtów było dużym wysiłkiem, wiele mnie to pracy i czasu kosztowało (dlatego w rozgrywce nie ma zbyt wielu zmian bo byłem skupiony na tych technicznych zagadnieniach).

    Po co to robiłem?

    Aby pozostawić sobie maksimum miejsca na następne elementy gry, które chcę jeszcze dodać. Może to brzmi nieciekawie że w jednej wersji gry zaoszczędziłem np. 150 bajtów, jednak sumarycznie zysk jest obecnie dość spory, bo pierwsze optymalizacje rozmiaru rozpocząłem od momentu gdy Wieczór podesłał mi muzykę stereo, która zajmowała zbyt wiele miejsca w RAM. Dlatego do dziś zaoszczędziłem tak w przybliżeniu kilka kb kodu, oszczędzając jednorazowo właśnie po kilkaset bajtów.

    Do tej optymalizacji dołączył się też sam Wieczór, który za pomocą RMT zaczął optymalizować rozmiar swojej muzyki, dla mnie to kompletnie magiczne (bo nie znam się na tym), ale faktycznie jego muzyka zmieściła się w ramach jakie mu zadałem. To spore wyzwanie, bo przecież Wieczór nie programował, a jedynie zmieniał parametry muzyki i to musiał to robić tak aby nie odbiło się to ani na jakości technicznej muzyki ani artystycznej. Super sprawa !

    A do czego się przydały te wszystkie optymalizacje?

    Do tego, że obecnie mamy jeszcze trochę wolnego miejsca i możemy do gry jeszcze coś dodać. Bo jak mówiłem kod obecnie kończy się ~$8100, a muzyka się zaczyna od $A000. Dlatego jeśli do kodu dodamy te kilka kilobajtów, które zostały zaoszczędzone to kod kończyłby się obecnie około $9800 lub nawet wyżej. Czyli w obecnej wersji nie można by było nic do gry dodać, a teraz jednak można. Walczyliśmy i wywalczyliśmy;)

    Oczywiście to nie było łatwe - przepisywanie kodu już wcześniej optymalizowanego mocno sprawę komplikowało. W efekcie zmian kod dwa razy przestał mi działać (na chwilkę) oraz raz przestał w 100% działać algorytm kolizji, a to dlatego że optymalizuję już optymalizowany kod i powoli robi się to nieco trudne bo kod jest bardzo nieczytelny i powywracany nieco od kota strony:P itp.


    Warto dodać że najlepiej takie rzeczy robi się w asm, Action! oczywiście nie ma takich możliwości, jest językiem bardzo starym, kiedy nikt z twórców kompilatorów nie myślał o takich zagadnieniach - jednak mimo wszystko warto abyście wiedzieli, że takie operacje są w leciwym Action! możliwe.

    Bardzo fajnie się też przy takich refaktoryzacjach sprawdzają nowoczesne kompilatory np. C/C++ (tym razem nowoczesny <> od "Microsoft" - jak ostatnio była o tym mowa w innym miejscu tego forum;)
    Action! pod względem dostępnych możliwości oczywiście absolutnie nie może się równać z C/C++, niemniej sam z siebie radzi sobie naprawdę bardzo dobrze w porównaniu z np. cc65 (który jest nowszy i nowocześniejszy).

    Piszę to wszystko również dlatego że niebawem ma nastąpić pewien przewrót w świecie Action!, wtedy lepiej będzie można zapoznać się z tym zagadnieniem, czyli tym czego Action! nie robi oraz tym w jaki sposób można to osiągnąć.
    No ale na razie o tym sza!;) więcej już niebawem;)


    Oto pobieżny opis zmian w grze od ostatniej wersji (2.0) do obecnej:
    - usunięta kaszana widoczna przez ułamek sekundy
    - narysowałem trzy nowe grafiki tła (2* bazy kosmiczne + gwiezdne miasto)
    - niewielkie zmiany i poprawki w grafice gry (tło)
    - niewielkie zmiany w rozgrywce
    - w grze pojawiło się kilka nowych plików
    - pojawia się napis game over
    - usunięcie kilku drobnych bugów zgłoszonych przez Kaza
    - przesunąłem nieco pociski wystrzeliwane przez wrogów
    - stworzyłem algorytm dynamicznie synchronizujący się z playerem muzyki i wykorzystujący go do celów gry
    - czołówka: dodanie dodatkowych kolorów na dole ekranu oraz na głowie. Zmiana kolorów w tle, na czerwony:

    Tak wyglądała czołówka w wersji 2,0:

    - po optymalizacji prędkości kodu w wer. 2,5, gra wyrabia się w ramce przy mniejszym obciążeniu (pierwsze plansze) (w kolejnych wersjach oszczędności są jeszcze większe)
    - zmieniłem rozkłady prawdopodobieństw wybuchów pojazdu gracza, mam nadzieję że teraz wybuchy są ładniejsze
    - nieco udoskonaliłem i uelastyczniłem powyższy kod
    - mocno przebudowałem algorytmy rysujące przeciwników, działają teraz zupełnie inaczej i kilkukrotnie szybciej
    - zmieniłem nieco kolor wybuchów
    - mocno refaktoryzowałem kod pocisków gracza oraz kolizje
    - zgodnie z Waszymi prośbami zmieniłem nieco kolor najpowszechniejszego bonusa, wcześniej był to ciemny niebieski, teraz jest bardziej morski i jaśniejszy
    - zwiększyłem prawdopodobieństwo pojawiania się efektów zakłóceń hologramów oraz pojawiają się one teraz na dwa różne sposoby. Od tej pory efekty te będą znacznie bardziej widoczne niż wcześniej (przez większą ilość ramek)
    - bardzo dużo refaktoryzacji kodu w celu zmniejszenia rozmiaru kodu oraz dla przyspieszenia go (co wyżej opisałem)
    • 2:
       
      CommentAuthorlarek
    • CommentTime28 May 2013
     

    tdc:

    tym czego Action! nie robi oraz tym w jaki sposób można to osiągnąć.

    Przyznam, że to mnie zaintrygowało :)
    • 3:
       
      CommentAuthorlarek
    • CommentTime28 May 2013
     
    Napis "Game Over" ładny :)
    Trochę brakuje mi informacji o autorach gry. Na obrazku tytułowym jest tylko podpis Inserta.
    • 4: CommentAuthornodez
    • CommentTime28 May 2013
     
    jw.
    pozatym znacznie przyjemniej sie gra
    • 5:
       
      CommentAuthorMaW
    • CommentTime28 May 2013 zmieniony
     
    gra się nie odpala z kaseciaka z "wykrzyknikiem" :D

    ...a poza tym, to się dobrze gra, z tym że brakuje tego, co i przedtem brakowało:
    - wrogów w różnych kolorach (no przynajmniej przy pojawianiu się gra mogła by sygnalizować, że doszedł nowy sprajt)
    - dźwięku wybuchów (dla potrzebujących wrażeń:P)

    i tak sobie grając stwierdzam, że chyba lepszym by było stopniowanie osłabienia osłony zamiast tracenia od razu życia - poza tym, statek wybuchając chyba powinien też niszczyć wrogów, na których wpada :-)
    • 6:
       
      CommentAuthortdc
    • CommentTime31 May 2013
     

    larek:

    Przyznam, że to mnie zaintrygowało :)

    Powiem tyle jedynie, że w tajemnicy powstaje pewien ciekawy projekt, z którym o dziwo nie mam nic wspólnego, a nawet Kuba i Yosh również;)

    larek:

    Trochę brakuje mi informacji o autorach gry. Na obrazku tytułowym jest tylko podpis Inserta.

    No można dodać, ale komu to jest potrzebne ? Już chyba wszyscy wiedzą kto jest autorem czego;):)

    MaW:

    gra się nie odpala z kaseciaka z "wykrzyknikiem" :D

    Obecna wersja gry jest rozwojowa, gdy zostanie zakończony ten etap pracy nad grą przygotujemy może bardziej zjadliwą wersję uruchamialną, na razie nie ma co podejmować prób z np. wykrzyknikiem (prędzej może coś by się udało z xBiosem:P)

    MaW:

    wrogów w różnych kolorach

    To nie stanowi problemu od strony technicznej (nawet edytorem plików można sobie te kolory zmienić:P), w każdej chwili można dodać kolory, jednak do tego potrzebuję konsultacji artystycznej z jakimś grafikiem - jak na razie graficy milczą.

    MaW:

    - dźwięku wybuchów

    Też bym chciał ale na razie jest to zupełnie poza naszymi zainteresowaniami. Skupieni jesteśmy na podstawowych kwestiach np. grywalności itp.

    MaW:

    chyba lepszym by było stopniowanie osłabienia osłony zamiast tracenia od razu życia

    Tak, jeszcze przed party o tym myślałem, ale jednak zdecydowałem się zrezygnować z tego (głównie z powodu zaskoczenia jaką okazały się wymagania muzyki, to spowodowało że wiele rzeczy przestało mieć sens i stało się trudniejsze do osiągnięcia).


    MaW:

    - poza tym, statek wybuchając chyba powinien też niszczyć wrogów, na których wpada :-)

    Oczywiście masz rację, dlatego być może już w następnej wersji tak będzie;)
    • 7:
       
      CommentAuthorlarek
    • CommentTime31 May 2013 zmieniony
     

    tdc:

    - dźwięku wybuchów

    Też bym chciał ale na razie jest to zupełnie poza naszymi zainteresowaniami. Skupieni jesteśmy na podstawowych kwestiach np. grywalności itp.

    Dziwne, bo to właśnie wpływa na grywalność.
    • 8: CommentAuthorwieczor
    • CommentTime31 May 2013
     
    Jeśli chodzi o efekty dźwiękowe to pomijając sprawy złożoności kodu (o których się nie wypowiem, bo kodu nie widziałem) opcje mogą być następujące:

    1. Wybór muzyka/efekty w czasie gry np. klawiszem M lub jakimś innym
    2. Lekka kastracja muzyki i umożliwienie jej odtwarzania razem z efektami.

    Jest tak gdyż obecnie muzyka używa wszystkich 4 kanałów z obu chipów. Jej modyfikacja aby używała tylko 3 powinna być możliwa aczkolwiek pewność będę miał gdy spróbuję. A spróbuję gdy autor gry powie, żebym sobie tym zawracał głowę.

    BTW: efekty również mogłyby być w stereo, np. panning w zależności od tego w którym miejscu ekranu znajduje się statek lub wybuchający przeciwnik. Byłaby to nowa jakość na Atari :)
    • 9: CommentAuthorilmenit
    • CommentTime31 May 2013
     
    1. Czy jest jakiś powód dla którego nie trzeba trzymać fire? Jeżeli nie, to proponuję dodać autofire.
    2. Ktoś już wspominał - przy przechodzeniu na kolejny poziom muzyka powinna lecieć dalej.
    • 10:
       
      CommentAuthorMaW
    • CommentTime31 May 2013 zmieniony
     
    TeDeC, co do "wielu kolorów wrogów" - chodziło mi o efekt, który można uzyskać korzystając z DLI - powiedzmy od linii 0 kolor 1* ma wartość 36, a kolor 2* wartość 145. Od linii 70* kolor 1* ma wartość 68, a kolor 2* ma 199. Jeżeli teraz zadbamy o to, by tory wrogów mieściły się w tych "korytarzach", to mamy nikłym obciążeniem procesora załatwione kilka dodatkowych kolorów na ekranie.
    (* - strzelam)

    Przykład:
    • 11: CommentAuthorwieczor
    • CommentTime2 Jun 2013
     
    Przepraszam, ja służbowo, na statek:

    Jest jeszcze bramka numer 3, tzn. efekty na GTIA. Ale autor musi się wypowiedzieć czy da radę, bo wtedy to już czasowo może się zrobić ciasno :)
  1.  
    Dzieje się jakiś rozwój?

    Wieczor zrobił naprawdę świetną muzę i warto byłoby ją dopełnić grą :)
    • 13:
       
      CommentAuthortdc
    • CommentTime14 Jul 2013 zmieniony
     
    Bardzo powoli prowadzę dalsze refaktoryzacje, cały czas staram się pozostawić grę w obecnym kształcie, a przy tym zaoszczędzić co się da. Zwolniłem prace bo mam zbyt wiele na głowie, tak sobie cały czas obiecuję że w końcu odpowiem na Wasze posty... tak obiecuję... sorry.

    Ale kiedyś moja odpowiedź nastąpi - tego możecie być pewni.