Профи игростроя я себя не считаю, но назваться профи программирования, наверно, рискну. Если ты правда программируешь, а не используешь готовые конструкторы, то не важно в чем и что ты пишешь: будь то клиент на флеше, сервер на С или на РНР - все сводится к очень удобной вещи: ООП.
Если знаком с этим термином - здорово.
Если нет - советую почитать.
Разработка очень упрощается, когда ты описываешь все классами, и с ними работаешь. Ну и когда они в иерархию уложены.
Отвлеченный пример моего сервера:
На верхнем уровне класс самого сервера, занимается включением сокетов(обмен данных с клиентом), хранением подключенных людей.
Параллельно с ним на уровне лежит класс работы с сокетами(сервер их только включает, а дальше они сами по себе)
Чуть ниже лежат классы работы с персонажем: Персонаж, который включает в себя еще классы: Опыт, Показатели, Инвентарь, Экипировка, ПАРСЕР.
И еще ниже дергаемые по нужде классы типа Карта, Магазин, Монстр, Бой, ит.д.
Пример, как это функционирует:
Запускается сервер. Загружает в себя из БД все возможные характеристики вещей игры(оружия, брони, зелья). Инициализирует таблицу пользователей.
Потом включается класс передачи данных по сети. Он занимается тем, что ловит все входящие подключения, говорит серверу создать игрока, когда тот подключился, принимает и отдает команды от/к игрокам.
Когда приходит от игрока какая-нибудь команда(например, пройти вверх по карте), класс передачи данных поулчает эту команду и отдает её экземпляру класса игрока, который включает парсер, а тот уже расшифровывает, что за команда пришла и какие характеристики персонажа надо поменять - в данном случае координату У и возможно сообщить игроку, что мы наткнулись на монстра.
Как-то так, но очень кратко.
Суть в двух словах - используй ООП.