FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

3D игрушка

Участников: 4

Перейти вниз

3D игрушка Empty 3D игрушка

Сообщение  Gena Ср Ноя 05, 2008 3:29 pm

Я давно вынашиваю идеи создания "стрелялки" на бейсике
1) сначала я пытался делать на qb4.5
получалось плохо
сумел узнать как из 3д координат узнавать координаты на экране.
2) потом я пытался делать игруху на qb7.1
3) потом пытался использовать библиотеку Future.Libary(для старого бейсика)
В целом неплохо получилось, только больно тормозило иногда и не работало под висту, хр.
Были и высокие разрешения и пара функций по размазыванию текстур
4) теперь я перешёл на FreeBasic и в принципе знаю приёмы прорисовки 3д, но:
Я не знаю как делать звук Sad Sad Sad Mad Crying or Very sad Crying or Very sad
особенно такой, что бы было много источников
Помогите, прошу. (если тема уже была - укажите, я вроде не видел)
Если расскажите как НЕ создавать 3д движок(вдруг на fb уже есть) - буду очень благодарен
(Сделаю опять свой - мне не сложно)


Последний раз редактировалось: Gena (Пт Ноя 14, 2008 10:26 am), всего редактировалось 1 раз(а)

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Eric-S Ср Ноя 05, 2008 3:59 pm

Я на сём форуме уже две темы поднимал про звук. Например
https://freebasic.forum2x2.ru/forum-f6/tema-t77.htm?sid=a8d1eea51e2a15c7738700aeb1f4fd02#853

Библиотека fmod позволяет работать с 3d звуком, куча источников и т.д

Но лично я ограничился пока 2d. До 3d игрушки у меня руки не доходят.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 41
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  tux Ср Ноя 05, 2008 6:30 pm

А что вы понимаете под 3D движком, если вы подразумеваете только отрисовку, то почему бы не юзать DirectX или OpenGL. Рекомендую последнее, тк FB хорошо его поддерживает и позволяет писать сразу кроссплатформенные игрушки. Если заинтересует, то могу помоч, когдато тоже увлекался етим
tux
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 36
Откуда : Сибирь

http://tux.nsk.ru/

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Eric-S Ср Ноя 05, 2008 6:55 pm

Как я понял, Гена спрашивает о 3d звуке и движке соответственно.
openGl это графика, а вот openAl это звук.

Я работал только с fmod. У него совершенно точно можно задавать 3d координаты источника звука, скорость и направление движения.
Посмотрите, в моей темке, там ссылочки в самом начале.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 41
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Ср Ноя 05, 2008 8:14 pm

Я так понял, что надо изучать эти библиотеки. (сорри за боян - первый день на форуме)
Меня больше интересует перспектива создания игры с ДиректХ.
tux, очень интересно было бы посмотреть на твои проекты.
кроссплатформенные - это как?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Eric-S Ср Ноя 05, 2008 8:50 pm

Кросплатформенные, это когда будут работать под разными операционками, например windows и linux.

Можно и через directX. Никто никуда никого не тащит.

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

Для 3d звука можно использовать разные библиотеки.

Для графики библиотек ещё больше.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 41
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  tux Ср Ноя 05, 2008 9:08 pm

Просто я отдаю предпочтение OpenGL-ю по двум причинам 1 - он свободный следовательно поддерживается практически всеми популярными ОС, в отличии от DirectX, 2 - в FB встроены функции для удобной работы с ним, нов общем решать тебе, это только лично мои предпочтения, а проекты непокажу, тк писались давно (боюсь щас ненайду их) и не на FB
tux
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 36
Откуда : Сибирь

http://tux.nsk.ru/

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Пт Ноя 14, 2008 10:24 am

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

условная структура моего движка:
...
Do
Проверка нажатых клавиш W SAD
Проверка положения мышки,поворот на опр колво радиан, возврат мышки на середину экрана
Начало цикла 1 до колва текстур
Сортировка методом "пузырька" (соседние элементы меняются, в зависимости ближе они к игроку или дальше)
конец цикла
Начало цикла 1 до колва текстур, где 1 - самая далёкая текстура, а kolvo - самая близкая
Собственно сама прорисовка - не буду вдавать в подробности
(либо треугольник текстурированный, либо квадрат)
Тут фильтр для замыливания (через ф-ию рисования треугольника (маленького, опред. цвета)
если указано в настройках, то к центру одного текселя ведут 8 мелких трегольников с усреднёнными
значениями между соседними тексилями,если нет, то 2 треуг, которве просто закрашивают тексель)
конец цикла
Переключение между двумя страницами видеопамяти (та страница, в которой всё предыдущее рисовалось, была не видна)
Loop

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

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty 3d игрушка

Сообщение  ShenZN Пт Ноя 14, 2008 2:47 pm

Примерный код можно посмотреть в примерах из репозитария FB (examples\libraries\sound\...). Там есть простые примеры по использованию звуковых библиотек, в частности FMod. По ним можно понять базовые понятия работы с подобными библиотеками, а уже на основе их, сделать конкретный звуковой движок для твоей игры.

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Сб Ноя 22, 2008 10:47 pm

=====Поправка 24 ноября 17.00=====
Я счастлив, как старина Дейв, нашедший своего брата =)))
У меня наконец-то получилось натянуть текстурку на полигон! Без изкажений, без кривости. И всё это работает быстрее чем раньше. Если кому-нибуть надо, то я с удовольствием поделюсь. Smile

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Пн Ноя 24, 2008 7:30 pm

Скачать демонстрацию натягивания текстуры на полигон можно здесь.

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Чт Ноя 27, 2008 1:28 pm

Код:
Sub Tri (x1 As Integer,y1 As integer,x2 As integer,y2 As integer,x3 As integer,y3 As integer,col As Double)
   Dim As Integer xper,yper,yper1
  r:
   If x1>x2 Then swap x1,x2:swap y1,y2':GoTo r
   If x2>x3 Then swap x2,x3:swap y2,y3:GoTo r
   'If x1>x3 Then swap x1,x3:swap y1,y3:GoTo r
   
   If x3<> x1 Then
   For xper = x1 To x3
   yper=(xper-x1)*(y3-y1)/(x3-x1)+y1
   If xper <x2 Then
      If x2<>x1 Then yper1=(xper-x1)/(x2-x1)*(y2-y1)+y1 'Else 'yper=y2
   Else
      If x3<>x2 Then yper1=(xper-x2)/(x3-x2)*(y3-y2)+y2 'Else 'yper=y2
   EndIf
      Line (xper,yper)-(xper,yper1),col
   Next
   End If
End Sub
-это мой простенький код закраски треугольника (додумался сам =) ). Не подскажите как сделать так, что бы цвета плавно переливались из одного в другой(col1,col2,col3 - по вершинам)
Там, я точно знаю надо использовать преобразование в РГБ (r = RGB_R(col1),g = RGB_G(col1)) и вместо линии перечисление, но как правильно узнавать цвет? Я пробовал по-разному, но не получается.
Что я сделал.
1) Лайтмап
2) Ускорение, если текстура находиться далеко
3) Выбор с помощью конфига оптимальной настройки (качество текстур(рисунок при этом не страдает, просто пиксели увеличиваются, а смысл остаётся))
4) Почти полностью сделал "замыливание" текстур, только нужна фукция рисования разноцветного треугольника(см. выше)

скрин
[img=https://redcdn.net/ihimizer/img296/6891/scr1ae3.th.png]
P.S. сорри за корявый английский =))

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Чт Дек 04, 2008 11:31 pm

Вот недавно читал я на gamedev некоторые интересные статьи и возникли у меня вопросы:
На сколько я понял, возможна параллельная раота по отрисовке изображения и других операций(часть ф-ий перекладывается на видео карту) - как это реализовать?
========Добавлено=========
Всем советую использовать screenlock и screenunlock в начале и конце прорисовки - в моей программе это существенно прибавило производительности.
========Добавлено 3 дек =========
Наконец понял как забивать напрямую в память цвет пикселя и сделал функцию. Это прибавило 25% (!)производительности. И это не предел.
я собираюсь создать для каждой текстуры массив, в котором будет видоизменённая текстура с статичным освещением, следами от пуль, плакатами и т.п. Это прибавит производительности, но заберёт инога памяти - ничего - производительность важнее. Во время игры будет просчитываться только динамическое освещение и смазывание текстуры(пока кстати не получается норм. ф-ию сделать Sad )
ВАЖНО
Не мог бы мне кто-нибуть помочь с полным средним образованием? =))))) никак не могу определить какой стороной к камере текстура - есть один метод, свой, но уж очень неэффективный. Читал статьи GameDev, но к сожалению мало чего понял =(, если кто-то имел с этим дело, то пожалуста напишите.
P.S. на скриншоте я неправильно назвал LIght Map-ом вершинное освещение - тогда, когда я делал это, я ещё не всё понимал.
P.P.S. ничего, что я использую темку как дневник? =)
P.P.P.S. Нашёл одну интересную особенность: при записи в память цвета надо записывать BGR, а не RGB
===========Добавлено 4 дек=====
Наконец-то разобрался со звуком =)
Сделал шаги человека. Пока ещё не до конца продумал систему подачи звука в целом(то есть там монстры оружее и т.п. думаю подойдёт Type Zvuk ), но всё ещё впереди =)
P.S. Как узнать должен ли закончиться отрывок? Или как узнать длину отрывка?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  tux Пт Дек 05, 2008 4:45 pm

Не мог бы мне кто-нибуть помочь с полным средним образованием? =))))) никак не могу определить какой стороной к камере текстура - есть один метод, свой, но уж очень неэффективный.
Ваще на ету тему не мешало бы почитать учебник по линейной алгебре (когда я поступил в универ, и начался этот предмет, я удивился, тк все это знал из книг по ОпенГЛ-ю), а вообще если ты решил не пользоваться ГЛ-ем, и сам создаеш полигоны, то у них должен быть вектор, который находится перпендикулярно к плоскости полигона (наз-ся нормаль) и направлен в сторону, в которую смотрит текстура, так вот если угол между вектором камеры и вектором полигона меньше 90 градусов, то текстуру видно, если больше, то соответственно невидно.
tux
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 36
Откуда : Сибирь

http://tux.nsk.ru/

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Пт Дек 05, 2008 11:02 pm

Вощем сегодня, я научился узнавать по нормали видна ли текстура или нет, осталось только нормали ставить не вручную а по какой-то формуле.....
Вопрос: почему во время начала или конца записи или прерывания раздаётся характерный щелчёк? Причём во всех видах воспроизведения звука на компьютере и как от этого избавиться?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

3D игрушка Empty Re: 3D игрушка

Сообщение  Gena Пн Дек 08, 2008 4:24 pm

http://files.filefront.com/gamerar/;12590904;/fileinfo.html
-вот над чем я работаю (музыку не отправил - там "якутское горловое пение" - вещь xD , можно включить любую музыку, подставив её в /WAV/ под именем FON01.WAV + В конфиге последнюю строчку на единицу исправить)
Сегодня извращался с кривыми текстурами =). + наделал маштабируемости в карте.
Кстати - можно спокойно изменять файл MAP0.TXT - делать карту. Посмотрите, напишите что думаете.
========Добавлено 19.36========
Я включил контру 1.5, посмотрел карту DE_TORN и вот итог:
1)Я постарался и ускорил отображение текстур на 150% =) cheers cheers (заново заливать не стал )
2) возник вопрос: кто знает как в халфе отображается картинка? принципом художника или пропускания лучей через экран? И что эффективней?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения