>Говорят рогалики можно кирилить десятилетиями. #2
>Поехали!
>Предыдущий >>558349 (OP) (OP)
Говорят, тред нелегитимен, а ОП - хуй.
Нихуя ты вспыхнул
Сделал отрисовку инвентаря. Переделал сам инвентарь, вынеся его в отдельный класс, потому что начал охреневать от количества функций класса creature.
Прошел все круги ада с адекватной реализацией функций "подними/выброси/используй/экипируй предмет" - и это я еще функцию "метни предмет" сознательно проигнорировал. Под это дело пришлось также перерабатывать обработку ввода команд.
Сделал нормально переход с этажа на этаж. Нормально = через лестницы и с сохранением персонажа.
Переделал генерацию мобов. Каждая комната теперь при создании имеет шанс сгенерить моба, еще один шанс сгенерить второго моба и совсем маленький шанс сгенерить третьего.
Переделал генерацию уровней. Теперь чем глубже в данж - тем больше комнат и пещер. Скажу честно посоны, охуенное ощущение - рассекать по реально большому этажу, да еще и без тормозов.
Вывел полоску ХП и ее расчет на экран, сделал лечилки. А, и заодно сделал возможность умереть и ньюгейм после этого. Теперь формально это действительно рогалик. Делать в игре по-прежнему почти нефиг, но зато появилось ощущение некоего интереса ну или я просто упоролся уже.
А ваши дела как?
Качаться же. У тебя какая система ролевая (есть ли вообще)?
Сделай стрельбу, смену оружия, разных монстров.
Вообще, хорошо делаешь, надо разгребать работу и тебя догонять.
>>669124 →-кун
> Вопрос бывалым - чем вообще занять себя в данже?
Секретные комнаты
Предметы которые игроку не помогут, но могут ввести в игру некий "лор" (какие-нибудь свитки с текстами)
Какая-нибудь скрытая последовательность которая приведёт к некоему эвенту
Например потушить все факелы (или зажечь) в подземелье откроет куда-то проход
Лол, как только я написал прошлый пост, я подумал что вот это самое мне и насоветуют в первую очередь. Если объяснишь как это геймплейно оправдать, попробую ебануть
>>673661
Секретные комнаты - уже сделал. Открытие их по событию тоже сделал - пока выбор из двух вариантов, может рычаг сгенериться где-нибудь, а может скрытая плита в полу.
Про лор пока вообще не думал, хотел сначала механики реализовать пока они внезапно в голове не закончились.
А с факелами зачет идея, спасибо. Возьму в работу Это что, освещение лепить? И сами факелы нужно рисовать, а чтобы норм было надо анимацию делать нормальной а не через жопу, бляяяяя в целом наверное в brogue че-нить можно подсмотреть как будто я недостаточно пиздил из pixel dungeon
>>673660
Точно, качаться! Пока никакую не использую, все больше велосипедю. Все налеплено от балды - от хп монстров до дамага оружия. Есть чего посоветовать почитать на тему?
Смена оружия есть (даже на гифке к прошлому посту), стрельбу - да, найс идея, даже прикинул, как можно сделать - попробую.
Спасибо котаны, добавил в бэклог, лол.
>Вообще, хорошо делаешь, надо разгребать работу и тебя догонять.
Давай конечно! А то я себя чувствую Семеном в треде. Нужно больше рогаликов.
Можешь какой-нибудь такой шестиугольник сделать для света
Для углов ромб подойдёт наверное
А вот факел https://opengameart.org/content/lpc-animated-water-and-fire
Или просто спрайт круга рисовать который чуть мерцает
>Все налеплено от балды - от хп монстров до дамага оружия. Есть чего посоветовать почитать на тему?
У меня вот такая ссылка в закладках по этому поводу: https://www.redblobgames.com/articles/probability/damage-rolls.html
>Если объяснишь как это геймплейно оправдать, попробую ебануть
Это и есть геймплей. Подкрадываешься к монстрам и ебёшь их.
Познавательно, почитал. Переделал расчет урона. Хотя я не сильно испытывал неудобство с предыдущим, нормальное распределение выглядит получше.
Но когда ты говорил про прокачку, я думал ты про левелинг какой-нибудь - на каком уровне как происходит прирост хп и статов, и т.д.
Или они тебя, как в старой, доброй и классичееской «Watch out you behind hunter!» Вообще можно было бы развить идею той игры. А лор, что это силы тьмы масоны педофилы и тебе надо как воину альянса спасти детей от педофилов - рептилоидов из подземелий. Уф бля! Адренохрома ебануть надо.
Давайте может поговорим за реализацию? Может посоветуете, как лучше сделать можно.
Короче, как сделано на текущий момент:
У меня есть действия, которые тратят ход и есть действия, которые не тратят. Например, move тратит ход, а открытие инвентаря - нет.
Я ввел для игрока стейты (states, состояния): "обычное", "копаюсь_в_инвентаре", "выбираю_цель_для_броска". Сделано это для того, чтобы можно было одни и те же кнопки действий использовать по-разному и не конфликтовать.
Еще сделал новый класс pointer, который создается, когда игрок входит в стейт "выбираю_цель_для_броска" и удаляется, когда игрок из него выходит. Для pointer сделал отдельный move, который позволяет перемещать его по тайлам только в поле зрения (fov) игрока. Этот move не тратит ход.
Итак:
Игрок находится в состоянии "обычное".
Открываешь инвентарь - игрок переходит в состояние "копаюсь в инвентаре". В этом стейте кнопки которые обычно отвечают за перемещение, отвечают за скроллинг инвентаря.
Жмешь кнопку "метнуть предмет". игрок переходит в стейт "выбираю_цель_для_броска". Инвентарь закрывается. Создается новый pointer, положение по умолчанию - тайл, на котором стоит игрок.
Двигаешь поинтер кнопками, жмешь кнопку броска - происходит действие броска и переход в стейт по умолчанию, поинтер удаляется. Отмена - также реализована, но без броска.
Как такие вещи по нормальному делать?
А щас-то чё на по нормальному? Работает - значит норма.
>Еще сделал новый класс pointer, который создается, когда игрок входит в стейт "выбираю_цель_для_броска" и удаляется, когда игрок из него выходит. Для pointer сделал отдельный move, который позволяет перемещать его
Делал также. Только перемещение не ограничивал.
А ты зачем? У тебя же FOV и FOW. Всё равно чего не надо не увидит. У кидать предметы/стрелять в пустоту иногда нужно или весело. Помнишь как в UFO было?
Алсо, посмотри Doom Roguelike. Там идеальная стрельба и вообще боёвка. Но, насколько я помню, там +- так же как у тебя механика стрельбы реализована.
Ну, на самом деле перемещение по fov это костыль, потому что по сути происходит не бросок предмета а удаление его из инвентаря и добавление на выбранный тайл. Если не ограничивать, то легко можно, например, в соседнюю комнату телепортнуть предмет.
Чтобы нормально сделать бросок, надо наверное кастить прямой луч с позиции игрока до выбранного тайла, и где он прерывается по пути к тайлу(стена там или моб), там и спавнить предмет. Кстати, это довольно неплохая идея...
>>674640
Не знал что Doom RL с открытыми исходниками лежит, кстати. Ознакомлюсь обязательно.
Во-вторых - про
>кастить прямой луч с позиции игрока до выбранного тайла
я сделяль. Подход использовал с https://www.redblobgames.com/grids/line-drawing.html. Код на питоне и гифон процесса - на скринах. Как будто змею выпускает, лол, збс
Ещё можно сделать, чтоб можно было перейти на сторону педофилов.
Еще сделал запоминание последней цели, если бросок был не просто в тайл, а в монстра - также в DoomRL происходит при стрельбе. Собственно, похоже у меня готова стрельба. Осталось пушку добавить.
Спасибо!
Буду пореже постить, а то весь тред засрал.
Сделал совершенно ебануто выглядящий вариант потайлового освещения и доделал пушку со стрельбой. Код к настоящему моменту натурально похож на жопу и я не представляю, к чему в итоге я хочу прийти.
Кстати, 16 числа на r/roguelikedev будет очередной tutorial series - https://www.reddit.com/r/roguelikedev/comments/grccvt/roguelikedev_does_the_complete_roguelike_tutorial/
> какой язык учить
> Мне важен сам процесс создания чего-то типа своей dwarf fortress
Тогда учи язык, а не игру делай
>анон о питоне отзывается с насмешкой
О БОЖЕ, КАКОЙ УЖОС!!!
>быстро работала, мало весила
C++, asm
Ты это я в январе этого года.
Когда я только начал, я очень плохо знал язык и ничего не кодил ни разу толком. И рогаль начал пилить исключительно с целью научиться. А теперь хуярю тонны говнокода как не в себя, ссука, как это выключить
Короче раз уж я состоявшийся рогаликописатель, бля, только не бейте посоны, вот тебе мое экспертное мнение:
1. Поставил цель - держись ее. Не слушай анонов которые говорят тебе выучить другой язык, применить другую парадигму, говна пожрать и так далее. Хочешь кодить - начинай. Хочешь на питоне - возьми питон. Мой рогаль - на питоне. В r/roguelikedev в основном советуют начинать на питоне. Ничего плохого не вижу пока. Хотя если ты хочешь рогаль писать только для того, чтобы тебя аноны уважали, то конечно начинай сразу на расте, телки течь будут, шишка встанет и уйдет, забьешь на программирование нахуй, успех короче.
2. Подучи язык. >>675507-анон в чем-то прав. Мне охуенно помог курс на repl.it (вот этот - https://repl.it/student/classrooms/17929). Без ебанины, сидишь, решаешь задачки, от мегапростых (допиши принт) до довольно головоломных - и заодно учишь основные структуры и термины, и руку набиваешь. И нет резких скачков типа "нарисуй два овала - нарисуй остальную сову".
3. Уменьшай цель. Чтобы сделать ДФ, нужно сделать 10 обычных рогаликов. Тарн до ДФ дохера игр наговнокодил (пруф - https://www.youtube.com/watch?v=ZMRsScwdPcE). Kyzrati убил 10000 часов на игру которую даже не выпустил, до того как сделал cogmind (https://www.youtube.com/watch?v=9yJflbg0V38), а теперь он с него живет. Поставь для начала цель сделать простую игру - рандомный лабиринт, игрок, перемещение. Хотя бы с этого начни.
4. Задавай себе вопросы, ставь маленькие цели. Я ни один туториал не прошел до конца - либо моего мозга хватало только на половину того, что в них показывают, либо другая крайность, вида "возьми библиотеку типа tcod, напиши "import roguelike" и у тебя готов охуенный рогалик." Это не научит тебя ничему. Есть другой вариант: спрашивай себя "а как я могу реализовать вот это или вон то? Как сделать карту? Как сгенерить рандомные комнаты на карте? Как их соединить коридорами? Как сделать, чтобы они не пересекались?" И т.д. и т.п.
Думай, гугли, смотри видосы, читай статьи, спрашивай анонов. Здесь дают охуенные советы Ну или залупу на воротник накидывают, тоже бывает, это психотронная тюрьма, что ты хотел . И не пойми меня неверно, туториалы тоже смотри. Впитывай инфу.
5. Ну и старайся делать то, что тебе интересно. Я реально в эту тему влез, потому что всего лишь интересно было сделать лабиринт из квадратных комнат рандомно сгенеренный, и на экран его вывести. А потом было интересно, как походить по нему. А потом сделать комнаты не квадратные. А потом я посмотрел https://youtu.be/Uo9-IcHhq_w... Ну ты понял.
И в тред пиши. Особенно про прогресс. Будешь семеном, как я.
Ты это я в январе этого года.
Когда я только начал, я очень плохо знал язык и ничего не кодил ни разу толком. И рогаль начал пилить исключительно с целью научиться. А теперь хуярю тонны говнокода как не в себя, ссука, как это выключить
Короче раз уж я состоявшийся рогаликописатель, бля, только не бейте посоны, вот тебе мое экспертное мнение:
1. Поставил цель - держись ее. Не слушай анонов которые говорят тебе выучить другой язык, применить другую парадигму, говна пожрать и так далее. Хочешь кодить - начинай. Хочешь на питоне - возьми питон. Мой рогаль - на питоне. В r/roguelikedev в основном советуют начинать на питоне. Ничего плохого не вижу пока. Хотя если ты хочешь рогаль писать только для того, чтобы тебя аноны уважали, то конечно начинай сразу на расте, телки течь будут, шишка встанет и уйдет, забьешь на программирование нахуй, успех короче.
2. Подучи язык. >>675507-анон в чем-то прав. Мне охуенно помог курс на repl.it (вот этот - https://repl.it/student/classrooms/17929). Без ебанины, сидишь, решаешь задачки, от мегапростых (допиши принт) до довольно головоломных - и заодно учишь основные структуры и термины, и руку набиваешь. И нет резких скачков типа "нарисуй два овала - нарисуй остальную сову".
3. Уменьшай цель. Чтобы сделать ДФ, нужно сделать 10 обычных рогаликов. Тарн до ДФ дохера игр наговнокодил (пруф - https://www.youtube.com/watch?v=ZMRsScwdPcE). Kyzrati убил 10000 часов на игру которую даже не выпустил, до того как сделал cogmind (https://www.youtube.com/watch?v=9yJflbg0V38), а теперь он с него живет. Поставь для начала цель сделать простую игру - рандомный лабиринт, игрок, перемещение. Хотя бы с этого начни.
4. Задавай себе вопросы, ставь маленькие цели. Я ни один туториал не прошел до конца - либо моего мозга хватало только на половину того, что в них показывают, либо другая крайность, вида "возьми библиотеку типа tcod, напиши "import roguelike" и у тебя готов охуенный рогалик." Это не научит тебя ничему. Есть другой вариант: спрашивай себя "а как я могу реализовать вот это или вон то? Как сделать карту? Как сгенерить рандомные комнаты на карте? Как их соединить коридорами? Как сделать, чтобы они не пересекались?" И т.д. и т.п.
Думай, гугли, смотри видосы, читай статьи, спрашивай анонов. Здесь дают охуенные советы Ну или залупу на воротник накидывают, тоже бывает, это психотронная тюрьма, что ты хотел . И не пойми меня неверно, туториалы тоже смотри. Впитывай инфу.
5. Ну и старайся делать то, что тебе интересно. Я реально в эту тему влез, потому что всего лишь интересно было сделать лабиринт из квадратных комнат рандомно сгенеренный, и на экран его вывести. А потом было интересно, как походить по нему. А потом сделать комнаты не квадратные. А потом я посмотрел https://youtu.be/Uo9-IcHhq_w... Ну ты понял.
И в тред пиши. Особенно про прогресс. Будешь семеном, как я.
Rust забыл
>>675532
Ок. Вы одно не поняли: мне неважно, какой язык анон считает самым лучшим - важно только то, на каком, по его прикидкам, оптимально делать такой рогалик. И не как первый блин, а вообще, потому что для меня не стоит никакого дедлайна и я не стремлюсь зарабатывать 300кк в наносекунду кодигом никогда. Вот буду сидеть и ковырять плюсы, например, несколько лет, пока простейшую генерацию пещер сделаю - меня это устраивает, если в итоге это пойдет на пользу игре.
>>675507
>учи язык
>какой не знаю
У меня открылось. Попробуй зарегаться.
Или зайти на https://repl.it/student и поискать Auto-Graded Course with Solutions (python)
Нет такой страницы.
>Auto-Graded Course with Solutions (python)
Находится по адресу https://repl.it/community/classrooms/17929
Предлагаю тебе язык Rust. Сам горю такой же идеей как и у тебя. Но покатолько много накириллил
Реализовано так: добавил всем сущностям переменную lightlevel. Факелы кастят лучи во все стороны, и всему, что в радиус попадает, изменяют этот lightlevel. При рендеринге спрайт соответствующим образом темнится. Чуть сложнее, но не суть
Еще переделал анимацию - сделал отдельную функцию, которая по тику в игровом цикле сменяет кадры каждому энтити. Следовательно, начал потихоньку вкуривать в системы, которые S в ECS. Отслеживание уровня освещения тут же засунул во вторую систему.
Просто в той комнате тоже могут быть факелы.
Может можно накостылить кастинг лучей света только в одну комнату, но комнаты часто генерятся как на пикрил - когда разделение одной стеной - так что хз что с этим делать
Он же вроде писал, что PyGame.
Вообще без проблем, а цель какая? Там такая содомия, что хоть санитаров вызывай мало что понятно, если ты не я.
Но в принципе могу какой-нить туториал по основным моментам запилить, с примерами кода. Только лучших практик не ждите, цель - поделиться тем, как у меня голова работала. Надо?
Ссылку на код кину, как с компа зайду и залью в гит какой-нибудь
>цель какая?
Интересны некоторые способы реализации, которые сам не вдупляю немного.
Например, движение камеры или героя неужто нет ничего лучше чем все остальные объекты сдвигать в противоположную сторону (если герой всегда по центру) и как оно всё влияет на поиск пути и прочую парашу.
>Надо?
Давай.
неужели рогалики больше никому не интересны?
Соломинкой, сломавшей спину верблюда, стало ебучее освещение. Я гонял пигейм в хвост и в гриву пробуя попиксельно менять оттенок спрайта, стараясь не проебать при этом прозрачность. Кучу разных костылей написал. Ничего не работало нормально.
Несколько месяцев я даже думать не хотел о рогалике.
Вчера пришла в голову мысль, что можно просто на каждый тайл натягивать отдельным слоем черный квадрат, делая этот квадрат прозрачным, в зависимости от уровня освещения тайла.
А в чём проблема? в производительности или в том что ты не можешь нормально алгоритм придумати?
> Вчера пришла в голову мысль, что можно просто на каждый тайл натягивать отдельным слоем черный квадрат, делая этот квадрат прозрачным, в зависимости от уровня освещения тайла.
Это же почти как лайтмапа
Наверное и то и другое.
Я пробовал сделать для каждого объекта расчет уровня освещенности; в зависимости от него пиксели на объекте должны затемняться. Было много разных провалов - например, по дефолту у меня загрузка всей графики для спрайтов в память происходит один раз. И скажем, если у тебя на экране 2 одинаковых спрайта по разному освещенных, то это означало, что чтобы их отрисовать ты исходник этого спрайта дважды копируешь и меняешь каждому освещение попиксельно - и не один раз, а раз в игровой тик, а их больше 60 в секунду. Фпс просаживался, плюс попиксельное затемнение не очень работает, если у тебя 1 цвет на спрайте задан как прозрачность - эта прозрачность тоже затемняется, причем очень заметно.
В моем рогале 4 уровня сущностей, не помню, пояснял ли раньше: тайлы, объекты (типа сундуков), предметы и живность (игрок, монстрятина); То что я сделал в итоге по освещению использует только освещенность тайлов, т. е. на свойство освещения всего остального можно забить.
>>694171
Похоже, что все хорошее уже придумано)
>Фпс просаживался
Так а хули ты хотел-то, тебе сколько раз говорили что питон ОЧЕНЬ БЛЯДЬ медленный, потому что вообще не сделан для производительных приложений совершенно. У него дичайший оверхед во всём. А любая игра, даже такая простая с виду может требовать некоторых ресурсов. Я советую тебе поискать готовую либоу для работы с 2д графикой на каком нибудь С++ или иже с ними, которую можно будет заюзать в питоне, хоть какая-то отдушина.
>оверхед
Двачую. Лучше брать какой-нибудь шарп для этих целей, ибо даже по сравнению с питоном он более мощный.
Тем не менее, медленный питон заставляет писать код так, шобы не тормозило. Думать, изворачиваться, дефекты искать. Искусственные ограничения подстегивают мозг.
Ну и после того, как один парень написал на пигейме клон террарии (https://www.reddit.com/r/pygame/comments/gogfav/a_terraria_clone_i_made_using_pygame_a_few_years/), я чето думаю про медленность питона все-таки преувеличены слова. Он конечно медленнее всего остального вообще, тут даже не поспоришь но в целом - для моих целей потянет.
Алсо, я сделал газы.
Дефрагментатор стека, ты? Узнал тебя по твоим шизоидным высерам.
Тебя недостаточно обоссали в движкосраче?
Шарп от плюсов по перфомансу незначительно отличается.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharpcore-gpp.html
Во-первых, узнал, что существует pyglet. Он очень круто задокументирован и вроде как быстрее pygame. Так что кто захочет как я кириллить на питоне - берите его, а не pygame.
Мне конечно лень.
Во-вторых, не знаю что за прикол у пигейма с функцией blit, но она работает оче плохо, если пытаешься блиттить много спрайтов, неважно, на экране они или нет.
Мужики посоветовали реализовать функционал чанков (chunks).
Как это сделал я: группирую спрайты тайлов карты (пол там, стены) в пачки 5х5. Сохраняю. Рендерю только те спрайты, которые входят в чанк, где у меня в данный момент находится player, + прилегающие.
Почему рендеринг стал быстрее: чанк это отдельный класс, которому я приделал атрибуты "минимальные х и у/максимальные х и у", - они считаются из координат тех тайлов, которые в этот чанк входят. Чтобы определить, находится ли игрок сейчас в чанке, нужно всего лишь проверить, находятся ли его координаты в границах этих атрибутов.
итого 2500 спрайтов тайлов на первой карте превращаются в 100 чанков. Рендерится в любой момент времени 250 спрайтов. ФПС легко и приятно держится на 60.
Еще сделал эффект от бросков предметов - мобу можно уебать с броска какого-нибудь горшка, бутылки разбиваются и выпускают газ, можно бросить нож в факел и погасить его, ну и т.д.
И сделал рандомную генерацию цвета бутылок + соответствие газов им: газ лечения и бутылка лечения будут одного цвета. Код - просто эталонный пиздос, образец "как не надо делать", но он работает - да и хуй с ним.
Надо уже финализироваться как-то.
>Почему рендеринг стал быстрее: чанк это отдельный класс, которому я приделал атрибуты
Вот это ты маладца. хорошо зделал. Алогритмы оптимзиации нужно понимать туда сюда. Понимать когда где и что можно оптимизировать тама. Допустим я сейчас пилирую мод на кубаче, там система труб есть. по сути в каждом сегменте трубы есть количество какой-то жидкости или предметы. постоянно перемещать это говно, особенно если труб очень много смысла вообще не имеется, поэтому я придумал вот такую хуйню -> Для оптимизации любые коммуникации будут трансформироваться в snakeChunks. У каждого snakeChunks есть длина и скорость прохождения единиц. Если участки пути различаются по скорости, например разные конвйеры, они собираются в разные снейки. Пока snaked инфраструктура загружена в игру, существующие предметы имеют в ней параметр пройденного пути. Он позволяет рендерить внешнее изменение снейка. В случае если снейк был изменён, все предметы внутри него пересчитывают свое местоположения на кусках снейка для того чтобы дропнуться с него если сегмент отсутствует или переместиться в новый снейк, созданный из предыдущего.
Тоесть надо научиться видеть в общем сам процесс работы алгоритма, чтобы находить моменты которые можно аппроксимизировать, упростить с минимальными потерями внешего качества или вообще без, ну и конечно же наблюдать за теми участками которые выполняют лишнюю для текущего масштаба работу.
Позде можно попробовать соединить эти снейки с machines (любыми блоками которые что то делают и существуют в системе по отдельности), и создавать по ним своего рода карты прогноизруемых вычислений, чтобы только по количеству пройденых при выгрузке из чанка тиков можно было одним махом исполнить всю работу. Сим образом допустим фабрики по производству какой-то хуйни будут "работать" и в выгруженых чанках. Хотя сам процесс создания карт вычислений это опиздейшняя залупа крайне сложная в исполнении. Но я верю что смогу этот момент разрулить.
Неожиданно для себя, понял вообще все, что ты написал. Согласен полностью.
Алсо:
Поебался с идентификацией предметов. Сделал идентификацию для бутылок после броска/использования. Ни хера не тривиально оказалось - бутылки работают по принципу "одну опознал, остальные тоже опознались", а например с ножами такой трюк не провернешь, все уникальные.
Потом отпишу как сделал, а то чето устал
Так а эволюционруешь хули!
https://github.com/pygame/pygame/releases
ставить через pip install pygame==2.0.0.dev10
С ними прошел путь от сомнительной реализации до еще более сомнительной реализации. Это ебучее например горение заставило в очередной раз перепиливать расчет освещения, чтобы зона освещения у горящих объектов пересчитывалась, если они двигаются. Это просто блядь пиздец. До сих пор доделываю.
На гифке - самовоспламенение и опаление слишком близко подошедшего скелета.
Попозже еще напишу.
Ну делаешь и то хорошо
>Было много разных провалов - например, по дефолту у меня загрузка всей графики для спрайтов в память происходит один раз. И скажем, если у тебя на экране 2 одинаковых спрайта по разному освещенных, то это означало, что чтобы их отрисовать ты исходник этого спрайта дважды копируешь и меняешь каждому освещение попиксельно - и не один раз, а раз в игровой тик, а их больше 60 в секунду.
Погоди - в питоне нельзя менять графику на лету? Серьёзно? Даже в гамаке этот вопрос решался одним из первых. Тайлы там точно могли менять цвет, свет и прочее-прочее. Неужели с буфером графики такие проблемы?
Да все там можно, если ты не жопорук как я
Ну тогда маладца, кирилль
Делю карты на фрагменты по NxM тайлов, каждый фрагмент - entity. Потом генерю всю карту рандомно из фрагментов. Это в теории, я пока ещё с перемещением перса разбираюсь
Делал бы карту статичным мешем (ну или чанками какими), а в тех местах должен срабатывать триггер или заспавниться противник, делал невидимую сущность. К примеру входишь в комнату и должна появиться надпись какая-то. Делается это просто пересечением невидимого прямоугольника и bbox игрока.
Да, конечно.
Понятно что сейчас самый популярный способ даже не в васянских играх, а в $60 васянском говне это
>генерить комнату
>генерить нное колличество коридоров из нее
>генерить комнаты в конце коридора(или иногда один тупик если хочешь выделиться)
>повторить шаг два пока не закончится "н"
Метод простой, верный и рабочий, даже в сеговской fatal labyrinth использовали
Но вопрос в том, а есть ли рабочие методологии, или игры, где сначала генериться большая комната, и в ней уже генерятся стены и прочая мишура для коридоров и прочей радочти? Интересует из-за того что таким способом можно наверное получить не совсем квадратные/прямоугольные комнаты
Есть игры где использовалось что-то подобное чтобы посмотреть как делалось?
Вообще не знаю наскольоко это подходит, но на.
https://m.habr.com/ru/company/mailru/blog/497590/
Обещал - сделал. Генерация из примера для юнити была совсем скучная, одна комната 8х8, поэтому я запилил свою, нетхак-стайл. Правда одна проблема, я не знаю, как внутри цикла построения комнаты проверить, совпадают ли координаты тайла с массивом, в котором у меня хранятся коридоры. По идее должно быть что то в роде
if (!DungeonHalls.contains(x,y,0f))
Но это не работает.
Поэтому пока все комнаты замуровнаы.
>>702495
Никогда не понимал почему люди которые начинат делать игры, стартую с такаих то топорных, убогих идей, которые копипастятся всеми бездумно. Почему ничего новго не придумать то та? Вот я када начинал программировать я взял одну ебанутейшую идею просто, и обсираясь потом блять, ебаить, ловя сотней тонн проёбов, ловуек, ппеределывая всё заного, охуевая от того что вообще хуй поймёшь что происходит блять, но пройдя через этого говноштром всё-таки выносил нихуёвый такой опыт и знания, и даже иногда годненькое что-то. В чём блять проблема? Вы боитесь, или у вас вообще абсолютная творческая инвалидность?
Хорошо конечно что хоть что-то делаешь, но блять, бросай хуйню делать богом молю и придумай что-то реально новое хотя бы на уровне своём знаний. Поверь, даже на самых базовых знаниях типо if else, массивы и прочее можно пилить охуительные идеи. Но всегда ставь новые проблемы которые ты с наскока не можешь решить, и вгрызайся в них как тваррръъ, гугл пока не отключили, так что не бухти что сложно. Да, сложно, нихуя не понятно, но именно в таком труде и усилии рожается чистый сука опыт, эссенция экспы блятиь.
Я же написал, в гайде изначально вообще одна комната генерилась, и совсем не так, как у меня. Я решил что попробую сделать на основе гайда, но не по нему.
Идея как сделать совсем случайное подземелье у меня уже есть, реализуется небольшим переписыванием текущего кода. Но сначала я хотел бы научиться реализовывать другие базовые вещи. Когда у меня будет два случайных этажа подземелья, между которыми будет перемещаться персонаж с инвентарем и статами, имеющий ограниченную видимость и способный драться с мобами тогда и начну развиваться. Идей то у меня куча.
Чем меньше ты превозмогаешь, тем более мутроным процесс будет и быстрее ты дропнешь без видимого результата. делай как знаешь кароче, похуй.
Окей, в твоих словах есть смысл. Попробую сделать более интересную генерацию, как сделаю - выложу результат.
https://habr.com/ru/post/461323/
Бери вот это, придумай как в неё записать собственные правила генерации, научись генерировать этажи больших храмов (частично симмтеричные комнаты.) Создай абстракцию над процессом генерации вообще (хуй знает просто как сейчас у тебя рабботает). Используй какой-нибудь шум Перлина для генерации пещер.
https://habr.com/ru/post/475764/
https://habr.com/ru/post/321874/
https://habr.com/ru/post/440286/
https://habr.com/ru/post/354826/
Да не слушай никого, делай как хочешь. Или слушай и делай как хочешь. Главное делай, а то пиздоболов развелось, на анонимных имиджбордах пишут а рогалики - нет
просто занят модом на кубоч, потому и не пилю
Я пока в тетрадочке набросал план для альтернативного генератора данжа, там суть в том что у меня не три вертикальных и три горизонтальных коридора, как я сделал, а N горизонтальных и Z вертикальных, со случайными X и Y соответственно. А на их пересечениях делаются комнаты. Единственное что надо одуплить как сделать их длину рандомной, думаю придется впервые создавать новый класс переменной, включающий в себя и начальную координату коридора и его длину.
Но перед этим всем я все таки хочу побегать персонажем по уже имеющемуся.
>придумай что-то реально новое
Самое дебильное что ты только мог сказать
Зачем изобретать велосипед? Если в итоге выйдет в разы хуже чем от проверенных дедовских методов?
Ебать, долбоёб ты сука за что нахуй, у меня слёзы от тебя на глазах выступили. С таким подходом иди нахуй шестой клон ADOM делать, всё сука, весь игрострой засрали однотипным говном бездари ебаные нахуй. Так мало того что вы срёте сука, вы в своём говне посредственном топите реально интересные идеи, про которые не могут узнать люди, потому что блять тонут в говне блять посредственности блять.
Не разговаривай со мной больше пожалуйста.
ну маладца конечно, хоть что-то делаешь, но умоляю тебя, не останавливайся на таких тривиальных способах. Всегда есть более интересное, и лучшее решение. В тред кстати информации достаточно я выложил
У меня по плану сегодня было ходить начать, а из за тебя, демон, я вышел за свои пределы полного нуля в геймдеве и кодинге и перепилил генератор данжа спасибо за мотивирующий пинок, анонче. Что то менее тривиальное буду пробовать позже, сейчас нужно базовый функционал научиться делать.
ГЛАВА ДОЛБОЁБОВ, ИЗВЕСТНОЙ БАНДЫ ИМИДЖБОРДЫ ДВОЩ! СИМВОЛ БИТАРДСКОГО НАЧАЛА! ДЕМОН СОРСЦОВОГО МИРА И ОКРЕСТНОСТЕЙ! ИЛИ ПРОСТО АНОНЧИК, СОБСТВЕННОЙ ПЕРСОНОЙ!
Таблетки прими
На интересные идеи всем похуй если ты не можешь их по человечески реализовать, поскольку лично у тебя все твои "интересные идеи" заканчивались не играбальным говном, а вот у чэдов вроде меня всегда получались годные игры которые нравятся людям, поскольку знаем как делать
Тут конечно шизик завёлся, но вообще он правильно сказал - чем необычнее задумка, тем круче костыли, и тем больше универсальной экспы. Я вот неожиданно для себя начал делать мод про необычную (японскую) армию для одной игори, и за год от нуля в тридэ играх дошёл до того, что начал импортировать простенькие модельки военной техники, которую сам слепил на коленке.
Хотя против рогаликов ничего не имею - спеланки и айзек жутко доставили - но нужно признать что без интересных и необычных идей он нахуй не нужен.
24 года-с нyльчика-кун
Почему я шизик? Может просто шибко эмоционально выражаюсь.
Прежде чем делать необычные задумки надо знать как делают взрослые дяди. А уже потом добовлять что-то свое
Это как кино, сначала нормальные режисеры хуярили рекламу и говно по шаблону, а уже потом ивил дедов
А арт хаусники которые хотели выебнуться и снять не так как все, как правило снимают говно которое никому не нужно. И в итоге ничего стоящего так и не снимают
>Линч снимали артхаус и не померли.
Ну да, во время учебы он нихуя не узнал о том как снимать фильмы, и сразу начал с артхауса
То что игнорируешь то что его первые короткометражки на артхаус никак не тянули комментировать даже не стоит
>>702632
>На ньюсаче вообще не сижу, там ольгинцы и крымодебилы спамят хуйнёй про украину.
Еще и хохлина, ясно почему такой долбанутый и орешь что похуй на готовые методики наджо эксперимниторавть, у вас вся страна такая ебанутая
>готовые методики наджо эксперимниторавть
Ты с кем общаешься? это вообще другой человек.
Проснись, ты в психотронной тюрьме серишь.
Анон, топящий за нестандарт: я тебя понимаю и согласен с тобой. Но для меня надеюсь пока что это и есть нестандарт и выход за пределы, потому что я вообще в туторах не встречал такого подхода к генерации, обычно все наоборот, делаются комнаты, а потом вырезаются проходы. То, что я слепил может криво-косо, но мое, ни у кого не подсмотренное и это вдохновляет.
Если ты другой человек, нахуй ты в разговор влез? Я нульчика спрашивал. "Фокусник" это шизик который фото своего хуя постоянно постит, есть мнение, что это нульчик.
> обычно все наоборот, делаются комнаты, а потом вырезаются проходы
Может блядь из-за того что это самый лучший способ который только можно придумать?
Делаешь комнату, потом из неё рандомное число коридоров(не больше чем остаточное число комнат которые ты хочешь еще добавить) в рандомных местах. Если совсем не хочешь паритсья то не больше коридора на сторону комнаты, так даже не надо страховатсья чтобы комнаты не пересекались
Данжоны не оче реалистичные. Такие кишки-коридоры в бункерах есть, но не в данжонах. Тебе нужно сделать одну большую комнату, которую пересекают вертикальные и горизонтальные стены, в которых случайно сделаны прорези - двери. Ну или сделать один большую квадратную-комнату, в котором внутри случайно будет вырезаться квадрат поменьше
Теперь персонаж умеет двигаться и биться в стенки, а еще к нему привязалась камера, ура. Правда, мой метод проверки на возможность пройти не подразумевает что нельзя ходить там, где ничего нет, ведь вселенная не любит пустоты. Поэтому немного перепилю генератор данжа. Будет огромная комната Х на Y тайлов, в которой будут выбираться рандомные точки как корни областей. Для каждого корня будет рандомно выбираться какой тип области вокруг нее вырастет: для начала думаю это будут просто прямоугольные комнаты огражденные стенами со случайным количеством входов или залы, просто пустые пространства. Потом в список областей на выбор можно будет добавить пропасти, озера, грибные поля, библиотеки и прочее, с разной вероятностью возникновения. А пока вот скриншотец, чтобы пост не был без картинки.
>Будет огромная комната Х на Y тайлов, в которой будут выбираться рандомные точки как корни областей.
Нормас. Всё лучше чем кубы соединённые длинными корридорами.
Пора наверное добавить врагов.
P.S. Дико вдохновился визуальным стилем Infra Arcana, думаю переезжать на однобитовую графику. Намалевал на досуге спрайтец, пикрил 3.
>Я посидел на работе, подумал, и понял, что старый алгоритм хуйня, кубы в кубе.
тебе это с самого начала говорили
Вот новый да, так и надо. Все так делают по хорошей причине
ну весьма НЭПЛОХА.
Аноны, а что, никто разве не слышал про wave function collapse. С помощью этой штуки можно же что угодно сгенерировать.
Да, у этого алгоритма есть недостатки, но они фиксятся. Можно ещё клеточные автоматы попробовать, там вообще никаких проблем нет.
Точно! Все алгоритмы, оказывается, говнище и не работают.
Я запилил свой алгоритм на основе drunkard's walk, результат меня устраивает. Клеточные автоматы создают пещеры, а мне нужен был данж.
Я наконец разобрался с плавной отрисовкой кадров в pygame, такая-то красота теперь. Вот не шучу, 4 недели ебался
Прикольно, будет 1я игра на питоне и при этом не ВН-ка!
Надеюсь добавишь скин тяночки на гг.
Увы, нет. Сам с этой проблемой столкнулся. Весь поиск засран scavengers парашей, где даже тайлмапы нк используются, тупо все из геймобжектов. Я из за этого петуча сначала тоже так делал. Именно из за отсутствия туторов у меня на генератор данжа и фов три недели ушло.
Геймдев это творчество, в творчестве ничего не "принято". На юнити уже достаточно годных рогаликов, можешь на том же рогбазине чекнуть.
Demon, Ganymede Gate, Axu, Rogue Empire, Emergence, Ruins of Marr
кстати да поддержу, в юнити и грид давно встроили и слои для фова
Охуенная вещь же для рогаликов
Когда ты играешь в игру, тебе все равно, какие инструменты использовались, все, что тебя волнует это интересно играть или нет. Настоящий извращенец тот, кто сознательно ограничивает себя в выборе инструментов. Я пикнул юнити потому, что заведомо лишаю себя всех проблем, связанных с визуализацией, а все что касается реализации алгоритмов было бы мне одинаково сложно вне зависимости от того, какой язык или движок я бы выбрал.
Окей, закончим. Но мне было бы интересно почему тебе не все равно на чем написана игра.
Топовый рогалик на юнити - caves of qud, каждому любителю рогаликов советую ознакомиться, кто еще не играл, годный сеттинг, лор и по фичам довольно необычно.
Римворлд на юнити, не совсем рогалик, но как и df, обычно считается околорогаликовой темой.
А вскудахты "ряя принято свои движки писать" - это просто снобизм от того, что в голове насрано желанием ощущать превосходство над кем-то за счет того, что твои инструменты круче и илитнее.
Но на самом деле, важен только конечный результат, хорошую игру можно практически на чем угодно сделать.
>юнити
Иди нахуй.
>>707056
>Когда ты играешь в игру, тебе все равно, какие инструменты использовались
Неправда.
>>707087
>caves of qud
Именно из-за юнитипараши и не играю. Он кстати перепилил его на юнитипарашу ради кроссплатформенности. С одной стороны конечно похвально, что разработчик не мудак и думает о линуксоидах, но с другой - неужели нельзя было найти более приемлемый способ достижения той же цели?
>хорошую игру можно практически на чем угодно сделать
Еще один аргумент в пользу того, что юнитиговно ненужно.
На правах бампа - на гифке мои успехи работы с A*-search.
Харош. Я на этой неделе хотел тоже вплотную А* заняться, в итоге во вторник оптимизировал фов из за внезапного озарения, потом работой загрузили, так что только сегодня почитал в первом приближении про этот алгоритм и приаинул, как буду его реализовывать.
Я смотрел много разных видосов и читал статьи с исходниками, но по-настоящему понял только посмотрев вот этот - https://www.youtube.com/watch?v=-L-WgKMFuhE.
+Реализовал последовательность ходов через actionы, как описывал Bob Nystrom вот тут - https://www.youtube.com/watch?v=JxI3Eu5DPwE&t - очень удивлен, что этот подход у меня сработал.
Да я уже сохранил себе несколько ссылок, которые мне наиболее понятны были. На следующей неделе буду разбираться. Но твое гляну, спасибо.
Надо бы в качестве отвлечения подумать об итоговом концепте игры. Может диздок запилить.
Всем создателям рогулек советую ознакомится
Хорошо разложил как делать годные и приятные
Молодец ваще)
Тоже бампану
Я тут недавно на r/pygame тред создавал - собирал советы, что можно улучшить в своем подходе к работе с пайгейм. Сляпал небольшой кусок прототипа, и ну, в общем, может кому интересно будет поковырять:
https://github.com/KeyboardGecko/pygame-sprite-rendering-tilegame-example
Основной код в файле playtesting.py.
Играюсь с анимациями и генерацией ландшафта по шуму Перлина.
>>710629 это я, кому была интересна реализация камеры, pathfindingа, анимации - это всё там.
>а лучше пойти и юзать чужие костыли, пусть и с огромным просером по ФПС.
А еще лучше юзать чужие костыли, но разобравшись фиксить там возникшие траблы. Профит в виде экономии времени.
Кажется нащупал норм вариант, чтобы без рывков и не охреневать от проседания ФПС. Что скажете?
3 вариант хорош. Может быть стоит сделать туман войны как в варике?
Игроку будет понятно где он ещё не побывал
Я хуй знает, но если современный движок на современном железе не выдает 60 фпс исключая всякие там ретрейсинги и 4 кто это очень хуевый движок.
Любой популярный движок выдаст тебе стабильные 60 фпс на игре уровня 2д рогалика.
Движкосрачя, ты тредом ошиблась. Пропукивайся обратно в свой загон одебилевших пуконюхов, пока цела.
При том что еще нужно разобраться с такой штукой как полиморфизм, чтобы все существа обладали одинаковым набором свойств и одинаково взаимодействовали со всем вокруг. Плюс нужен скрипт, управляющий мобами, причем определяющий что моб может: стрелять, колдовать, бить в ближнем бою, что из этого сейчас делать лучше. И все это нужно вводить примерно одновременно. Комплексная задачка в общем.
Для нормального понимания, лучше наверное представить, что ты не мышью ходишь, а с клавиатуры. Ну типа кнопку нажал - ход сделал.
Итак, шаг первый: мобы и игрок унаследованы от одного класса и имеют метод TakeTurn(). Собственно, ход.
Тогда базовый игровой цикл выглядит так -
def gameloop(player, mobs):
player.takeTurn()
for mob in mobs:
mob.takeTurn()
Когда очередь игрока ходить, ход не делается, пока ты не кинешь на вход какой-то ввод (не нажмешь кнопку, грубо говоря). Для имитации хода мобов, в их takeTurn() можно прописать, например, move в любую случайну сторону, для начала.
Ну и в принципе всё. Отсюда можно дальше развиваться куда хочешь, к примеру:
- в takeTurn мобам прописывать AI-логику (простой пример: начался ход - кастанул fov - если player в fov, то прокинуть A* до него, сформировать очередь ходов, сделать первый шаг из этой очереди - ход закончился)
- сделать для игрока очередь действий, где будет храниться очередь из ходов; игровой цикл должен вертеться, пока очередь не пустая, исполняя каждое действие в очереди и убирая исполненные. Когда очередь пустая, цикл ждет, опять же, ввода. Это к вопросу, как поиск пути по мыш-клику привязать к игре - просто формируешь по нему очередь из ходов для игрока.
- Можно сделать у мобов и игрока свойство "скорость" (очки действия, AP, как угодно). Когда оно выше определенного порога - моб может сделать действие. Каждый ход данный показатель увеличивается, при каждом сделанном действии - обнуляется/уменьшается. Таким образом ты реализуешь разную скорость действий для разных мобов - ну понятно, в общем.
Ну и так далее и так далее.
Как итог, мой игровой цикл выглядит как-то так:
def gameloop(player, mobs):
> #so, every creature has a stack of actions
#if it's not empty, we pop one from it and execute it
#for every creature in order (player + creatures)
#if player stack is empty, it waits for input.
if player.actionQueue != []:
player.gainAP()
player.takeTurn()
for mob in mobs:
mob.gainAP()
mob.takeTurn()
Для нормального понимания, лучше наверное представить, что ты не мышью ходишь, а с клавиатуры. Ну типа кнопку нажал - ход сделал.
Итак, шаг первый: мобы и игрок унаследованы от одного класса и имеют метод TakeTurn(). Собственно, ход.
Тогда базовый игровой цикл выглядит так -
def gameloop(player, mobs):
player.takeTurn()
for mob in mobs:
mob.takeTurn()
Когда очередь игрока ходить, ход не делается, пока ты не кинешь на вход какой-то ввод (не нажмешь кнопку, грубо говоря). Для имитации хода мобов, в их takeTurn() можно прописать, например, move в любую случайну сторону, для начала.
Ну и в принципе всё. Отсюда можно дальше развиваться куда хочешь, к примеру:
- в takeTurn мобам прописывать AI-логику (простой пример: начался ход - кастанул fov - если player в fov, то прокинуть A* до него, сформировать очередь ходов, сделать первый шаг из этой очереди - ход закончился)
- сделать для игрока очередь действий, где будет храниться очередь из ходов; игровой цикл должен вертеться, пока очередь не пустая, исполняя каждое действие в очереди и убирая исполненные. Когда очередь пустая, цикл ждет, опять же, ввода. Это к вопросу, как поиск пути по мыш-клику привязать к игре - просто формируешь по нему очередь из ходов для игрока.
- Можно сделать у мобов и игрока свойство "скорость" (очки действия, AP, как угодно). Когда оно выше определенного порога - моб может сделать действие. Каждый ход данный показатель увеличивается, при каждом сделанном действии - обнуляется/уменьшается. Таким образом ты реализуешь разную скорость действий для разных мобов - ну понятно, в общем.
Ну и так далее и так далее.
Как итог, мой игровой цикл выглядит как-то так:
def gameloop(player, mobs):
> #so, every creature has a stack of actions
#if it's not empty, we pop one from it and execute it
#for every creature in order (player + creatures)
#if player stack is empty, it waits for input.
if player.actionQueue != []:
player.gainAP()
player.takeTurn()
for mob in mobs:
mob.gainAP()
mob.takeTurn()
Примерно понял, спасибо. Не знаю, нужно ли чтобы в рамках юнити мобы и игрок были унаследованны от одного класса, по факту они уже геймобджекты. Попробую это на следующей неделе реализовать.
> как реализовать то, что называется schedule или timesystem, одним словом пошаговость
В начале партии составляешь список игроков и раздаёшь номера участвующим в партии сущностям. Пошаговая система переключает по порядку (согласно правилам) переключает одну из записей в режим "current". Все игровые сущности, участвующие в партии могут становиться на паузу и могут получать current и сравнивать со своим уникальным номером. И собственно всё. Вот тебе и шедулинг.
> нужно разобраться с такой штукой как полиморфизм, чтобы все существа обладали одинаковым набором свойств и одинаково взаимодействовали со всем вокруг
Значит, смотри. В играх гораздо удобнее композиция, а не наследование. Через композицию полиморфизм выходит на новый уровень, недостижимый наследованию. Суть токова: У тебя есть простые классы с одним уровнем наследования. Больше уровней нет. Их класс-родитель даёт им только один функционал: хранить в себе список компонентов и обрабатывать их по списку (в простейшем случае) каждый фрейм. У компонентов тот же самый общий предок. То есть, сущности сами могут быть компонентами, состоять в списке компонентов у другой сущности, но при этом сами могут иметь список компонентов.
Не дописал:
У компонентов уже может быть сколь угодно сложная иерархия наследования, но всегда их функционал опирается на дерево компонентов:
1) можно работать с парентом, искать у него в компонентах требуемый тип и выкидывать исключение, если не найден.
2) можно работать с потомками, искать у себя в компонентах требуемый тип и выкидывать исключение, если не найден.
3) можно работать со своими колбэками, реализующими нужный функционал.
Пофиксил артефакты при освещении - мне кажется, на этом варианте остановлюсь. Нраица.
Переделал игровой цикл в формат "сначала все ходят - потом проигрываются анимации - потом по новой".
Этот подход вносит коррективы в FPS - см. гифы - но в целом норм. 100 спрайтов на карте 100х100 тайлов норм отрабатывают, и ладно.
Сделал проигрываемые анимации. Бросок - на гифках.
От нечего делать, сделал персу рандомно генерируемую прическу, а то чего он лысый бегает.
Крутой, крутой.Уже год почти слежу за твоими поделками.Жаль, что я слишком ленивый, чтобы сделать свой рыгалик.
А я уже год игру никак не сделаю. Нет игры! Есть какой-то дроч на тему "это хочу сделать, то хочу сделать".
Хотя может в этом суть разработки рогаликов, кто знает
Начни с малого. Придумай систему спелов, бафов, дебафов.
io игры - это они и есть (только казуальные)
В них ходы долгие, при этом очередность ходов строго определена. В рогаликах же как правило ходы очень короткие, и логически действия всеми акторами выполняются одновременно.
Короче, уточни вопрос.
Если тебе нужны готовые примеры, в которые можно поиграть - хз, я тоже таковых не помню (но я и не интересовался). Думаю, это связано еще и с известной склонностью к аутизму у целевой аудитории.
Если ты спрашиваешь, можно ли сделать, - ну да, можно, просто механику нужно будет придумывать с учетом мельтиплеерности (КО).
http://www.urbandead.com/
Наверное самое лучшее, что смогли с этим сделать. Но там конечно не пошаговость, а очки действий.
Хз, потыкал пару минут - вроде хуита какая-то.
Типа там очки действий восстанавливаются через фиксированные промежутки времени, но тратить их можно как угодно быстро? Или в чем суть, как относится к теме обсуждения?
Как в играх 2000 годов. У каждого есть показатель скорости, который влияет на частоту ходов и очередность. На ход даётся 2 минуты . Поочередность только в боях, вне боя риалтайм.
Поясни зачем ты пишешь на ECS архитектуре? Типо потому что это модно ?
Ты о чем вообще? Все топовые рогалики на ecs работают, от cataclysm dda до caves of qud.
Школьник, что тебе неясно? Брысь.
Видос уже вкидывали, а началось все с поста "а зачем, тИпА ПаТаМуШта эТа мОдНа?". Можете оба съебать в движкосрач (или любой аналогичный школотред), если тебе тоже нравятся неаргументированные и не несущие никакой познавательной ценности выпады в сторону других анонов.
аноны обсуждают архитектуру рогаликов, а ты третий пост корчишь из себя модеоатора. иди нахуй лучше из этого треда
"К рогаликам екс не очень подходит" и "Типо потому что это модно ?" - не несет, я решил. Можешь прекратить обсуждать меня и начать обсуждать рогалики.
Сочувствую.
>>716668
Я тоже не против обсудить, подходит ецс к рогаликам или нет, но такового обсуждения выше по треду нет: есть только неаргументированные и не несущие никакой познавательной ценности выпады в сторону других анонов от залетного школьника. В связи с чем я его и послал нахуй. Понял? А вы уже развели из этого вахтерский метасрач на полтреда, с чем я в частности лично тебя и поздравляю.
Адвенчура, микро хорор, головоломка
Сюжет
Группа учёных в 1980-90 годах была проглашена на остров какой-то корпорации по рекомендации из руководства, один из которых хороший друг ГГ(биохимик) .
(Так как предидущий исследователь был одним из начинателей этих исследований но представлял себе это как мирное исследование, но вышшие чины решили что это будет жестокая эксплуатция местного населения с последующими эксперементами над людьми из контенента. После 16 лет проведенных на острове он решает что это всё неправильно, и решает известить мир о незаконных действиях на територии города. Его убивают. (Подопытный крол из самары к которому подвязали разум 54 летнего стримера для потдержания мозга в норме так как тело уже не функциОнально. После пожара в кат сцене мимо игрока пробегает этот крол с биркой и инода в лесу можно услышать звуки гадзы и "дэб дэб"))
После недели проведённой в ислледовательском центре происходит авария в лаборатории в ходе которой умирает 3 друга гг, а он сам спасаясь от пожара падает, понимая что у него серьезная рана он решает пойти в лес что бы найти растения для остановки крови. После этого он замечает что за ним следит пажилой дед Ратибор и хочет вступить с ним в языковой контакт, но дедок начинает убегать, потом оказываеться что он бежал в сторону города где гг успевает его догнать и заговорить
Гг понимает что население острова небычайно здоровые и облодают долголетием , но корпорация падавляет все чуства и стремления населения посредствам психотропных препаратов, подмешивая их в еду, воду.
Гг понимая сють и стремления ученых по иследованию этого населения ,но хочет вернуться обратно в лабораторию что бы узнать что случилось с его друзьями. Но управляющие догадываясь что он мог понять что они делают на этом острове всяческими способами хотят вернуть его обратно.
(Дед♂к 170+ лет Ратибор с поехавшей кукухой который верит в теории завогора и не питаеться едок из деревни, а жует ягоды из леса в тайке от охраны. но в силу своих лет не может ничего противопоставить этой системе.)
(Глава комплекса хочет вернуть его обратно, так как терять столь хорошего кадра ему будет стоять многого, поетому гг в случаи если его поймают продолжит работу но уже не как учений а как раб на произвотстве.)
После 2-рой мировой в начале холодной войны русские искали чем они могут победить америку, этот остров имел аномальную флору и фауну для своей местности. Ресурсы(еда вода) поставляються деревна на лодке с основного комплекса по воде, что бы не привлекать лишнего внимания опираясь на что что они хотять исследовать природу и население деревне не уничтожало его. В замен на еду они просят работать для них собирая дерево руду. Все растенияф на острове ростут с большой скоростью (обычное дерево выростает за 10 лет до максимального размера) (население острова живет здесь уже более 700 лет иходя из проведённых анализов учёных местности и построек, захоронений) "победили голод, победим пендосов"
После начала экспидиции командующий из М♂сквы скончался и единственный глава стал ученый который возглавлял сам комплекс(35 лет), их целью было изучение растений для того что бы победить голод в России.
Через 5 лет от начала учёные начали поставлять продукты в замена на работую силу так как добыра руды в глубе острова невозможна со стороны других людей кроме как их обитателей, так как у них существует имунитет в этому. Они обучили их элементарным словам из рууского обихода для того что бы иметь возможность с ними контактировать. Ученые не могли понять почему при пробах добыть местные руди рабочие умирали по непонятным обстоятельствам и решили заручиться помошью местного населения.Но после 30-ти лет не особо успешных опытов глава понял что население деревни очень медленно стареет и ето подвигло его на попытки изучения генома этих людей и сути их долголетия, его перемнкуло он понял что 30 лет изучения растений были безсмысслены когда была возможноть открыть секрет долголентия а может и безсмертия. Он начал много времени проводить с одним из жителей (45лет) что бы понять в чём заключаеться секрет, плавно обучая его большему словарному запасу (это наш 170-ти летний дед Ратибор), Олег начал присыплять бдительность психотропами, но Ратибор начал что-то подозревать и когда понял что в еду начали что-то подмешивать и люди стали ходить как безсознанные тела решил перестать общаться с Олегом, нчав выстраивать теории заговора по поводу всех этих учёных и поехал кукухой."
Адвенчура, микро хорор, головоломка
Сюжет
Группа учёных в 1980-90 годах была проглашена на остров какой-то корпорации по рекомендации из руководства, один из которых хороший друг ГГ(биохимик) .
(Так как предидущий исследователь был одним из начинателей этих исследований но представлял себе это как мирное исследование, но вышшие чины решили что это будет жестокая эксплуатция местного населения с последующими эксперементами над людьми из контенента. После 16 лет проведенных на острове он решает что это всё неправильно, и решает известить мир о незаконных действиях на територии города. Его убивают. (Подопытный крол из самары к которому подвязали разум 54 летнего стримера для потдержания мозга в норме так как тело уже не функциОнально. После пожара в кат сцене мимо игрока пробегает этот крол с биркой и инода в лесу можно услышать звуки гадзы и "дэб дэб"))
После недели проведённой в ислледовательском центре происходит авария в лаборатории в ходе которой умирает 3 друга гг, а он сам спасаясь от пожара падает, понимая что у него серьезная рана он решает пойти в лес что бы найти растения для остановки крови. После этого он замечает что за ним следит пажилой дед Ратибор и хочет вступить с ним в языковой контакт, но дедок начинает убегать, потом оказываеться что он бежал в сторону города где гг успевает его догнать и заговорить
Гг понимает что население острова небычайно здоровые и облодают долголетием , но корпорация падавляет все чуства и стремления населения посредствам психотропных препаратов, подмешивая их в еду, воду.
Гг понимая сють и стремления ученых по иследованию этого населения ,но хочет вернуться обратно в лабораторию что бы узнать что случилось с его друзьями. Но управляющие догадываясь что он мог понять что они делают на этом острове всяческими способами хотят вернуть его обратно.
(Дед♂к 170+ лет Ратибор с поехавшей кукухой который верит в теории завогора и не питаеться едок из деревни, а жует ягоды из леса в тайке от охраны. но в силу своих лет не может ничего противопоставить этой системе.)
(Глава комплекса хочет вернуть его обратно, так как терять столь хорошего кадра ему будет стоять многого, поетому гг в случаи если его поймают продолжит работу но уже не как учений а как раб на произвотстве.)
После 2-рой мировой в начале холодной войны русские искали чем они могут победить америку, этот остров имел аномальную флору и фауну для своей местности. Ресурсы(еда вода) поставляються деревна на лодке с основного комплекса по воде, что бы не привлекать лишнего внимания опираясь на что что они хотять исследовать природу и население деревне не уничтожало его. В замен на еду они просят работать для них собирая дерево руду. Все растенияф на острове ростут с большой скоростью (обычное дерево выростает за 10 лет до максимального размера) (население острова живет здесь уже более 700 лет иходя из проведённых анализов учёных местности и построек, захоронений) "победили голод, победим пендосов"
После начала экспидиции командующий из М♂сквы скончался и единственный глава стал ученый который возглавлял сам комплекс(35 лет), их целью было изучение растений для того что бы победить голод в России.
Через 5 лет от начала учёные начали поставлять продукты в замена на работую силу так как добыра руды в глубе острова невозможна со стороны других людей кроме как их обитателей, так как у них существует имунитет в этому. Они обучили их элементарным словам из рууского обихода для того что бы иметь возможность с ними контактировать. Ученые не могли понять почему при пробах добыть местные руди рабочие умирали по непонятным обстоятельствам и решили заручиться помошью местного населения.Но после 30-ти лет не особо успешных опытов глава понял что население деревни очень медленно стареет и ето подвигло его на попытки изучения генома этих людей и сути их долголетия, его перемнкуло он понял что 30 лет изучения растений были безсмысслены когда была возможноть открыть секрет долголентия а может и безсмертия. Он начал много времени проводить с одним из жителей (45лет) что бы понять в чём заключаеться секрет, плавно обучая его большему словарному запасу (это наш 170-ти летний дед Ратибор), Олег начал присыплять бдительность психотропами, но Ратибор начал что-то подозревать и когда понял что в еду начали что-то подмешивать и люди стали ходить как безсознанные тела решил перестать общаться с Олегом, нчав выстраивать теории заговора по поводу всех этих учёных и поехал кукухой."
>знания в программировании имелись
Судя по тексту, тебе не больше 12 лет. Иметь какие-то познания в программировании уже в таком возрасте очень похвально! Удачи в твоих начинаниях.
О комплексе! Не видишь штоле?
>>717709
Это какой-то ньюфаг серит пастами с геймдевелоперских форумов во все треды, хотя у нас для сранья кириллопастами есть специальный тред (который, увы, кроме меня никто не ценит). >>605406 (OP)
Так, ну вот почитал я инфу по этой ссылке https://habr.com/ru/post/354826/ и... Что дальше то? Тут описываются разные алгоритмы, но нет никаких примеров работы с ними. То есть нет кода. Вот допустим хочу сделать пещеры на Drunkard's Walk. А код где? Как писать? С чего вообще начинать то блеать?
Как ты вообще до сегодняшнего дня дожил игру делать собираешься, если не смог на "(источник)" нажать?
https://forums.roguetemple.com/index.php?PHPSESSID=g8n6pacb5kfrtf13o0hr07o552&topic=4128.msg37233#msg37233
Потом, ты что хочешь? Игру сам написать или скопипастить готовый код? Если сам - так пиши сам, принципы ты понял.
Или вот, вторая ссылка из статьи:
http://www.roguebasin.com/index.php?title=Random_Walk_Cave_Generation
>Pseudocode representation
>This is a basic pseudocode representation of the algorithm, which abstracts away such issues as dealing with the walk trying to run off the edge.
>- initialize all map cells to walls.
>- pick a map cell as the starting point.
>- turn the selected map cell into floor.
>- while insufficient cells have been turned into floor,
>- - take one step in a random direction.
>- - if the new map cell is wall,
>- - - turn the new map cell into floor and increment the count of floor tiles.
Вот и весь алгоритм. Если не можешь перевести псевдокод в код своего ЯП - ну, земля тебе ASCII-символами...
1920x1080, 0:22
Пока можно ходить по бесконечному пустому миру, пиздить мобов, получать от них пизды. Никаких статов, кроме HP пока нет. Сейчас начну внедрять ролевую систему и кор механику.
Кор механика будет состоять в том, что после убийства моба можно будет собрать его "части тела" и прилепить себе. Например, убив собаку, можно будет у себя вырастить пасть с зубами, как у собаки, взять нос собаки, который даст соответствующее обоняние, уши, лапы, хуй и т.д. Вроде бы идею кор механики я спиздил из Cogmind, но я в него пока не играл, так что не уверен.
Кароч взял ассеты от Kenney: https://www.kenney.nl/assets/micro-roguelike
Хочу сделать очень простенький рогалик с ландшафтом и данжонами. Несколько мобов, пара видов оружия и какую-то прокачку.
Пилю на TypeScript и Phaser3, вестимо под браузер.
В геймдеве полный ноль
> А че не под мобилки?
Да пока задача «доделать» хоть что-нибудь. Пытался вкатиться в геймдев уже много лет, начал кодать именно для этого. И всё никак не дойду до изначальной цели. В 2к21 поставил себе new year resolution не только фронтендировать, но и запилить рогалик.
Алсо сделать по мобилку было бы круто, но я не понимаю какое сделать управление, чтобы это не выносило мозг. Типа «джойпад» слева? Или стрелки? Мало играю на мобильнике большие пальцы
Если персонаж у тебя двигается по двум осям, то стрелок достаточно, а если еще и по диагоналям ходит, то пили джойпад, имхо
Pixel dungeon посмотри. Просто без задней мысли кликаешь по целевой клетке и все.
Разве рогалик не может быть текстовой игрой?
Для рогалика ведь главное:
- подземелья, монстры, лут;
- все помещения, объекты и мобы случайно генерируются;
- смерть игрока уничтожает мир, заново играть в новом мире.
А будет ли это реализовано ASCII-/2D-/3D-графикой или текстом - имхо, не важно.
Оригинальный rogue вдохновлялся тогда текстовыми адвенчурами, но по причине сложной генерации осмысленного текста стал безтекстовым
Понятно, что генерация подземелья представлена как двухмерный массив словаря, где каждое значение массива содержит случайно сгенерированную клетку и её описание (графика стен, мобы, лут).
Как это адекватней всего интерпретировать в игре? Я честно не очень представляю как отрисовывать сгенерированную карту в 3д...
Джва года на самом деле овер10 лет хочу такую игру:
Простейшая графика. Тайлы, мб типа как пешки Римворлда, похер. Есть свой особняк/дворец у игрока. Он играет за чувака из некой расы, которая может путешествовать между мирами Мультивселенной. Набирает код на пульте, код является семенем рандомным, на основе которого хуярится данж, кусок некого мира. В данже рандом-персы, твари или НПС и рандомные предметы. Например, висит картина, на ней аки в Дворфах что-то нарисовано, что описано текстом, а может и сгенереная абстрактная картина. Ну и лежит некий меч, щит, пушка, стол, стул, этц, тоже на рандоме. А скорее даже с примесью существующих вселенных из поп-культуры, например лазерный меч, крест Иисуса, скелет Чужого, трон из Игры Престолов или костюм Спайдермена. Цель игрока - залутить и съебаться. Не получив пизды от местных.
Потом всю утварь он может красиво расставить в особняке.
При этом, НПС заебошены на библиотеках естественных языков, как в АИданжене. Можно болтать. Не выходя за рамки. Может и квесты какие-то сгенеренные.
Так как данжы на генерации из сида запилены, то можно дать другану координаты и он тоже у себя попробует смотаться туда же за лутом. При этом элементы мультиплеера аки в социальных играх, ты можешь похвастаться особняком перед народом. Ну и кто-то может попробовать тебя ограбить, пройдя твой личный данж, если ты там заныкал эксклюзив, взятый неведомо где.
Ну и мелочи типа питомцев, фермы редких растений и тд.
Мне кажется, что взлетело бы.
Жаль я гуманитарий и время посвящаю философской и художественной хуите.
Но мб на кого-то повлияет. Тогда обязательно зовите посмотреть и дать ненужных советов. Я больше по механикам настолок, тем не менее.
В дф в общем-то все это есть. Алсо, с механиками настолок у тебя все тоже хуево, потому как видно по твоему тексту, что игровые механики описывать не умеешь (для этого нужно как раз математическое мышление, мимо капитан очевидность).
Я механики даже не пытался здесь какие-то собачить. Просто сказал в какую бы игру хотел поиграть.
Нет.
Ну прост обычно гейдизайнеры, особенно которые занимаются настолками, видят игры через свою профедеформационную призму, поэтому их описания (допустим для презентации идеи кодерам\пмам) имеют немного другую структуру и форму+содержание изложения, что ли, более отличную от "суть токова...". Ну и это, ты как бы игровые механики в посте таки описывал.
В общем в любом случае, звучит очень сильно как дф+киперРЛ с немного иными текстовыми темплейтами и нескучными обоями в виде дополнительной генерации текста нейроночкой.
Если сильно упростить и сфокусироваться на мультиплеерной составляющей, то может взлететь, но по сути тогда ж это получится просто ферма\клаш-оф-кланс (с рогаликостелсом вместо набигания), а не то, что тебе видимо хочется.
Мой кириллопост вообще без механик, если с точки зрения настольщика, лол.
То есть если туда декбилдинг засунуть, например, суть такова не изменится.
Просто я не механики видеть хотел бы, а подход некий.
Вот я вчера поставил Крайинг Санс. Ибо очень описание интересовало, я фанат Дюны, Основания и всего такого просто. А там кроме камень-ножницы-бумага+поле механик и нет. Но подход интересный и сюжет. Отсылки.
А что у меня стиль письма ебанутый, так я знаю. И пофиксить моментально сложно.
Тем не менее, сталкивался я с идеями и темами для игр у местных - лютая тривиальщина.
>Мой кириллопост вообще без механик, если с точки зрения настольщика
Ну я по сути это и имел в виду, механики-то ж все равно описаны (случайная генерация уровня, текстоквестодиалоги как в аиданжене, залутить и съебаться и т.п.), прост немножко или множко в стиле "суть токова".
>Тем не менее, сталкивался я с идеями и темами для игр у местных - лютая тривиальщина.
Ну да, а "дф и шоб как в аиданже и левелы шарить как в кипер-рл и чтоб чоловик-павук был" - это другое дело. :3
Прост в том же крайинг санс ведь в чем суть? Визуал крутой, концепция мира, вот это все. Да, коре геймплей вроде и слабенький, скорее для галочки, но повествование-погружение вытягивает\затягивает.
А у тебя я нихуя не понял, в чем повествование, в чем эстетика. Наоборот - генерация, мультиплеер, рогаликостелс - геймплейные фичи. Притом вместе как-то непонятно как уживаются: ммо про постройку фермы лабиринта-подземелья-замка с ловушками, который будут лутать другие игроки - это один концепт спиздил идею кстати, запилю мобильную залипалку и стану миллиардером. Генерация бохатого интерактивного мира с историей - это уже другой, к первому он ни пришей кобыле хуй.
Оффтоп: чистота письма, кстати, фиксится именно что регулярным чтением художественной\публицистической литературы в больших объемах, ну и практикой разумеется, практикой. Попробуй, например, писать концепты для понравившихся игр (да того же крайинг санс) и постить их куда-нибудь (в бэ), типа это ты придумал.Хотя чья бы корова мычала, лол, мне про чистоту изложения советы раздавать - ну такое.
Ну, во-первых, читаю я очень много. Это из-за того, что не пишу почти.
Во-вторых, я, наверное, плохо даже с кириллической точки зрения пояснил.
А если правда хочешь что-то спиздить, лол, дай контакты, буду хоть следить.
Может потом смогу нормально объяснить. М?
Спасибо, бро, за обстоятельный ответ.
И два концепта соединить легко.
Просто контент для замка юзеры могут брать с "сезонов", обновлений, которые там раз в какое-то время выходят.
Да и идея о мультиплеерном данжн кипере не основная.
>А если правда хочешь что-то спиздить, лол, дай контакты, буду хоть следить.
Да это местный мем. Употреблен мною в том смысле, что вот этот концепт можно было бы реализовать, нормальная игрушка бы получилась. Ищи андроид-дева, готов выступить директором проекта за долю от рекламы!
>Может потом смогу нормально объяснить.
Да тут и пиши, правда лучше отдельный тред создать имхо.
>Простейшая графика. Тайлы, мб типа как пешки
Это, а что если совсем без графики? Смысл в графике, если она всё равно примитивная? От тайла 32х32 пользы гораздо меньше, чем от описания "здесь лежит древняя броня воина, на ней видны вмятины, один фрагмент отсутствует". Конечно, есть малый процент людей с афантазией, которые не смогут мысленно представить себе описанную сцену, однако людям с афантазией и тайлы 32х32 ничем не помогут, они не смогут представить себе ту же броню по нескольким корявым пикселям.
>Потом всю утварь он может красиво расставить в особняке.
В текстовом виде это будет не так уж "красиво", но раскладывать кучу мусора по клеточкам тайловой карты - тоже ничего красивого. Глянь игру Elona Mobile - там у игрока есть хата-пещера, по факту как большой сундук на 1000 предметов - можно разложить всякое говно по фен-шую или просто кучей. И даже можно к другим игрокам наведываться! Только толку-то от такого, с тайловой графикой это скучно (хотя бы кубы майнкрафта были бы уже повеселее, но это уже другой уровень).
>>727544
>ммо про постройку лабиринта-подземелья-замка с ловушками, который будут лутать другие игроки
Есть/была такая ММО, не помню, как называется. Я играл ещё на альфе, потом забил и забыл. Вкратце суть такова: есть летающие острова-замки, можно набигать пешком и добираться до центрального сундука с лутом, по пути вынося монстров и уворачиваясь от ловушек, а облутавшись как следует - развивать свой собственный замок, планируя маршрут вторжения, расставляя монстров и ловушки, чтобы у тебя ничего не своровали. Проблема игры, на мой взгляд, была в адовом дисбалансе - пока у тебя пара гоблинов и капкан, у твоих соседей уже огромный замок, в котором ты понимаешь ещё в прихожей, лол. Потому и забил, слишком много страданий ради развития. Потом после альфы вроде как прогресс сбросили, но я уже не следил. Короче - всё придумано до нас, и раз эту идею не скопипастили 100500 раз, она совсем не так хороша, как кажется. На мобилках сейчас доминируют ММО про набигание, но там по сути макроконтроль, типа отсылаешь толпы войск на захват и ждёшь какое-то время до возвращения, а в той игре и описанной здесь идее в основном микроконтроль. Чувствую, мобилкодрочеры в большинстве не любят микроконтроль, т.к. играют от случая к случаю, игровые сессии очень маленькие, буквально в свободную минутку.
>>728443
Смысла впаривать эту идею как есть - нет. Нужно развивать, дорабатывать и упрощать, а пока у тебя только сырая хотелка "хочу набигать на случайные данжи и базарить с ботами". Кстати, я тоже хочу с ботами базарить и всякое разное генерировать, но пока ничего не получается - я депрессивный прокрастинатор.
>Простейшая графика. Тайлы, мб типа как пешки
Это, а что если совсем без графики? Смысл в графике, если она всё равно примитивная? От тайла 32х32 пользы гораздо меньше, чем от описания "здесь лежит древняя броня воина, на ней видны вмятины, один фрагмент отсутствует". Конечно, есть малый процент людей с афантазией, которые не смогут мысленно представить себе описанную сцену, однако людям с афантазией и тайлы 32х32 ничем не помогут, они не смогут представить себе ту же броню по нескольким корявым пикселям.
>Потом всю утварь он может красиво расставить в особняке.
В текстовом виде это будет не так уж "красиво", но раскладывать кучу мусора по клеточкам тайловой карты - тоже ничего красивого. Глянь игру Elona Mobile - там у игрока есть хата-пещера, по факту как большой сундук на 1000 предметов - можно разложить всякое говно по фен-шую или просто кучей. И даже можно к другим игрокам наведываться! Только толку-то от такого, с тайловой графикой это скучно (хотя бы кубы майнкрафта были бы уже повеселее, но это уже другой уровень).
>>727544
>ммо про постройку лабиринта-подземелья-замка с ловушками, который будут лутать другие игроки
Есть/была такая ММО, не помню, как называется. Я играл ещё на альфе, потом забил и забыл. Вкратце суть такова: есть летающие острова-замки, можно набигать пешком и добираться до центрального сундука с лутом, по пути вынося монстров и уворачиваясь от ловушек, а облутавшись как следует - развивать свой собственный замок, планируя маршрут вторжения, расставляя монстров и ловушки, чтобы у тебя ничего не своровали. Проблема игры, на мой взгляд, была в адовом дисбалансе - пока у тебя пара гоблинов и капкан, у твоих соседей уже огромный замок, в котором ты понимаешь ещё в прихожей, лол. Потому и забил, слишком много страданий ради развития. Потом после альфы вроде как прогресс сбросили, но я уже не следил. Короче - всё придумано до нас, и раз эту идею не скопипастили 100500 раз, она совсем не так хороша, как кажется. На мобилках сейчас доминируют ММО про набигание, но там по сути макроконтроль, типа отсылаешь толпы войск на захват и ждёшь какое-то время до возвращения, а в той игре и описанной здесь идее в основном микроконтроль. Чувствую, мобилкодрочеры в большинстве не любят микроконтроль, т.к. играют от случая к случаю, игровые сессии очень маленькие, буквально в свободную минутку.
>>728443
Смысла впаривать эту идею как есть - нет. Нужно развивать, дорабатывать и упрощать, а пока у тебя только сырая хотелка "хочу набигать на случайные данжи и базарить с ботами". Кстати, я тоже хочу с ботами базарить и всякое разное генерировать, но пока ничего не получается - я депрессивный прокрастинатор.
>Есть/была такая ММО, не помню, как называется
Я кстати пока читал твой пост вспомнил, что была и еще одна инди-хуинди на эту тему, с пикселяч-графикой, там надо было строить свой дом - свою крепость и защищать кошачью деву и сына от вторжения выживальщиков (постапок типа). Правда не помню, ммо или нет (вроде ммо). И вроде она популярная была.
Откопал такой сайт http://dungeonmaker.sourceforge.net/DM2_Manual/index.html, но хотелось бы более подробную инфу
Ну там перл, есть сырцы, если у тебя другой язык ищи по нему
>Осталось понять, как работает код
Ты рофлишь чтоли, генерируются квадраты, потом рисуются линии рандомной толщины от одного к другому.
Он наоборот сначала прокладывает туннели
>Тайлы, мб типа как пешки Римворлда, похер.
Я вот уже видел игр десять, с дизайном практически один в один. Мне вот интересно - никакие комирастодрамы на эту тему не происходили? Ну или хотя бы срача вида - что это всё плагиат.
спс, читну.
Так, на данный момент дописано куча всяких фич: появилась нормальная генерация пещеры, можно ходить, можно есть грибы и получать за это хп. Можно даже драться с нпц и умирать. Правда, нпц ничего не делают, пока игрок не подойдет в их "поле зрения", после чего они тупо прут на него, даже если между ними стена. Я прикрутил инвентарь, в который можно собирать грибы и трупы. Ах да, после убийства любого нпц появляется труп.
При этом, я понимаю какой это все жуткий макаронный говнокод с магическими числами. Все-таки я никогда столько не писал. Кроме того пришлось пойти на некоторые ограничения. В частности, я вообще почти не использую пойнтеры, чтобы не тратить не время на отладку. Я не использую передачу структур функциями, потому что их не понимает компилятор для спека. В целом, ясно, что многое придется переписывать и упорядочивать, но какой-то работоспособный задел уже есть. При этом в "игре" совершенно нечего делать, нет ни графона, ни целей, ни даже текста, кроме каких-то полуслужебных сообщений типа "вы убили врага". Короче, это отдельная серьезная проблема, которую надо будет решить
>>757727
Да не могу уже за компьютером сидеть, стараюсь минимизировать время сидения за ним. Короче, причины сугубо личные. К тому же, телефон сам по себе полноценный компьютер - почему бы не задействовать его на полную? Да, клавиатуры не хватает. Возможно, куплю клавиатуру для телефона. В портативности превосходит ноут, особенно для таких безработных нищебродов как я
Придумал как можно использовать трупы. Теперь рядом с игроком на старте генерируется посадочная капсула, в которую можно таскать трупы врагов и получать с каким-то шансом за это некоторый постоянный бонус к атаке. Пока хз что это значит.
Больше пока никаких идей. Возможно, скоро запилю возможность обозревать окрестности, т.е. получать возможность прочитать название всего того, что лежит на видимых клетках
Да.
Зачем на lua, когда можно на джаваскрипте? В браузере бы работало.
Не надо ничего никуда сдвигать. Есть карта тайлов с фиксированными координатами, заданная массивом, например. Есть подвижная камера, центр которой может иметь координаты любого тайла. В зависимости от положения камеры отображаешь соответствующий подмассив на экране. Никакого влияния на алгоритмы взаимодействия с картой (поиск пути итд) нет, так как функция отрисовки куска карты никак не влияет на координаты самой карты.
Именно поэтому я подключил физическую клаву через отг, лол. А если более серьезно, я сейчас пишу и на компе, и на телефоне
С рогаликом в классическом варианте все застопорилось. Стало ясно с одной стороны, что движок расширять и дописывать-переписывать я могу вечно без всякого толка. С другой стороны, чего-то моей недоделке очень сильно не хватает. Геймплей куцый, потому что ничего нет или сделано крайне примитивно, но не в этом даже дело. Нет идей насчет того как объяснить происходящее. Просто брать классические варианты неинтересно, а кроме бессвязных шизофреничных идей ничего в голову не приходит. Так что я пока начал пилить совершенно другую асции-игру на более скайфайную и космическую тему, а с этим рогаликом пока нужно повременить - просто на досуге тщательно продумать концепции, а не прикручивать все подряд не зная зачем
Реально ли сделать игру с чисто текстовой графикой с выводом через простую консоль? Чтобы не в одну строку а в несколько формирующих 2d символами вид сверху например?
>>673711
> Геймплейно оправдать ёблю
В Nethack'е это реализовано через суккубов. Секс с суккубами повышает или понижает статы (в зависимости от уровня харизмы)
https://nethackwiki.com/wiki/Foocubus#Seduction
Из всех умений всякие скрипты автоматизации на петухоне.
Что-то типа mude или симулятора бога, т.е управление персонажем не прямое, а через команды с некоторым рандомом на действия и прохождение проверок и автобоем по умолчанию выбранной тактики.
Как уже говорил тот анон, можно рисовать псевдографику при помощи Curses и подобных.
ReGIS и Sixel так вообще терминальная графика, но это уже не просто псевдографика.
https://en.wikipedia.org/wiki/Sixel
https://en.wikipedia.org/wiki/ReGIS
> Что-то типа mude или симулятора бога, т.е управление персонажем не прямое, а через команды с некоторым рандомом на действия и прохождение проверок и автобоем по умолчанию выбранной тактики.
О, у меня тоже был похожий концепт. Берёг его как зеницу ока, никому не рассказывал, думая, что изобрёл оригинальный геймплей. А оказалось, у меня банальный симулятор бога, коих миллионы.
Буду пилить и обучаться одновременно. Готовый движок брать не хочу.
1) Асци рогалик на питоне, а графический клиент уже над ним пилить.
2) Рогалик на Racket. Мне нравится что я могу сразу в среде копипастить спрайты прямо в код и писать к ним логику и анимацию.
я бы на питоне хуячил
>Какой движок потыкать для моего наброска?
>скрипты автоматизации на петухоне.
Попробуй Godot, он лёгкий и удобный, а GDScript напоминает Python, но намного проще по сравнению с ним. Прототип легко сделать на нём, а когда дело дойдёт до серьёзной разработки, несложно будет перекатиться на любой другой движок/инструмент.
>управление персонажем не прямое, а через команды с некоторым рандомом на действия и прохождение проверок и автобоем по умолчанию выбранной тактики
Напоминает Годвилль, это ZPG (zero player game). Годвилль онлайн в браузере, потому что ММО, но если ты делаешь оффлайн игру, то, наверное, удобнее будет на движке по типу Godot. Нет, это не оверкилл, путём компиляции движка можно отключить все лишние модули, чисто текст+UI тормозить никогда не будут, а иметь большие возможности в запасе всегда хорошо: вдруг ты захочешь сделать 2D/3D визуализацию своей игры? Да и опыт разработки на движке тоже будет полезен для следующих игр.
Я, кстати, когда-то давно думал о том, что было бы круто сделать ZPG игру типа Годвилля с полноценной 2D/3D визуализацией приключений персонажа... но это будет слишком сложно из-за количества абсурда, нарушающего все законы физики в оригинальной игре.
>>804512
>был похожий концепт. Берёг его как зеницу ока, никому не рассказывал
Вот поэтому геймдизайнеру (коим являются все инди-одиночки) нужно чаще играть в разнообразные игры, чтобы не изобретать грабли, по которым уже многие прошлись до него.
>>806314
>Готовый движок брать не хочу.
Почему? Отбросить готовое всегда успеешь, тем более что получить опыт намного проще, взаимодействуя с готовым инструментом, чем изобретая этот самый инструмент с нуля без подсказок. Ты же не для микроконтроллера игру делаешь.
>Асци рогалик на питоне, а графический клиент уже над ним пилить.
С тем же успехом ты можешь взять Godot/GDScript и не мучиться, когда дело дойдёт до "графического контента", потому что встроенные инструменты очень упрощают работу с графикой.
>Рогалик на Racket
Довольно странный выбор, я о таком языке никогда даже не слышал, откуда ты его взял? (Как (я (понимаю, (Racket (очень (похож (на (Lisp, (тебя (устраивает (такой (код?))))))))))))
>>806345
>Столкнулся с этим с клиентами Nethack. Например все люди там отображаются как @.
Так он же сам всё делает. Может добавить дополнительную информацию/API в "сервер" для своего графического клиента.
>Какой движок потыкать для моего наброска?
>скрипты автоматизации на петухоне.
Попробуй Godot, он лёгкий и удобный, а GDScript напоминает Python, но намного проще по сравнению с ним. Прототип легко сделать на нём, а когда дело дойдёт до серьёзной разработки, несложно будет перекатиться на любой другой движок/инструмент.
>управление персонажем не прямое, а через команды с некоторым рандомом на действия и прохождение проверок и автобоем по умолчанию выбранной тактики
Напоминает Годвилль, это ZPG (zero player game). Годвилль онлайн в браузере, потому что ММО, но если ты делаешь оффлайн игру, то, наверное, удобнее будет на движке по типу Godot. Нет, это не оверкилл, путём компиляции движка можно отключить все лишние модули, чисто текст+UI тормозить никогда не будут, а иметь большие возможности в запасе всегда хорошо: вдруг ты захочешь сделать 2D/3D визуализацию своей игры? Да и опыт разработки на движке тоже будет полезен для следующих игр.
Я, кстати, когда-то давно думал о том, что было бы круто сделать ZPG игру типа Годвилля с полноценной 2D/3D визуализацией приключений персонажа... но это будет слишком сложно из-за количества абсурда, нарушающего все законы физики в оригинальной игре.
>>804512
>был похожий концепт. Берёг его как зеницу ока, никому не рассказывал
Вот поэтому геймдизайнеру (коим являются все инди-одиночки) нужно чаще играть в разнообразные игры, чтобы не изобретать грабли, по которым уже многие прошлись до него.
>>806314
>Готовый движок брать не хочу.
Почему? Отбросить готовое всегда успеешь, тем более что получить опыт намного проще, взаимодействуя с готовым инструментом, чем изобретая этот самый инструмент с нуля без подсказок. Ты же не для микроконтроллера игру делаешь.
>Асци рогалик на питоне, а графический клиент уже над ним пилить.
С тем же успехом ты можешь взять Godot/GDScript и не мучиться, когда дело дойдёт до "графического контента", потому что встроенные инструменты очень упрощают работу с графикой.
>Рогалик на Racket
Довольно странный выбор, я о таком языке никогда даже не слышал, откуда ты его взял? (Как (я (понимаю, (Racket (очень (похож (на (Lisp, (тебя (устраивает (такой (код?))))))))))))
>>806345
>Столкнулся с этим с клиентами Nethack. Например все люди там отображаются как @.
Так он же сам всё делает. Может добавить дополнительную информацию/API в "сервер" для своего графического клиента.
мимо ОП
Набросал за пару часов первую версию системы, где нет ничего, кроме базовых понятий из ECS и нескольких вспомогательных сущностей. Держу в курсе. Далее надо допилить систему запросов к компонентам, потому что сейчас они совсем простые, далее подумать над циклом выполнения (который сейчас тупо по таймеру дергает метод перерасчета данных). Тогда появится некоторая плавность и гибкость в работе системы
держу в курсе
1618x708, 0:13
Запилил систему запросов к сущностям и "номральный" рендеринг на канву вместо dom
Игра называется "приключение большого квадрата и маленьких кружочков в мире белых пикселей". В наш век искусство, в том числе в форме игр, становится настолько абстрактным, что искать в нём привычные концепции просто бесполезно.
>>810466
>базовых понятий из ECS
>>810758
>"номральный" рендеринг на канву
>>671018 (OP)
>рогалики
Напомни, что ты собираешься сделать?
1622x1226, 0:20
Теперь это тред создания стрелялок!
А если серьезно, попробовал организовать стрельбу и, внезапно, довольно просто получилось ее реализовать с помощью ECS. Каждая выпущенная пуля - это отдельная сущность с которой можно делать все что угодно. По хорошему, нужно организовать движение по заданному вектору, а не просто по сторонам света. Этим и займусь дальше
А для чего это все, собственно? А вот для чего!
Пока я отсутствовал в треде по причине лениразмышлений, я наткнулся на замечательную игру Noita и так она меня впечатлила своей системой создания посохов, что я все еще под впечатлением. Туда-же isaac с его предметами, но как будто в noita все же простора для фантазии больше. Вот я и исследую возможности создания подобной системы. ECS вроде как позволяет комбинировать различные системы с наименьшей болью. Посмотрим как оно может получиться
Был опыт по впиливанию лисп в проект, но это не тоже самое. Вообще, в таких проектах скриптовый язык просто необходим
Но душа все равно очень просит пилить рогалик, поэтому собираюсь возвращаться к проекту. Скорее всего все буду переделывать с нуля, чтобы вспомнить хотя бы то немногое о кодинге и алгоритмах, что успел изучить тогда. Но на этот раз хочу поступить более умно и с самого начала следовать какому нибудь паттерну программирования, чтобы проект не превратился в хаос. Что посоветуете по этому поводу, бывалые рогаликодевелоперы?
Сам я нашел и более менее осознал паттерн Model-View-Controller, где как я понимаю один большой скрипт будет содержать в себе все данные и всю логику, типа алгоритмов построения данжа, поля видимости, статов, массивы с координатами элементоа уже сгенерированных левелоа подземелья и тп, второй скрипт будет содержать всю оьрисовку этого добра обращаясь к первому, а третий будет собственно менеджером игры, использующим и первый и второй в зависимости от действий игрока и ситуации в игре.
ECS
Vaults & Mutants.
A post nuclear roguelike game inspired by the Fallout series.
() Game Structures:
Creatures:
|->Player,
|->Humanoids,
L->Beasts
Items:
|->Weapons,
|->Armor,
|->Food,
|->Drugs,
|->Info Items (books, notes, cassettes, etc.),
L->Other
Fractions
# maybe more
() World Structures:
Overworld
|
V
Realms
|
V
Chunks
|
V
Tiles
The Overworld contains a matrix of realms.
A realm can be a village, a city or another local place. Realms are not always of the same size, but in the global map every one of them is a square cell.
A realm is divided into chunks.
A realm is either procedurally generated at every entrance or saved in a file
(*) Tools of Development:
C++ as a main programming language,
Curses lib for terminal graphics,
Some other utils written by myself,
Lua as an in-game script language
Vaults & Mutants.
A post nuclear roguelike game inspired by the Fallout series.
() Game Structures:
Creatures:
|->Player,
|->Humanoids,
L->Beasts
Items:
|->Weapons,
|->Armor,
|->Food,
|->Drugs,
|->Info Items (books, notes, cassettes, etc.),
L->Other
Fractions
# maybe more
() World Structures:
Overworld
|
V
Realms
|
V
Chunks
|
V
Tiles
The Overworld contains a matrix of realms.
A realm can be a village, a city or another local place. Realms are not always of the same size, but in the global map every one of them is a square cell.
A realm is divided into chunks.
A realm is either procedurally generated at every entrance or saved in a file
(*) Tools of Development:
C++ as a main programming language,
Curses lib for terminal graphics,
Some other utils written by myself,
Lua as an in-game script language
а еще хочу сделать модабельность: не просто добавление кастомных мобов, но и написание скриптов, которые управляют окружением и миром в целом.
механики которые щас всплыли у мене в голове:
() социоблядство - отношения с отдельными персонажами, диалоги всякие и другое
() фракции - могут управлять какими-то объектами глобальной карты типо городов или не знаю, рудников всяких там. а еще конечно чтобы они пиздилися друг с другом и чтоб игрок мог прильнуть к одной из них (а может не только одной)
() крафтинг, причем для различных вещей нужны определенные верстаки (как в майнкрафте) и различные значения статов перса
() разрушаемость мира и строительство
ставим мод на пустоши на CDDA, отключаем спавн зомби, подкручиваем спавн рейдеров = твоя игра
придумываем кучу вопросов, приглашаем трех участников, за каждый правильный ответ +очки, за неправильный -очки = твоя игра
и кстати в кдда много ненужного говна, я хочу чтобы моя игра была направленна в более аркадную сторону
> и кстати в кдда много ненужного говна
согласен, но все довольно удобно настраивается, плохо только что Lua выпилили
а он там изначально был? тоесть прям скриптинг-скриптинг всего? и, соответственно, ультра модифицируемость?
(я не ОП)
дыа)))
Я впринципе готов ботать за идею, но всё-таки интересно, перепадёт ли чего за это в Стиме?
Я раньше наворачивал рабов армока, вроде всё заебок если ты готов отречься солнца на недели, но понимаю, что нормиса или просто маменого рогалолюбителя такое просто отпугнёт, ну нахуй эту кабину звездолёта.
Не-мастодонты рогаликов с Аски могут выжить только на донатах на условном патреоне/кофе. Либо же на крутом подходе к Аски типа cogmind. Для остального нужен графониум и мышка.
Проджектс нэйм: История со стёртых полей
Дженре: классический бродяга с нитью сюжета
Феачурес: процедурная генерация, возможно подключение апишника чат-гопоты для большей интерактивности неписи, временные линии, управление с мышом
Графикс: я испытываю движение в штанах при виде АСКЕЕ, а потому 0.1 будет такова. В неясном будущем - попытка сделать что-то менее отвратное чем что?
Термс: неясно. Скажем, три года. Больше не ручаюсь, пушто спиваюсь потихонечку.
Скиллы: сишечка, немного вышмата, скриптов на пыхпыхе, и к стыду моему жабескрипта работаю вообще в другой степи
Могу помочь сделать.
По внешнему виду могу сказать что идеал это - Тайлы графики как ты хочешь, но с возможностью в настройках их менять допустим на читаемые для большинства.
И то и то, мастер на все руки.
На этот раз решил поизучать ЕЦС
Блядь, сука, почему знаю только ебаный JS. Так хочется сделать свою игру, а учить дохуя. Я уже умру к тому моменту, когда выучу.
веб рогалики люди тоже делали, rot js вроде, не помню
Так делай на JS.
Ты не знаешь критерий: лучший язык программирования для решения задачи - тот, который ты знаешь.
ну в начале треда - да
Продолжение.
Изначальная идея появилась после банки-девятки на выходных.после чего я насрал об этом в гд
После опохммела идея показалась мне пиздец какой нездоровой, а потому достойной воплощения аки господь трахнул деву Марию и пошло и покхехало.
Итак, сеттинг: мир меча, магии и коммерции. Боги есть, но население в целом секулярное.
Мир ещё не пережил большой пиздец о котором будут слагать легенды. Мир который ещё нахолится в невинности незнания. Мир-девственнтк короче, что тут скажешь. Меня вдохновило видение писателей на боевые действия до первой мировой войны.
Пять основных рас, их производные, мутанты рас и их производных, и отдельная ветка - полиморф.
а ещё я спиздил ездовых пауков из Мензоберранзана.
Основная нить квест сюжет - вы несёте весточку в великий город Пабралатт, к которому ведёт сеть т н. имперских дорог - магическое сооружение, невилимое позволяющее пользователю оставаться невидимым находясь на ней дорога естественно растащена местными на металлолом ебаьь.
Ладно. Теперь уйдём от фантазий к настоящей дрочке.
Я так прикинул, сишечка слишком куцая даже для дефолтных рагулей. Итак, я буду мастерить небольшой диалект, на котором дело пойдёт наверное но зачем?
Появилась также менее хтоническая идея использовать псевдо Аску, отрисовывать забуглины каким-то двиглом нахуй.
Чат-гопота страдает деменцией пока его не излечить двадцаткой, а потому мой взор пал на доступные исходники гопоты-2.
Время. Нелинейность времени оче интересная вещь, с реализацией обосраться - как два пальца об асфальт. Пока что идея выглядит как разбить мир на т.н. пределы видимости, и для каждого ввести локальное время а затем хватать Кондратия от происходящего[/spoiler
Главное чтоб на защиту рубежей не забрали.
Хава нагила!
я ваще нихуя не понял что ты написал, но выглядит интересно
Я бы и рад с кем-то ботать, две головы как никак.
Но моя работа над сим поделием носит очень эпизодический характер, и к тому же я пока что не смогу достойно оплачивать чей-то труд.
>Но моя работа над сим поделием носит очень эпизодический характер, и к тому же я пока что не смогу достойно оплачивать чей-то труд.
Во первых это бесплатно. Во вторых, даже если ты внезапно пропадёшь всё ок, у меня было много опыта кооперации с двача и гейсру. Наши желания сходятся и я не против попыхтеть над такой игрой. Как говорится, бери пока горячее.
Хорошо. Я могу стабильно выходить на связь после пяти по Москве.
Начать решил издалека, так сказать СОСНОВ. Техзадача состоит в оживлении данного пикрил изображения. Литера Ж должна обладать способностью к перемещению внутри коробки. Также функция должна возвращать данные о совершённом ходе - перемещение или стей хоум.
В дальнейшем хотелось бы несколько автоматизировать процесс постройки подземелий и просторов звучит как протодвижок?
Мне кажется с основ это придумать простую архитектуру, и далее навешивать код.
К примеру вот на твоем пике простой двухмерный массив с заполнением тайлом.
Карту хранишь в двумерном массиве типа int[,], каждый тайл это одна цифра обозначающий тип тайла.
Далее в отдельной часте кода есть данные о персонажи, в том числе его координаты на карте.
При попытке передвижения в любую сторону происходит проверка тайла куда хочет передвинуться персонаж на возможность прохода на него, плюсом на лимит карты.
Про автоматизацию это надо сделать простой редактор поверх игры, либо отдельно, и тут же идёт уже хранение данных карты.
>происходит проверка тайла куда хочет передвинуться персонаж на возможность прохода
Я создал массив из двадцати значений, к которым в дальнейшем подвяжутся непреодолимые препятствия. Ну и если значение - 20 <=0, то ход стопорится.
Хотя можно через свищ умнее сделать, типа стопор, проход, и интерактивная единица (со своим свищом: нейтрал-взаимодейсвтие, обязательное взаимодействие).
>Про автоматизацию это надо сделать простой редактор поверх игры
была мысля заплить оверлей, на котором можно размещать символы как блоки, или суммировать их в сверхмассивы, чтоб в дажьнейшем использовать как шаблон.
Тот же оверлей можно использовать для подробной отрисовки нпс или предмета со списком характеристик
>>880011
Гуд айди. Отличный выход на случай потери связи. Вот бы поскорее с работки
Тебе в любом случае понадобится редактор или его подобие, очень быстро упрёшься в сложность создания карты в блокноте.
И не очень понял что за массив у тебя, и как это работает.
То что я написал это так во всех играх по аналогии где есть тайлы, это так сказать база картостроения. Нужны тайлы содержащии инфу о себе, и массив где хранятся они.
тайлам еще хорошо бы хранить ссылки на объекты, которые на нëм находятся - существа, предметы.
Так же битовые флаги - можно ли проходить через этот тайл, загораживает ли он обзор, етц.
наверное нет
> Актуален ли пошаговый рогалик от первого лица?
Я в муншадоу на планшете играю. В какой нибудь порт Меча и Магии тоже сыграл бы, или Данжион Мастер.
Если там будет много головоломок, и они далеко не однообразны, с удовольствием сыграл, но врятли такие игры популярны. Тут люди над замками в Атомик Хеарт ломали моск, особенно пориджи
наверное он нашел работу
Если хочешь быть _успешным_, то однозначно - нет. В крайнем случае у тебя будет какая-то охуенная идея, которая не приходила в голову сотням тысяч людей за последние 40 лет. Но и в этом случае, если ты сосредоточишься на аски, то заработает на этом тот, кто сделает клон твоей игры без аски
>>879485
Так когмайнд это не аски, это скорее аскипанк. Сейчас делают даже платформеры в такой стилистике, но принцип действия совсем другой, чем у аски или тайловой графики
>>879872
Я делал рогалик на чистой сишке. Все равно приходится имитировать классы через структуры, проще взять язык с объектами, как по мне. Хотя язык неважен, конечно. Многие сейчас отрисовывают двиглом аски, но лично я не понимаю зачем
>>880262
Если есть хорошая идея, то почему бы и нет. И да, это не рогалик, ведь олдскульные рпг такими и были как ты описываешь
>А если какой-нибудь каноничный оперсурс рогалик в 3д портануть.
Было острое желание освежить 3д порт Нетхака и перенести на Годот. Видел что был только какой то древний вариант под Мак.
Правда в нетхаке придется знатно в лапше покопаться. И он GPL, так что придется клиент как то отделно пилить клиент если захочется продавать. И там вроде не так все просто будет с интерфейсом, ведь так мы не получаем инфу об объектах в памяти, а видим только значок @ в терминале и как то должны различать игрока, продавцов и так далее.
> Многие сейчас отрисовывают двиглом аски, но лично я не понимаю зачем
лень рисовать спрайты мб
Может быть, сейчас производительности должно хватать хоть всю карту просканить. А может уже появились какие-то вменяемые "ооп"-обертки. Я вспомнил что когда возился несколько лет назад, нейрошизики что то подобное делали, но я не знаю насколько там проработано. https://github.com/facebookresearch/nle/blob/main/nle/env/base.py
писал я эту хуйню на Си, потому что считал это базой, преемственностью старых традиций. крче, писал-писал, кириллил архитектуру игры: структуры там, устройство игрового мира и т.д. Мало того, что пытался копать слишком глубоко, из-за чего повысерал всякого в эти struct-ы, так еще и задумался о дата-дривен дизайне. ну знаете, чтобы можно было вообще всё в игре можно было программировать кастомными скриптами, и вообще чтобы игра была модульной как маунт энд блэйд. провозился со всеми этими маня-идеями, мало по малу претворяя их в код, целый месяц лета. целый месяц я сидел за пекой и прогроммировал всякую хуйню (сейчас самому смешно), получив в итоге лишь маленькую демку, где можно было только ходить, любуясь тем, как хорошо работает FOV (за камнем ниче не видно, просто бля черный угол). вот блядь и наметался бисером, спасибо тебе, я.
В общем, могу выделить следующие вещи, которые были насраны у меня в голове тогда:
1) Осознанный выбор плохого для этих целей инструментария. Всё таки, если бы вместо "си плюс луа" я выбрал для себя си шарп какой-нить или питон, на крайняк "луа с примесью си", то было бы меньше пердолинга и больше конечного продукта
2) Думанье слишком наперёд, которое мешает деланью сейчас. Пример - опять же, раздумья над скриптабельностью всего и вся в игре. Прикол в том, что я больше думал об этой хуйне, чем писал код
3) Слишком долгое выстраивание архитектуры при не имении прототипа. Когда ты планируешь свою систему, не видя ее в действии, то вводишь себя в глубокое заблуждение относительно того, как работает твоя игра.
Да не, норм подход на самом деле. И с Си особых проблем нет, там есть flecs ECS например. Просто еще пару раз сделаешь такой проект и понимание архитектуры уже появится.
в следующий раз наверное уже за годот засяду и начну пилить что-то вроде streets of rogue. мне самому аски рогалики че-то не заходят. хотя если рогалик сделать такого плана, чтобы чисто меджду задачами в терминале поиграться, то в принципе норм, такой тоже в кайф будет запилить. только уже будет стоять вопрос о том, стоит ли пилить для такой игры скриптабельность помимо дефолтной для меня кастомной генерации уровней. всё таки скрипты для мобов первое время кроме как тебе писать будет некому. ну или просто всё это на си писать, чтобы не заморачиваться с созданием API
Я сейчас совмещаю, сам рогалик на flecs (в моем случае с++ API), это собирается в so/dll и через gdnative запускается внутри годота, а там уже рисование происходит.
>GPL
Все таки стремаюсь этой штуки.
https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins
Вот они пишут
>and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth
А клиент и рогалик явно будут гонять взад вперед комплексные структуры данных
И даже простой случай
>If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.
Они уже считают на грани, а там всего лишь одну опцию ждут, а не комплексные данные.
Может быть тогда делать клиент тоже GPL а продавать скины и обои на стены. Хотя конечно их тоже легко сопрут, просто перепишут скачивать картинки с локалхоста, лол.
>Начать решил издалека, так сказать СОСНОВ. Техзадача состоит в оживлении данного пикрил изображения.
Ну, как прогресс? Забил уже? Или сделаль что-то?
>автоматизировать процесс постройки подземелий
Это называется "процедурная генерация", гугли procedural generation, там полно алгоритмов.
Обзорное видео по разным алгоритмам генерации:
https://youtu.be/TlLIOgWYVpI
>>880031
>Тебе в любом случае понадобится редактор или его подобие, очень быстро упрёшься в сложность создания карты в блокноте.
Рогалику в общем случае не нужен редактор карт. Максимум редактор отдельных локаций, которые случайно размещаются внутри процедурной карты.
Можно взять готовый редактор типа Tiled:
https://mapeditor.org/
>Или сделаль что-то?
Пока только букву гоняющую по коробке. и простейший ии для моба. Писать стандартные библиотеки с нуля та ещё залупа иваныча.
>Писать стандартные библиотеки с нуля та ещё залупа иваныча.
Не понял, какие стандартные библиотеки и зачем?
Если у тебя реально ASCII в консольке, там вроде максимально просто - нужно получить доступ к экранному буферу и писать в него как в обычный массив. Вот только будет ли это работать в современных консолях - не знаю, на Windows консоль cmd.exe регулярно резали и вроде бы собираются совсем убрать.
Если у тебя "псевдо ASCII", то возьми SDL2 и юзай его графические возможности. Можно взять SDL_ttf, чтоб сразу буквы выводить, а не спрайты.
Зато весело. Я вот на днях printf писал.
Под винду был какой то вариант PDCurses. Алсо там вроде уже обертка над SDL есть для граф версии проги.
да этих оберток над SDL пруд пруди: от чуть более высокоуровневого SFML до целых фреймворков вроде Löve2D
Непонятно написал - не обертка над SDL, а обертка curses в SDL.
Спасибо за наводку, но я уж решил делать через SDL, чтоб при желании можно было добавить какую-нибудь фичу без плясок с бубном. А ascii графику оставлю ради стиля и экономии своих временных ресурсов.
ОП тута. Случилась классика: пока изучал как пилить свой рогалик, прокачался до мидла, устроился на норм работу, потом родил ребенка, а потом меня релоцировали. С тех пор много разного произошло, но именно то что тут обсуждалось, так и осталось не сделанным. Вот думаю освежить тред немного. Надо только вспомнить на чем остановился
>Писать планирую на C# с оглядкой на многочисленные библиотеки со вспомогательными функциями для создания roguelike игр (там тебе и генерация карт и игровые сущности). В общем, есть куда подсмотреть в случае чего
C# я уже использовать не буду, так как сменил рабочий ПК на мак, а специализацию на typescript
Далее посты с задумкой: пикрил
Сейчас понимаю, что там написано все и ничего. Имею в виду, что тут именно про всю игру сразу как бы, а это слишко большой масштаб. Нужно взять что-то одно и расписать подбробнее
Что это значит!?
Например, мы имеем условный меч и персонажа в игре. Накладываем на меч условный эффект кислоты и далее уже все зависит насколько точно мы можем влиять на составляющие игры. Опишу два крайних случая:
1. Самый простой, там где мы выделяем только урон меча. То есть наложенный эффект увеличивает его урон
2. Самый сложный:
- урон меча
- хп меча, которое страдает из-за кислоты на нем
- хп персонажа
- ментальное настроение персонажа
- временные дебафы на персонажа
- окружение, которое, может быть тоже как-то повреждается от кислоты
Предположим, персонажа ебнули этим мечом и он начал страдать физически и ментально, так как это причиняет много боли и деморализует
Это все крайне условно и призвано просто продемонстрировать то как могут различаться разные варианты реализации. То насколько глубоко можно прописать взаимодействия, должно зависеть только от фантазии
Офк у меня всего лишь две руки и нужно что-то более универсальное, чем прописывание всего этого руками
Вижу два варианта логической разбивки приложения:
1. Объекты и их свойства
2. Объекты, свойства, модификаторы (?)
Объект в обоих случаях - это владелец свойств
Свойства в первом случае - это все что может принадлежать объекту. Также эти свойства могут влиять друг на друга
Во втором случае я просто выделил модификаторы в отдельную группы. Может быть так будет лучше
Из того, что на поверхности:
1. Нужно как-то определить порядок того в какой последовательности применяются модификаторы
2. Могут ли модификаторы влиять на другие модификаторы?
Суть: понять как могут сочетаться все эти части приложения на примере совсем простой логики
Теперь намного лучше читается. Такая система покрывает множество случаев где используется только одна сущность. Что делать, если у нас их много?
давай братишка, заканчивай. а потом заливай на стим и обязательно поделись ключиком с твоим верным аноном
Теперь движение по кругу - это вертикальное + горизонтальное движение (как это и должно быть)
Далее попробуем усложнить: добавим контроль мышкой и клавиатурой
Раз уж мы сделали самоходный квадрат, давайте попробуем сделать модульный объект. Что-то типа танка с башней
Логично предположить, что ствол некоторым образом привязан к кубу. Выделяю два типа привязки:
- жесткая
- мягкая
Также привязка может быть как для координат, так и для угла поворота (пока не понятно стоит ли их разделять, но вообще надо полагать, что да, так как это разные свойства)
Могу ли я оформить привязку как одно из свойств или для этого нужен новый механизм?
Также по аналогии с жесткой привязкой ствола, могу представить себе мягкую, где идет просто следование за целью по любому из выбранных алгоритмов
Вот код системы. Самое удивительное, что ее написал не я, а сраный (других слов подобрать не могу) github copilot
Я объявил свойства, потом пару раз нажал Tab и готовый на 99% код появился на экране. После того как он мне его предложил, я только добавил от себя то, что угол тоже должен дублироваться
Немного не по себе становится
Пикрил хвосты расползаются по коду и в будущем могут стать проблемой
1032x1036, 0:15
1032x1036, 0:16
А на конструкторе можно сделать рогалик? Например на рпгмейкере?
Да, можно. Рогалик - это жанр. Никаких технических ограничений обычно не должно возникать в этом плане
F&H не совсем полноценный рогалик, в нём нет рандомной генерации локаций например. Есть псевдорандом с набором заготовленных пресетов одной локи. Этих пресетов не сильно много, враги тоже расставлены одни и те же в определённых местах.
Предметы рандомные, но тоже лежат в одних и тех же местах.
В Термине по моему разраб вообще отказался даже от пресетов, там мир с единой картой и всегда знаешь где искать каких врагов, где искать магазин, предметы по большому счёту рандомные, но есть и постоянные, которые можно всегда найти в одном месте, то есть по сути "рогаликовость" сведена к минимуму.
Тут про рогалики вообще то можешь свой девлог в другом месте постить пожалуйста
Можно ли сделать рогалик/рогулайт без боёвки?
Можно ли скрестить весёлую ферму с рогаликом?
>накрутив бессмысленного рандома
Ясно, спасибо. Как-то сам даже не догадался.
Рогалик-ферма: сажаем клубничку, она может вырасти одного из 16 цветов, каждый цвет накладывает какой-то эффект на персонажа, но какой - заранее неизвестно, можно только на практике проверить. Более половины эффектов ведут к катастрофическим последствиям и смерти, поэтому лучше тестировать на животных. Но один эффект из 16 превращает в зомби, так что возможна внезапная смерть от взбесившегося хомячка или быстрое превращение всей фермы в зомбиленд, если не успел прибить хомячка.
По-моему, идея 10 из 10. Никто ещё не реализовал?
Если взять того же стардью валлей и игры, с которого он скопирован, то там всё слишком казуально, тупой гринд тупого гринда, а собрав 100500 деняк делать в игре по сути больше нечего, ты всего достиг. Рогалик освежил бы геймплей, сделав игру интереснее...
у нинтендо на 3дс была эта игра лол именно в таком виде через стритпасс
Интересная идея
а что это за фреймворк екс ?