Писать серверную часть можно и на php, и да, даже если нужна работа с сокетами
Например реалтайм браузерную игру (не пошаговую, когда используется http rest архитектура) можно написать с использованием websocket (например реализация
Ratchet).
Если хотите хоть какой то надежности от 'взлома' (от появления читеров) то ваша игра должна идти на сервере, а клиент - только отображение, т.е. это например классический игровой цикл запускаете на сервере, клиенты подключаются и передают свои действия и забирают изменения состояния мира. Если у вас реалтайм и не хотите лагов, то клиент должен как то сам додумывать как должна идти игра в следующие сотню миллисекунд, т.е. возможно на клиенте будет так же запущен тот же игровой цикл, с оглядкой на то что верить можно только серверу, т.е. например возможны откаты состояния мира если клиент додумал его неправильно (во время лага сервер думает что пуля все еще летит, когда как на сервере врезалась в цель, которая удачно изменила свое направление под пулю перед началом сетевого лага).