forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   The Maze (http://forum.boolean.name/showthread.php?t=4621)

abcdef 08.02.2009 00:13

Ответ: The Maze
 
Вложений: 1
переписал версию программы для работы со своей библиотекой RGB-массив. (все исходники упакованны в jar-файл)

для работы на motorola пришлось:
1. закомментировать строки вывода заднего фона
2. уменьшить высоту рисуемого экрана до 64 точек
3. сократить кол-во рисунков до 13 шт. (в дальнейшем прийдется отказаться от спрайтов ракурса)

добавлено:
1. открывающиеся двери по кнопке GA_GAMEA.
2. игрок стреляет огненными шарами, которые убивают солдат или ломают двери.
__
алгоритм работает в 2-3 раза быстрее моей предыдущей версии, но медленно на motorola v3i, необходимо оптимизировать работу с памятью, и лишними вычислениями... неплохо если кто-нить сделает интересную логику противников

Serg153 08.02.2009 06:32

Ответ: The Maze
 
>>неплохо если кто-нить сделает интересную логику противников
я попробую... но...
мне кажется, что пока - Стрелялку на телефоне хорошую незаделать...
чисто изза управления прицелом(игроком) - так как у мобилки нету мыши =)
может на сенсорных экранах чтонить и получится...
а тут - представь, выходит из двери солдат (видит тебя - открывает огонь - и сообразно своему АИ начинает перемещаться(укрываться) от твоих пуль... пока ты стрелочками донажимаешь его в прицел(центр экрана) он тебя раз 20 убьёт...
а если противник будет тупо стоять и время от времени постреливать - то тут уже тебе это быстро надоест...
---
я попробую реализовать 2 алгоритма Противников
- активный поиск(Пока "жизнь" > 10..20, бот будет "искать" игрока и при появлении его в поле видимости открывает огонь...< 10..20 жизни - убегать от игрока
- пассивный - стоит ждёт - пока или игрок не выстрелит рядом(или непокажется в поле зрения) - стреляет - при возможности вправо влево перемещается (рандмоно) - опять стреляет....

abcdef 08.02.2009 11:56

Ответ: The Maze
 
ты прав Serg153 - управление в мобильнике своеобразное...
___
рекомендую скачать досовскую игру catacombs 3d, там простые, но в тоже время хорошо продуманные противники. Для более-менее нормального AI также нужен алгоритм нахождения нахождения кратчайшего расстояния.
___
нужно заменить умножения/деления на логические сдвиги, буду рад любым предложениям по оптимизации в j2me в особенности для motorola.
___
корень квадратный нужен для нахождения дистанции между двумя точками на плоскости (из формулы: квадрат гипотезы равен сумме квадратов катетов)

Serg153 09.02.2009 11:05

Ответ: The Maze
 
>>...по оптимизации в j2me ...
>>..нахождения дистанции...
мммм.. а дистанция нужна для определения какую стену рисовать?
вертикальную или горизонтальную?
к примеру - до ВертСтены по х 3 по у=4, до гориз стены по х=5 у=4
1 -если просто использовать квадраты расстояний 3*3+4*4=25 5*5+4*4= 41
т.е. рисуем вертикальную стену так как она ближе(25<41) - можно и без корня квадратного обойтись
2 - попробовать вообще без Квадратов типа 3+4=7 5+4=9 снова рисуем верт стену т.к. 7<9...
~~~
попробовать оптимизировать кол-во интераций(глубину луча) -
исходно принимаем что макс длина лабиринта = 64 клетки
Но - при про прорисовке на такую длину стена будет в виде 1..2х пикселей...
тут конечно поэксперементировать - но ограничить максимальный перебор стен до 5-10-15... если стена дальше то отрисовать тёмно серой вертикальной полоской(типа в тени)...
и описать ограничение для дизайнера уровней, что максимально большая комната(видимый участок) не больше например 6 клеток, условно:
*******
*
*******
~~~
опять же расстояние до клеток, нужно для определения коэффициента масштаба выводимой стены - попробовать создать таблицу возможных растояний - с коэфициентами (расчитать и считывать из файла заранее или в програме инициализации игры)
например макс видимое поле 10 клеток - значит массив - вернее 2 массива будут размерностью(10+10=20) и [64+64]
то индекс в массиве будет расчитывать [x+y] - это расстояние в Больших клетках - [x1+y1] это координаты игрока в клетке....
и множитель выводимой стены будет равен m1[x+y]+m2[x1+y1]
типа такого?

abcdef 09.02.2009 11:45

Ответ: The Maze
 
Serg153 здесь немножко по другому (надоб разобраться в исходнике),
корень квадратный-вспомогательная функция для сортировки/отрисовки спрайтов,
луч из глаз всегда останавливается при достижении стены и ни когда не должены уходить дальше 64 клеток

cahekp 10.02.2009 20:18

Ответ: The Maze
 
to abcdef:
Класс! Респект тебе! ;)
Интересно получилось, только, вижу, ты так и не вдавил дверь... Не получается? :)
А я ведь не успокоюсь, пока дверь не вдавлю!
Все хожу, шаманю с бубном, брожу вокруг да около... А для чего нужны переменные u и v, а также u1 и v1? Можешь объяснить?

cahekp 03.03.2009 18:48

Ответ: The Maze
 
Вложений: 1
Фух, наконец-то! Десятки бессонных ночей наконец-то дали свои плоды!!
Доделал я все-таки эти двери! :cool:
Итак, что мы имеем:
1. Двери теперь вдавлены внутрь стен наполовину.
2. Двери могут быть полупрозрачными (со сквозными дырками там и т.д.).
3. Все-таки мой алгоритм нахождения квадратного корня для целых чисел почти в 2 раза быстрее твоего, abcdef! Сам на эмуляторе проверял. А потом и на телефоне. Вот. :cool:

Serg153, Что там с AI солдат? Ходют они у тебя уже или все еще нет?

ASMjavaC 09.03.2009 12:24

Ответ: The Maze
 
Вложений: 2
я так понял это все не 3д (не jsr184) а так сказать проекция 3д на 2д плоскость

не бейте но алгоритм текстур не идеален (см. ниже)
неая пилообразность.

jimon 09.03.2009 13:00

Ответ: The Maze
 
ASMjavaC
любое 3д это проекция 3д координат на 2д плоскость

impersonalis 09.03.2009 15:24

Ответ: The Maze
 
юзать сглаживание?

ASMjavaC 09.03.2009 15:55

Ответ: The Maze
 
jimon
да извеняюсь не та и не о том спросил...
меня интересует jsr184-почему его не используют (я так понял это помогает 3д какраз спректировать на 2д чтобы не замарачиваться)
а тут я смотрю делают "движки" и "отображения 3д-2д"

impersonalis вы про пилообоазность? не вдавался в подробности но помойму "немного неправильный" алгоритм текстур

cahekp 09.03.2009 17:03

Ответ: The Maze
 
to ASMjavaC:
>я так понял это все не 3д (не jsr184) а так сказать проекция 3д на 2д >плоскость
Ну да. Это все рэйкастинг.

>не бейте но алгоритм текстур не идеален (см. ниже)
>неая пилообразность.

Да, знаю. А сделать ничего не могу. Не понимаю я, в чем причина! :dontknow:

>меня интересует jsr184-почему его не используют
Насколько я знаю, MIDletPascal не позволяет использовать jsr184.
Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется. Да и по ходу, в данном случае рэйкастинг будет работать быстрее аналогичной игры, но построенной на jsr184. Вот. :cool:

to impersonalis:
> юзать сглаживание?
Не нужно. Здесь надо просто подкорректировать вывод текселей на экран.

ASMjavaC 09.03.2009 17:28

Ответ: The Maze
 
Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется.Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется.
Согласен.. даже игры переделаные на дос намного меньше весили и намного быстрее (хотя графика оставляла желать лучшего)
но для мобилы это актуально все понял.
(хм а смысл jsr184 в чом)

cahekp 09.03.2009 18:33

Ответ: The Maze
 
to ASMjavaC:
> (хм а смысл jsr184 в чом)
Во всем, кроме FPS игр. Я так думаю. :)
Jsr-184 пригодился бы, ну например, в создании гонок. Или космического симулятора. А можно еще и какой-нибудь квест в стиле Alone In The Dark забабахать! Ну и т.д.:)

cahekp 09.03.2009 18:36

Ответ: The Maze
 
ASMjavaC, impersonalis, jimon, поможете в написании этой проги? Людей очень не хватает! :)


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

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