Autor Wątek: protobuff plik .proot  (Przeczytany 621 razy)

Offline ryuu

  • Użytkownik

# Styczeń 20, 2017, 18:58:16
Pisze własnie server używając protobuffa. Mam parę pakietów  które mają w sobie dane zależność od ilości graczy w pokoju i nie jestem do końca pewny czy tak napisany dokument .prot będzie z tym dział
http://pastebin.com/2sCxYs17
a tu mój protokół
https://docs.google.com/spreadsheets/d/1KrA7LJkv3DmjklCxhWfo1kmMXleu02FmSsfxrw5bAGw/edit?usp=sharing

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Liosan

  • Redaktor

# Styczeń 20, 2017, 19:14:22
Nie .proot tylko .proto :P

Polecam opakować message'e w jakiś kontener (w ramach protobufa) który by zawierał informację o typie pakietu, protobuf sam z siebie tego nie zapewnia. To lepsze niż dodawanie packetId na początku każdego pola (nawet nie wiem czy da sie to zawsze przeczytać).

repeated RoomList = size; -  to nie tak. Nie potrzebujesz size jeśli masz pole repeated, repeated samo z siebie to obsługuje. To, co jest po = to nie jest ilość sztuk, tylko id przypisane polu. I najważniejsze: repeated nie stosuje się żeby powiedzieć że struktura się powtarza (sama), tylko żeby powiedzieć że jest powtórzona kilka razy w nadrzędnej strukturze. Zobacz przykład z dokumentacji:

message SearchResponse {
  repeated Result result = 1;
}

message Result {
  required string url = 1;
  optional string title = 2;
  repeated string snippets = 3;
}
Zgodnie z powyższym, RoomList powinien zawierać repeated Room. Pamiętaj, że możesz w protobufie tworzyć struktury który nie są same z siebie message'ami. Np. możesz mieć Room i Player i wykorzystać je odpowiednio w RoomList i Update_GamePlay.

Masz mnóstwo pól required, zwłaszcza w Update_GamePlay. Przyszłościowo, bardzo utrudni Ci to upgrade protokołu. Nie wiem dokładnie jakie masz założenia, ale większość sytuacji jakie widziałem wymaga przynajmniej częściowego wspierania starego protokołu (tzn żeby gra się nie crashowała :P).

Nie masz ; po required string roomName. Kompilowałeś to w ogóle? :)

Liosan

Offline ryuu

  • Użytkownik

# Styczeń 20, 2017, 19:33:32
Nie kompilowałem jeszcze do tego etapu nie doszedłem XD taki prototyp zrobilem. napewno duzo bede zmieniał update Gameplay. w protbufie struktury jak sie tworzy np tak Struck Player?

//@EDIT
http://pastebin.com/0ttUUKut ocoś takiego chodziło i nie zrozumiałem o co chodziło z tym upakowaniem w kontener :D
« Ostatnia zmiana: Styczeń 20, 2017, 20:45:10 wysłana przez ryuu »

Offline Liosan

  • Redaktor

# Styczeń 20, 2017, 21:31:53
Proponuję żeby najpierw zobaczyć czy w ogóle to Ci działa, a potem wrzucić na forum :) Generowanie kodu pythonowego albo C++owego z protobufa jest bardzo proste. Chociaż może lepiej zacząć od mniejszego przykładu.

Liosan

Offline ryuu

  • Użytkownik

# Styczeń 21, 2017, 00:25:09
pliczek się ładnie skompilował do class javy Teraz czas na Unity XD. Wolę zacząć coś od cięższego większa satysfakcja jak się uda :3.