[Проект] Story Builder

  1. Идеята ми е да направя чат сървър, в която да се играе Story Builder - играта, в която хората се редуват да казват изречения (в случая ще са фрагменти текст), които да образуват история. Минималната функционалност, която си представям е:

    • Сървър, който когато ново изречение се подаде, го разпраща на всички участници. Клиентската страна пък може да прави заявки за: продължаване на историята, показване на сглобеното до сега, рестартиране на историята (ще помисля дали ще е с администраторски права, някаква форма на запитване, изпратено до останалите участници и гласуване и т.н.)
    • Поддържа ред на играта - само един потребител ще може да даде следващия фрагмент, с който да продължи историята.
    • Таймер - има определено време, в което всеки играч трябва да изиграе хода си, иначе бива пропуснат.
    • Максимален брой символи за всяко продължение на история.
    • User base - възможност за регистрация с username & парола, и изискване на login при свързване със сървъра. Съхранение на потребителите в база.
    • Стаи - възжмоност за повече от една инстанция на играта по едно и също време; функционалност за показване на наличните стаи, създаване на стая и влизане във стая. Изтриването е позволено само на създателя.
    • Гласуване против продължението на даден играч, който "разваля играта", не играе сериозно или не спазва договорени правила в чат стаята. При 2 или 3 провинения бива изгонен от стаята.
    • Използването на Cobra за структуриране и документиране на CLI.
    • Използването на Termui за изграждането на конзолен UI.

    В зависимост от времето, което успея да отделя се опитах да разгранича две нива feature-и и да ги подредя по приоритет. Надявам се, че ще успея да имплементирам повечето от тях, горното е само MVP.

    Важни подобрения:

    • Конфигурация на таймера, лимита на символите и броя ходове до края на играта - при стартиране на игра.
    • Администратори - даване на права на даден потребител да управлява стая - стартира/спира игра, банва играчи (ако го имплементирам)
    • Банване - забраняване на даден потребител да се включва в определена стая.
    • В този ред на мисли - private чат стаи: защитени с парола, с експлицитна покана, т.н.
    • Главна стая, която служи просто като чат, където да се разбират играчите.

    Nice-to-haves:

    • Конфигурация на таймера и лимита на символите според демократичен вот в стаята.
    • GUI.
    • Даване на +1 или -1 към последното продължение и трупане на репутация на потребителите. При пропуск на ход (поради изтичане на времето) ще се губи репутация автоматично.
    • Лични съобщения до конкретен играч.

    Мисля, че и до тук ще ми дойде амбициозно, а откъм идеи мога да се разхвърлям още доста. Подозирам, че писането на добри тестове на сървър могат да ми изядат доста време. Ако все пак стане чудо и се справя с всичко до тук, може да включа още някоя "изненада" от някое от останалите неща, които ми се въртят в главата, но се съмнявам, че ще се стигне до там.

  2. Мисля, че MVP-то ти е много малко за да бъде сравнимо сложно със задачите на твоите колеги. За да го приемем ще трябва задължително да направиш и следните неща от "подобренията":

    • Регистрация на потребителите. Съхранявай ги направо в база данни, много по - лесно е от колкото да се бориш с файлове. Препоръчвам ти SQLite. Тази библиотека за Go е приятна.
    • Стаи, където може да се играе от различни групи едновременно. Както си ги описал.
    • Гласуване за изгонване на играча.
    • Със сигурност трябва да има хубав CLI интерфейс. Както и UI ако е конзолен. Можеш да разгледаш тази библиотека за cli и тази за UI.

Трябва да сте влезли в системата, за да може да отговаряте на теми.