Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на Blitz3D

Проекты на Blitz3D Обсуждение будущих проектов, демок, набор команды и т.п.

Ответ
 
Опции темы
Старый 03.10.2005, 19:57   #46
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Код взят из ф-ии fnLoadLevel()

Раньше было так:

...............................
cube.cubes = New cubes
cube\obj = CopyEntity(scub)
EntityAlpha cube\obj,0.5
;ставим куда надо
PositionEntity cube\obj,x*width1+5,5,-z*depth1-5
EntityType scub,typecube
...............................
cube.cubes = New cubes
cube\obj = CopyEntity(scub2)
;ставим куда надо
PositionEntity cube\obj,x*width2+5,5,-z*depth2-5
EntityType scub2,typecube2
...............................
А должно быть так:

...............................
cube.cubes = New cubes
cube\obj = CopyEntity(scub)
EntityAlpha cube\obj,0.5
;ставим куда надо
PositionEntity cube\obj,x*width1+5,5,-z*depth1-5
EntityType cube\obj,typecube
...............................
cube.cubes = New cubes
cube\obj = CopyEntity(scub2)
;ставим куда надо
PositionEntity cube\obj,x*width2+5,5,-z*depth2-5
EntityType cube\obj,typecube2
...............................
Обратите внимание (сравните) на строчки, начинающиеся с EntityType в старом коде и в новом...


Сделал противников 2го типа, но они дерганые какие-то получились.

Устранить дерганье можно так: сделать два "пикера" - это два пивота, которые располижить соотв. у правого и левого краёв объекта-противника в качестве его детей, и делать EntityPick не для самого объекта, а для этих пикеров. Если противник "захотел" повернуться в сторону, то поворачивать его только в том случае, когда оба пикера вернули НОЛЬ.

Я пробовал сделать одного пикера - не получил того, что хотел (надеюсь что потому, что делал неправильно). Поэтому выкладываю код с дерганными "чертями".

ПС:
1 - сделать противника 1го типа
2 - сделать противника 2го типа

Выкладываю ВСЕ ресурсы игры.

ППС: делаю исходник ЕЩЕ и в формате *.txt, потому что в редакторе кода он в непонятной кодировке (Юникод может?), и русские буквы у вас могут стать корявками (при копировании сюда, в форум, так и происходит).
(Offline)
 
Ответить с цитированием
Старый 04.10.2005, 00:07   #47
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
FPS меня не радует в двух отношениях:
1. Чатота изменения FPS (очень быстро дергается)
Предлогаю заменить на следующее:
 * * *;FPS CHECK;
 *MS#=MilliSecs()
 *If (MS-MSL)>=500 Then
 *	FPS=FPS_Count*2
 *	FPS_Count=0
 *	MSL=MS
 *Else
 *	FPS_Count=FPS_Count+1
 *EndIf
 * * *;FPS CHECK;
изменяться будет раз в пол секунды
2. Сам FPS маловат (у меня CeleronD 2400 а FPS всего примерно 138 кадров/с)
Предлагаю уменьшить кол-во объектов на карте путем загрузки всех неразрушаемых объектов как один (создавать повертексно в одном и том же меше(mesh), а точнее в его поверхности (surfse)), далее изменить к нему метод столкновения на ellipsoid-to-polygon.
Это повысит FPS
Вот к примеру функции из моей игры(http://pax-games.narod.ru/downloads/bombers3d.exe):
Const BoxUpperSide%=0 *
Const BoxFrontSide%=1
Const BoxBackSide%=2
Const BoxLeftSide%=3
Const BoxRighrtSide%=4

;C-размер куба, Surf%-поверхность к которой добавляется Куб
;X#,Y#,Z# - координаты центра куба
Function AddBoxToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#=1)
	AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
; Нижнюю сторону куба я не добавлял :)
End Function

;Можно добавить только сторону
Function AddBoxSideToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#)
Local X1#, Y1#, Z1#, X2#, Y2#, Z2#, X3#, Y3#, Z3#, X4#, Y4#, Z4#
Local V1%, V2%, V3%, V4%
Local T1%, T2%
	C#=C#/2
	Select BoxSide%
 *Case BoxUpperSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxFrontSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
 *Case BoxBackSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
 *	Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxLeftSide%
 *	X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
 *	Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxRighrtSide%
 *	X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
 *	Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
	End Select
	V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
	V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
	V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
	V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
	T1%=AddTriangle(Surf%, V1%,V3%,V2%)
	T2%=AddTriangle(Surf%, V1%,V4%,V3%)
End Function
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.10.2005, 01:04   #48
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Извиняюсь за ошибку
C#=C#/2
написано русскими буквами


alc'o'SHoLiK: исправил.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.10.2005, 09:20   #49
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Наверное я погорячился с методом ellipsoid-to-polygon.
Лучше вместо этого создать точку привязки и поставить ее на мето куба:
Type GeomPivot
	field Pivot%
End Type

GPiv.GeomPivot=new GeomPivot
GPiv\Pivot=createpivot()
EntityRadius(GPiv\Pivot,5)
PositionEntity GPiv\Pivot,x*width2+5,5,-z*depth2-5
EntityType cube\obj,typecube2
А в процедуре fnDestroyField() использовать следующую функцию

Function FNDestroyPivots()
	For GPiv.GeomPivot=each GeomPivot
 Freeentity(GPiv\Pivot)
 delete GPiv
	Next
End Function
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.10.2005, 22:20   #50
alcosholik
 
Сообщений: n/a
Насчет ФПС.
http://community.boolean.name/index.php?ac...=8&st=0#entry71

Обновляется раз в секунду.
 
Ответить с цитированием
Старый 04.10.2005, 23:07   #51
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
2PAX

Спасибо, конечно, за примеры, но лично для меня (проектировщик и "наставитель" проекта) ои показались сложными...
Я уверен, что кодеры, которые учавствуют в проекте по достоинству оценят ваш код!

Заменил FPS проверку. Ваш вариант удобнее.

Присоединяйся к нашему проекту! Я уверен, что с большей командой мы сделаем быстрее и лучше проект

2Жека

Дааа))
нашел 10 отличий в коде Теперь с "кубиками" покончено.

2All

Остается:

1) Домучить противника 2го типа
2) Сделать противника 3его типа

а я, найдя время доведу-таки призы до ума!
(Offline)
 
Ответить с цитированием
Старый 05.10.2005, 23:49   #52
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Да все не так уж и сложно:

В этом блоке определяются координаты вертексов(вершин) сторон куба(кроме нижней стороны)
Select BoxSide%
 Case BoxUpperSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxFrontSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
 Case BoxBackSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
 Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxLeftSide%
 X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxRighrtSide%
 X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
 Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
End Select
Далее создание 4-х вершин и двух полигонов по ним, используя координаты рассчитанные выше. Последние два параметра в функции AddVertex означают UV координаты текстуры.
V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
T1%=AddTriangle(Surf%, V1%,V3%,V2%)
T2%=AddTriangle(Surf%, V1%,V4%,V3%)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.10.2005, 23:58   #53
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Для использования этих функций нужно создать мустую модель и поверхность в ней жля добавления геометрии, вот пример:

global Mesh%=createmesh()
Global Surface%=Createsurface(Mesh)

;Добавление одного куба с координатами x,y,z с размером С
AddBoxToSurface(Surface%,X,Y,Z,C)
Кстати я ошибся в указании параметров функции (один лишний):

Function AddBoxToSurface(Surf%,X#,Y#,Z#,C#=1)
  AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
  AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
  AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
  AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
  AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
; Нижнюю сторону куба я не добавлял :)
End Function
А точки привязк необходимо добавлять для обработки столкновений. Вот и все
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.10.2005, 20:37   #54
alcosholik
 
Сообщений: n/a
Куда делся Fant? Проект же в самом разгаре разработки был.
 
Ответить с цитированием
Старый 14.10.2005, 22:27   #55
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
У Fant'а очень много всякой х... ((

и он очень хочет продолжить проект, но я боюсь, что ВРЕМЕННО он не сможет ничего ДЕЛАТЬ.

Список вопросов:
ИИ типа 2,3,4,5

Доделать призы, основываясь на диздоке

А еще я ВОЗМОЖНО найду художницу (она знает фотошоп ) это хоршая новость. Плохая - у меня много учебы

Проект не умер...

Просто сейчас проекту как никогда нужен чел. у которого есть время и ОПЫТ осветить данные вопросы
(Offline)
 
Ответить с цитированием
Старый 22.10.2005, 10:56   #56
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Люди!
почему вы молчити!Или совсем про бомбера забыли! Ведь проетк готов почти на 45%!

Без ВАШЕЙ помощи мне ИИ никогда не одолеть!

Призы я почти сделал! скоро выложу (просто у меня мкоро д/р и в универе грузят! Но жизни для игрока я УЖЕ сделал. Осталось только приз-детонатор сделать.

А как помощь мне необходимы:
ИИ 2 типа доделать

Странник - этот тип имеет обыновение путешествовать по игровой локации, поворачивая в случайном направлении(на 90,180,270,360 грудусов) каждые N количество секунд. Если встречает препятствие(любое), поворачивает на 90 грудусов


Сделать:
1) ИИ 3 типа
Ловец - не путешествует по локации(стоит на месте). Если есть возможность видеть игрока, следует за ним( Астар(Astar) поиск пути возможный вариант)

2) ИИ 4 типа
Убийца - путешествует по локации(не стоит на месте). Если есть возможность видеть игрока, следует за ним( Астар(Astar) поиск пути).

3) ИИ 5 типа
Активный - путешествует по карте. Избегает игрока. Создает юнитов с ИИ типа "Пассивный"
(Offline)
 
Ответить с цитированием
Старый 22.10.2005, 18:50   #57
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Доделал призы.

Теперь:

F3 - детонатор. Бомбы взрываются после нажатия клавиши enter
F4 - увеличение жизни игрока
F5 - увеличение количества бомб (зеленый)
F6 - увеличение радиуса разлета осколков (красный)
F7 - увеличение скорости движения игрока (синий)

Это радует. Фактически система призов сделана. Необходимо доделать ИИ

Нужно:

1) ИИ 3 типа
Ловец - не путешествует по локации(стоит на месте). Если есть возможность видеть игрока, следует за ним( Астар(Astar) поиск пути возможный вариант)

2) ИИ 4 типа
Убийца - путешествует по локации(не стоит на месте). Если есть возможность видеть игрока, следует за ним( Астар(Astar) поиск пути).

3) ИИ 5 типа
Активный - путешествует по карте. Избегает игрока. Создает юнитов с ИИ типа "Пассивный"

Это по ИИ пока все.

Поработать над камерой

Камера:

1. Вид "из глаз"(как в экшн).

2. Следящая сверху справа(или слева).камера следит за игроком(как в РПГ).

3. Вид "вертикально сверху. При приближении камера следит за игроком.

4. Вид, установленный пользователем. камера следит за игроком(любой вариант, настроенный игроком).

----------------------------
Люди! Почему все молчим?
Я ведь без вашей помощи не сделаю полностью качественный проект!
Пожалуйста, помогите мне с вопросами камеры, и,конечно, самое главное с ИИ.
Я понимаю, что дать совет проще, но я отлично понимаю, что никому не хочется копаться в коде, но проект ведь "форумный", а к сожалению кроме меня и жеки никто в нем не учавствует! Вот так прикол!
Я бы очень хотел, что бы еще хоть кто-нибудь присоединился к нашей команде, и помог нам!
-------------------------

Присоединяю ВЕСЬ пакет бомбера!
ВНИМАНИЕ: весит 17КБ
(Offline)
 
Ответить с цитированием
Старый 22.10.2005, 23:12   #58
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Очень постыдно выпускаю другой файл .bb

Я перепутал тогда файлы и отправил старый

Просто замените старый файл на этот

ЕСЛИ ЗАМЕЧЕНЫ БАГИ, просьба их исправить (по возможности)
либо просто предоставить список токовых!
(Offline)
 
Ответить с цитированием
Старый 24.10.2005, 12:23   #59
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
1. По-моему, Астар - это слишком, тут проще можно сделать, в теории. На практике попробую, тогда точно скажу потянет или нет тот метод...
2. С камерой ты перегнул. Столько видов ни к чему, хотя в плане разнообразия это плюс. Если делать камеру от первой морды, то надо радар делать, чтобы видеть бомбы и игроков - это не проблема, проблема в том, что так неудобно играть будет (хотя кому как).
Еще: если дать возможность камере НИЗКО опускаться, то модели объектов должны выглядеть лучше в разы...

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

ПС: скоро мозги подделаю противникам (и самих недостающих типов противников), так что вряд ли кто-то останется в живых после встречи с ними
(Offline)
 
Ответить с цитированием
Старый 24.10.2005, 17:28   #60
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
2Жека
1. По-моему тоже слишком, но просто это единственный пример, который пришел мне в голову. Пробуй свой метод. Я надеюсь, что все получится!

2. Конечно в плане разнообразия! Камера - с ней всегда можно побаловаться, а пользователь сам придумает, как уму лучше.

3. Я не уверен в "нужности" радара. Его ненадо делать, ведь если пользователь захочет, он сделает "вид сверху". Предложение про радар отменяется еще и по другой причине. Я ставил 15 врагов и очень расстроился количеством ФПС:
1). В самом начале 130-150.
2). 45 врагов - 40 фпс. не стабильно. глючт. это нормально? или "проблема в быстродействие?

4.Сколько "без тормозов" максимум можно кидать "врагов" на уровень?

5.Конечно модели должны быть отличными, ибо это простая аркадка и поэтому кроме как геймплеем и графикой, увы, ничем больше "славиться" не может.

6.А кроме меня, и тебя, Жека, сюда уже дааавно никто не "вносил поправки" в код. Поэтому все в коде, что я выложил сделано (то, что новое появилось) мною.

7.Спасибо, что "мозги" врагов делаешь!

2All:


Камера:

1. Вид "из глаз"(как в экшн).

2. Следящая сверху справа(или слева).камера следит за игроком(как в РПГ).

3. Вид "вертикально сверху. При приближении камера следит за игроком.

4. Вид, установленный пользователем. камера следит за игроком(любой вариант, настроенный игроком).

Протестить ФПС:

НЕ мало ли ФПС? Если кто-то считает, что производительность не очень, я с удовольствием приму поправки в код.

Сделать функцию, расставляющую "пробиваемые" кубики на поле. То есть как "случайная расстановка" (для мультиплеера)

------------------------------------------------------------------------------------------------
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com