Работа над документацией
This commit is contained in:
+143
@@ -0,0 +1,143 @@
|
||||
# README.md
|
||||
# NeurOX: Крестики‑нолики с ИИ или войти в IT
|
||||
|
||||
## Цель проекта
|
||||
|
||||
Разработка экосистемы многопользовательской игры крестики-нолики в классическом исполнении с полным стеком технологий от С до Android и Web.
|
||||
|
||||
## Суть челленджа
|
||||
|
||||
Собрать систему «с нуля», в минималистичном стиле с мнимумом инструментов:
|
||||
* нейросеть на чистом C (без ML‑библиотек);
|
||||
* ядро игры с ручным управлением памятью;
|
||||
* NGINX + PHP + CodeIgniter (REST API);
|
||||
* десктоп‑клиент на C++/SFML;
|
||||
* Android‑клиент Java/Kotlin;
|
||||
* сетевая связь по TCP/IP;
|
||||
* шифрование: RSA (2048 бит) для рукопожатия + динамический XOR для данных.
|
||||
|
||||
|
||||
## Текущий статус
|
||||
|
||||
Проект стартует с чистого листа. На данный момент:
|
||||
* определена архитектура системы;
|
||||
* выбран стек технологий;
|
||||
* начата работа над ядром на C.
|
||||
|
||||
**Что предстоит:**
|
||||
* реализовать базовую логику игры (3×3);
|
||||
* написать нейросеть на C (обучение на партиях);
|
||||
* создать REST API на PHP для связи компонентов;
|
||||
* разработать десктоп‑ и Android‑клиенты;
|
||||
* внедрить схему шифрования;
|
||||
* интегрировать все части в единую систему.
|
||||
|
||||
## Прогресс
|
||||
Весь прогресс отражен в файле **[PROGRESS.md](PROGRESS.md)**
|
||||
|
||||
## Реалистичный план этапов (дорожная карта)
|
||||
|
||||
**Принцип планирования:**
|
||||
* работа ведётся небольшими сессиями (30–60 минут) в свободное время;
|
||||
* приоритет — последовательность, а не скорость;
|
||||
* каждый этап завершается минимально жизнеспособным результатом (MVP‑подход);
|
||||
* гибкость: этапы можно менять местами или дробить на подзадачи.
|
||||
|
||||
### Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца
|
||||
* базовая логика игры (3×3 доска, проверка победы);
|
||||
* простая нейросеть (3 слоя, сигмоида, обучение на 100+ партиях);
|
||||
* консольный режим для тестирования;
|
||||
* битовые маски для оптимизации доски.
|
||||
|
||||
### Этап 2. Сервер на PHP (API + БД) — 2–3 месяца
|
||||
* REST API (`/start_game`, `/make_move`, `/get_state`);
|
||||
* интеграция с ядром через Unix‑сокеты;
|
||||
* SQLite для хранения партий и статистики;
|
||||
* логирование запросов.
|
||||
|
||||
### Этап 3. Десктоп‑клиент (C++/SFML) — 3–4 месяца
|
||||
* базовый UI (доска 3×3, кнопки);
|
||||
* связь с сервером по TCP/IP;
|
||||
* анимация ходов и победы;
|
||||
* кэширование состояния для офлайн‑режима.
|
||||
|
||||
### Этап 4. Шифрование (RSA + XOR) — 1–2 месяца
|
||||
* RSA‑рукопожатие (2048 бит, OpenSSL);
|
||||
* динамический XOR (смена ключа по таймеру/счётчику);
|
||||
* проверка целостности пакетов (CRC32);
|
||||
* тесты на утечку памяти и производительность.
|
||||
|
||||
### Этап 5. Android‑клиент (Kotlin + NDK) — 4–6 месяцев
|
||||
* MVP: доска 3×3 и связь с сервером;
|
||||
* вызов C‑библиотеки через JNI;
|
||||
* поддержка шифрования;
|
||||
* оптимизация под мобильные устройства.
|
||||
|
||||
### Этап 6. Интеграция и тестирование — 2–3 месяца
|
||||
* синхронизация состояния между десктопом и Android;
|
||||
* стресс‑тест (10+ одновременных игр);
|
||||
* отладка многопоточности;
|
||||
* финальная оптимизация.
|
||||
|
||||
### Этап 7. Релиз MVP — 1 месяц
|
||||
* сборка дистрибутивов (Windows, Linux, Android);
|
||||
* документация для запуска;
|
||||
* публикация демо‑видео.
|
||||
|
||||
---
|
||||
|
||||
## Гибкость и адаптация
|
||||
|
||||
**Если времени меньше:**
|
||||
* пропускаю Android‑клиент — фокусируюсь на десктопе;
|
||||
* заменяю RSA на OpenSSL (готовые функции);
|
||||
* упрощаю нейросеть до минимакса;
|
||||
* откладываю динамический XOR на будущее.
|
||||
|
||||
**Если появляется больше времени:**
|
||||
* ускоряю этапы за счёт увеличения сессий;
|
||||
* добавляю фичи (режим PvP, статистика, темы UI).
|
||||
|
||||
## Технологии
|
||||
|
||||
## Особенности архитектуры, решений и тактик (добавлено 22.04.2026)
|
||||
|
||||
### ИИ аспект
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода(профилирование) и нежеланием заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки Архитектуры, считаю что от этого зависит львиная доля успешности проекта впринципе(если на скорую руку сделать архитектуру, даже самые опытные разработчики не помогут, тут и начинается описанный выше рефакторинг).
|
||||
Единственным моим ассистентом и специалистом по части критики и статистики является YandexGPT 5.1 Pro(АлисаAI). Порой наши многочасовые споры выматывают, но она очень помогает в следующих аспектах:
|
||||
* Анализ кода в части читаемости, т.к. проект публичен.
|
||||
* Сбор статистики по типовым нагрузкам.
|
||||
* Понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||
|
||||
Что я понял за время общения с ней:
|
||||
* Никогда не верьте ИИ "на слово", как бы он Вас не уверял что больше такого не повторится.
|
||||
* Никогда не следуйте подсказкам ИИ если понимаете что это Вам не нужно.
|
||||
* 10, а лучше - 100 раз переспросите с разных сторон
|
||||
* даже если Вам кажется что ИИ дал точный ответ - переспросите ещё раз.
|
||||
* Не пытайтесь доказать ИИ что Вы - "не олень", он этого не оценит
|
||||
* Предлагая ИИ оценить ИИ написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается, у ИИ галочка на расширяемость и проверки, вернее не "галочка" а "ГАЛИЩЕ"
|
||||
|
||||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу YandexGPT 5.1 Pro(АлисаAI) до стадии "Да, Вы правы..." в коде я оставляю коментарии сгенерированные ею для неё же и помечаю их как "коментарии от YandexGPT 5.1 Pro(АлисаAI)". Очень часто в коментариях к коду можно встретить объяснения такого рода "АлисаAI настояла" в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||
### Основной посыл
|
||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-же духе, в первую очередь - для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее - приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||
### Образовательный аспект
|
||||
Проект открыт для изучения, как автор - не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их вдальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
||||
### Основная стратегия KISS+YAGNI
|
||||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX_INT*MAX_INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности.
|
||||
### Начата разработка общих модулей, конкретно - XOGame.
|
||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так - потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки - это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу.
|
||||
После предоставления кода **server/includes/XOGame.h**, **server/headers/_XOGame.h** и **server/src/XOGame.c** на ревью YandexGPT 5.1 Pro(АлисаAI) и 4-хчасовой баталии по поводу **void* fxalloc(size_t _NBytes)** решено пока что "забыть" про реализацию XOGame.c и заняться аллокатором **fxalloc.c**, иначе я не выдержу, порой она достаёт "до чёртиков" ;)
|
||||
|
||||
## Лицензия
|
||||
Apache License 2.0 — код открыт для изучения.
|
||||
|
||||
## Контакты
|
||||
* GitHub: [@felex67](https://github.com/felex67)
|
||||
* Email: <a href="mailto:admin@felexdev.ru">admin@felexdev.ru</a>, <a href="mailto:felexxx67@yandex.ru">felexxx67@yandex.ru</a>
|
||||
|
||||
---
|
||||
|
||||
**Важно:** проект в активной разработке. Сроки ориентировочные — зависят от свободного времени. Это дневник челленджа: фиксация прогресса, решений и находок.
|
||||
|
||||
Спасибо, что следите за ходом! 🍰 Пусть каждая строка кода будет шагом к победе — в своём темпе! 🎉
|
||||
|
||||
Reference in New Issue
Block a user