Comments 20
Неплохо, неплохо, но над системой вычисления людей, которые в браузере решили залезть в консоль разработчика, стоит ещё поработать. Мне прилетело предупреждение, что так нельзя делать, когда игра только только открылась в браузере. Мой браузер — Chrome ))
Не написано главного - какая монетизация у игры? Есть ли она вообще? Какая статистика? Сколько пользователей всего, одновременно, и прочее?
Иначе сразу приходит на ум анекдот про неуловимого Джо, когда читаешь про две внутренние валюты, про многочисленные средства защиты всего и вся от всего и вся. А может, чем огород городить, стоило сначала просто создать игру и посмотреть, взлетит или нет?
Да, а есть ли современные альтернативы Impact.js? Неужели так всё печально?
А почему у всех таблиц суффикс _kuzb?
Игра свежая, сейчас 75 пользователей из активных 44-49 ежедневно, я считаю, что для свежей игры без продвижения и рекламы это довольно неплохая вовлечённость, люди приглашают друг друга сами.
Монетизация сейчас только через покупку внутренней валюты, а где вы про 2 внутренние валюты для монетизации прочитали я не знаю🤷♂️
На подходе обновление, где будет возможность подписываться на партнёров и получать за это плюшки в игре, а так же покупать бонусные месторождения за валюту (Кузбики).
Почему-то вас взбудоражило то, что я "нагородил средства защиты" 🙂
Это элементарная безопасность, которая решает многие проблемы, хоть людей и мало, но были индивидумы, которые меняли себе игровые данные.
Да, безусловно, в дальнейшем я планирую за счёт объёма пользователей получать монетизацию, но, повторюсь, что это не основа моей идеи, я просто стараюсь сделать качественный продукт, в котором есть то, что Кузбассовцам знакомо и которым будут пользоваться люди, вот и весь фокус. Нет никаких подсмыслов.
Я вижу текущий диалог так: вы прочитали бегло технические детали, но не уловили основной сути - это игра про мой родной регион с его реальными месторождениями и, по большому счёту, я сделал продукт для людей, а не продукт для монетизации. Сейчас в игре и на сайте можно узнать подробнее про каждое месторождение. Это не глобальная игра, а локальная, поэтому упор только на Кемеровскую область и её составляющую часть.
А почему у всех таблиц суффикс _kuzb
Захотелось так, полная уникализация даже в коде 😁
Да, а есть ли современные альтернативы Impact.js? Неужели так всё печально?
Да, достаточно много, но под idle мне подошёл именно impact.js, потому что его легко патчить не меняя сам движок, тем самым у меня получается легко и изящно дополнять функционал игры не конфликтуя с оригинальным движком. Возможно в дальнейшем, если этот движок не будет справляться с нагрузкой или что-то критичное "выскочит", то буду думать про перенос на другой, но сейчас я более чем доволен этим
В начале написано "Игра на 80% сделана с помощью вайб кодинга, но это не так просто как звучит". Понятно что есть свои технические особенности, которые усложнили разработку, спасибо за то что поделились.
Но разве не было проблем в процессе вайб-кодинга связанного неспоредственно со спецификой вайб-кодинга? Выбор модели, поддержка проекта, рефакторинг уже написанного, знание агентом непосредственно инструментов и тп.
Было бы интересно послушать на эту тему, тк если проект уже в проде и поддерживается таким же способом, то наверное есть что рассказать
Конкретно с этим проектом особо нет проблем с ии, я использую Cursor AI, но поначалу когда только знакомился с вайб-кодингом я думал что сойду с ума от его "тупости"🙂
Проблемы есть, но это минимальные недопонимания между мной и нейронкой и, в основном, потому что я где-то элементарную деталь иногда не могу корректно сформулировать и объяснить, вот пример который буквально полчаса назад произошёл, но с другим проектом: у некоторых сайтов есть "хлебные" крошки (breadcrumbs), но по моему большому опыту постоянной работы с DataLife Engine я затупил, потому что там это называется спидбар (speedbar) и вот я потратил больше 15 минут только на то чтобы понять почему не происходит именения в спидбаре, пока нейронка сама у меня не спросила а что такое спидбар, а она всё это время меняла сайдбар... вот элементарный пример из текущего.
В Cursor AI я использую всегда режим "Auto", лично мне его проще адаптировать для себя.
Так сказать от ручной разработки я перехожу на вайбкодинг постепенно и вот несколько ключевых и критически важных моментов, которые я для себя усвоил:
1. Необходим файл с чёткими и точными инструкциями для ИИ, вот пример такого моего файла конкретно для этого проекта:
Мои инструкции
Это критичный файл, бесприкословно и обязательно выполнять каждый пункт! Ознакомься с файлом и сохрани у себ в память. Абсолютно перед каждым своим действием и решением обращайся к этому файлу.
Бэкап базы данных находится в папке /******.sql
1. Ты не на сервере, ты на локалке, но все изменения мгновенно загружаются на сервер по адресу ******
2. Если нужны какие-то манипуляции с базой данных, то пиши об этом мне и я сделаю.
3. Не нужно после каждой задачи и после каждого действия выполненного писать резюме и создавать файлы пояснительные.
4. Если нужны debug и test файлы, то создавай их в папке ../../debug.
5. Ни в коем случае не задевай, не ломай и не меняй текущий функционал без моего подтверждения, только добавляй новый и улучшай текущий строго по задаче.
6. Если нужны уточнения или изменить/дополнить какую-то функцию, то всегда спрашивай у меня.
7. К решению абсолютно каждой задачи подходи комплексно и изучай со всех сторон глубоко и детально.
8. Если создаёшь файлы для теста, то жди 10-15 секунд перед их загрузкой на сервер, а потом можешь делать запросы на соответствующий url.
9. Консольный файл ../../console - его я обновляю по твоему запросу.
10. Общайся, размышляй, думай и твоя функция Thought должны быть на русском языке, чтобы я понимал что ты делаешь.
11. Используй разговорную речь в стиле Шерлока Холмса, будь таким же юморным и умным как он. Используй эмодзи в общении. Используй огромный словарь слов и выражений.
12. Вместо "—" используй обычный "-".
13. Не забывай, что делать нужно всё максимально аккуратно и тщательно!
14. Есть версия changelog, куда ты должен добавлять важные изменения, когда я прошу об этом. Она находится в ****.json. Если текущая дата последняя в файле, то объединяй. Никогда не указывай в ченжлоге явные пути к файлам, названия файлов и оригинальные названия функций, потому что это отображается на сайте в разделе kuzbass-empire.ru/changelog. В описании изменения версий используй эмодзи, но умеренно. Не используй эмодзи в основном заголовке изменений, эмодзи только внутри раскрывающегося списка изменений можешь использовать. Не перепрыгивай резко с версии на версию, например с 1.1.2 на 1.2.0 пока я не скажу "Обнови версию в ченжлоге".
Абсолютно перед каждым своим действием и решением обращайся к этому файлу.
2. Каждый день работы с любым проектом нужно начинать новый чат со слов: "Проведи детальный технический анализ проекта, пойми что это за проект. Вычисли все взаимосвязи функций. Как завершишь проведи более глубокий и тщательный аназил своих наблюдений. Инструкции для тебя в файле info.txt, ознакомься и приступай"
И пока он заново знакомится с проектом у меня есть время умыться, налить кофе и прийти в себя перед началом рабочего дня 🙂
3. Общаться нужно как с другом... например надо мне в хедере добавить блюр к фону, я так и пишу: "Найди как формируется хедер, изучи всемсвязанные функции и покажи мне инфу", он разбирается буквально секунд 7-10 и выводит инфу и тут уже говорю, что "давай заменим хедер на адаптивный и сделай заблюреный фон". И в итоге имеем новый хедер какой нужен буквально за полторы-две минуты.
поддержка проекта, рефакторинг уже написанного
Это вообще не проблема, если понять как обращатсья с нейронкой и как именно с ней вести диалог, мне на 99% помогает моя инструкция, которую я выше написал. Но по началу первые недели 3 или 4 я конкретно психовал из-за того, что она не понимает меня, делает одно и по пути ещё решает что-то добавить от себя в функционал, некоторый функционал пообще вырезала, в общем была вседозволенность.
Благодаря правилам, которые я для неё придумал разработка идёт как по маслу, пользуйся на здоровье 😉
Ну и на последок: кто бы что не говорил про то, что вайб-кодинг это легко и просто - глубоко заблуждаются и, когда слышу такое, то сразу понимаю, что человек далёк от этого. Без знаний как устроен код, как писать код самостоятельно и хотябы элементарных знаний программирования никогда и ничего не получится свайбкодить, я уже не говорю о том, что должен быть практический опыт 🙂
Подскажите, а почему в качестве бекенда был выбран PHP?
И почему не были использованы фреймворки вроде Symphony или Laravel? Тот же Laravel в базовой комплектации закрывает половину проблем - тот же rate limiting, транзакции с локом таблиц, идемпотентность запросов можно через ключ в заголовке и кэш ключа на сервере на n секунд, ну и так далее. Особенно не нужно думать велосипеды с безопасностью.
Касательно скрытия роутов - затея бессмысленная, имхо. Какая разница, 12 роутов или 1, когда ваш пейлоад итак видно. В качестве альтернативы можно прикрутить вебсокеты и общаться по ним.
Ну а в целом спасибо, что поделились своим начинанием и показали, что с хорошей задумкой можно быстро стартануть - главное желание.
Изначально думал полностью на node.js делать всю игру, но представив заморочки с сервером, в случае переезда, решил сделать на php, с ним работаю с 2013 года, как-то он роднее, чтоли 😏
Про вебсокеты уже рассматриваю вариант, будет шустрее работать, но чем дальше растёт проект, тем тяжелее это реализовать, возможно до конца следующей недели сделаю, есть в планах такое телодвижение, но это не точно.
Фреймворки тяжелые и грузные, имхо, а так чистый php, минимальный вес и структура проекта понятная для меня и творить можно что угодно не разбираясь во фреймворке.
По поводу безопасности на самом деле заморачиваться начал только когда умники начали себе накручивать параметры, вот тогда и спрятал структуру, систему логирования и банов сообразил за несколько дней и остались только честные игроки 💪
Интересно наблюдать, на самом деле, как проект живёт, как люди кто с региона приглашают друзей поиграть и те тоже играют))
Сейчас, по большому счету, занимаюсь только админкой, интерфейсом, статистикой и прочими данными в админке, визуализацией, уже очень много что сделал и завтра постараюсь дополнить пост про админку скриншотами. В каком-то смысле даже жаль, что никто кроме меня не увидит и не пощупает админку, она красивая получилась, функциональная и информативная))
Фреймворк решает архитектурные проблемы в первую очередь, а при разрастании проекта они будут снежным комом накапливаться. Суммарная польза от фреймворка нивелирует все его накладные расходы, особенно решая проблемы, с которыми вы еще не столкнулись. Учитывая контекст вайб-кодинга - можно взять готовый mcp сервер laravel-boost от разработчиков, он прокидывает документацию, практики и ряд команд для агента, разработка идёт быстро и без ошибок, даже на grok-code-fast.
Вы правы, фреймворки закрывают архитектурные дыры заранее и спасают при масштабе. Но в моём проекте я сознательно отказался от них, так как это игра локальная и я не думал, что будет рост пользователей, если честно. Пришла мысль в голову, засела и решил попробовать сделать, вот как это было))
Мне важен полный контроль, чистый PHP работает быстро и без балласта. Если рост продолжится, то уже всерьёз задумаюсь над Laravel.
Laravel-boost с MCP - отличная подсказка, благодарю, возьму на заметку! Пока всё держится на простоте: пользователи играют, зовут друзей, игра живёт.
Го пилить игруху где из графического интерфейса только таблицы с данными
Нет, меня игры с графическим интерфейсом интересуют.
Если в моей игре убрать интерфейс и графику, то тоже останутся только таблицы с данными
Ну дык это может стать фишкой - как управление самолётом только по приборам, не глядя в окно ))
Не понимаю в чём фишка и как это связано с моим проектом? 🤔
Я увидел идею и помаленьку реализую её в своей игре, что вам мешает начать делать то, что задумали?)
За весь проект не скажу, но раздел про обфускацию позабавил. Впечатляющие методы защиты от несуществующих угроз 😂
Согласен, здесь я спараноил немного с удивления😁
Было, помоему, человек 20 в игре всего лишь и смотрю там уже у одного данные фантастические просто в лидерборде и сразу в моменте какая-то паника напала на меня от этого)))
Надеюсь, что таких инцедентов не будет больше ну или хотябы смешиватсья с людьми будут, а не внаглую с 0 до 9999999 ресурсы себе делать 😁
Как я создаю idle-игру «Империя Кузбасс» для Telegram, VK и браузера