Photon C++ Client API: Troubleshooting

Photon C++ Client API

Photon C++ Client API  4.1.12.2
Troubleshooting

This section contains suggestions for common problems developers using Photon might come across. As always: if the solution at hand is not fitting your needs, please contact us: devel.nosp@m.oper.nosp@m.@phot.nosp@m.onen.nosp@m.gine..nosp@m.com.

I get a message "WARNING! There are x outgoing messages waiting in the local sendQueue !" What is the problem ?

This message means that you are generating more Photon operations/events than you are sending. Photon can only send reliable operations one after another, and will wait for the response from the Photon server before the next operation will be sent. Of course, Photon only can send operations at all, if you call service(). If you do not call it often enough, it will not be able to send all the operations, which you are generating.

Solutions:
1. Make sure to call service() in a sufficiently high frequency (like ten times a second).

2. If you call call service() frequently enough, the problem lies in the underlying Network not being able to transmit the information quickly enough. Especially mobile networks are not able to transfer something like 50 or even more operations per second. The only solution for this is to create fewer operations over the same period of time. Try to sum up your ingame data and send it in bigger time intervals.

Note: There is no certain limit for the size of a queue. Photon will fail as soon as there is no more memory available for new messages.

Troubleshooting Windows

Including multiple versions of WinSock It is common for developers using multiple libraries to have a conflict around multiple versions of WinSock. For instance, a developer may use a game engine that uses WinSock and Photon which uses WinSock2. By adding _WINSOCK_ to the preprocessor definitions the conflict is resolved, but the system will throw a warning which can be ignored.

You can also try re-arranging the order in which you're including the header files. You can see a good example of this in someone's application using a library called Allegro. Including the files in this order solved their compilation problems:

\#include <allegro.h>
#define _WINSOCKAPI_
\#include <winalleg.h>
\#include <winsock2.h>