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

Привет, анон, теперь тут будет тред моей всратой 2D фермы Жанр: 2D ферма для аутистоов Движок: Godo

 Аноним 07/02/24 Срд 22:07:38 #1 №933329 
1707332830129.jpg
Привет, анон, теперь тут будет тред моей всратой 2D фермы

Жанр: 2D ферма для аутистоов
Движок: Godot csharp mono

Описание: можно будет выращивать помидорки, огурчики, делать закрутки и все такое. А сейчас нет нихуя, поэтому, пока что беру прицел на уровень "стардьюваля на минималках".
Аноним 07/02/24 Срд 22:13:49 #2 №933330 
1707333220059.jpg
Что есть из реализованного:
- Сетка игровых объектов поверх тайлмапы
- Инвентарь персонажа + инвентарь контейнера, можно теребить предметы туда-сюда
- Подбор/дроп предметов
- UI инвентаря, UI контейнера, хотбар
- Использование предметов в инвентаре по райткликту
- Использование райткликом активного предмета в хотбаре

Сегодня вот сделал первый предмет, Use которого ставит под курсор блок забора.
Аноним 07/02/24 Срд 22:22:31 #3 №933335 
Ну и говно братан, не думал пойти что-то полезное сделать?
Аноним 07/02/24 Срд 22:53:52 #4 №933343 
>>933329 (OP)
>>933330
Не плохо, выглядит приятно. Если не забросишь в течение недели то красавчик.

Этого >>933335 серуна не слушай, он порватка.
Аноним 08/02/24 Чтв 18:21:49 #5 №933590 
Сделал скролл хотбара на колёсико, с условием что если выбран последний элемент хотбара - скролл выбирается первый элемент и аналогично назад

>>933343
Благодарю
Аноним 08/02/24 Чтв 18:40:25 #6 №933593 
>>933329 (OP)
Пока говно, но желаю удачи!
Аноним 08/02/24 Чтв 20:09:56 #7 №933610 
изображение.png
Запилил первую версию семян, теперь можно сажать
Аноним 08/02/24 Чтв 21:51:58 #8 №933632 
Ферма-аутиферма.mp4
Пока так
Аноним 08/02/24 Чтв 21:54:33 #9 №933633 
17074181904650.jpg
>>933632
Поздравляю, ты уже сделал больше чем 50% постеров на этой доске, продолжай в том же духе.
Аноним 08/02/24 Чтв 22:41:49 #10 №933641 
Список дальнейших действий в произвольном порядке.
- Добавить логику роста растений от времени или другого фактора
- Реакция растений на касание коллизии игрока
- добавить музыку из лесного эмбиэнта или чего-то такого, чтобы не так гумозно было тестить
- сделать губами "чпок" в микрофон и поставить это на звук подбора предметов, по-моему, это забавно
- описать класс размещаемого объекта - ресурса на карте, например, дерево или валун
- сделать инструмент с типом добывающего инструмента, типа топора или кирки
- реализовать возможность добычи ресурса инструментом
- какой-нибудь базовый крафт, крафт станция и все такое
Аноним 08/02/24 Чтв 22:49:55 #11 №933643 
>>933593
Благодарю

>>933633
Забавно, вроде геймдев доска

>>933641
А, точно, ещё кошкодевочек можно завезти
Аноним 08/02/24 Чтв 22:50:48 #12 №933644 
>>933329 (OP)
Сейвы сделай, анонче.
Аноним 08/02/24 Чтв 23:00:46 #13 №933647 
>>933644
Точно, совсем забыл. Спасибо!

Правда, чувствую, натрахаюсь я с этим, ух бля
Аноним 08/02/24 Чтв 23:21:46 #14 №933649 
>>933643
>кошкодевочек можно завезти
Это 99% успеха, делай ГГ милой кошкодевочкой и в принципе тебе простят многие огрехи.
Аноним 09/02/24 Птн 01:14:44 #15 №933684 
>>933647
Да не, если поймешь суть. Главное не делай хуйню на ресурсах, используй обычные текстовые файлы
Аноним 11/02/24 Вск 17:52:11 #16 №934479 
изображение.png
изображение.png
изображение.png
Завел телегу. https://t.me/nekofarming


Покожу вам базовые классы для предмета и объекта на карте, все максимально просто

Сразу скажу, на пиках кое где я ещё не размазал ответственность по классам. Так что там и try-out, проброс или отсутствие проброса параметров методов.

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

Закинул сюда свойство "Является инструментом" и реализую все инструменты типа мотыг, топоров, лопат и всего наследуясь именно от этого класса.

Пик 2. И самое вкусное в предметах - их реализация в готовом виде.

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

Имея ссылку на объект игрока, получаю окружение уровня, подготавливаю объект грядки и через менеджер уровня спавню его, возвращая true если все ок и предмет использован удачно, или же в случае неудачи false

Пик 3. От ItemUsable наследуется тип ItemConsumable, который потребляется при использовании.
Это всякие банки-склянки, еда, семена и все такое.

На скриншоте предмет "абстрактных семян", т.к. я не сделал ничего конкретного.
И вся прелесть наследования в том - что достаточно переопределить метод использования предмета для изменения поведения.

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

И вот из всего этого получается такое колдунство, что для создания нового предмета - достаточно натянуть новый спрайт и переопределить поведение при клике, без лишнего геморроя, что важно для программирования, и прочих запар
Аноним 11/02/24 Вск 20:22:58 #17 №934530 
изображение.png
изображение.png
изображение.png
Собственно, сделал "систему роста" растений.
Наброски класса растущего растения - пик 1.

Принцип работы - когда объект готов, у него появляется система роста, куда помещается перечень стадий роста, у каждой стадии может быть своё условие и спрайт(пик2, пока так).

Сама система - пик 3
Растение в каждом кадре дёргает свой метод Process, где происходит вызов попытки системы перевести своё состояние на следующий этап и выбросить оповещение, что стадия изменилась, в свою очередь класс растения поймает этот ивент и сменит спрайт.
Аноним 11/02/24 Вск 20:26:26 #18 №934531 
2DFarm (DEBUG) 2024-02-11 20-25-22.mp4
>>934530
Собственно, работает так.
Аноним 11/02/24 Вск 20:55:56 #19 №934539 
>>934530
Ну и да, я понимаю что можно взять какой-нибудь готовый нюгет пакет стейт-машину, но хочется самому наговнокодить
Аноним 11/02/24 Вск 22:19:44 #20 №934568 
2DFarm (DEBUG) 2024-02-11 22-18-16.mp4
Базовый сбор урожая готов
Аноним 15/02/24 Чтв 00:40:08 #21 №936251 
изображение.png
Теперь кошкодевочка растит валерьянку
Аноним 15/02/24 Чтв 00:59:03 #22 №936265 
>>936251
база
Аноним 15/02/24 Чтв 02:14:59 #23 №936297 
изображение.png
Что ж, теперь будет реализовывать добычу древесины
Аноним 15/02/24 Чтв 02:50:00 #24 №936303 
изображение.png
Деревья успешно разлетаются за два удара топором на три бревна
Аноним 15/02/24 Чтв 16:17:51 #25 №936566 
>>936303
Уже лучше чем у котла за 5 лет.
Аноним 15/02/24 Чтв 16:57:00 #26 №936574 
>>936251
>>936297
>>936303
Какая милота! И прогресс быстрый.
Если надо анончик, с радостью потестю на баги и т.п, пиши смело!
Аноним 15/02/24 Чтв 21:26:46 #27 №936683 
>>936566
А кто это?

>>936574
Благодарю, после работы шлёпаю, если вообще время есть.

Как только выкачу что-то, что хотя бы можно будет тестить не в два клика - обязательно обращусь, ещё раз благодарю!
Аноним 15/02/24 Чтв 21:29:15 #28 №936684 
1708021639013.jpg
Накидал принцип работы UI для крафтинга.

Не знаю, правда, как лучше сделать: Все в инвентаре крафтить, крафт станции или комбинированный вариант.
Аноним 15/02/24 Чтв 21:30:00 #29 №936685 
Эх, как же хочется 2D художника, худенького, бледного, не очень требовательного, готового к правкам, работающему за спасибо и процент от будущих донатов, умелого, делающего качественно, с синяками под глазами, растрёпанными или неуложенными волосами, дабы вместе с ним(а лучше он сам) наклепать спрайтов для игрули.
Аноним 15/02/24 Чтв 21:41:45 #30 №936686 
>Эх, как же хочется 2D художника
Они всем нужны, но их нету.
Аноним 15/02/24 Чтв 21:46:39 #31 №936688 
>>936684
https://excalidraw.com/
Использую эту штуку для зарисовок
Аноним 16/02/24 Птн 00:36:30 #32 №936751 
изображение.png
Какое-то подобие крафта завёз
Аноним 16/02/24 Птн 00:47:10 #33 №936755 
изображение.png
>>936751
Пока что буду использовать как меню для быстрого получения вещей
Аноним 16/02/24 Птн 02:23:29 #34 №936765 
Создаем штуки на некоферме.mp4
Собственно, запилил "съедание" ингредиентов для крафта из сумки. В первую очередь съедаются стопки предметов размером поменьше. Зачем? Не знаю.

У рецепта есть поля:
Результат
Количество
Массив требуемых предметов и их кол-во

При крафте валидируется наличие предметов в инвентаре и их количества, затем все считается магическим образом
Если все ок - забираем материалы и выдаем результат.
Аноним 16/02/24 Птн 04:54:12 #35 №936771 
изображение.png
Подзадрочил структуру прожекта, хоть какой-то порядок теперь.
Аноним 16/02/24 Птн 09:00:50 #36 №936793 
ОП, довольно неплохо! Вижу под капотом механики прорабатываешь хорошие, стак инвентаря, сетку размещения предметов. Главное не угасай, верю в тебя. Дерзай
Аноним 16/02/24 Птн 10:03:21 #37 №936804 
>>936793
Благодарю
Аноним 17/02/24 Суб 16:54:50 #38 №937143 
Захотел прикрутить тестовые анимации.
На использовании предметов жидко дристанул, потому что эффект должен наступать либо в середине, либо в конце проигрывания.

Пока ухватился за AnimationTree и его AnimationStarted/Finished + длину анимации в ms.

Думаю завозить какую-то абстрактную работу с таймером или чисто на ивентах колдовать.
Энивей надо где-то закидывать референс на дерево в котором дерево анимаций и к тому же запускать саму анимацию.
Вот думаю как это сделать расширяемо и красиво без бойлерплейта

Худшие две вещи лично для меня это рисование пиксельных спрайтов и ебучая работа с анимациями.
Аноним 17/02/24 Суб 17:34:20 #39 №937152 
1679714538835.png
>>937143
Там есть трек где можно вызывать функцию в любой момент анимации.
Аноним 17/02/24 Суб 17:45:54 #40 №937160 
>>937152
Гляну, спасибо

Может потом смогу это в виде кода сделать глянув на то что генератор выдаст
Аноним 17/02/24 Суб 17:53:01 #41 №937166 
Пока план унаследовать игрока от типа существо.

Там делать ссылку на собственное дерево анимаций и сделать ивент что анимация завершена

В Use методе предмета подвязывать к этому ивенту реализацию использования предмета и файрить нужную анимацию в базовом классе, вынесу реализацию действия в OnUse и дергать его на все тот же ивент AnimationFinished из Creature, после чего отписываться от события

Посмотрим короче
Аноним 17/02/24 Суб 17:54:27 #42 №937167 
>>937161
Насмешил, всего-то на 4 кадра меньше типичного плейстейшн экспириенса
Аноним 17/02/24 Суб 18:05:51 #43 №937171 
Жена высказала желание нарисовать спрайты для стадий роста лука, луковых оладий и лукового супа

Говорю "хоть сегодня в игре будет луковый луп, все готово, ток нарисуй"

Ржёт надо мной из-за лукового лупа, а я выгоняю ее из ресторана
Аноним 17/02/24 Суб 22:36:15 #44 №937288 
64784584584.jpg
>Жена
Я то думал ты один из нас... еще и няшную кошкожену сделал...
Аноним 18/02/24 Вск 00:12:51 #45 №937300 
>>937288
Да он пошутил же, по последней строчке понятно. Ну или это какой то юмор про тульп из геншина, не шарю
Аноним 18/02/24 Вск 00:23:48 #46 №937303 
изображение.png
Вроде даже работает
Аноним 18/02/24 Вск 01:30:20 #47 №937306 
Сделал отмену использования предмета и анимации при движении
Аноним 18/02/24 Вск 01:52:59 #48 №937309 
изображение.png
изображение.png
Пришлось перелопатить чутка логики, теперь все чутка упростилось
Аноним 18/02/24 Вск 23:42:56 #49 №937557 
изображение.png
изображение.png
Выращиваем лук, товарищи!
Аноним 19/02/24 Пнд 00:03:19 #50 №937561 
>>937557
Дальше будут луковые оладья, луковый суп, новые грядки(наконец-то), и попытки в новых персонажей и их анимацию
Аноним 19/02/24 Пнд 00:10:48 #51 №937565 
photo2023-08-2023-25-28.jpg
>>937561
да вот, делой больше энписей
Аноним 19/02/24 Пнд 02:20:44 #52 №937586 
1708298427994.jpg
Прорабатываем боди часть персонажей
Аноним 19/02/24 Пнд 02:21:27 #53 №937587 
>>937586
Запрещаю дрочить в этом треде до готовности спрайтов, потом можно.
Аноним 19/02/24 Пнд 11:24:03 #54 №937637 
>>937586
ООООООООООООООООООО

Эта легальна????
Аноним 20/02/24 Втр 04:19:53 #55 №937876 
>>937637
Вполне
Аноним 20/02/24 Втр 04:21:32 #56 №937877 
1708392078581.jpg
Фон для ресторанчика в производстве, мне нравится что выходит. Правда с размерами до сих пор не знаю точно
Аноним 20/02/24 Втр 04:30:58 #57 №937878 
Анимации движения персонажа по 4 фрейма в каждую сторону есть, выложу как до железки доберусь

Ещё требуется сделать 4 по 4 применения инструмента в руках
Аноним 20/02/24 Втр 10:49:08 #58 №937896 
>>936685
>>937143
го я порисую пока не надоест, дашь телегу?
Аноним 20/02/24 Втр 11:01:09 #59 №937898 
>>937877
>4608x2892
Не делай такой размер, сжимай до 1920х1080.
Аноним 20/02/24 Втр 11:27:05 #60 №937900 
>>937896
В ТГ поболтать можно здесь, либо в чатике, либо в профиль написать напрямую
https://t.me/+DU4kgH3gvT5jMTVi

>>937898
Прошу прощения, коту фотосессию устраивал, забыл вернуть разрешение
Аноним 27/02/24 Втр 23:28:53 #61 №939379 
Завафлил немного с разработкой из-за дел ирл, сегодн смог понюхать IDE и подрубил репозиторий на гитхабе, потом мб на свой гитлаб перееду, потому что местный CI мне больше нравится
Аноним 28/02/24 Срд 00:18:01 #62 №939380 
>>939379
>Завафлил немного с разработкой
Это первые звоночки анончик. Все через это проходили.
В начале чутка проебешься, потом всё больше и больше. Не бывает такого что наоборот темп наращиваешь.
Походу R.I.P игре будет, а такие надежды были :(
Аноним 28/02/24 Срд 16:41:49 #63 №939466 
>>939380
Пока я не пишу код за компуткером делаются спрайты, все под контролем
Аноним 29/02/24 Чтв 20:47:18 #64 №939592 
Покойся с миром лучший тред этой доски...
Аноним 01/03/24 Птн 17:06:12 #65 №939716 
1709301941882.jpg
1709301943876.jpg
1709301948212.jpg
Спрайты городского здания, картины и семян
Аноним 01/03/24 Птн 17:06:44 #66 №939717 
1709301982496.jpg
1709301984042.jpg
И удобрения, не знаю какой выбрать
Аноним 01/03/24 Птн 17:07:25 #67 №939718 
>>939592
Пока живём, физической работы много, к сожалению
Аноним 03/03/24 Вск 12:21:37 #68 №940044 
Ковыряю и окостыливаю правильный способ коннекта для тайлинга Connectable->Placeable объектов

Короче, шоб заборы соединялись адекватно. Штатный тайлмап рот-жопа ебал, сувать все в слои и пропертя с динамическими объектами тот ещё пердолинг
Аноним 25/05/24 Суб 02:03:35 #69 №953010 
изображение.png
Пришлось потеть на работе, на игру не было времени.

Но чутка докинул всяких штук
Аноним 10/06/24 Пнд 20:59:41 #70 №956071 
>>940044
Честно, так и не понял, в чём твоя проблема.
Вроде всё легко штатным тайлмапом решается.
Аноним 12/06/24 Срд 05:16:51 #71 №956255 
>>956071
В том, что у меня не сетка тайлов, а сетка полноценных нод, с коллайдерами, спрайтами и прочими свистоперделками.
Я знаю что можно какие-то проперти засунуть в тайл у штатной тайлмапы, но там такие пляски с типизацией начинаются.
Аноним 12/06/24 Срд 18:03:11 #72 №956357 
MVC-Process.png
>>956255
>сетка полноценных нод
Лол, серьёзно? 100% проблемы будут, если захочешь увеличить площадь своей фермы.

>какие-то проперти засунуть в тайл
У тебя всё наоборот должно быть.
https://ru.wikipedia.org/wiki/Model-View-Controller
1. Модель: хранит и управляет данными игры, например, территория фермы - это Array, в котором хранится информация о посаженных растениях.
2. Представление: отображает актуальное состояние модели с помощью графики и звука, например, через встроенный тайлмап (т.к. он удобнее велосипедов).
3. Контроллер: передаёт модели текущее желание пользователя, например, пользователь кликнул на клеточку - он хочет посадить там новое растение.

Движок упрощает представление и контроллер, а разработка должна фокусироваться на модели. К сожалению, дерево сцены этого не подсказывает.

Примеры для симулятора фермы:

1. Пользователь подходит к незанятой "дикой" клетке и нажимает "вскопать землю".
2. Модель проверяет, можно ли здесь вскопать участок земли, вскапывает, сигналит об этом:
>signal tile_updated(x, y)
3. Представление изменяет спрайт клетки с "ровная земля" на "взрыхлённая земля".

1. Пользователь ложит персонажа спать.
2. Модель обновляет этап роста растений.
3. Представление меняет спрайты, если надо.

1. Пользователь заходит в данж.
2. Модель спавнит мобов возле игрока.
3. Представление отображает мобов.

Собственно ноды - это начальный уровень, на Godot возможно сделать игру совсем без нод, чисто на обращениях к разным "серверам", и это, в теории, значительно эффективнее использования нод.

>>934530
>Растение в каждом кадре дёргает свой метод Process, где происходит вызов попытки системы перевести своё состояние на следующий этап и выбросить оповещение
Во-первых, это крайне неэффективно: 60 раз в секунду дёргать кучу методов для каждого растения, которых могут быть сотни и тысячи. В играх такое решается обратным подходом: берётся случайная клеточка, и если в ней есть какое-то растение, ему увеличивается стадия роста. Это позволяет размазать нагрузку по времени, снизив число обновлений до 1 за тик мира.

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

Тред читал мельком, если что.
Аноним 12/06/24 Срд 22:14:35 #73 №956400 
>>956357
> В играх такое решается обратным подходом: берётся случайная клеточка, и если в ней есть какое-то растение, ему увеличивается стадия роста.
Я что-то не понял, то есть следующее растение вырастет только в следующий тик мира? Или имеется ввиду взять случайную клеточку одного вида растений и проверить не пора ли всем растениям этого вида вырасти прямо сейчас?
Аноним 12/06/24 Срд 22:14:56 #74 №956401 
>>956400
Если что я мимокрокодил зелёный*
Аноним 16/06/24 Вск 09:15:49 #75 №956947 
>>956400
Террария так работает (работала много лет назад):
>The entire map is stored as one huge array. Each cycle, the updateworld method picks out a couple tiles at random and does something based on what that tile is (spread grass, grow a mushroom, place a cobweb, spread corruption). If it's nothing, it tries to spawn an npc there.
Это даёт Террарии работать в реальном времени с игровым миром на миллионы тайлов, каждый из которых можно удалить и заменить другим. Для игрока это выглядит так: всё растёт в случайные моменты времени, но +/- средняя скорость одна.

Вот Майнкрафт (опять же описание старых версий):
>Each tick (1/20 of a second), all chunks within a certain radius of the player run updates. In 1.9pre5 the radius is 7, so the update area is a 15×15 chunk square centered on the chunk containing the player.
>When a chunk updates, it does the following 20 times:
>Pick a random block in the chunk.
>If that block is eligible for random updates, update the block.
>(The 20 selections are independent, so the same block can be picked more than once.) The probability of a particular block being chosen is about (20 / (16×16×128)) = 0.061%.
>If a selected block is a crop which is not fully grown, and its growth conditions are met, then it makes a grow check.
>(дальше описание проверок разных растений)
Т.е. опять же, в чанке 16×16×384 = почти 100 тысяч блоков, но каждый тик обновляются всего лишь несколько случайных блоков. Отсюда получается неравномерный "естественный" рост растений.

Впрочем, для игры типа Stardew Valley так делать не обязательно, потому что в таких играх все растения обычно растут только когда игрок ложится спать. Но если ОП хочет растить растения в реальном времени, придётся использовать этот трюк со случайностью, с целью оптимизации и визуального разнообразия (синхронный рост совсем неестественно выглядит).
Аноним 16/06/24 Вск 10:35:34 #76 №956959 
>>956947
А, ну кстати да, процесс вырастания в террарии и майнкрафте очень похож, всё понял, спасибо большое что объяснил <3
Аноним 21/06/24 Птн 02:28:53 #77 №957736 
>>956357
>сетка полноценных нод
>Лол, серьёзно? 100% проблемы будут, если захочешь увеличить площадь своей фермы.

Вот тогда и буду решать проблемы оптимизации.

>пояснения за MVC
>1. Модель: хранит и управляет данными игры, например, территория фермы - это Array, в котором хранится информация о посаженных растениях.
Я же так и написал, у меня полноценные массивы нодов.
Массив с тайлами -> самый нижний слой 2д спрайтов
Массив с размещаемыми обьектами -> средний слой объектов со своими спрайтами
Массив с свистоперделками -> все что нужно натягивать поверх объектов прошлого уровня

>3. Контроллер: передаёт модели текущее желание пользователя, например, пользователь кликнул на клеточку - он хочет посадить там новое растение.
Зачем, если можно пукнуть ивент в пустоту и кому надо - тот поймает?

>Собственно ноды - это начальный уровень, на Godot возможно сделать игру совсем без нод, чисто на обращениях к разным "серверам", и это, в теории, значительно эффективнее использования нод.
Да, но стоит ли ради хобби изобретать велосипед? Мне сурового энтерпрайз пердолинга и на работе хватает.

>Растение в каждом кадре дёргает свой метод Process
>Во-первых, это крайне неэффективно: 60 раз в секунду дёргать кучу методов для каждого растения, которых могут быть сотни и тысячи.
Абсолютно пофиг, сходить по ссылке и дёрнуть пару булевых Func/Expression не сыграет большой роли

>Во-вторых, в симуляторах фермы растения обычно растут только "ночью"
У меня необычно :)
И все ещё что раз может поменяться.

>Тред читал мельком, если что.
Ну ты заходи если что
Аноним 21/06/24 Птн 04:03:31 #78 №957739 
>>933329 (OP)
Жаль тред, хорошая была задумка, но конец очевиден. Покойся...
sage[mailto:sage] Аноним 06/07/24 Суб 13:43:30 #79 №961000 
>>933329 (OP)
уже есть несколько игр с этими ассетами видел на итче и в вк, опоздал и соснул ты анон(( без негатива сам такой
comments powered by Disqus