MINI-IO / IO-project-game

Alicja Moskal, Bartosz Chrostowski, Emil Dragańczuk, Jakub Drak Sbahi, Mikołaj Molenda
12 stars 3 forks source link

Zapytanie o podniesienie fragmentu #90

Closed JakubBrojacz closed 4 years ago

JakubBrojacz commented 4 years ago

Z jednej strony w wiadomościach agenta mamy wiadomość z kodem 008 o podniesienie fragmentu i w diagramach też mamy, że agent ma wysyłać prośbę o podniesienie, a z drugiej w module GM, Abstract Field, metoda PickUp(Player) jest napisane: Metoda abstrakcyjna, która podnosi fragment z planszy i przypisuje go do gracza. Wywoływana jest na wejście gracza (przemieszczenie się gracza do tego pola) do danego pola , czyli jej wywoływana automatycznie; tak samo w zasadach gry o fragmentach: Odłożenie wygenerowanego przez Game Mastera fragmentu na pole na którym znajduje się Agent, skutkuje natychmiastowym podniesieniem fragmentu przez tego Agenta, jeśli nie trzyma on już innego fragmentu. Pytanie o doprecyzowanie: W jakich warunkach agent podnosi fragment automatycznie i w jaki sposób przekazać mu, że otrzymał taki fragment jeśli zrobił to automatycznie?

Częściowo omawiane w #26

marcelwenka commented 4 years ago

Czy w takim razie powinniśmy dodać do wiadomości zwrotnej od GMa o wykonaniu ruchu (108) pole "holding" informujące o tym, że agent trzyma teraz kawałek (bo wszedł na pole, na którym leżał kawałek)? Czy może skoro w wiadomości od GMa jest closestPiece (odległość do najbliższego kawałka) to agent powinien się sam domyślić, że podniósł kawałek, jeśli closestPiece wynosi 0? A jak Game Master wygenerował kawałek na polu, na którym stoi agent (i automatycznie przekazujemy ten kawałek agentowi) powinniśmy mu wysłać wiadomość PickUp, czy w ogóle mu nie mówić? Jeśliby dodać pole "holding" do wiadomości zwrotnej o ruchu (108) to wtedy problem wygenerowania kawałka na agencie częściowo rozwiązywałby się sam, bo wtedy agent dowiadywałby się przy następnym ruchu, że trzyma kawałek.

rafalsli commented 4 years ago

To jaką decyzję podejmujemy? Bo przydałoby się to już wyjaśnić. Proponuję, albo zostawić tę wersję, że to agent zawsze podejmuje decyzję, czy chce podnieść kawałek, albo dodać to dodatkowe pole w wiadomości informujące, czy podniesiono kawałek (chociaż jeżeli będzie dodatkowe pole, to pojawia się pytanie jaką odległość zwrócić, jeżeli agent wszedł na kawałek - zero, czy do kolejnego kawałka). Jeżeli zawsze miałoby to się dziać automatycznie, to chyba w ogóle nie potrzebujemy akcji podniesienia. Jeżeli ta akcja miałaby zostać, to w pliku konfiguracyjnym GM nie ma kary za tę akcję.

Zackere commented 4 years ago

Automatyczne podnoszenie kawałka tylko komplikuje i unicestwia akcję discovery poniekąd oraz akcję pickpiece

JakubBrojacz commented 4 years ago

Automatyczne podnoszenie kawałka nie wpływa na akcję discovery. Jedynie sprawia że akcja pickpiece przestaje mieć sens.

piotr-onyszczuk commented 4 years ago

"Odłożenie wygenerowanego przez Game Mastera fragmentu na pole na którym znajduje sie Agent, skutkuje natychmiastowym podniesieniem fragmentu przez tego Agenta" psuje też koncepcję tego że większość wiadomości od GMa do Agenta jest odpowiedzią na żądanie Agenta, bo należałoby przekazać Agentowi tę informację.

Rashair commented 4 years ago

"Odłożenie wygenerowanego przez Game Mastera fragmentu na pole na którym znajduje sie Agent, skutkuje natychmiastowym podniesieniem fragmentu przez tego Agenta" psuje też koncepcję tego że większość wiadomości od GMa do Agenta jest odpowiedzią na żądanie Agenta, bo należałoby przekazać Agentowi tę informację.

Właściwie to wtedy trzeba by to przekazywać w odpowiedzi na akcję zniszczenia/odłożenia kawałka - #70

Agent powinien odbierać to czy dostaje kawałek w odpowiedzi na żądanie ruchu. Wtedy GM już przed wysyłaniem takiej odpowiedzi wkładałby kawałek do swojego modelu gracza. A gracz automatycznie ustawiał by sobie wtedy, że ma kawałek.

piotr-onyszczuk commented 4 years ago

Właściwie to wtedy trzeba by to przekazywać w odpowiedzi na akcję zniszczenia/odłożenia kawałka - #70

Właśnie nie do końca, bo co jesli gracz sie nie ruszy a GM wygeneruje kawałek tam gdzie on stoi. Musiałoby to byc przekazane asynchronicznie. Dlatego może żeby uniknąć niejasności z automatycznym podnoszeniem łatwiej byłoby podnosić tylko gdy gracz tego zażądał.