>>1080517 Буду, буду. Что ещё делать, когда разочарован во всем вокруг? Только держаться за мечту юности или стать нигилистом и такой же какашкой, все вокруг Даже если чебурнетнемся - буду делать, даже если в стол
>>1080401 → >Почитай определение DI. DI всегда нужна Почитал: https://stackoverflow.com/questions/130794 >"Dependency Injection" is a 25-dollar term for a 5-cent concept. [...] Dependency injection means giving an object its instance variables. [...] Вот ты знаешь эти умные буквы, дальше что?
>что бы абстрактное не зависило от конкретного Бред. У тебя абстракция на абстракции и абстракцией погоняет в твоей игре? Или тебе достаточно просто: >enemy.target_node = player Сделать? Формально это "DI", но не нужно называть простейшие действия такими сложными словами. "Передача ссылки на один объект в другой объект" - нормально и понятно, а "инъекция зависимости" - это заумная херня для людей с высшим образованием, возомнивших о своих навыках хрен знает что...
Поэтому никакая "DI" тебе не нужна. Лишний термин.
Привет! В Godot 4.5 делаю смену скинов персонажа через динамический load() SVG-файлов. В мобильной дебаг-версии всё работает, в релизном билде (production) персонаж просто исчезает со сцены при смене скина. Как это можно пофиксить?
>>1080562 Я не телепат, не знаю какого ты там кода нахуевертил. Чисто телепатически кажется, что ты пытаешься загружать файлы, которые тебе редактор услужливо под капотом в текстуры сконвертировал, а ты об этом и не знаешь. (Не знаешь, что графический пайплайн рендера работает с текстурами, а не с файлами картинок). А в релизной версии, соответственнно текстуры есть только у тех СВГ, которые при дебаге были.
>>1080563 Функция load() в GDScript - это сахар ResourceLoader. ResourceLoader самостоятельно находит нужные ему данные в папке импорта. SVG растеризуется сразу, как попадает в папку проекта, так что проблема не здесь...
>>1080562 >В мобильной дебаг-версии всё работает, в релизном билде (production) персонаж просто исчезает А ты случайно не используешь текстуру для Polygon2D, деформируемый с помощью Skeleton2D? Какой режим используешь, Compatibility или Forward Mobile?
В Godot 4.0+ в Compatibility есть баг, из-за которого деформируемые костями Polygon2D якобы "исчезают", несмотря на то, что в дебаге при подключении к Godot кабелем всё работает. В Godot 3.6 и в Forward Mobile проблема отсутствует. Вроде бы это баг API у ряда мобильных SOC. На гитхабе было мало активности.
>>1080573 >Filters to export non-resource files Формат SVG относится к "resource files" в Godot. Стандартная иконка, например, в формате SVG.
>FileAccess.open(svg_path, FileAccess.READ) >current_svg_content = file.get_as_text() Нафига? SVG импортируется как изображение. Что ты с этим текстовым XML будешь делать?
>print("Ошибка: Файл не найден!") Этот журнал на Android без рута недоступен...
Его проблема скорее всего из-за Polygon2D.
>>1080567 >не включил в сборку нужную директорию По умолчанию там нет каких-либо исключений. >этого не заметил и тоже их в сборку не подтянул Кажется, Godot все ресурсы включает, даже лишние.
if new_content == content: # Если fill не было, вставляем его regex.compile("(id=\"" + part_id + "\")") new_content = regex.sub(content, "fill=\"" + new_hex + "\" $1") return new_content
>Через опцию fill меняю цвет у свг изображения Что ты потом делаешь? Записываешь в SVG файл?
Если записываешь результат в SVG файл, тогда всё понятно... Дело в том, что в res:// писать можно из редактора, но нельзя после экспорта. Когда ты перезаписываешь SVG, Godot его переимпортирует. Поэтому твой подход работает в редакторе, но не сработает при экспорте игры (не важно куда). Можно попробовать папку user://, но что-то я сомневаюсь в возможности загрузить SVG картинкой без импорта. Наверняка импорт SVG работает только в редакторе.
Я поискал и нашёл какой-то плагин: https://github.com/KennySmash/godot-ponsvg Там заявлена возможность менять параметры SVG элементов на лету. Но я не знаю, рабочий ли данный плагин или автор его навайбкодил и бросил... Будь аккуратнее, там код на C++, перепроверь вручную.
На твоём месте я бы вообще не стал возиться с SVG. Экспортировал бы в растры (PNG), создав отдельные полупрозрачные слои с нужными мне элементами, и изменял бы их оттенок через CanvasItem.modulate. И комбинировал бы их, если надо, через SubViewport. Посложнее получается, но зато более надёжно. Это популярный способ реализации кастомизации в 2D.
Подскажите сервисы где искать хуйдожников. Делаю 2д индиговно сайдскроллер. Надо спрайтшиты анимаций, хотяб для главного героя, хотяб стандартный idle, jump, run, attack... Похуй оекаки или в пиксель-пёрфект, со стайлом пока не определился. И сколько такое будет примерно стоить, можт кто сталкивался.
>>1080481 → Объединяйся с тем кто понял главный и великий секрет скайрима. Тут каждый второй школьник фантазирует целые портянки идей, которые даже лень читать. Только графомания никак не помогает с разработкой игр.
>>1080542 >Это важнейший принцип в Godot. Где? У тебя ссылки на ноды захардкожены сервислокатором (NodePath). Неожиданно, но система нод (дерево) не самая лучшая идея для геймдева, особенно когда есть элемент наследования (каскадная проблема).
Если я хочу запилить большой океан, то мне лучше по какому пути идти вообще? Я так понимаю в годоте нет еще нормальных чанк стримингов встроенных и мне надо что-то вроде двумерного массива запилить где условные 9 клеток с игроком в центральной загружены и в зависимости от направления просто дальше подгружать и выгружать какие-то куски (острова, другие корабли спавнить и пр). Может, уже есть хороший аддон для этого, чтобы самому не писать систему управления чанками этими?
>>1080627 Самое сложное - шейдер воды, чуть проще будет контроллер корабля, а самое простое - это чанки. Субъективно, конечно, но оцениваю математику (количество формул, что нужно крутить в уме).
>>1080612 >ссылки на ноды захардкожены Слишком узко мыслишь. Почитай документацию.
>элемент наследования (каскадная проблема) Можешь хоть ECS реализовать на нодах, движок не ограничивает тебя в этом никак. Преимущества в производительности не будет и убьёт логичность и надёжность (типичные недостатки ECS), но если ты любитель делать велосипеды - тебе понравится.
Имхо, как раз ECS вреден для геймдева, поскольку он концептуально нарушает принцип инкапсуляции. В объектном подходе и подобных ему ты можешь легко скрыть лишнее под капотом "умного" объекта, а потом просто использовать этот объект как чёрный ящик с описанным в документации поведением. А в ECS ты работаешь всегда на уровне отдельных атомарных компонентов, часто даже размером в 1 бит (флаг), и запутаться легко, т.к. ты не можешь "закрыть капот". Поэтому я не понимаю, почему ты против иерархии (последовательность "закрываемых капотов"). ECS изначально придумана для минимизации cache miss, проблема которого очень сильно раздута: те же X3D с увеличенным кэшем бесполезны в большинстве игр. Упереться в кэш и пойти страдать ECS надо суметь.
>>1080598 не появляется что данный плагин в настройках проекта. Да и поддержка андироид не заявлена. Свг это же технология мамонтов, почему годот не может с ней работать без всяких васянских плагинов
>>1080676 >Свг это же технология мамонтов, почему годот не может с ней работать без всяких васянских плагинов Потому, что это векторная графика, картинки хранятся в виде формул и всяких данных и видеокарта ложила прибор на эти формулы и данные, ей текстуру надо готовую
Я бегло пробежал по сообщениям, если ты меняешь в тексте SVG файла что-то то в Godot есть методы Image.load_svg_from_buffer и Image.load_svg_from_string, а этот Image уже можно в Texture2D превратить
>>1080676 > Свг это же технология мамонтов > без всяких васянских плагинов Начнём с того, что технология сама по себе васянская. А других у нас для вас и нет. Технология - это же банальный XML порридж.
>>1080726 Для нас главная фишка гамака, на данный момент, это то что вторая студия требует постоянное подключение интернета для логина, и уже некоторые разрабы вынуждены через квн логиниться. Первая студия свободна от таких проблем, вот только устарела она уже давно.
Добавил денюшки в игру, которые выбиваются из нпс взависимости от их хп и уровня сложности, теперь можно будет закупать патроны и хилки по мере необходимости и активировать всякие аугментации типа найт вижена думаю потом ещё как нибудь другие усилители добавлю. В общем думаю позже ещё больше всяких приколюх запилю на основе денег, мейби торговую биржу в контекстное меню, чтобы можно было делать ставки на рост и падение.
>>1080757 Да, только гдскрипт, ну не считая шейдеры. Я в целом не программист, и языков не знаю. >>1080760 Можешь тоже денег добавить, чтобы можно было торговаться на бирже и купить второй кубик
>>1080660 >Можешь хоть ECS реализовать на нодах, Каким это образом. Пока есть ссылки на ссылки и лежит фиг пойми как в куче, не о каком дата-ориентированном программирование речи не идет.
Посоны, как думаете, я шиз что лезу ковырять C# и Godot, но при этом не ставлю себе задачу разрабатывать игоры мечты и монетезироваться? Мне просто интересно копаться в документации и наблюдать, что делают разные ноды. Мне почему-то со стороны видится как какое то весеннее обострение, не? Лол.
>>1080676 У годота еще есть бага он наложение цветов не распознает. Я сначала обрадовался, а потом во время заметил и пришлось в png экспортить. Годот никогда не дает расслабиться. Плюс еще Inkscape даблит пути и создает дерево подпапок твоего дерева подпапок, безумие попенсорса, как-будто все что не касается бэкенда проклято.
>>1080761 У меня кликер/идл игра, за клик капают ресурсики... Но это все, что я сделал... Стыдна быть мной, товарищи. И на работе таски заваливаю... Эх, бездарность.
>>1080737 Документацию открывал? Самое забавное что некоторый сайты по годоту - (неофициальные, шейдеры и прочее) заблокированы и не пускают сами тоже. Колесо сансары замкнулось.
>>1080776 Так и я приятно типа время провожу. Такой кайф иногда сделать чето прикольное, а оно еще и работает, загляденье. А потом так хочется рыдать и выйти в окно от осознания, что тебе не на что существовать и пользы от этих действий меньше, чем если с протянутой рукой в церкви стоять. Такая хтонь и безнадега.
>>1080803 >что тебе не на что существовать и пользы от этих действий меньше, чем если с протянутой рукой в церкви стоять А мне норм. Вот зп за прошлый месяц.
>Такая хтонь и безнадега. Не выдумывай, бро. Просто найди работу, а пограмирование - это просто хобби.
>>1080803 Если бы ты делал и публиковал демки, что-то делая для популяризации опенсорс геймнинга или годот, а так ты как алкаш в одного упариваешься каждый день без пользы.
>>1080828 Врядли мои потуги хиленькие можно назвать хоть каким-то плюсом в карму годота. Ну я пока стеснительность и тревожность пытаюсь перебороть, чтобы хотя бы в этот тред кинуть что-нибудь.
>>1080829 Реальным вкатунцам интересны демки, механики или решения, пускай даже они плохого качество, главное есть во что потыкать и куда копать дальше (ты бы видел что делают на тытрубах, там вообще порой адок в коде).
Я уже говорил - опенсорс движок бессмысленный если не будет моды опенсорс гейминга, хотя бы в демках.
А вот очередное видео как ты насилуешь лоуполи годами из прокрастинации в прокрастинацию, это правда не интересно (может только в СУБШОТЕ).
>>1080829 >>1080831 В общем, я к чему, если у тебя безысходность, но процесс нравится - ты можешь проникнутся идеями опенсорса, перестать быть паразитом и ощутить себя частью реального сообщества (не только потребляя, но и что-то отдавая в этот мир).
Если ты жадная фигня и нарцисс который верит в свои идеи-перделки на миллион и просто хочешь поныть чтобы к своей персоне внимание привлечь, то ешь говна дальше, ты обречен.
>>1080834 >Делайте игры. А ты делаешь? Почему твои друзья с ютуба делают, а ты не можешь себя заставить? Может уже стоит признать что гейминг не твое и заняться тем что реально по душе?
>>1080836 Тут буквально весь тред вам зафлужен, но дерейлят это когда неприятно тебе. Вы прогнали челика, который единственный делал тут что-то похожее на игру. Ценичное говно. Заводчанин не в счет, он уже полгода просто играется в движок множа плейсхоледры >вася залетный. Знает об 15 летних ютуберах с 5 летнем стажем которые без игр
>>1080837 >Вы прогнали челика Ты про того с 3д моделькой девочки в дождевике? Так у него депрессия и суицидальные мысли, в каждом втором посте материл анонов, которые ему свои идеи предлагали.
ЧТО ЕСЛИ ПРОГНАТЬ МЕМ ЧЕРЕЗ НЕЙРОНКУ? @ ВДРУГ ЭТО ИХ ИСТИННОЕ ПРЕДНАЗНАЧЕНИЕ @ ПЕРЕКРАШИВАТЬ МЕМЫ, ЧТОБ БЫЛО КРУТО... @ @ @ А... НУ... ВИДИМО, ОНИ ДЛЯ ЧЕГО-ТО ДРУГОГО
>>1080844 >Я хз о каких ютуберах ты мне второй пост подряд втираешь Значит залетышь тут ты. Хотя кнопочку репорта нашел уже. Помогает?
>>1080842 Несмотря на беду с башкой он что-то пилит и даже похожее на игру. Я быть может сказал бы и про челика с островом, но там вроде многолетняя стагнация зомби проекта
>>1080843 Он в субшоте наныл что его посты тут удаляют. Я с ним согласен, срачи малолеток про синглтоны и DI поносом текут, из треда в тред, а за полезную инфу по челябе или реальную игру, ушлёпок долбится в кнопку репорт. А потом пишет делайте игры.
Эт самое. Кто-нибудь пытался запилить вн или что-то вроде этого в годоте?
Корочь вот идёт у нас сцена. Там персонаж говорит. И вот он говорит типа: "Держи ветку", и в этот момент хорошо бы добавить ветку в инвентарь и вспышку экрана сделать (ну сценарий типа да). Так вот как вообще лучше эту систему сделать?
Делал всю сцену через код годота, всё заебись, но тогда как бы сохраниться по середине сценария не получается, так-как у нас же вся сцена это по сути do_shit(shit): вот такая хуёвина (функция или как оно там).
Чтоб сохраняться можно было весь текст можно в словаре держать, тогда да как бы без проблем намутить сохранения (ну чисто по айди строки), но как тогда посреди текста всполох и ветку сделать? Оставлять в словаре какие-то команды на манер дать_что-то(ветку): и потом конвертить их в команды как-то? Но тогда боюсь в словаре будет срач.
Короче как сделать лучше. Я хз даже где-как такое узнавать
>>1080882 Самое оптимальное для тебя сейчас - взять готовый диалоговый аддон и посмотреть как там это сделано, возможно погонять тестовый проектик на аддоне, прежде чем начинать пилить своё. > Я хз даже где-как такое узнавать Надо было написать в твоём любимом поисковике "диалоговые системы годот".
Вот например Dialogic из шапки https://godotengine.org/asset-library/asset/833 Там все описываемые тобой эффекты делаются. Да и в других тоже. Это база, которую реализуют все. Скрипты и анимации во время диалога.
>>1080852 >кто-то в это время делает игры Я бы тоже делал, если бы компьютер работал. Пока я искал оптимальный по цене/качеству/начинке миник, оптимальные уже раскупили. Теперь думаю влошить >100к в 64 GB RAM или это какая-то фигня получится.
>>1080929 У меня 32 гб, причем до февраля жил на 16 гб. Еле решился на этот апгрейд. Экономил каждую вкладку в хроме. К слову именно годот ничерта не сжирал у меня, правда я требовательного к железу ничего и не делал.
>>1080882 Не нужно сохраняться в любой момент. Обычно есть контрольные точки, во время которых может быть сохранение прогресса, а всё остальное будет просто проигрываться заново (анимации, звуки и т.п.).
Любой сценарий - это последовательность точек, что связываются друг с другом переходами. Точки могут нумероваться или иметь строковые ID. В коде можно использовать enum или StringName для удобства.
Простейший вариант: >var page: int = 0 >var bag: Dictionary >func step() -> void: >_ match page: >_ _ 0: print("hello") >_ _ 1: print("take this"); bag["sword"] = 1 >_ _ 2: print("good bye") >_ _ _: print("the end"); return >_ page += 1 >func _on_button_pressed() -> void: step() Будет достаточно сохранить "page" и "bag".
>>1080895 >оптимальное для тебя сейчас - взять готовый Если он хочет слепить на скорую руку какую-то игру - наверное, этот плагин поможет (не пробовал), но для "разобраться в логике и понимать, как это сделать" желательно написать велосипед (размять мозги). Не обязательно потом использовать этот велосипед, это наподобие тестовых заданий в школьной программе.
>>1080882 Тебе впринципе верно сказали, хочешь меньшей крови - бери готовое, хочешь пофаниться - велосипедируй. Я себе делал подобную хуйню для катсцен в игре, коротко структура была простая - сценарий + режиссер. Сценарий это описание дерева действий, любых, не только диалоговых, а сходить туда, сделать то так же, ну а режиссер это контроллер (проигрыватель) сценария на сцене. В целом простенько и в лоб. Разве что сценарии писал руками кодом, а не в редакторе ноды двигал, но это примерно тоже самое. И с диалогами для вн можно обойтись аналогично. Честно хз что тут еще удобнее может быть.
>>1080942 >>1080882 Блин, не ответил на вопрос то - режиссер умел сохранять собственный стейт и загружать его собственно, где именно он находится по сценарию, какое у него там внутри состояние любое накопилось - обычное дело. Все просто. Это же не ручные ифчики.
>>1080935 Да просто цены странные. Можно купить 32гб за 24тр одной плашкой, а можно купить 32гб за 52тр двумя плашками по 16гб... Чувствуется какой-то подвох, или магазин напутал с ценами и скоро пофиксит (жаль). Я хотел купить миник с 16гб, но их раскупили, а самая ближайшая модель имеет только 6 ядер вместо 8, но дешевле всего лишь на несколько тысяч. Разве ж это экономия, если получаешь на 3/4 за почти ту же цену?
Ааааа, блин, уже несколько лет периодически смотрел магазины компьютерной ценники и всё время моей реакцией было "тьфу, фигню какую-то продают", теперь ситуация ещё хуже и при этом дороже, а отсидеться на старом ПК вряд ли получится (не знаю, что случилось, максимум могу купить новый БП, но тогда придётся собирать полную свистяще-пердящую башню снова).
Как же себя ненавижу, что не купил ничего летом... О надвигающемся росте цен на RAM было известно приблизительно прошлой весной или в начале лета... Собирался подождать падения цен на топ миники, что стартовали в районе 175тр и теперь стоят по 230тр... Подождал. Теперь мне не на чём игру делать... Вся эта ситуация с чипами для ИИ вызывает такие мысли, от которых хочется поскорее сдохнуть, чтобы не видеть наступающий киперпанк/апокалипсис/деградацию человечества до 19-го века или ещё хуже...
>>1080951 Две плашки == 2 канала, думаю в этом дело. Но в первую очередь конечно дело в ебучих барыгах напродаванах. > ситуация с чипами для ИИ вызывает такие мысли, от которых хочется поскорее сдохнуть Ну да, дело то в одних только чипах. Менят вот сократили ради ии, всего в компании сократили больше 50% батраков на данный момент, не только айтишников, всех вообще. АИ насрал всем нам не только ценами на железки, но и невозможностью на них заработать. Да и ваще нахуй люди не нужны уже по ощущениям, не осталось для нас места и роли.
>>1080882 Добавлю, если не знал ещё: сохранения лучше всего реализовывать вручную, через TXT/JSON/INI/CFG или бинарные файлы, куда записываешь любую нужную конкретно твоей игре информацию, типа "ID страницы сценария", "название предмета в инвентаре" и т.п.
Использовать сохранение в TSCN/TRES для новичка кажется удобнее, но у них много подводных камней: трудности с обновлением (патчами) игровой логики (организация игровых сцен, объектов, компонентов), обновления версии движка (даже минорные могут переломать все такие сейвы); вероятность инъекции вредоносного кода в сохранении на компе игрока; избыточность информации, из-за чего сохранение потенциально дольше создаётся и может тормозить; трудности с отладкой, читкодами, моддингом и т.п.
Короче говоря, функция сохранения TSCN/TRES не предназначена для долгоживущих и сложных игр. Она имеется в движке в первую очередь для инструментов разработчика, типа @tool-скриптов в редакторе. Само использование этой фичи для игр получилось как бы случайно, и в документации не всегда "best practices" (кажется, туда уже давно добавили предупреждение).
>>1080908 Ну он придумал как интересно использовать в своей игре сгенерированные изображения. Представь себе ВНки в таком стиле, ходишь по красивому центру города, и разговариваешь с нпк, представь как легко сгенерировать любого персонажа в любой позе со всех сторон. Он еще находку сделал поставив перса на скейтборд чтобы не нужно было делать никакую анимацию вообще.
Конечно он стырил идею с дорогой из старых 8 битных игр. Но это наоборот прибавляет ламповости.
>>1080844 >Невозможно "прогнать челика", Шихопидорасы делают это каждый день. Заходят в треды и выплескивают туда свое раздражение, используя язык опущенных дебилов, сплошные "соевые, пажеты, пиндосы" и прочие подобранные в сральне словечки. Причем некоторые дурачки в треде подыгрывают таким дебилам считая их прикольными. Челы которые заняты не срачами а реально что-то делают, почувствуют спад мотивации и производительности, и выберут отстранится от треда. Как ты вообще пришел к идее что это невозможно?
>>1080981 >Он еще находку сделал поставив перса на скейтборд чтобы не нужно было делать никакую анимацию вообще Чел? Что бы катиться на скейте нужно ногой отталкиваться, там нету анимации для этого.
>>1080988 > почувствуют спад мотивации и производительности Если у тебя настолько все нестабильно, тебя разобьет что-то другое (в школе экзамены, снова Чадов бил только меня, сестра съела твои чипсы, грустный день, пойду скатаю катку - игровой запой на месяц).
>и выберут отстранится от треда Чаты это лютые хронофаги, это только на пользу, поверь. Даже в группе из 3-4 человек начинают страдать фигней вместо работы.
>>1080988 >выплескивают туда свое раздражение Ага... Получается, что тот анон сам себя из этого треда выгнал? Он же в каждом посте какую-то агрессию на пытающихся ему помочь выплёскивал, будто бы они пытаются ему навредить или оскорбить. Никто его не оскорблял ("шиз" и т.п. - не оскорбления), но он во всех почему-то врагов видит, постоянно за кем-то гоняется (параноик что ли?). Просто не умеет реагировать на разумную критику своих действий, решений в проекте.
Так что никто его не прогонял, он сам нагадил и ушёл.
>>1081007 Постишь что-то в интернете -> будь готовь получать от разных людей критику, советы, попытки помочь и т.п., адекватно реагируя даже на неадекватные ответы.
Не нравится читать комментарии -> сиди как сыч 5 лет, опубликуй уже готовую игру в стим и ни в коем случае не читай отзывы, а то вдруг там прокомментировали.
По-моему, сегодня это даже дети должны понимать...
>>1080992 >>1081002 Мой пост был не про выгнанных, а про уровни тестостерона и плохую модерацию, наверное... Нет, скорее всего, он про неуважение к труду и отсутствие сообщества. Еще подумал и решил что пост был про психическое здоровье и саботаж здравого смысла.
Остановился на последнем варианте. Будьте благоразумны и не саботируйте тред и анонов ищущих просвещения. Насильно мил не будешь, если анон отбрыкивается от ваших советов, скажите что вы не понимает чего он от вас хочет, пускай основательней разъяснит.
>>1081057 Блять, не удивлюсь если ты и есть бабкино квартирный анон с завышенным эгом, иначе я не понимаю почему ты продолжаешь семенить про его выгнали за то что он был слишком красив несправедливо осужденных забаненных
>>1081056 >>1081007 >>1081009 >>1081014 >>пытающихся ему помочь >А он просил помощи? Человек скорее всего просто выплескивал эмоции, без потребности в ответах. Когда ты целый день возился и перепробовал то, что даже анону не снилось и тебе кто-то говорит советы уровня "делай хорошо, плохо не делай" ты тоже можешь отбомбить.
Я не знаю прям весь контекст, я помню только он писал пасту, а анон на него кидался, хотя тот ничего не просил вообще (он тупо ныл).
>>1081057 У годота есть функционал гарантированных единичных глобальных состояний (пик). Зачем ты делаешь велосипед? При этом, ты нарушил главное правило синглтона, так же в годоте есть какая-то известная бага со статиками. И вообще никак не решен вопрос параллелизма (если он нужен, конечно. Но если он есть, ты где-то отстрелишь себе ногу плавающей ошибкой).
>>1081085 >выглядит круче Только для других инди. Для обычного мимоигрока, если ты не разраб кенши - такое позиционирование сразу вешает на твой продукт подозрение в чрезвычайном качестве исполнения игры.
>>1081087 Если игрок настолько ебанутый, что >ожидает соответствующий корпам масштаб/качество от игры за 5-10$, то тут уже никакое позиционирование не поможет, либо у игрока нет глаз и он не сможет поиграть в нашу игру и все равное ее рефанднет, или у него настолько нет мозгов, что он не заметит ничего подозрительного.
>>1081087 Игра это как еда, она надоест как только ты наешься (даже может отвращение испытаешь). Но согласились, если ты ешь какую-то еду в ресторане, есть какой-то вайб, чем если ты ешь в подъезде шаурму. Важна атмосфера профессионализма, которая даже повлияет на вкус.
Еще индюшатина часто низкокачественная халтура на 2 часа и всем хочется от этого отстраниться.
>>1081079 >функционал гарантированных единичных глобальных состояний Нейронка, ты ли это пишешь? А тот анон изобрел фабрику с синглтоном внутри, имеет право.
>>1081091 Лучше шавуху в подъезде жрать, чем ресторанное оверпрайснутое хрючево от выпускников пту (в лучшем случае), считающих себя велики поварами уровня гордона рамзи. Вообще шавуха лучшая еда на земле, все остальные дохуя блюда лишь попытка приблизиться к божественному идеалу, ноудискас.
>>1081099 >Анон сказал про фабрику с синглтоном внутри, Ты чудо малолетнее сначала объясни что такое "фабрику с синглтоном внутри". Это фабрика которая является синглтоном? или Это фабрика которая производит синглтоны?
>движкосрачерская кривляется Где ты движкосрач увидал, шизик? Весеннее обострение?
>Штош, репортим дальше. Репортилка то выросла? Жалкий.
>>1081057 >в отличие от искоробочного решения мы можем создавать отдельные инстансы >>1081079 >гарантированных единичных глобальных состояний >нарушил главное правило синглтона >>1081082 >Отдельные инстансы синглтона Пипец, ну вы и ньюфаги. Вы документацию хотя бы открывали? К движку. В Godot/GDScript отсутствует возможность следовать паттерну "синглтон" из ООП, поскольку невозможно запретить создавать новые экземпляры классов. Точка. Встроенный механизм "autoloads" позволяет только загрузить ряд сцен одновременно с любой выбранной сценой (F5/F6) и, опционально, дать этой сцене уникальное имя.
Ещё раз: на GDScript невозможно создать реальный синглтон, и "autoload" - не синглтон. Но они работают подобно синглтонам и в Godot 3 по ошибке где-то назывались "синглтоном" (переименовали в Global), поэтому в этом треде мы срёмся о "синглтонах", подразумевая "autoload с галочкой Global". Только абсолютные ньюфаги могут запутаться в этом...
Почему лично я против "global autoload": 1. Совершенно дебильное меню, спрятанное в меню настроек проекта, которое выглядит совершенно оторванным от остального проекта. Если бы список автозагруженных сцен висел на видном месте, а не прятался непонятно где, проблем было бы меньше. 2. Уникальный идентификатор не позволяет легко и безболезненно поменять автозагруженную сцену. На начальных этапах развития проекта ты не знаешь наверняка, что будет нужно или не нужно в будущем, поэтому нужна максимальная гибкость. Этот кривой механизм заставляет мучиться при рефакторинге. 3. Любое глобально доступное состояние и метод, обладающий далеко идущими эффектами, легко превращает структуру проекта в загрученное месиво, называемое на сленге "спагетти-кодом": когда связи настолько длинные и перепутанные, словно спагетти. Проблемы из пунктов 1 и 2 усугубляют эту проблему.
Метод анона выше: >WeatherManager.singleton.get_wind() Не решает ни одной из перечисленных проблем: 1. Тут нет меню - сцена по-прежнему где-то спрятана. 2. По-прежнему нельзя легко заменить весь этот код. 3. Та же проблема спагетти от глобального доступа.
Реальное решение в рамках Godot 4: >@export var weather_manager: WeatherManager 1. Привычное меню: дерево сцены + инспектор нод. 2. Легко заменить одну ноду на другую, или внести изменения в этот скрипт, которому нужна эта нода. 3. Изменения локализованы в конкретной сцене, включающей в себя WeatherManager и скрипт, что запрашивает WeatherManager, т.е. связи отсюда не вылезают куда-то далеко-далеко, а даже если они вылезают, то делают это явным образом (передаём конкретную ноду по конкретному, единственному в локальной сцене пути, а не "отсюда - куда угодно").
Если вам нужно перекинуть одну ноду через кучу безразличных к ней нод-ступенек, задумайтесь: а действительно ли вам нужно это делать, и нужны ли "ступеньки" вообще? Если всё-таки нужно, то следует проверить, а нужен ли глубоко закопанной ноде этот внешний объект целиком, или достаточно просто перекинуть какую-то информацию/команду? Чтобы взаимосвязь не была слишком тесной и проект не сворачивался клубком из-за лишних взаимосвязей.
Нужно просто держать в уме: создать связь между несколькими нодами чрезвычайно просто, но чем взаимосвязей между нодами больше, тем сложнее распутывать проект для поиска бага или новых фич. Глобальный доступ (т.е. "синглтон") соблазнителен упрощением создания связей, но в долгосрочной перспективе это ведёт к росту лишних связей и это неизбежно усложняет проект выше желаемого.
>>1081210 Ты создаешь проблему на ровном месте и вводишь в заблуждение. Если дока говорит что надо подключать синглтон таким образом - делай именно так. Люди игры делают и нафиг этот ОКР не нужен.
>>1081085 >ВериФанГейм Энтертейнмент Компани Как минимум на западе (читал в обсуждениях этого вопроса где-то на реддите) есть нюанс: если что-то публикуешь как физлицо - несёшь ответственность собственной шкурой, а если как юрлицо - то можно оформить ликвидацию юрлица, не жертвуя своим собственным имуществом. Не знаю, как это у нас.
Также название компании может быть куда более запоминающимся, чем личное имя. Также у кого-то, вероятно, есть планы нанять сотрудников, тогда не придётся менять запомненное игроками название.
>>1081086 >вешает на твой продукт подозрение Сначала игрок смотрит на скриншоты/трейлер. Если игроку понравились скриншоты/трейлер, но у него "подозрение из-за имени Иван Иванович Иванов в разработчиках", то это какой-то шиз, на него пофиг.
>>1081087 >ожидает соответствующий корпам масштаб Лол. Скриншоты/трейлер видно в первую очередь, игру не выбирают по самоназванию разработчика.
Но вот что раздражает многих - это когда один разраб обращается к игрокам от лица коллектива - "we". Это вызывает диссонанс, когда ты уже знаешь, что разраб одиночка и никого не нанимал, особенно если он сам признаётся и продолжает говорить о себе как "мы".
>>1081091 >еда, она надоест как только ты наешься Сахар можно есть ложками всю жизнь...
>атмосфера профессионализма Профессионалы сейчас делают ширпотреб (на сленге зумеров - "слоп"), поэтому я сомневаюсь, что кому-то интересен ложный ("фейковый") профессионализм... Наоборот, больше предпочитают сделанное руками непрофессионалов, потому что это необычно и круто.
Шаурма действительно лучше ресторанной еды. Если, конечно, сделана из качественных ингредиентов и с соблюдением санитарных норм... Но и в "ресторане" в тарелку насрать могут, так что риски примерно равны.
>>1081216 >продолжает говорить о себе как "мы". Боевые вертолеты же. Меня самого так заебал этот вопрос с местоимением из каждой щели, что с этого дня я буду ставить "они". В стиме, возможно, это даже плюсики в карму сразу со стороны соевых ублюдков.
>>1081230 >Боевые вертолеты Нет. Есть plurality, но это что-то вроде тульповодов.
Вот пример: чувак раньше нанимал сотрудников, организовал "студию" и брал деньги на патреоне, а в последствии всё как-то стухло и заглохло, но иногда выходит на связь и говорит типа "we're working", ему отвечают "кто вы-то, кто вы, ты один тут сидишь"...
>>1081319 Я иногда перед сном начинаю прогонять всякие идеи в голове, как что можно реализовать, и иногда в такие моменты приходит гениальная идея, я сразу вскакиваю и бегу к компьютеру и ихихихи начинаю создавать ноды ахахах писать код структуру и так до 9 утра пока не отрубаюсь
>>1081321 Ты это я. Как с этой залупой бороться? Я хочу спать блядь а не писать очередной говнокод, который один хуй окажется хуже того, на который я его перепишу следующей ночью.
>>1081326 >Архитектура движка? Моя архитектура на сисярпе и ее интеграция в редакторе >С ней легко наломать дров. Таки да, никому не советую влазить в эту хуйню
>>1081319 Врачи ругаются когда я рисуют на стенах. Это, вероятно, тоже какая-то завуалированная форма прокрастинация.
Какой здоровый процесс любого проекта: - Прототипирование тяп-ляп. Буквально делаешь говнокод - чтобы просто работало (и было с чем работать вообще). - Немного существуешь в этом говнокоде - что-то добавляя удаляя (это норма). - После всех "за и против" фиксация идеи (или дроп). - Рефакторинг существующего кода, вместо фантазирование архитектур. - Самое страшное - остальная разработка игры. - Доработка (закрываем ТОДОшки). - Оптимизация (да, только сейчас).
>>1081418 Зависит от того что именно ты делаешь, разве нет? ИМХО, разработчик как шахматист, он может визуализировать как будет проходить разработка его игры, и планировать заранее разные моменты. Но если это хобби, то фактически твоя игра является экспериментом. Ты в первую очередь побежишь дрочить главную идею твоей игры, чтобы понять что из нее работает на практике и как из этого выжать нужный тебе драйв. То есть ты даже не будешь ничего касаться, тебе достаточно будет несколько геометрических фигур для экспериментов, потому что твой мозг будет рендерить все остальное. Убедившись что именно ты имеешь на руках, ты сможешь уже нарастить мясо, - всю остальную игру, на уже работающем костяке. А если хуево работает, то ты и времени лишнего не потратил. Это самый лучший способ, найти лучшую идею и заставить ее работать.
Но если у тебя вообще нет ни одной идеи, то ты будешь пихать туда ассеты и пытаться связать это воедино, создавая определенную атмосферу. В конце концов это всеравно сводится к тому найдешь ты драйвовую фишку которая оправдывает существование твоей игры. Ведь пользователь пришел за дофамином, а дофамин он будет работать если геймплей убедительный, и затрагивает какую-то базовую склонность мозга, или балансирует между несколькими такими склонностями.
>>1081359 Наконец-то полезные нововведения, надо тестить.
>>1081468 Т.е. делаешь питательные запасы для своих детей?
>>1081390 >писать детальные доки прямо в проекте >получается намного больше, чем кода В долгосрочной перспективе это лишние траты и риск потерять синхронность между кодом и доками: легко внести правки в код, но нужно ещё перечитать и при необходимости исправить его описание. Помещение описаний прям в комменты - лучше, чем когда они существуют независимо, но хуже, чем когда твой код самодокументируемый. Т.е. стремись к тому, чтобы максимизировать читаемость кода и, следовательно, минимизировать количество и объём комментариев, сопровождающих твой код (в любом месте и любой форме). Лучший код ясен программисту без описания на естественном языке (отсюда практическая бессмысленность тривиального вайб-кодинга: поскольку программист думает в голове языком программирования, ему куда проще сразу написать код, чем описать его на родном естественном языке).
>>1081418 >делаешь говнокод - чтобы просто работало Некоторые идеи даже говнокодом требуют месяцы непрерывной работы, а на практике будут не нужны. Поэтому препродакшен и планирование важны, но только если ты не закапываешься в нереализуемые фантазии, не имея практического опыта.
Кроме того, некоторые прототипы можно сделать совершенно без компьютера, просто на бумаге, без написания какого-либо кода. Особенно в 2D играх.
>Рефакторинг существующего кода Зачастую проще с нуля переписать, чем рефакторить. Рефакторинг - это переработка системы на месте с сохранением поведения и внешних интерфейсов, но прототип на говнокоде не факт что работает так, как необходимо будет работать в реальной игре. Цель прототипирования - найти ответы на вопросы, а не разработать какой-то кусок кода под рефакторинг.
>остальная разработка игры Без плана рискуешь нарезать круги на месте и не продвинуться к релизу, зато наделать кучу лишнего. Собственно, как понять, что "остальное", а что - нет? Наращивать что угодно можно до бесконечности.
>>1081435 >дрочить главную идею твоей игры >найдешь ты драйвовую фишку Для этого прототипы и делаются - это поиск ответов на вопросы, касающиеся в т.ч. фана/фишки игры.
Анончики, что почитать/посмотреть/послушать умного по левел-дизайну 2d платформеров, чем там руководствуются самые крутые дизайнеры в этих жанрах? А то делаю по наитию, а хотелось как то более осознано что ли, вообще в целом по находил кое что ну оно больше применимо к 3D, а хотелось бы именно в контексте 2D
>>1081477 >Лучший код ясен программисту без описания на естественном языке Ноуп, ты видимо не возвращался к проекту с большой кодовой базой. Да, ты поймешь, потому что код неплох или даже хорош, но с комментариями и доками это произойдет в 10 раз быстрее. И да, я пишу комменты во всех интересных местах, а доки конечно же генерит нейронка, потому и получается "больше, чем кода". нейронка дотошная. Я че псих нахуй сам это писать, мерзость. Решил делать это после травмы одной. Как-то раз я забросил на пару лет проект с 400к строк, и когда я в него вернулся - мне было просто больно чуть ли не физически от такого объема, прочитать вместо этого архитектурную выжимку, + выжимку сервисов и компонетов и уже потом углубляться было бы безболезненным стартом. Собственно напоминает почти каждую новую работу. Пишу не только техническую докуменатцию, но и диздоки у меня в идеальном состоянии поддерживает нейронка, никакие мысли не пропадают где-то там, все фиксируется, все обдумывается, а калосеть старательно оформляет по красоте. Вообще это важнее.
>>1081484 >не возвращался Возвращался. >это произойдет в 10 раз быстрее Ну, если ты английский только со словарём... Хотя на GDSctipt не запрещено писать на кириллице, так что возможно называть всё на русском языке, лол. >доки конечно же генерит нейронка И ты их, конечно же, потом не читаешь? >писать = мерзость Ой, всё. Ты ещё скажи, что одним пальцем буквы на клавиатуре нажимаешь и не можешь печатать, если клавиатура без подсветки, а в комнате темно, лол. >проект с 400к строк Вайбкодер, это тред GDScript-господ. >прочитать вместо этого архитектурную выжимку В нормальном ООП проекте вся эта "архитектурная выжимка" находится, по сути, в одном файлике, а не размазана по сотням тысяч строк. Это только тупая синглтоновая лапша превращает проект в клубок. >в идеальном состоянии поддерживает нейронка По тебе заметно, что мозг начал атрофироваться. >калосеть А за такие слова тебе нужно пальцы переломать.
>>1081479 >оно больше применимо к 3D Разница только в возможности смотреть вдаль.
Я думаю, никакого особого секрета в дизайне для платформеров нет. База одна и та же: чередуешь напряжённые куски с расслабленными так, чтобы создавались эмоциональные горки. То есть игроку необходимо отдыхать от каких-либо эмоций, иначе геймплей станет слишком пресным и наскучит или перенапряжёт до выгорания или усталости игрока.
Также важно гарантировать читаемость графики и понятность механик, и избегать перегрузки из-за декоративных (не влияющих ни на что) элементов: подсвеченные платформы, фон тусклее персонажей, отсутствие избыточных деталей "внутри стен" и т.п.
Думаю, лучше всего - играть в похожие на твою игры.
>>1081477 > прототипы можно сделать совершенно без компьютера, просто на бумаге, без написания какого-либо кода Прототип это быстро написанный кусок игры, а не маняфантазия на туалетной бумаге. Дальше фантазера не читал.
>>1080508 (OP) Товарищи прокрастинаторы, подскажите новую причину не делать игры. К моему ужасу, Godot работает даже на 2 GB DDR2 @ 666 MHz и совсем не тормозит. В причинах разбираться не стал - сразу закрыл Godot, чтобы случайно не начать делать игру. Но ярлык на рабочем столе так и манит. Что делать? Только не говорите "uninstall Godot" - пытался, он снова устанавливается...
>>1080508 (OP) Привет! Как в 4й вебм оппоста сделали перемещение по лестнице? Готовый ассет или сами делали? Я пробовал такое же перемещение по лестнице сделать в Юнити, но так и не получилось - анимация фиксированная, а прилипание части тела к объекту работает криво.
>>1081566 Там на фоне браузер с десятками вкладок и торрент-клиент (на основе браузера) с аниме, а сама игра требует ещё меньше, чем редактор Godot. Блендер я тоже протестировал и на него недостаток памяти вообще не повлиял. Похоже, единственная реальная проблема - это большие игры, которым нужно сразу много RAM для чего-то (типа GTA IV, V). Если ты не делаешь свою GTA выше GTA SA (ей хватит и 1 GB оперативки, я проверял), то 2 GB вполне должно хватать (с файлом подкачки на SSD).
>>1081560 >умрешь, не сделав ничего интересного Но ведь прокрастинация - это самое интересное. Можно столько всего интересного сделать, пока откладываешь скучную, сложную, непонятную рутину. Иначе зачем прокрастинировать?
>>1081564 Видео скачано ОПом с Reddit - автора видео в этом треде не будет. Оригинальный пост: https://reddit.com/r/godot/comments/1rx5j3n/ >как сделали перемещение по лестнице Скорее всего, это процедурная анимация: персонаж фиксируется в определённой позе в начале лестницы, у него включаются определённые физические кости (реагируют на контакт и пытаются отклониться в сторону), и дальше он просто сдвигается по прямой в коде. Вот отсюда начинай изучать, если хочешь похожую физическую реакцию головы на ступеньки: https://docs.godotengine.org/en/stable/classes/class_physicalbone3d.html Если же нужна только простая анимация спуска по лестнице, то эти кости тебе не нужны. Для обычного спуска/подъёма по лестнице достаточно обычных анимаций, даже без инверсной кинематики - нужно только зафиксировать пропорции всех лестниц в твоей игре (это норма, все игры строятся вокруг каких-то фиксированных стандартов - длина прыжка, скорость бега...). Добавляешь модель своей лестницы в сцену с персонажем, анимируешь один сдвиг вверх/вниз, экспортируешь (без лестницы), в редакторе игры вызываешь эту анимацию в нужный момент. Если уже делал свои собственные анимации к 3D персонажу в проекте, то разберёшься с этим без проблем. Если тебе обязателен реализм, то ещё нужны промежуточные анимации - "взялся за лестницу" и "отпустил лестницу" - отдельно для верха и низа лестницы. Начало и конец лестницы тоже должны быть стандартизированы в дизайне уровней (требуемое свободное место вокруг).
Если ты хочешь что-то необычное, вроде изогнутой или колышащейся на ветру верёвочной лестницы, тогда изучай, как использовать эту ноду (ей можно менять параметры динамически): https://docs.godotengine.org/en/stable/classes/class_path3d.html Для генерации лестницы придётся повозиться, но спуск/подъём будет как с обычной лестницей.
>>1081575 Это ностальгия по временам, когда деревья были большими, трава зелёной, пиво было вкусное и бутылки по 0,5, хуй стоял, деньги были, позади Солнце, впереди попутный ветер, и вся жизнь была ещё впереди. 🌝
>>1081533 >Ну почему, зачем... А почему нет? Запрещаешь?
>>1081574 >Чтобы делать всратый хорор А у тебя одни только хорроры на уме...
>>1081576 >ностальгия Сама тема "симулятор оболочки OS" довольно популярна среди инди, поскольку это создаёт ощущение "я сделал операционку" без возни с реальными внутренностями операционки. Дофамин так и прёт от взгляда на все эти кнопки и окошки. А в Godot уже есть и кнопки, и окошки, что же делать? Делать темы, которые напоминают известные OS. Какие OS? Не современные же повторять, у современных и стиля-то больше нет никакого. Вот и повторяют старые. Ну а кому-то просто визуально больше нравится такое, даже если пик популярности они не застали. Так что это не обязательно ностальгия, автор ассета вполне может быть ещё школьником (молодец, не теряет времени зря, развивается). Не нужно списывать всё на "ностальгию", реально ведущихся на "ностальгию" скорее всего мизерное количество от всей потенциальной аудитории.
>>1081579 >А почему нет? Запрещаешь? Это удивление, что это почти все, что там есть. >Не современные же повторять, у современных и стиля-то больше нет никакого Кому как. Мне винда 95-98 крпоме как блевотиной не кажется. А они мои первые (тогда кстати не казались плохими, или современност ьменя избаловала, или эти 95-98 вменяемо сочетают только с элт гробом). Ну и если симулятор ос вспоминать, то приходит на ум грейхак, он похож на современные свистопердящие ос. Которые без стиля еще.
https://github.com/KnifeXRage/Godot-Secure Что думаете? Так то идея хорошая, по производительности бить не должно: то же самое шифрование, что и в движке, только ключи разные (даже с одним ключом на каждый зашифрованный ассет - по операции расшифровки) и с маской, которая прячется внутри сурс кода. Если кто-нибудь захочет залезть, понадобится как минимум хекс редактор и желание повозиться
Вот только не надо вкидывать, что "движок бесплатный, значит и игра должна распахнуть двери датамайнерам", этическая сторона не сюда
>>1081625 По сути это и есть шифрование дефолтными инструментами Годота. Ключ прячится в сурс коде, в данной гитхабе репе слишком очевидно где, но никто не мешает по аналогии запрятать в любой части движка
>>1081623 >Что думаете? Readme выглядит как навайбкоженный нейрослоп, следовательно, и код тоже навайбкожен, ибо аффтар поленился даже на англюсике написать о проекте.
>этическая сторона не сюда Планируешь майнить крипту на ПК игрока? Все вы одинаковые: сначала по мелочи воруете ассеты с крупных площадок, представляя себя современным Робин Гудом, потом на криптомайнеры переходите, оправдываясь "игроку всё равно не нужен настолько мощный ПК", потом начинаете уже пароли от всяких кошельков воровать, и спрашиваете тут "а как мне спрятать от игрока мои ассеты?", умалчивая, что вы скрываетесь не от игрока, а от антивируса игрока. А потом будете бегать и жаловаться, что на VirusTotal новейший билд вашей игры "ложно" триггерит 99%.
>>1081628 >Планируешь майнить крипту на ПК игрока? Все вы одинаковые Перетостил. Не буду тебя кормить. Будь у тебя на руках сколь-нибудь близкий к завершению проект, над которыми ты работал годами, ты бы понял из чего происходят подобные посты
>>1081629 >Перетостил Это что-то из сленга хакеров, типа "не пали тему"?
>сколь-нибудь близкий к завершению проект, над которыми ты работал годами, ты бы понял из чего происходят подобные посты Я бы трясся не над релизом билда, а над раскруткой. Сколько человек знают о твоей игре? Сколько ждут публикации? Сколько планируют поиграть как можно раньше? Вот это тебя должно волновать. Да, игроки выложат игру на торренты, вытащат ассеты и будут обмазываться модификациями. Но это значит - твой проект успешно достиг аудитории. Если у тебя сейчас отсутствуют потенциальные игроки, то твоя игра не окажется "взломанной", но и играть в неё не будут.
>>1081650 > Это что-то из сленга хакеров, типа Нет, это классический интернет сленг, восходящий к советской литературе, в которой самая интересная шутка именовалась тонкой, в интернет это пошло как оценка качества троллинга на форумах. Чем тоньше - чем качественней. В связи с этой шкалой возникли термины, толстота, тонкота, перетолстил и т.п.
>>1081631 Самая страшная беда декомпиляции годота, что очень быстро появятся сборки-модов, которые полностью отвязаны от твоей игры.
То есть, чтобы накатить моды римворлда, тебе еще нужно купить римволд и длс. А с годотом будут сборки настолько глубокие, что твоя игра будет не нужна, а нужен будет (точнее будет проще) именно васян-пак с сайта/торрентов.
Нечто похожее произошло и со скайримом, у фанатов сейчас есть сборки под определенную версию, где проще скачать уже готовую версию игры (но это все еще скайрим, а в случае годота это уже другая совершено игра будет).
Вот такой вот опенсорс поневоле. Если твоя игра выстрелит, она быстро станет не твоей (никакой потребности покупать оригинал будет не нужно).
>>1081707 > А с годотом будут сборки настолько глубокие, что твоя игра будет не нужна, а нужен будет (точнее будет проще) именно васян-пак с сайта/торрентов. Проще свою игру тогда сделать, какой профит использовать чужой обфусцированный говнокод?
>>1081708 >Как тогда авторы StS2 охуилиарды нагребли? Маркетинг/трафик. первый раз в /gd? Игра возможно не реиграбельная, т.е. моды бессмыслены по природе.
>>1081709 >Проще свою игру тогда сделать, какой профит использовать чужой обфусцированный говнокод? Так код декомпилят и соберут уже посвоему и нормально. В общем, я свою мысль сказал. Если делаете реиграбельную игру со ставкой на моды, есть опасность что моды уплывут вместе с ядром игры.
>>1081710 У скайрима хороший sdk, делать подобные конверсии без поддержки от разрабов боль. > Так код декомпилят и соберут уже посвоему и нормально. Он продолжит оставаться обфусцированным. Даже если собирать что-то из чужого читаемого кода это всеравно маняфантазии, никто так не делает.
>>1081707 >римворлда, тебе еще нужно купить римволд и длс Скачал римворлд с рутрекера. Блеванул. Удолил...
>потребности покупать оригинал будет не нужно Действуй на упреждение: релизь игру бесплатно, а к бесплатной игре - символические donation DLC, что совершенно не обязательны, но спонсируют игру - дальнейшую разработку/поддержку с твоей стороны.
>нужен будет (точнее будет проще) именно васян-пак Такое случается только когда разработчики - кабаны тупорылые, которым важно только деньги грести, на игры они смотрят лишь как на расходный материал.
Да и то, игра должна стать суперпопулярной, где-то несколько десятков миллионов активных игроков. В противном случае ты не дождёшься никаких модов. Исключения бывают, но крайне редко (узкие ниши).
>>1081711 >а чё эти васяны будут делать когда сюжетные длс пойдут? Если брать в пример римволд, то качество длс на порядок хуже модов (они без преувеличения портят игру). Автор на полном серьезе тырит идеи модов, но умудряется сделать хуже (это или отдельный талант, или просто откровенная халтура). И я не утрирую, там есть просто вещи которые не тестировали (на отвали добавили).
>>1081730 >Что тут, опять фаза переживания "а вот мою игру спиздят"? Не спиздят. У тебя и игры-тонет. А лучше сделать и понять что могут фулл-ревёрснуть? Одно дело если у тебя проходняк, а другое если цель реиграбельность и модинг.
>>1081735 >могут фулл-ревёрснуть Предлагаешь ничего не делать из-за этого?
>другое если цель реиграбельность и модинг И? Для модинга желательны открытые исходники.
Minecraft стал популярным в основном из-за Java, что относительно легко декомпилируется из байт-кода и пересобирается обратно. Если бы Нотч трясся из-за декомпиляции и огораживал свою игру ото всех модификаций, тогда миллиарды заработал бы не он, а какой-нибудь клон, более открытый для модов.
Чаще всего майнкрафт пиратят, но сильно ли он из-за пиратства потерял? Скорее наоборот: нищие, жадные детишки могут попробовать бесплатную дозу где-то в полулегальном игровом клубе, а потом обсудить это с друзьями, и те тоже заинтересуются, но не будут столь жадными, а потом пригласят на легальный сервер, а пропускает туда только с официального аккаунта... Смекаешь? Пиратство организуется разработчиками.
Денувы всякие созданы специально, чтоб их ломать, поскольку каждый такой взлом повышает ААА-слопу популярность. Узнал бы ты об игре, если б пираты не хвастались о том, как её трудно было сломать? То-то. Однако, пираты не работают бесплатно. Если ты в индюшачьем слопе накрутишь кучу преград, на чьё баблишко они ломать будут? ААА студии делают им весомый подгон через донат, а они делают взлом и повышают популярность игры. У тебя же денег нет.
Так что не облизывайся на денувы и делай как Нотч.
>>1081749 Для плагинов ты высовываешь нужное АПИ и люди с этим работают с кем я тут сижу, забейте. Важно понимать о подводных инструмента, а не быть фанбоем
>>1081752 Плагины крайне ограничены по сравнению с модами. А если ты хочешь закрытости - надо предоставлять полностью закрытый редактор уровней и всего остального.
Я вот вообще не понял: >>1081752 >Для плагинов >>1081753 >Плагины крайне ограничены >>1081785 >предложил систему плагинов Что такое "плагины" по-вашему? @tool-скрипты в папке аддонов? DLL-ки в папке с билдом игры? PCK/ZIP-дополнения к игре? Или что?..
>>1081749 >Моддинг и закрытость - взаимоисключающие требования Кхе-кхе-кенши хотя там моддинг такой... и самая непобедимая обфускация - "у разраба руки из жопы"
Начались блин старые песни о главном. Если на твою игру делают модпаки - значит ты уже миллионер. А если в твою игру не играют, то и париться о защите не нужно.</thread>
>>1081793 Скорее речь о том, чот ее просто спиздят, без усилий даже, просто ктрлс-ктрлв, и похуй она хороша или плохая, она больше не твоя в любом случае. Ведь игры на годоте так же открыты, как ебучий публичный репозиторий на гитхабе. Сама эта возможность - ужасает. Давай так, если тебе похуй - давай ссылку на репозиторий своей игры, которую сейчас делаешь, публичную, тебе же полностью насрать, верно?
>>1081794 >Скорее речь о том, чот ее просто спиздят Чел от того что игру не спиздят у тебя продаж больше не станет, это так не работает. Тот кто не собирался платить в любое случае не купит, а так если бы он поиграл в пиратку и ему бы понравилось то он мог бы рассказать другим какую хорошую игру он прошел и тут уже сарафанное радио и инфа об игре дошла бы до тех кто уже тратиться на покупку игр. Так что выгодней слить самому свою игру на торенты.
>>1081796 Не игру, а все исходники. Игра то понятн осливается после первого же скачивания. Я жду от тебя ссылку на открытой реп твоей игры, или хотя бы на торрент с ней для начала, особенно если она не бесплатная в стиме. Если она бесплатная и донатная, то предлагаю выложить на торренты сборку с читами на донат. А то как-то твои слова преисполненные пока что не подтверждены такими же действиями.
>>1081793 >Если на твою игру делают модпаки - значит ты уже миллионер. Одно дело когда у тебя есть ядро игры и к нему в стиме делают моды. И чем больше модов, тем проще купить оригинал игры, чтобы не париться. Тот же римворлд для которого 100модов это просто улучшение геймплея (качать ручками через левые сайты - сума сойдешь). Другое дело когда все это идет мимо тебя.
Ты (условно) должен был заработать миллион (заслужил), но заработал 100К потому стали появляться удобные модпаки (уже не к твоей игре).
Что касается джавы и вытраханого майнкрафта, реверс байткода, не совсем тоже что полностью готовая игра годота, с нодами и прочим.
>>1081794 >она больше не твоя в любом случае Читай "ГК РФ Глава 70. АВТОРСКОЕ ПРАВО". Цитаты в тему: >ГК РФ Статья 1261. Программы для ЭВМ >Авторские права на все виды программ для ЭВМ (в том числе на операционные системы и программные комплексы), которые могут быть выражены на любом языке и в любой форме, включая исходный текст и объектный код, охраняются так же, как авторские права на произведения литературы. Программой для ЭВМ является представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения. >ГК РФ Статья 1280. Право пользователя программы для ЭВМ и базы данных >2. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения изучать, исследовать или испытывать функционирование такой программы в целях определения идей и принципов, лежащих в основе любого элемента программы для ЭВМ, путем осуществления действий, предусмотренных подпунктом 1 пункта 1 настоящей статьи. >3. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий: [...] >3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ. Вкратце, правомерный пользователь игры имеет право: - изучать игру вдоль и поперёк для понимания идей и принципов её работы; - создавать модификации игры и декомпилировать игру, чтобы встроить эти модификации; - передавать полученную информацию иным лицам, если это нужно для работы его модификаций. Но не имеет права создавать с помощью этой информации игры, существенно похожие на оригинал.
>>1081801 >должен был заработать миллион (заслужил), но... Если ты мог заработать миллион, то можешь вытрясти с нарушителя два миллиона. >не совсем тоже что полностью готовая игра годота, с нодами и прочим. Форма твоей программы не имеет значения - она всё равно защищена законом.
>>1081794 >спиздят Зайди на рутрекер и полистай раздел с играми. Видишь там мелкие индюшки без игорьков?
>>1081801 >майнкрафта, реверс байткода Ну тут два нюанса: 1. Даже с обфускацией игра пиратилась не просто легко. Полная версия скачивается прямо с серверов разработчиков без всяких проверок, а дальше лаунчер просто наёбывает систему аутентификации, причём довольно примитивным способом. То есть, даже торрент не нужен. И это не помешало игре стать самой продаваемой в истории. 2. Некоторое время назад Моджанг отказались от обфускации. Потому что она лишь вставляла палки в колёса мододелам. А игра, держащаяся на сообществе, должна быть повёрнута лицом к этому сообществу.
>Ты (условно) должен был заработать миллион (заслужил), но заработал 100К потому стали появляться удобные модпаки (уже не к твоей игре). Так не бывает. Сначала игра зарабатывает стотыщ, потом на неё появляются первые простенькие моды. Сначала игра зарабатывает миллион, потом на неё модов становится достаточно, чтобы делать модпаки. Мододелов не привлекает говно со дна стима, в которое никто не играет.
>>1081845 Самой возможности спиздить полный сурс быть не должно, если этого не задумано добрым разрабом. Ты решаешь, как легко должно быть игру спиздить, а не смиряешься с фактом, что у нее все кишки наружу. Это проблема, которую нужно решать. Одна из причин, почему годот фактически не интересен большим дядям, а только индюкам. Большим дядям интересны всякие денувы, любой ценой. Почему же это они так, если "игру все равно спиздят, ты че лох, лол"? Идика в жопу, если это оправдываешь, вообще под любыми предлогами. Алсо, причем тут моды? Смена темы? Нет уж, петушок, не передергивай.
>>1081845 >на неё появляются первые простенькие моды Опять одно и тоже, вообще не читаете. Отличие реальных игр с модами, что у них есть привязка к игре/редактору. Это им на пользу (Тодди до сих пор скайрим за счет этого продает). У тебя же фулл исходники, по началу будут моды, а потом зачем? Ты можешь сразу фулл скопипастить игру со своими хотелками. И вот тут уже деньги перестанут течь тебе в карман.
>>1081846 Отвечать должен кто производит "плохое" и кто хранит "плохое".
>>1081851 >кто хранит "плохое". Предвижу сразу что трекер запрещенный файл не хранит. Но он как сервис предоставляет доступ к этому файлу и хранит информацию о доступе.
>>1081851 >У тебя же фулл исходники Бро... Там помимо говноскриптов игры ещё и исходники ДВИЖКА полностью доступны. Их ты как обфусцировать предлагаешь? Если васян делает тотал конвершон (полностью заменяет все модели, текстуры, анимации, звуки, скрипты) на скурим, это всё ещё скурим, потому что движок старый. Если васян делает тотал конвершон на игру на годоте, это новая игра на годоте.
Ещё и "больших дядь" сюда приплёл зачем-то. БД вообще не интересуют игры. И даже цифры продаж не очень сильно. Осторожно, изложенное ниже может быть опасно для гуманитарного мозга. <matan> Есть S - сферические в вакууме продажи, если бы не существовало пиратства и денувы (здесь и далее это слово используется как нарицательное для всех видов защиты от копирования); Есть P и D - коэффициенты от денувы и от пиратства (если игра защищена денувой и/или спирачена; в противном случае коэффициент = 1). Итоговые продажи T = S × P × D. Разница W = abs(T - S). Однако для БД важна не вот эта W. Для них важно, насколько изменится рыночная стоимость акций. Так вот, новость о том, что %игранейм% использвет денуву, повышает рыночную стоимость акций. И если это повышение больше, чем W, то бдядя будет использовать денуву. Нюанс, правда, в том, что никто не знает истинных значений P и D. Есть только общий консенсус, что они, скорее всего, довольно близки к единице. Но у нас нет второй вселенной, где бы можно было это экспериментально проверить. </matan> Вот почему цифры продаж не особо важны для БД.
>Алсо, причем тут моды? Мнестики прими. Вон же выше по треду нытьё: кококо соберут модпак и отвяжут от оригинала. Хотя такое отвязывание - это по сути пиратство. И продавать такое они всё равно не смогут.
>>1081864 >кококо соберут модпак и отвяжут от оригинала Симптом, один из многих, не болезнь. Мне неивзестно нахрена этот аргумент инвалидный был приведен. Сама болезнь ш-общительность билдов годота. Я, короче, не хочу упрощать жизнь никому - обфусцирую все до неузнаваемости, транслирую гд скрипт в шарпы или еще куда похуже, зашифрую кастомным форком годота и так далее. Насколько хватит фантазии. А вы как хотите короч, открытые вы мои. А я не люблю, когда у меня все видно. В любом случае не пойму почему у вас отсутсвия выбора делать игру открытой или не делать ничуть не хуже, чем его наличие. Какой-то бред блядь с самого начала в суждениях.
>>1081865 >Я, короче, не хочу упрощать жизнь никому - обфусцирую все до неузнаваемости Двачую. Делаю также, при этом знаю, что это никак не влияет на производительность. Делал замеры. Ассетфлипперы заебываться не станут, а если компетенция позволяет человек разбираться в этих спагетти - он скорее свое сделает. Вот так и отсекаются 99% воришек. Если нужна поддержка модов то всегда можно вынести API или еще как это реализовать >Какой-то бред блядь с самого начала в суждениях Тут классный тред и немало умных ребят, но почему-то на тему "делать ли игру устойчивой к взломам" ответ всегда один - "движок открытый, значит игра тоже пусть будет открытой". Имхо, серят этим те у кого своей игры нет. У меня на руках проект над которым я работаю уже 3 года. Я не хочу, чтобы его вскрыли первой репой из Гитхаба и не вижу в этом ничего постыдного
>>1081873 >говнокод кому то нужен и его все украдут. Мне он нужен. Ценность говнокода и в целом проделанной мною работы для игры - в моих вложенных усилиях, потраченном времени и тд. Не тебе и никому другому определять, должен я эту ценность счесть хуйней настолько, чтобы выыбросить в открытый доступ, как мусор. >>1081879 Лучше быть шизиком, чем лицемерной хуйней. Впрочем с такими спорить бесполезно, напоминаешь кое-кого из властей.
>>1081865 >обфусцирую все до неузнаваемости, транслирую гд скрипт в шарпы или еще куда похуже, зашифрую кастомным форком годота и так далее Сначала игру сделой и игорьков найди, а потом уже этой хуйнёй занимайся. Впрочем, по здравом размышлении - как минимум, ты получишь опыт, анально огораживая свою игорю от любопытных глаз. Никогда не знаешь, где опыт потом тебе пригодится.
>>1081849 >Ты решаешь... а не смиряешься... >Это проблема, которую нужно решать. Это проблема с твоей башкой, если ты вслепую взял игровой движок, не изучив подробности, а теперь тут рассказываешь, как тебе "плохо" из-за "проблемы".
Лично я выбрал Godot благодаря его открытости, и распространять игру хочу в максимально открытом, доступном игроку виде, а не прятать криптомайнер.
>годот фактически не интересен большим дядям Godot пока что не пользуется спросом, потому что у "больших дядь" очень много денег на покупку всяких лицензий, исходных кодов и премиумной поддержки, однако, человеческие ресурсы невозможно просто приобрести, если этих ресурсов тупо нет. То есть для большого дяди важнее 100500 мидлов на Unity, у кого имеется опыт работы и готовность работать за еду за счёт конкурентности, чем 3.5 джуниора на Godot.
Вот когда будет 100500 мидлов с опытом на Godot и желанием работать за еду, тогда и поговорим о том, насколько популярен или нет Godot у "больших дядь".
>>1081914 >сетевые решения В этом ИТТ треде все игорные сидят на говнокоде из синглтоновой лапши, поэтому мультиплеер для них недоступен по определению. Даже кнопку не смогут мультиплеерной сделать, представляешь? При этом трясутся от одной только мысли, что кто-то все их говносинглтоны возьмёт и скопирует в свою игру...
>>1081867 >У меня на руках проект над которым я работаю уже 3 года. Я не хочу, чтобы его вскрыли первой репой из Гитхаба и не вижу в этом ничего постыдного А почему, можешь объяснить? Какие эмоции ты сам испытываешь, когда представляешь, как выложишь исходники своей игры в открытый доступ?
Планирую выложить исходники игры в опенсурс, но исключительно когда буду сам доволен созданной архитектурой в коде. Мне стыдно будет показывать говнокод, который я пишу для прототипов или теста, поэтому гитом я вообще не пользуюсь. Лучше уж не публиковать игру никуда, чем кто-то увидит, какой я ничтожный говнокодеришка, и будет смеяться...
Но я против шифрования/обфускации игры. Я, хоть и способен разрабатывать игры, но я впервую очередь игрок, а не какой-то позорный кабан на подскоке. И я уважаю игры, которые, если и не имеют полностью открытых исходников, но позволяют себя открыть штатными средствами и извлечь хотя бы часть из вложенных ресурсов. Например, музыку. Если мне понравился саундтрек игры и я хочу его слушать, а возможности где-то скачать или приобрести его нет, возможно записать с аудиочипа прям по ходу игры - однако, намного удобнее просто достать OGG из ZIP. Поэтому игры с лёгким доступом всегда занимают особенное место в моей памяти, а вот шизоидные шифровальщики удаляются и с компа, и из памяти, поскольку от них даже саундтрека не остаётся, лол (несмотря на то, что я мог бы записать с аудиочипа).
>>1081914 Вместо стандартных нод типа MultiplayerSpawner они предлагают использовать ноды от них, с закрытым кодом и зашитые на их сервера (вероятно же платные), ну окей
>>1081920 >с закрытым кодом и зашитые на их сервера Спасибо за информацию, скипаем это говно.
>>1081938 Да, это синглтон, и недостаток очевиден - нельзя поддерживать подключение к нескольким серверам одновременно, что обычно происходит в любой ММО. Особенно современные "live service" игры используют множество серверов одновременно, и игра частично синглплеерная, частично мультиплеерная, там ты не можешь полагаться на такой синглтон-клиент.
Но когда говорят о "синглтонах в мультиплеере", речь ведётся о чём-то вроде Player. Как правило, типичное использование синглтоновой лапши в синглплеере - создание синглтона Player, который хранит всё своё состояние независимо от уровня/сцены/локации, но подобный подход не подходит для мультиплеера. А говнокодеры ИТТ рекомендуют синглтон Player...
>>1081944 >Спасибо за информацию, скипаем это говно. Ты сделал выводы по техе с одного лишь невнятного "ряяя" пятнадцатилетки? Серьезно? с кем я сижу
>FusionClient.connect_to_server По хорошему это херня должна быть фабрикой, которая отдает коннект, но мне лень проверять, поэтому вся твоя портянка с большой вероятностью просто бред.
>>1081949 > придётся игру делать. Тебе то откуда это знать? Ты с 10 лет ничего так и не сделал. Ты буквально детство просрал в пустоту. Родители думали ты вундеркинд, особенный, уже с 10 лет занимаешься умными компьютерными вещами, а на деле ты не золотая надежда родителей - а просто пук в лужу. Добро пожаловать во взрослый мир.
>Ага, ведь для проверки Для проверки мне нужна сигнатура метода, но просто вбив ее в поиск меня не кинуло на страничку с API, значит говнину надо конкретно искать и читать (а мне пофиг).
>>1081947 >Ты сделал выводы по техе с одного лишь невнятного "ряяя" пятнадцатилетки У тебя какая-то другая информация есть? Ряяя там нет вроде, после регистрации ты можешь скачать сдк (godot addon) со сбилженными бинарниками который требует ключ клиента, по сути это сервис для создания Лобби с разбивкой по регионам и пингу, поддерживающий чат и войс, естественно это не может быть нигде кроме их серверов, нахуй ты высрался короче сам не проверив
>>1081954 Внезапно двачую этого. Время невозможно проебать. Потому что всё доступное тебе время - это один миг, тот самый миг, во время которого ты читаешь этот пост. Ты прочёл пост, и это стало прошлым. Всё прошлое сконцентрировано в ещё один миг, который прошёл. А будущего вовсе ещё не произошло.
>>1081961 >Кто видел настоящее, тот видел всё, что было в вечности и что будет в будущем. От этого не убежать и не спрятаться. Как бы ты не завуалировал реальность, как бы ты не эскейпил проблему, время все равно идет.
>>1081968 Ну вот смотри, я в шарпотреде /пр/ обсуждал новую темку вс-коде, что она теперь красная как в годоте, и случайно спалил свой код, где я втупую индусом реализовал ICommand и навелосипедил там команду двух параметров, которая парсит кортеж, доставая из него свои два параметра. Как же меня там хуями обложили! Как же орали! Как же растоптали!
>>1081972 Бро, тебе надо тренироваться. Я так понял ты пытаешься этой хуйней обойти конкретное количество и типизацию параметров методов, прикрутив туда заодно предикат, но я даже в душе представить не могу зачем. Запомни - если тебе приходится заниматься пикрилилом - в твоей программе все пиздец не в порядке, она буквально требует переработки.
Почитал у вас тут пишут, что мол неплохо бы писать документацию к проекту, шоб потом обратно в заброшенный не так страшно было возвращаться. Идея-то здравая, тем паче что отдаёшь это занятие на аутсорс нейронке! Вот токо как это грамотно всё ей скормить, чтоб там и структуру папок/файлов перечислила, и примерные назначения скриптов и прочего мяса? Логику там, что с чем связано, кто кого куда зовёт, етц. Поясните нубу короче. Чё мне, получается открыть project.godot текстовым редактором и оттуда содержимое ей вывалить, пускай описывает его? Или там лишь малая толика содержится? А то я уже наворотил дров, боюсь как расширять проект начну ваще крыша поплывёт от объемов...
>>1082009 Да просто агента попроси, он сам все прочитает. Направлять его только будешь и поправлять. Напиши ему, как хочешь, чтобы был оописано, каким языком и тд, и что именно хочешь в доках видеть, насколько подробно, на чем акценты. Если проект ну слишком большой, то скармливая ему его по кускам.
>>1082011 Под агентом ты имеешь в виду приблуду типа копилота от гитхаба запущенного через VSCode? Я так только один раз попробовал, но чет оттолкнуло, что темка лишь "условно" бесплатная, да и неудобно, мне махровому деду ретрограду привычнее печатать код во встроенном редакторе, и по нужде просто альт-табать на браузер с открытым дипсиком или ещё чем, лол. Но вообще да, так конечно наиболее логично, эта ж хрень как я понял сразу весь твой проект видит и может свободно по его структуре бегать. Круто, круто. Надо только придумать чётенький структурированный промпт ему, шоб там всё как в екселе разлинованно было. Любопытная вот бляха человеческая черта, ирл беспорядочный раздолбай, а за кампиком уж будьте добры, всё по линеечке.
>>1082014 Сколько тебе лет, дед? Агент не запрещает тебе писать самостоятельно, это еще один инструмент, сам заметишь как будешь все больше пользоваться. Копилот хз, есть ультимативный куклодик, который заменил всех программистов, но он платный. И есть бесплатные модельки для нищих ничтожеств, я квеном пользуюсь, пока лавочку не прикрыли. Есть еще модельки бесплатные от поенкода какие-то, их не пробовал. Ковыряйся, разберешься, в эту всю хрень легко вкатываешься. Разве что устаревает все быстрее, чем выходит, железно держится только клод.
>>1082015 Старый я, сынко, уж за тридцатку перевалило. А квен-кодер я тож попробовал подтянуть внутрь вскода, дал ему админ-права, говорю делай чё хошь, но сделай мне игру. В итоге целый день с ним сидел совокуплялся, но чёт он мне туповатым больно показался. Может язык к нему не смог подобрать, добазариться как с братком, но чёто он мне поднасрал в проект нехило, что аж пришлось откатить этот день экспериментов, благо незадолго до был запилен коммит в гит где всё работало. Плюс у меня он с каждой итерацией всё дольше и дольше крутил шарманку, под конец дня по минуте запрос обрабатывал (и это только 20% от суточной нормы token length отработал, а там вроде 100к в сутки выдают). Я чёт так прикинул, у его облачной "бесплатной" версии сколько миллиардов параметров, 250 где-то вроде. А у того же дип психа, даже в веб версии порядка 750. Вот с ним по большей части и пизжу, с ним весело, он и пошутить умеет, и закинуть меня в бесконечный ад дебаг-принтов по приколу. Тоже конечно спустя сутки начинает галюны ловить и застревать лбом в стену, ну так все мы не без изъяна, приходится новый чат открывать и по новой знакомиться.
>>1082016 Хз зачем ты так разговариваешь, скорее всего ты моложе меня. "Сделай мне игру, похуй как" - это разве что куколд вывезет. Да и то если не заглядывать в то, что именно он сделает, иначе поседеешь. Ассистент это прикольно, но не так эффективно, как с агентом. Ассистент это чтобы пиздеть, обдумывать, по мелочи что-то просить, а агент чтобы батрачить как немой папа карло. Можно совмещать.
>>1082058 Энтропия софта. Любой софт от лаконичной KISS-утилиты, достающейся за пол секунды, лежащей в руке как влитая, проходит путь до неповоротливого комбайна, с интерфейсом звездолёта.
>>1082019 Так я и не могу с немым попакарлом работать. Понимаю, что это больше от опыта зависит, я то ещё в стадии активного обучения новым штукам, ловлю дофамин от мелочей. Скорость то конечно в разы ниже будет при подходе с "живым" подпёздышем, но зато и потребность в общении слегонца покрывается, и не чувствую себя одиноким уебаном. Если б не эти его "Fantastic idea! You're thinking like a seasoned game designer!", то может я б уже и забросил это занятие, КЕК.
>>1082064 Тоже общения не хватает. Поэтому лезу в каждый срач в гд... >Если б не эти его "Fantastic idea! You're thinking like a seasoned game designer!" Мой квен меня и всех вокруг хуями кроет. Даже агент.
>>1082092 Да это апишный бесплатный квен кодер. А в чатовой версии заметил, что мат он цензурит только в названии чатов, но сам спокойно ругается как сапожник. Ктож поймет этих китайцев. Вообще хз че имнено он цензурит, как нарушать авторские права и пиздить кое че кое откуда так он спокойно, но добавил "я не видел тебя, ты не видел меня". Ппц конспиролог. Смешной короч.
>>1082111 Если хочешь мое мнение то я беспокоюсь как бы она таким макаром не натравила на тебя мужскую полови ну школыНеобъятному матадорах унылостью переходящая
Что лучше, глобальный EventBus в автолоаде, или DI в узлы сцены? Или вообще нативные сигналы годота, лол. Везде пихают эти event‑шины, dependency injection, а на выходе всё равно куча связанного кода и дебаг превращается в квест. Шо то хуйня, шо это, как по мне. Нативные сигналы вроде простые, но когда сцен становится много, начинаешь путаться, кто на кого подписан. В общем, у каждого варианта куча нюансов, и непонятно, на чём остановиться, чтобы потом не переписывать всё с нуля. Помогите разобраться
>>1082170 Если тебе нужно прокрастинировать, просто скатай в дотку.
Для DI нужны интерфейсы. Забудь о нем в гдскрипте вообще. Так же юнит тесты бесполезны, зачем тебе бойлерплейт с DI, чтобы что?
EventBus - зачем? Чтобы на порядок усложнить отладку? У тебя нет независимых систем, у тебя чертов монолит, какой еще EventBus?
Пиши игру, хватит придумывать себе проблемы. Если у тебя платформер или беги стреляй сигналов хватит (они так же захордкожены как если бы ручками дернул), сахар над коллбэками.
>>1082170 > Помогите разобраться > Что лучше Ноды реализующие глобальные сигналы. Это полностью godot way. Твой прикладной код не будет связным. Вся связность останется в нодах-глобальных-сигналах. Один челик на ассетлибе уже реализовал примитивную реализацию: https://godotengine.org/asset-library/asset/2938 // https://github.com/SrColoma/Auto-Bus Там простейшие 3.5 строки кода (пикрелейтед) и у тебя есть ноды, которые ты просто без задней мысли закидываешь в свои сцены и прописываешь там имя "сигнала" с которым они будут работать. Эмиттеры будут излучать, рецепторы - принимать. Под капотом эти ноды воспринимают майнлуп как шину сигналов и прописывают туда свои подписки в кастомные сигналы.
То есть, вместо того чтобы жестко привязывать, скажем, ноду игрока, к ноде гуя, в которой обновляются хитпойнты здоровья, ты в чайлды игрока кидаешь глобальный эмиттер с названием, например "плеер_хп" а в гуе в чайлды кидаешь глобальный рецептор "плеер_хп", и далее контексте игровой логики когда у плеера изменились его хп, ты в коде вызываешь, $my_global_signal.emit(new_health) и оно всё само срабатывает как по волшебству.
Соответственно затем если всю игровую логику обмазать этими нодами, они будут как порталы лапши. Лапши как будто бы нет, но она просто кабель-менеджментом спрятана под капот.
Поэтому нужен минимальный диздок где ты в табличку сведёшь все свои глобальные сигналы и будешь чётко этой таблички придерживаться, а если добавляешь новый сигнал, сразу прописываешь его в табличку.
>>1082178 >Для DI нужны интерфейсы. Забудь о нем в гдскрипте Любишь же ты набросить жирноты на вентилятор... >Так же юнит тесты бесполезны Вспомни клавишу F6 - это юнит-тест в стиле Godot. >зачем тебе бойлерплейт с DI, чтобы что? Чтобы Godot самостоятельно следил за всем, нет? >нет независимых систем, у тебя чертов монолит Кто тебе сказал, что нужно делать этот монолит?
>>1082170 >глобальный EventBus в автолоаде Этот антипаттерн работает только для простейших гиперказуалок уровня примитивных Flash-игр, где количество сущностей во всей игре всего 3.5 штуки. Немного посложнее геймдизайн - ты в этом всём запутаешься и будешь долго рубить клубки связей.
>Везде пихают эти event‑шины Это потому что 99% проектов на Godot - школьные гиперказуалки, которым этот антипаттерн не вредит, поскольку проект пилится за неделю и бросается. И поскольку многие инди верят в "сделай сначала кучу простейших игр, а потом делай посложнее", они не замечают проблем с этим антипаттерном... Хотя даже маленькие проекты лучше делать без него (см. ниже).
>или DI в узлы сцены >или сигналы годота Не понял, почему ты их противопоставляешь? C#?
>начинаешь путаться, кто на кого подписан С сигналами всё просто: "call down, signal up".
>не переписывать всё с нуля. Помогите разобраться Переписывать всё равно придётся, особенно если ты новичок и делаешь что-то оригинальное или клон, но сложной игры. Но рефакторинг и переделку с нуля возможно упростить, если делать проект модульно. Загнивающие модули легко отключить, перебрать и подключить обратно или даже переписать с нуля.
Я уже неоднократно писал в прошлых тредах, но их, очевидно, никто не читает, поэтому напишу ещё раз. Существует два главных подхода к разработке ПО: 1. Сверху-вниз: берётся основная цель (игра), ты её разбираешь на составные части, и пытаешься их реализовать, подменяя отсутствующие пока части бездействующими заглушками. Тестировать проект невозможно, пока не будет написано много кода в запланированных системах будущей игры. В случае неудачного плана придётся многое переделывать. 2. Снизу-вверх: основная цель не столь важна - есть желаемые модули, которые способны независимо существовать и могут быть протестированы даже в отсутствии игры как таковой. Игра собирается из разработанных и уже протестированных модулей. Неподходящие модули заменяются или удаляются совершенно без риска для работы всех остальных.
В общем, Godot лучше всего подходит "снизу-вверх", поскольку его философия - это "сцены из нод и сцена функционирует как нода". То есть, когда ты создаёшь некоторую сцену и сохраняешь её в .tscn, ты можешь использовать её как ноду при создании других сцен. Чувствуешь, к чему это идёт? Можно протестировать микросценки и быть на 100% уверенным, что они не сломаются в будущем, если ты в них не залезаешь. Соответственно, большие сцены из этих сцен тоже тестируются как цельные независимые модули. И поднимаешься так до самого верхнего уровня - той основной сцены, которая реализует игру в целом.
Здесь важнейший принцип - "call down, signal up". Использование сигналов - это сообщение наружу о случившихся внутри событиях. Кто и как сможет отреагировать на сигналы - тебя не волнует. Вызовы методов же должны происходить вниз, то есть к тем объектам, которыми ты непосредственно владеешь. Соответственно, твои микросценки владеют самыми простыми нодами, большие сцены слушают сигналы микросценок и владеют ими, вызывая их методы. Запутаться сложно, пока не нарушаешь принцип.
Конечно, на практике могут быть исключения, когда необходимо добраться до чего-то, что не находится непосредственно в твоих нодах/сценах-потомках. В подобной ситуации желательно использовать "DI": >@export var i_need_this_to_work: MyNodeClass Или создать кастомный Resource: >@export var shared_resource: MyResourceClass Это безопаснее глобальных сущностей (autoload), т.к. изолирует сущности друг от друга: в случае нод, ты передаешь их строго в рамках конкретной сцены (не затрагивая другие сцены), а в случае ресурсов, Godot позволяет быстро посмотреть всех пользователей. Выстрелить себе в ногу становится сложнее.
Ноду лучше всего создавать, когда нужна какая-то конкретная функция ноды, типа _input, _process, и т.п. Ресурсы используются в основном как контейнеры хранимых данных, но могут иметь набор методов, помогающих работать с данными (поиск, формат). Расшаренный ресурс лучше сохранять как .tres.
Autoload может пригодиться в ситуации, когда тебе необходимо загружать что-то вместе с любой другой загружаемой сценой, особенно для клавиши F6. Т.е., например, хорошее применение - это debug-экран, выводящий какие-то сведения поверх геймплея. Тут главное, что ты не читаешь с этого экрана ничего в геймплее, а только отправляешь в него свои данные, поэтому не возникает опасной взаимосвязи в коде (удаление/изменение не сильно повредит проекту).
Главное, это поддерживать модульность, то есть взаимозаменяемость разных компонентов, которые создаются как самостоятельные сущности, отдельно тестируются и потом собираются в большие сцены. В некоторых случаях можно отказаться от этого для оптимизации, но лучше сначала сделать прототип максимально модульным, а потом уже стянуть его компоненты более жёсткими связями (если надо).
Хочу также заметить, что если ты планируешь делать множество маленьких игр вместо одной большой, то соблюдать модульность в проекте тоже важно, но с несколько иной целью: так ты сможешь переносить большинство комплектов из проекта в проект, без необходимости восстанавливать сломанные связи. Собираешь все зависимости в одной папке и тогда достаточно скопировать одну эту папку в проект. Как можешь догадаться, аддоны строятся именно так - изолируют свои зависимости в одной своей папке.
>>1082190 >привязывать, скажем, ноду игрока, к ноде гуя А зачем делать HUD отдельно от Player, если это, по геймдизайну, однозначно взаимосвязанные вещи? Очевидно же, что по логике Player владеет HUD, т.е. состояния и действия Player влияют на его HUD. Если добавляется Player в сцену, добавляется и его HUD, а удаление Player должно также удалять его HUD. Это, естественно, в случае если Player только один, и мы обсуждаем типичный HUD (отдельный от "паузы").
>Лапши как будто бы нет, но ... спрятана под капот И зачем так делать? Ты оставил грабли лежать как и раньше, но замаскировал опавшей листвой, чтобы в будущем на них нечаянно наступить? Это мазохизм?
>Поэтому нужен минимальный диздок А можно просто не делать этой глобальной лапши...
>>1082194 >в случае если Player только один А, стоп, не обязательно. Если мы делаем игру с т.н. "локальным мультиплеером", когда на одном экране отображается 2-4 игрока, то у каждого игрока свой собственный HUD, отображающий здоровье, очки и подобные вещи. Тогда - тем более - им нужны свои независимые HUD, которыми эти Player владеют.
В случае жанра стратегии или жанра тактики, нам необходимо создать некий невидимый Player, что представляет собой летающую камеру с HUD, а все видимые на экране юниты - это что-то вроде NPC. Аналогично, в случае мультиплеера у каждого будет собственная летающая камера и собственный HUD.
Лол. Получается, нет причин отделять HUD от Player.
>>1082194 Я разделяю состояние как состояние (хп плеера) и отображение этого состояния, если оно нужно (хп гуй). Можно и не рисовать, а мождно рисовать, мождно рисовать разные, можно рисовать много. Хз зачем делать иначе и смешивать в "однозначно взаимосвязанные вещи", схуяли так?
>>1082200 >состояние (хп плеера) >отображение этого состояния Ну, если ты хочешь так, тогда рекомендую такое: >class_name Health extends Resource >@export var health: float = 100: >_ set(v): >_ _ if health != v: >_ _ _ health = v >_ _ _ emit_changed() https://docs.godotengine.org/en/stable/classes/class_resource.html#class-resource-method-emit-changed Далее вставляешь этот ресурс куда хочешь: >@export var health: Health И они будут взаимосвязаны "на расстоянии".
Но я бы всё-таки связал HUD и Player в одну сцену... >зачем делать иначе и смешивать А зачем разделять на отдельные сцены, объясни?
>>1082211 Что-то из вне понимает как работает хп и посылает сразу готовое хп без расчета. Наверное Health тогда просто контейнер/сущность? А нет, у нас есть бизнес логика эммитера в нём.
То есть, что-то из вне сетапит хп, но эмиттер не всегда посылает сигнал, потому что бизнес логика лежит и в сущности и в менеджере. Представляете какой ад можно словить в игре (нужно повесить эвентбус чтобы вообще себе все отстрелить)
Вот поэтому никого тут не слушайте. Ты походу тот чел который еще своей шизой размазал синглтон на разные предметные области?
Ты даже не гражданин программист
малолетнее дарование снова накинуло на вентилятор Di/Bus срач, местные бездельники схавали
>>1082250 >Чзх, там юпуперы уже вовсю трубят о фишках годот 4.7 по типу оффсета контрол нод Так это вроде раньше была багофича, просто теперь дочинили до состояния фичи
Есть ли у вас под рукой ссылки на репозитории годот-проектов с хорошей архитектурой? Не сильно большие, а то там в 10к строк кода вникать не очень хочется.
>>1082252 Емнип, как-то давно находил клон/ремастер/порт Earthbound на годотле. Там наверное больше 10к строк, но сама архитектура вроде годная и жизнестойкая. А ещё можешь глянуть прям из ассетлайбрари темплейт проект ECS бай кто-то-там, если ты конечно про это. >>1082258 Вот хорошо что внял их предупреждению в стиме ("у вас всё может пойти по пизде, подумойте") и не стал обновляться на неё. Как раз с этим бленддеревом учусь взаимодействовать.
>>1082228 Скажи, зачем типичному инди-разработчику это твоё кодомакакерство, если он никогда не будет работать штатной обезьяной в твоём бездушном энтерпрайзе?
>не всегда посылает сигнал Это не является проблемой в играх. Наоборот, в играх необходимо уменьшать количество лишних действий, поэтому сообщать об изменении параметров, когда изменения не произошло, будет нерационально. >Что-то из вне понимает как работает хп Это простейший код, который служит лишь для демонстрации базового принципа. Тебе не нужно его использовать, но нужно понять принцип работы, чтоб использовать этот принцип работы в своём коде. А конкретное поведение и названия - это мелочи. >просто контейнер/сущность? "Контейнер" это объект, а не простая переменная. У контейнера может быть сложное поведение, которое проявляется как реакция на воздействие на него его окружения, т.е. контейнер - пассивный объект, а не автономный агент, по сравнению с нодами Godot: https://docs.godotengine.org/en/stable/tutorials/scripting/resources.html >Resources are data containers. They don't do anything on their own: instead, nodes use the data contained in resources. >They can define signals, so Resources can trigger responses to changes in the data they manage. И в базовый интерфейс входит данный сигнал: https://docs.godotengine.org/en/stable/classes/class_resource.html >changed() >Emitted when the resource changes, usually when one of its properties is modified. See also emit_changed(). >Note: This signal is not emitted automatically for properties of custom resources. If necessary, a setter needs to be created to emit the signal. Но для более сложных ресурсов лучше делать свои, независимые сигналы, с понятными названиями: >signal overhealed() # здоровье больше 100% >signal depleted() # здоровье ниже или равно 0% >signal received(amount) # лечение >signal lost(amount) # урон И т.д. Так должно быть проще понять суть кода. Хотя простейшей игре такое наворачивать не обязательно.
>>1082293 Мне просто мозг взорвала эта идея. Я уже второй день хожу охуевающий. Оказывается шины сигналов НЕ НУЖНЫ. Ресурсы можно использовать как контекстные шины сигналов. Вместо того чтобы заводить в классе персонажа переменные XP, SP или какое-либо MP, а потом муторно передавая его через всяческие велосипедные(кек) шины(лол) мы делаем кастомный ресурс PlayerStats, содержащий все необходимые поля. В классе Player создаём переменную stats типа PlayerStats и работаем с характеристиками там. В ГУЙе тоже делаем переменную player_stats типа PlayerStats и подписываемся на обновления ресурса, в подписочном коллбэке заполняем интерфейс свежими/актуальными значениями оттуда. При создании игры ресурс PlayerStats создаётся один раз и раздаётся всем, кому он потребен.
>>1082295 >ресурс PlayerStats, содержащий все необходимые База, для этого Resource очень хорошо подходит. >Ресурс - синглтон!! Не. Просто подумай, ты можешь сделать EnemyStats аналогично PlayerStats, но сделать сразу множество вариантов, сохранив в grunt.tres, scout.tres, tank.tres - представляешь, нода-сцена одна, а классов много! И аналогично можно делать заменяемые алгоритмы, пользуясь наследованием классов Resource... Самое хорошее - вложенные ресурсы, Godot недавно как раз оптимизировал GUI для глубокой вложенности, и ещё добавили индикатор повторного использования. Есть нюансы в работе с ними, но в целом ресурсы = круто.
>>1082298 >Выглядит как обычный синглтон в автолоаде Разница есть... Но если тебе нравится обмазываться нодами и дрочить, никто здесь тебе не запрещает. >еще раздавать его нужно, загружать-подгружать, в гуе тыкать, подписываться Ты так и так работаешь с ресурсами в инспекторе... Подгрузка обычно автоматическая. Подписки, правда, придётся кодом делать, но подписки на сигналы через интерфейс инспектора так и так не очень удобны и предпочтительнее делать их через свой код...
>>1082299 >А там глядишь и начнём игры делать. Вот-вот, нужно садиться, открывать редактор, тыкать кнопочки - а там глядишь втянешься и игру сделаешь.
Шалом, анон. У меня есть сцена с мобом, в него записана ценность через экспортную переменную и таких мобов много. Когда левел генерируются мобы раскидываются по уровню в зависимости от ценности. Набор мобов на левел добавляю как packedScene. Но я не могу прочесть значение ценности без инстантцирования, а инстанцировать я не могу, т.к. без ценности не знаю подойдет данный моб или нет. Как правильно решить проблему? Передомной только очевидный вариант инстанцировать всех мобов заранее для получения ценности, а после инстанцирования реальных мобов этих заранее сделанных удалить
>>1082319 Там были методы работы с пакед сценой (предраспаковка, чтение, запись, переупаковка). Но ваще конечно у тебя какая-то неудачная архитектура. Переделывай. Думой.
>>1082293 >не будет работать штатной обезьяной в твоём бездушном энтерпрайзе? То что ты пишешь это лаба1.gd и это нормально для геймдева, но ты вылезаешь из норы и учишь людей, это уже плохо, шизофазия растет.
Вот явный пример, >>1082295 человек вместо синглтона-менеджера (или компонентного подхода) открывает себе чудеса костылестроения.
>>1082310 Ты можешь говнокодить какие угодно нерабочие глючащие синглтоны, никто тебе мешать не будет. Но когда ты умышленно начинаешь навязывать это другим - это вредительство.
>>1082319 Не держи ценность в экспорт переменной моба, а создай отдельный ресурс с ценностями разных мобов, приклей его в скрипт мобов (через @экспорт ценность_мобов : ЦенностьРесурс). А в скрипте левела дай референс на этот ресурс, и из него читай данные. (Хотя хуй знает, может надо делать наоборот, и экспортировать этот ЦенностьРесурс непосредственно в левел, и заодно там же назначить спавн-координаты в зависимости от ценности? У меня с причино-следственной связью беда, я даун) Но энивей, ключевой инсайт в том, шоб не держать инфу для инстанциации внутри инстанциируемой сцены, это ж рекурсия.
>>1082211 > Но я бы всё-таки связал HUD и Player в одну сцену... > >зачем делать иначе и смешивать > А зачем разделять на отдельные сцены, объясни? Внезапно запоздалый ответ. Смотри, у нас есть сцена, вид изометрический 3D в стиле РТСки, мы можем двигать камеру по сцене, вращать, масштабировать, выбирать группы мобов и посылать их в бой. При выборе группы мобов над ними появляются значки с параметрами, всё как в РТСках/стратежках. При масштабировании значки сохраняют свой внутренний масштаб, колёсиком мы крутим только саму сцену с графикой, а интерфейс отрисован на экране, получает динамически координаты объектов на экране, с их параметрами, и рисует себе. Всё просто, логично, и с минимальной связностью (интерфейс вообще о 3D ничего не знает, у него своя плоская канва и откуда-то ему прилетает массив с данными которые надо по своей плоской канве отрисовать).
>>1082342 >Я ж говорю - ты умышленный вредитель Так ты объясни в чем вред? Кроме твоего болезненного случая, когда ты использовал одну сквозную переменную на отступ в гуи, в каком-то отступе пули и еще где-то.
Это, кстати, не синглтон. Просто говнокод, я бы сказал что это по неопытности (но видно что иногда ты код пишешь), я не врач, но скорее всего у тебя шиза, ты не в состояние отделить предметные области - рамка гуи и отступ рисовки пули для тебя не разные вещи.
Только вот мы бы отнеслись с понимаем к этому, но ты транслируешь эту херню всем, да еще и споришь.
>>1082344 >Только вот мы бы отнеслись с понимаем к этому И я тебе нормально тогда объяснил и даже кинул базворды какие почитать (декомпозиция предметной области). Дело в том что ньюфаги тоже об это спотыкаются (особенно в ООП, который часто вводит в заблуждение), это приобретаемый опыт, научиться могут все.
> скорее всего у тебя Хотя шиза это наоборот избыточное дробление предметной области. Скорее всего ты просто скучающая от безделья флудилка. школота бы сказала безыгорка, но мы взрослые люди и можем уколоть сильнее - сказать человек без личной жизни, у которого доска есть единственный предмет развлечения
>>1082319 Просто создай где-нибудь список всех мобов сразу со стоимостями. Типа Dictionary[PackedScene, float] будет достаточно для простого случая. Рекомендую сразу вынести в отдельный Resource, чтобы можно было сохранить отдельно от сцены и переиспользовать: >class_name EnemyDatabase extends Resource >@export var enemies: Dictionary[PackedScene, float] Но лучше всего создать подобные записи, в которые возможно безболезненно добавлять новые поля: >class_name EnemyDatabase extends Resource >@export var enemies: Array[EnemyRecord] >class_name EnemyRecord extends Resource >@export var scene: PackedScene >@export var cost: float И т.д. Так снижается риск "поломки" в будущем.
>>1082340 >всё как в РТСках/стратежках Там камера и GUI - это основной "Player", а бегающие аватарки на экране - что-то типа NPC, которые могут передавать информацию о себе в Player и, конечно, подчиняются его приказам. Короче говоря, не нужно смешивать "аватар" с "плеером", "плеер" - это такая абстракция взаимодействия игры с игроком. То есть создаешь отдельно "аватар", отдельно "интерфейс", и соединяешь их с помощью общей сцены "плеер".
>>1082344 Ты отдаёшь себе отчёт, что с разными анонимусами взаимодействуешь? Или ты создал себе в голове противника и теперь споришь с ним постоянно?
>в чем вред Погугли про синглтоны и поймёшь. Ты предлагаешь новичкам обмазывать проект лишним глобальным состоянием, которое гарантированно ухудшает им понимание их же собственного кода, и считаешь это нормальным? Типа, пусть сами пройдут по граблям, подорвутся на минах и научатся на горьком опыте? Непонятно только, зачем им ООП паттерн, когда эффективнее будет вкатиться в ассемблер - там подорваться на таких нюансах в разы проще. Но мы, кажется, в этом треде хотим делать игры, не так ли?
>>1082347 >декомпозиция предметной области Ты используешь "синглтон", потому что тебе ЛЕНЬ настраивать слои абстракции, потоки данных и взаимодействия между объектами, то есть ты по определению НЕ ХОЧЕШЬ заниматься серьёзной декомпозицией - ты хочешь сваливать всё в одну громоздкую, глобально доступную кучу, которую ты собираешься дёргать хрен знает откуда и когда, ибо "намного быстрее получается, чем делать иначе". Соответственно, любые твои аргументы про то, как "аккуратно" это использовать умножаются на ноль.
Если ты аккуратно всё декомпозируешь, то должен осознавать, что делать "синглтоны" бессмысленно. Упрощения они не дают, только ограничения (т.к. невозможно создать экземпляр и не выйдет легко отсоединить/заменить/изменить синглтон). Но это конкретно о коде игры, а не коде движка (зачем ты постоянно переводишь на тему разрабов движка?).
Понимаю, ты можешь быть в восторге от лёгкости набрасывания кода в одну большую мешанину, но защищаться по этому поводу не нужно. Ты можешь продолжать так делать, но должен понимать, что в перспективе это ведёт к запутанному коду, который проблематично отлаживать и рефакторить.
>>1082358 >Ты отдаёшь себе отчёт, что с разными анонимусами взаимодействуешь? Ты думаешь такой особенный и неузнаваемый?
>Погугли Тебе сказали - синглтон проблемный в масштабирование у веб макак (и то вилкой чиститься, архитектуру не меняет). У тебя клиент игры никогда не будет масштабироваться и с юнит тестирование отдельная тема
> потому что тебе ЛЕНЬ настраивать слои абстракции Какие еще там ты абстракции увидел? Зачем они тебе там? Что за бредятина? У тебя нет иммутабельных данных ты глобал состояние что ручками прокидываешь что с синглтона дергаешь. Только в первом случае ты найдешь ошибку за 1-10 минут, во втором за пару дней. и самое смешное, что ошибка будет в том, что где-то скопировались скалярные данные, потому что только они не по ссылке
>и не выйдет легко отсоединить/заменить/изменить синглтон Зачем это делать? Даже если у тебя вдруг станет две камеры, ты их отдельно синглтонами сделаешь. Условные менеджеры никогда не отпочковываются.
>аккуратно всё декомпозируешь Декомпозируй меня медленно. Как же ты далек от айтишечки, фантазёрище.
В годоте самый упрощённый вариант синглтона (через редактор), проще только в котлине, но нет, пришел шиз и просто вредительством занимается. прекращай
>пик Смотри как раньше деды страдали, чтобы синглтончик поняшить
>>1082364 >Смотри как раньше деды страдали Так это создание сингла в рамках многопоточности, и если в годоте делать многопоток - придется рожать то же самое.
>>1082375 C _ready() вроде необязательно (или через автозагрузку). Я больше хотел показать, что главное за что отвечает синглтон, это что он гарантирует единственность (следит что он единственный). Вот пример как у соседей делается (синглтон уничтожает возможные дубликаты хотя разве сам Аwake не гарантирует это?)
>>1082377 1 пик, это ужасно, оставь один lock и ты еще дергаешь unlock вне if.
Остается проблема, когда объект был уничтожен и потом собран заново. Да, синглтон, но уже не те данные в нем. В годоте не просто так сделали автозагрузку, чтобы руками синглетоны не трогали, особенном между сцен. Просто - юзайте то что дает годот.
>>1082386 > здоровый вариант И что же тут здорового? Здоровый вариант - добавить себя в дерево сцены при первом вызове, и затем при следующих вызовах превентиться.
>>1082402 >И что же тут здорового? Не трогать мьютексы, особенно если не знаешь как они работают и делать ими еще дабл лок (которого нужно избегать и он там не нужен вообще).
>добавить себя в дерево Сделать то что делает редактор годота, только хуже
>>1082344 >я перебегаю дорогу на красный и никогда еще под автобус не попал Да ты можешь что угодно делать, пока другим не мешаешь, ну будет твоя прога неподдерживаемая и у пользователя глючить, ну не будут ее покупать, это твое дело. Но ты начинаешь вредительствовать, когда начинаешь навязывать свою шизу другим.
>>1082417 Я изучаю и местами (в моих силах) популяризирую годот (хотя частично сейчас работаю с другим движком), я просто являюсь "не говном" сообщества. Если документация говорит синглтон норма и в целом популярные люди в сообществе говорят что это норма - я тоже говорю это норма (и я могу даже объяснить почему это норма).
Так сложно просто не быть говном, да? Хватит срать там где едите
>>1082444 Синглтон - это говно, зачем ты любишь говно? Все вменяемые, все умные люди тебе это говорят. Кроме конечно одного тролля-вредителя здесь, который всем доказывает что надо бросаться под синглтон.
>>1082444 >популярные люди в сообществе говорят >я тоже говорю это "Если миллионы мух жрут говно, я тоже жру говно". >image.png Во-первых, он даже не понимает, о чём говорит. Во-вторых, в документации рекомендуют избегать. >популяризирую годот Посредством пропаганды говнокодерских практик?
>>1082364 >у веб макак Зачем ты своих сотрудников на галерее обижаешь? >клиент игры никогда не будет масштабироваться Тыскозал? Возьму и масштабирую. Ножкой топнешь? >Какие еще там ты абстракции увидел? У тебя там что, весь код игры в одной функции? >У тебя нет иммутабельных данных Так ты не простая веб-макака, а функциональная? >глобал состояние что ручками прокидываешь Состояние не глобальное, если локальное. Думай. >Только в первом случае ты найдешь ошибку за... С синглтоном ты её можешь вообще не найти. >Зачем это делать? А зачем игры делать, откладывая неизбежное? >Как же ты далек от айтишечки Замечательно. Не хочу грести на галере с тобой. >В годоте самый упрощённый вариант синглтона В GDScript вообще синглтонов нет, и речь не о них. >Смотри как раньше деды страдали Знаю об этом, ведь я и сам что-то похожее делал.
>>1082451 >Вместо синглтонов там что угодно могло бы быть Да как ты не понимаешь, что суть темы не в них?
>>1082364 >синглтон проблемный в масштабирование у веб макак Там проблема в многопотоке если у синглтона есть сменяемый стейт. Охуенно называть это "масшабируемостью" конечно, лол, тупо второй тред добавил.
Весь ваш лексикон вообще в треде говорит о том что вас по объявлению понабрали и вы на самом деле не понимаете о чём говорите, просто символы выдаёте как нейросетка.
Нет ничего плохого в том чтобы писать синглтоны если вы понимаете что делаете. Но вот движок игры форсить тебя на синглтоны не имеет права. Если он так делает значит писал его дегенерат.
Можешь пример привечти где эти ваши сингленторы полезно использовать или наоборот вредно. Просто я совсем новенький в программировании и многого еще не понимаю.
>>1082476 >Поясните рофлс с синглтоном новичку, что это такое. Скучающий шизик без личной жизни, периодично накидывает темы уровня синглтоны/шины и прочий холивар на потеху себе, подрывая пердаки местным. Иногда "потехой" становится его жопа, тогда он начинает безумно клацать кнопку жалобы и плакаться модераторам, постепенно просеивая адекватов из треда.
>>1082470 >Нефига у тебя биполярка Когда ты пишешь инструменты и библиотеки у тебя большие требования к коду, нежели если ты пишешь прикладной код. Прикладной код решает задачи. Инструменты и библиотеки будут использоваться другими людьми с разными задачами и ситуациями. По-моему это как бы очевидно. Если ты реальный программист Иными словами рякать что у кого-то в 2д платфомере синглтон GAME наверное немного глупо. Но вот если такое сплошь в самом движке и документации...
>Это ровно то и значит, причем тут высер про многопоточность? О чём я и говорил. Вообще нет понимания.
>>1082463 >движок форсить на синглтоны не имеет права >>1082495 >вот если такое сплошь в самом движке Godot никого не форсит на синглтоны, это местный шизофанатик синглтонов аргументирует в стиле: >Если в движке есть синглтон Input, тогда вы все тут обязательно должны создать God Object синглтон и молиться на него, иначе вы не сделаете свою игру! Популярные юзеры на Reddit так говорят! Миллионы профессиональных реддиторов не могут ошибаться!
В синглтонах движка нет проблемы, потому что нет необходимости их заменять или даже тестировать, поскольку мы используем готовый движок. Это у разработчиков движка могут быть проблемы, а мы занимается разработкой игр поверх этого движка. Некоторые тут годами версию движка не меняют.
Там, где разрабам движка понадобилась замена, реализованы механизмы такой замены. То есть мы полагаемся на синглтон "физический сервер", но под капотом движка есть/может быть несколько разных реализаций в одном exe: Godot Physics, Bullet, Jolt, и переключать их можно даже без пересборки exe. Параллельно запускать/дублировать их не нужно (в большинстве реальных игр, по крайней мере). А к геймплейным объектам совсем другие требования.
>>1082480 Ну да, используется в аддонах, к сожалению, в результате пришлось недавно такой вычищать, чтобы игру можно было выложить на яндекс играх. Там звук сразу автолоадился, а в современных браузерах его надо создавать только после клика игроком мышкой. Вообще автолоад хуевая практика, стандарт это быстро быстро загрузить почти пустую сцену после сплешскрина и там рисовать загрузку и показывать заставку, автолоады же сразу начинают грузить все. А, сейчас еще за одним свехразумистом-синглтонщиком вычищаю. Он сделал так, что у него монитор - синглтон, соответственно, когда окно перетаскивается на два монитора, рисуется только половина на одном.
>>1082495 >Когда ты пишешь инструменты и библиотеки у тебя большие требования к коду Ого, сообщи пожалуйста это остальным, а то что-то они не знают про большую ответственность.
>Инструменты и библиотеки будут использоваться другими людьми Только во влажных мечтах такого вкатунца как ты, в реальном мире немного другая ситуация.
>Иными словами рякать что у кого-то в 2д платфомере синглтон GAME наверное немного глупо Фу двадэшка платформер, вот у меня четыредэшка, вот это я понимаю сила и ответственность.
>О чём я и говорил. Ты перепутал масштабирование с многопоточкой, купи хорошую нейронку, че она идиотом тебя выставляет
>>1082501 Забавно, в перечисление альтернатив синглтону нейродебил предлагает синглтон последним пунктом. Другой нейродебил скопировал даже не убрал этот пункт.
А вообще смешали все что можно. Есть реальная проблема синглтона получить плавающую ошибку (автозагрузочный синглтон решает эту проблему если ты не влезаешь в процесс создание синглтонов в своем коде вообще).
1. Это тоже самое что и годотовская автозагрузка, только она вообще в рут загружает и сама всем занимается между сценами. Экспортные переменные, насколько я помню не работают между сценами (а значит бесполезны). Хотя вроде есть возможность по UID, но в любом случае ты получаешь полу-модульную систему, так сказать модули на полшишечки, так что лучше вообще этим не страдать. (а почему полу-модульную, в 2 пункте)
2. Не рабочая система. Потому что есть вероятность когда у тебя сцены в сцене, а там еще сцены (и все это динамичненько то подключается то отключается). Настанет такой момент, что ты пробрасывать будешь ВСЕ, причем промежуточным модулям это даже будет не нужно. Отсюда - никакой модульности вообще. Кстати ИИшка вспомнила старый дедовский "setup", за это почёт, даже миллиниалы этот тренд не помнят, вытащила же откуда-то из дна истории.
3. Сигналы, которые кодом - они захордкожены (что на самом деле в плюс). Связанность не уменьшают. Для событийной модели норм (открылось/закрылось, пукнуло/закончило пукать), для бизнеслогики - поешь говна и захочешь мененджер/компонент.
4. Интерфейсы, ага. Дак-тайпинг в динамическом языке. Представили лицо утки? И ладно бы динамический язык, так еще часть API реализовано через Variant.
5. Сервис локатор единственная рабочая херня, альтернатива пункту 2. Но тогда забудьте про модульность.
6. Это тут зачем?
От скуки покормил нейродебилов, размял мозги перед работой.
>>1082211 Хера тут насрать успели. В плане связи компонентов между собой не придерживаюсь вообще никаких догм, по ситуации то одно то другое удобнее. Твой вариант делал в первой игре, на которой годот осваивал, лол. Типа умственной гимнатики. Правда это оказалось почти единственная интересная возможность гдскрипта, в остальном он оказался негибким бревном. Норм вариант. Наверное. На практике именно этот варик пока не хотелось. Единственное что не принимаю и не приму никогда - это смешивание отвественности. Впринципе странно что такой подход вообще используют. Даже в хеловордах ютуба проговаривают когда смешивают гуй и логику что-то вроде "это не серьезный, код, обучающий, конечно так писать не надо, будем рефакторить потом". Ну а разделение отвественности впринципе база базовая, без которой ни в одном приличном обществе лучше не появляться. Наверное связано с тем, что влетают в интересный геймдев без бекграунда в скучном макакинге.
>>1082522 >Вообще автолоад хуевая практика, стандарт это быстро быстро загрузить почти пустую сцену после сплешскрина и там рисовать загрузку и показывать заставку, автолоады же сразу начинают грузить все База, давно это рекомендую, это прям киллер-фича. Раздражают игры, которые не умеют так грузиться.
>>1082530 >предлагает синглтон последним пунктом Читать научить, там написано чётко и ясно: >только для действительно глобального А не то, что ты тут нам советуешь постоянно.
>не работают между сценами Между какими "сценами"? Ты говоришь про: >get_tree().change_scene_to_...(...) Что ли? Это атавизм/архаизм/легаси костыль.
>когда у тебя сцены в сцене, а там еще сцены >пробрасывать будешь ВСЕ, причем промежуточным модулям это даже будет не нужно. Это означает, что ты накрутил себе в проекте кучу совершенно лишних слоёв абстракции и должен их отрефакторить нафиг из своего проекта, очевидно.
>Сигналы, которые кодом - они захордкожены Нифига они не захардкожены. Сигналы не методы, обработчик сигнала вообще не обязан существовать. >для логики - поешь говна Какая логика, то и поешь.
>Интерфейсы, ага. Без синтаксического сахара, но реализовать можно. Объектно ориентированное программирование ведь существует отдельно от языковых конструкций, т.е. программировать в стиле ООП можно на языке без специальных слов типа "object" или "class". Поэтому реализовать интерфейсы возможно и без "interface".
>Но тогда забудьте про модульность. Сервис-локатор - это мощный слой абстракции от конкретной реализации сервиса, т.е. модульность проекта значительно возрастает, а не уменьшается.
>Это тут зачем? Очевидно же.
>>1082545 >смешивание отвественности >разделение отвественности "Health" - это компонент, отвечающий за здоровье. Отсутствие этого компонента просто делает объект неуязвимым, т.к. нет реакции на приходящий урон: >if "health" in node and node.health: node.health.hit(dmg) Так что никакого смешивания ответственности нет - "здоровье" занимается вопросами "здоровья", все остальные компоненты только реагируют на него: >if health: >_ health.hurt.connect(say_ouch) >_ health.healed.connect(say_thanks) >_ health.depleted.connect(die) Вся логика на виду, ничего нигде не скрыто, и если ВНЕЗАПНО что-то отвалится - ты знаешь, где могло отвалиться - никуда далеко бегать не нужно. Очень элегантное и надёжное решение, на мой взгляд. Хардкодинга тоже нет: можно удалить компонент как таковой или заменить его на что-то с такими же как у данного компонента сигналами и методами - то есть аналогичным интерфейсом, но не внутренним кодом. Редактор движка предупреждает об ошибках... Ну, единственный недостаток - скорость кода ниже из-за дополнительных вызовов, но это не так уж страшно. Реализация через ECS будет намного запутаннее.
Заранее отвечу: это код для примера, не нужно тут жаловаться, что он какой-то неполный и поэтому невозможно/невыгодно копипастить его как есть. Основной принцип ясен? Вроде ясен. Вот и хорошо.
>>1082580 >модульность проекта значительно возрастает Модульность она или есть или её нет. Это связанность имеет промежуточное состояние. Ты опять выходишь на связь муд...
Ребят, а где можно посмотреть нормальную архитектуру игр на годот? На ютубе обыскался уже весь, там вообще все сводится либо к тому, что все пихают в основной узел, либо даже если затрагивают что-то типа композиции, то все в итоге превращается в нечитаемое месиво, а основной узел становится божественным объектом. Просто я новичок совсем и никогда не программировал, соответственно мне не понятно, как организовать код правильно.
>>1082580 >Поэтому реализовать интерфейсы возможно и без "interface". Ну, база. Правда может оказаться жутко неэффективно, тем более в таком местечковом языке, как гдскрипт.
>>1082595 Ну я у себя композицию реализовал вот так >>1082514 → У меня конечно с#, на гдс такое не сделать просто потому что любой инстанс гдс обязан иметь rid (ну или сделать но с геморроем и прибитыми resource классами). В общем - я формально повторил EC юнити, где обьект-контроллер все так же управляет чужими нодами, но хотябы могу композировать в рамках одной нодовой точки входа разную логику
>>1082625 Может тебе и годот не нужен? Подключи к своему коду какой-нибудь рендер. А в качестве редактора юзай блендер. Такое ощущение что ты себя насилуешь годотом. Тебе не нравится, но ты вынужден.
>>1082651 Ушел делать змейку, если не за два дня не сделаю, то тогда не буду вообще в гейдев соваться, ибо нече такому быдлу пустоголовому ловить в этой отрасли.
>>1082648 На которую найдешь туториал. Про игру ты загнул, первое что ты сделаешь это демку, потом еще демку, потом - ну ты понял. Поэтому делай что интересно
>>1082648 Просто в ютубе пробиваешь туториалы по созданию игр. Там обычно будет серия роликов с пошаговым выполнением. Ну и просто повторяешь за автором. Скорее всего это будет какойто платформер или 2д-бродилка с видом сверху.
>>1082647 >Подключи к своему коду какой-нибудь рендер Зачем? Уже подключил годот. Подключать другой - еще полгода времени в трубу. >А в качестве редактора юзай блендер Как оказалось - у годота отличный редактор, который позволяет рисовать на нем почти что угодно. Я вот себе юнити-лайк компоненты нарисовал (которые отделены от движка, но все еще могут управлять деревом и получать lifecycle вызовы через хукабельную ноду). Ну а еще - у годота лучший редактор среди редакторов впринципе, потому не вижу смысла отказываться от него. >Такое ощущение что ты себя насилуешь годотом. Это я раньше себя насиловал годотом, когда делал контроллеры на дочерних нодах. Сейчас я обладаю инструментом, который позволяет мне больше не насиловать себя годотом, а с кайфом его использовать. Чего и вам желаю
Анон, почему animation player такое говно? Вкратце: меняю через него скейл объекта RigidBody2D и одновременно применяю импульс, как итог - импульс применяется с задержкой. Как только убираю проигрывание анимации - все идеально, импульс применяется мгновенно
Мужыки, делаю 2д платформер бродилку с видом с боку. Т.к. не смог добиться внятного перехода между анимациями при помощи AnimatedSprite2D, решил понасиловать себя в связке AnimationPlayer + AnimationTree. Дип псих подсказал, что трипл эй гигачеды пилют спрайт напополам для раздельного движения ног и торса, и последующего смешения этих анимаций. Сказано - сделано, убил 12 часов на эту муйню, распилил, запилил, метко раскидал по шкалам. У каждой анимации ног ровно такое же кол-во кадров для анимации тела, с этим порядок. Но бля, можт кто сталкивался с конкретно такой проблемой: анимации рассинхронизируются и ломаются (в моем случае после прыжка/падения). Ноги бегут и отстают от торса который кривовато летит рядышком и постреливает с пистолета. Лучше всего фиксится приседанием (отдельная анимация для ног и торса, по 1 фрейму анимации на каждый). Сетап такой: в AnimationTree добавил 2 NodeSpace2D, одну для ног, другую для торса. Расклад по координатам внутри них идентичный, обе их подтягиваю в Blend2 (пробовал и Add2 - те же яйца), и тяну на Output. И в целом всё работает, но вот конкретно бег+стрельба (ради чего всё и затевалось) все равно блять ломаются.
Эх, хуй знает зачем я всё это расписал, вряд ли так без визуала можно эту бурду понять (а я далеко от кампика...). Но один хуй, ключевое слово: рассинхрон анимаций в AnimationTree. Можт кто знает аналогичные методы забороть сию задачу.
>>1082689 те нужно синхронизировать спрайты между собой.
(ебать очевидную хуйню сказал да?)
хуй знает как это сделать, но grok год назад мне это реализовал на изи в моей игре (два спрайта, только один для шлема, один для брони, у обоих тоже одинаковое кол-во кадров и скорость)
>>1082696 Да я уж понял, что перемудрил. Думал "ох ща подзаебусь, зато красоту наведу, шоб всё плавно и бесшовно". Основной изначальный обсер был в том, что я анимацию и торса, и ног, отрисовал с эдаким плавным покачиванием, то бишь обе анимации слишком динамичные были. А посмотрел потом как делают спецы, что чел с IronMeat, что этот сойджак с Исадорой с ютуба: они делают ноги четко фиксированными по позиции Y, то бишь там миллитровать не надо, и даже если съезжать начинает - незаметно, один хуй сбросится и ре-синхронизируется в процессе. В итоге отказался в пользу фулл-бади спрайта, и просто замутил анимации через StateMachine внутри того же AnimationTree. Не прям доволен, ну а иначе рискую въебаться в стену и игор не будет...
>>1082716 Слушай, ну шлем-то кмк попроще засинхронить, чем две половины туловища. Там наверное вообще можно AnimationPlayer обойтись и просто ключевыми кадрами подправить. Своему микрочелику тоже думаю шляпу намучу, куда нынче без шляпы.
>>1082595 >основной узел становится божественным объектом Главный узел сцены - это интерфейс сцены для её взаимодействия с внешними сценами, имеющий: - сигналы, оповещающие о событиях сцены наружу; - методы, управляющие поведением сцены извне. Это не делает главный узел "god object", потому что ответственность этого узла - одна конкретная сцена. Остальные детали скрываются в нодах-потомках (наподобие инкапсуляции из ООП получается).
Может быть, тебя сбивает с толку слово "сцена", т.к. сценами в Godot называются любые сущности, что составлены из нод и сохранены в файл. Чем именно наполнять сцены - зависит от твоих предпочтений. Создавай новые сцены когда считаешь нужным, вне зависимости от того, нужна она в одном месте или в нескольких одновременно. Со временем приходит интуитивное понимание, что и куда нужно прятать.
>>1082723 >Кто как инвентари делает? Через кастомные Resource. Топовая фича движка. Использовать аддоны не рекомендую - там часто перегружено лишними функциями, а нужного нет. Переделывать чужой велосипед сложнее, чем свой.
>>1082733 >инвентарь своими силами менее чем за неделю Единственная сложность - это если тебе захотелось инвентарь в стиле тетриса, да и то, не так уж сложно. Базовый инвентарь (список/сетка) делается за день.
>>1082689 Система анимации в 2D будет сильно зависеть от графического стиля и доступных игроку механик. Определись сначала, что ты изображаешь и какие конкретно возможности должны быть у игрока.
>>1082733 > сделать полностью рабочий инвентарь Техзадание охуенное! Инвентарь уже готов, смотри: > var inventory = [] И он полностью рабочий. Вот смотри, добавить предмет: > inventory.append({ "name" : "apple", "icon" : "/icons/items/apple.png" }) Удалить предмет: > inventory.remove_at(inventory.find_custom(func(x):x.name=="apple"))
Всё, блять! Буква в букву твоё ТЗ соблюдено! Плати зарплату, блядь! А не то я иду в трудовую комиссию.
>>1082792 хаха, подъебал, молодца. имелось в виду полностью рабочий инвентарь в усреднённом понимании типичного игрока, а значит с возможностью перекладывать предметы из одного слота в другой, выбрасывать, поднимать, разделять стопки предметов (т.е. поддержка стаков предметов), иметь видимо какие-то слоты экипировки, контекстные меню с действиями вроде использования или выбрасывания как минимум, и так далее.
>>1082798 >усреднённом понимании типичного игрока Если ты вслепую копируешь механики из других игр, не пытаясь проанализировать, почему они сделаны так и зачем они нужны другой игре, и нужны ли они твоей игре, то ты сделаешь очередной никчёмный инди-клон, такой же, как и большинство других (а большинство - на дне). Да, игрок чего-то ожидает, потому что он уже привык жрать говно и терпеть страдания, но если ты превзойдёшь его ожидания - будет намного лучше.
Поэтому не нужно копировать инвентарь из других игр, даже успешных.
>>1082873 > на демосцене > 1631548413191.png Смотрю щас. На 4 номере (13-14 минута) вышел пидор, насрал в полной тишине, и все такие сидят, обосранные, и не могут ни слова поперёк сказать. Мямлят что-то типа, "вот дааа, этот чувак умён, он там на каких то языках мутит чота там"
>>1082670 >меняю через него скейл объекта RigidBody2D >Changing the 2D transform or linear_velocity of a RigidBody2D very often may lead to some unpredictable behaviors
Относится и к 3D, не стоит менять трансформации физических обьектов напрямую, кажется если ты в редакторе поставишь скейл для RigidBody отличный от 1 увидишь жёлтый треугольник возле ноды
>>1082954 Малаца, анонче. Я точь-в-точь такую же хотел замутить из иконок когда начинал, но потом как-то впадлу стало и переключил внимание на проект "Игра Мечты(тм)". Закрыл гештальт через твоё видео.
>>1082975 >Играли бы в инди Те которые с контентом на 3 часа? Пытался сделать клон без умышленного затягивания геймплея, оказалось игра и не игра совсем, что мне теперь быть гандоном что ли?
>>1082723 > Кто как инвентари делает? Я предпочитаю инвентарь, который является потомком инвентарного элемента. Таким образом получается легко реализовать элементы-контейнеры. Сам инвентарь это элемент-контейнер. Далее ты его приписываешь какому либо объекту на сцене. Один контейнер игроку, второй сундуку, третий мобу.
У базового атомарного класса есть набор свойств, которые будут у всех потомков. То есть, например, для задач нашей игры, нужно чтобы была иконка и название. И вот мы сделали вышенаписанные три контейнера, присвоили им имена, сундуку присвоили название "Сундук", мобу присвоили название "Сумка", своему контейнеру присвоили название "Инвентарь". И картинки подходящие подобрали. Теперь нам хочется, чтобы у моба был выпадающий контейнер, а у нашего инвентаря чтобы были методы работы с визуальным интерфейсом. И тогда мы добавляем в класс (контейнера) булево свойство "can_drop" и настраиваем мобовской "сумке" true, а для игрока делаем класс-потомок PlayerInventory extends InventoryContainer extends InventoryItem
Вот это вкратце по логике, дальше только садиться и кодить.
>>1083002 Я думаю, если ты хочешь максимальную гибкость, то лучше использовать агрегацию: есть "item", у которого возможно наличие внутри "container", который, в свою очередь, может содержать другие "item". Так можно комбинировать свойства как пожелаешь в рантайме.
Пример: - была простая "деревяшка", может только гореть; - в ней продолбили дырку -> "деревянный ящик"; - потом добавили металл -> "огнеупорный ящик"; - потом добавили двигатель -> "холодильник"... И так далее.
Если скажешь "это не нужно", то можно и про сумки, вложенные в сундуки, сказать "это не нужно"... Что я сначала и хотел сказать, но вспомнил про Elin, где это оказалось супер удобно по сравнению со многими аналогичными RPG/rogue-like/lite (ну да, мало играл). Главное не забывать, что для такой системы нужно обязательно подсчитывать вес и делать "перегруз" персонажа, иначе будет таскать весь мир в кармане.
У агрегации в противовес наследования есть проблема - все нужно оборачивать ручками если хочешь новый тип. Поэтому в языке должен быть синтаксический сахар в виде типажей (trait) иначе все просто превратиться в бойлерплейт. Из всех ЯП типажи я помню только в расте и пхп.
На самом деле у гдскрипт есть ассоциативные массивы, просто попробуйте кодить данные отдельно - функции (поведение) отдельно. Откроется новый пласт гибкости и возможностей. И это будет намного круче чем ООП.
>>1083008 > Если скажешь "это не нужно" Не скажу, это вопрос вкуса. компоненты всегда можно добавить в дополнение к базовой иерархии типов. Алсо, если Хуан завезёт обещанные типажи, то вообще вопрос отпадёт навсегда. Будет что-то типа: > class_name Item extends Resource > ... > trait InventoryItem implements Item, Container, Stackable, Droppable > ...
>>1083008 > Пример: > - была простая "деревяшка", может только гореть; var entity = Wood.new() > - в ней продолбили дырку -> "деревянный ящик"; entity = Crate.new().setup_by(entity) > - потом добавили металл -> "огнеупорный ящик"; entity = Firebox.new().setup_by(entity) > - потом добавили двигатель -> "холодильник"... entity = Refrigerator.new().setup_by(entity)
Метод setup_by производит заполнение свойств найденных в объекте-аргументе, после чего объект-аргумент дропается как рефконт. Схема непотопляема, даже объяснять лень. Всё так же поддерживается крафт в игре с контролируемым количеством преобразований между сущностями, согласно игровым правилам. Получается, композиция не так уж и не_обходима.
>>1083031 >обещанные типажи >>1083029 >в виде типажей Чем они помогут, если их нужно в коде указывать? >превратиться в бойлерплейт Можно же использовать Array/Dictionary... >данные отдельно - функции (поведение) отдельно Через анонимные функции? Типа как Object в JS? >И это будет намного круче чем ООП. Но словарь будет выполнять роль объекта ООП... Так-то ты прав, объекты как в JS - это мощно.
>>1083033 >new().setup_by Во-первых, почему не используешь аргументы new? >func _init(from: Object = null) -> void: if from: ... Во-вторых, нюанс твоего подхода в том, что если на предыдущую версию предмета ссылалось несколько объектов, ты создашь дубликат с новым свойством, а оригинал останется в памяти других объектов. Т.е. потребуется следить, что на объект только 1 ссылка. Агрегация лучше тем, что она изменяет объект на его месте, и это изменение видно всем пользователям. Например, если у тебя основной инвентарь, тулбар, индикатор предметов на крышке сундука и т.д.
>композиция Композиция и агрегация - разные понятия. Почему-то используют слово "композиция" (объекты как целое) там, где уместнее "агрегация" (более слабые связи, объекты могут существовать по одиночке)...
>>1080508 (OP) Террейн сет надо для изометрии. Ромбик в 128х64, классическая изометрия. Как ни делал по гайдам с ютубчика, офф документации, с помощью нейронок - получается некрасивая хуета. Может тут кто подскажет как сделать нормально? Референс - хочу как тут примерно (да, там тайлы). Ну или подскажите где и за сколько хуйдожник сможет такое запилить.
>>1083047 С такими ошибками помогает такое: 1. Альт-таб, если изменение свежее. Если ничего не произошло: 2. Вкладка импорта => кнопка reimport. Если не помогло: 3. Удаление папки .godot и перезапуск.
>>1083045 >>в виде типажей >Чем они помогут, если их нужно в коде указывать? Трейты это сахар для агрегации, иначе руками обертки писать. Просто посмотри трейты в пхп, там будет понятнее чем в расте.
>Через анонимные функции? Типа как Object в JS? Все данные в словарях (можно вложенными - деревом), а классы для поведения (не хранят состояния, кроме приватного /технического).
>Но словарь будет выполнять роль объекта ООП... Это ближе к ФП. Чаще захочется объединять/дополнять словари. Правда не будет автокомплита в редакторе, зато ты буквально все состояние игры можешь вывести одним принтом (а лучше сформатировать удобную HTML'ку с деревом и разворачивающимися узлами).
И вроде гдскрипт позволяет через точечную нотацию писать dir['sub1']['sub2'] dir.sub1.sub2
>>1083056 Да причем тут модельки, мне террейн надо. Хотя бы из двух слоев для начала - трава/грязь. Но как бы не делал, получается кривая залупа, уже совсем отчаялся.
>>1083050 >получается некрасивая >как сделать нормально Не понял, в редакторе Godot что-то не получается или нарисовать сами тайлы правильно не получается? С настройкой в Godot проблем быть не должно, если по инструкции делаешь и настройки подходящие.
А рисовать - похоже, на твоём референсе 3D графика, отрендеренная в тайлсет. Для такого 3D тебе, видимо, понадобятся текстуры, но все проблемы с проекцией перекладываются на плечи Blender. Короче, рисуешь плоские текстуры по туториалам к 3D handpaint, или генерируешь, или покупаешь уже готовые, потом натягиваешь их на 3D меши и рендеришь в нужной ортогональной проекции в виде PNG без фона.
>>1083057 >террейн надо >трава/грязь А это не модельки с текстурами, по-твоему?
>>1083061 У меня с переходами какая-то хуйня. Во-первых, некрасиво, во-вторых, хотя делаю битмаску для всех вариантов, в редакторе рисуется криво. >>1083062 >Не понял, в редакторе Godot что-то не получается или нарисовать сами тайлы правильно не получается? С настройкой в Godot проблем быть не должно, если по инструкции делаешь и настройки подходящие. Нарисовать нарисовал, но криво. Ладно, фиг с кривостью, в самом редакторе границы между тайлами неправильно определяются. Уже как-то только и не делал. Покажи инструкцию, о которой ты говоришь, но скорее всего, я уже ее видел. >А это не модельки с текстурами, по-твоему? Для поверхностей - тайловые спрайты, судя по структуре файлов.
>>1083053 >Трейты это сахар для агрегации >посмотри трейты в пхп Трейты - это просто добавление общих методов. Агрегация - это тип ассоциации между объектами. Совершенно разные концепции...
>ближе к ФП Чёт вообще лишнее приплетаешь. Функциональная парадигма требует чистые функции, иммутабельные данные, вот это всё... Твой вариант выглядит как велосипедный ООП с минусами и без плюсов, лол.
>все состояние игры вывести одним принтом Лол, зачем? Инспектор в Godot позволяет изучать и модифицировать любой объект прямо в процессе выполнения игры. А твой "один принт" выдаст десять тысяч строчек, переполнит журнал и сломается. Либо делаешь какую-то совсем уж примитивную игру...
Словари - мощная и удобная штука, но обмазываться нерационально, пока не прикрутят автодополнение (возможно ли?). Уже несколько лет пытаются как-то реализовать struct (C)/record (Pascal), вот если смогут реализовать - тогда словари вообще можно будет не насиловать лишними данными. А пока лучше всего использовать Resource, если нужны "просто данные".
>>1083064 Хм... Как бы я это сделал: 1. Нарисовал тайловые текстуры 512x512 в Krita. 2. Сделал ромбики нужной формы в Blender. 3. Развернул UV ромбов так, чтоб тайлилось. 4. Отрендерил ромбы по отдельности без фона. 5. Вставлял в редактор эти рендеры (не текстуры). Тогда они должны встать точь-в-точь как в Blender.
>некрасиво Ты б лучше скинул скриншот... Они вообще не стыкуются друг с другом? Чёрные или белые пиксели по краю? Слишком заметная ребристость? Вибрирует при движении?
>>1083066 Так мне надо именно для генерации, ты же говоришь про способ создать готовую карту >Слишком заметная ребристость? Ну типа того. Стыки почему-то кривые. Видимо, надо тщательнее рисовать смежные тайлы, чтобы толщина "захода" на другую поверхность совпадала везде. Скрин не могу показать, не дома. Алсо, может нанять кого? Столько такое будет стоить, ну примерно.
>>1083073 Я хз зачем это все в блендере делать. Тайлы у меня есть: тайл грязи, тайл травы. Я могу наложить их один на другой и ластиком убрать, чтобы получились тайлы с соединениями - по углам, по сторонам и т.д., как в классическом террейн сете. Ну и вот на этом этапе проблема - когда в годот засовываю, получается кривая херня. Хотя у людей из ютубов все четко, углы совпадают и т.д. Мне кажется, надо куда точнее соблюдать единообразие в пропорциях на стыках, когда рисуешь эти пограничные состояния. Но я слишком криворукий для этого, вот и подумал, что наверное проще найти художника, чем самому мучаться. Кое-как я могу сделать, а хочется красиво чтобы было (как на референсе из исходного сообщения).
>>1083077 >зачем это все в блендере делать Рано или поздно тебе понадобятся домики, деревья, танки, солдаты и прочие объекты, которые лучше всего будет сделать через 3D, а не в 2D рисовать. Лучше настроить пайплайн заранее на простых детальках, чем потом пытаться подогнать одно к другому. В Блендере можно с помощью Geometry Nodes организовать тайлы в аккуратный тайлсет, и получать сразу готовый атлас. Рано или поздно придётся возиться с этим.
>наложить их один на другой и ластиком убрать Ты же в ортографической проекции работаешь? Попробуй в простом "виде сверху" сделать, на квадрате. Простые квадраты проще состыковать ровно. А вот уже потом можно отобразить этот квадрат в нужную тебе проекцию, с помощью Blender или любой другой умеющей в это программы, если тебе почему-то блендер не нравится. Всё равно ведь не пиксель-арт рисуешь, а сжимаешь обычный арт в маленькое разрешение...
Накидал простые дороги. У тебя не получается такое? Вроде гладко сочетается, без резких границ или стыков. И я это мышкой намазюкал в редакторе, просто для примера, даже не старался. Говорю ж, покажи свои скриншоты с теми дефектами, о которых ты говоришь, и тогда попробуем что-нибудь сообразить под твой конкретный случай.
Художника искать лучше когда у тебя есть играбельная игра на простой графике. Тогда будет дешевле и быстрее, чем если ты привлечёшь того же художника на этапе "не знаю, как сделать грунтовые дороги на траве без стыков"...
>>1083083 Без него будто бы частичка треда улетела куда-то вдаль, и затерялась среди облаков, как девственная душа. Но почему-то мне кажется, что он сейчас оттуда, сверху, просто наблюдает за нами и за спорами, и просто улыбается, чтобы не мешать
>>1083087 Не, дороги-то я сделал, там нормально более-менее. Проблемы именно на сложных конфигурациях, когда в углу соединение, например. Кстати, ты же просто взял тайл травы, а тайлы с дорогой делал накладывая сверху новый слой? Или в самом годоте делал тайл с куском дороги отдельно (с прозрачным фоном) и движок уже сам накладывал как надо? Если второе, то научи как, у меня тупо два набора тайлов (в первом трава основной, во втором грязь основной). Скринов нет, я на ночной смене сегодня.
>>1083095 > Проблемы именно на сложных конфигурациях, когда в углу соединение, например. Это тебе надо курить видосы про тайлинг и создание тайлсетов. Для идеального тайлсета тебе придётся заебенить 47 тайлов чтобы покрыть все 256 возможных положений. Но, разумеется, не без нюансов, и есть способы нарезания + оптимизации количества тайлов, там челик для платформера с видом сбоку вообще придумал способ уложиться в 5 уникальных тайлов. Короче на ютуб шагай учиться, дело нетрудное, но подзаебаться придётся.
>>1083064 Ты нам покажи хотя бы. У 2д по диагонали надо делать чуть больше (для изометрии и гексов). Там получаются полосы, это свойства при сохранение картинки, они там добавляют прозрачность. Я тоже тут об этом писал и мучался ~3 месяца назад (фиг кто помог, сам догадался).
>>1083064 >>1083112 Совет, делай сразу в 3Д. У тебя будет возможность поиграться с углом камеры и fov. Скорее всего на глаз подберешь более интересное.
>>1083074 Там зомби проект, я её еще год назад до вката в /gd видел она летала. Думаю игру закончу она будет все еще летать (а я тоже прокрастинирую, но больше из-за бытовых проблем).
ваш любимый теоритический вопрос Как бы вы сделали пошаговый мир, подобие stoneshard?
Стопать Engine.time_scale как-то тупо. Единственный вариант завести переменную-флаг типа "есть ли следующий шаг", которая проверяется каждый кадр и если false то _process() в холостую прокручивается (если юзер делает шаг то на один шаг isNextStep == true и происходит вся игровая/мировая логика).
>>1083159 >Для этого в первую очередь и нужны сигналы. Любой моб ждёт своего хода, пока не получит сигнал. Вот и вся теория. Нужно взаимосигналы тогда, потому что персонаж игрока должен дождаться завершения хода мира (всех мобов), чтобы сделать следующий шаг (потому что у нас очередь команд, например передвижение). А взаимосигналы это почти рекурсия и адище.
>>1083161 Не так сложно на самом деле, скорее больше уныло (скучновато).
>>1083180 Любые наставления по РПГ принимаю. Я не особо геймер прям, но мне показалось для реалтайм 2Д РПГ если есть дальний бой, он всегда удобнее ближнего (впечатление по tinkerlands). А вот в пошаговый (как минимум в стоуншарде) выглядит норм.
>>1083187 > Любые наставления по РПГ принимаю. Делой хорошо, а плохо не делой. И всегда приходи сюда, мы поможем, ну может слегка поговнимся, но поможем всё равно.
В своей игре я реализовал систему глобального игрока.
Вот мои юниты и я, а вот глобальный игрок. Сейчас у меня один такой игрок, он называется «нейтрал». Но теоретически их количество может быть неограниченным.
Когда я нажимаю кнопку «конец хода», игра передаёт ход нейтралу. Нейтрал анализирует, какие его юниты могут нанести мне урон или совершить другие действия, и управляет ими.
Хочу предупредить: не привязывайте бойцов нейтрала к их внутренним методам. Это может привести к проблемам, которые сложно отладить. Я решил отдать управление нейтралу, чтобы он сам контролировал каждого бойца, проверял их действия и передавал ход игроку после завершения всех операций.
Я уже не в первый раз вижу, что вы сталкиваетесь с этой проблемой.
>>1083131 >подобие stoneshard? Не играл. Там что-то вроде Elin? >Стопать Engine.time_scale как-то тупо. Не тупо, нормальный способ, смотря где и зачем.
>научи как, у меня тупо два набора тайлов Делай несколько TileMapLayer, например, так: >MyMapScene: Node2D # корневая нода сцены >_ Dirt: TileMapLayer # основа - 1 тип тайла минимум >_ Grass: TileMapLayer # трава перекрывает землю >_ Roads: TileMapLayer # дорожки поверх всего И так далее... Раньше всё это было в одной ноде. Разные TileMapLayer могут иметь один TileSet...
>>1083202 Но я до сих пор не понимаю, как сделать змейку.
С одной стороны, создать RPG проще, потому что вы используете готовые решения. Кто-то уже продумал механизм перемещения и взаимодействия, вам нужно лишь комбинировать эти инструменты.
В случае со змейкой, тетрисом и другими подобными играми вам придётся работать с низкоуровневым кодом. Понимая принцип работы геймплея, вы сами создаёте базовые элементы, из которых строится механика игры. В данном случае это поглощение точек, перемещение и приращение.
Подсказка: здесь нужно работать со списками, возможно, с очередями и стеками.
>>1083206 > Подсказка: здесь нужно работать со списками, возможно, с очередями и стеками. Необязательно. Просто двигать кубик в стороны. И проверять на столкновение... а... ну да. Списки понадобятся.
>>1083212 А вот вам вторая итерация брейнштурма. Далее сделать проверку пересечений, появление и съедание яблок, меню, очки, рекорды - это вам домашнее задание на ночь.
>>1083213 Это типа челендж для уважаемых индюков с их убийцами гта? Ну посмотрим. Один раз меня так уже взяли на слабо с арканоидом, просрал целый день на хуйню, жизнь меня ничему не учит, хуле.
>>1083248 >Но вот здесь можешь посмотреть общую концепцию например очерёдности хода игрока Да я уже понял что каждый делает что хочешь, я думал есть какой-то бестпрактис.
Свой тайм менеджер выглядит проще всего (еще MainLoop интересная возможность, но лень его ковырять, из доки больше вопросов чем ответов).
На ГОДОТЕ вышел Road to Vostok. Тот самый, который принято приносить в ответ на вопрос "а есть ли 3д"? Вроде как финский сталкер, или хуй его знает, куплю пожалуй посмотреть.
>>1083265 Графоний кринжовый. На уровне первого сталкира, или истого неба даже. Хз. Но если уж совсем объективную оценку давать, то - убожество полнейшее. Я бы лучше все сделал конечно.
>>1083268 Мне лениво. Но мое нутро перфекциониста упрямо кричит: Если было бы не лениво, тогда я много чего декомпилировал сразу и сделал куда более лучше, просто из любви к прекрасному и ненависти к абсолютно не великолепному.
>>1083277 >Согласен, фотореализмослоп Так проблема в том, что в игре пытались в реализм, но что-то пошло не так. Выглядит, как говно. Не? Ну почему по-твоему нет?
>Пей транквилизаторы и антидепрессанты. Я бы пил, друг, но не продают без рецепта. Эээх, помню когда я СИОЗС пил, как же мне хорошо было на душе. Казалось многое могу сделать. Прям горы сверну. А потом рецепт закончился и я снова стал заунывным говном без инициативы.
>>1083279 >что-то пошло не так. Выглядит, как говно. Что не так? У меня в ИРЛ реальной жизни как на тех скриншотах. Мы же в СНГ живём. Или ты из США тут капчуешь? Там да, наверное, лучше графон на улице.
>не продают без рецепта Так ты сходи в дурку-то, пусть обновят тебе рецепт.
>>1083288 >Так ты сходи в дурку-то, пусть обновят тебе рецепт. Я не в дурке получал рецепт, анончик, ты чего сразу с дурки начал заходить? Это все твои козыри были? Антидепресанты, если что, не только в дурке назначают по всей видимости, если ты не знал.
ОП, не забывай про аватарку >>1081220 Или ты что-нибудь получше нашёл уже?
>>1083290 Так-то для назначения сильнодействующих веществ требуется контроль психиатра, чтоб не повесился от безудержного веселья. Но "дурка" - не обязательно "ложиться в ПНД", в ПНД можно просто ходить.
Вообще, ты чёт слишком резко на шутки реагируешь.
Лечиться надо... пока не поздно...
>>1083294 >Да просто пару стаканов блюра и ТАА надо Точно. Ещё piss filter был бы кстати, для ностальгии.
>>1083301 >не будет сил даже писать сюда Ты хочешь больше таких постов? >>1083266 >Графоний кринжовый >убожество полнейшее >Я бы лучше все сделал >>1083272 >Мне лениво >Если было бы не лениво >сделал куда более лучше >просто из... ненависти
Щас книжкой обмазываюсь Campos H. Game Development Patterns with Godot 4 2025. Завтра начну делать клон астероидс. Ууух, как же мне вставляет вся эта движуха. Ооох.
>>1083336 У меня такое же ух-ох было в 2018-ом, когда я впервые увидел веб-м распидора в ньюсаче, заглянул в ГД, и наткнулся на годосрач в ньюфаготреде. Затем я удивился, что такое? Что за срач? Открыл ютуб и увидел там демку третьего годота, и принёс её в ньюфаготред со словами, посмотрите, что нашёл. https://www.youtube.com/watch?v=R6HD1L4dqMg А меня в ответ хуями обложили местные утки и палки. Во времена были. Потом я поискал годотред на доске и нашёл полузатонувший, побампал до бамплимита, и перекатил.
А потом пролетели годы. Многие сошли с ума. Некоторые погибли. Сменились поколения и технологические уклады. Написаны горы кода и постов. А игорь-то где?
Мне вот только GDScript не нравится, эта ебанутая тема с отступами - пиздец какое говно. Ну почему блядь блоки кода не обрамляются скобочками фигурными? Это ведь так удобно визуально. Ориентация на отступы - это просто пиздец какой-то на самом деле - забыл отступ поставить, и уже ошибку получил. GDScript - язык для клоунов -неосиляторов, которые не могут в нормальные языки программирования с нормальной структурой и типовой безопасностью. GDScript даже в интерфейсы не может. Пиздец полнейший.
>>1083358 Топ 1-3 язык в мире так-то, смотря как считают. Вот они все долбоебы и клоуны, только ты один сумрачный гений без игор и без проектов, ведь пробелы-табы мешают.
Придётся кому-то другому катать дальше или пусть старый ОП возвращается, он то сидит тут и делает вид что его нет, попросил пару раз перекатить и "пропал".
Бля. Не тому ответил. Что же делать то теперь? Ммм.. Эээх блядь... Ответь тому или блядь просто пробросить это сообщение вот тому самому. Или он сам поймет, что это ему, а не этому. Ну пиздец вообще. Лучше оставлю как есть и свинчу под шумок.
>>1083344 >Это ведь так удобно визуально Когда я сидел на Pascal/Delphi, я точно так же говорил про все эти ваши C/C++/C#/Java/JS/PHP и что там ещё навыдумывали - потому что тонюсенькие {} трудно отличить от [] и (), да и вообще трудно заметить на фоне остальных слов в коде. А вот "begin" и "end" - это совсем другое дело, сразу видно невооружённым глазом даже с близорукостью и перепутать ни с чем нельзя, если специально не извращаться. Python я вообще не рассматривал как язык программирования...
Но когда я вкатился в Godot и распробовал GDScript, я полюбил GDScript и его отступы - это же гениально! Раньше мне приходилось делать отступы вручную и следить за тем, чтобы случайно не сломать форматирование в своём коде, за которым компилятор никак не следил, либо юзать неудобный форматтер, который постоянно делал не так, как мне хотелось, а теперь всё это встроено в сам ЯЗЫК и я пишу и читаю код беззаботно. Если бы я раньше знал, насколько это проще и лучше, я бы давно вкатился в этот их Python и писал скрипты на нём. Правда, когда я недавно решил попробовать Python, он показался мне жалкой, неудобной пародией GDScript с тупейшим синтаксическим сахаром, который очень трудно читать, будто бы ты открыл учебник математики на середине, будучи двоечником. Зачем они его так переусложнили?..
>забыл отступ поставить, и уже ошибку получил Так можно про что угодно сказать: >забыл ввести название функции и уже ошибку получил >забыл присвоить значение переменной и уже ошибку получил >забыл задать условие выхода из цикла и уже ошибку получил >забыл проверить точность данных и уже ошибку получил >забыл сохранить изменения и уже ошибку получил Что тут скажешь? Не забывай.
>>1083364 Не перевирай. Когда ты блок кода в { } обрамляешь, ты хоть сразу видишь, где пороебался, а когда ты табуляцию пропустил и логика поломалась, тогда хуй пойми что ты сделать хотел.
>>1083364 Лучше бы вместо гдскрипта был интерпретируемй паскаль у которого однопроходной парсер. Языки зависящие от контекста тормозные возьми хоть перл или руби.
Вот вот, все эти отсуты, и говноязыки - это наследие дэлфиблядства. Ну почему блядь нельзя сука скобочки юзать нахуй и точку с запятой ставить после операции логической? Какого хрена? Разве это хорошо с точки зрения синтаксиса? Ну ты же ставишь блядь точку в конце предлажения, а предлажения разбиваешь на логические абзацы. Это веть так легко и интуитивно. Но GDScript и прочие Delphi и Basic подобные языки ломают этоу логику - пытаясь выглядеть более привлекательными для вкатунов, но при этом давая в руки заряженное ружье с разрывными патронами.
>>1083365 >когда ты табуляцию пропустил и логика поломалась Из моего опыта, такое может произойти в следующих случаях: 1. Ты используешь сторонний редактор: Godot добавляет отступы автоматически по нажатию Enter там, где надо. Некоторые сторонние редакторы тоже так умеют, но Godot лучше всего подстроен под GDScript, поэтому практически никогда не ошибается. Остаётся только вовремя прожимать backscape там, где надо. На темп говнокодинга это никак не влияет. 2. Ты пишешь слишком длинную функцию/цикл/условие: по-хорошему, все конструкции на языке программирования должны содержать не более 7 значимых элементов - это среднее значение, которое люди могут удержать в своей краткосрочной памяти и анализировать без забывания. Если твоя конструкция растягивается на много строк и имеет множество отступов, пора разделить её на независимые функции и обращаться к функциям по именам. Бонус: если ты называешь все свои функции понятными именами - тебе не потребуются никакие комментарии в коде! 3. Ты сам понятия не имеешь, что ты пытаешься сделать: иногда хочется сразу написать код, но ты не знаешь, какой тебе нужен, и ты начинаешь перебирать все варианты брутфорсом. Остановись, открой Paint или другую программу и попробуй нарисовать решение визуально/схематически, чтобы не писать лишнего. Только потом возвращайся писать код, когда осознаешь, что тебе нужно в конкретном участке на самом деле. Очень помогает с векторами и т.п. 4. Ты копипастишь сразу несколько строчек кода во многих местах: остановись и создай функцию с этими строчками, заменив все копипасты на вызов одной этой функции. Да, копипаст кажется проще и быстрее, но в будущем ты сильно пожалеешь, что не сделал функцию ранее, потому что код рано или поздно придётся изменить, и без функции ты будешь вынужден бегать по коду и перепроверять каждый участок, даже если используешь автозамену в редакторе. 5. Ты копипастишь код из интернета или от чатбота: остановись и попробуй набрать этот код своими руками. Да, было бы быстрее скопипастить, но ты же не хочешь всю жизнь только и делать, что копипастить чужое? Набирая код своими руками, ты нарабатываешь мышечную память и понимание того, что ты набираешь, даже если это чужое решение. В будущем, если столкнёшься с похожей проблемой, будет намного проще вспомнить решение или хотя бы место, где было решение.
>>1083368 А мне нравятся скобочки, они мой взор лишь ласкают и умиротворяют. Раст не трогал, кста. Но С++ изучал когда то в вузике, мне он тогда казался чем то прекрасным, великолепным и логически стройным.
>>1083373 >>1083374 А я вас отпиздил бы, например. Метро любое выбирыйте теперь нахуй, я подъеду и выбью из вас это вот ваше дерьмо. Ноги вам пообломаю, чтобы ходить не смогли потом. Сами потом полюбите скобочки и точеньки с запятыми.
>>1080508 (OP) Вышла новая dev версия: https://godotengine.org/article/dev-snapshot-godot-4-7-dev-4/ - масштабирование Viewport без сглаживания (nearest neighbor); - Control.custom_maximum_size, аналог custom_minimum_size; - улучшенный драг-н-дроп в Tree, как у других похожих программ; - уплотнение отображения Array в инспекторе (меньше пустоты).
Кому важно: фикс angular velocity в частицах (breaking change).
>>1083374 За деньги напишу тебе любой монстр с бегинами, эндами, скобочками, даже на русский переведу, как 1с, прикрученным к годоту. Че вы как не годоти.
Почему говносинтаксис GDScript никто не хейтит и вообще возводит в абсолют? Типа ахахха - синтаксис как в пайтон, но это же не пайтон блядь, это синтаксис как в ебаном вижуал бэйсике или сраном Дэлфи, алло, который сдох блядь давно, зарыли блядь глубоко по землей нахуй.
>>1083386 Спустя 15+ лет кодинга я впринципе ничего уже не хейчу, как же насрать. Но ты прав канеш в одном - гдскрипт только на словах "вдохновляется" питоном, на деле он на него не похож. Он похож на один другой язык, сходство будет почти 100%, если из него скобочки убрать и заменить на отступы. Это тебе задачка со звдедочкой, угадать о каком языке я.
>>1083386 Си (от лат. буквы C англ. языка) — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах
Microsoft Visual Basic — язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемые корпорацией Microsoft. Дата выпуска Май 1991
>>1083391 Почему тогла не сделали возврат нескольких значений? Ошибки нужно из откуда-то задницы достовать Это между прочим одна из главных идиом языка о котором ты говоришь..
меня бесит снейк_кейс вместо вменяемого PascalCase. Это максимально уебищная залупа, но при этом блядь якобы так надо нахуй. Просто кусрк говна - этот ваш GDScript. Даже статик вариэблс нет и интерфейсов.