Бегаем по карте. Roguelike на PICO-8. Часть 2
Что может быть проще, чем ходить на одну клеточку по шахматной доске? Берешь и рисуешь спрайт в новом месте.
Вот только стоит ли хранить положение героя в координатах? Стоит ли хранить состояния всех клеток доски?
Решил хранить только две координаты: X и Y левой нижней клетки. Если точнее левого верхнего угла этой клетки: PICO рисует спрайт от этой точки вниз и вправо (в сторону увеличения координат - Y идет сверху вниз).
Перевод из координат ячейки в координаты игры делает элементарная функция:
«Анимация» движения героя выглядит интереснее. Этот кусочек с трудом влез на экран, а часть условий возврата героя в обычное состояние обрезалось. Весь смысл этого кода — двигать героя не сразу на 8 пикселей, куда ему надо, а плавно кадр за кадром со скоростью speed передвигать его в нужную сторону. Для этого есть глобальная переменная timer, которую увеличиваем на единицу, потом двигаем спрайт в нужную сторону.
Не все решения были удачными с первого раза. Сначала хранил все 64 клетки массивом:
Удобно перемещать «фигуры»
соседние клетки вычисляются элементарно;
Состояние всех клеток понятно;
Проход по 64 клеткам — плевое дело;
По факту оказалось, что это крайне неудобно. Хранить состояние героя в отдельной таблице, а врагов в отдельной с ключами-координатами гораздо проще.
Итогом недели стал такой вот вариант с бегающим по сетке героем: файлик с PNG-картриджем на Я.Диске. Закидывайте PNG в PICO-8 на десктопе или в образовательную версию.
Делаю пошаговый roguelike на PICO-8. Часть 1. Начало
Идея сделать пошаговый рогалик меня донимает полгода. Я даже сделал несколько попыток ее реализовать на нескольких движках. В реализации успели поучаствовать GDevelop, GameMaker, Defold, Godot... Вот только грезил я не самой игрой, а как я в нее добавлю рекламу и заработаю миллионы. Ха! Это будет попытка сделать игру на «немонетизируемом» движке PICO-8. И без AI.
PICO 8
PICO-8 — fantasy console — эмулятор консоли, которой никогда не было. Полная версия стоит 15 баксов, есть бесплатная образовательная версия. У PICO очень жесткие ограничения по графике (128 на 128 пикселей, 16 цветов), звуку (эффекты и музыка воспроизводятся «чипом» консоли). Язык программирования — подмножество Lua.
Суровые ограничения — самое то для хобби.
Последние полгода я целенаправленно вычищаю идеи монетизации хобби из своего сознания и расписания. Уж очень настырно они отбирают время у сна, без спроса лезут в рабочее время, когда так сложно сконцентрироваться.
Геймдев оставался последним оплотом, который все норовит «заработать денег». Я целенаправленно начал поиски движка без возможности залить игру на веб-порталы. Сначала я купил RPG Maker. А на днях — PICO-8.
Grid Rogue
Идея игры простая: есть шахматная доска, наш герой ходит на одну клетку по горизонтали или вертикали. В руках у него меч, на плечах рубаха. На случайных клетках доски спавнятся враги пачками по несколько штук.
Игра идет в пошаговом режиме: ход игрока, потом к нему подползают враги. С соседней клетки можно атаковать в свой ход.
Сейчас концепция игры в моем блокноте выглядит так:
Реализация будет на PICO-8. Шахматную доску я уже сделал.
Пристегивайте ремни... Хотя не нужно. Это будет неспешное создание игрушки: скорее прогулка в парке, можно не пристегиваться.
А я тоже делаю свой lua-sandbox
Всем привет. Меня зовут Валера, я go-разработчик. В какой-то момент своей карьеры(а об этом я напишу в конце статьи, что бы не выглядело рекламой или пиаром по мере чтения) я решил, что хочу сделать свой луа-движок. Да не просто движок, а со свистелками-перделками да узконаправленный. Выбор пал на пошаговые игры. И нет, я сейчас не про jagged alliance(хотя и оно тоже будет реализуемо) а про целый пласт игр, которые суммарно я назову event-oriented games. В этот список я готов внести:
Все настольные игры
Все устные игры(мафия, элиас и иже с ними)
Все пошаговые стратегии(Disciples, че бы нет)
Все тактические пошаговые игры(а вот и Jagged Alliance)
И все они имеют одно большое сходство - для любого события работает схема action -> state. Для любого. Для меня, как для разработчика это большой плюс, потому что для меня это облегчает работу. Никаких хитроумных predictive алгоритмов, никаких дельта расчетов, ничего, что заставит нагружать и без того не самую мощную Lua VM лишними расчетами.
Поэтому я делаю свой первый блин(и нет, это точно не будет комом). Если честно, то писать страшновато, но мой тех. директор убедил, что писать статьи - полезно, что лучше полная панамка, чем пустая.
Для бэкенда я выбрал обвязку go + gopher-lua(есть и другие варианты, но с этой работать намного привычнее в виду моей профессиональной деятельности) а для фронта скорее выбор без выбора. phaser + fengari. Они отлично сочетаются друг с другом, не ощущаю больших проблем в создании api бриджей между визуальным движком и луа.
Что уже сделано:
1) Выбрано название для платформы. Braca - хотелось иметь легкую отсылку к Бракаде из одной популярной игры)
2)Готовы базовый бэкенд+фронтенд
3) Реализованы мультиплеерные шахматы + пошаговая игра собственной разработки
4) Есть минималистичный фронт с необходимыми для закрытых тестов штуками
5) Функционал игровых комнат, команды, режим наблюдателя
6) Чат-каналы
7) Базовые lua-модули: ui, chat
8) Большая дока по луа, которая несёт пользу моему единомышленнику Ромычу
Что в планах:
1) Удобный интерфейс для публикации своих игр и lua-модулей(git-like, естественно:))
2) Статистика для луа-разработчиков
3) Сервис ачивок
4) Кастомизация интерфейса комнаты для луа-разработчика(то есть разработчик буквально сможет переопределять, как должна выглядеть веб-морда до запуска игры)
Пока не готов раскрывать технические детали проекта, но могу однозначно сказать, что уделяю особое внимание безопасности: луа-разработчик НЕ СМОЖЕТ повесить сервер кривым кодом, НЕ СМОЖЕТ достать какие-то данные, которые ему не предназначены, НЕ СМОЖЕТ заставить игроков выполнять свои вычисления за их счет.
Немножко моей первой игры. Цель банальна - рассекретить и уничтожить базу врага, при этом защитив свою.
А теперь о профессиональной деятельности. Начну издалека. 18 лет назад я мечтал, что вот я вырасту и как буду делать игры. Жизнь оказалась прозаичнее. Несколько лет отработал в wb на go, затем решил уйти в сторону геймдева. И ровно в этот момент мы с Pixel Quest нашли друг-друга. Я и сейчас тут, делаю отличный продукт. И в это же время получаю огромное количество экспы, т.к. пиксель находится в окологеймдеве. У нас тут, знаете ли, свой реалтайм луа-движок используется.
Я сделал свой аналог скретч и протестировал сколько он выдержит одновременных скриптов (получилось 12000 с чем то)
Только я запускал новые потоки а не создавал 10 тысяч скриптов, видео доказательство
Я изначально не хотел публиковать код, но я понял что никто не скачает какую-то неизвестную программу из телеграмма поэтому загрузил исходник на гитхаб и написал как её из исходников запустить.
Программу я опубликовал просто так, ну может кого-то она заинтересует, ну или так, чтобы получить чужое мнение.
Писал я всё на lua и love 2d, я выбрал их потому что lua по моему мнению простой, а приложения на love 2d можно собирать под многие платформы.
Программу я планирую обновлять, тк я сам хочу потом в будущем на ней чтото сделать, также я хочу обогнать по функционалу TurboWarp и Scratch, но сейчас программа очень глючная и по функционалу даже скретч не догоняет, а большинство ошибок связаны с типами данных, lua не типизированный язык, но я сделал чтобы вместо вылета сначала появлялось окно сохранения.
Сам я новичок в программировании и код у меня очень запутанный. Учитывая что меня уже критиковали, ожидаю что тут будет также.
Исходник(кому интересно глянуть код или запустить): Github(билд + код) Telegram(только билд)
Также скрины:
Российский инди аналог Roblox с нуля. Часть 0: Интро и предполагаемая архитектура
Новости относительно блокировки Roblox уже поутихли, депутаты высказались в стиле "Надо пилить-распиливать российский аналог", первые эмоции угасли, теперь можно подойти к вопросу с более трезвым взглядом.
Наверняка, условные Mail и Yandex уже пилят свои проекты, причём, я уверен, начали они это делать ещё задолго до официальных новостей о блокировке, и конкурировать с ними в РФ, очевидно, никто не сможет и в здравом уме не станет. И начинать проект ради скорого захвата освободившейся ниши было бы опрометчиво. Я не строю иллюзий, что программист одиночка без бюджета сможет сделать аналог уровня Roblox. Моя история будет про другое.
Я среднестатистический бекенд разработчик около-синьорного уровня (никогда не любил эти грейды) без какого-либо опыта в геймдеве. По моим ощущениям, геймдев (особенно мультиплеер) всегда считался чем-то вроде высшей лиги, каждый программист так или иначе мечтает создать собственную игру, для нас это своего рода святой грааль. Это интересно, это увлекает.
Запуская этот проект и серию статей, я хочу пошагово пройти путь от схемы на бумаге до первого рабочего мультиплеер прототипа. Проект некоммерческий, без призывов задонатить или подписаться на telegram max-канал, писать буду исключительно на Пикабу. Мне, как разработчику, будет крайне полезно заиметь проект подобного уровня в резюме, а там как карта ляжет. Я не ставлю себе каких-то жестких сроков или дедлайнов, потому что есть основная работа, есть семья, есть спорт, ну и всё в таком духе. Тише едешь, дальше будешь.
Название
Под одним из соседних постов про российский аналог кто-то в шутку предложил название Rublox, а кто-то даже пошел и сразу зарегистрировал домен.
Я решил придерживаться другой логики и назвал проект Voblox, от слов Voxel Blocks. Воксель – это трехмерный аналог пикселя, представляющий собой элементарный куб в трехмерном пространстве. И конечно, это отчасти пародийное название на Roblox.
Предполагаемая архитектура
Мне нравится сама идея игровой онлайн-платформы, позволяющей любому пользователю создавать свои собственные и играть в созданные другими игры, охватывающие широкий спектр жанров. Да, большинство игр минималистичны, но все они разные и каждая со своей уникальной механикой, от простой песочницы со свободой действия аka Minecraft, до массовых соревновалок или даже баталий команда на команду. Дух захватывает от того, сколько всего можно сделать в рамках одной игровой платформы при правильном проектировании.
Каким будет стек:
– Unity в качестве кроссплатформенного игрового движка клиента;
– Go в качестве основного серверного языка;
– Lua в качестве скриптового языка для игр;
– Postgres в качестве основной базы данных;
– UDP с протобафом в качестве основного протокола взаимодействия клиент-сервер.
А вот так я представляю себе первую версию проекта:
Схема простая: игрок через Unity клиент игры подключается к игровому серверу c Lua машиной на борту и конкретным скриптом игры, в котором каждый игровой тик обрабатывается состояние игрового мира и рассылается игрокам. Ассеты для игры будут подгружаться из отдельного микросервиса, чтобы отсадить тяжелое TCP соединение от чувствительного UDP (об этом позже).
Очевидно, по мере реализации проекта, схема будет дополняться новыми микросервисами и связями: регистрация/авторизация пользователей, лобби со списком игр, скрипт-менеджер для жонглирования Lua скриптами, и т.д.
В следующей части разберём, что должен уметь Lua скрипт игры и какие события обрабатывать.
Курсы для детей по созданию игр
В этой подборке собраны программы для обучения детей программированию, дизайну, тестированию и созданию игр. Каждая программа разработана с учетом современных требований к знаниям и навыкам, и включает практические задания, которые помогают закрепить изученные материалы.
Мы тщательно анализируем плюсы и минусы каждого курса, опираясь на мнение пользователей как на нашей платформе, так и на других ресурсах. Изучите реальные отзывы студентов и найдите подходящий для вас курс на платформе Pikabu Курсы.
Курс «Minecraft для детей» от Skysmart
Курс «Minecraft в Scratch» от Coddyschool
Курс «Программирование на Lua в Minecraft» от Coddyschool
Курс «Создание игр с нуля» от Фоксфорд
Курс «Разработчик игр в Roblox Studio» от REBOTICA
Курс «Создание мультиплеерной игры в Roblox Studio» от Coddyschool
Курс «Разработчик видеоигр: создание 2D-игр разных жанров» от Coddyschool
Курс «Unity для детей» от Skysmart
Курс «Разработка мобильных игр на Android» от Coddyschool
Курс «Разработка игр на CryEngine 5» от Coddyschool
Обзор курсов
1. Курс «Minecraft для детей» от Skysmart
Курс поможет детям освоить основы программирования через создание проектов в игровом мире, а затем перейти к более сложным задачам, таким как проектирование средневековых замков, городов и биомов, а также изучение Python.
Цена: 6 667 ₽ за несколько уроков.
Длительность: 32 практических занятия с учителем.
Возраст учеников: с 8 лет.
Подробности:
интерактивный подход;
окончательную цену можно узнать только у менеджера;
плавный переход к Python;
гибкость графика;
знакомство с IT-профессией;
многоуровневая программа;
развитие навыков проектирования;
бесплатный пробный урок;
налоговый вычет.
2. Курс «Minecraft в Scratch» от Coddyschool
Курс поможет ребенку создать свою собственную версию Minecraft, используя визуальный язык программирования Scratch.
Цена: 6 800 ₽ за 4 урока.
Длительность: от 3 месяцев.
Возраст учеников: 7-9 лет.
Подробности:
интерактивность;
доступность;
практическая направленность;
технические требования для работы над проектами;
окончательную цену можно узнать только у менеджера;
бесплатный пробный урок.
3. Курс «Программирование на Lua в Minecraft» от Coddyschool
С помощью модификации Computercraft дети научатся управлять игровыми роботами-черепашками, автоматизировать задачи и создавать собственные алгоритмы.
Цена: 6 800 ₽ за 4 урока.
Длительность: от 3 модулей.
Возраст учеников: 10-12 лет.
Подробности:
практическое обучение через игру;
окончательную цену можно узнать у менеджера;
язык Lua – отличное введение в мир программирования;
развитие навыков работы с искусственным интеллектом;
постепенное усложнение задач;
улучшение навыков решения проблем;
технические требования для работы над проектами;
необходимость умения уверенно набирать текст и базовых знаний английского языка может стать барьером для младших детей или тех, кто только начинает осваивать клавиатуру.
4. Курс «Создание игр с нуля» от Фоксфорд
Дети освоят основы программирования и работы с игровым движком, погрузятся в процесс разработки 3D-моделей.
Цена: 62 500 ₽
Цена со скидкой: 39 900 ₽
Возраст учеников: 5-11 класс.
Подробности:
широкий охват тем;
практическая направленность;
постепенное усложнение тем и пошаговое освоение сложных концепций;
создание игры и 3D-моделей в Unity и Blender;
программа насыщенная и может потребовать значительных усилий от начинающих.
технические требования для работы с Unity и Blender;
бесплатный пробный урок.
5. Курс «Разработчик игр в Roblox Studio» от REBOTICA
В рамках курса дети научатся программировать на языке Lua, создавать захватывающие уровни и игровые механики, разрабатывать интерфейсы и внедрять искусственный интеллект в игры.
Цена: 10 900 ₽
Цена со скидкой: 7 085 ₽
Возраст учеников: 8-17 лет.
Подробности:
практическая направленность;
творческое развитие;
окончательную цену можно узнать у менеджера;
подготовка к реальным проектам;
актуальные темы;
работа с искусственным интеллектом и многопользовательскими играми может быть сложной для начинающих;
требования к оборудованию для полноценной работы с Roblox Studio;
Lua изучается на базовом уровне;
бесплатный пробный урок;
нашли отзыв с жалобой на процедуру выплаты вознаграждения ученику;
нашли отзыв с жалобой на процедуру возврата средств;
нашли отзывы с жалобами на работу наставника.
6. Курс «Создание мультиплеерной игры в Roblox Studio» от Coddyschool
Дети научатся создавать игровые миры, взаимодействовать с командами и публиковать собственные игры. Курс развивает креативное мышление, навыки работы в команде и будет отличным стартом для дальнейшего изучения игровой индустрии.
Цена: 6 800 ₽ за 1 модуль.
Длительность: от 4 месяцев.
Возраст учеников: 11-14 лет.
Подробности:
удобные инструменты;
мультиплеерные возможности;
командная работа;
публикация проектов;
креативное развитие;
окончательную цену можно узнать у менеджера;
бесплатный пробный урок.
7. Курс «Разработчик видеоигр: создание 2D-игр разных жанров» от Coddyschool
Курс развивает навыки работы с физикой, геометрией, графикой, а также помогает делиться готовыми играми в интернете, создавая первые портфолио для дальнейшего развития в IT и игровой индустрии.
Цена: 1650 ₽ за 1 занятие.
Длительность: от 3 месяцев.
Возраст учеников: 8-10 лет.
Подробности:
интуитивно понятный движок Construct;
создание нескольких жанров игр;
освоение базовых навыков программирования;
интеграция навыков из физики и геометрии;
развитие креативности и командной работы;
окончательную цену можно узнать у менеджера;
бесплатный пробный урок.
8. Курс «Unity для детей» от Skysmart
В процессе обучения дети будут работать с трехмерными уровнями, физикой объектов, анимацией и звуковыми эффектами.
Цена: от 799 ₽ за 1 урок.
Возраст учеников: с 12 лет.
Подробности:
изучение C#;
работа с Unity;
создание 6 полноценных 3D-игр;
комплексный подход;
практическая направленность;
развитие креативного мышления;
окончательную цену можно узнать у менеджера;
налоговый вычет;
бесплатный пробный урок.
9. Курс «Разработка мобильных игр на Android» от Coddyschool
На курсе дети познакомятся с профессиональным игровым движком Unity3D, освоят основы программирования, анимации и дизайна.
Цена: 6 800 ₽
Длительность: от 4 месяцев.
Возраст учеников: 12-16 лет.
Подробности:
полный цикл разработки игр;
практическая направленность;
творческое развитие;
актуальные навыки;
ученики научатся презентовать свои проекты и выступать перед аудиторией;
окончательную цену можно узнать у менеджера;
бесплатный пробный урок.
10. Курс «Разработка игр на CryEngine 5» от Coddyschool
Под руководством преподавателя студенты создадут свои первые игровые объекты, изучат ключевые алгоритмы на языке C#, познакомятся с гейм-дизайном и сделают свои первые шаги к созданию искусственного интеллекта для игровых ботов.
Цена: 6 800 ₽
Длительность: от 3 месяцев.
Возраст учеников: 12-16 лет.
Подробности:
работа с CryEngine5;
изучение C#;
практическая направленность;
постепенное углубление в программирование;
основы AI и 3D-анимации;
использование CryEngine5 может быть сложным для детей без базовых знаний в программировании;
окончательную цену можно узнать у менеджера;
бесплатный пробный урок.
Реклама. АНО ОБРАЗОВАТЕЛЬНАЯ АНО ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СКАЕНГ, ИНН 9709022748, ИП Селендеева Оксана Николаевна, ИНН 212901700606, ООО Фоксфорд, ИНН 7726464100, ООО ЛЕРН ДИВИЖН, ИНН 9709083317.
Неумею кодить на Lua, но нету времени научиться но хочу сделать пару мелочей
В общем, буду краток, есть такая игрулька Project Zomboid, позвали меня туда друзья и меня засосало чуть чуть, а еще я полюбляю би бибки ну автомобили короче, слава богу pz это по сути песочница в сетинге зомби апокалипсиса. Ну и при чем тут машинки? Т.к. игра дает простор фантазии то мододелов тут дохрена и больше. И вот я открыл для себя мастерскую стим где есть тысячи модов. Вот недавно что-то задумался что у каждого двигателя машины есть параметр "температура" который практически вообще не используется, вот я и задумался насколько сложно было бы сделать мод на то чтобы я в -60 после того как машина стояла несколько дней на улице не заводил двигатель "с пол тычка" (скорость данного действия зависит только от состояния двигателя). Хотя в целом у меня желание сделать мод с проработаными двигателями в игре, их навесными, жидкостями, ведь в ванильной игре это только 1 параметр "состояние двигателя" и каждый движок привязан к своей машине. Но понимаю что если я немогу просто с кодом разобратся то тут еще модельки двигателей, навесных надо делать (в игре просто пустота под капотом или картинка в модовых авто). Поэтому хочу хотябы понять как сделать то чтобы температура на что-то влияла, хотябы возможный перегрев, если давать высоких оборотов на холодном то состояние двигателя бы уменшалось, сделать тот же старт двигателя в лютые морозы не было так просто, но не имею абсолютно никакого понятия в этом.
Надеюсь хоть кто-то прочитает или найдется герой который в этом хоть что-то понимает.



























