Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - sitdRemake

Страницы: [1]
1
В игре разрешение 640*480. Оригинальные спрайты растянуты вдвое. Я уже писАл, если кто хочет помочь с графикой, я всегда рад.
Может, поможет

http://web.archive.org/web/20070717064839/http://www.hiend3d.com/hq4x.html
http://en.wikipedia.org/wiki/Hqx
http://code.google.com/p/hqx-sharp/

По последней ссылке библиотека для C# позволяет увеличивать линейный размер изображений в 2-4 раза. Можно найти реализацию именно этого алгоритма и для других языков (вроде, для С++ прямо на сайте Максима Стёпина по первой ссылке лежали, плюс исходники).

2
Попробуйте WPF. У меня редактор с полусотней контролов в дебаге весит 150 кБ. В релизе будет примерно так же. Фреймворк качать не надо, если у вас Виндоус 7 там или Виста. Хочется Линукса? - Mono.

3
Ребята, я понимаю, что вы приверженцы всего самого ультранового и современного, но в WPF по дефолту только Гуро - никакого Фонга и бамп-текстурирования нету. Если программист сможет сам это как-то прикрутить (не факт ещё, что это возможно), то пожалуйста, как говорится. А для Гуро единственный выход - множить треугольники.

Цитата
Да и рисовать 1024 полика не обязательно в одну плоскость.. ничто не мешает там нагенерить неровности стены...

Спасибо, кстати, за наводку. Хотя, для 32 треугольников на линию этого мало для имитации неровностей, чтобы вписаться в рисунок текстуры, которая у меня есть, но в принципе, если задействовать обрезку дальности прорисовки, то у меня вполне и с несколькими десятками тысяч полигонов на стенку работает, если на весь экран не разворачивать. Я проверял - мой компьютер (класса лоу-энд) тянет один-два миллиона освещённых и текстурированных треугольников при где-то 20 кадрах в секунду на этом самом WPF.

Цитата
Может это я так плохо выражаюсь, но это следует читать вот так:
"Осталось определить, где нужно стены поставить.
Как же это сделать?
А просто!
Две смежные клетки должны быть "разными" (стена / пустота)
Это и есть условие, что между двумя клетками - стена."

Хмм, посмотрел щас свои алгоритмы - да, у меня примерно так и делает. Этот код я не видел полмесяца всего, а уже подзабыл, чего там и как.

Цитата
Выкинуть сразу на помойку такой движок, когда на плоскую хрень нужно потратить 1024 треугольников.

Только для "непараллельного" освещения, т. е. для всяких точечных и направленных конусных источников. Для рассеянного и направленного параллельного можно и двумя треугольниками обойтись.

Как я сказал, я больше ничего не знаю - никаких Юнити и Опен Джи Элей. Я читал, что WPF не для игр, но я хочу попробовать.

Добавлено позже:
Цитата
1) если лет >20 то я бы сразу уволил за такое развлечение: геморой извлекать из воздуха )))))))
Могу только перефразировать товарища Сталина:
"Товарищ r57shell, если вы будете увольнять всех, кто допускает малейшую оплошность, то с кем вы будете работать?" ))

4
С чего такие утверждения? Просто "обосрать"?
Да неее, я же спросил.
В блендере сделаны лишь блоки  - угловой, туннелем, развилка и только с потолком и полом. А потом всё это просто подгружается и собирается в зависимости от наличия прохода в соседних ячейках.
Ну вот и отличие - у меня начиная от вершин и полигонов всё собирается, плюс текстурирование ("маппинг") "ручками" (все координаты точек текстуры рассчитываются программно), а у вас - с готовых "кубиков". Всё же, мой уровень немного пониже будет. Тут можно поспорить, а нужен ли такой уровень глубокий и не проще ли грузить готовые модельки. Возможно, ответ в том, что я просто не знаю так хорошо Блендер, а другие программы 3Д-моделирования вообще не знаю. В Блендере я сделал всего лишь развёртку сферы для панорамного сферического видео для WPF и больше с ним не работал.
Цитата
А вот захочет кто СВОЙ блок вставить - да хоть с решеткой, хоть с чем - сделал модельку и всё. Хоть трубы канализационные рисуй. А вот учёт
Цитата
...уровня вершин, треугольников, нормалей, направлений обхода...
 - всё это для несведующих сложно и непонятно, да и отталкивает. Ближе надо быть к тем, для кого редактор делается.
Да, всё же, другие, более сложные модели, я буду делать в Блендере. А чужие модели должны будут вставляться из внешних файлов. Но я вообще думал, что другие будут только текстуры на моих стенах менять, а не прямо кубики, из которых стены сделаны. Пока именно такой функционал и замышляю. С заменой моделей - это надо в движке или редакторе контроль делать этих моделей. Понимаете, я тут со всякими байндингами и самосообщающими о своих изменениях коллекциями запутался при построении простого редактора с текстом и циферками (то, что пользователь вводить будет) и валидацией этого же текста, а как заморочиться придётся с валидацией трёхмерных моделей - это вообще призадуматься заставляет. Так что вставка своих моделей пока отменяется у меня.
Цитата
2) на два треугольника можно разбить после этого после первого же запуска и увидив косяк
У меня не два треугольника. У меня разрешение в треугольниках задаётся произвольным. Это нужно из-за особенности обработки освещения в WPF. Оно у него вершинное, никакого попиксельного нету. Так что два треугольника дают отвратную картинку. Опытным путём было установлено, что мне надо 16 квадратов (каждый из двух треугольников) по каждой стороне. Итого на одну стенку (16*2)^2 = 1024 треугольника.

Я понимаю, что ничего хорошего в этом нет и хвалиться не стоит, но вот из-за такой особенности WPF мне приходится это делать. Но я бы не сказал, что прямо всё плохо - научился создавать универсальные алгоритмы для построения одной стены для произвольного количества треугольников. Просто хорошенько поработал с циклами. )  Ну вот, например, построение стенки:

  

Вот текстурирование:


Согласен, практического смысла, особенно для конечного пользователя, немного. Но зато голову поломал в своё удовольствие. )

Цитата
осталось определить где нужно стены поставить - а это просто две смежные клетки должны быть "разными" (стена / пустота).
Неверно. Вы всё упрощаете. А если проход по толщине больше, чем одна клетка? А если это одна гигантская комната? У меня всё это обработано - смотрите первое видео про редактор. У меня могут быть любые по толщине коридоры, с базовой (минимальной) толщиной - одна клетка.

Цитата
И напоследок... Пусть мну простят за непробиваемость, но вот ей богу чаю не пойму, зачем пользовать движок, если всё равно по точкам строить плоскости приходится?
Из всего движка в WPF только рендерер - т. е. он готовую модель проецирует на некоторое плоское представление и больше ничего сам не делает. Фактически, движок создаю я, а рендерер использую готовый. Да и то, те же шейдеры сам для себя пишешь, ибо готовых ещё найти надо. Кстати, зачем всё же нужен WPF:
Цитата
If you have experience programming with some other 3D API such as OpenGL or Direct3D (upon which WPF is built, by the way), you are probably accustomed to thinking of 3D stuff as very distinct from other stuff.  Simple things like getting a 3D graphic to appear in the same window next to a listbox can require all kinds of gymnastics.  WPF doesn't have those sorts of boundaries.  If you want to put an animated 3D scene as the graphic for a toolbar button, you can.
http://www.ericsink.com/wpf3d/3_Bitmap.html

Ну т. е. трёхмерка на заднем плане какой-нибудь кнопки, или ваш ваш обычный "офисный" интерфейс с кнопками, списками и гридами, но замапенный на изогнутую трёхмерную поверхность? Причём замапенный не просто картинкой, а когда всё работает - нажимается, редактируется и вообще всё? - В WPF это игрушки. Достаточно глянуть видео на Ютубе.

5
На данный момент разобрался с сортировкой прозрачных моделей. Без этой сортировки всё выглядело так, как в изображении во вложении (сейчас уже всё нормально :) - эта картинка из тестов) - т. е. монстры спереди закрывали своей прозрачной частью монстров сзади. Ибо WPF не умеет смешивать полупрозрачные треугольники в произвольном порядке - ему этот порядок надо задать. (Кто-нибудь может сказать, как получать прямую ссылку на картинку не тогда, когда она будет загружена через вложение, а во время редактирования поста? И ещё чтобы не использовать сторонние хостинги картинок.) Ну и так как у меня плоские модели, то можно было ограничиться не сортировкой десятков тысяч треугольников, а всего лишь сортировкой моделей (одна стена - одна модель, один монстр - одна модель). Ещё, кстати, надо будет поработать над тем, чтобы объединить модели с одинаковыми текстурами в одну - чего-то там в МСДН пишут, что так производительность лучше будет. Но это потом. У меня для производительности прорисовка ограничена радиусом в 6-7 клеток лабиринта. Да и дальше "факел" игрока не достаёт.

Кстати, в игре, похоже, никакой трёхмерки нету. Ну или там на каждый кадр своя текстура для стены. Вобщем, освещение там - просто заранее подготовленная текстура. У меня же освещение реальное, так что эффект жёлтого пятна на стене, когда стоишь к ней вплотную, получается "бесплатно". Ну так вот, факел игрока светит на расстояние где-то 5-6 клеток с квадратичным затуханием. Ну а ещё плюс "бесплатного" освещения в том, что факелы на стенах, которые в оригинале были просто спрайтами, будут трёхмерными и также давать естественный свет (прикручу к ним свои источники света). Так что можно будет издалека их увидеть - картинка будет гораздо интереснее, чем в оригинале.

Пришлось попотеть, чтобы монстрики появлялись на случайном месте, но ИМЕННО НА КЛЕТКЕ СПЕРЕДИ. Т. е. не будет такого, как в оригинале, когда монтры появлялись прямо на той клекте, где стоял игрок, так что можно было драться даже повернувшись вплотную к стене. Ещё, кстати, там такая выходка в и гре, что когда игрок поворачивается, то он находится в центре клетки, а когда стоят прямо, то его отодвигает немного назад. Именно поэтому при утыкании в стену виден пол и потолок и монстры могут напасть и прямо у стены. У меня монстры смогут напасть только если спереди игрока есть свободная клетка.

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

Остался один баг - из-за случайного места появления монстра на клетке, эти монстры могут налепиться в кучу - т. е. один почти на месте другого. Как это обойти пока не придумал, ибо простое "расталкивание" не поможет - надо учитывать мой алгоритм построения прямоугольников этих монстров и их размещение в зависимости от ориентации игрока (в какую сторону повёрнут). Что-нибудь попозде придумаю, может быть. Игре это не мешает.

Теперь работаю над редактором монстров и дорабатываю редактор карт по части выбора набора монстров, которые будут появляться в каждой клетке.

Из-за особенностей обработки всей трёхмерной модели в WPF, похоже, что полупрозрачных стен (типа стёкол, которые я хотел ввести) или не будет, или будет очень мало (одна-две-три на уровень). Все полупрозрачные объекты приходится сортировать (т. е. либо менять их координаты, либо удалять их и создавать их же, но уже на новом месте) по удалённости от точки обзора камерой игрока, а т. к. эта камера постоянно в разных местах, то придётся сложный алгоритм выдумывать, да и сортировка будет время отнимать. А полупрозрачные стены в SitD - это как минимум решётка, тестура которой должна иметь прозрачные области между прутьями.



Кстати, я не знал, что Cell Key может открывать бронзовую дверь.



HQx алгоритмы решил перенести из игры в редактор, т. к. они ресурсоёмки и лучше "укрупнять" текстуры при создании карты и монстров в редакторе, чем в реальном времени в игре. Т. е. в редакторе нужно будет выбрать текстуру с маленьким разрешением, а редактор сам уже укрупнит её и положит в игру с большим разрешением. Игра же будет загружать уже готовую текстуру без всякой обработки.

Добавлено позже:
Вот пруф, что лабиринт - это быстро)
http://www.youtube.com/watch?v=036pSIyMuyU&feature=youtu.be
Смотреть с 1:00 - обрезать было некогда ;)
Я бы там не спешил с выводами. У вас лабиринт просто в 3Д-редакторе нарисован (Блендер, Макс) или генерируется на лету по какому-то алгоритму? У меня генерирование всей модели уровня идёт от уровня вершин, треугольников, нормалей, направлений обхода (для обозначения внутренних и внешних поверхности треугольников), расстановки источников света и текстурирования - т. е. я не рисую в Блендере лабиринт по готовым кирпичикам. Чего я не делаю, так это не рендерю модель - это делает WPF и Direct3D за меня.

Естественно, если у вас есть готовые библиотеки отрисовки трёхмерных тайлов (у меня тайлы - это стены, потом на уровень выше идут клетки из шести стен), как я для себя написал, например, то процесс дальше идёт быстро. Но эти библиотеки надо же ещё написать и отладить.

6
Так, нашёл библиотеку для C#, аналогичную плагинам hqx http://code.google.com/p/hqx-sharp/
Теперь буду текстурки монстров и прочего в шестнадцатикратном размере (см. вложения ниже)!

Добавлено позже:
Чайман
Насчёт хранения карт - пока обычный текстовик, включая привязки событий к клеткам. Так же и библиотеки монстров, предметов и прочего. Текстуры и изображения - в виде картинок в папках. При загрузке игры всё это будет считываться и инициализироваться. Пока так проще, чтобы не разрабатывать схему, как в бинарнике всё хранить, и тем более не создавать базу данных на полноценной СУБД. Более того, можно будет руками править текстовики и подменять текстуры в папках. В принципе, на это и рассчитано поначалу - минимизировать сложность как создания, так и редактирования ресурсов. Соответствие предметов, анимаций, монстров и прочего скорее всего будет либо по номерам, либо по названиям.

Кроме того, те же анимации буду, наверное, хранить в XAML (текстовик) и при загрузке игры парсить его (вся инфраструктура для этого уже есть в .NET Framework), так что даже анимации можно будет в текстовике редактировать.

Вообще, идея этакой текстовой "базы данных" неплоха, на мой взгляд. Такое же было, по-моему, в ПК играх C&C:Tiberian Sun и RED Alert 2 - именно поэтому к ним наклепали кучи радеаторов, что формат данных там был проще некуда. Тем более, что данных немного и всё это загрузится очень быстро при старте игры. Карта 30х30 будет весить примерно 100 кБ. Это, конечно, не тот уровень сжатия, что в бинарнике SMD, но всё же я не гонюсь за демосценой - мне до них как до Луны.

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

Насчёт магии задумка вообще грандиозная (для уровня SMD, конечно :)). Например, думаю прикрутить к той же магии Freeze к каждой снежинке свой источник света, так что эффект освещения будет не простым миганием фона, как в оригинале, а сама магия будет его создавать - т. е. будут блики на стенах гулять под свет магии. По крайней мере, так в голове у меня крутится всё это.

7
Очень хорошо. Классно бы, если портировал потом на разные платформы игру. В частности хотелось бы увидеть на Dreamcast и Nintendo DS.
Нет, портирования не будет. Будет только на ПК. Да я и не умею писать под вами упомянутые платформы.

пока ничего по сути не сделал, посмотри: unity3d.com. Ато такими темпами через пару лет сделаешь :wacko:
Посмотрел. Не хочется с ним разбираться. Кроме того, хочется именно под WPF сделать, иначе бы я сразу начал с DirectX, OpenGL или этого Юнити. Под WPF хочется с прицелом на Silverlight (а значит, веб и Windows Phone). Однако, в свете возможной скорой смерти Silverlight это уже не так перспективным кажется. Всё же, буду продолжать на WPF. Возможно, посмотрю в сторону XNA.

Время не сильно важно. Можно и два года. Хотя я думаю, что основной костяк (играбельный хотя бы один этаж лабиринта и вся инфраструктура, включая редактор, для автоматизированного добавления остального, но без сюжетного наполнения) займёт где-то полгода, а может и меньше.


Из текущих задач сделано устранение прохождения сквозь стены - оказалось не так просто, как я думал. Решено заменить управление во время боя с кнопочного на мышевое - так легче и программировать и управлять игроку. Также будет изменён интерфейс. По возможности все доступные меню будут запиханы туда сразу, чтобы не приходилось по пять-семь раз тыкать кнопку, чтобы скастовыть какое-нибудь заклинание. Однако, это немного отойдёт от "духа Shining in the Darkness". Практически, от интерфейса оригинальной игры ничего не останется, кроме пиктограмм магии, предметов и собственно игрового окна. Да и внешний вид (но не структура и наполнение) лабиринта в будущем, скорее всего, изменитя до неузнаваемости.

Сейчас как раз пишу столкновение с монстрами (вероятность при каждом движении, включая повороты - 18% ;)) и создаю первого Слими Уза. :)

Вообще, есть идея привязать вероятность столкновения с монстрами к значению IQ. Ну т. е. если средний айкью у вашей команды сильно больше айкью монстров, то вы с ними почти не будете встречаться (устранение досаждающих столкновений со слабыми монстрами на высоких уровнях персонажей при проходе по старым локациям), и наоборот, если захотите не по уровню взять сундучок на верхнем этаже лабиринта с помощью верёвки, то придётся биться с врагами буквально на каждом шагу. И объяснение простое - старшие враги более умны и с большей вероятностью могут вас поймать, а младшие враги - глупые и их легко избежать. Однако, это приведёт к тому, что полубоссы (кайзеркрабы, хромированные шары и пр. бесконечные полубоссы) будут встречаться с вероятностью где-то под 70-80% на каждом триггерном месте (поворот для кайзеркрабов, длинные коридоры для хромированных шаров и пр.). Вобщем, ещё подумаю над этим.

Кроме того, сделана куча улучшений, исправлений багов, рефакторинга кода (построитель переписывался уже раз десять - каждый раз менялось 20-60% кода). Переделано ориентирование всех геометрических построений из отрицательной оси Z в положительную (мне так удобнее) и соответственно переписан построитель мира.

И да, скорее всего, игра во время работы будет менять скорость повтора нажатий клавишь на максимальную, а при выходе будет возвращать предыдущее значение - иначе не могу пока избавиться от полусекундного "зависания" при начале следующего движения, не совпадающего с предыдущим (т. е., например, при переходе от движения назад к движения вперёд, от вперёд к повороту и т. д.).



И хотел бы попросить у вас объяснить значение параметра IQ у персонажей. Пока нашёл только то, что он влияет на изучение магии (персонажи учат магию не по уровням, а по количество IQ), на магические и "дыхательные" (дыхательное оружие - всякие Tortolide's hot breath и т. п. подобное) сопротивляемости и силу, и на способность сопротивляться разным плохим статусам, типа отравления и пр.:
http://forums.shiningforcecentral.com/viewtopic.php?t=15966

Это всё, что касается IQ? Кто-нибудь знает что-нибудь ещё?

Может кто-нибудь проверить это, установив с помощью какого-нибудь чит-кода для, например, Мило на первом уровне IQ под 200-300? И напишите, что произошло. По идее, у него должны появиться все заклинания.

Ещё просьба достать статусы монстров по части IQ и Luck. Все остальные статы у меня есть, а этих нет. Есть догадка, что таких параметров у монстров нет вообще. Однако, если есть возможность взломать как-нибудь игру и глянуть эти параметры, то буду благодарен вам за информацию об этих параметрах. Ну плюс и вообще все возможные параметры (не только монстров), которые можно узнать не "честными" игровыми возможностями, а с помощью читов и взлома. В частности, хотелось бы узнать механизм появления предметов в Deals у продавцов. Та же Morning Star иногда появляется, а иногда нет. Иначе придётся всё это прописывать самому. :)

8
Резервирую тему для сообщений о переделке и возрождении игры "Shining in the Darkness" на SMD.


Текущие задачи:

- Сделать в редакторе выбор текстур для поверхностей (сейчас везде дефолтные из первого уровня лабиринта).

- Добавить хотя бы одного монстрика в игру. :)

- Реализовать событие столкновения с монстрами.

Добавлено позже:
Вот небольшое видео.

Построение лабиринта в редакторе: http://www.youtube.com/watch?v=dRHjfomtXwI
Обзор построенного лабиринта (как видно, планы совпадают :)): http://www.youtube.com/watch?v=jh32Adzt6OM&context=C32d4cadADOEgsToPDskJ_S9gVLufdnUU6yqAUpb5f
Та же карта, но с тем освещением, что будет в реальности (чтобы было темно и страшно :)): http://www.youtube.com/watch?v=FIpTpZrP11c&context=C3d7f606ADOEgsToPDskImaRP6nx6TALDiciWsk_bH

Страницы: [1]