World Conquest Chronicles

World Conquest Chronicles

Город, шаг второй — чат

Скриншот примера работы чата

Город — это MMORPG про мегаполис в киберпанк и нуар стилистике. Вторым шагом к его реализации стал чат.

Технологии

Язык программирования: C++.

Сетевой фреймворк: Boost.Asio.

GUI фреймворк: Qt.

Что готово

  • синхронный двухпоточный UDP-клиент:
    • указание адреса и порта сервера в конфигурационном файле;
    • отдельный поток для запросов к серверу;
    • интерфейс пользователя;
  • синхронный однопоточный UDP-сервер:
    • указание порта в параметрах командной строки;
    • поддержка простого протокола;
    • хранение истории сообщений;
    • поддержка списка подключенных клиентов.

Протокол

Запрос: nickname;command[;parameter].

Команды:

  • interlocutors — запрос списка собеседников; параметра не имеет; в ответ сервер вернёт список ников собеседников, разделённый символом ;;
  • message — отправка сообщения; параметр — текст сообщения; в ответ сервер вернёт строку ok;
  • history — запрос истории сообщений; параметр — временная метка (Unix time), с которой нужны сообщения; сервер вернёт список сообщений, временная метка которых больше переданной в параметре; сообщения будут разделённы символом ;; каждое сообщение будет иметь формат nickname:timestamp:text.

При ошибках сервер возвращает строку в формате error;description.

Репозиторий

Ссылка: http://github.com/thewizardplusplus/city/tree/v0.2.1.

Содержание: код.

Лицензия: MIT.

Скриншоты

Пример работы чата — версия под Windows:

Скриншот примера работы чата — версия под Windows

Авторские права

Иконка чата

Автор: scyg.

Лицензия: CC0 1.0.

Ссылка: http://openclipart.org/detail/170274/chat-button-by-scyg.

Иконка кнопки «Войти»

Автор: warszawianka.

Лицензия: CC0 1.0.

Ссылка: http://openclipart.org/detail/35347/tango-system-users-by-warszawianka.

Иконка кнопки «Отправить»

Автор: tdhoward75.

Лицензия: CC0 1.0.

Ссылка: http://openclipart.org/detail/168820/curved-arrow-blue-by-tdhoward75.