142 lines
19 KiB
TeX
142 lines
19 KiB
TeX
\chapter{README.\+md}
|
||
\hypertarget{md_README_8old}{}\label{md_README_8old}\index{README.md@{README.md}}
|
||
\label{md_README_8old_autotoc_md57}%
|
||
\Hypertarget{md_README_8old_autotoc_md57}%
|
||
\hypertarget{md_README_8old_autotoc_md58}{}\doxysection{\texorpdfstring{Neur\+OX\+: Крестики‑нолики с ИИ или войти в IT}{NeurOX: Крестики‑нолики с ИИ или войти в IT}}\label{md_README_8old_autotoc_md58}
|
||
\hypertarget{md_README_8old_autotoc_md59}{}\doxysubsection{\texorpdfstring{Цель проекта}{Цель проекта}}\label{md_README_8old_autotoc_md59}
|
||
Разработка экосистемы многопользовательской игры крестики-\/нолики в классическом исполнении с полным стеком технологий от С до Android и Web.\hypertarget{md_README_8old_autotoc_md60}{}\doxysubsection{\texorpdfstring{Суть челленджа}{Суть челленджа}}\label{md_README_8old_autotoc_md60}
|
||
Собрать систему «с нуля», в минималистичном стиле с мнимумом инструментов\+:
|
||
\begin{DoxyItemize}
|
||
\item нейросеть на чистом C (без ML‑библиотек);
|
||
\item ядро игры с ручным управлением памятью;
|
||
\item NGINX + PHP + Code\+Igniter (REST API);
|
||
\item десктоп‑клиент на C++/\+SFML;
|
||
\item Android‑клиент Java/\+Kotlin;
|
||
\item сетевая связь по TCP/\+IP;
|
||
\item шифрование\+: RSA (2048 бит) для рукопожатия + динамический XOR для данных.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md61}{}\doxysubsection{\texorpdfstring{Текущий статус}{Текущий статус}}\label{md_README_8old_autotoc_md61}
|
||
Проект стартует с чистого листа. На данный момент\+:
|
||
\begin{DoxyItemize}
|
||
\item определена архитектура системы;
|
||
\item выбран стек технологий;
|
||
\item начата работа над ядром на C.
|
||
\end{DoxyItemize}
|
||
|
||
{\bfseries{Что предстоит\+:}}
|
||
\begin{DoxyItemize}
|
||
\item реализовать базовую логику игры (3×3);
|
||
\item написать нейросеть на C (обучение на партиях);
|
||
\item создать REST API на PHP для связи компонентов;
|
||
\item разработать десктоп‑ и Android‑клиенты;
|
||
\item внедрить схему шифрования;
|
||
\item интегрировать все части в единую систему.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md62}{}\doxysubsection{\texorpdfstring{Прогресс}{Прогресс}}\label{md_README_8old_autotoc_md62}
|
||
Весь прогресс отражен в файле {\bfseries{\doxysectlink{md_PROGRESS}{PROGRESS.md}{0}}}\hypertarget{md_README_8old_autotoc_md63}{}\doxysubsection{\texorpdfstring{Реалистичный план этапов (дорожная карта)}{Реалистичный план этапов (дорожная карта)}}\label{md_README_8old_autotoc_md63}
|
||
{\bfseries{Принцип планирования\+:}}
|
||
\begin{DoxyItemize}
|
||
\item работа ведётся небольшими сессиями (30–60 минут) в свободное время;
|
||
\item приоритет — последовательность, а не скорость;
|
||
\item каждый этап завершается минимально жизнеспособным результатом (MVP‑подход);
|
||
\item гибкость\+: этапы можно менять местами или дробить на подзадачи.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md64}{}\doxysubsubsection{\texorpdfstring{Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца}{Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца}}\label{md_README_8old_autotoc_md64}
|
||
|
||
\begin{DoxyItemize}
|
||
\item базовая логика игры (3×3 доска, проверка победы);
|
||
\item простая нейросеть (3 слоя, сигмоида, обучение на 100+ партиях);
|
||
\item консольный режим для тестирования;
|
||
\item битовые маски для оптимизации доски.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md65}{}\doxysubsubsection{\texorpdfstring{Этап 2. Сервер на PHP (\+API + БД) — 2–3 месяца}{Этап 2. Сервер на PHP (API + БД) — 2–3 месяца}}\label{md_README_8old_autotoc_md65}
|
||
|
||
\begin{DoxyItemize}
|
||
\item REST API ({\ttfamily /start\+\_\+game}, {\ttfamily /make\+\_\+move}, {\ttfamily /get\+\_\+state});
|
||
\item интеграция с ядром через Unix‑сокеты;
|
||
\item SQLite для хранения партий и статистики;
|
||
\item логирование запросов.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md66}{}\doxysubsubsection{\texorpdfstring{Этап 3. Десктоп‑клиент (\+C++/\+SFML) — 3–4 месяца}{Этап 3. Десктоп‑клиент (C++/SFML) — 3–4 месяца}}\label{md_README_8old_autotoc_md66}
|
||
|
||
\begin{DoxyItemize}
|
||
\item базовый UI (доска 3×3, кнопки);
|
||
\item связь с сервером по TCP/\+IP;
|
||
\item анимация ходов и победы;
|
||
\item кэширование состояния для офлайн‑режима.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md67}{}\doxysubsubsection{\texorpdfstring{Этап 4. Шифрование (\+RSA + XOR) — 1–2 месяца}{Этап 4. Шифрование (RSA + XOR) — 1–2 месяца}}\label{md_README_8old_autotoc_md67}
|
||
|
||
\begin{DoxyItemize}
|
||
\item RSA‑рукопожатие (2048 бит, Open\+SSL);
|
||
\item динамический XOR (смена ключа по таймеру/счётчику);
|
||
\item проверка целостности пакетов (CRC32);
|
||
\item тесты на утечку памяти и производительность.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md68}{}\doxysubsubsection{\texorpdfstring{Этап 5. Android‑клиент (\+Kotlin + NDK) — 4–6 месяцев}{Этап 5. Android‑клиент (Kotlin + NDK) — 4–6 месяцев}}\label{md_README_8old_autotoc_md68}
|
||
|
||
\begin{DoxyItemize}
|
||
\item MVP\+: доска 3×3 и связь с сервером;
|
||
\item вызов C‑библиотеки через JNI;
|
||
\item поддержка шифрования;
|
||
\item оптимизация под мобильные устройства.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md69}{}\doxysubsubsection{\texorpdfstring{Этап 6. Интеграция и тестирование — 2–3 месяца}{Этап 6. Интеграция и тестирование — 2–3 месяца}}\label{md_README_8old_autotoc_md69}
|
||
|
||
\begin{DoxyItemize}
|
||
\item синхронизация состояния между десктопом и Android;
|
||
\item стресс‑тест (10+ одновременных игр);
|
||
\item отладка многопоточности;
|
||
\item финальная оптимизация.
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md70}{}\doxysubsubsection{\texorpdfstring{Этап 7. Релиз MVP — 1 месяц}{Этап 7. Релиз MVP — 1 месяц}}\label{md_README_8old_autotoc_md70}
|
||
|
||
\begin{DoxyItemize}
|
||
\item сборка дистрибутивов (Windows, Linux, Android);
|
||
\item документация для запуска;
|
||
\item публикация демо‑видео.
|
||
\end{DoxyItemize}
|
||
|
||
\DoxyHorRuler{0}
|
||
\hypertarget{md_README_8old_autotoc_md72}{}\doxysubsection{\texorpdfstring{Гибкость и адаптация}{Гибкость и адаптация}}\label{md_README_8old_autotoc_md72}
|
||
{\bfseries{Если времени меньше\+:}}
|
||
\begin{DoxyItemize}
|
||
\item пропускаю Android‑клиент — фокусируюсь на десктопе;
|
||
\item заменяю RSA на Open\+SSL (готовые функции);
|
||
\item упрощаю нейросеть до минимакса;
|
||
\item откладываю динамический XOR на будущее.
|
||
\end{DoxyItemize}
|
||
|
||
{\bfseries{Если появляется больше времени\+:}}
|
||
\begin{DoxyItemize}
|
||
\item ускоряю этапы за счёт увеличения сессий;
|
||
\item добавляю фичи (режим PvP, статистика, темы UI).
|
||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md73}{}\doxysubsection{\texorpdfstring{Технологии}{Технологии}}\label{md_README_8old_autotoc_md73}
|
||
\hypertarget{md_README_8old_autotoc_md74}{}\doxysubsection{\texorpdfstring{Особенности архитектуры, решений и тактик (добавлено 22.\+04.\+2026)}{Особенности архитектуры, решений и тактик (добавлено 22.04.2026)}}\label{md_README_8old_autotoc_md74}
|
||
\hypertarget{md_README_8old_autotoc_md75}{}\doxysubsubsection{\texorpdfstring{ИИ аспект}{ИИ аспект}}\label{md_README_8old_autotoc_md75}
|
||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода(профилирование) и нежеланием заниматься рефакторингом ради рефакторинга, по-\/этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки Архитектуры, считаю что от этого зависит львиная доля успешности проекта впринципе(если на скорую руку сделать архитектуру, даже самые опытные разработчики не помогут, тут и начинается описанный выше рефакторинг). Единственным моим ассистентом и специалистом по части критики и статистики является Yandex\+GPT 5.\+1 Pro(Алиса\+AI). Порой наши многочасовые споры выматывают, но она очень помогает в следующих аспектах\+:
|
||
\begin{DoxyItemize}
|
||
\item Анализ кода в части читаемости, т.\+к. проект публичен.
|
||
\item Сбор статистики по типовым нагрузкам.
|
||
\item Понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||
\end{DoxyItemize}
|
||
|
||
Что я понял за время общения с ней\+:
|
||
\begin{DoxyItemize}
|
||
\item Никогда не верьте ИИ "{}на слово"{}, как бы он Вас не уверял что больше такого не повторится.
|
||
\item Никогда не следуйте подсказкам ИИ если понимаете что это Вам не нужно.
|
||
\item 10, а лучше -\/ 100 раз переспросите с разных сторон
|
||
\item даже если Вам кажется что ИИ дал точный ответ -\/ переспросите ещё раз.
|
||
\item Не пытайтесь доказать ИИ что Вы -\/ "{}не олень"{}, он этого не оценит
|
||
\item Предлагая ИИ оценить ИИ написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается, у ИИ галочка на расширяемость и проверки, вернее не "{}галочка"{} а "{}ГАЛИЩЕ"{}
|
||
\end{DoxyItemize}
|
||
|
||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу Yandex\+GPT 5.\+1 Pro(Алиса\+AI) до стадии "{}Да, Вы правы..."{} в коде я оставляю коментарии сгенерированные ею для неё же и помечаю их как "{}коментарии от Yandex\+GPT 5.\+1 Pro(Алиса\+AI)"{}. Очень часто в коментариях к коду можно встретить объяснения такого рода "{}Алиса\+AI настояла"{} в тех местах где наши мнения расходились но я пошёл на компромисс. \hypertarget{md_README_8old_autotoc_md76}{}\doxysubsubsection{\texorpdfstring{Основной посыл}{Основной посыл}}\label{md_README_8old_autotoc_md76}
|
||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "{}как это было"{}. Проект постепенно перерос в своеобразную "{}историю жизни"{}, это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-\/же духе, в первую очередь -\/ для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее -\/ приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "{}История одного байта"{}, которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения. \hypertarget{md_README_8old_autotoc_md77}{}\doxysubsubsection{\texorpdfstring{Образовательный аспект}{Образовательный аспект}}\label{md_README_8old_autotoc_md77}
|
||
Проект открыт для изучения, как автор -\/ не претендую на звание "{}разработчик года"{}, отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "{}смежным"{} специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их вдальнейшем. Весь код будет снабжён "{}удобоваримыми"{} коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования). \hypertarget{md_README_8old_autotoc_md78}{}\doxysubsubsection{\texorpdfstring{Основная стратегия KISS+\+YAGNI}{Основная стратегия KISS+YAGNI}}\label{md_README_8old_autotoc_md78}
|
||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-\/ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX\+\_\+\+INT\texorpdfstring{$\ast$}{*}\+MAX\+\_\+\+INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности. \hypertarget{md_README_8old_autotoc_md79}{}\doxysubsubsection{\texorpdfstring{Начата разработка общих модулей, конкретно -\/ XOGame.}{Начата разработка общих модулей, конкретно - XOGame.}}\label{md_README_8old_autotoc_md79}
|
||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так -\/ потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки -\/ это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу. После предоставления кода {\bfseries{server/includes/\+XOGame.\+h}}, {\bfseries{server/headers/\+\_\+\+XOGame.\+h}} и {\bfseries{server/src/\+XOGame.\+c}} на ревью Yandex\+GPT 5.\+1 Pro(Алиса\+AI) и 4-\/хчасовой баталии по поводу {\bfseries{void\texorpdfstring{$\ast$}{*} fxalloc(size\+\_\+t \+\_\+\+NBytes)}} решено пока что "{}забыть"{} про реализацию XOGame.\+c и заняться аллокатором {\bfseries{fxalloc.\+c}}, иначе я не выдержу, порой она достаёт "{}до чёртиков"{} ;)\hypertarget{md_README_8old_autotoc_md80}{}\doxysubsection{\texorpdfstring{Лицензия}{Лицензия}}\label{md_README_8old_autotoc_md80}
|
||
Apache License 2.\+0 — код открыт для изучения.\hypertarget{md_README_8old_autotoc_md81}{}\doxysubsection{\texorpdfstring{Контакты}{Контакты}}\label{md_README_8old_autotoc_md81}
|
||
|
||
\begin{DoxyItemize}
|
||
\item Git\+Hub\+: \href{https://github.com/felex67}{\texttt{ @felex67}}
|
||
\item Email\+: \href{mailto:admin@felexdev.ru}{\texttt{ admin@felexdev.\+ru}}, \href{mailto:felexxx67@yandex.ru}{\texttt{ felexxx67@yandex.\+ru}}
|
||
\end{DoxyItemize}
|
||
|
||
\DoxyHorRuler{0}
|
||
|
||
|
||
{\bfseries{Важно\+:}} проект в активной разработке. Сроки ориентировочные — зависят от свободного времени. Это дневник челленджа\+: фиксация прогресса, решений и находок.
|
||
|
||
Спасибо, что следите за ходом! 🍰 Пусть каждая строка кода будет шагом к победе — в своём темпе! 🎉 |