Привет, Pikabu! Сегодня мы погрузимся в мир программирования и создадим собственную версию классической игры "Змейка" на Python. Это не только весело, но и отличный способ улучшить ваши навыки в программировании. Полный код вы можете найти в моем канале - https://t.me/+NqX_NVmS2xU1MDcy.
Для начала убедитесь, что у вас установлен Python. Если нет, загрузите его с официального сайта Python. Затем установите Pygame, открыв терминал или командную строку и введя pip install pygame.
Создание окна игры
Давайте начнем с создания основного окна игры. Это делается с помощью следующего кода:
Этот код запускает базовое окно игры размером 640x480 пикселей.
2. Разработка логики игры
Теперь добавим логику управления змейкой. Змейка будет представлять собой список сегментов, каждый из которых - это прямоугольник.
3. Добавление еды и счета
Теперь добавим функцию появления еды и отслеживания счета.
Поздравляю, теперь у вас есть работающая игра "Змейка" на Python! Этот проект не только увлекателен, но и помогает лучше понять основы программирования и разработки игр. Не стесняйтесь экспериментировать с кодом и добавлять новые функции. Удачи в вашем программировании!
Меня зовут velskboy и я ношу гордое название шиткодера. В этой серии постов я буду писать о том, как продвигается разработка моей мобильной игры. Что бы вы понимали какого уровня будет контент я сразу опишу вводные моего, кхе, "опыта": 1. У меня не техническое образование (фельдшер) 2. С айти я связан только тем что пытался закодировать батю 3. На момент старта игры в юнити я мог создать только новую сцену и пустой объект 4. Из С# я знал, что byte жрет меньше памяти чем int (эти знания я не использовал) 5. К моменту написания сего вводного поста игра разрабатывается уже месяц, каждый вечер по паре часов. 6. Я делаю абсолютно всё один. И прогаю, и рисую, и пенисы пинаю 7. Юзаю чатгпт, конечно же.
Хотя должен вам сознаться, что уже я...
Слегка исказил истину
Небольшой опыт программирования был, но он был на питоне и с использованием Vk api и SQLite (сделал бота для настолок по моему сеттингу, хотел что бы игроки могли написать /стрельба и бот сам считал результат исходя из вбитых в БД значений), но вряд ли он сильно мне помог.
Далее: Я не хочу этой игрой заработать (нет, хочу, конечно, но не рассчитываю). Я ее делаю развлечения ради. В игре нет никакого глубокого смысла или логической концовки, это будет банальный таймкиллер с мини играми и кучей лута.
ХА ХА ДА БОЛЬШЕ ЛУТА СЮДА ЛУУУУТ (кадры из игры, да)
Ввиду того, что я начал писать не сразу, то первые дни разработки будут скомканные и без фото, возможно найду видео которые скидывал друзьям. В следующих постах я буду писать абсолютно всю подноготную того чего делал, включая ссылки на туторы которые смотрел.
Возможно, вас, как и меня, дико раздражает та реализация обработки событий в Pygame, которая приводится, как пример, во всех возможных учебниках. А именно: в игровом цикле вложенный цикл перебирает очередь, и, в лучшем случае, вызывает методы объектов, но, обычно, еще и расчёты игровой механики идут там же. Отчего программа выглядит как месиво примеров из документации и костылей, перемотанное изолентой (не синей).
Моё решение
Создаём класс (в том числе, для всех настроек и глобальных действий игры)
Метод events сохраняет копию очереди событий, и отдаёт её по запросу, обновляя, при необходимости. Метод isRun предназначен для реакции на закрытие окна. Для общего случая он не нужен.
В целом, программы теперь можно писать так:
Таким образом, реакции на события обрабатываются внутри объектов, как и положено в нормальном мире.
Для запоминания этой инфы используйте систему Лейтнера.
Зачем я это делаю:
Посмотрел видосики Булджатя про всяких долбанутых геймеров, которые занимаются сбором абсолютно всех предметов в никому ненужной ММО 20 летней давности. Спидранеры всякие. Или типы, что тренируются по полгода, чтобы выполнить финт на курение палки. И подумал: Пиздец вы долбанутые. Я тоже так хочу.
Только я решил, что пожалуй выберу какое-нибудь реал лайф достижение. И придумал парочку.
Выучить все существующие языки программирования и создать на каждом языке программирования по одной игре каждого существующего жанра.
Выучить все существующие научные дисциплины.
2.1. Начну я пожалуй с изучения школьной программы с первого по одиннадцатый класс на сайте Российской Электронной школы.
2.2. Затем продолжу, выучив всю университетскую программу с 1 по 4 курс.
2.3 Выучить все языки в мире (не программирования, обычные. человеческие)
Создать собственную студию по созданию компьютерных игр. (Это наверное будет самое сложное. Ведь у меня для этого нету денег абсолютно.)
Дальше пока не придумал. Хотя бы эти выполнить...
Способ как выучить всю эту огромную гору информации и чтобы можно было отслеживать прогресс.
Система Лейтнера — широко используемый метод для эффективного запоминания и повторения с помощью флэш-карточек, предложенный немецким ученым и журналистом Себастьяном Лейтнером в 70-е годы XX века. Эта система — простое применение принципа интервальных повторений, где карточки повторяются через увеличивающиеся интервалы.
В этом методе так называемые флеш-карточки рассортированы в группы в зависимости от того, как хорошо ученик усвоил информацию на каждой карточке. Например, при изучении иностранного языка ученик пытается вспомнить значение слова, написанного на флеш-карточке. Если он вспоминает его, то карточка перекладывается в следующую группу. Если же нет, то карточка возвращается в первую группу. Каждая следующая группа повторяется через увеличивающийся интервал. Данный метод может использоваться как для изучения слов иностранного языка, так и запоминания другой информации.
Программа для составления карточек Vaia.
Сейчас мне 23 года. Учитывая технологический прогресс, то я скорее всего доживу лет до 100 в здравом рассудке. Так что, на выполнение осталось около 77 лет. Пожелайте мне удачи :)
P.S. А ещё я наверное приму целибат и ограничю свои контакты с людьми по минимуму. От такой бесполезной и отнимающей вещи как "друзья" я пожалуй откажусь. (Собственно я социофоб почти не вылезающий из дома, это самое простое)
Я только начинаю свой путь в программировании и хочу разрабатывать игры. У меня несколько вариантов.
1 способ самый очевидный. Скачать популярный игровой движок (Unreal engine, Unity, Godot. Я думаю выбрать Godot), выучить язык программирования на котором в этом движке разрабатываются игры. Сразу учить то, что мне нужно для создания игр. И выкладывать свои результаты. Думаю начать с разработки браузерных игр.
Но тут есть проблемы. 1. Разрабатывать игры очень сложно и времязатратно. Создам я игру за полгода, выложу, а она нахуй никому будет не нужна. Я могу перед тем, как начать зарабатывать на этом потратить годы. А работать по текущей специальности? Я блять, устроился оператором службы чат поддержки за 27к. Правда работаю 2/2 и у меня есть целых 2 свободных дня, чтобы пилить игрушки.
2. способ немного заковыристее. Я же планирую создавать браузерные игры, верно?
Выучу JavaScript и буду работать на какую-нибудь компанию фронтэнд разработчиком. Заодно разберусь с движками на JavaScript и буду на них делать игры. У меня будет лучше зарплата (меньше же 27к платить не будут, верно? Верно же?...) и возможность карьерного роста.
Но будет ли у меня время тратить на изучение игровых движком и создание игры? Мне же нужно будет по работе постоянно учить новые фреймворки и ещё какую-нибудь херь (я хз как это называется). И JavaScript в основном используется для того, чтобы пилить сайты, а не для разработки игр. То есть мне нужно будет изучать в свободное время то, что не поможет в работе. Получиться ли у меня повышать квалификацию, чтобы больше зп была и ещё разрабывать игры?
На примере моей игры «Эпик Шутер» расскажу насколько может быть полезно интегрировать метрику в вашу игру для площадки Яндекс Игры. Игра на движке Unity. Интеграция SDK Яндекс Игр с помощью плагина PluginYG.
Я сделал эпичный шутер под ритмичную музыку, вы можете попробовать поиграть в него для понимания описанного в этой статье анализа. Анализ состоит в том, чтобы понять на каких моментах игроки покидают игру и исправить недочёты. Это можно узнать благодаря сервису Яндекс Метрика.
Я не пытаюсь рекламировать свою игру здесь, поиграть в неё предлагаю лишь для понимания описанного. Знаете, Яндекс Игры льют трафика гораздо больше, чем вы сможете привлечь рекламируя свою игру сами. Но об этом поговорим в другой раз, а сейчас о том — как может помочь интеграция метрик в вашу игру.
В начале я расскажу что было после релиза игры, какие вскрылись недостатки, моменты на которых люди выключают игру. Поделюсь и другими причинами непопулярности игры (всё относительно конечно).
Затем расскажу что стало после исправления недочётов, которые мне показала метрика, и как преобразились результаты после обновления игры. Забегая вперёд — мне удалось удержать более 50% игроков!
Релиз игры
Наверное, всем интересно услышать сколько можно заработать на своей игре. Делюсь результатом, сколько принесла игра за две недели после релиза:
3450 рублей. Были по какой-то причине пики и до 1000р в день, но в итоге игра остановилась на доходе 50р в день. Интересно то, что практически половина игроков иностранцы. Должно еще с них что-то прийти (пока нет информации по доходу с иностранцев).
Вернёмся к метрикам.
Я повесил метрики на загрузку уровней, финиш, и на ключевые триггеры в тренировочном уровне. И вот что получилось:
22% выходят из игры сразу после включения первого уровня. Может быть игра тормозила, а может игроков не устроил нож в руке на первых секундах вместо огнестрела. Отсутствие противников или всплывающая подсказка могла стать причиной для выхода из игры.
Но послушайте по какой причине отвалились следующие 50% игроков! На моменте где нужно перепрыгнуть между домами 50% игроков выходят вероятно только потому, что при прыжке у персонажа в воздухе нет инерции и ощущения не привычные. Значит даже такая мелочь может отпугнуть 50% игроков Яндекс Игр.
Далее 13% не доходят до оружия автомата.
Потом еще 30% покидают игру при входе в дом, видимо, из-за всплывающей подсказки. Наверное, тут игрокам уже нужен экшон, а не табличка с текстом.
Зато 2-й и 3-ий уровни проходили больше, чем первый тренировочный. Значит часть игроков проходили игру на второй раз или первые уровни.
Основные вероятные причины почему игра не стала популярной:
Тематика игры. Без трендовой темы в Яндекс Играх очень сложно выстрелить.
Обложка/иконка. CTR обложки низкий. Думаю, детям нужны более яркие краски и, опять же, популярные персонажи на картинке.
Оптимизация. Она как я считаю у игры отличная. Но загруженность локации для веба слишком высокая. Для веба нужно еще меньше разных деталей, объектов, текстур. И главное, по умолчанию в игре стоят средние настройки в которых есть тени и post process AO сильно нагружающие систему. Наверняка дети даже не заходят в настройки что бы сменить графику. По умолчанию лучше ставить низкие настройки графики, на низких в большинстве случаев игра будет идти плавно.
Обучение в игре. Зачастую обучение важно, но в данной игре этому практически посвящён целый уровень. Сейчас дети привыкли к тиктокам, им нужен ежесекундный контент. Тем более это браузерные игры, их можно переключить очень быстро и без установки. Хорошим вариантом для обучения будут подсказки не обрывающие игру, причем важно с первой же секунды дать игроку весь самый интересный геймплей.
Вес игры. Хоть всё и хорошо ужато, деталей много. Сейчас вес составляет 45 мб. В среднем загрузка у игроков составляет 18 секунд. Я считаю, желательный вес до 25 мб, загрузка до 10 сек. для аналогичной игры.
Метрики, две недели после релиза.
После обновления
Я сделал обновление, в котором исправил проблемные моменты.
Результаты: После запуска первого тренировочного уровня выключали игру 22% игроков, теперь 18%. Там, где уходили 50% игроков, теперь уходят лишь 4% !!! Следующие триггеры: Было 13%, стало 5%. Было 30%, стало 4%. И т.д…
Что касается доходов игры и её продвижения на площадке: По посещаемости график немного растёт вверх, но это может быть связано с чем угодно. Тут не следовало ждать сильных изменений, ведь обложка игры не была заменена. Плейтайм на игрока вырос с 10 минут до 13-ти. Доход вырос с ~50р в день до ~100р. Вывод можно сделать однозначный — метрики могут хорошо показать проблемные места игры, которые можно успешно устранить.
Сделать такие метрики на самом деле очень просто. Как вести такой же анализ: Есть понятная и расширенная информация об этом в документации PluginYG (Раздел «Яндекс Метрика»). Там понятно описано как внедрить такие же метрики.
Как я получал такие цифры в процентах:
Например, в игре есть триггер 1 и триггер 2, которые отображаются в метриках в цели triggers. На первом триггере 600 визитов игроков (значит до этого момента дошли 600 игроков). На втором триггере 500 визитов. На любом сайте находим разницу двух чисел в процентах. В данном случае разница получается 16.67%. Значит между первым и вторым триггерами ушло 16,67% игроков.
Метрики после обновления
Заключение
Метрики — очень полезная штука, и совсем не сложная в использовании. Если, конечно, с плагином и документацией к нему.
Подписывайтесь на меня и на мой телеграм, чтобы узнавать такие полезные новости первым. Я так же буду делиться и очень полезной информацией, и очень срочной! Да, срочность, это один из самых главных факторов успеха, когда нибудь и об этом напишу.
в общем я делаю свою игру и хочу найти ребят в свою команду так как одному будет сложно работать, СРАЗУ скажу зарплаты не будет! деньги будем получать (если вообще будем) с донатов в вк и скачиваний игры В КОМАНДУ НУЖНЫ: программист 1 или 2 2д художник окружения 2д художник персонажей и один 3д моделлер вк студии:https://vk.com/club222708923 вк игры: https://vk.com/club222708136
Автор: Эл Свейгарт
Количество страниц: 416
Год: 2018
☄️Эта книга научит вас разрабатывать компьютерные игры при помощи популярного языка программирования Python — даже если вы никогда раньше не занимались программированием!
Начните с создания таких простых игр, как «Виселица» и «Крестики-Нолики», а затем перейдите к продвинутым анимированным и озвученным играм.
По мере работы над каждой игрой вы заложите прочный фундамент знаний по языку Python и основам компьютерных наук.
📌В процессе вы изучите ключевые концепции программирования и узнаете, как:
💬Использовать циклы, переменные и инструкции.
💬Выбирать правильные структуры данных, такие как списки, словари и кортежи.
💬 Делать игры с графикой и анимацией, используя модуль pygame.
💬Использовать криптографию для преобразования текстовых сообщений в секретный код.
💬Отлаживать программы и находить распространенные ошибки.