Fr, 2024-03-29, 14:21
Diablo: The Hell
Приветствую Вас Новичок | RSS
Главная | Дневник разработки тх2 - Diablo: The Hell - forums | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Mordor  
Diablo: The Hell - forums » Форум The Hell » The Hell 2 » Дневник разработки тх2 (Спустя полгода таки создан :-))
Дневник разработки тх2
Ярик Date: Mn, 2011-06-06, 22:24 | Message # 1
Breast Plate
Группа: TH team
Посты: 1178
Репутация: 34
Замечания: 0%
Статус: Offline
тема создана чтобы не флудить и не разговаривать с собой в теме тестирования сборок.
мне пока нечего сюда писать так как в армии пока так и не нашел возможности работать с кодом.
зато дд есть что сказать. так что остаётся попросить его заглядывать сюда почаще и рассказывать как идут дела. с одной стороны форумчанам будет интересно а с другой может кто что посоветует, какие то мысли дельные выскажет...

Добавлено (2011-06-04, 15:02)
---------------------------------------------
С увольнением облом. только завтра с утра и до вечера. поробую что нибудь сделать. ну и привести ноут сюда.

Добавлено (2011-06-05, 14:45)
---------------------------------------------
Сделал алтарь превращения белых вещей в синие.
Но так как у меня нет студии 2010 придётся повозиться чтобы запихать изменения в сборку. Тут выложу куски кода с пояснениями куда их пихать.

Добавлено (2011-06-05, 15:03)
---------------------------------------------
dataseg.cpp

//Добавляем сообщение нашего нового алтаря.
~3488 char *StringPtrTable[55] = {
~3488 char *StringPtrTable[56] = {

// и в конце дописываем выводимое сообщение.
~3507 , aYouFeelRefresh, aThatWhichCanBr// 53
~3507 , aYouFeelRefresh, aThatWhichCanBr, "Even the crap happens is useful."// 53

// Кстати это отличный способ вывода данных на экран. Надо сообщения от кодов и ещё какие нибудь сообщения сюда дописать.

old_interface.cpp

// добавляем код для проверки алтаря
~2753 extern bool ShrineTest;

~2770 } else if (!strcmp(TalkPanelMessage, "shrine")) {
ShrineTest ^= 1;
CloseTalkPanel();
return;
// И тот и другой код просто добавляем.

thehell2.cpp
// Тут собственно основной код алтаря
// добавляем переменную для теста до функции
bool ShrineTest = false;
//----- (004517D4) ----

// В этой же функции добавляем проверку до свича
// Для теста
if (ShrineTest) {
v6 = 34;
}
switch( v6 ){

// вставляем 34 кэйс. Код ниже

case 34:
if( PlrIndex != CurrentPlayerIndex ) {
return;
}
ShowOnScreenMessage(55);
{
Player& player = Players[CurrentPlayerIndex];
// проходим по всем вещам на теле и в инвентаре
for (int i = 0; i < 7 + player.InvItemCount; i++) {
Item& item = player.OnBodySlots[i];
if (item.MagicLevel == 0 && item.ItemCode > 0 && item.ItemCode < 11) {
// Создание магической вещи из обычной
Item tempItem;
__int16 withDLVL;
int offerLevel = DungeonLevel*2 + 16*Difficulty;
memcpy(&tempItem, &ItemsOnGround[1], 0x174u);
memcpy(&ItemsOnGround[1], &item, 0x174u);
memcpy(&item, &tempItem, 0x174u);
InitRandomSeed(ItemsOnGround[1].guid);
PutMagicItemOnMap(0, offerLevel >> 1, offerLevel, 1, 1);
memcpy(&tempItem, &ItemsOnGround[1], 0x174u);
memcpy(&ItemsOnGround[1], &item, 0x174u);
memcpy(&item, &tempItem, 0x174u);
LOBYTE(withDLVL) = offerLevel;
HIBYTE(withDLVL) = BYTE1(offerLevel) | 0x20;
LOWORD(item.WithDLVL) = withDLVL;
item.Indefined = 0;
item.IsReqMet = CheckRequirements(&item);
}
}
}

goto LABEL_334;

// в функции выбора типа алтаря (00453403) меняем:
result = RangeRND(0, 34);
на
result = RangeRND(0, 35);

Вот и всё. Новый алтарь готов.

Добавлено (2011-06-05, 21:17)
---------------------------------------------
В принципе это универсальный способ создания алтарей. если есть ещё идеи пишите, воплотить пустяк. заодно с каждым новым алтарём шанс на выпадение каждого уменьшается. вечно жаловались на бег по алтарям для замаксивания статов. ну так сейчас шанс на появление каждого 1/34 т.е. 0,02941176. 3% а ежели их так же как и уников будет за 500 то шанс будет 0,001. 0,1%. не представляю каким задротом нужно быть чтобы с таким шансом замаксить статы :-)

Добавлено (2011-06-05, 21:22)
---------------------------------------------
Ну и в принципе эффект можно разнообразить условиями. к примеру если выпал эффект добавления стата а он уже замаксен то можно в том же эффекте или выдать другое сообщение и/или сделать другое действие.

Добавлено (2011-06-05, 21:39)
---------------------------------------------
Также помимо алтарей уже полностью изучена миникарта и реальным стало добавление на карту различных обозначений. от положения монстров до различных препятствий

Добавлено (2011-06-05, 21:59)
---------------------------------------------
Ну и все включения выключения показа на карте различных штук можно поставить на предметы, магию, алтари или в меню. это уж как решит геймдизайнер

Добавлено (2011-06-05, 22:11)
---------------------------------------------
Инвентарь и диалоги тоже хорошо изучены. можно уже что нибудь придумать для них. про простейшие улучшения диалогов я уже писал. а в инвентаре таки надо разобраться с применением таранов к вещам. до этого я не разобрался и оставил на потом. а сейчас увидел что это просто файл из 256 байт каждый из которых обозначает новый цвет для соответствующего цвета из стандартной палитры. в таком случае я с лёгкостью могу написать функцию применения тарана к вещи. другой вопрос в том как в зависимости от аффиксов и возможно от заклинания палки выбирать таран файл. и не лучше ли придумать что то другое. тесты покажут.

Добавлено (2011-06-06, 22:24)
---------------------------------------------
Недавно уже поднимали вопрос о то чтобы не показывать на экране того что игрок в принципе видеть не может. планировку комнат за стенами где ещё не были и т.п. в принципе можно сделать как в старкрафте и варкрафте "туман войны". т е там где ни разу не были просто черный экран. где были рисовать но так это в последний раз видели. если например дверь была закрыта тогда когда от неё отошли тогда и рисуем открытую дверь. даже если её давно закрыли. движущиеся объекты от монстров до магии на тумане не рисовать. а где сейчас есть показывать всё как есть. при этом эту область видимости можно и на голема распространить. и на других игроков. даже фичу сделать - перемещение камеры отдельно от игрока. или центрирование её на другом.

Edited by YarikMudry - Su, 2011-06-05, 15:02
 
Fatebringer Date: Tu, 2011-06-07, 11:25 | Message # 2
Studded Leather
Группа: Игрок
Посты: 46
Репутация: 1
Замечания: 0%
Статус: Offline
Отличная работа! все же код лучше выкладывать на http://codepad.org/ или http://pastebin.com/ просто удобней же.

Beard, Nerd, Android Dev
 
Ярик Date: Tu, 2011-08-16, 22:17 | Message # 3
Breast Plate
Группа: TH team
Посты: 1178
Репутация: 34
Замечания: 0%
Статус: Offline
ну мне много кода выкладывать не надо и разбираться в нём сразу из форума не предлагаю. достаточно тупо копипаста в обозначеные места, а там уже в студии легко разбираться.
вообще появилась идея писать где нибудь такие мини рецепты по добавлению новых типовых штук. квестов там, алтарей, диалогов и т.п. так легче начинающим программистам вливаться, а то я поначалу за что только не брался пытаясь хоть что то понять.

Добавлено (2011-06-07, 12:12)
---------------------------------------------
Ещё мне очень не понравился морф базовых вещей. когда вместо щита появился 2х клеточный кинжал занимающий 4клетки. надо бы написать саб пересчёта размера вещи при начале новой игры.

Добавлено (2011-06-07, 12:14)
---------------------------------------------
Впрочем неважно. базовые вещи вряд ли будут часто меняться. а морф вещей время от времени реально пережить :-)

Добавлено (2011-06-07, 12:14)
---------------------------------------------
Впрочем неважно. базовые вещи вряд ли будут часто меняться. а морф вещей время от времени реально пережить :-)

Добавлено (2011-06-07, 12:33)
---------------------------------------------
В следующий раз попробую начать делать показ информации о предмете в окошке рядом с курсором. за 1 день это нереально но хоть начну. само окно уже есть - такое же в котором изображаются диалоги и сообщения от алтарей. осталось его отображать рядом с курсором и писать в нем текст предназначеный для инфопанели. ну и для окна показа свойств уника тоже. делать окно большим не вариант а в маленькое может не поместиться так что нужно или реализовать перенос текст по словам или увеличение размера окна у предметов у которых много текста. ну это всё потом. за день если с отображением окошка разберусь уже будет неплохо.

Добавлено (2011-06-17, 09:45)
---------------------------------------------
Памятка себе. пиши только тогда когда есть что написать.

Добавлено (2011-06-18, 07:43)
---------------------------------------------
Ещё пару пунктов:
1 полностью перечитать всё написаное в разделе тх2 и кое что о нём за пределами раздела. Перебрать всю эту информацию выцепив отдельно актуальные баг репорты, предложения по нововведениям (в две категории одна то что можно легко сделать оставив игру такой же и те изменения которые можно сделать только кардинально изменив игру, даже не изменить а создать новую)
2 попробовать делать своего рода рецепты типовых изменений. как добавить алтарь, настройку в конфиг, код в талк панель и т.п. чтобы когда возникнет нужда это сделать не пришлось предварительно копаться в коде и старых коммитах. ни мне ни другим.

Добавлено (2011-06-20, 18:54)
---------------------------------------------
Не покидает весь день идея фикс по поводу введения фишек из АС 3.0. диспетчер событий, функции работы с графикой и т.п. это или нафиг не надо или надо лишь частично и не сейчас но голову забивает. надеюсь написание этой фигни тут позволит о ней с чистой совестью забыть.

Добавлено (2011-07-01, 22:18)
---------------------------------------------
Выдался двухдневный увал. За него попробую сделать ненужной инфопанель т.е. перевести всю информацию с неё на другие панели появляющиеся около курсора. Работаю на основе версии 640 или что то около того и в ней ещё нет талк панели с кодами. Так что когда сделаю можно будет просто посмотреть, оценить, а затем уже изменения если понравятся будут интегрированы в последнюю версию.

Добавлено (2011-07-02, 02:05)
---------------------------------------------
Сделал отображение информации о унике рядом с выделенной вещью. Завтра буду работать над динамическим изменением размера этого бокса и добавлением туда нужного текста не только об униках.
Далее по плану создание мини боксов с названием при наведении курсора на вещи на земле.
И создание полоски жизни с именем внутри у монстров.
Выделение вещей при нажатии альта как в д2 не обещаю ибо нужно больше времени на такое. Но позже если нужно реализую. К завтрашнему вечеру или послезавтрашнему утру выложу сборку погонять. Думаю всем будет интересно...

Добавлено (2011-07-02, 16:36)
---------------------------------------------
Возникла проблема прозрачности панели. Сейчас графический движок дьяблы позволяет делать только псевдо прозрачность. Путём чередования пикселей двух картинок. Вопрос возник из за того что непразрачная пель информации мешает особенно когда она велика, а прозрачности 50% самой легко реализуемой недостаточно для нормального чтения.
В итоге сделал прозрачность 20% Самое оно.
Сейчас буду пытаться настраивать плавающую панель информации для показа полной информации обо всех вещах а не только эффекты уников.

Добавлено (2011-07-02, 18:31)
---------------------------------------------
Итак. Тултип текст для вещей инвентря (вещи на поясе и теле туда же) сделан. Осталось сделать такой же текст для вещей на земле и полоску жизней с именем монстра. Но это уже не факт что успею.
Как только появится возможность передавать файлы выложу сборку с тем что уже сделал. Надеюсь понравится. В старой теме рисования новых панелей все единодушно решили что главную панель не сделать другой пока есть огромная инфопанель. Сейчас я сделаю так что она будет не нужна. Дальше дело за художниками)) Которым я предлагаю придумать дизайн панели без инфопанели.

Добавлено (2011-07-03, 08:39)
---------------------------------------------
Основная сложность тултип текста заключается в том что в инфопанель текст загоняется просто по факту нахождения курсора над предметом, монстром и т.п. А для тултип текста нужно знать прямоугольник в котором нарисовано то над чем этот текст выдавать. Определить это не всегда получается. Так как код отрисовки ещё не особо разобран а размеры в явном виде увы не используются...

Добавлено (2011-07-03, 08:53)
---------------------------------------------
Чтобы качественно и быстро производить изменения в интерфейсе нужно полностью разобрать и переработать код интерфейса. Сейчас там куча мала. Всё в кучу. И отрисовка и взаимодействие с клавой и мышкой и код всех кнопок и панелей в одной куче. Надо будет потом разобрать всё по небольшим обособленным модулям и перевести на ооп. Благо новый интерфейс недоделанный именно в ооп сделан. Но тоже куча малой...

Добавлено (2011-07-03, 09:20)
---------------------------------------------
Скорее всего до декабря то бишь до дембеля больше ничего интересного не будет. Разве что через месяц или когда в следующий раз с ночёвкой отпустят, попробую добавить русские шрифты. Это должно быть не слишком сложно. Но если сложно то увы... Банально времени нет ни на что глобальное и сложное.

Добавлено (2011-07-04, 11:58)
---------------------------------------------
Как вариант из не особо сложного - переделка меню покупки/продажи вещей. Вместо тексового представления - инвентарь торговца и покупка продажа за счёт перетаскивания вещей. для полностью адекватной работы нужно некоторое время но для демонстрации общих принципов времени должно хватить.

Добавлено (2011-08-16, 22:17)
---------------------------------------------
Сейчас снова думаю на счёт ускорения разработки. Есть несколько стандартных действий которые легко автоматизируются, но вручную занимают много времени.
Вот одно из них:

*(uint*)(playerPtr + 408)
перевести в вид
Players[playerIndex].Row

*(int*)((char*)&Players->OnBodySlots[4].ItemCode + v4)
В
Players[playerIndex].OnBodySlots[4].ItemCode

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

 
Diablo: The Hell - forums » Форум The Hell » The Hell 2 » Дневник разработки тх2 (Спустя полгода таки создан :-))
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024 Хостинг от uCoz