Пока допиливаю свои ммо-поделки, решил поделиться небольшими наработками по серверу на пурике.
В общем, сервер, работает в трех потоках, использует БД SQLite. В аттаче архив с иходниками и exe сервера, а также тестового клиента.
Основной поток (MainLoop) обрабатывает принятые пакеты, формирует пакеты на отправку через два списка. Второй поток добавляет принятые сервером данные в первый список, а третий поток считывает данные из второго списка и отправляет нужным клиентам.
Код сдобрен комментами, так что проблем возникнуть не должно.
Проверить работу можно через тест-клиент, который написан на блитце. При старте клиент сразу сам подключается к серверу на порт 9105 (выдаст MAV, если сервер не запущен или недоступен). Он работает в "ручном" режиме - то есть нужно набирать пакет с клавиатуры. Формат пакета: "[Команда]#[Данные]#...#[Данные]#", Где # - разделитель Chr(13) - добавляется по клавише F1 клиента. Enter - отправить пакет.
Команды:
Login#Name#Pass#version#
Register#Name#Pass#version#e-mail#
Move#X#Y#
Каждую команду обрабатывает отдельная процедура, то есть легко добавить на сервер новые команды.
В общем, может кому-то пригодится
Также просьба похаять код, подсказать что можно улучшить/переделать - например формат и метод обработки пакетов.