Piszę grę wieloplatformową z funkcjami sieciowymi (używając SFML i RakNet) i doszedłem do punktu, w którym skompilowałem serwer na moim serwerze Ubuntu i dostałem klienta na moim Macu. Cały rozwój odbywa się na moim Macu, więc początkowo testowałem na tym serwerze i działało dobrze.Tworzenie i używanie struktury wieloplatformowej w C++
Wysyłam struct
s przez sieć, a następnie po prostu odsyłaję je z powrotem od char *
do (na przykład) inet::PlayerAdded
. Teraz to działa dobrze (w przeważającej części), ale moje pytanie brzmi: Czy to zawsze zadziała? Wydaje się to bardzo delikatnym podejściem. Czy struktura będzie zawsze układana tak samo, nawet na innych platformach, na przykład Windows? Co byś polecił?
#pragma pack(push, 1)
struct Player
{
int dir[2];
int left;
float depth;
float elevation;
float velocity[2];
char character[50];
char username[50];
};
// I have been added to the game and my ID is back
struct PlayerAdded: Packet
{
id_type id;
Player player;
};
#pragma pack(pop)
Do seryjnego downwizera, z konkretnego powodu? (Zdanie Steve'a wydaje się szczególnie szokujące) – KevinDTimm
W takich miejscach punkty są bez znaczenia. Nie martwiłbym się tym. –
Nie dbam o punkty, chcę wiedzieć, dlaczego każda odpowiedź (z wyjątkiem jednej, najmniej użytecznej ze wszystkich) została odrzucona. Zwłaszcza gdy jedna z (downvoted) odpowiedzi była wyraźnie najlepsza. – KevinDTimm