Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Требуется написать лаберинт. Типа Doom a без монстров   Найти похожие ветки 

 
Sewix   (2004-07-09 15:22) [0]

3D игр не писал. Посоветуйте на чем лучше писать. Какой компонент или библиотеку и т.д. лучшье использовать. Можно ли взять какой нибудь проект за основу.


 
ПсихЪ_клон   (2004-07-09 15:37) [1]


> Sewix   (09.07.04 15:22)  

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


 
КиТаЯц ©   (2004-07-09 16:00) [2]

Можно еще проще. Качаеш GLScene, там есть компонент "портал"... И пример к нему тоже есть. Рисуеш себе портал без монстров - только получается что то не типа DOOM, а типа Wolfenstagen...
Фигня короче... :)


 
ПсихЪ_клон   (2004-07-09 16:08) [3]


> КиТаЯц ©   (09.07.04 16:00) [2]

Слухай, будь другом, сделай пару скринов этой хрени - того, что получится после того, как ты там всё нарисуешь и откомпилишь... А то чё-то интересно стало, а ставить из-за этого GLScene не хочется. Исключительно ради интереса, так что если очень уж влом, то забей, хотя посмотреть на авто-жиэлевский-вольфэнштэйн хоЦЦа.


 
Sewix   (2004-07-09 16:17) [4]


> ПсихЪ_клон

пришлите на мыло sewix@mail.ru документацию или пример или ссылку

> загрузки уровня из файла и проверка столкновений со стенами
>

с GLScene щас попробую.


 
ПсихЪ_клон   (2004-07-09 16:41) [5]


> Sewix   (09.07.04 16:17) [4]

Не, я так не смогу. Прост не запомню. Скинь мне на мыло stalker2010@front.ru письмо с текстом своего первого поста. Я когда домой доберусь с работы, почту проверю и отошлю тебе на обратный адрес то, что ты хочешь.


 
Sewix   (2004-07-09 16:56) [6]


> КиТаЯц ©   (09.07.04 16:00) [2]

Класс работает, а как сделать чтобы через стены нельзя было ходить? Естиь ли документация по GLScene на русском?


 
Bryke   (2004-07-09 17:04) [7]


> Класс работает, а как сделать чтобы через стены нельзя было
> ходить?

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


 
Колбасьев ©   (2004-07-09 19:18) [8]

Можно завести карту (bitmap), где белые пиксели - места разрешенные для хождения, черные - нет. Просто перед ходом отображаем координаты пространства в координаты карты (например делим на 0.5, если сторона треугольника под ногами 0.5 или другой способ), проверяем цвет пикселя и либо идем, либо нет.

Можно сделать все "по науке" (формулам плоскости и т.д.). Можно обрабатывать пересечения с собой (окружая себя сферой). Есть и другие способы.


 
Sewix   (2004-07-10 13:02) [9]


> Колбасьев ©   (09.07.04 19:18) [8]

Можно ссылочку на пример с картой (bitmap), а лучше со сферо
у меня на карте наверное только стены и будут не каких туманов и прочее.


 
Думкин ©   (2004-07-10 15:20) [10]

Если не писал, то купи книжку Ла Мота - сейчас какк раз новая вышла, специально для 3Д, всего ~20уе.


 
Колбасьев ©   (2004-07-11 15:35) [11]

2 Sewix: Ссылку? Я сам способ придумал. Примеров в сети не знаю
%=)
Сейчас готового примера нет.

Но делается примерно так:
глобальные переменные:

Map: TBitmap;

в OnCreate:

Map := TBitmap.Create;
try
 Map.LoadFromFile("Map1.bmp");
except
 ...
end;

в OnDestroy:

Map.Free;
...

в OnKeyDown:

//При нажатии клавиш упр. курсором находим новые значения
//XPosNew и ZPosNew (новое положение в пространстве)
//Примичание. Сичтается, что, если ось X направлена вперед, то
//Z влево, Y вверх.
...
if Map.Canvas.Pixels[Trunc(XPosNew*Scale), Trunc(ZPosNew*Scale)] = clWhite then
 begin
  XPos := XPosNew;
  ZPos := ZPosNew;  
 end
else
 if Map.Canvas.Pixels[Trunc(XPosNew*Scale), Trunc(ZPos*Scale)] = clWhite then
  begin
   XPos := XPosNew;
  end
 else
 if Map.Canvas.Pixels[Trunc(XPos*Scale), Trunc(ZPosNew*Scale)] = clWhite then
  begin
   ZPos := ZPosNew;
  end;

где Scale - масштабный коэфициент, ZPos и XPos - текущее положение в пространстве. В данном варианте карты мы не обрабатываем высоту - Y координату, поэтому ходим по одной плоскости (как в Wolf"е), но скользим вдоль стан, как в DooM"е, а не утыкаемся в них носом.

Думаю идея понятна.


 
Zer0   (2004-07-11 17:04) [12]

готовя прога для дельфии :
все что нужно - сделать управление =) :не так уж и мало:

http://tothpaul.free.fr/usdelphix.php3?page=1


 
NighmareZombie   (2004-07-12 05:20) [13]

Зайди на systemhalt.nm.ru там есть чуть-чуть на эту тему


 
КиТаЯц ©   (2004-07-12 09:20) [14]


> ПсихЪ_клон   (09.07.04 16:08) [3]
>
> > КиТаЯц ©   (09.07.04 16:00) [2]
>
> Слухай, будь другом, сделай пару скринов этой хрени - того,
> что получится после того, как ты там всё нарисуешь и откомпилишь...
> А то чё-то интересно стало, а ставить из-за этого GLScene
> не хочется. Исключительно ради интереса, так что если очень
> уж влом, то забей, хотя посмотреть на авто-жиэлевский-вольфэнштэйн
> хоЦЦа.

Да там смотреть нечего... Пол и из пола столбы одного размера торчат. Если столбы рядом, то стена получается. Короче ниче серьезного...


 
Sewix   (2004-07-12 14:17) [15]

Как узнать текущее положение на карте(я так понимаю камеры). Использую GLScene переделываю пример portal.


 
КиТаЯц ©   (2004-07-12 14:31) [16]

var x, y, z: Single;
begin
 x:= GLCamera.Psition.x;
 y:= GLCamera...
 ...
end;


 
ПсихЪ_просто   (2004-07-12 16:57) [17]


> КиТаЯц ©   (12.07.04 14:31) [16]

Я в GLScene не разбираюсь, но может всё-таки GLCamera.Position.x? Если нет, то не бейте ногами по лицу... (:


 
Данил   (2004-07-12 21:10) [18]

у меня есть, хош дам :)


 
КиТаЯц ©   (2004-07-13 07:02) [19]

2 ПсихЪ_просто   (12.07.04 16:57) [17]
:) Да! Именно Position


 
Evgeniy_K   (2004-07-13 11:06) [20]

Сделай матрицу nxn - это карта. Храни там что хочешь..


 
Sewix   (2004-07-13 12:30) [21]


> Данил

давай sewix@mail.ru все равно пригодится.
Карта хранится в StringGrid так что битмаповская карта не понадобилась. Проблема была в положении на карте. Все ок осталось сделать грамотное скольжение вдоль стен. Всем спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.074 c
1-1098860642
snake1977
2004-10-27 11:04
2004.11.07
HTML


9-1089902972
Kobik
2004-07-15 18:49
2004.11.07
Косяки с выводом фона.


1-1098348416
Mishenka
2004-10-21 12:46
2004.11.07
Описание события у компонента


4-1096653446
Dot
2004-10-01 21:57
2004.11.07
Как найти хэндл кнопки


14-1098293957
M@D
2004-10-20 21:39
2004.11.07
D8