forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Bomberman_Standard_Edition (http://forum.boolean.name/showthread.php?t=79)

jimon 12.09.2005 22:25

вот твоя ошибка : посмотри внимательно c 272 по 275 строку
я нашол ошибку за ~45 сек...

ps. если невидете такую примитивную ошибку то как вам писать большие игры ?
а еще говорят что у меня нету опыта :bad:

Fant 12.09.2005 23:30

Совместно с jimon устранили баг с "взрывающимися" кубиками и осколками!
БАГ - очень сложно устранимый!

итак:
Код:

EntityType boom1\Obj,typeexp
EntityType boom2\Obj,typeexp
EntityType boom4\Obj,typeexp
EntityType boom4\Obj,typeexp

меняем НА
Код:

EntityType boom1\Obj,typeexp
EntityType boom2\Obj,typeexp
EntityType boom3\Obj,typeexp
EntityType boom4\Obj,typeexp

остается вопрос с AI

буду юзать!
но от помощи как всегда не откажусь!

Жека 13.09.2005 05:08

Вот! Причем опечатку найти даже сложнее, чем другую ошибку, хотя и не всегда.

Насчет убивания белых все ясно, просто надо закомментировать 3 строчки в функции fnUpdateBooms()
Код:

;copy_cube.cubes = Object.cubes (EntityName (ent4))
;FreeEntity ent4
;Delete copy_cube


Fant 15.09.2005 19:26

Итак, уважаемые друзья!!!
Смею вас заверить, что проект НЕ СДОХ, а успешно продолжает жить!
Просто сейчас из-за учебы у меня нет времени...

итак!
вот что сегодня как тяжкий груз висит:

1) AI. описание есть в диздоке

2) Сделать призы. (пока это 3Д кубики, которые изменяют параметры игрока( все в диздоке)

Fant 21.09.2005 23:27

Ладно, уважаемые друзья-кодеры!!!

давайте все по-порядку! и добьем НАШ (заметим не мой, а уже Жекин, ZubZero, impersonalis, jimona)

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

Итак:
1) AI
нужно сделать так, что бы "кубик" (уже есть в исходниках - клавишей 1 активируется) при столкновении поворачивался на 90. При этом(это легко я делал) встречается баг! Если "кубик" между 3 кубиками-но он крутится до бесконечности. Вообзе про AI тип 1 есть в диздоке

2) Нужно создать кубик-приз.
а) создать кубик
- он должен создаваться ТОЛЬКО внутри убиваемого кубика(это сложность)
б) убивается бомбой
в)изменяет параметр игрока. Если взят - жизнь игрока=жизнь +1 (естть в диздоке.

Для этого нужно ввести переменную жизни. (она есть...ее нужно апдейтНУТЬ)

Итак...
теперь я надеюсь, что кно-нибудь 1 пункт, но сделает! А то проект...замерзает((

Жека 22.09.2005 11:03

(я новый код не зырил)

1. Советую сделать двухмерный массив, такой же как в редакторе карт, и его использовать для проверки есть ли препятствие на пути или нет, но коллизии оставить!
Т.е. при столкновении противника со стенкой ты его поворачиваешь, но не сразу, а сначала проверяешь есть ли препятствие там, куда планируешь повернуть. Для определения наличия препятствия используешь "суперинформативний" массив.
Тут "сложность" только в том, чтобы определить, в каком секторе карты находится противник, чтобы перевести его координаты в индексы массива.

поле имеет размер 29х29, каждый кубик имеет размер 10х10х10
Получаем игровое поле 290х290
Допустим, противник врезался в стенку, имея координаты (надо только х и z) (127,y,200)
Надо получить из этого индексы для массива, так получаем их!

posX# = 127
posZ# = 200

koefX = posX# * 0.1 - "делим" координату Х на ширину кубика. Этим мы получили целое цисло кубиков, которые находятся слева от противника
koefX - целое число! = 12 в нашем случае
Надо что-то сделать с оставшейся 7-кой
addX = posX# - koefX * 10
if (addX-5>2.5) koefX = koefX + 1
На практике не должно получиться этого "округления", потому что размер противника соизмерим с размером кубиков...

так же для координаты z

потом проверяем значение массива

value = mapInfoMas(koefX,koefZ) - это для сектора, где противник в ДАННЫЙ момент - не интересно

mapInfoMas(koefX-1,koefZ) - что находится слева от противника?
mapInfoMas(koefX+1,koefZ) - что находится справа от противника?
mapInfoMas(koefX,koefZ+1) - что находится спереди от противника?
mapInfoMas(koefX,koefZ-1) - что находится позади противника?

имеется ввиду сдвиг на 1 кубик в каждую сторону


2. Смотря что нужно: если призы должны появляться всегда в разных кубиках, то из игры их расставлять, если в одном и том же, то проще/нагляднее расставить в редакторе карт...


ПС: чем отличаются пункты а) и б), которые самые верхние?

Жека 22.09.2005 15:02

Вложений: 1
Я немножко переделал функцию обработки ИИ, теперь противники бегают по полю и поворачиваются, если столкнулись с чем-то...

Но надо еще подправить кое-что: там, где я вписал проверку на коллизию противников с различными типами объектов, надо это писать не в один IF, а в несколько, т.к. бывает столкновение обновременно с игроком и стенкой и работает неправильно. Хотя может и не в том дело.

!!! Я делал исправления в старой версии, какой не помню...

ПС: Изначально противник(и) нарезает креги в "замкнутом" пространстве, но стоит нам взорвать одно из препятствий, как...

ППС: это всем, кто просит помочь с кодом: те примеры, которые я пишу, НЕ ЯВЛЯЮТСЯ эталоном правильности или чего-то в этом роде, они позволяют врубиться что к чему (и то не всегда наверное), не больше.
Поэтому: нужно брать саму идею и делать по-своему как вам УДОБНЕЕ, и не переделывать свою прогу ПОД МОЙ код! (если хотите - делайте, я не против, просто сказал, как лучше будет).

Расширение файла надо ПЕРЕИМЕНОВАТЬ в RAR!

Fant 22.09.2005 22:13

2Жека:
Я посмотрел твой код. То, что есть в ИИ сейчас это то, к чему я когда-либо уже приходил. И потому я не выложил такой результат, что когда ИИ враг типа1 при коллизии с кубиком - поворачивается - это + , но при повороте он так же...меняет свою позицию - "дергается". Что крайне нежелательно. Убрать "дерганье" можно при помощи команды rotateentity. Но я не справился со всем. Посему прошу тебя немого пересмотреть "движение" ИИ.

2All
1) Сделал приз. дает +1 к кол-ву бомб. Теперь игрок не может клавишей пробел ставить больше 1 бомбы( пока не взорвется первая. При получении приза (активируется клавишей f5 на цифровой клавиатуре) игрок ставит уже 2 бомбы. Повторное нажатие f5 ставит опять кубик-приз

2) Убрал лишний код...привел в порядок то, что есть. Теперь белый(непробиваемый) кубик не пробивается

3) БАГ!!!!
ВНИМАНИЕ:
то, что нужно сделать:
1) f5
2) берем приз
3) ставим !!рядом!! 2 бомбы
4) взрыв в неположеном месте. Это грусно((

4) Нужно сделать так, что бы кубик-приз(тот, что есть уже(то есть мой)) появлялся в случайном месте внутри кубика. (разумеется пробиваемого)

5) Необходимо сделать ИИ 2 типа.
ОПИСАНИЕ:
2. Странник - этот тип имеет обыновение путешествовать по игровой локации, поворачивая в случайном направлении(на 90,180,270,360 грудусов) каждые N количество секунд. Если встречает препятствие(любое), поворачивает на 90 грудусов. Вырезка из ДизДока
Сложность: как сделать так, что когда ИИ2 поворачивается, то он не наталкивался бы на стены, а поворачивался в тот момент, когда можно пойти в "коридор". То есть он не должен поворачиваться на белые кубики.

*** Буду работать над кубиком-призом.

Последняя версия бомбера - прилагается!

Fant 22.09.2005 22:47

И еще!

Дальнейшая разработка призов-трата времени! необходимо сперва сделать

4) Нужно сделать так, что бы кубик-приз(тот, что есть уже(то есть мой)) появлялся в случайном месте внутри кубика. (разумеется пробиваемого)


пока этоо не будет...не будет дальнейших призов...

:bad: думаем на этим...

Fant 23.09.2005 17:12

Вложил текстуру приза.

Теперь все работает

jimon 23.09.2005 18:36

мои изменения :
переделал колозии - нах так много ?
переделал управление - было глючное стало нормальное и краткое
убрал лошивий глюк - было в колозиях притом там две колозии повторялись !
поставил ботам тип колозий игрока - потомучто ето тоже самое
зделал более-мение тупой ai :)) правда фактор случайности там кривой :))

замечание которые я сказал fant'у, говорю и здесь

первое - ненадо столько колозий , тормозит
второе - updateworld тоже некидай куда попало
третье - ты зделал неочень рациональное управление
четвертое - ненадо условие для if писать в скобках - можно но ненадо, если после if идет конструктция if ... end if то лутче напиши if aa=0 then... end if чем ети скобки
а так вроде все нормально

и главное - код не оптимизирован

вообщем дерзайте
мона повесить на етот код надпись : jimon modification ;)

Fant 23.09.2005 23:04

2jimon

1) Убрал баг
2) Положил начало ИИ (смешно звучит)

2ALL

1) Нужно сделать так, что бы кубик-приз появлялся внутри кубика(пробиваемого)

2) ИИ первого типа надо добить.

5) Необходимо сделать ИИ 2 типа.
ОПИСАНИЕ:
2. Странник - этот тип имеет обыновение путешествовать по игровой локации, поворачивая в случайном направлении(на 90,180,270,360 грудусов) каждые N количество секунд. Если встречает препятствие(любое), поворачивает на 90 грудусов. Вырезка из ДизДока
Сложность: как сделать так, что когда ИИ2 поворачивается, то он не наталкивался бы на стены, а поворачивался в тот момент, когда можно пойти в "коридор". То есть он не должен поворачиваться на белые кубики.

и объяснить мне, что значит "оптимизировать код"...и почему мой - не оптимизированый.

jimon 24.09.2005 13:17

говорюже - с опытом прийдет к тебе понятие оптимизация :rolleyes:

Жека 24.09.2005 15:45

Это так, но можно этот процесс ускорить!
Надо только раз показать что к чему, и все...

jimon 24.09.2005 17:22

еще один :o

вот пример оптимизиции в жизни

реактивный двигатель универсален
ракета для вылета в космос неуниверсальная и дорогая
оптимизированый вариант - самолет , универсален и дешов и способен летать в космос

а теперь представь ето в программировании...


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

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