24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Tiny 2D RPG

 Аноним OP 07/07/20 Втр 07:16:35 #1 №681243 
1ab5d07a76f4103642de71ccf628a150.png
Сегодня решил сделать маленькую игру - вот прям сейчас сел и начал (так что не спрашиваете где тут демо, где тут скрины, где тут код - ничего нет).

Здесь буду вести дневник. Постараюсь не тянуть и сделать побыстрее... Но как получится.

=================================================
Жанрово это будет что-то типа рогалика-песочницы-рпг. Никакого сюжета, никаких целей.
Фишкой будет минимализм указанный в названии.
Примерный геймплей - у игрока есть хаб, из него он отправляется в данжи за лутом. В хабе он занимается всяким крафтом.
Остальное в геймплее по мере разработки, сейчас важнее базовые вещи сделать.

=================================================
Вдохновением в визуальном и геймплейном плане являются:
- forager
- Archvale (https://www.youtube.com/watch?v=P3T81N-b25Y) - хочу такой же быстрый геймплей
- dark souls - атмосфера

=================================================
Техническое
Репозиторий: https://github.com/deltafran/Tiny2DRPG
Язык: С++
IDE: Visual Studio 2019
Фреймворк: Raylib
Редактор карт: Tiled
Платформы: сейчас Windows (в будущем возможно Android и браузеры, Linux)

Я скорее программист, поэтому будет мало картинок и красивостей.

Систем сборки не будет - мне не нужно. Проект лично мой, а не для кого-то.
По коду, вы можете делать замечания, но я не обязательно буду к ним прислушиваться. У меня есть свои мысли и опыт по написанию кода

я собрал и проверил работу Raylib. Теперь надо подкрутить загрузку Tiled карты

=================================================
Вопросы

Почему не X движок?
Для таких проектов движки не нужны. Фреймворка хватит (фреймворк тоже не нужен, но мне лень возится с окнами, логами, спрайтами).

Почему С++, а не X?
Потому что я знаю C++, но не знаю X.

О скриптах типа луа/питон?
Не нужно. Вся логика будет на С++ (я не знаю луа/питон/etc).

О ecs?
Заметил что на дваче этим страдают. Но скорее всего нет, не нужно. Но посмотрим.
Аноним 07/07/20 Втр 12:39:37 #2 №681349 
>>681330
В основном просто захотелось попробовать новенький raylib. Да и сообщество в дискорде у них активное, можно сразу спрашивать и получать ответ.
Аноним 07/07/20 Втр 15:10:19 #3 №681379 
>>681330
Вангую, что ни одного скриншота ты не дождёшься.
Аноним 07/07/20 Втр 16:25:25 #4 №681399 
изображение.png
>>681379
Ну вот первый скриншот

Доделал загрузку карты из tiled редактора. Ну и всякое по мелочи связанное с загрузкой карты и текстур

Уже завтра планирую сделать анимированные спрайты (и добить проблемы загрузчика tiled карт)

И где-то дальше можно сделать бегающего по карте человечка
Аноним 07/07/20 Втр 16:36:05 #5 №681400 
изображение.png
На все окно
(сделал возможность масштабировать)
Аноним 07/07/20 Втр 17:47:32 #6 №681417 
>>681243 (OP)
Удачи, анонче
Если релиз будет на Линуксах, я бы заценил
Аноним 08/07/20 Срд 00:46:10 #7 №681443 
>>681400
Тайлсет откуда? Выглядит интересно. Удачи с проектом)
Аноним OP 08/07/20 Срд 02:01:14 #8 №681447 
>>681443
Тайлсет отсюда
https://frano-px.itch.io/rpg-village-tileset-16x16
Временно, чтобы было что на экране
Аноним OP 08/07/20 Срд 09:19:19 #9 №681458 
Сегодня получилось много кода
Пошерстил гитхабы на примеры, выдрал реализацию спрайта, буфера глубины для сортировки спрайтов (удобная штука) и аниматора.
Но сейчас приходится переписывать этот код под себя, так как не совсем точно то что мне надо.

Вытащил спрайты из forager. Собственно думаю, что пока нет своих спрайтов, юзать их. Это конечно нельзя и не законно - но кого это вообще волнует?

В идеале, в эти дни я хочу сделать такую же демку как на этом видео https://www.youtube.com/watch?v=omNRce_Xbnw


И сразу вопрос, кто-нибудь знает где взять такую же липкую камеру как в forager (и вроде на этом видосе). На любом движке, мне все равно.

Просто такая немножко не поспевающая за персонажем камера как раз и создает ощущение быстрого движения
q 08/07/20 Срд 14:25:51 #10 №681496 
image.png
>>681243 (OP)
>Сегодня решил сделать маленькую игру
>Вдохновением в визуальном и геймплейном плане являются:
>- dark souls - атмосфера
Аноним 08/07/20 Срд 15:07:44 #11 №681503 
дальше думой сам.png
плавненько.webm
>>681243 (OP)
>Сегодня решил сделать маленькую игру - вот прям сейчас сел и начал
>>681458
>Пошерстил гитхабы на примеры, выдрал реализацию
>Вытащил спрайты
>где взять такую же липкую камеру
Ясно всё с тобой, ассет-флиппер от движкопись. Ты позоришь сам дух велосипедостроения, тьфу на тебя.

>Собственно думаю, что пока нет своих спрайтов, юзать их
Кто запрещает цветные квадратики из пейнта использовать? Так даже лучше, чувствуется прототипность.
Тем более готовая графика накладывает отпечаток на восприятие игры - видно графон, но не геймплей.
>Это конечно нельзя и не законно - но кого это вообще волнует?
Тебя должно волновать, твою совесть. Код оттуда, картинки отсюда - а в чём твоя-то заслуга, что ты клеем смазал?

>липкую камеру
Это настолько тривиально, что мне даже лень тебе объяснять. Вкрутил эту фичу в свой "движок" за 5 минут.
Аноним 08/07/20 Срд 23:49:46 #12 №681597 
>>681458
Ебашь, анонче. Похуй на нытиков.
Аноним OP 09/07/20 Чтв 09:17:13 #13 №681623 
>>681503
>Ты позоришь сам дух велосипедостроения, тьфу на тебя.
В велосипедстве велосипеды стоит писать там, где понимаешь что делаешь.

>>681567
>Отписался от треда
Зря-зря. Тред то про разработку игру, а не велосипеды движка.
Аноним OP 09/07/20 Чтв 09:23:43 #14 №681625 
изображение.png
Сегодня продолжаю облагораживать фреймворк для дальнейшей работы.
В своем проекте я хочу динамическое шейдерное освещение (ну и возможно еще какие-нибудь фишки на шейдерах). Вот прикрутил

Кстати, raylib в этом плане приятно радует - не понимаю как они этого добились, но очень легко сделать экранный шейдер, или шейдер для спрайта


Еще обдумывал о том как сделать анимации. Вроде в голове что-то вырисовывается. Это пока что последняя задача из кода фреймворка, дальше вплотную займусь геймплеем (а именно движение игрока, взмах оружия, враг, взаимодействие с окружением и врагом)
Аноним 09/07/20 Чтв 11:59:01 #15 №681647 
>>681243 (OP)

Говно. Жанр - говно и графика отстойная. Задолбали с этим жанром уже. Куда ни кинь - всё одинаковое
Аноним 09/07/20 Чтв 13:09:59 #16 №681667 
>>681623
>В велосипедстве велосипеды стоит писать там, где понимаешь что делаешь.
То есть
>реализацию спрайта, буфера глубины для сортировки спрайтов и аниматора
>липкую камеру
ты не понимаешь? Это ж вроде тривиальные вещи, тем более с готовым фреймворком.

>>681647
>графика отстойная
>Куда ни кинь - всё одинаковое
Это всё потому, что он
>Вытащил спрайты
Рисовал бы сам - может получилось бы что-то поинтереснее.
Аноним 09/07/20 Чтв 15:24:48 #17 №681688 
icevideo20200709-221721.webm
Доделал класс анимаций (класс умеет хранить несколько наборов анимаций и переключаться между ними)
Набросал первое движение перса
Извиняюсь за музыку в ролике, забыл выключить (я под нее кодил))) ), а сейчас уже спать иду.

Теперь надо сделать столкновения (не сложно, есть в raylib), и нормально слои (чтобы перс на деревьях не ходил), и надеюсь на этом эта фреймворкнутая тягомотина закончится и я начну делать игру.

>>681667
>ты не понимаешь?
У каждого движка/фреймворка свои особенности, raylib я не знаю, учусь по мере делания проекта.

>>681667
>Рисовал бы сам - может получилось бы что-то поинтереснее.
Когда-нибудь возможно я нарисую графику, но прям щас я кодю.
sage[mailto:sage] Аноним 09/07/20 Чтв 16:08:37 #18 №681701 
>>681688
Че за пиксельное аниме, сделай что-нибудь русское там из пластилина или шерстяных кукол графику.
Аноним 09/07/20 Чтв 22:46:31 #19 №681818 
>>681688
А что ты там, собственно, кодишь?
Всё, что ты тут пока что описал, я сделаю в гамаке за 30 минут. В том числе и "липкую камеру" на которую ты ассет ищешь, блеат.

И вообще ты не тру велосипедист.Садись писать свои либы, чего ты чужие подключаешь?

Доставьте ёвамуси педал.webm
Аноним OP 10/07/20 Птн 03:33:35 #20 №681878 
>>681818
>А что ты там, собственно, кодишь?
1 день - подключал raylib. Начинал работу с загрузкой из tiled
2 день - доделал загрузку из tiled, начал анимацию/удобные спрайты/загрузчик ресурсов
3 день - доделал анимации и все что начинал ранее

Ну тут еще время уходило на поиск решения в гитхабе (их же еще пробовать пришлось). Да и вообще на этом стеке для меня все новое, приходится документацию по рейлибу пролистывать.

И говоря о их велосипедстве, повторю - это можно когда понимаешь как, и это не займет туеву кучу времени (ну или я программист не очень... но и пофиг)

Тот же формат карт из tiled - очень сложный, с разными нюансами
С анимациями - ведь недостаточно просто пробежаться от лева направо по тайлсету анимации, надо еще учитывать тайминги, иметь возможность ставить на паузу, сменять на другой тайлсет
Аноним 10/07/20 Птн 03:38:49 #21 №681880 
>>681818
>А что ты там, собственно, кодишь?
Ты можешь сам посмотреть его код: >>681243 (OP)
>Репозиторий: https://github.com/deltafran/Tiny2DRPG
Я так понимаю, основной код игры нужно смотреть в /code/Game/

>>681818
>Садись писать свои либы, чего ты чужие подключаешь?
Читай его пост внимательнее >>681243 (OP)
>Постараюсь не тянуть и сделать побыстрее
>Для таких проектов движки не нужны. Фреймворка хватит
>мне лень возится с окнами, логами, спрайтами
tl;dr: движок не нужен, но нужно быстро и лень возиться
Это как IKEA, берём кусочки кода и собираем готовую программу)
Аноним 10/07/20 Птн 03:48:02 #22 №681882 
>>681878
>Тот же формат карт из tiled - очень сложный, с разными нюансами
Tiled позволяет экспортировать в JSON, который ты наверняка можешь прочитать штатными средствами C++ (т.е. нужно только знать необходимые тебе ключи), к тому же можно экспортировать только собственно сетку тайлов и всё. Смысла в поддержке всех прибамбасов Tiled для конкретной игры мало, ты же не универсальный движок разрабатываешь. То же касается анимации и т.п. - нужно смотреть на конкретную задачу и решать только её, а не все возможные её модификации сразу.

Ну и потом, какие у тебя цели? Сделать игру любыми средствами, освоиться с использованием фреймворка или подкачать навыки программирования? В первом случае всё ОК, делай игру, никаких претензий. Во втором случае польза от выдирания готовых кусков сомнительна, фреймворк для освоения всё-таки нужно самому использовать, а не через чужие надстройки. В третьем случае вообще смысла в этом всём нет, пока ты не изобретаешь какие-то алгоритмы и не пытаешься реализовать их самостоятельно - ты не программируешь, а просто заставляешь чужой код работать на себя.

Извини, если слишком критикую. Просто как-то задело за живое.
Аноним 10/07/20 Птн 05:25:46 #23 №681890 
>>681880
>Это как IKEA, берём кусочки кода и собираем готовую программу)
Но ведь оно работает, а игрокам разницы нет.

>>681882
>Tiled позволяет экспортировать в JSON
Тем не менее какое-то время будет потрачено. Тем более в будущем я всеже хочу больше переложить на Tiled - там ведь не только тайлы можно расставить, но и какую-то логику или хотя бы характеристики добавлять

>>681882
>Сделать игру любыми средствами
this, но также замечу что любыми средствами, но в пределах С++ языка (так как другие ЯП я не знаю)
Аноним 10/07/20 Птн 05:37:56 #24 №681891 
icevideo20200710-123350.webm
Выделил персонажа в отдельный класс Player
Сделал два вида анимаций - стояние и движение. При этом теперь работает в 4 направлениях.

Теперь сажусь за коллизии.
Аноним 10/07/20 Птн 05:39:08 #25 №681892 
блин, почему метка ОПа отвалилась? Как сейчас на двачах оп ставится?
Аноним OP 10/07/20 Птн 09:45:30 #26 №681899 
icevideo20200710-163255.webm
изображение.png
Механизм коллизий работает. Также сделал несколько слоев карты (чтобы персонаж ходил за деревьями).

Переделал карту. Теперь TiledMap просто грузит из tiled. А реальная карта в Map не привязана к файлу мапы и может по разному грузится (ну и код будет проще, но не сейчас - сейчас там такой копипастовый говнокод... завтра буду переписывать)

Ну и статистика:
Работаю 4 день (ранее не имея опыта в таком стеке, все для меня новое)
20 коммитов на гитхабе (не считая первый пустой)
2476 строк основного кода (ну тут итоговый код, еще было много временного кода, когда я что-то изучаю и проверяю, этот код удаляется)

Теперь надо:
- привязать карту к персонажу и сделать ее липкой
- вывести взмах оружия как в forager и клонах
- ввести вражеского моба
- сделать преследование игрока мобом
- ну и боевку между ними
Аноним 10/07/20 Птн 14:18:05 #27 №681973 
>>681899
>Теперь надо:
Плохой план, пункты разного уровня сложности. Инертная камера с привязкой к игроку делается быстро, взмах оружием тоже; моб и логика его поведения - намного сложнее, а "боёвка" вообще подразумевает много работы, если это не примитив какой-то.

Сложные пункты всегда нужно дробить на простые подпункты (декомпозиция), по крайней мере для себя (здесь всё перечислять не нужно, я полагаю). Так будет проще понять, что делать дальше, и проще начать работу (мы подсознательно избегаем сложных задач).

>>681890
Я понял твою позицию, всё норм. Сам хотел бы точно так же лепить игры на коленке, как пытался делать это лет восемь назад (кончилось всё лапшой, в которой я запутался), но мой перфекционизм не даёт мне уклониться от разработки "правильной архитектуры", и в итоге я застреваю на создании движка и проблемах выбранной архитектуры (и её преждевременной оптимизации)...
sage[mailto:sage] Аноним 10/07/20 Птн 17:11:32 #28 №682046 
>>681973
разработка это принятие огромного количества сложных решений.
перфекционизм это форма эскапизма, ухода от сложных некрасивых решений.
отводишь время на принятие решения и если не получается норм, то делаешь как проще.
Аноним OP 13/07/20 Пнд 10:05:21 #29 №682540 
Аноны, я не пропал. У меня близкий знакомый умер, не до игр сейчас.
Поэтому в ближайшее время будут либо паузы, либо очень мало работы (но надеюсь максимум на неделю)
Аноним 11/10/21 Пнд 15:41:46 #30 №772511 
>>682540
>Аноны, я не пропал. У меня близкий знакомый умер, не до игр сейчас.
Поэтому в ближайшее время будут либо паузы, либо очень мало работы (но надеюсь максимум на неделю)
Как прогресс ОПчик?
Аноним 07/03/23 Втр 14:24:39 #31 №869059 
>>682540
Восстановился после удара?
Аноним 07/03/23 Втр 14:39:06 #32 №869064 
>>682540
Что с игрой?
Аноним 07/03/23 Втр 15:31:22 #33 №869068 
16604279368760.gif
>>869059
Некромант раскопал драму.

Чел делал игру, а потом у него от этого друг умер.
Аноним 07/03/23 Втр 16:28:05 #34 №869075 
>>869068
Жыдам не понять.
comments powered by Disqus

Отзывы и предложения