![]() |
Ответ: The Maze
Почитал я эту тему от и до и... Захотелось сделать что-нибудь похожее на Wolfenstein3D. Странно, не правда ли? :)
Вот я вот все мучаюсь, каким же образом сделана эта игра: http://get.mtscity.ru/free/id.22477/...e.210/game.jar (Bunker3D) Все так плавно, гладко... При этом вся проекция 3d мира растянута на весь экран, используются анимированные стены, полустены, анимированные спрайты... Блин, как же у них это так получилось? В Мидлет Паскале нет аналогов drawRGB случаем? :) * через некоторое время * Хм, а если попробовать сделать библиотеку для MP, в которой будет находится метод, тело которого будет вызывать drawRGB? Так, пойду попробую... |
Ответ: The Maze
Вложений: 1
Фух! Только что написал библиотеку, которая работает с ARGB массивом, после чего дает перевести результат в простой Image.
Попробовал слегка переделать наш проект, подключив эту библиотеку... Ура! Апплет стал работать быстрее раз в 10-20! Скорость стала более-менее порядочной! Больше не тормозит так, как раньше. Появился шанс на светлое будущее... :) Так, ребят, а кто-нибудь знает, как реализовать двери? Я вот все понять не могу... Кто сможет написать? P.S. Данная версия подстроена под экран 176х220. Если у вас не такой экран, тогда идите в мою библиотеку и изменяйте там параметры width и height (или просто в главной проге переменные w и h замените на 176 и 128 соответственно). |
Ответ: The Maze
есть игра catacombs 3D написана перед wolfenshtein 3D, по задумкам интересней... можно подглядеть идеи.
___ анимированные стены это просто смена текстуры, проще всего и оптимальнее делать так: а) на карте имеется 2 элемента со схожими изображениями проходить всю карту и менять друг на друга. б) или же рисовать текстуру непосредственно в битовый массив. ___ дверь такой-же элемент стены, только он имеет 2а состояния и анимированный переход между ними |
Ответ: The Maze
2cahekp - ммм.. запустил прогу на моторолке - картинка появилась - а при нажатии на любую клавишу - вылетает.. :-(
|
Ответ: The Maze
Вложений: 1
to Serg153:
Что за телефон? Размер экрана 176х220? Хм... Может, не хватает памяти? А если попробовать закомментировать строку " world:=argb_to_image(w,h); drawImage(world,0,0); " в блоке MAIN LOOP и снова запустить? Если все-равно не пойдет, то, значит, дело все-таки в памяти. Если пойдет - дело в выводе изображения (хотя я сомневаюсь, что это так). Сколько у тебя доступно динамической памяти (Heap) для приложений? Попробуй выбросить из проекта какие-нибудь ресурсы на 150 кбайт.. Глядишь, пойдет! :) to abcdef: По поводу анимации: Ну, думаю, более оптимальный будет, конечно же, первый вариант. Либо мы один массив 64х64 перерисуем, либо кучу текстур точно с таким же размером 64х64... По поводу двери: Ну, насчет того, что дверь - это такая стена, как и другие... Да еще и просто анимированная... Хм, ну не знаю... А теперь пошли мои размышления... :) Как я поглядел, есть две различные реализации дверей - это объемная (как, например, в Бункер3Д) и в виде спрайта, который имеет свою собственную ось вращения (Вольфенштейн3Д). Я вот, например, совсем не представляю, как можно сделать объемную дверь и считаю, что это еще тот геморрой. Почему? Ну, во первых, надо создать объект, который имеет размер меньше обычных стен (дверь же будет выглядеть не в виде куба, правильно? :)). Это первая заноза: сделать на 2-мерной карте объекты, размеры которых будут меньше стандартных. Дальше - больше. Вот во время открытия двери что делать лучу? Вот он вылетает из нашего глаза и идет по клеткам с числом 0, пока не дойдет до какого-либо препятствия. Дошел он до клетки, скажем, 5. Это клетка, которая означает, что это - дверь. Да дверь то и не простая, а еще и в процессе анимации! И открыта наша дверь наполовину. Нет, пусть лучше будет чуть больше, чем в половину... ;) И что делать лучу? По логике, он каким-то макаром должен понять, именно в ЭТОЙ точке есть кусочек двери, или же тут ничего нет и нужно просто продолжать движение дальше? Для большей ясности смотрите аттач к посту. Это заноза номер два: проблема трассировкой лучей. Более того, а что делать спрайтам, которые находятся позади двери? Как им объяснить, что часть их находится позади двери и должна быть отображена, а часть - нет? Заноза три: проблемы со спрайтами. Хотя, наверно, последний пункт можно выбросить. Если мы сможем правильно заполнить массив ScreenDist, то, по ходу, проблем возникнуть не должно... Я думаю, что гораздо легче будет создать дверь в виде спрайта. Это полезно, так как помимо дверей, можно будет точно также создать какие-нибудь решетки, стены со сквозными дырками... Да и просто спрайты, которые не будут постоянно поворачиваться в сторону игрока, а будут смотреть только строго туда, куда им указал смотреть разработчик. :) Спрайтовую дверь будет легко всунуть в любое место, задать ей начальный поворот, двигать... С помощью спрайтов можно будет попробовать создать "битую" дверь, с небольшими сквозными отверстиями. Будет выглядеть круто. :) Вот только как сделать так, чтобы спрайт имел свою собственную ось?!?? Вот, что меня больше всего мучает!!! :( Как менять его вид, опираясь на угол зрения игрока? Не понимаю... Кто сможет это объяснить (а еще лучше: реализовать)? |
Ответ: The Maze
насчет дверей :) допустим младший байт на карте будет элемент, а остальные статус и тд. Т.о. у нас появляется место для записи положения. при столкновении луча с дверью находим место столкновения 0...63 и смотрим, если луч попадает в открытую часть - пропустить дальше. чтобы дверь рисовалась тоньше чем обычная стена лучу необходимо шагнуть немножко вглубь. да, и еще лучше разделить элемент карты на 4е элемента и для каждой стороны рисовать свою текстуру.
__ чтобы программа запускалась на motorola нужно освободить место для битового массива, удалив 8 картинок, в таком случае текстуры должны подгружаться по мере надобности |
Ответ: The Maze
Хм, интересненько... )
Пойду эксперименты ставить.. ) |
Ответ: The Maze
Вложений: 1
Мда.. Весь день этой фигней промаялся и вот что сделал:
1. Алгоритм поиска квадратного корня для целых чисел был усовершенствован и теперь работает довольно быстро. :) 2. Карту игра считывает из файла 1.map. Файл имеет читабельный вид и представляет из себя набор символов, которых может быть меньше, чем 64*64 штук. 3. Изменил текстурки. Старые надоели. Пофиг, что новые не блещут качеством, зато они новые!.. :) 4. Еще немножко прооптимизировал игрульку. НО! Я так до сих пор и не понял, КАК ЖЕ ВСЕ-ТАКИ ПУСТИТЬ ЛУЧ ЧУТЬ ДАЛЬШЕ, ЕСЛИ ОН СТОЛКНУЛСЯ С ДВЕРЬЮ! Точнее, понял, но как только я его начинаю пускать чуть дальше, то начинается ВСЯКАЯ НЕХОРОШАЯ КАЛЯ-БАЛЯ!!! Видимо, математик из меня никакой... :( Блин, как же все-таки сделать?! Бесит уже! :crazy: |
Ответ: The Maze
(пишу с телефона, поэтому пока только совет)
лучи строятся по алгоритму рисования прямой на плоскости, отличие от большинства подобных алгоритмов в том что луч полностью перешагивает через пространство кубика к его границе. все приращения луча расчитываются заранее. нужно основной цикл луча и расчет места столкновения заключить в дополнительный цикл, который повторялся если клетка дверь, причем перед итерацией делал шаг основного луча вдвое меньше чем положено. Скорее всего именно так и должно быть |
Ответ: The Maze
Хм... Ну что же, буду ждать твоей реализации... :)
А потом буду сравнивать со своей... Хех. |
Ответ: The Maze
>>1. Алгоритм поиска квадратного корня для целых чисел был усовершенствован и теперь работает довольно быстро
...ммм - я так понимаю что квадратный корень нужен для определения растояния до пересечения с гориз или верт стеной - а может отказаться от вычисления корня и использовать разницу квадратов? |
Ответ: The Maze
Вложений: 1
переписал версию программы для работы со своей библиотекой RGB-массив. (все исходники упакованны в jar-файл)
для работы на motorola пришлось: 1. закомментировать строки вывода заднего фона 2. уменьшить высоту рисуемого экрана до 64 точек 3. сократить кол-во рисунков до 13 шт. (в дальнейшем прийдется отказаться от спрайтов ракурса) добавлено: 1. открывающиеся двери по кнопке GA_GAMEA. 2. игрок стреляет огненными шарами, которые убивают солдат или ломают двери. __ алгоритм работает в 2-3 раза быстрее моей предыдущей версии, но медленно на motorola v3i, необходимо оптимизировать работу с памятью, и лишними вычислениями... неплохо если кто-нить сделает интересную логику противников |
Ответ: The Maze
>>неплохо если кто-нить сделает интересную логику противников
я попробую... но... мне кажется, что пока - Стрелялку на телефоне хорошую незаделать... чисто изза управления прицелом(игроком) - так как у мобилки нету мыши =) может на сенсорных экранах чтонить и получится... а тут - представь, выходит из двери солдат (видит тебя - открывает огонь - и сообразно своему АИ начинает перемещаться(укрываться) от твоих пуль... пока ты стрелочками донажимаешь его в прицел(центр экрана) он тебя раз 20 убьёт... а если противник будет тупо стоять и время от времени постреливать - то тут уже тебе это быстро надоест... --- я попробую реализовать 2 алгоритма Противников - активный поиск(Пока "жизнь" > 10..20, бот будет "искать" игрока и при появлении его в поле видимости открывает огонь...< 10..20 жизни - убегать от игрока - пассивный - стоит ждёт - пока или игрок не выстрелит рядом(или непокажется в поле зрения) - стреляет - при возможности вправо влево перемещается (рандмоно) - опять стреляет.... |
Ответ: The Maze
ты прав Serg153 - управление в мобильнике своеобразное...
___ рекомендую скачать досовскую игру catacombs 3d, там простые, но в тоже время хорошо продуманные противники. Для более-менее нормального AI также нужен алгоритм нахождения нахождения кратчайшего расстояния. ___ нужно заменить умножения/деления на логические сдвиги, буду рад любым предложениям по оптимизации в j2me в особенности для motorola. ___ корень квадратный нужен для нахождения дистанции между двумя точками на плоскости (из формулы: квадрат гипотезы равен сумме квадратов катетов) |
Ответ: 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] типа такого? |
Ответ: The Maze
Serg153 здесь немножко по другому (надоб разобраться в исходнике),
корень квадратный-вспомогательная функция для сортировки/отрисовки спрайтов, луч из глаз всегда останавливается при достижении стены и ни когда не должены уходить дальше 64 клеток |
Ответ: The Maze
to abcdef:
Класс! Респект тебе! ;) Интересно получилось, только, вижу, ты так и не вдавил дверь... Не получается? :) А я ведь не успокоюсь, пока дверь не вдавлю! Все хожу, шаманю с бубном, брожу вокруг да около... А для чего нужны переменные u и v, а также u1 и v1? Можешь объяснить? |
Ответ: The Maze
Вложений: 1
Фух, наконец-то! Десятки бессонных ночей наконец-то дали свои плоды!!
Доделал я все-таки эти двери! :cool: Итак, что мы имеем: 1. Двери теперь вдавлены внутрь стен наполовину. 2. Двери могут быть полупрозрачными (со сквозными дырками там и т.д.). 3. Все-таки мой алгоритм нахождения квадратного корня для целых чисел почти в 2 раза быстрее твоего, abcdef! Сам на эмуляторе проверял. А потом и на телефоне. Вот. :cool: Serg153, Что там с AI солдат? Ходют они у тебя уже или все еще нет? |
Ответ: The Maze
Вложений: 2
я так понял это все не 3д (не jsr184) а так сказать проекция 3д на 2д плоскость
не бейте но алгоритм текстур не идеален (см. ниже) неая пилообразность. |
Ответ: The Maze
ASMjavaC
любое 3д это проекция 3д координат на 2д плоскость |
Ответ: The Maze
юзать сглаживание?
|
Ответ: The Maze
jimon
да извеняюсь не та и не о том спросил... меня интересует jsr184-почему его не используют (я так понял это помогает 3д какраз спректировать на 2д чтобы не замарачиваться) а тут я смотрю делают "движки" и "отображения 3д-2д" impersonalis вы про пилообоазность? не вдавался в подробности но помойму "немного неправильный" алгоритм текстур |
Ответ: The Maze
to ASMjavaC:
>я так понял это все не 3д (не jsr184) а так сказать проекция 3д на 2д >плоскость Ну да. Это все рэйкастинг. >не бейте но алгоритм текстур не идеален (см. ниже) >неая пилообразность. Да, знаю. А сделать ничего не могу. Не понимаю я, в чем причина! :dontknow: >меня интересует jsr184-почему его не используют Насколько я знаю, MIDletPascal не позволяет использовать jsr184. Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется. Да и по ходу, в данном случае рэйкастинг будет работать быстрее аналогичной игры, но построенной на jsr184. Вот. :cool: to impersonalis: > юзать сглаживание? Не нужно. Здесь надо просто подкорректировать вывод текселей на экран. |
Ответ: The Maze
Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется.Да и зачем? Jsr184 тут нафиг не нужен и "true-3d" в играх этого типа никогда не используется.
Согласен.. даже игры переделаные на дос намного меньше весили и намного быстрее (хотя графика оставляла желать лучшего) но для мобилы это актуально все понял. (хм а смысл jsr184 в чом) |
Ответ: The Maze
to ASMjavaC:
> (хм а смысл jsr184 в чом) Во всем, кроме FPS игр. Я так думаю. :) Jsr-184 пригодился бы, ну например, в создании гонок. Или космического симулятора. А можно еще и какой-нибудь квест в стиле Alone In The Dark забабахать! Ну и т.д.:) |
Ответ: The Maze
ASMjavaC, impersonalis, jimon, поможете в написании этой проги? Людей очень не хватает! :)
|
Ответ: The Maze
Вложений: 1
хорошо сделал двери cahekp! вижу разобрался в алгоритме.
___ Выкладываю с изменениями алгоритма: теперь карта - одномерный массив, убрал некоторые лишние вычиления, вернул разрешение к 176x132 (работает на motorola V3i и др.) реализовал свое решение, отрисовки дверей. ____ Что нужно: выявить медленные участки кода и оптимизировать их. квадратный корень ищется 50 раз за игровой цикл (но все-таки это кандидат на оптимизацию... не использовал твой алгоритм нахождения кв.корня, потому что программа висла.), даже если полностью исключить подпрограмму отрисовки спрайтов, то прирост скорости ~60%. ____ p.s. занимаюсь этим проектом для отдыха после работы, народ будет предлогать свои решения буду поддерживать его... |
Ответ: The Maze
to abcdef:
> не использовал твой алгоритм нахождения кв.корня, потому что программа висла. Да, было такое дело. :) Добавил дополнительное условие и перестало виснуть. Совсем. |
Ответ: The Maze
поможете в написании этой проги
тут много "написано" всмысле измененных исходников.. я человек медленный и считаю что алгоритм arT необходимо как следует осмыслить потестить на ошибки.. впринципе тоесть необходимы еще движки.. чтобы в итоге сделать самый самый.. (думаю поняли), а так если чем могу помогу |
Ответ: The Maze
abcdef
сейчас заметил или было так, но прицел сбит - огонь пускается на 10 пикселов в лево\право |
Ответ: The Maze
cahekp - проверил твой кв.корень с дополнительной проверкой цикла - вроде не виснет, переработанный алгоритм находится в выложенном архиве, дополни выход из цикла: ... until (m=n) or (n=m+1)
___ про "прицел" не знаю... а вот насчет полета шара - то здесь накладываются погрешности вычислении при полете, а кроме того игрок поворачивается за раз на 4 градуса |
Ответ: The Maze
Вложений: 1
to ASMjavaC:
По поводу пилообразности... Текстуры кладутся правильно. Пилообразность - это погрешность в целочисленных вычислениях. Она образуется из-за того, что во время текстуризации столбика шаг приращения не может принимать дробные значения. Из-за этого возникают вот такие вот "эффекты". Так вот, чтобы не переводить шаг в вещественный тип (а вещественные числа очень медленные в вычислениях), мы пытаемся избавиться от этой погрешности, умножая шаг на 512, а во время определения цвета точки - деля его на 512. Так вот, если шаг умножать не на 512, а, например, на 4096, то пилообразность практически полностью исчезает. ... coof:=(63*4096) div hh; ... setp(n, data[elem,TxLine+(yo div 4096)*64]); ... Другое дело, что умножения на большие числа - это тоже не есть хорошо. Тут бы побитовым сдвигом влево/вправо поработать, вот тогда бы было все в шоколаде! :) |
Ответ: The Maze
тут говорили о проблеме убийства "проворных" врагов
предлагаю управление (дополнительное по цифровой клаве): 1 - движение вперед с поворотом влево + огонь 2 - движение вперед + огонь 3 - движение вперед с поворотом вправо + огонь 4 - движение боком влево + огонь 5 - (наверно просто огонь стоя или поворот на 180 градусов) 6 - движение боком вправо + огонь 7 - движение назад с поворотом влево + огонь 8 - движение назад + огонь 9 - движение назад с поворотом вправо + огонь еще остается * 0 # для них можно в будущем сменить оружие, включить фонарик, бросить гранату или еще чтонибудь другое |
Ответ: The Maze
to ASMjavaC: На мобильнике нельзя нажимать более, чем одну клавишу. "Движение вперед с поворотом влево + огонь" выполнить не получится.
|
Ответ: The Maze
cahekp
Цитата:
|
Ответ: The Maze
тогда игра еще больше будет тормозить
|
Ответ: The Maze
это вообще ни как не скажется на скорости... просто непривычно как-то
|
Ответ: The Maze
ну незнаю производительность зашкаливать будет
|
Ответ: The Maze
Интересный проэкт. Но тормозит на моём к610й. Может его лучше было бы сделать на нормальной j2me?
|
Ответ: The Maze
не нужно просто не использовать бмп
|
Ответ: The Maze
А что бмп его тормазит?
П.с. не знаете где найти информацию как вращать картинку по всем трём осям в 3д пространстве? Хотелось бы и свой превдо 3д движок сделать. В этой игре картинки только по одной оси вращаются, мне бы хотелось большего. |
Ответ: The Maze
KAK? TAK!, от формата изображений совершенно ничего не зависит. Разве что загрузка одних может быть медленнее, чем загрузка других на тысячные доли секунды, но когда изображения уже в памяти - разницы никакой.
|
Ответ: The Maze
все равно
|
Ответ: The Maze
Вложений: 1
Я нашёл исходники всех фалов .class из игры Bunker3D на Java
Посмотрите! вот архив и сама игра |
Ответ: The Maze
Вложений: 1
-------
|
Ответ: The Maze
если это исходники... - то можно с уверенностью сказать, что все компилированные java-программы идут в исходных кодах :)
|
Ответ: The Maze
IronWoodCutter (abcdef), ты вроде переделывал как-то мидлетпаскалевский математический класс, чтобы методы назывались по-нормальному. Вот сегодня я лазил по инету в поисках реализации квадратного корня в fixed-point, и наткнулся на вот это: http://home.comcast.net/~ohommes/MathFP/ . Я с удивлением обнаружил, что это полная копия F.class, но с понятными названиями методов! Очень полезная вещь.
|
Ответ: The Maze
да, это практически F.class, только в MidletPascal'e он немножко расширен, а в моей переделке немножко оптимизирован
|
К Cliffe Snake
-------------- А ты можеш к своёму варианту прикрутить карту в txt, двери и немцев? Стрельба необязательная. ОЧЕНЬ НАДО:). НА СПАСИБО НЕ ЖАДНЫЙ!!! |
Ответ: The Maze
Карту в txt без проблем, а двери и немцев, хз.
|
Карту плиз!!!:)
|
Ответ: The Maze
Если кому интересно - нашел в "Советы по Delphi от Валентена Озерова 1-1000" алгоритм вычислений с произвольной величиной (можно адаптировать на MP в алгоритм с фиксированной точкой для больших величин), вот текст статьи:
____ Огромные числа Данный модуль использует массив байт для предоставления БОЛЬШИХ чисел. Бинарно-хранимые числа заключены в массив, где первый элемент является Наименьшим Значимым Байтом (Least Significant Byte - LSB), последний - Наибольшим Значимым Байтом (Most Significant Byte - MSB), подобно всем Intel-целочисленным типам. Арифметика здесь использует не 10- или 2-тиричную, а 256-тиричную систему исчисления, чтобы каждый байт представлял одну (1) цифру. Числа HugeInttype - Подписанные Числа (Signed Numbers). При компиляции с директивой R+, ADD и MUL могут в определенных обстоятельствах генерировать "Arithmetic Overflow Error" (RunError(215)) - ошибка арифметического переполнения. В таком случае пользуйтесь переменной "HugeIntCarry". Переменная "HugeIntDiv0" используется для проверки деления на ноль. Используйте {$DEFINE HugeInt_xx } или поле "Conditional defines" (символ условного компилирования) в "Compiler options" (опции компилятора) для задания размерности, где xx должно быть равно 64, 32 или 16, в противном случае HugeIntSize будет равен 8 байтам. Код:
unit HugeInts; |
Ответ: The Maze
Есть пару вопросов:
1.Как "подвинуть" спрайт напр. №2 на 1 по Х или Y? 2.Как сделать ещё один или два вида спрайтов (тоесть чтобы были не такие с виду)? Очень надо! |
Ответ: The Maze
летающие шары это двигающиеся спрайты...
я вроде полностью разжевал весь код для создания полноценной игры |
Ответ: The Maze
Вложений: 1
Цитата:
Реализовано: Загрузка карты с файла, расстановка точек старта и перехода. Незаметная для глаза смена карт, их подгрузку видно только если включить радар. Сделал 2 карты из планировавшихся 5-ти. Так же хочу сделать редактор карт. Формат карты: 1я строка: ШиринахВысота Далее сама карта, пока только 0-9 (т.е. 10 текстур) "S" - точки старта. "Е" - точки перехода/телепорта/выхода после карты идут строки с описанием точек старта(откуда пришли на эту карту) потом любая строка, после которой следуют описания точек перехода(при попадании на точку куда перейти). в конце файла-карты должен быть хотябы 1 перевод строки (Капризы МП). Перемещения методом телепорта в пределах одной карты ещё нет. Чтобы включить радар введите имя "Radar". |
Ответ: The Maze
убойно... исходник боюсь открывать...
|
Ответ: The Maze
красиво, но очень тормазит.
|
Ответ: The Maze
парни если проект еще в стадии развития могу подкинуть ресурсы оружия! Если что ася 440448075
|
Ответ: The Maze
Подскажите народ, как в этом двиге поставить спрайт оружия?(ну как на всех fps-шутерах) А то хочу попробовать Duke Nukem 3d mobile сделать....
|
Ответ: The Maze
Он тормозит на телефонах жесть как врятле получится
|
Ответ: The Maze
ну, на моих не тормозит...
|
Ответ: The Maze
Ну и так-то r3d для меня слишком сложен...
Возьмусь-ка я за maze3d....) |
Ответ: The Maze
Исходник на удивление маленький. Респект!
|
Ответ: The Maze
Вложений: 1
Вот ресурсы оружия
Для начала хватит |
Часовой пояс GMT +4, время: 06:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot