1

(21 odpowiedzi, napisanych Fabryka - 8bit)

Chciałbym ogłosić, że projekt nadal żyje. Spędziłem trochę czasu na dostrojeniu parametrów oraz zwiększyłem liczbę przeciwników na których bot może ćwiczyć. Dzięki tym zabiegom mój projekt zdobył brązowy pas w karate (wcześniej był żółty).

https://youtu.be/pRwTYCMFzig

Bot się uczył wyłącznie pokonywać przeciwnika więc jest za etapy bonusowe konsekwentnie otrzymuje równe zero punktów.

Myślę, że zabawa z International Karate dobiegła końca i czas przerzucić się na inną grę. Jednym z kandydatów jest Fred.

2

(21 odpowiedzi, napisanych Fabryka - 8bit)

Mq: Oczywiście, że AI to nie jest jakaś sekta nadludzi. Sam w sobie dzieli się na różne dziedziny jak na przykład przetwarzanie obrazu czy tekstu. Bardzo się cieszę, że zauważyłeś ten fragment z żółwiem w tunelu, długo pracowałem nad tym =D. Sam nie czuję się jakimś specem AI. Trochę zajęło mi stworzenie tego projektu ale to też dlatego, że wszystko robiłem od zera i próbowałem jednocześnie połączyć sieci neuronowe z reinforcement learning.

Zgrd: Maszyna jak i człowiek mają swoje zalety i wady. Myślę, że roboty bardzo długo nie będą kreatywne jak człowiek. Sztuczna inteligencja nie jest tak groźna jak ludzie z taką technologią i złymi intencjami.

Jak ktoś chce wejść w AI to polecam zacząć od PyTorch albo Tensorflow.

3

(21 odpowiedzi, napisanych Fabryka - 8bit)

xxl napisał/a:

czy program wie podczas jakiego ruchu przeciwnika stracil punkt?


Sieć neuronowa na wejście przyjmuje obraz (dla IK nie ma dodatkowych metadanych). Gdy walka się kończy to algorytm posiada cały przebieg scenariusza klatka po klatce wraz z nagrodą (dla każdej klatki). Im niższa nagroda tym coraz bliżej dostania w twarz. Więc algorytm może sobie wywnioskować, że gdy przeciwnik już wyciąga ręke to np. kucnięcie nie jest najlepszą opcją.

W skrócie, może sobie wywnioskować na podstawie obrazu ale nie ma żadnej metadanej opisującej jaki cios aktualnie zadaje przeciwnik.

4

(21 odpowiedzi, napisanych Fabryka - 8bit)

laoo/ng napisał/a:

Fajne. Idea nie jest oczywiście nowa, ale pierwszy raz w stosunku do Atari

https://www.youtube.com/watch?v=CI3FRsSAa_U

Ciekawe czy takie Mario nie jest może prostsze.

Niestety nie jestem pierwszy nawet jeśli chodzi o Atari. Projekt zaczynałem z Marianem (2 linki w poście wyżej). Każda gra ma jakieś swoje dziwactwa. Dużym wyczynem byłoby jakby bot nauczył się grać w Robbo albo Lasermanię.

5

(21 odpowiedzi, napisanych Fabryka - 8bit)

Mq napisał/a:

Tak czy owak super idea, choćby jako ciekawostka do poczytania, więc pisz relacje jak coś będziesz w tym kierunku dalej rozwijał, ja chętnie zawsze poczytam i obejrzę ewentualne filmiki na youtube itp. Dzięki!

Nie omieszkam się pochwalić =D. BTW mam jeszcze dwa filmiki ale nie są już związane z Atari (tylko NES)
https://youtu.be/KQFYevQB8R8?feature=shared
https://youtu.be/FK7icSIzwvQ?feature=shared

6

(21 odpowiedzi, napisanych Fabryka - 8bit)

Dziękuję za miłe komentarze =)

Program podłącza się do pamięci emulatora (Linux i te sprawy) i przez nią odbywa się pobieranie obrazu oraz sterowanie więc teoretycznie da się grać z botem na emulatorze.

Jeśli chodzi o rozbijanie desek to wystarczy wcisnąć sam dół gdy pojawi się GO, przed chwilą sprawdziłem =D. Co ciekawe jak grałem
to zawsze zostawała mi ostatnia deska a jemu za każdym razem udaje się wszystkie rozwalić ale to jest spowodowane tym że on cały czas wali w dół.

Robię projekt hobbistycznie i idea powstała raczej z potrzeby dłubania. Rzeczywiście stworzenie bota, który by umiał grać w każdą grę byłoby trudne tym bardziej że gry są przeróżne (w szczególności przygodówki jak Klątwa). Podmienianie sieci neuronowych ułatwiłoby sprawę ale nadal trzeba je wytrenować, na szczęście jak dostosuje się odpowiednie parametry to sam trenuje i nie potrzebuje żadnych danych uczących. Nauka IK trwała ok. 8-10h, nie wiem czy to dużo czy mało. Na pewno nie zastąpi żywego gracza. Jeszcze nie wiem, którą stronę pójdzie projekt.

Chciałbym zaprezentować Wam trochę inny projekt. Jest poniekąd związany z Atari dlatego zamieszczam tutaj wątek. Od jakiegoś czasu pracuję nad programem, który samodzielnie uczy się grać w International Karate. Wrzucam link to filmu (nie wrzucam tutaj bo trochę waży):

https://youtu.be/OMD9taO5DJA?feature=shared

Bot uczył się wyłącznie na przeciwniku poziomu pierwszego, więc o ile jest w stanie go pokonać to ma problemy przy wyższych poziomach ale zdobywa żółty pas i myślę, że jest to sukces =D.

Jest to algorytm aktor-krytyk wykorzystujący sieci neuronowe. Podczas treningu algorytm otrzymuje nagrodę za uderzenie przeciwnika albo karę gdy sam otrzyma cios bądź skończy się czas. W każdym z trzech przypadków gra jest resetowana (nie czeka aż ktoś zdobędzie dwa całe punkty).

Co sądzicie o takim projekcie? Chciałbym, żeby kiedyś program mógł grać jako drugi gracz ale też jestem ciekaw Waszego zdania.

8

(35 odpowiedzi, napisanych Software, Gry - 8bit)

Teraz córka ma pewnie z 13 lat =D ale wykorzystam odkop, może się przyda komuś z podobnym problemem.

Kickstart - może każdy ściga się na swoim torze ale za to jednocześnie
Herbert I i II -  jak wyżej
The convicts - gra podobna do robbo dla 2 graczy

9

(23 odpowiedzi, napisanych Fabryka - 8bit)

Fajnie wygląda. Sam tworzyłeś grafikę czy komuś zleciłeś?

10

(410 odpowiedzi, napisanych Fabryka - 8bit)

Zapytam się, żeby uniknąć nieporozumień. Mogę aktualnie ściągnąć ATR GW i ograć nie naruszając praw autorskich?

11

(11 odpowiedzi, napisanych Fabryka - 8bit)

@VLX Tak, to prawda, że przeciwnik jest bardzo agresywny i trzeba będzie zmienić sposób jego działania. Jeżeli chodzi o kolory mieczy to chciałem zrobić coś nietrywialnego, ale najwidoczniej przesadziłem . Taki miałem zamysł:
Szary - tryb dla dwóch graczy
Zielony - 1 poziom, przeciwnik wyłącznie atakuje i jest łatwy w kontrataku (blok i atak)
Żółty - 2 poziom, oprócz atakowania, także odskakuje przez co kontratak należy wykonać szybciej, żeby trafić
Czerwony - 3 poziom, przeciwnik także kontratakuje i jak wykonamy źle kontratak to przeciwnik wykona go na nas
Ostatni kolor - 4 poziom, jeśli ktoś go pokona to może się określić mistrzem gry.

A mechanika i sterowanie jest w porządku?

12

(11 odpowiedzi, napisanych Fabryka - 8bit)

Wątek na AOL założony https://atarionline.pl/forum/comments.p … e=1#Item_1

@gorgh dzięki =)

Widzę, że jest już 27 pobrań, dziękuję za zainteresowanie. Mam nadzieję, że interfejs jest klarowny i nie pomieszałem klawiszy START,SELECT i OPTION =D (testowane na emulatorze).

Ciekawie wygląda Tanks. Fajnie by było jakby można było np. zmierzyć odległość wroga i wyliczyć na kartce kąt strzału.

Odnośnie gry Project Commando to w NES jest jakaś domyślna czcionka czy sam ją tworzyłeś? "Press Start" wygląda mi bardzo znajomo.

14

(11 odpowiedzi, napisanych Fabryka - 8bit)

Na pewno nie tak od razu wystartowałem z assemblerem =). Tak jak jury zauważył, że miałem wcześniej styczność z programowaniem. Zawsze chciałem napisać jakiś program na Atari. Około 15 lat temu, programowałem na początku w Basicu, potem bawiłem się kodem maszynowym (ładowanym i uruchamianym w Basicu). Wtedy tego nie czułem ale to była rzeźnia... i kod też to była rzeźnia. Chciałem spróbować z Quick Assembler ale pamiętam, że sporo rzeczy nie ogarniałem, jak wykorzystać np. muzykę ułożoną w Chaos Music Composer, jak zrobić wykonywalny plik a przerwania to była jakaś zakazana magia. Przytłoczony niewiedzą na jakiś czas zostawiłem Atari i skupiłem się na PC (C++ i takie tam). Czasami sprawdzałem "co u Was słychać". Po kilkunastu latach nauki uznałem, że chyba już dam radę coś stworzyć na Atari i popełniłem oto dzieło.

dziękuję qbahusak za ciepłe słowa =) , jak się wstawia na AOL?

15

(11 odpowiedzi, napisanych Fabryka - 8bit)

Jestem fanem Atari od dość długiego czasu i chciałbym dodać swoją pierwszą cegiełkę do społeczności w postaci gry o nazwie Pojedynek.

Program zawiera mechanikę, której nie widziałem w innej grze. Co prawda istnieją takie gry jak International Karate czy Barbarian ale nie skupiają się, aż tak bardzo na parowaniu (no i są ładniejsze =D). Gra opiera się na pojedynku dwóch szermierzy. Atak odbywa się poprzez cięcie z góry lub pchnięcie. Ataki można wykonać z opóźnieniem w celu zmylenia przeciwnika. Uniknąć atak można wykonując odskok, który uchroni nas przed cięciem jak i pchnięciem ale ma chwilę opóźnienia. Można także wykonać jeden z dwóch bloków. Każdy z nich chroni nas przed odpowiednim atakiem ale jeśli zrobimy go w ostatniej chwili to przełamie gardę przeciwnika i umożliwi nam kontratak. Gra umożliwia przerwanie każdego ruchu w dowolnym momencie dynamicznie reagując na manewry przeciwnika.

Program pełni funkcję dema i ma na celu zapoznanie się z Waszą opinią, czy Wam się podoba i czy warto kontynuować projekt. Na pewno znajdzie się dużo rzeczy, które można by poprawić. Mam także trochę pomysłów na dalszy rozwój: atak z dołu, żeby były w sumie 3, różnice między atakami (np. pchnięcie jest szybsze ale bardziej narażone na kontrę) no i kampania, żeby nie było suchej mechaniki. Program jest napisany w assemblerze i musiałem dodać prosty timer bo działał jakby emulator był w trybie turbo więc jest dużo zapasu. A nawet jeśli zabraknie zasobów to jest z czego odchudzać. Grafikę i muzykę robiłem sam, więc proszę o wyrozumiałość.

Gra posiada 4 poziomy trudności i tryb dla 2 graczy. Komputerowy przecinik bardziej ma na celu ułatwienia zapoznania się z mechaniką niż symulowanie ludzkiego gracza. Zamieszczam tu grę w formacie XEX oraz screeny. Mam nadzieję, że ten format jest w porządku.

Sterowanie może być trochę złożone dlatego opiszę tutaj (opis też jest w samej grze):
Poruszanie się: Przybliżasz i oddalasz się za pomocą prawo lub lewo.
Atak z góry (cięcie): Wciśnij fire i górę. Gdy postać uniesie miecz, puść górę do momentu wykonania cięcia.
Atak z frontu (pchnięcie): Wciśnij fire i przód. Gdy postać cofnie miecz, puść przód do momentu wykonania pchnięcia.
Unik: Wciśnij fire i tył, aż do momentu wykonania uniku.
Blok: Wciśnij góra lub góra i przód, aby wykonać blok. Gdy wykonasz go w ostatniej chwili to przebijesz gardę przecinika.
Przebita garda: W tym stanie nic nie możesz zrobić. Aby ponownie przyjąć posturę puść wszystkie przyciski joysticka.

Kanis

16

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki za zaoszczędzenie mi szukania :D.  Muszę przyznać że gazetę (z celulozy) się innaczej czyta niż wersję komputerową.

17

(29 odpowiedzi, napisanych Programowanie - 8 bit)

xxl: Nie pomyślałem,  ale bym chciał najpierw ogarnąć podstawowe zagadnienia nim się rzucę na kod. Po za tym bym się sprzeczał ze to najszybszy sposób (albo ja jestem ułomny). Jak przerabiałem "Podstawy Programowania" Zientary to zawsze wolałem sam próbować napisać jakiś program opierając się na własnej wiedzy niż analizować o co chodziło danym przykładzie. Możesz powiedzieć że jestem nastawiony na spreparowaną papkę wiedzy którą wystarczy tylko wchłonąć no ale ten proces (w moim przypadku) przebiega o wiele szybciej( i chyba po to są książki i artykuły traktujące o komputerach).

Fox:Dzięki :), na pewno przejrzę.

18

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Dla umięjętności, uważam ze mam ubogą wiedzę na ten temat. A po za tym lubię znać ogólne zasady działania programów z których korzystam.

Dzięki za pomoc, mam nadzieję że sobie poradzę :).

19

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki za odpowiedź. Poszperam, spróbuję wszystkiego po trochu i wyrobię sobie opinię na ten temat. :)

Chciałbym prosić jeszcze o jedną rzecz (nie chcę zakładać kolejnego tematu) znacie jakąś książkę lub artykuł który mówi o operacjach We/Wy i korzystaniu z urządzeń zewnętrznych (lub ich lista) po przeczytaniu których mógłbym napisać jakiś najprostrzy DOS czy Loader?

20

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Czyli generalnie rzecz biorąc język zależy od projektu(np. Turbo Basic do tekstówki czy przygodówki, ASM+TBAS gry akcji, ASM strzelanki gdzie potrzeba więcej pamięci) i nie ma czegoś takiego że zaawansowani piszą w asmie a ci co dopiero zaczynają w Basicu?

Monsoft: Już działa mi program, ale dzięki że zauważyłeś. :D

21

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Taka prosta rzecz... Dzięki za tak szybką odpowiedź.

Chciałbym się jeszcze spytać czy ludzie zwykle tworzą czysto asemblerowskie programy czy częściej łączą z wysokopoziomowymi językami.

22

(29 odpowiedzi, napisanych Programowanie - 8 bit)

Witam,
po oglądaniu dem i graniu w gry na Atari postanowiłem że trzeba coś własnego stworzyć.  Zrobiłem już parę programów w Basicu i 2 gry wykorzystujące procedury napisane kodem maszynowym (1 niedokończona).  Jednak kod maszynowy sprawia mi dużo problemów a Basic jak wiadomo jest niezadawalający.  W nadzieji chciałem spróbować Quick Assemblera, że w miarę swobodnie będę mógł napisać jakiś najprostrzy program.  Jednak okazało się innaczej. 

Chciałem napisać program który zmienia tryb graficzny na 0(gr.0), ale wynikiem tego programu nie powinien być chyba kompletnie czarny ekran.  Więc zwracam się do Was z prośbą czy moglibyście przeanalizować kod i powiedzieć co źle zrobiłem albo czy popełniłem jeden z grzechów głównych i to jest cud że komputer jeszcze działa? Byłbym wdzięczny za jakąkolwiek pomoc.

list             equ   %00000101                     ;  Żeby podczas kompilacji był listing tylko errorów
mem_copy         equ   %00010000                     ;  i żeby kod był umieszczany do pamięci komputera
                 opt    list+mem_copy          

                 org   $9000                         ;####program dla CPU#####
                 lda   $00                           ;
                 brk                                   ;żeby sprawdzić stan akumulatora*
                 sta   560                           ; Poke 560,00
                 lda   $9A                           ;
                 brk                                   ;żeby sprawdzić stan akumulatora*
                 sta   561                           ;Poke  561,$9A 
joystic          lda   644                           ;Pobieram stan przycisku Joy'a
                 cmp  0                              ;Sprawdzam czy wciśnięty
                 bne   joystic                       ;Jeśli nie to skok do joystick
                 rts                                 ;powrót do QA (o ile dobrze wiem)

                 org   $9A00                         ;####program dla ANTIC####
                 dta   b($70)                        ;
                 dta   b($70)                        ;3x8 pustych linii
                 dta   b($70)                        ;
                 dta   b($42)                        ;linia w trybie 0(gr.0) i określenie nowego adresu obrazu
                 dta   b($00)                        ;LSB adresu
                 dta   b($90)                        ;MSB adresu
                 dta   c(' 11 razy znak o wartości 2 w ASCII ')  ;11 linijek w trybie 0
                 dta   b($41)                        ;skok i synchronizacja 
                 dta   b($00)                        ;LBS adresu programu Antica
                 dta   b($9A)                        ;MBS -||-
                 end

*Wartości wogóle się nie zgadzają, byłbym też wdzięczny za wytłumaczenie tego zjawiska.
Mam nadzieję że napisałem kod w dość przejrzysty sposób