В одном из тредов меня попросили сделать пошаговое руководство по созданию полноценной игры на Python библиотеке PyGame. Пока что написал два урока, но будет гораздо больше, до тех пор, пока не сделаю полноценную RPG-игру шаг за шагом:
>Что тебе мешает свои туториалы выкладывать напрямую сюда? Как ты в сообщении на дваче сделаешь огрмоный туториал с кучей картинок, форматированием текста, code-snippet-ами? Наркоман чтоли? Сообщения на дваче не подходят для написания длинных мануалов. К тому же я вобщем-то это и делаю - "выкладываю туториалы прямо сюда" в виде ссылок на страницы на blogspot'е.
Да и вообще, я не только для двача делаю,а для кого угодно. На другие ресурсы потом тоже выложу ссылку наверно. В любом случае blogspot намного удобная платформа для туториалов, чем тред на дваче
>рекламка это не рекламка, а решение, принятое в треде >>607692 (OP) Я решил запилить отдельный тред под свой туториал, т.к. в том треде это оффтоп по сути и он скоро уйдет в бамплимит
Алсо, хоть у меня уже есть готовая игра с инвентарем, объектами, pathfinding'ом, звуками, выводом текста, взаимодействием объектов и пр., сделать пошаговое руководство по своему коду оказалось намного дольше и сложнее, чем я думал. Разделять свой код на составляющие этапы, описывать каждую строку кода, по многу раз переписывая текст, чтобы он был удобочитаемым и не содержал граматических ошибок, вставлять сткриншоты и code-сниппеты в blogspot-редакторе... Вобщем это занимает довольно много времени и сил.. Это в даже сложнее, чем писать сам код игры.
Но я, всё-таки решил довести дело до конца и кроме создания своей игры, поделюсь опытом с другими.
>>610219 (OP) Странно, что в первой статье вроде объяснение базовых проектов, но вместо того, чтобы всё с нуля создавать берётся какой-то проект с гитхаба
>>610228 >Странно, что в первой статье вроде объяснение базовых проектов, но вместо того, чтобы всё с нуля создавать берётся какой-то проект с гитхаба Если вообще с нуля пилить, нужно еще 10 уроков сделать. Github для того и сделан, чтобы с него брать основу для своих проектов.
Я же написал в первом уроке, что на создание меня сподвигло отсутствие в интернетах полноценного Open-source PyGame проекта на котором можно основать свою игру. Я уже месяц делаю свою игру, разбираясь с Pygame. Основана она на том простеньком проекте с гихтаба в котором изначально можно только ходить стрелками по простой карте, я е него за месяц допилил предметы, инвентарь, pathfinding, озвучку, вывод текста и пр. А пару дней назад в треде >>607692 (OP) аноны заинтересовались моим предложением мануала по PyGame, вот я и решил поделиться своим опытом. Сейчас сижу свой код разбираю на этапы и делаю из них подробные туториалы.
>>610238 >опущенец-изгой /pr/ Разве тема этого раздела - не разработка(dev) игр(game) Что может быть более подходящим к этому разделу, чем мануал по создаю игры?
А в /pr/ там программирование в общем, там мало кому нужна именно игра, поэтому треду место здесь
>>610253 >Разве тема этого раздела - не разработка(dev) игр(game) Не повод делать тред по каждому туториалщику с его туториалами. Этого говна на просторах интернета больше, чем в тебе говна. мимо
>>610254 >Этого говна на просторах интернета больше, чем в тебе говна. мимо Да вот нихуя! Я специально целый день потратил однажды на поиски туториала по pyGame, в котором было бы что-то сложнее чем ходьба по полю с тайлами. А мануалы, в которых вкратце описано создание объектов, их взаимодействия, вывода текста, звуков, pathfinding'а, NPC и пр. - ТАКОГО НЕТ ВООБЩЕ в интернетах. Я поэтому и создаю этот мануал, этого никто еще не сделал
>>610219 (OP) Я некоторое время подумывал о том, что на питоне что-то написать, но в итоге забил хуй. Сука, аж трисёт, когда приходится заниматься "низким" программированием, продираться через эти условности и унылые необходимости. Почитаю тебя немного, так и быть.
>>610267 А ты не кодингом занимаешься, ты ПИШЕШЬ, вот и пиздуй к писателям и жалуйся им как пейсательство >оказалось намного дольше и сложнее, чем я думал. Разделять свой код на составляющие этапы, описывать каждую строку кода, по многу раз переписывая текст, чтобы он был удобочитаемым и не содержал граматических ошибок
>>610273 Лучше на Годот перебраться, это я как тебе, так и ОПу пишу, ибо питоноподобный синтаксис это святое, плюс при релизе не надо каждый раз проект в exe заворачивать
>>610219 (OP) Оп молодца. Хотя блог твой мне и не нужен. Сри на распидора, игнорируй токсиков, общайся только с теми, кому интересен PyGame. Если тут вдруг такие есть.
>>610223 >вставлять сткриншоты и code-сниппеты в blogspot-редакторе А для оффлайн-прочтения это удобно потом будет сохранять? За что не люблю формат подобных блогов, это что там или сохранять по одной странице, что неудобно и дублирует общие между страницами картинки/другие_ресурсы, или сохранять web crawler'ом, но он может захватить лишнего или не захватить нужного. Хорошо когда серию туторов можно скачать одним архивом не оставшись потом с носом когда интернет выключат за неуплату.
>>610433 Хз как сохранять, там вложенные файлы еще... Плюс я уроки буду периодически обновлять, изменяя немного текст, дополняя, делая более подробными или удобочитаемыми, так что лучше наверное просто в броузере открыть и держать открытой
Добавил ещё один урок, в котором добавлен вывод текста на экран и работа с таймерами, чтобы текст исчезал через заданое количество времени. Проверяйте.
>>610495 >>610219 (OP) Алсо, я заебался писать супер-подробные уроки, это отнимает так много времени, что не дает мне разрабатывать саму игру. Поэтому теперь, вначале уроков будет ссылка на Github-каталог с рабочими скриптами для данного урока, которые можно сразу запустить, посмотреть код с подробными комментами.
Потом будет не супер-подробное описание урока. Но в свободное время, я буду дорабатывать и дополнять текст каждого урока, чтобы они все в конечном счете были максимально детальными и подробными.
Нормальная тема, пиши дальше. Действительно так подробно не нужно. Давай кусок кода сразу размером функцию/класс/метод и в один абзац объясняй, что в нём происходит. Сам скоро начну делать что-то подобное, правда не по твоему мануалу, а полностью с нуля, но мануал чутка почитываю
>>610620 P.s. > for curObj in gameObjectList: ### Для всех объектов проверяем попадение курсора мыши в этот объект Для вообще всех объектов или может как-то фильтрует их? Ведь объектов в игре сотни/тысячи.
>>610621 Это для урока, чтобы понятней было(поменьше текста). В следующих уроках я естественно заменю копирование for на прямой доступ через for index in enumerate(..)
>Для вообще всех объектов или может как-то фильтрует их? Ведь объектов в игре сотни/тысячи. На данный момент там небольшой экран и много объектов не вместишь, поэтому фильтровать особо не нужно. А в будущих уроках, когда я сделаю большое игровое пространство по которому можно путешествовать, и вмещающее большое количество объектов, конечно сделаю алгоритмы, отсекающие те объекты, которые за пределами экрана
>>610869 >фокусированную камеру Всмысле фокусированную? Чтобы персонаж ходил по большому пространству и всегда был в центре камеры? Сейчас такое не нужно и невозможно, потому что сейчас всё игровое пространство - это экран игры, за пределами ничего пока нет.
Но в будущих уроках я сделаю большую карту и камера естественно будет всегда на персонаже.
>>610872 >Но в будущих уроках я сделаю большую карту и камера естественно будет всегда на персонаже. Да я это и имел ввиду, чтобы камера всегда фокусировалась на персонаже. Не как в старых аркадах когда камера статичная и показывает сразу весь уровень, а микроскопический персонаж бегает по этому уровню. И вопрос, как можно масштабировать эту камеру? Например вид сбоку, камера сфокусирована на персонаже, но когда он подходит к боссу камера немного отдаляется и захватывает ещё и босса.
>>610894 >И вопрос, как можно масштабировать эту камеру? Например вид сбоку, камера сфокусирована на персонаже, но когда он подходит к боссу камера немного отдаляется и захватывает ещё и босса. Да легко, просто движение камерой PyGame в зависимости от условий(наличие босса например)
Пока у меня карта размером с это окно, поэтому двигать камеру не имеет смысла, но в следующих уроках я сделаю размер карты намного больше, чем размер окна и при движении камера будет всегда с персонажем в центре. Скорее всего еще сделаю дополнительный режим остановки камеры при нажатии какой-то кнопки например, чтоб можно было просто походить по статичному экрану
>>610939 Нет, иди нахуй, и своё говно уноси. Хватит срать бесполезной инфой, нихуя не понимаешь лишь копипастишь чужой код. Иди учись кодить мразь, плюс в придачу рисовать своё а не пиздить и это, чмоха.
>>610943 >безыгорный долбоеб не знает что такое синтез идей чет проорался с твоего рваного поста, так и веет криком о необходимой психологической помощи
>>610951 Чмоня я делаю на патрике 200 зелёных в месяц, пока ты дрочишь своё говно в стол. Поверь, у меня и опыта, и понимания в области разработки ИГОРЬ больше в десятки раз чем у тя, утырок. Поэтому еще разочек, иди дрочи свои скиллы дальше, и не приноси своё говно пока это не будет ориджинал контент, а не чужая копи паста. Адьёс, псина.
Сделал код более соответствующим стандарту PEP8. Добавил редактор карты: включаешь режим редактирования кнопкой [e] на клавиатуры, двигаешь объекты, отключаешь этой же кнопкой -> в консоль выводится JSON-строка, которую потом присваиваешь переменной game_objects_json в начале скрипта roguelike.py. в результате при следующем запуске игры, положение объектов сохраняются. В дальнейшем сделаю возмонжость считывать .json карты, созданные в популярном редакторе карт Tiled. Плюс еще режим подсветки рамок объектов, выключается/выключается кнопкой [r]
Вопросы, замечания и обсуждение в Дискорд: Дискорд.gg/hqx6Kg9
>>612101 Расчет прямоугольника для коллизий(зеленая херня) происходит в скрипте models.py в классе GameObject. Я этот расчет не упоминал в уроках, потому что слишком сложно и много текста пришлось бы писать. Там вкратце просто находится самый нижний непрозрачный и снизу вверх сканируются пиксели до определенной длинны, получается треугольник для коллизий