User Tools

Site Tools


kg:doc_spec_entities

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

kg:doc_spec_entities [2012/06/04 10:05] (current)
Line 1: Line 1:
 +====== Игровые сущности ======
 +===== Мультисерверность =====
 +
 +===== Общая и детальные части =====
 +
 +===== Приложения =====
 +==== Чеклист на overland model ====
 +
 +=== Классы Оверланда ===
 +  - Город (city) - локация,​ владеет набором пригородов,​ есть игрок (*) - владелец
 +  - Пригород (suburb) - локация,​ всегда есть город-владелец
 +  - Логово (lair) - локация,​ есть "​счётчик посещений",​ встроенные часы, статтус "​расфармлено"​
 +  - Армия (army) - мобильна,​ позиция - два вертекса,​ они эквивалентны (в движении армия занимает оба вертекса)
 +  - Процесс на карте (landaction) - вероятно,​ локация,​ хотя не обязательно. Может менять позицию,​ имеет параметр фазы. Может быть циклическим,​ или исчезать на последней фазе.
 +  - Фракция (fraction), частные случаи - игрок, НПЦ-мама,​ альянс игроков.
 +  - Ландшафт (landscape),​ всё по-старому - декораторы,​ модификаторы,​ высоты.
 +
 +=== Классы детальной информации ===
 +  - Город
 +  - Пригород
 +  - Армия
 +  - Фракция **-Тут поподробнее,​ а то у меня класс пустой**
 +
 +=== Логика сервера ===
 +  - **Финализация мира**:
 +    - **Фракции**:​ создаётся набор фракций "​НПЦ-мамы",​ количество определяется снаружи,​ из генератора.
 +      - пространство идентификаторов фракций общее для _всех_ серверов,​ потому предлагаю каждому миру выделить интервал допустимых ИД фракций,​ такого вида: W+(id), где W - номер мира, 10 бит, и 21 бит - на каждый мир, 2 миллиона фракций нам должно хватить.
 +    - **Города**:​ создаётся полный набор городов из map.analytics:​
 +      - по умолчанию,​ все города имеют нулевой уровень,​ владелец городов "​великий Ноль", ​
 +      - некоторые города получают высокий уровень,​ ставятся владельцы "​НПЦ-мамы"​
 +        - город высокого уровня автоматически снабжается пригородами,​ схема может быть захардкожена.
 +      - все города хранят данные в 2х объектах:​
 +        - краткую информацию в Оверланде (видимую всем), класс overland.City
 +        - детальную информацию в Детейл-дате (выдаётся кому надо), класс detail.City
 +    - **Игроки**:​ обнуляется
 +    - **Армии**:​ обнуляется
 +  - **Добавление нового игрока**:​ происходит при подключении игрока,​ которого ещё нет в базе игроков (пока нет общей базы - привязываем игрока к миру)
 +    - создаётся фракция внутри мира для игрока
 +    - выделяется случайный город из тех, которые имеют хозяина с ИД==0, то есть "​Великий Ноль":​
 +      - город назначается игроку
 +      - город получает уровень ==1
 +  - **Апдейт мира**:
 +    - **Логова**
 +      - увеличивается встроенный таймер,​ по его результату:​
 +        - логово может исчезнуть
 +        - логово может породить Армию (НПЦ)
 +      - анализируется счётчик посещений,​ по его результату:​
 +        - логово может получить статус "​расфармлено",​ и переустановиться таймер (расфармленным надо жить определённое время)
 +    - **Пригороды**
 +      - растёт население:​
 +        - при максимальном урвоне,​ который равен уровню города - клампится.
 +      - меняется уровень:​
 +        - если понижение уровня не совместимо с типом модуля - происходит потеря типа
 +      - апдейт экономической системы (связан с апдейтом города,​ вероятно надо выполнять в правильном порядке):​
 +        - вырабатываются и добавляются на склад города товары
 +        - со склада города изымаются товары,​ нужные пригороду
 +      - анализируется рабочий статус пригорода,​ может меняться состояние подчинённых пригороду процессов на карте:
 +        - порождаться новые процессы
 +        - гаситься текущие
 +    - **Города**:​
 +      - нулевой уровень города отключен от апдейта (?)
 +      - растёт население (детальные данные):​
 +        - при нулевом владельце - падает население
 +      - меняется уровень:​
 +        - понижение уровня любого города - отбирается случайный модуль,​ превращается в логово бандитов
 +        - повышение уровня города для нулевого владельца запрещено
 +        - повышение уровня города для владельца НПЦ:
 +          - автоматическое создание пригорода (хардкод)
 +          - имеющиеся пригороды анализируются на предмет возможной смены типа
 +        - повышение уровня города игрока - ничего не происходит
 +      - производится рассчёт экономики:​
 +        - вырабатываются и добавляются товары. Процесс может требовать на складе сырья.
 +        - изымаются товары,​ нужные населению.
 +    - **Армии**
 +      - пока никакой логики
 +
 +=== Протокол связи ===
 +  * Логинимся - получаем данные игрока (в будущем - соединение на нужные игровые сервера)
 +  * видовые операции на клиенте - никакого взаимодействия с сервером не нужно.
 +  * информационные транзакции:​
 +    * выбираем в виде объект
 +    * определяем - можем ли мы получить детальную информацию,​ если да - открываем окно, отображающее информацию,​ и показываем там фигу с маком.
 +    * отправляем на сервер запрос на данные
 +    * пришедший ответ выкладываем в локальный кеш, если информационное окно всё ещё открыто - обновляем его содержимое
 +  * что-то пытаемся выполнить с клиента:​
 +    * определяем как можем условия - можно или нет
 +    * отправляем на сервер свою команду
 +    * сервер обрабатывает команду,​ как сумеет,​ результат...
 +      * положительный - изменение на клиент придёт в регулярном обновлении
 +      * отрицательный - отправляем внеочередное сообщение о фейле операции
 +    * периодически получаем с сервера обновления,​ если надо - изменяем виды, в т.ч сбрасываем выбранные объекты,​ если исчезли,​ и так далее.
 +    * **-как быть с отменами?​ отменить найм, отменить постройку?​**
 +
 +=== Информационные запросы ===
 +  - Логин
 +  - хочу заглянуть в Город
 +  - хочу заглянуть в Армию
 +  - хочу заглянуть во фракцию
 +
 +=== Команды с клиента ===
 +  - напрямую изменить вертекс ландшафта (для режима редактора)
 +  - построить для выбранного (моего) города новую деревню
 +  - изменить тип деревни **- это как?**
 +  - построить в городе домик **- нипонял**
 +  - начать найм отряда
 +  - изменить состав армии в городе **- с чего на что? просто перебросить?​**
 +  - передвинуть армию (героя) в выбранную точку
  
kg/doc_spec_entities.txt · Last modified: 2012/06/04 10:05 (external edit)