воскресенье, 20 октября 2013 г.
А где Giperion? или затянувшееся молчание
понедельник, 12 августа 2013 г.
Отпинговка
Я потихоньку удаляю игры с ноута. ТФ2, l4d2. Никогда бы не подумал их удалить, а вот подижды...
Моделирование, программирование, фракталы, рисование, разработка вебсайта - все заброшено. Но только на месяц! Честно!
Единственное чем я щас занимаюсь (из творческого) - играю в майн с другом. С модами IC2, BuildCraft, ThaumCraft, BiblioCraft, TwilightForest и еще каким то. Классический майн уже слишком прост для меня.
Как вы видите оформление просто афигенное. Да мы настолько убоги, что поселились в пещере, где даже копать почти не надо было. Зато у нас есть куча ништяков, стак алмазов, ядерный реактор генерящий 320 EU/T, масс фабрикатор и все нужное для тауматургий и зельеварения. Из ништяков - ферма пшеницы/морковки/арбузов/тыкв (спасибо Saul_Myers, главный огородник дома), редкие саженцы деревьев (мало кто знает как их достать, а я пол сумеерчного леса обшарил), собственный стол раскрафта и зачаровка. Есть все что душа пожелает, правда еще в билдкрафт не уходили. Ну и конечно же все время откладываем постройку дома, т.к. мне лень строить, а Маерсу тем более.
Такие дела.
суббота, 20 июля 2013 г.
Адресса, сигнатуры или "Как делать трейнера для игр?" часть 1
К примеру где хранятся значения в запущенных программах и как получить к ним доступ. Собственно ответы на эти вопросы я получил хуй знает когда, а сегодня я просто применял знания на практике (и подкреплял все это с новыми знаниями программирования).
Сначала я скачал себе OllyDbg
Программа намекает: "ТРАССИРУЙ, ТРАССИРУЙ МЕНЯ ПОЛНОСТЬЮ" |
Код просто огромен, поэтому я его здесь оставлю, чтобы вы утонули в нем:
public partial class Form1 : Form
{
int carrots = 1564;
string story = "Cool story, my friend, but where i?";
private void Form1_Load(object sender, EventArgs e)
{
label2.Text = carrots.ToString();
label4.Text = story;
}
private void button1_Click(object sender, EventArgs e)
{
label2.Text = carrots.ToString();
label4.Text = story;
}
}
Для экспериментаторов: я удалил InitializeComponent();. И не надо спрашивать причем тут морковь.
Олли у меня совсем не хотел работать. Уточняю: он не хотел работать в моих корявых непрограммерских руках :D . В тоже время Cheat Engine смог найти значение морковок (он нашел два адресса, но не суть).
Как работать с программами я не смогу сказать, поскольку Cheat Engine интуитивен, а OllyDbg я и сам толком незнаю :D. Единственное что надо знать: адресса заправляют всем. У каждого значение есть свои адресс, по которому его можно достать и изменить.
А теперь ближе к делу. Первое что меня удивило: я не смог отковырять адресс значения лейбла (т.е. именно то, что отображается в том небольшом окошке программы, а ведь это отдельное значение!). Отладчик смог отловить только адресс оригинального значения. Второе: отладчик не мог найти строковое значение! Не, я серьезно! Он реально не мог найти его, чтобы я не делал. Я воспользовался Memory View.... и очень быстро нашел искомое.
Для танкистов: на адрессе 025EC6B4 записан int carrots, а через 16 байтов уже начинается значение string story. При помощи функции Add Address Manually я добавил адресс и указал что это является юникодовой строкой. Сработало.
Еще один интересный момент. В строке нулевые байты означают конец символа. Я там нечайно один сделал ненулевым - в итоге в том месте у меня отобразился какой-то китайский иероглиф. В принципе логично - их же дофига.
Все что я сказал выше - просто подмена значений прямо в запущенной программе. Но можно сделать так, чтобы программа сама не изменяла значения.... или делал с ним что-то другое.
Однако тут есть еще одна проблема. Дело в том, что некоторые значения в программе появляются не сразу. И каждый раз эти значения могут находится в разных адресах.
Соответственно встает вопрос: "А программным способом найти нужный адрес"?
Для этого нам понадобится создать сигнатуру.
Сигнатура - это уникальная последовательность байтов. Она может служить как однозначным идентификатором файла (обычно пишет её в самом начале), либо с помощью её находить нужные адреса. Что нам и нужно.
Сигнатуру можно создать с помощью отладчика OllyDbg. Но об этом я поговорю во второй части статьи.
среда, 26 июня 2013 г.
In-place to Root Motion через NLA
Собственно оно и сейчас так, однако что делать если главная кость все таки немного движется? поворачивается, незначительно меняет положение? Или у неё есть множество ключевых кадров?
вторник, 25 июня 2013 г.
Итоги июня... о черт!
Тяжелый месяц! На работе заколебали инструкциями, у сестры экзамен, у меня болит башка от C++, сроки горят, модели горят, анимация горит, я горю,... OH SH--! И вечно хочу спать.
Все что я могу сказать - следующий месяц будет лучше. Инструкции уже почти готовы, сестра и родители уедут на отдых и я останусь дома один.
Все еще изучаю WinAPI, хотя частично залез в дебри ассемблера. Пока ничего конкретного, но понятие о регистрах процессора, стеке и разделения блоков данных и инструкции уже знаю. В голове окончательная каша, но это, как говорит мой друг, "значит она варит!" :D.
Узнал страшную тайну "слова" и "двойного слова" (WORD, DWORD). Узнал почему именно они, и как они применяются (при 16 разрядных системах int был WORD, при 32 DWORD).
Значительно разъяснилась ситуация с указателями и ссылками. Фактически уже понимаю главную задумку С++. Нужно еще узнать инфу про DLL, и больше про WinAPI, затем можно доучить DirectX API. А дальше я думаю уже смогу что-то замутить.
Ассемблер - сложная штука. Но пару функции в нем намутить нужно. Все таки прямая работа с регистрами процессора и кэшем - это вам не фиг знает что!
Новая идея для генерации! Теперь я планирую создавать модели комнат и коридоров прямо с кода (без статик моделей, ясен пень, они генерятся по 3D указателям). Сначала располагаем прямоугольные блоки (они пока существуют лишь в коде).Создаем блоки (сначала блоки этажей, затем блоки корридоров, затем блоки комнат, затем блоки специальных объектов), затем присваиваем блокам биом (согласна сгенерированой 2D карте на каждый этаж). if pixelofMap == RGB (20, 20, 20) {block -> biome = BiomeIndex.Classic;) Как то так.
Финальная стадия - создание полигонов на основе этих блоков. Присвоение каждому из них текстуре, согласно биому. Генерация 3D указателей статик моделей для каждого блока. Генерация 3D указателей для entity тригеров и источников света. Презентация всего этого добра пользователю.
Следующие слова лучше не читать, если вы любите картинки, а не кучу текста. Примерно через недельку нарисую кучу схем где наглядно видно весь процесс.
Вот смена биома еще ладно. Всем пропам говорим "Сдохни с анимацией", текстурам играть анимацию смены. Смена блоков немного затруднительно, однако все равно понятна. Для каждого старого блока нужно проверить на наличие идентичного по размером нового блока, который находится в определенном радиусе. Далее выбор: 1) Вся комната с "треском и шумом" сдвигается на новую позицию, где определен новый блок. Если размеры чуть чуть отличаются, то сдвигаются и стены. Комната может сдвинутся с одного этажа на другой, таки да. Кроме случаев с подвалом, но там своя атмосфера, да... 2) Комната тпшится на новое место, правда тоже с треском и шумом. Точнее с спецэффектами. А может и без них, тогда для игрока будет "SURPRISE MATHAFACKA".
Настоящий пздц происходит если коллапсирует корридор и лестница (лестница - отдельный спец. блок). Тогда проверяются все старые блоки которые связаны с ним, и далее происходит то что описано выше. Но может случится пиздец. Это когда комнаты коллапсирует БЕЗ смещения или телепортирования. Тогда все что находится в них - дохнет, кроме случаев с некоторыми анимациями (некоторые анимации разрушают стены или пол/потолок, позволяя перебраться в другую комнату пока не поздно).
Я вчера целый день думал над одной дилемой. Описаную выше систему можно сделать совместимой с сетевой сериализацией. Говоря человеческим языком - можно сделать мультиплеер с такой вот системой генерацией. Но надо закладывать такую систему изначально, а это дополнительный геморрой. Но потом будет весело. Или все таки не стоит?
Ориентировочная дата начала написания системы генерации: середина августа. Возможно раньше, а возможно гораздо позже. Я склоняюсь ко второму варианту, увы...
Только есть один момент. Я её напишу. Это точно. ТОЧНО! Рано.... ну или поздно.
суббота, 15 июня 2013 г.
суббота, 8 июня 2013 г.
Одна из тупость Блендера
Нет, сам по себе процесс творения анимации нарекания не вызывает, проблема кроется в завершении. В чем именно? В запекании....
понедельник, 27 мая 2013 г.
среда, 22 мая 2013 г.
SCP-470 Dev Note
Хотя программирование на С++ пошло. Короче объявляю май месяцем программирования.
Узнал наконец-то страшную тайну WinAPI и DirectX. Не полностью конечно, но это не надолго.
Кроме того, скорее всего придется писать плагин для Unity, который управляет генерацией SCP, и правильно регенерирует его в режиме реального времени. До этого момента делать новые модели смысла не вижу.... Потому что без генерации игры может даже и не быть....
Алсо, есть идейка написать одно приложение. Создание моделей по нодам. Идея не нова - Autodesk Softimage это уже делает (гуглите кому надо, жоская прога), однако главная цель - создание динамических моделей, которые меняются согласно нодам в режиме реального времени. Надо ли говорить зачем?)
четверг, 16 мая 2013 г.
Регистрация доменов
Хочу регать либо в .com либо в .net зоне. Скорее всего для игры будет .net, для студий .com
Сам операция будет произведена завтра, ибо нехуй откладывать в долгий ящик.
Несмотря на то, что сейчас у меня фигурирует blUe Day Team, скорее всего будет произведена запись как blUe Day Studio, поскольку регаю на долгое время.
Сайты.... чтож, кое какими навыками я все таки обладаю. Ну как...
Движок написать я несмогу, но статик сайты сделать - за милую душу.
Сон и работа. Работа или сон?
Хочу работать (в смысле по своему проекту, а не на "работе"), поэтому я выбираю работу.
Организм выбирает сон.
А у этой сволочи кое-какой приоритет, поэтому ее решение частенько преобладает над моим.
Суть разногласия в том, что я работаю 5/2, тогда как мой организм, можно сказать, официально поддерживает только 2/2 график.
Поэтому мне, волей-неволей, пришлось сбелать среду - техническим выходным. Это когда я прихожу с работы и сразу ложусь спать.
Стало несколько лучше, но в последнее время сил заниматься проектами становится все меньше и меньше (нахуй родители затеяли ремонт? Эхх...). Сегодня впервые сделал две модели находясь на работе, благо теперь все более менее оптимизовано и я уже могу начинать прикалываться :D
Но темп моей работы над проектами меня вообще не устраивает. Абсолютно...
вторник, 7 мая 2013 г.
Кто понимает с++?
Аррррр, задолбало! Кто-нибудь может обьяснить мне как курить динамические типы данных в с++?
Все эти * и & меня выбешивают. Каждый раз читаю и каждый раз попадается на глаза всякая хуйня. К примеру вторая ссылка на объект обьясняется хорошо, но почему то умалчивают процесс создания переменых помеченых звездочкой.
Просто у меня есть предположение, что функциям, которые требуют динамическую переменную нужно в качестве параметра передавать адресс памяти в ОЗУ где находится переменная, просто все молчат об этом... Я просто где то это увидел, но щас вспомнить немогу.
Передавать нужно через оператор адресса (кажется &.... я прав, да?). Скорее всего не так, иначе бы тестовый проект у меня компилировался.
Прошу отписаться в комментариях или ко мне в скайп: sergej_1965
суббота, 27 апреля 2013 г.
Время идет.... но разработка не стоит!
В каждой папке по несколько моделей:
Кое где еще по одной модели. Кроме всего этого добра еще есть куча доков, куда я скидываю всю текстовую составляющую (показывать не буду ;) ). Еще иногда затрагиваю скриптовую часть (3 скрипта уже есть). К сожалению здесь идет не так бойко как с моделями - нехватает опыта. Кроме того есть несколько общих субстанцев:
Впереди май. Впереди праздники. Впереди куча времени.
И я знаю на что я его потрачу ;) .
суббота, 20 апреля 2013 г.
Текстура с нуля до финала часть 1
Сразу объясняю: ЭТО НЕ ПРОСТО ИНСТРУКЦИЯ. Здесь не только говорятся действия, но и объясняется почему они делаются так а не иначе. Потому что я периодический забываю причину и снова начинаю экспериментировать, а это не есть good.
Картиночки прилагаются, само собой (просто текст читают только ботаны).
Ладно, начнем.
Дано:
144 треугольников между прочим.
В первую очередь отделяем зеркальные части модели. Я это делаю еще на стадий моделирования, чтобы не парится.
Делаем UV полноценной части (то что черными линиями выше - полноценная модель). Подготавливаем UV к запеканию.
Можно запекать AO но убедитесь что зеркальная часть не будет участвовать в запеканий, а то казус выйдет (сбросьте с неё текстуру). Если не сделать, то зеркальную часть система запечет дважды, с известными проблемами.
Теперь дело за мелкими деталями. Раньше я их не делал, потому что они отъедали кучу полигонов, но после открытия такой штуки как Normal_add в Субстанце и понимания, что для одной модели порой делается несколько карт нормалей, которые потом соединяются.
Ну, на моем стуле нету таких деталей... но... для примера они нужны... хорошо! Допустим у нас есть милые железные хрени.
(незабываем в опциях указывать Selection to Active)
В них много полигонов поэтому они в игру:
Но добавить эти детали в карту нормалей было бы неплохо.
Главное: корректировать значение в Selection to Active, чтобы небыло артефактов по типу таких:
(я там еще этих заклепок понаставил, но уж точно не на спинку стула)
Потом в Субстанце мы будем добавлять эти детали вместе с деталями диффузной текстуры.
К сожалению во всей этой историй есть проблема. Blender незнает что такое Curvation map, и её необходимо получать от других приложений. В частности - в том же субстанце.
Как делать curvation map рассказывать не буду - гуглите, там все просто. Главное - дать ему модель без любых зеркальных частей, но это общее правило при запеканий где либо вообще.
Ну а дальше работа в Substance. Это будет во второй части. Всем добра ^_^.
понедельник, 8 апреля 2013 г.
Первый блин с использованием планшета
Сегодня мне удалось долгое время поработать с планшетом. Сразу скажу, что все следующие рисунки были сделаны без каких либо референсов (чисто из башки), а посему являют собой совокупность моего скилла рисования и фантазий (и то и другое плачевное, но обо всем по порядку).
понедельник, 1 апреля 2013 г.
Восстановления обычного графика
воскресенье, 31 марта 2013 г.
Пишем скрипты для Illustrator
Альфа версия.
Таки нашел время, смотрите под катом!
пятница, 22 марта 2013 г.
ВНЕЗАПНЫЙ апдейт
вторник, 19 марта 2013 г.
Небольшой апдейтик
Отличительный процесс: создание нового PH персонажа, для моих и не совсем игр:
Да, я сделал его в MakeHuman. Риг пришлось доделывать, IK костей небыло, впрочем это не заняло много времени.
Лицевой риг шел в комплекте, да вот только он на шейповой системе. Т.е. в Unity он не будет работать.
Документация SCP-470 закончена, провожу GL тесты (рисования линий в редакторе). Нехватает опыта чтобы сразу взять и сделать сложную генерацию уровня. В принципе система такая:
- Сначала по заданому объему (boundary box) расставляются блоки. На начала генерации все имеют тип EMPTY
- У каждой модели есть свои объем занимаемых блоков (к примеру у моей тестовой стены 16 блоков). некоторые модели имеют не квадратную форму (проломы), поэтому такая система имеет смысл
- Генератор определяет потолок и стены исходя и объема. Все нужные блоки получают тип WALL и FLOOR соответственно. Кроме того комнаты помечаются особыми флагами (к примеру "комната из завода", "комната из дома будущего" и т.д.). Разумеется есть множество других типов блоков, но я не буду всех их рассписывать
- На следующей фазе он начинает размещать модели, исходя из расстановки блоков и флагов комнат. К примеру возле комнаты из будущего он будет размещать только модели стен из будущего (ваш КЭП). В зависимости от рандома и обстановки будут размещаться некоторые детальные объекты (стена с дыркой, куча мусора, пролом в потолке). Все действия согласуются с блоковой системой.
- Лестницы скорее всего будут в виде большой прямоугольной области. Лестничные области будут вычисляться в первую очередь, поскольку они являются ключевой частью геймплея.
- Третия фаза: исходя из флагов комнат, начинается спаун пропмоделей. Скорее всего флаги уже будут содержать информацию о типе комнаты (например "класс") и спаунить соответствующие модели из заготовленого enum'а. В корридорах иногда будут спаунится модели общего типа и корридорного. В основном это будет сломанные (или не сломанные) батарей отопления, всяческий мусор и прочая шняга.
- Четвертая фаза: Расставляем свет. Ну как. За зданием работает "солнце", что немного облегчает работу, но около каждого окна надо ставить волюметрический источник, just for beauty. Большинство лампочек в SCP будут либо разбиты либо просто не гореть, но.... бывают исключения. В принципе эта фаза короткая, поскольку большей части работает с волюметрическим светом и партиклами.
- И наконец пятая фаза, и пожалуй одна из самых сложно реализуемых. Старая версия уровня плавно перетекает в новую. Все дело в том, что предыдущие фазы вычисляются за кадром в отдельном потоке, который имеет низкий приоритет (по сравнению с игровым потоком). Когда вычисление закончено, то срабатывает скрипт, который врубает пятую фазу. И она должна работать RealTime и желательно не вешать компы вусмерть. А сие не так просто.
четверг, 14 марта 2013 г.
Скилл растет, но ясность огорчает...
Потому что я узнал, что интересующая меня технология называется raymarching, и полностью она введена именно в directX 11, о котором моя видеокарта (radeon hd 4650) не слышала. Еще один лишний повод побыстрее найти работу, чтоб купить новый ноутбук.
Ну блиииииииииин. Чувствую в долгосрочном будущем я изучу directX 11 вдоль и поперек. Особенно все что касается raymarching`а, но и не только его. Какая то там тесселяция нервно курит в стронке посравнению с реймарчингом, на мой взгляд.
Аарррррг, я точно создам несколько анимированых волюметрических текстур и буду пытать их в моих тестах. Создавать буду скорее всего в Блендере, путем экспорта 3D волюметрий. Если конечно там есть такая опция...
А если нет.... учитывая как меня задела эта технология, то я собственный скрипт написать могу. Вот блеать специально питон выучу и напишу скрипт для Блендера, который будет экспортировать анимированую волюметрию в 3D текстуры.
воскресенье, 10 марта 2013 г.
SCP объекты-сооружения. Результаты опроса.
Быстренько пробежавшись по SCP энциклопедий (люблю её ^_^) я выбрал несколько кандидатов, которые я смог бы реализовать. И устроил опрос.
суббота, 23 февраля 2013 г.
четверг, 14 февраля 2013 г.
Творческих групп 3D анимации.... нет?!
Как же это все печально....
Сегодня я попробовал поискать творческую группу, которая занимается съемкой короткометражек (даже неважно каких) и 3D анимации.
У меня неполучилось! Я искал в vk.com и в гугле! Мне попадались множество разных творческих групп и объединений, занимающихся музыкой, ИЗО и конечно же вокалом (причем вокальных кружков просто дохера, плодятся как кролики >_< ). Были и те, кто занимался анимацией, но на примитивном уровне (стопмоушн или вообще ручная анимация). Про моушн графику и 3D анимацию наши творческие таланты видимо не слышали.... А ведь делать ее не так уж и сложно (во всяком случае легче чем ручную анимацию)!
Не, я знаю что есть коммерческие творческие группы которые этим занимаются, но я сейчас говорю про ОТКРЫТЫЕ творческие организации, где каждый может присоединится к творческому процессу вместе с единомышлениками. Как это щас происходит с вокалом и ИЗО.
Вот в индий один чел смог собрать подобную группу. А мы не можем... Почему? Потому что мы DNIWEEEEEEEEEE!!!!
пятница, 1 февраля 2013 г.
Unity Texture Sheet Animation
Как видно анимация работает, и артефактов незаметно. Я ожидал каких-то подводных камней, поэтому сразу не решился делать сложную анимацию (хотя технологию я знал). Но опасения были напрасны - все заработало с первого раза. Под сложной анимацией я подразумеваю бабочек, которые будут
Вот щас я думаю - создавать их в Blender или в After Effects?
И да. Завтра намечается одно дело. Серьезное дело, сулящая деньги. Нужно будет санимировать нарисованого персонажа. Т.е. сделать 2D риг, настроить его, и собственно санимировать. И не забыть про сцену. Ну это мы умеем....
Кроме того я планирую создать туториал по меканиму сразу как только закончу делать персонажа.
вторник, 22 января 2013 г.
Особенности национального текстуринга
Поэтому мы делаем через систему N.I.P.E.L:
Вот еще одна текстура из той же оперы:
Рендерил в ортографическом режиме. Кстати, текстуру еще не обработал в фотошопе. Хотя исходник мне нравится - именно такой какой я хотел :D .