Идеята ми е да направя чат сървър, в която да се играе Story Builder - играта, в която хората се редуват да казват изречения (в случая ще са фрагменти текст), които да образуват история. Минималната функционалност, която си представям е:
- Сървър, който когато ново изречение се подаде, го разпраща на всички участници. Клиентската страна пък може да прави заявки за: продължаване на историята, показване на сглобеното до сега, рестартиране на историята (ще помисля дали ще е с администраторски права, някаква форма на запитване, изпратено до останалите участници и гласуване и т.н.)
- Поддържа ред на играта - само един потребител ще може да даде следващия фрагмент, с който да продължи историята.
- Таймер - има определено време, в което всеки играч трябва да изиграе хода си, иначе бива пропуснат.
- Максимален брой символи за всяко продължение на история.
- User base - възможност за регистрация с username & парола, и изискване на login при свързване със сървъра. Съхранение на потребителите в база.
- Стаи - възжмоност за повече от една инстанция на играта по едно и също време; функционалност за показване на наличните стаи, създаване на стая и влизане във стая. Изтриването е позволено само на създателя.
- Гласуване против продължението на даден играч, който "разваля играта", не играе сериозно или не спазва договорени правила в чат стаята. При 2 или 3 провинения бива изгонен от стаята.
- Използването на Cobra за структуриране и документиране на CLI.
- Използването на Termui за изграждането на конзолен UI.
В зависимост от времето, което успея да отделя се опитах да разгранича две нива feature-и и да ги подредя по приоритет. Надявам се, че ще успея да имплементирам повечето от тях, горното е само MVP.
Важни подобрения:
- Конфигурация на таймера, лимита на символите и броя ходове до края на играта - при стартиране на игра.
- Администратори - даване на права на даден потребител да управлява стая - стартира/спира игра, банва играчи (ако го имплементирам)
- Банване - забраняване на даден потребител да се включва в определена стая.
- В този ред на мисли - private чат стаи: защитени с парола, с експлицитна покана, т.н.
- Главна стая, която служи просто като чат, където да се разбират играчите.
Nice-to-haves:
- Конфигурация на таймера и лимита на символите според демократичен вот в стаята.
- GUI.
- Даване на +1 или -1 към последното продължение и трупане на репутация на потребителите. При пропуск на ход (поради изтичане на времето) ще се губи репутация автоматично.
- Лични съобщения до конкретен играч.
Мисля, че и до тук ще ми дойде амбициозно, а откъм идеи мога да се разхвърлям още доста. Подозирам, че писането на добри тестове на сървър могат да ми изядат доста време. Ако все пак стане чудо и се справя с всичко до тук, може да включа още някоя "изненада" от някое от останалите неща, които ми се въртят в главата, но се съмнявам, че ще се стигне до там.