Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Crossroad in the Void: when the Ancients rise
DF2 :: ФОРУМЫ > Игровые форумы > Общий игровой форум
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
AlexYeCu
Цитата(feanor @ 06 Jul 2014, 16:31) *
Зачем? оО
Даже если нет встроенного генератора, что мешает реализовать его самому? Линейные конгруэнтные в полтора оператора.

Так lua. Там можно задать randomseed, но вот что для него брать? Если время, то в lua точность до секунды — не всегда достаточно. Поэтому добавляю ещё число из /dev/urandom.
Цитата
что мешает реализовать его самому? Линейные конгруэнтные в полтора оператора.

Мешает то, что я в этом дуб. Вариант «взять готовое» — он попроще. А так — накатать тулзу, придумать как её вызвать и т.д. Считать из файла проще. В общем, если кроссплатформенный генератор не проблема, то всё ок.
Цитата
//алсо, за сюжет буду думать позже, сейчас у меня полный и всеобъемлющий тупняк.

У меня, кстати, твоя аська в контакт-листе. Ты в ней вообще появляешься или пора прибивать? Если пользуешься каким-нибудь gtalk/xmpp — кидай в личку. Только учти, я в отпуске — задолбать разговорами могу любого. Тут помимо сюжета ещё куча всего требуется, те же описания рас, к примеру.
feanor
Цитата
Ты в ней вообще появляешься или пора прибивать?

Практически нет.
Jabber - feanor_s@jabber.ru, skype - oxfea_, vk - https://vk.com/id3523108


Цитата
Так lua. Там можно задать randomseed, но вот что для него брать? Если время, то в lua точность до секунды — не всегда достаточно. Поэтому добавляю ещё число из /dev/urandom.

Теория генераторов случайных чисел в две строки:
r0 = time()
rn+1 = (a*rn +c)%m, где a, c и m отсюда или отсюда
AlexYeCu
Генерация партии.
Пока нет произвольного ввода имени из-за проблем с многобайтовыми кодировками у love2d/loveframes, — все друг на друга кивают, не разберёшься, — из-за чего есть баги с вводом кириллицы. Если кто сталкивался — помощь пригодится. Пока же забросил вопрос в личку к китайским, японским и скандинавским товарищам, столкнувшимся с той же проблемой — надеюсь, ответят и разъяснят.
Плюс пока не делал информационное окошко или строку, поясняющее пользователю, почему партию нельзя создать с текущими настройками (не все очки статов распределены, не все нужные навыки выбраны и т.д.). Расы нужно балансировать и калибровать, а нет пока даже полного списка, ибо ресурсы. Дизайн можете оценить сами. Но основной функционал есть.
AlexYeCu
Совсем забыл… Реализована ещё одна мелочь.
AlexYeCu
Кстати говоря, а есть ли на форуме приличные дизайнеры уровней, которым данный проект интересен? Дизайнеры как в плане «собрать из готовых элементов», так и в плане изготовления этих самых элементов.
Orzie
Разве что карты для хоты ребята делают, хотя может и зажгутся идеей, если будет что-то с гуи)

И побольше тыренных тем или иным образом ассетов и спрайтов с мм6-8
AlexYeCu
Запрос на решение задачи коллективным разумом. Впрочем, индивидуальные мнения тоже интересны.
В настоящее время nosferatu занят разработкой UI для обсуждаемого проекта. Один момент вызывает затруднения, описание ниже.

Есть три режима взаимодействия персонажа с игровым полем и мобами. Условно их можно назвать «нейтральный», «осмотр» и «поиск пути».

В «нейтральном» режиме персонаж просто стоит на месте, клики по мобам и неписям не вызывают атаку, клик по игровому полю скроллит поле так, чтобы место клика оказалось примерно в центре. Отображается поле зрения всех партийцев.

В режиме «осмотра» персонаж крутится вокруг своей оси в зависимости от положения курсора мыши. Поле зрения ограничено только его собственным. Клик по мобу в таком режиме вызывает дистанционную атаку (если к этому нет препятствий), клик по полю может вызывать дистанционную атаку на гексу (если выбранный вид атаки это позволяет).

В режиме «поиска пути» постоянно отрисовывается путь к выбранной гексе, при клике — персонаж идёт к этой гексе, либо объекту на ней размещёёному. Клик по мобу или неписю во время битвы вызывает атаку ближнего боя (если моб/непись в пределах досягаемости), в мирное время — открывает диалог. Отображается поле зрения всей партии.

Я использовал следующие переключатели индикаторы для этих режимов: перчатка (просто висит, либо тычет пальцем в экран), подзорная труба (сложена/разложена) и сапог (голенище смято/расправлено). Всё это вы можете видеть на последних скриншотах.

nosferatu предложил заменить сапог на компас (с разными положениями рычажка и стрелки, либо с открытой/закрытой крышкой), трубу, вроде бы, пока не трогаем.

Внимание, вопрос! А что использовать для обозначения «нейтрального режима»? У кого какие идеи?


Концепт nosferatu:
IQUARE
Относительно ступеней навыков: эксперт - мастер - грандмастер будут получаться так же, как в ММ6-8, с помощью учителей? Если да, то все ли уровни, скажем, грандмастера будут повышаться просто за деньги/уровень навыка, или для выполнения некоторых из них нужно будет выполнить особые условия (как в ММ6)?
AlexYeCu
Цитата(IQUARE @ 20 Jul 2014, 20:38) *
Относительно ступеней навыков: эксперт - мастер - грандмастер будут получаться так же, как в ММ6-8, с помощью учителей? Если да, то все ли уровни, скажем, грандмастера будут повышаться просто за деньги/уровень навыка, или для выполнения некоторых из них нужно будет выполнить особые условия (как в ММ6)?


С помощью учителей, при наличии 5,10,15 и 20 очков в повышаемом навыке. Отдельных квестов именно на повышение степени не планировалось, но мастера и грандмастера можно будет взять после первого и второго повышения, для которых как раз должны быть выполнены соответствующие квесты., Над третьим повышением (для эксперта) думал, не уверен, нужно ли. Планирую разрешить повышение любого доступного для данного класса навыка до эксперта, а вот мастера или гранда в том же навыке уже смогут брать далеко не все.

Т.е. если чародей может взять кинжал или посох, то он сможет прокачать их до эксперта. А вот дальше — увы, надо быть вором или монахом.

Напоминаю, что базовых класса планируется 4, ветвления идут по ходу продвижения, чаще всего по принципу светлый-тёмный-нейтрал, но вряд ли он будет очень строго соблюдаться.

Но это пока всё довольно примерно, возможно будут корректировки. Плюс вопрос потребных ресурсов, напоминаю, что людей в проекте я один пока. Переговорил с некоторыми форумчанами на предмет помощи/объединения усилий, но там уж как получится — всё же хобби, а не fulltime-разработка.

На данный момент думаю, как лучше сделать здания. Рассматривал три варианта:

1. Как в MM: коробка с картинкой и кнопками диалогов/квестов.
2. Как в Fallout/Arcanum/Eschalon — дома без крыши/с исчезающей крышей, по сути являются отгороженными от улицы закутками, неписи в них полноценные мобы.
3. Как в ToEE — каждый дом данжен.

Пока решил основным делать первый тип, с, возможно, отдельными вкраплениями 2 и 3.
Vade Parvis
Цитата(AlexYeCu @ 15 Jul 2014, 00:31) *
Внимание, вопрос! А что использовать для обозначения «нейтрального режима»? У кого какие идеи?
Навскидку приходят в голову роза ветров или карта (как вариант — циркуль на фоне карты, но тут, наверное, возникнет ненужная ассоциация с режимом передвижения).
nosferatu
Цитата(Vade Parvis @ 28 Jul 2014, 12:21) *
Цитата(AlexYeCu @ 15 Jul 2014, 00:31) *
Внимание, вопрос! А что использовать для обозначения «нейтрального режима»? У кого какие идеи?
Навскидку приходят в голову роза ветров или карта (как вариант — циркуль на фоне карты, но тут, наверное, возникнет ненужная ассоциация с режимом передвижения).

Карта на столе уже забита за, собственно, картой.
У меня была мысль немного их поменять местами и сделать нейтральным режимом трубу, режимом поиска - компас, а для режима осмотра - старую керосиновую лампу.
AlexYeCu
Итак, скорость разработки в августе была резко снижена, тем не менее кое-какой прогресс есть.
Например, добавлена поддержка зданий: многогексовых объектов, при подходе к двери которых можно начать разговор с их многочисленными жильцами. Чуть позже добавлю возможность торговли и захода внутрь (a la вампирский данжен в Таталии).
Кроме того, добавлен ряд мелких деталей вроде гобеленов/рисованных карт и прочей пригодной для таскания в инвентаре и рассматривания фигни.
Должен констатировать, что команды я так и не собрал, так что игры, похоже, не будет. Во всяком случае до того времени, как я выйду на пенсию, да и тогда не факт. Движок пока продолжаю потихоньку пилить. Подумывал переключиться на другую вселенную, хотя бы и на свою собственную, но ресурсов и в этом случае нужно очень много, плюс замена уже имеющегося инвентаря, изменения в механике и т.д. Как-то так.
Vade Parvis
Цитата(AlexYeCu @ 01 Sep 2014, 21:07) *
Итак, скорость разработки в августе была резко снижена, тем не менее кое-какой прогресс есть.
Например, добавлена поддержка зданий: многогексовых объектов, при подходе к двери которых можно начать разговор с их многочисленными жильцами. Чуть позже добавлю возможность торговли и захода внутрь (a la вампирский данжен в Таталии).
Кроме того, добавлен ряд мелких деталей вроде гобеленов/рисованных карт и прочей пригодной для таскания в инвентаре и рассматривания фигни.
Должен констатировать, что команды я так и не собрал, так что игры, похоже, не будет. Во всяком случае до того времени, как я выйду на пенсию, да и тогда не факт. Движок пока продолжаю потихоньку пилить. Подумывал переключиться на другую вселенную, хотя бы и на свою собственную, но ресурсов и в этом случае нужно очень много, плюс замена уже имеющегося инвентаря, изменения в механике и т.д. Как-то так.
Возможно, стоит как-то отдельно выделить на форуме клич о наборе? Так-то у нас тут 2d/3d-художники имеются, и имеющие опыт написания игровых текстов знатоки лора MM, и т. д. — но многие, похоже, просто не заметили изначального призыва.
AlexYeCu
Цитата(Vade Parvis @ 03 Sep 2014, 16:39) *
Возможно, стоит как-то отдельно выделить на форуме клич о наборе? Так-то у нас тут 2d/3d-художники имеются, и имеющие опыт написания игровых текстов знатоки лора MM, и т. д. — но многие, похоже, просто не заметили изначального призыва.


Я думал, я вполне чётко обрисовал ситуацию в первом посте. Если это не так, попробую рассказать другими словами.

Итак, на данный момент есть потихоньку допиливаемый движок, довольно скромный в плане графики, но вполне пригодный для олдскульных crpg, для тех, что недалеко ушли от настолок. Пока нет ряда моментов: перехода с уровня на уровень, загрузки/сохранения, не реализованы квесты, учителя, торговля (последние два пункта пишутся за день-два вместе с тестированием, да и с остальными не сказать, чтобы сложно, просто руки никак не дойдут, если честно), в остальных сферах изменения количественные в основном ожидаются, да правка багов и недоделок. Что в движке есть — см. первый пост и комментарии.

Чего нет? Графики.

В первую очередь мобов и спрайтов с их анимациями.
Эффектов для заклинаний, всевозможного огня/льда/яда на земле и т.д.
Элементов для создания карт: бэков, объектов, декалей. С бэкграундом ещё думаю, не сделать ли его косоугольным или «типа изометрическим».
Зданий для карт.
Интерьеров зданий.
Портретов, иконок заклов, UI — тут, возможно, возьмётся Носферату.
Вступительного ролика или комикса. О заключительном пока говорить рано.
Просто красивых картин, которые можно спереть, притащить коллекционеру, таскать в рюкзаке и любоваться.
Иллюстраций для книг.

Многое из этого есть на уровне временных вариантов и заглушек, как в итоге выглядит — скрины есть в теме.

Звуков.

В первую очередь звуков мобов: атака, ранение, смерть. Потом понадобятся реплики партийцев, продавцов и т.д.

Текстов.

Любых, создающих атмосферу.
Пригодятся качественные диалоги, интересные многоуровненвые квесты, книги (точнее, от 1 до 5 разворотов таковых) и т.д.

Сюжета.

Есть только завязка, на мой взгляд неплохая, и задача на самое начало игры. Почти без изменения взято из WoX2.

Может, что забыл. Для одного человека проект слишком масштабный, но если соберётся команда — вполне можно сделать что-то достойное.

Чуть позже пригодятся навыки картоделов (простенький редактор есть и потихоньку обрастает функционалом)и тестеров. Но это всё при удачном развитии событий. Также хочу обратить внимание любителей настолок и crpg — возможно кое-какой инструментарий из проекта пригодится и им.

Если есть специалисты по glsl -шейдерам — задача тоже найдётся.
AlexYeCu


Что-то вроде редактора зданий, точнее простенькая утилита, помогающая забивать массив занятых зданием гекс, координаты здания на портянке со спрайтами, помечать двери и т.д.
AlexYeCu
Магия.

Огонь.
1. Огненная стрела.
2. Факел.
3. Огненный шар.
4. Защита от огня.
5. Огненная стена.
6. Щит ифрита (аналог огненного щита из Героев и Immolation).
7. Кольцо огня.
8. Мина.
9. Огненный веер (удар огнём перед собой по небольшой площади).
10. Инферно.
11. Метеоритный дождь.
12. Испепеление.

Воздух.

1. Статический разряд.
2. Шокер (снижает готовность/начисляет вв мобам вокруг дружественной цели).
3. Кулак ветра (отбрасывает на гексу и оглушает).
4. Защита от электричества.
5. Колокол (оглушение группы противников).
6. Щит.
7. Молния (не шаровая).
8. Прыжок (по сути короткая телепортация со всеми, кто вокруг).
9. Невидимость.
10. Ураган.
11. Цепная молния.
12. Падающие звёзды.

ВОДА.

1. Ледяной болт.
2. Ядовитый плевок.
3. Тушение воспламенения.
4. Защита от холода.
5. Кислотный удар (повреждает броню).
6. Заморозка.
7. Кольцо холода.
8. Хождение по воде.
9. Ледяной шар.
10. Лёд. (Покрывает землю льдом, кот. даёт дебаф на ловкость и скорость).
11. Иссушение (большой ущерб одиночной цели).
12. Стужа (массовый ущерб холодом, возможно массовая заморозка).

ЗЕМЛЯ.

1. Лезвия (шестерня из-под земли по одиночной цели).
2. Вездеход (сниженная цена передвижения по трудным ландшафтам).
3. Шипы.
4. Защита от кислоты.
5. Капкан/корни (Руки земли?).
6. Каменная кожа.
7. Каменная стена.
8. Волчья яма.
9. Взрыв камня.
10. Падающая скала (Цветение смерти?).
11. Землетрясение.
12. Искажение массы.

ТЕЛО.

1. Лечение.
2. Вред.
3. Кураж (восстановление стамины).
4. Защита от яда.
5. Лечение травмы.
6. Лечение отравления.
7. Мощь (бафф на силу и выносливость).
8. Пружина (бафф на скорость и ловкость).
9. Лечение болезни.
10. Подзарядка (восстановление вв).
11. Регенерация.
12. Общее лечение (в некотором радиусе от курсора).

РАЗУМ.

1. Страх.
2. Очарование.
3. Защита разума.
4. Ментальный удар.
5. Телекинез.
6. Исцеление разума.
7. Телепатия.
8. Забывчивасть (Молчание, запрет на каст).
9. Гламур (баф на харизму).
10. Берсерк.
11. Паралич.
12. Порабощение.

ДУХ.

1. Стрела духа.
2. Повернуть нежить.
3. Судьба.
4. Защита от проклятий.
5. Благославение.
6. Сохранение (не даёт умереть тяжело раненному).
7. Героизм.
8. Какой-нибудь защитный баф.
9. Удачный день.
10. Снятие проклятия.
11. Молитва (небольшой баф на все статы кроме удвчи и харизмы).
12. Ритуал пустоты (раздельный ущерб заклинаниями по площади в и вне зоны действия, внутри ритуала с точки зрения заклинаний — данжен).

СВЕТ.

1.Стрела света.
2. Элементаль света.
3. Уничтожить нежить.
4. Щит света (иммун к ущербу на одну атаку).
5. Ослепление
6. Замедление.
7. Массовый диспелл.
8. Луч света. - ? Воин света? (агро всех иобов)
9. Истинный свет (диспелл невидимости и снятие скрыта).
10. Солнечный луч.
11. Призматический свет.
12. Солнечный день (превращает ночь в день).

ТЬМА.

1. Поднять нежить.
2. Тёмная длань (Dark Gasp).
3. Проклятье
4. Отражение боли.
5. Контроль нежити.
6. Скверна (жертву нельзя лечить и баффить).
7. Неудача.
8. Осквернение (взрывает трупы врагов в поле зрения).
9. Жертва (убивает партийца, полностью восстанавливает hp,sp,st,rt остальным партийцам).
10. Перст смерти.
11. Душесос.
12. Геноцид (ущерб всем существам указанного типа на карте).

СОПРЯЖЕНИЕ (Разные стихии).

1.Кислотный дождь.
2. Левитация.
3. Грязь (Аналог зыбучих песков, вероятно, зыбучими песками и будет).
4. Голем стоппер (урон и стан големам и гаргульям).
5. Мегавольты (молниями по площади).
6. Бур (Пробивает стены в данженах).
7. Ледяной луч.
8. Имплозия.
9. Городские врата (На гранде будет работать ещё и как урезанный lloyd`s beacon для карт, где нет фонтанов).
10. Зарядить жезл.
11. Зачаровать пердмет.
12. Элементальный шторм. (Вероятно, ущерб огнём, электричеством и холодом по площади, возможно, спавн нескольких элементалей под берсерком)

ЖИЗНЬ (разные эго)
1.Уныние.
2. Меткостью
3. Бессилие.
4. Защита от болезней.
5. Сон.
6. Медитация.
7. Спешка.
8. Жажда крови.
9. Радость.
10. Воскрешение.
11. Бешенство.
12. Плеть духа.

ПРИРОДА (стихии + эго).

1 Камень в плоть.
2. Разморозка.
3. Гнев жуков.
4. Кипение крови.
5. Окаменение.
6. Сжигание маны.
7. Глаз волшебника.
8. Клон (фальшивый персонаж, сдувающийся с одного удара)
9. Элементаль огня.
10. Э. воды.
11. Э.воздуха.
12. Э. земли.

ИСКАЖЕНИЕ (тьма +стихии/эго).

1. Тёмное пламя.
2. Шрапнель.
3. Ядовитое облако.
4. Дыхание дракона.
5. Пандемия.
6. Лечение нежити (под вопросом, тьма + дух).
7. Одержимость (что-то вроде контроля, со сменой фракции и партии)
8. Загрязнение (Dark contamination) — отрицательный иммун свету и духу. Поражённый получает урон от солн. света.
9. Волна смерти.
10. Трансфузия.
11. Лунный свет (ущерб всем в поле зрения кроме нежити, нежить лечится).
12. Армагеддон.

СВЯТАЯ (свет + стихии/эго)
1, Святая вода (урон нежити).
2. Святая земля (земля даёт урон нежити, может какой-то бонус).
3. Кремация (уничтожает трупы).
4. Крылья света (телепортация в пределах видимости перед ходом).
5. Мститель (поражение светом ближайших мобов после смерти).
6. Палач.
7. Откровение/Прозрение (снимает одержимость и спавнит тварь, её вызвавшую, см. Crusaders).
8. Ангел-хранитель (спавн ангела, принимающего на себя часть урона).
9. Час силы (баф на все статы, как закл истекает — зачарованный гибнет)
10. Святой свет — маяк, приманивающий окрестных мобов.
11. Комета (урон элементами и светом).
12. Божественное вмешательство.

UP: Возможны некоторые перетасовки, но не слишком значительные. большая часть заклинаний из оригинальных школ сделана, из смежных — примерно половина.
Не совсем ясен мне пока механизм телекинеза: сундуки он открывать точно не будет, не нужен мне такой мегачит. Всевозможные рычаги, возможно, разбиваемые стены, возможно, активация реагирующих на наступание ловушек. Мобы отталкиваются воздушным кулаком, так что не в кассу. Можно навесить подтягивание мобов, правда. Оружие выбить нельзя. Что б на него ещё полезного накидать?
Аналогично задумался с землетрясением, пока что стан/страх на мобов в эрицентре, разрушение созданных магией стен и ям, разрушение стен-кторые-можно-разбить.
AlexYeCu


Сделал поддержку осадков. В общем, дождь и снег разной интенсивности цвета и наклона сделать не проблема. Пока, правда, не учитывается скорость падения (что для снега не очень хорошо), но это потом допишу. В общем-то, на такие вещи надо минут 5 времени.
AlexYeCu
Кстати, а можно переименовать тему? А то вот это вот «вседенной» не нравится.

Вопрос к коллективному разуму.

Я сейчас прописываю пассивные эффекты на оружие ближнего боя. Т.е. есть завязанные на удачу криты, удваивающие урон, а есть зависящие от мастерства эффекты вроде кровотечения, травм конечностей и глаз, дополнительного урона броне и т.д. эффекты распределяются с точностью до подкласса. Точнее так: каждому подклассу соответствет несколько эффектов.

Эффекты пока такие: hit, crush, chop, cut, pierce, tear с разделением по зонам попадания, плюс destroy и deblock (думаю, понятно из названия).

Интересуют мысли по поводу эффектов в зависимости от зоны попадания.

С hit и crush понятно: попали по голове — оглушили или стал дураком (stun, paralyze, charm, berserk, sleep, silence, потеря sp и т.д.); попали в тушку — выбили дух (stamina в ноль); конечности — переломы. Hit полегче (кулаки и посохи), crush потяжелее (дробящее).

Pierce может оставить без глаза или обеспечить пневмоторакс (не восстанавливается stamina).

Cut и chop при попадании по конечностям могут их травмировать (аналог перелома). Из травм конечностей, правда, пока обрабатывается только защитные техники — травма левой руки не позволяет ставить блок и т.д. Но буду менять.

Cut,chop, pierce, tear могу накладывать кровотечения.

Что б ещё такого придумать?
tolich
Цитата(AlexYeCu @ 30 Nov 2014, 14:51) *
Кстати, а можно переименовать тему? А то вот это вот «вседенной» не нравится.
Вообще-то, это делается редактированием первого сообщения темы, но, так и быть, поправил.
nosferatu
Цитата(nosferatu @ 07 Dec 2014, 00:51) *
AlexYeCu
Придётся на неделе храм сделать. И, возможно, учителей.
AlexYeCu
Кстати, а не знаком ли кто из форучан с разработчиками The legend of Erthia?
Пытался с ними связаться через Celestial Heavens, но что-то нет ответа. А на FB у меня аккаунта нет.
Интересно, что у них там было с Ubisoft, и как вообще Эрафия стала Эртией — может это писали уже где.
XEL
Цитата(AlexYeCu @ 07 Dec 2014, 22:46) *
и как вообще Эрафия стала Эртией

Просто взяли немного измененное название из вселенной ММ, в остальном эта игра имеет к последней отношение только некоторыми сходствами в геймплее.
AlexYeCu
Цитата(Царь XEL @ 07 Dec 2014, 22:58) *
Цитата(AlexYeCu @ 07 Dec 2014, 22:46) *
и как вообще Эрафия стала Эртией

Просто взяли немного измененное название из вселенной ММ, в остальном эта игра имеет к последней отношение только некоторыми сходствами в геймплее.

Подозреваю, что там всё было сложнее:

1. Память мне подсказывает, что ранее в названии таки фигурировала Erathia. Сам разработчик пишет:
Thanks for feedback. Erthia is a completely different story. I actually originally created it before Erathia existed in one of my earlier Rpg Maker 2000 games. Although my game is inspired by Might and Magic, it is not in the same world as Might and Magic.

2. Убики разрешили проекту использовать доставшийся им от 3DO шмот:
I want to thank Ubisoft and the MM team personally for granting LOE (non profit project) permission to use the resources from MM4-8. This has taken a huge load of stress of my back in creating LOE. I have seen some projects get shut down for this. LOE is proud to support Ubisoft in any way. Thanks again Ubsoft and the MM Team!

В общем-то, мне интересно: раработчик сам решил делать «чуть более свою» историю, или его «вежливо попросили»?
Vade Parvis
Лично мне кажется, что сами решили — Юби, при всех их недостатках, подчеркнуто-спокойно относятся к фанатскому творчеству.
AlexYeCu
Не осталось ли у кого контактов Gorjelin со старого Rolemancer`а?
И занимался ли кто помимо него письменностью Энрота? С Антагаричем всё более-менее понятно, там по указателям можно почти весь алфавит разгадать, не нашёл только Q,X и Y. Но вроде было ещё что-то по Tomb of Varn и, возможно, другим регионам?
AlexYeCu
Значит так, подумываю выложить наработки на github и продолжать разработку в более открытом режиме. Ибо кидать ссылки на dropbox не всегда удобно. Есть те, кто на этом собаку съел? Нужны кое-какие советы по организации всего этого хозяйства.
AlexYeCu


Видео.
Книжки, гобелены, карты, торговля (в разработке).
На гобелене и в книжке с изображениями существ использованы изображения от художниц Paira (fl.ru) и Skorpiowka666 (DeviantArt) (в ролике небольшая ошибка в нике: невнимательно прочитал и переиначил на D&D-шный манер, заметил, увы, после публикации).

Сулейман
А GUI контролы, ты сам делал или библиотеку какую-то использовал?
IQUARE
Список заклинаний окончательный?
Каким образом работают книги по навыкам?
Какие локации планируются?
AlexYeCu
Цитата(Сулейман @ 09 Jan 2015, 20:57) *
А GUI контролы, ты сам делал или библиотеку какую-то использовал?

В основном сам, хотя в ряде мест используется loveframes — текстовые поля, кнопки на стартовом экране и при генерации партии, etc. Подумываю со временем перетащить на loveframes и «инвентарные» интерфейсы — хоть код более читабельным будет. Подсказки по ПКМ делал сам: те, что были в loveframes не подошли.
Цитата(IQUARE @ 09 Jan 2015, 21:36) *
Список заклинаний окончательный?

Более или менее. Возможны миграции между школами, возможно что-то заменю в дополнительных школах — все изменения в пределах максимум пяти заклинаний.
Цитата
Каким образом работают книги по навыкам?

Смотря какие. Магические — точно как в might and magic. Три отличия: могут требовать более одной (до 4-х) школы (подобное было в mm9), пять градаций по мастерству вместо 4-х, большее количество школ.
А если те, где описаны приёмы боя, защиты, алхимия, etc. — они просто информационные, вроде алхимических рецептов в mm.
Цитата
Какие локации планируются?

Зависит от того, наберу ли команду. Сами по себе локации являются текстовыми двумерными массивами из нескольких слоёв (каждый слой — отдельный массив). Т.е. на одну локу надо:
1. бэкграунд (и массив с ним), набор гексов-декалей (и снова массив), набор объектов вроде деревьев, камней и прочего — это всё делается в редакторе.
2. Расставить здания (а сами здания надо нарисовать, а к ним в другом мини-редакторе сделать описания вида какие гексы занимают, где вход и т.д.).
3. Расставить сундуки и мобов (пока что ручками, плюс мобов ещё рисовать).
4. Прописать мобам ai, фракции, партии, прописать магазинам жильцов и ассортимент и т.д.
5. В будущем пунктов будет ещё больше: триггеры событий и квестов, дополнительные объекты вроде бочек, телепортов, пъедесталов, ловушек, кнопок.
Сулейман
Цитата
В основном сам, хотя в ряде мест используется loveframes — текстовые поля, кнопки на стартовом экране и при генерации партии, etc. Подумываю со временем перетащить на loveframes и «инвентарные» интерфейсы — хоть код более читабельным будет. Подсказки по ПКМ делал сам: те, что были в loveframes не подошли.


Ага ну я тоже только эту библиотеку контролов нашел, будем пробовать ее, спасибо.

Цитата
2. Расставить здания (а сами здания надо нарисовать, а к ним в другом мини-редакторе сделать описания вида какие гексы занимают, где вход и т.д.).


Чисто из того что пока нарыл - хотя движком и тайловыми играми занимаюсь всего неделю, так что могу и фигню сказать) Мне кажется лучше отделить графику от логики. Тригерры и все характеристики навесить на гексы. А поверх наложить спрайты зданий. Таким образом один объект в игре - спрайты со своей координатой плюс набор тайлов с тригеррами и свойствами. Обрабатывать только тайлы. То есть ты можешь чисто сетку тайлов создать со всей логикой, а стены, двери и всю остальную графику потом навесить по координатам тех же тайлов в редакторе - с этим проблем быть не должно. И не придется ничего описывать дополнительно.

Цитата
4. Прописать мобам ai, фракции, партии, прописать магазинам жильцов и ассортимент и т.д.


Ну это же довольно универсальная штука. Тем более я восхищен как на луа легко реализовать шаблоны описывающие игровые объекты, которые может и не программист писать уже.
AlexYeCu
Цитата(Сулейман @ 09 Jan 2015, 22:29) *
Тригерры и все характеристики навесить на гексы.


Пока триггеры описываются как-то так:
Код
    localtriggers={
    {x=29,y=10,dir=6,id=1},
    {x=37,y=13,dir=6,id=2},
    };


Т.е. x и y координаты, поворот (персонаж должен повернуться к двери), id (в данном случае для удобства, т.к. достаточно индекса в таблице).
За счёт специальных гекс можно задать координаты, можно поворот (если использовать 6 гекс), но как задать id? Как указать, что при заходе на этот триггер надр отображать соответствующей интерьер и неписей? Да чтоб без дикого оверхэда?

Цитата
И не придется ничего описывать дополнительно.


У меня и без того на гексы навешивается та же проходимость, к примеру. Плюс просматриваемость. Плюс звук шагов. Плюс затраты стамины и готовности на перемещение. Но всё это хранится в отдельных коротких таблицах, а значения для них задаются в редакторе. И каждый раз когда надо проверить гексу, берутся её координаты, по ним из 2d-таблицы берётся индекс, затем в меньших таблицах по этому индексу проверяются значения прохоимости и всего остального. Хоть какая-то экономия.

Цитата
Ну это же довольно универсальная штука. Тем более я восхищен как на луа легко реализовать шаблоны описывающие игровые объекты, которые может и не программист писать уже.


Ну как сказать… прописать ai и всё остальное значит добавть строку вида:

Код
table.insert(chars_mobs_npcs,{uid=0,person="mob",control="ai",defaultai="agr",ai="agr",dangerai="agr", x=15,y=15,rot=5,class="goblin",fraction="greens",party=1});

или
Код
table.insert(chars_mobs_npcs,{uid=4,person="npc",control="ai",defaultai="building",ai="building",dangerai="none",x=1,y=1,rot=6,class="goblin",fraction="bloggers",  party=2, name="Schors", chat=3,face = 7, shop=1});


Потом все эти строки скармливаются функции helpers.addMob(); которая, в свою очередь,заполняет таблицу нужными значениями, опираясь на полученные данные. Т.е. в ООП это было бы что-то вроде создания экземпляра класса моб. Просто я не люблю ООП, а уж его реализацию на метатаблицах в lua так и вовсе.

В дальнейшем вся информация для создания записей в таблице будет задаваться в редакторе. Это не сложно, просто сейчас есть более важные задачи.
AlexYeCu
Планируемые классы:

acolyte—wizard—mage—archmage
—necromancer—lich
—druid—archduid
—shaman—ubershaman
—sorcerer—warlock
—battlemage—masterarcher
healer—cleric—bishop—priest
—heretic—heresyarch
—druid—archduid
—shaman—ubershaman
—sorcerer—warlock
—initiate—monk—yeromonk
—ninja—sinobi
warrior—landsknecht—knight—champion
—crusader(templair)—paladin
—crusinant—deathknight
—mercenary—savage—barbarian
—fighter(?)—gladiator
—shooter—marksman—sniper
—hunter—ranger
—battlemage—masterarcher
—initiate—monk—yeromonk
—ninja—sinobi
rogue—robber—thief—masterthief
—killer—assasin
—trouvиres(трубадур)—ministrel—bard
—sicophant—seccol(сексот)—spy
—initiate—monk—yeromonk
—ninja—sinobi

Список примерный, приводится из расчёта на три продвижения.
Пояснения: у мага два основных пути, светлый и тёмный. Кроме того, он может выбрать путь друида, шамана или варлока. Эти классы очень похожи между собой (магия стихий и себя до мастера, алхимия до гранда), отличия в некоторых дополнительных воможностях, квестах на продвижение и т.д.
Клерик — аналогично (см. последнюю строчку).
Воин — три основных направления, в латники, бездоспешные или стрелки. Плюс дальнейшее деление.
Вор — путь, собственно, вора, путь убийцы, путь шпиона, путь барда (чисто социальный класс, не для первого прохождения, плюс требует толковых писателей для реализации).
Клерики, воины и воры при выполнении некоторых условий могут стать монахами.
Маги, возможно, боевыми магами (т.е. лучник-недомаг).
Список пока очень примерный, по нему не реализовано почти ничего.
Сулейман
Цитата
Ну как сказать… прописать ai и всё остальное значит добавть строку вида:

А что мешает ее вынести в шаблон с модулем, модуль назвать goblin. И делать вызов в духе Factory.create("goblin"), внутри функции просто делаешь require('goblin'), и создаешь таблицу копию этого гоблина, ну и ID ему присваиваешь конечно. И вот у тебя один шаблон гоблина, который можно вставить куда угодно.

Цитата
Просто я не люблю ООП, а уж его реализацию на метатаблицах в lua так и вовсе.

Отказ от ООП хорош, если ты можешь заменить его чем-то столь же удобным для тебя. Инкапсуляция при осторожном кодинге не нужна хватит и самоограничения, полиморфизм заложен самим языком, наследование можно заменить композицией в определенных случаях. Тебе фабрика объектов нужна на метатаблицах, а не ООП.
IQUARE
Цитата
sinobi

*shinobi

Ninja и shinobi - одно и то же, просто в разных вариантах чтения.
Грейд, может, по-другому назвать

Цитата
initiate—monk—yeromonk

Может, monk - initiate - master ?
Сулейман
Цитата
Плюс затраты стамины и готовности на перемещение.


Не уверен, что это нужно хранить в гексах. Если ты имеешь ввиду трудную местность. То лучше, сделать такой флаг для гекса и проверять его, чтобы определить затраты выносливости персонажа или монстра, так ты сможешь гибко настраивать затраты выносливости в зависимости от раскачки или других особенностей персонажа.

Цитата
Как указать, что при заходе на этот триггер надр отображать соответствующей интерьер и неписей?

Сделать гекс перед ним прозрачным? Если я правильно понял, речь идет про заглядывание в окно или дверной проем?
AlexYeCu
Цитата(Сулейман @ 10 Jan 2015, 20:06) *
А что мешает ее вынести в шаблон с модулем, модуль назвать goblin. И делать вызов в духе Factory.create("goblin"), внутри функции просто делаешь require('goblin'), и создаешь таблицу копию этого гоблина, ну и ID ему присваиваешь конечно. И вот у тебя один гоблин которого можно вставить куда угодно.


А смысл? Это ничему не поможет. Совсем.

Цитата
Отказ от ООП хорош, если ты можешь заменить его чем-то столь же удобным для тебя.


Видишь ли, я вообще не считаю ООП удобным. И обращаюсь к нему только в крайних случаях. Просто если человека обучали использовать ООП, для него это в религию превращается, растолковать, что вот лично тебе такой подход не нравится — невозможно.

Цитата
Тебе фабрика объектов нужна на метатаблицах, а не ООП.


Не люблю я метатаблицы. Мне вообще не очень непонятно, на кой сдалась эта кривая абстракция (ну т.е. там есть области применения, но довольно узкие). С моей точки зрения выглядит всё это так: есть язык lua без ООП. Фанаты ООП начинают ныть: «дайте нам ООП!». Появляются метатаблицы, фанаты начинают лепить из lua C++. Ок, им удобно: код выглядит похожим на сишный, счастье-радость. Но я-то не сишник! По мне всё это лишние абстракции: ну не вижу я разницы между вызовом функции и «типа метода типа класса» в lua. Да, можно и через них писать, но зачем? Ладно, если язык весь из себя ООП и по другому там писать — занятие для шибко упорных. Так нет же.
Сулейман
Цитата
Появляются метатаблицы, фанаты начинают лепить из lua C++.

Ну конечно все было не так). Метатаблицы нужны для переопределения встроенных операций - без этого тяжко. Вот к примеру два вектора хочу складывать, можно и метод написать, но зачем, если через плюс это удобнее делать. А наследование (заметь не ООП) просто красиво реализуется через __index. К тому же С++ обзавидуется возможности в рантайме создавать цепочки наследуемых объектов (не классов, а объектов!) это просто кучу возможностей открывает.
Планирую так сделать стек активных объектов с перекрытием команд. То есть верхний объект стека обрабатывает кнопку Esc, чтобы сбросить выделение к примеру, а кнопку P нет, пока он активен главное меню по Esc не вызывается, а пауза на Р продолжает вызываться.

Цитата
ну не вижу я разницы между вызовом функции и «типа метода типа класса» в lua.

Так нет разницы, или ты про то что не видишь смысла создавать функции в таблицах, когда можно создать глобальные?

Цитата
А смысл? Это ничему не поможет. Совсем.

Почему? А еще можно будет написать Factory.create('goblin_wizard'), а визарда ты еще не написал, но как напишешь он будет появляться на локации, а пока вместо него будет обычный гоблин. Да и изменить набор параметров существа в отдельном файле все проще чем рыскать по коду и искать где ты там его создавал.
AlexYeCu
Цитата(IQUARE @ 10 Jan 2015, 20:06) *
Ninja и shinobi - одно и то же, просто в разных вариантах чтения.
Грейд, может, по-другому назвать


Да знаю, но какое название для личинки ниндзи взять?

Цитата
Может, monk - initiate - master ?


Вариант, но иеромонах лучше звучит, на мой взгляд. В любом случае это пока временно — может кто явный просчёт какой увидит, может у кого идея появится.

Цитата(Сулейман @ 10 Jan 2015, 20:12) *
Не уверен, что это нужно хранить в гексах. Если ты имеешь ввиду трудную местность. То лучше, сделать такой флаг для гекса и проверять его, чтобы определить затраты выносливости персонажа или монстра, так ты сможешь гибко настраивать затраты выносливости в зависимости от раскачки или других особенностей персонажа.


Смотри, у самих гекс как бы нет вообще ничего. Вот массив карты, к примеру: {1,1,1},{1,2,1},{1,1,3}. Тут он в строчку, но вообще рассматривай как 3x3. Вот из этого массива у нас уже есть тип гексы и её 2d-координаты. Берём тип гексы и смотрим в других массивах:
- высоту гексы (0 на уровне земли, 1 — можно перелететь или перепрыгнуть, видно что за ней, 2 —всё нельзя, -1 — ямка, -2 — большая глубина, т.е. всё просматривается и простреливается, но заходить нельзя).
- затраты st и rt за гексу (та самая сложность местности).
-какой звук воспроизводить, если наступили на гексу этого типа.
-просматривается ли (и простреливается ли) гекса. Пока это работает совместно с проходимостью, но потом, возможно, буду и по отдельности использовать.

Цитата
Сделать гекс перед ним прозрачным? Если я правильно понял, речь идет про заглядывание в окно или дверной проем?


Не совсем. Вот смотри, есть дом. У дома — дверь. Мы отправляем чара на гексу с дверью, в конце пути открывается интерьер дома с портретами неписей внутри. Так вот, чтобы знать, в какой дом мы зашли, и нужна таблица localtriggers, просто координаты гекс сравниваются с координатами из этой таблицы, если совпали — берём id соответствующего дома. Как-то так. Потом, возможно, перенесу функционал задания триггеров в редактор (дом поставили — в файл уровня записался соотв. триггер), пока это ручками в коде делается. Единственный пользователь редактора (я) вроде не возражает.
Сулейман
Цитата
Мы отправляем чара на гексу с дверью, в конце пути открывается интерьер дома с портретами неписей внутри. Так вот, чтобы знать, в какой дом мы зашли, и нужна таблица localtriggers, просто координаты гекс сравниваются с координатами из этой таблицы, если совпали — берём id соответствующего дома.

А можно просто у тригерра сделать поле: action. И присвоить ему функцию openHouse. А полю actionParams, массив параметров, где сейчас будет храниться id дома.

При срабатывание тригерра выполняется примерно такой метод.

Код
function trigger:Activate()
self:action(unpack(self:actionParams));
end
AlexYeCu
Цитата(Сулейман @ 10 Jan 2015, 20:28) *
Ну конечно все было не так). Метатаблицы нужны для переопределения встроенных операций - без этого тяжко.

Да я в курсе. Шучу просто.
Цитата
Так нет разницы, или ты про то что не видишь смысла создавать функции в таблицах, когда можно создать глобальные?

Зачем функции запихивать в таблицы — это я в курсе. А вот зачем в метатаблицы — на работе так и пишу. Но я б не сказал, что это здорово добавляет удобства. Сколько добавляет, столько и отнимает — ну не сишник я, у меня чуть иначе мозги работают.
Цитата
Почему? А еще можно будет написать Factory.create('goblin_wizard'), а визарда ты еще не написал, но как напишешь он будет появляться на локации, а пока вместо него будет обычный гоблин. Да и изменить набор параметров существа в отдельном файле все проще чем рыскать по коду и искать где ты там его создавал.

А чего мне рыскать? Я ж писал как оно сейчас — есть таблица mobs_stats, в ней изменяемые переменные мобов (stats, resistances, loot, названия и т.д.), есть функция addMob(), которая дописывает недостающее (100500 параметров, какие на момент создания моба нулевые или дефолтные), есть таблица с координатами мобов (и всякими там ai и прочим) — её потом тоже оберну в функцию. В итоге различия разве что в синтаксисе.

Вообще, если любопытно, кидай в личку icq/gtalk/xmpp. Ты, вроде, тоже гексагональными играми увлекался — посмотришь код, может обмен опытом устроим.

Цитата(Сулейман @ 10 Jan 2015, 20:38) *
А можно просто у тригерра сделать поле: action. И присвоить ему функцию openHouse. А полю actionParams, массив параметров, где сейчас будет храниться id дома.

И как ты до этого поля доберёшься? Ты учти, дом занимает десятка два гекс. При этом его центральная гекса может быть где угодно. И гекса двери где угодно.
Цитата
При срабатывание тригерра выполняется примерно такой метод.

А как мы определим, что тригер сработал?
Ты предлагаешь увеличить массив карты минимум на треть, чтобы помимо x, y ещё и id-триггера был?
Сулейман
Цитата
И как ты до этого поля доберёшься? Ты учти, дом занимает десятка два гекс. При этом его центральная гекса может быть где угодно. И гекса двери где угодно.


В этом случае у тебя нет объекта дом как такого. Есть клетка на которой висит триггер. В редакторе ты выделяешь клетку и вешаешь ей триггер просто как еще один параметр, лучше массив триггеров. Понятное дело не сам триггер, а ссылку на него.

Цитата
А как мы определим, что тригер сработал?

А сейчас как определяем? Я бы сделал это в проверке клетки куда наступает герой, там же где ты проверяешь свойства клетки, берешь добавленные ей триггеры и у всех вызываешь функцию Activate(), разумеется у триггера должно быть поле checkCondition(actor), которое будет вызываться, чтобы проверить срабатывает он или нет в данном случае. Ну вот видишь я "неисправимый оопешник", у нас получился неплохой объект. Но куда более хороший чем в C++, так как тут мы легко оперируем функциями как данными.

Цитата
Ты предлагаешь увеличить массив карты минимум на треть, чтобы помимо x, y ещё и id-триггера был?


Ты беспокоишься о размере занимаемой памяти?
Нет я конечно сумел забить 70 мегабайт оперативки наплодив с миллион объектов типа вот таких гексов, но это не то чтобы критично. Потом правда при выводе графики я забил гиг и до сих пор не понимаю как - ведь картинки не должны были повторно создаваться, они просто брались из определенной переменной для отрисовки. Но серьезно не знаю, зачем может понадобиться миллион игровых объектов. Сейчас карта 180*150 тайлов каждый из которых хранит флаги состояний и имя картинки, плюс еще объекты местоположения для каждого тайла и более сложные юниты в сумме занимают около 50 мегабайт.

Если оптимизировать отрисовку карты как матрицы - то 1000*1000 жрет около 6 метров.
AlexYeCu
Цитата(Сулейман @ 10 Jan 2015, 20:57) *
В этом случае у тебя нет объекта дом как такого. Есть клетка на которой висит триггер. В редакторе ты выделяешь клетку и вешаешь ей триггер просто как еще один параметр, лучше массив триггеров. Понятное дело не сам триггер, а ссылку на него.

Есть две гексы: одна, по которой отрисовавыется спрайт дома, вторая — на которой триггер входа.

Цитата
А сейчас как определяем? Я бы сделал это в проверке клетки куда наступает герой, там же где ты проверяешь свойства клетки

Оно и сейчас так. Просто триггеры в отдельной 1-d таблице. Сколько домов может быть на карте? 20? 30? Плюс десяток сундуков, плюс всякие там фонтаны-пъедесталы. Ну ок, 100 записей в таблице. Перебрать их не проблема. А для каждой гексы, которых, допустим, 100x100 на карту хранить значения — что-то как-то много.
А уж записывать таблицу триггеров автоматом при сохранении карты — да элементарно.

UP: про сундуки соврал, сундуки и сумки отдельная таблица.
Сулейман
А зачем перебирать-то все? Когда строишь маршрут записываешь гексы по которым герой пойдет, и только их проверяешь, в крайнем случае перебором, это если оптимизировать. К тому же коллекцию из 10000 элементов пробежать, ну вроде 15-ый год уже скорее всего ты даже не заметишь, не знаю как с этим в луа, вот дойду до коллизий проверю, хотя тоже пытаюсь оптимизировать заранее - а это плохой путь, оптимизировать надо если реально станет тормозить.
AlexYeCu
Цитата(Сулейман @ 10 Jan 2015, 21:16) *
А зачем перебирать-то все? Когда строишь маршрут записываешь гексы по которым герой пойдет, и только их проверяешь, в крайнем случае перебором, это если оптимизировать. К тому же коллекцию из 10000 элементов пробежать, ну вроде 15-ый год уже скорее всего ты даже не заметишь, не знаю как с этим в луа, вот дойду до коллизий проверю, хотя тоже пытаюсь оптимизировать заранее - а это плохой путь, оптимизировать надо если реально станет тормозить.

Хм, вон оно что. Мы немного разное под триггерами понимали. На самом деле, для триггеров домов я проверяю только одну гексу: финальную гексу маршрута. И ту гексу, на которой стою, если получена команда «войти».
Если же речь о гексе, на которую наступил и что-то произошло, тогда да, тут надо отдельную 2d-таблицу с id событий делать. Таблицу именно карты не хочется захламлять зря, я все подобные вещи отдельно выношу.
AlexYeCu
Lua 5.3

Цитата
Поддержка UTF-8 и набора библиотечных функций для манипуляции данными в этом формате (utf8.char, utf8.codes, utf8.codepoint, utf8.len, utf8.offset);


Ждём, когда всё это найдёт отражение в LOVE и loveframes. Новость отличная.
AlexYeCu
Кстати, не завалялось ли у кого ttf шрифта с Антагаричским (Эрафийским) алфавитом? С тем, что в книге заклинаний и на дорожных указателях в MMVII?
tolich
Цитата(Арысь-Поле @ 18 Mar 2014, 10:04) *
https://www.dropbox.com/s/w687zgd8jq4o4se/Erathia.ttf - поддерживающий только латиницу шрифт энротскими буквами, вдруг кому-нибудь понадобится.
AlexYeCu
Цитата(tolich @ 14 Jan 2015, 22:42) *
Цитата(Арысь-Поле @ 18 Mar 2014, 10:04) *
https://www.dropbox.com/s/w687zgd8jq4o4se/Erathia.ttf - поддерживающий только латиницу шрифт энротскими буквами, вдруг кому-нибудь понадобится.


404
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.