Ш̴̴̜̥͍͕̼̙̱͙͎͍̘̀̐̔́̾̃͒̈̔̎́́͜р̧̛̺͖͖̯̖ͧͤ͋̅̽ͧ̈̐̽̆̐͋ͤͦͬ͛̃̑͞͞и̒ͥͤͯ͂ͣ̐̉̑ͫ̉̑҉̛͏̸̻͕͇͚̤͕̯̱̳͉ͅф̴̴̡̟̞͙̙̻͍̦͔̤̞̔̓́̍͗̚͢͞ͅт̨̐ͫ̂͊̄̃ͥͪ͏̫̺͍̞̼͈̩̥̜͔͜͜ы̸̴̱̺̼̠̦͍͍͍̱̖͔̖̱͉̅͑͌͒ͫ͒̀ͥ͐ͤ̅͘̕.̵̴̡̭̼̮͖͈̙͖͖̲̮̬͍͙̼̯̦̮̮ͦ̆̀̑̌ͮͧͣͯ̔̂́͟г͌ͮ̏̈͂ͯ̚҉̛̙̬̘̲̗͇͕̠̙͙̼̩͚̀͘͞ͅо̷̥̯̘̓ͤ̽͒̋̉̀̂̄̒̓̊ͨ͛́̌ͤ̂̀͠в̶̒͒̓̏̓̚҉̛̙̘̺̰̮̼̟̼̥̟̘̠̜͜н̸̷̸̲̝͈͙̰̟̻̟̰̜̟̗͎̻̻͍̿̔̃ͨ͑о̔̀̋ͫ̇̿̐ͫ͌͗ͩ҉̨̜̙̙͈͍̮̮̼̙̘̞̕͜͡ Войти !bnw Сегодня Клубы
короче, начал писать свою принципиально новую билдсистему (на c++) для своего принципиально нового фреймворка. депенденси тракинг, хуякинг сделал, сейчас вот хочется чтобы код после изменений вгружался в рантайме в уже запущенный бинарник (т.е. сорс обновил - он сбилдился, предыдущая версия из бинарника выпилилась а новая загрузилась и изменения видны сразу без перезапуска). пока смотрю в сторону длопен. будет ли работать? рационально ли? будет ли аддишионал оверхед в рантайме, чо там с оптимизациями? какие вообще подводные камни?
Рекомендовали: @j123123
#9HP0ZO / @n / 706 дней назад

>в рантайме в уже запущенный бинарник тебе в джавамирок
#9HP0ZO/U73 / @anonymous / 706 дней назад
@anonymous при чём тут говно?
#9HP0ZO/NWR / @n --> #9HP0ZO/U73 / 706 дней назад
@anonymous Нет, у этих петухов ioc остановился на уровне возможности указания реализации из конфига в xml, а здесь мсье хочет чего-то совсем поехавшего.
#9HP0ZO/AK6 / @je --> #9HP0ZO/U73 / 706 дней назад
@je а в чём поехавшесть? сидишь себе, кодишь и сразу видишь результат, удобно же
#9HP0ZO/JG2 / @n --> #9HP0ZO/AK6 / 706 дней назад
>сейчас вот хочется чтобы код после изменений вгружался в рантайме в уже запущенный бинарник link-time optimization работать не будут, да и к тому же в GNU/Linux эти .so компилируются как PIC что тоже не очень хорошо с т.з. оптимизации. >т.е. сорс обновил - он сбилдился, предыдущая версия из бинарника выпилилась а новая загрузилась и изменения видны сразу без перезапуска Ага, вот прикинь что у тебя в твоем основном коде где-то хранятся указатели на функции из подгруженного модуля (.so) а потом ты блядь эту .so выгружаешь нахуй и вгружаешь новую, и функции станут скорее всего не в тех же местах, и когда ты вызовешь хуйню по тому сохраненному указателю, то прыгнешь куда-то в ебеня, и будет сигфолт скорее всего
#9HP0ZO/903 / @j123123 / 706 дней назад
@j123123 ну ладно, сделаю два вида билда - дебаг и рилиз. а зачем хранить указатели на функции? и можно их обновлять после загрузки новой версии хуиты. и чо за основной код?
#9HP0ZO/DE7 / @n --> #9HP0ZO/903 / 706 дней назад
@n Он тебе про классическую линковку кода говорит, когда собираешь бинарь, то указываешь с чем собираешь, линковщик все подгружает в один процесс и подставляет получившиеся абсолютные адреса. С dlopen все работает иначе.
#9HP0ZO/6T9 / @je --> #9HP0ZO/DE7 / 706 дней назад
@n >а зачем хранить указатели на функции? callback-и всякие, херня типа qsort. Да блядь не обязательно на функции. Может у тебя в модуле определен какой-то константный массив, и ты где-то в процессе выполнения кода хранишь указатель на него, потом ты этот модуль подменяешь, и указатель указывает хуйпоймикуда >и можно их обновлять после загрузки новой версии хуиты. Ну да, давай хранить список указателей на указатели, которые из другой поеботы подгружается, охуительная идея просто. И потом пишем хрень которая проходится по этому массиву и исправляет все эти указатели при переподгрузке хуиты. Тогда при работе с этими указателями еще надо вводить особые правила, например помечать их как подлежащих перезаписыванию если там что-то переподгрузилось dlopen-ом. Т.е. вот тупо взять указатель и сохранить его в какой-то массив уже тупо не выйдет, надо куда-то записать что вот в том-то массиве мы храним указатели, и если мы там такой-то модуль переподгрузим, то эти указатели надо перезаписать нахуй, иначе будет жопа. Но жопа тут еще более глубокая. Ведь если подумать, кто-то может например хранить разницу между двумя указателями, вместо самого указателя (например чтоб байтики поэкономить на 64-битном говне) и тогда надо еще и эту хуиту учитывать. >и чо за основной код? основной код это который у тебя не подгружается через dlopen, а запускается изначально
#9HP0ZO/DAW / @j123123 --> #9HP0ZO/DE7 / 706 дней назад
@j123123 Блядь иди нахуй, он изначально сказал, что с dlopen собирается подгружать, о чем и спрашивает.
#9HP0ZO/SKR / @je --> #9HP0ZO/DAW / 706 дней назад
@je да знаю я как он работает. и чо? ну сделаю хуйню которая будет заниматься dlopen/dlclose и по ходу дела предоставлять всем правильные указатели на функции. в чём проблема?
#9HP0ZO/8J8 / @n --> #9HP0ZO/6T9 / 706 дней назад
@je Сам нахуй иди. Он хочет в рантайме подменять эту поебень и чтобы нихуя не поломалось в процессе. Я ему объясняю что нихуя не получится
#9HP0ZO/2SG / @j123123 --> #9HP0ZO/SKR / 706 дней назад
@n Нет проблемы, сделай, покажи юзабилити, дай народу потрогать твой сорт оф ioc # inb4 имлаишь сейчас реализацию обычного скрипта на пездоне
#9HP0ZO/HLM / @je --> #9HP0ZO/8J8 / 706 дней назад
@j123123 Соу, в чем проблема-то? Какие адресами linker на этапе компиляции занимается, dlopen сам знаешь вообще ни на что не полагается, ну не взлетит, значит ебнется, делов-то.
#9HP0ZO/QFG / @je --> #9HP0ZO/2SG / 706 дней назад
в общем не еби себе мозги хуитой вроде горячей замены кода, просто почитай про инкрементальную компиляцию и реализуй ее в своем велосипеде
#9HP0ZO/9PA / @j123123 / 706 дней назад
@j123123 то что будет dlopenиться уже будет иметь свой охуительный интерфейс делающий всё что нужно (т.е. например предоставлять основному коду (который всё стыкует) список того что есть и адреса
#9HP0ZO/GPF / @n --> #9HP0ZO/DAW / 706 дней назад
@je не ну есть ещё варианты, например насрать на NX и хуярить код через сокет, пока рассматриваю все предложения
#9HP0ZO/HMQ / @n --> #9HP0ZO/SKR / 706 дней назад
@n Ну значит нельзя будет хранить указатели на что угодно из этого dlopen-утого модуля, от чего будет оверхед т.к. на каждый вызов функции из своего модуля будет дергаться какая-то поебота которая возвращает указатель на функцию, и потом эта функция уже будет дергаться.
#9HP0ZO/G5V / @j123123 --> #9HP0ZO/GPF / 706 дней назад
@n Тебя что тоже а адресами понесло, dlopen это такой инспектор скажем, не нужны ему твои адреса, он полагается на внутреннюю реализацию инспектора, что делает все в рантайме.
#9HP0ZO/MFN / @je --> #9HP0ZO/GPF / 706 дней назад
@je фреймворк будет закрыт. его цель - чтобы я мог быстро и легко накодить любую хуиту и например продать. просто бизнес
#9HP0ZO/3CM / @n --> #9HP0ZO/HLM / 706 дней назад
@n А чем обычные библиотеки не подходят, у тебя что, приложение перезапускается час?
#9HP0ZO/YAW / @je --> #9HP0ZO/3CM / 706 дней назад
@j123123 проблема инкрементальной компиляции - что бинарник всё таки нужно перезапускать. при этом если приложение более-менее сложное - часто нужно оттестировать какое-то конкретное состояние, ну к примеру процедурную генерацию какой-то хуйни зависящую от подключенных клиентов и их действий. если каждый раз перезапускать - нужно будет каждый раз нужную ситуацию создавать, а это может быть ДОЛГО. я с майнкрафт сервером просто заебался так, 95% времени уходило на перезапуск, коннект клиентом и тд. да можно чтото автоматизировать, замокать, но это ж костыли. правильный подход: увидел что что-то работает неправильно - подправил код, сделал альт таб и проверил, и так пока не пофиксится. для сложных приложений / стейтов разработка может ускориться в сотни раз
#9HP0ZO/1HP / @n --> #9HP0ZO/9PA / 706 дней назад
@j123123 блядь, вреппер будет кешировать указатели и инвалидировать их после замены модуля, а модули будут работать через вреппер
#9HP0ZO/03Y / @n --> #9HP0ZO/G5V / 706 дней назад
@je для сложных приложений перезапуск (и введение в нужное состоянин) - обычный ботлнек в разработке
#9HP0ZO/JBM / @n --> #9HP0ZO/YAW / 706 дней назад
@n Пиши на питоне.
#9HP0ZO/WIP / @je --> #9HP0ZO/JBM / 706 дней назад
понапридумывают себе хуеты, лишь бы не функциональное программирование
#9HP0ZO/NHF / @anonymous / 706 дней назад
>95% времени уходило на перезапуск, коннект клиентом и тд. да можно чтото автоматизировать, замокать, но это ж костыли это TDD FIRST PRINCIPLE
#9HP0ZO/49S / @pachimari / 706 дней назад
@n Это может даже усложнить все. Например представим что у тебя работает некое говно, которое в цикле дергает некую функцию из твоего модуля. В момент когда оно на середине пути в этом цикле, ты меняешь этот модуль, и там уже функция немного другая, которая, у тебя цикл наполовину отработал со старой функцией, наполовину с новой, от чего произошла какая-то неведомая непредусмотренная хуйня и твое приложение упало нахуй с сигфолтом. А если б ты просто перекомпилировал и запустил с нуля, то все б отлично отработало. А если у тебя формат хранения неких данных поменялся, например в коде старого модуля была одна структура, которая в хипе выделяется, в коде нового уже немного другая, ты еще будешь писать особый код, который при подгрузке нового модуля переконвертирует всю хуйню из хипа для нового модуля? Т.е. надо еще каким-то блядь образом учитывать, какие данные были порождены каким кодом, что если ты этот код поменяешь, то тебе все данные для совместимости надо в этот же формат переконвертировать, чтоб ничего не наебнулось. Представляешь себе масштаб проблемы?
#9HP0ZO/HPN / @j123123 --> #9HP0ZO/1HP / 706 дней назад
#9HP0ZO/X0T / @komar --> #9HP0ZO/1HP / 706 дней назад
@je слишком ограничивает свободу, язык для педантичных рабов
#9HP0ZO/A4W / @n --> #9HP0ZO/WIP / 706 дней назад
@pachimari TDD работает только когда сразу есть чёткие требования. а я может захочу шейдеры дрочить и визуально найти лучший вариант, или например модели процедурно генерировать
#9HP0ZO/QJZ / @n --> #9HP0ZO/49S / 706 дней назад
@j123123 в таких ситуациях ничто не мешает мне обновлять депенденсы вместе с изменением кода, предоставляющим им функцию, у которой изменился формат. я ж не тупой и пойму, что если изменятся выходные данные - придётся подправить и те места, в которых они используются. ну и будет так - старый модуль получил данные, хуярит свой цикл, ВНЕЗАПНО цикл убивается нахуй, модуль выгружается и заменяется новой версией. проблемы не нашёл
#9HP0ZO/WIC / @n --> #9HP0ZO/HPN / 706 дней назад
@n тогда получается, что TDD НАХУЙ НЕ НУЖЕН
#9HP0ZO/WH1 / @pachimari --> #9HP0ZO/QJZ / 706 дней назад
@pachimari TDD - для конвеерных рабов
#9HP0ZO/T9V / @n --> #9HP0ZO/WH1 / 706 дней назад
@n тебе надо тогда какую-то функциональщину мутить. Ну вот например хуйня1 сгенериловала данные X, хуйня2 используя данные X генерирует данные Y, потом хуйня3 используя данные Y выводит на экран какую-то хуиту. Ты меняешь хуйню1 и от этого хуйня2 и хуйня3 уже будет другие результаты давать, данные Y надо перевычислять по-новой, и потом на основе этого выводить на экран новую хуиту. Короче, тебе нужно свой язык программирования лепить, в плюсах такой хуйни попросту нет и не предвидится
#9HP0ZO/BQ8 / @j123123 --> #9HP0ZO/WIC / 706 дней назад
@j123123 нихуя не понял. если я меняю генерацию данных, то поменяю и все места где они используются, и всё будет работать нормально. в чём проблема вообще?
#9HP0ZO/PKN / @n --> #9HP0ZO/BQ8 / 706 дней назад
#9HP0ZO/K3L / @anonymous --> #9HP0ZO/NHF / 706 дней назад

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

#9HP0ZO/ZTS / @ninesigns / 706 дней назад
@n Некие данные были сгенерированы старым кодом. Потом, на основе данных, сгенерированных старым кодом, какой-то другой код сгенерировал еще какие-то данные. Когда ты меняешь старый код на новый код, тебе надо и те данные тоже все перегенерировать, т.е. надо отслеживать зависимости, что вот эти данные были получены на основе данных от такой-то функции, и если заменить функцию на другую, то данные там надо сгенерировать новые, и все функции, которые используют те данные, их надо перезапустить, чтобы они по-новой эти данные перегенерировали. Это еще называется реактивное программирование
#9HP0ZO/Q14 / @j123123 --> #9HP0ZO/PKN / 706 дней назад
@ninesigns ща всё будет
#9HP0ZO/KNF / @n --> #9HP0ZO/ZTS / 706 дней назад

@n личкрафт

#9HP0ZO/DVS / @anonymous --> #9HP0ZO/GPF / 706 дней назад
@n или например вот пилишь ты какую-то игру, и сделал так, что патроны от маузера можно в ТТ заряжать, а потом ты модуль свой переделал, где это описывается, и в ТТ уже нихуя нельзя заряжать патроны от маузера. А у тебя в состоянии в игре уже есть ТТ с патронами от маузера, и ты переподгружаешь этот модуль с описанием. Как ты эту ситуацию будешь разруливать?
#9HP0ZO/127 / @j123123 --> #9HP0ZO/PKN / 706 дней назад
@j123123 приведи пример данных которые надо будет перегенерировать
#9HP0ZO/U81 / @n --> #9HP0ZO/Q14 / 706 дней назад
@n #9HP0ZO/127 например. Или изменение размера предметов в какой-то РПГ. После изменения размера предметов, они тупо не помещаются в инвентарь
#9HP0ZO/C2Z / @j123123 --> #9HP0ZO/U81 / 706 дней назад
@j123123 ну похуй, пусть будут те что уже заряжены. не вижу проблемы. в крайнем случае пострелять, они закончатся и зарядить то что нужно
#9HP0ZO/M25 / @n --> #9HP0ZO/127 / 706 дней назад
@j123123 как будет проявляться "не помещаются"?
#9HP0ZO/4ZN / @n --> #9HP0ZO/C2Z / 706 дней назад
@n Например, предметы будут друг на друга накладыватся в инвентаре(пересекаться) или вылазить за пределы этого инвентаря, и из-за этого что-то глюканет и/или нельзя будет их взять. Или можно еще представить ситуацию, что изменив размеры какой-то хуиты она застрянет или начнет проваливаться через текстуры. Помимо обычных багов ты будешь ловить еще и баги, возникающие из-за горячей замены кода, и еще хуй поймешь, от горячей замены кода этот баг, или обычный.
#9HP0ZO/S7W / @j123123 --> #9HP0ZO/4ZN / 706 дней назад
@j123123 просто код нужно писать правильно, чтобы модули были независимыми и был готовы к херне в входных данных, и нештатные ситуации адекватно обрабатывались. не влазит в инвентарь - вывалился, застрял в текстурах - уничтожился, провалился - сдох, ну и всё такое. приведи пример нештатной ситуации которую невозможно или сложно разрулить
#9HP0ZO/99W / @n --> #9HP0ZO/S7W / 706 дней назад
>какие вообще подводные камни? перенос/обновление стейта попробуйте: ерланг
#9HP0ZO/XHX / @anonymous / 706 дней назад
@anonymous нахуя?
#9HP0ZO/PAH / @n --> #9HP0ZO/XHX / 706 дней назад
@pachimari напоминаю слова глав тдд-мудака: http://stackoverflow.com/a/153565 кстати, википидоры активно выпиливают эту хуйню, что как бы намекаэ
#9HP0ZO/7R6 / @anonymous --> #9HP0ZO/WH1 / 706 дней назад
@ninesigns какой-то бесмысленный дроч на законченность продукта ведь делается не ради того что бы было заебись, а чтобы заебаться и понять что это изначально была хуйня
#9HP0ZO/162 / @anonymous --> #9HP0ZO/ZTS / 706 дней назад
@anonymous чтобы не переизобретать
#9HP0ZO/BKC / @anonymous --> #9HP0ZO/XHX / 706 дней назад
@n >просто код нужно писать правильно, чтобы модули были независимыми и был готовы к херне в входных данных, и нештатные ситуации адекватно обрабатывались. Оцени, насколько больше времени ты будешь тратить на написание кода, готового к "невозможным" при нормальной работе ситуациям, которые возникают только при горячей замене модулей? >приведи пример нештатной ситуации которую невозможно или сложно разрулить Например есть какой-то квест, скажем принести туалетной бумаги Петровичу в деревенский сортир, он тебе за это дает штопор, который надо отнести сантехнику Васе, который им открывает бутылку вина и выпивает, отдавая в подарок пустую бутылку от вина, которую надо сдать в пункт приема стеклотары, за что тебе дают немного бабла. Допустим ты в игре принес уже Петровичку туалетной бумаги, получил штопор, который у тебя в инвентаре. В этот момент ты меняешь модуль в котором описан этот квест, и теперь вместо штопора тебе Петрович дает обмазанную в говне сторублевую купюру, которую надо постирать, и никакого сантехника Васи в квесте уже нет. Как ты будешь эту ситуацию разруливать? Заменить штопор на обосранную купюру? Ну ок, может это прокатит. А что если ты уже успел штопор отнести сантехнику Васе, у тебя будет в руках пустая бутылка, которую надо отнести в пункт приема стеклотары, и в этот момент квест обновляется и никакого пункта приема стеклотары уже нихуя нет, а в руках остается только нахуй не нужная бутылка, которую разве что в жопу засунуть можно? Тоже ее заменять на обосранную купюру? Или вообще квест сбрасывать в начало, будто бы его и не проходили? Придется писать код таким образом, чтобы вся такая хуйня успешно обрабатывалась, притом в готовом продукте это все нахуй не нужно потому что никому нахуй не надо налету что-то там менять в готовой игре. Ты будешь тратить время на написания кода, обрабатывающего всякую невозможную хуйню, которая в итоговый продукт вообще не пойдет - пустая трата времени.
#9HP0ZO/0BQ / @j123123 --> #9HP0ZO/99W / 706 дней назад
@anonymous пруф или чтобы ВНЕЗАПНО получилось что-то охуенное. большие ставки - большие возможности
#9HP0ZO/XLM / @n --> #9HP0ZO/162 / 706 дней назад
@anonymous ты предлагаешь совершенно нерелевантую хуйню
#9HP0ZO/SOK / @n --> #9HP0ZO/BKC / 706 дней назад
@n Какие возможности? Я кроме типичного ioc в этом ничего не вижу, ну возьми и сделай springboot, а проще погегли, за тебя уже наверняка сделали.
#9HP0ZO/XSA / @je --> #9HP0ZO/XLM / 706 дней назад
@n большие ставки в одиночку - 100% шанс проёба
#9HP0ZO/I38 / @anonymous --> #9HP0ZO/XLM / 706 дней назад
@j123123 > насколько больше времени процентов на 5. входные данные могут стать хуйнёй как из-за горячей замены, так и из-за каких-то внешних (по отношению к модулю) факторов, причём даже не важно каких т.к. в модуле не нужно пытаться учитывать как и где он может быть использован, каждый модуль отвечает только за себя > принести туалетную бумагу открываешь консоль, пишешь additem shit100rub и у тебя она появится. читы в консоле типа "получить вещь" очень легко имплементятся и нет причин от этого отказываться ты как будто игры не девелопил никогда
#9HP0ZO/3UX / @n --> #9HP0ZO/0BQ / 706 дней назад
@je каждое улучшение фреймворка будет способствовать уменьшению времени разработки проектов на нём. со временем наступит сингулярность и можно будет клепать по игре в день и продавать
#9HP0ZO/0NJ / @n --> #9HP0ZO/XSA / 706 дней назад
@anonymous в одиночку нет таких проблем как хуёвые коллеги плодящие баги, необходимость документировать и разжёвывать код, координировать процесс. из-за этого работать в одиночку может быть быстрее чем втроём или вчетвером. только при большом (овер 15) количестве макак у них может начать появляться перевес
#9HP0ZO/HXQ / @n --> #9HP0ZO/I38 / 706 дней назад
@n лол блять, у тебя всё задом наперёд. у макак как раз перевес в обратную сторону строго и чем их больше тем он больше
#9HP0ZO/X3R / @anonymous --> #9HP0ZO/HXQ / 706 дней назад
@n >открываешь консоль, пишешь additem shit100rub и у тебя она появится. читы в консоле типа "получить вещь" очень легко имплементятся и нет причин от этого отказываться Еще надо сделать чит "оказаться в конкретном месте квестовой ветки", а это будет уже немного сложнее. Не всегда можно однозначно сопоставить старый вариант квеста новому и однозначно привести один к другому, если сам квест нелинейный
#9HP0ZO/AKJ / @j123123 --> #9HP0ZO/3UX / 706 дней назад
@n Девелопил red eclipse и никому бы в голову не пришло это делать ад хок. Собирается вообще в один бинарник, трудности никто не испытывал от этого. Хули ты тут начинаешь гнуть пальцы, дохуя чего-то особенного в геймдеве?
#9HP0ZO/1M3 / @je --> #9HP0ZO/3UX / 706 дней назад
@anonymous у макак хуёвее с эффективностью (да, она снижается при увеличении количества) но при большом количестве это перевешивается суммой человекочасов
#9HP0ZO/L3I / @n --> #9HP0ZO/X3R / 706 дней назад
@n Ну как бы, так и делают, сейчас вообще не тратят время на какой-то особенный геймдев, весь геймдев это взять готовый джижок, нарисовать модели и рисовать карту, скриптоблядить поведение.
#9HP0ZO/7IL / @je --> #9HP0ZO/0NJ / 706 дней назад
@j123123 чем сложнее? setqueststep quest_name 4. немугадал номер - попробовал 3 или 5, ну пиздец сложно
#9HP0ZO/EM5 / @n --> #9HP0ZO/AKJ / 706 дней назад
@je дохуя особенного - нужно постоянно всё пробовать и контроллировать эмпирически (визуально и тд). в начале нихуя не понятно как сделать лучше всего. каждый раз перебилживать всё - заебёшься, костыли городить тож. для релиза можно и один бинарник собирать, но девелопить так невозможно
#9HP0ZO/6JT / @n --> #9HP0ZO/1M3 / 706 дней назад
@n Нет ничего невозможного, исходников red eclipse всего 7мб, из них печется бинарник 5мб это не так много процессорного времени, если ты не собираешь на калькуляторе. Лучше перенимай опыт расширенного конфига и переноси это все, как ты уже заметил, в сосноль, чтобы крутить в рантайме, как это сделано в cube engine и других гиковских вещах. Пересобирать не нужно, если дать возможность все изменять из рантайма, смекаешь?
#9HP0ZO/LJV / @je --> #9HP0ZO/6JT / 706 дней назад
@je рисовать модели - пиздец долго. рациональнее придумать готовый фреймвопк который будет делать всё процедурно после небольшой конфигурации через пару вызовов. когда есть тыща макак - могут сидеть и рисовать, да. один человек такой роскоши себе позволить не может. фреймворк можно довести до сингулярности, процесс рисования моделек нельзя
#9HP0ZO/QH8 / @n --> #9HP0ZO/7IL / 706 дней назад
@je т.е. типа делаешь сначала 100 видов шейдеров, потом билдишь, смотришь все и выбираешь? ну охуительно удобно просто
#9HP0ZO/F05 / @n --> #9HP0ZO/LJV / 706 дней назад
@n Сорьки, не ебу чо за шейдеры вообще. Наверное, ты пытаешься переизобрести движок, чего делать не стоит.
#9HP0ZO/7TW / @je --> #9HP0ZO/F05 / 706 дней назад
@je пиздец
#9HP0ZO/SAX / @n --> #9HP0ZO/7TW / 706 дней назад
@je ну ладно, простой пример - сгенерировал модельку, смотришь - не, волосы чуть подлиннее, глаза чуть пошире. сделал, смотришь - бля, не подходит, лучше волосы по другому ну и плечи чуть пошире/поуже... и так пару сотен раз. обьясни, как ты это будешь делать если каждый раз надо будет пересобирать? ведь каждая следующая попытка основывается на оценке предыдущей
#9HP0ZO/M7L / @n --> #9HP0ZO/7TW / 706 дней назад
@n надо еще отслеживать, какие предметы вообще могут быть доступны на этой стадии, и какие предметы нужны, чтобы перейти с той стадии квеста на следующую. Чтобы это все как следует оттестировать, лучше вообще все квесты сбросить и начать игру с самого начала, если квесты еще хитрым образом зависят друг от друга, например штопор можно было не сантехнику Васе отнести, а бомжу Вите, и он тоже даст какую-то хуйню. А купюру можно не постирать, а еще какую-то хуйню с ней сделать, например вытереть говно рукой, но тогда какая-то другая квестовая ветка будет недоступна например руки будут в говне и с тобой откажутся говорить какие-то NPC и чтобы отмыть руки от говна будет отдельный квест, и все эти квесты могут быть хитрым образом друг на друга завязаны, так что хуй поймешь как это все сделать чтоб ничего не сломалось при замене определенной квестовой ветки
#9HP0ZO/32U / @j123123 --> #9HP0ZO/EM5 / 706 дней назад
@j123123 > могут быть доступны если это дебаг билд - ты читер и тебе доступно всё. а иначе это релиз и хотлодинга кода нет. > стадии квеста похуй на предметы вообще. от стадии квеста зависит в основном отношение к тебе npcшее и какие-то евенты, на стадии квест разделяешь сам как считаешь удобным > и он тоже даст какую-то хуйню если ты читор то консоль тоже > вытереть говно рукой > ветка недоступна недоступность только в том что какой-то нпц ничего тебе за такую купюру не скажет/даст. и чо? зашёл в консоль и добавил себе обосранную, и будут у тебя обе. > хитрым образом завязаны и чо? открыл консоль и сделал то что нужно для конкретной ветки
#9HP0ZO/QHE / @n --> #9HP0ZO/32U / 706 дней назад
@n >если это дебаг билд - ты читер и тебе доступно всё. а иначе это релиз и хотлодинга кода нет. >и чо? открыл консоль и сделал то что нужно для конкретной ветки А потом внезапно окажется что эта ветка достижима только с читами, и при нормальном прохождении до нее вообще невозможно дойти
#9HP0ZO/R5U / @j123123 --> #9HP0ZO/QHE / 706 дней назад
@j123123 ну значит ты хуёво тестировал. все возможности нормально протестировать есть, бля, да хоть рестартни всё и пройди игру полностью. просто такое всеобьемлющее тестирование нужно редко и только в конце, в повседневной жизни так: заимплементил хуйню - протестил эту хуйню
#9HP0ZO/TAH / @n --> #9HP0ZO/R5U / 706 дней назад
@n Ну так вот эта хуйня с горячей заменой кода хуево подходит для тестирования, потому что часть хуйни работала по старому коду, заменили модуль, потом часть хуйни работала по новому коду, в итоге получилась хуй пойми какая хуйня, которую проходим через какие-то читы, в итоге так нихуя и не протестировав
#9HP0ZO/TRZ / @j123123 --> #9HP0ZO/TAH / 706 дней назад
@j123123 бля, не тупи. в 99.999% протестировать нужно только мелкую хуйню которую ты только что заимплементил (например создал спецэффект и сразу его вызвал через консольку чтобы посмотреть как будет выглядеть). а в оставшихся случаях тестируешь обычным образом
#9HP0ZO/RCW / @n --> #9HP0ZO/TRZ / 706 дней назад
@n Ты точно уверен в том, чтобы тестировать свои шейдеры необходимо собирать целиком игрульку, отдельно иметь для этого стенд для отладки нет?
#9HP0ZO/1QC / @je --> #9HP0ZO/RCW / 706 дней назад
@je ты предлагаешь для каждой фичи создавать или искать стенд? ну вот я хочу протестить такой то шейдер в такой то локации игры в таких то обстоятельствах. стенд всё это не покажет, или нужен пиздец какой сложный стенд. сами локации генерировать тоже удобнее уже находясь а игре и сразу видя что и как генерируется. два окна открываешь, в одном клиент игры - ходишь, хуёдишь, смотришь там, во втором эклипс какойнить, чуть подправил чё то - в игре сразу отобразилось (например деревья перерисовались), охуенно же
#9HP0ZO/94R / @n --> #9HP0ZO/1QC / 706 дней назад
понасирали тут, бляди
#9HP0ZO/TGB / @anonymous / 706 дней назад
@anonymous пук
#9HP0ZO/SJQ / @anonymous --> #9HP0ZO/TGB / 706 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.