forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Jam Session 4 (http://forum.boolean.name/forumdisplay.php?f=155)
-   -   JS4 - мой проект (http://forum.boolean.name/showthread.php?t=15040)

Reizel 02.07.2011 00:48

JS4 - мой проект
 
Задумал оч.давно 2Д игру,в которой суть прохождения - разрушение. До того были попытки написать на Blitz3D, но провалились (больно медленный).
Сейчас пишу на C++ и B3D SDK, ибо в нем проще всего работать с 2Д картинками, а гемориться с выбором движка не хочется.
В общем, что готово:
Уровень - картинка. Но!
1) Матрица цветов - следит за реальным состоянием картинки, для отброса лишних ReadPixel из картинки
2) Матрица нормалей - на экзамене по дис.мату я осознал как найти нормаль к растру в точке M(X,Y) , но дисмат так и не сдал :(
Итого - движущиеся по необъяснимым физическим законам, довольно приближенным к реальности, системы частиц. Не тормозит, пока что.
В будущем попробую сделать физику изолированных кусков вещества (отдельные куски будут падать). Взрывы, стрельба, мины, лопата - основное оружие + смекалка и скрытность - враги очень сильно вооружены! И победить можно только закопав правильно мину, или подкопав гору, которая упадет и раздавит людишек внизу :-D

PS явно в рамки конкурса не уложусь, но хотя бы движение и немного геймплея будет)

Reizel 02.07.2011 11:07

Ответ: JS4 - мой проект
 
Это что то типа "МужЫка" (если кто помнит :-D)

Nuprahtor 02.07.2011 11:18

Ответ: JS4 - мой проект
 
А он будет скрываться?

Reizel 02.07.2011 12:19

Ответ: JS4 - мой проект
 
Он должен скрываться...

Reizel 03.07.2011 11:57

Ответ: JS4 - мой проект
 
Из за ненайденного глюка с Illegal Buffer Coordinate(хотя координаты для записи пиксела тщательно проверяются), не могу сделать взрывы. Это печально:(
ПРидумал неплохой элемент для атмосферности - по небу будет летать слонышко, и карта, соответственно, будет постоянно перерисовываться с учетом освещения. Подумаю даже насчет бликов. О да, можно даже несколько источников света запилить...Тени здесь сделать невозможно, но они и не нужны :-D
В общем, сейчас идет работа над красивой картинкой :)

PS: ~1000 партиклов без тормозов летают и отражаются по поверхности) и это на моем полукомпе :-D

Reizel 03.07.2011 22:05

Ответ: JS4 - мой проект
 
Небольшой скрин, без разрушений, но с упавшими частицами и солнышком :)



is.SarCasm 03.07.2011 22:12

Ответ: JS4 - мой проект
 
почему "JS4"?
или название "мой проект"?

baton4ik 03.07.2011 22:13

Ответ: JS4 - мой проект
 
Jam Session 4.

NitE 03.07.2011 23:18

Ответ: JS4 - мой проект
 
Стандартный фотошопный шейп на месте солнышка вызывает отвращение. Сделай лучше просто круг с полупрозрачными краями.

Reizel 04.07.2011 01:51

Ответ: JS4 - мой проект
 
это блиц, ничего не могу поделать:(
PS а от освещения придется отказаться - от всего тени я отбрасывать не смогу, получится ужасно, поэтому уже выпилил. Простые paint-уровни, с программными контурами на всем, я думаю, создадут нужный стиль. + вода в планах.

Reizel 06.07.2011 01:11

Ответ: JS4 - мой проект
 
Кривое взрывание земли - сделано
Баги с Illegal Buffer Coordinate - сам виноват, пофиксил
Оптимизирована физика частиц (спасибо МоКе:))теперь они отражаются не по законам синих слонов:-D
темная бэк-картинка - сделано.
Осталось замутить что-то типа стека, который раз в 30 кадров или при переполнении записывает пикселы, вставшие в очередь, обсчитывает нормали, контуры. Иначе 1000 частиц, летящих на землю слегка начинают тормозить комп.

Reizel 08.07.2011 18:55

Ответ: JS4 - мой проект
 
Итак.
Сделано:
1) Стек (по-моему, с ним только больше тормозит :-D)
2) Контуры. В архиве 2 части: с контурами, и без.
3) Падающие блоки!
Вся суть в том, что блоки, висящие в воздухе, весом не более 5000 пикселей(пока так) падают вниз. Тормозит, зато занятно наблюдать:)

Управление:
ЛКМ - добавить частиц.
Пробел - "Взрыв". На самом деле это кусок фэйла, но им можно разрушать материю :-D
Скачать
Здесь

жду жесткой критики


Это мой первый работающий проект с графикой на С++

Gector 08.07.2011 23:46

Ответ: JS4 - мой проект
 
Здорово.
Тормоза конечно есть, но другого от попиксельных разрушений ждать не приходится
Критика: Незнаю из-за чего но взорваная поверхность выглядит как ворс. То есть в червяках например поверхность была ровней. Как то не очень красиво. Получаются эдакие сталактиты.
А так норм).

Reizel 09.07.2011 00:10

Ответ: JS4 - мой проект
 
Тормоза из за моей дурной башки. (100 пискелей на кадр пишутся вполне без тормозов. А вот тормоза вызваны корявой контурной маской). Переделаю обязательно.
А вот насчет ворса я задумывался много раз. Это сложно - сделать нормальную физику частиц на растре. Частицы просто не проваливаются в расщелины! Но это поправимо. Буду пробовать.

Reizel 09.07.2011 10:44

Ответ: JS4 - мой проект
 
Да, именно так.
А проваливаются они потому, что меня всегда крайне напрягали висящие в воздухе маленькие куски земли, из за которых иной раз не запрыгнешь куда хочешь. А так же висящие в воздухе деревья из майнкрафта. Это нереалистично :-D

PS сделал день\ночь. Думаю как на блице реализовать звезды О_о

Reizel 12.07.2011 00:05

Ответ: JS4 - мой проект
 
Видео

impersonalis 12.07.2011 01:03

Ответ: JS4 - мой проект
 
Конфиг ПК на котором идёт разработка хотелось бы увидеть.

Reizel 12.07.2011 01:13

Ответ: JS4 - мой проект
 
Название ОС: Microsoft Windows XP Professional
Версия ОС: 5.1.2600 Service Pack 3 сборка 2600
Сборка ОС: Uniprocessor Free
Изготовитель системы: Hewlett-Packard
Модель системы: HP Compaq 6720s
Тип системы: X86-based PC
Процессор(ы): Число процессоров - 1.
[01]: x86 Family 6 Model 15 Stepping 10 GenuineIntel ~1729 МГц

Полный объем физической памяти: 1*015 МБ
Доступная физическая память: 474 МБ
Виртуальная память: Макс. размер: 2*048 МБ
Виртуальная память: доступно: 1*990 МБ
Виртуальная память: используется: 58 МБ

видео: Mobile intel(R) 965 Express Chipset Family
PS очень слабый комп. Даже тени хорсовые не тащит :(

Reks888 12.07.2011 10:28

Ответ: JS4 - мой проект
 
Сложно быть скрытным когда ты можешь раз******ить весь уровень к чертям

Reizel 12.07.2011 12:51

Ответ: JS4 - мой проект
 
Конечно. Благо такая мощная бомба будет одна. На весь уровень. На всякий случай ;-)

Reizel 12.07.2011 14:39

Ответ: JS4 - мой проект
 
Ура. Я сделал воду) построена на юзании оператора лапласа. Ничего сложного, как оказалось))
Статья
Правда, ума не приложу теперь, как визуализировать ее в блице. Походу это нереально :(

В планах: Огонь, который будет сжигать все, что горит)

Reizel 17.07.2011 00:10

Ответ: JS4 - мой проект
 
Уфф...
В общем, запарился конкретно.
Не могу отрисовать DrawPoly на fastimage. Ну никак! Фэйлишко в том, что один из параметров - блицевый банк. Но это не главное. В FI он передается в виде простого INT, а не как указатель. Ну это фигня.
Помучавшись, написал DLL специально для изучения блицевых банков. Оказалось, что:

bank = CreateBank(size)

bank - это указатель на банк, в котором:
0..24 байта - служебные
с 8-го байта лежит int - размерность банка
после него лежит невнятное число на 12 большее базмера банка. ХЗ зачем оно.
Вокруг этого лежит ересь, и вот начиная с 24 байта идут сами данные.

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

Сейчас я написал недостающий в B3D SDK класс для работы с этими банками. Банки хорошо создаются, все гуд. Даже функция DrawPoly возвращает true. Даже не вылетает, если подставить адрес банка на единичку больше-меньше. НО нихера не рисует.

Я уже не знаю что делать, в инете нет информации о структуре блицевых банках, никто из знакомых не знает, МихаилV недоступен вечно.

PS И главное - примитивные функции работают - DrawRect, DrawLine , SetBlend, SetAlpha...

Проект встал :(

wolfhound512 17.07.2011 00:40

Ответ: JS4 - мой проект
 
Про банки
На самом деле блицевский банк очень прост:
смещение 0 байт - размер банка
смещение 4 байта - указатель на данные

пример:
Код:

sVertex data[10];
int bank[2] = { sizeof(sVertex) * 10, (int)data };
int result = vpFI->DrawPoly( x, y, (int)bank, image, ...);


impersonalis 17.07.2011 01:02

Ответ: JS4 - мой проект
 
ЕМНИП, MihailV выкладывал расшифровки большинства блитц-объектов

Reizel 17.07.2011 07:38

Ответ: JS4 - мой проект
 
Цитата:

Сообщение от impersonalis (Сообщение 195775)
ЕМНИП, MihailV выкладывал расшифровки большинства блитц-объектов

Находил, там есть все кроме банков.

to wolfhound512:
записывал в банк байтами обычную строку, в dll принимал указатель на банк:

st$ = "Lol"
bank = CreateBank(100)
for K=1 to len(st)
ch$ = mid(st,k,1)
PokeByte bank,k-1,asc(ch)
next
test(bank)

В dll читал память по байту с этого адреса, и выяснилось что реальные данные лежат со смещением в 24 байта (если в decls оформлено как test(bank%)), иначе (test(bank*)) в dll приходит указатель на реальные данные.

А воду мне все же удалось отрендерить! Блицевые банки не прокатили, поэтому я подсмотрел структуру в PureBasic, сделал так же в сях, и все заработало! как так блин, ведь в банк аналогичным образом данные упаковывал...

wolfhound512 17.07.2011 12:12

Ответ: JS4 - мой проект
 
То что они лежали со смещение в 24 байта, это случай. Я делаю так как описал выше и все работает, этот способ мне MihailV подсказал.
Но если ты используешь версию ФИ для СДК, то вряд ли там используются блицевские банки.

Reizel 30.07.2011 00:13

Ответ: JS4 - мой проект
 
Вся суть игры была на 2Д разрушаемости и физике 2Д объектов. Именно из-за разрушаемости попиксельной невозможно было привернуть какой-либо Box2D или другой физ.движок. Пишу сам, но не успею до окончания конкурса. Аминь.


Часовой пояс GMT +4, время: 10:05.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot