исходники The Maze (псевдо 3d)
Вложений: 4
Вариация на тему Eye of Beholder. Мож кому и пригодится.
|
Re: The Maze
Думаю пригодится.
Спасибо. |
Ответ: The Maze
Вложений: 1
Спасибо за исходник! интересный движек игры. не удержался и переделал в более понятный и простой вариант. понравилась идея подстраивать скорость игры под заданный FPS (кол-во кадров в секунду).
Немного изменил логику, наложение спрайтов и пересчет задержки, все реализовано без внешних java-библиотек. Теперь только добавить противников,их логику и будет неплохая игра ;) |
Ответ: The Maze
Кстати, видел подобную игру. Даже не подобную. Я бы сказал, практически копия. Не помню как называлась. Там было несколько уровней и карту можно было смотреть вроде на решётку. И в карте было открыто только то, где ты уже ходил (вроде, точно не помню). Помнится, с неделю у меня на мобиле стояла эта игра (с детства обожаю всякие лабиринты!!!), но так как все уровни в итоге знал наизусть - удалил =) Года два назад это было, оформление было всё такое зелёное вроде, стены зелёные, тёмно-зелёные. Названия не помню. Но ооочень похоже на твой движок. Я тогда целый день в инете искал лабирант какой-нибудь на телефон ))))))))))))) И вот нашёл. Очень интересная идея! 3D в 2D. Круто! МегаРеспект и зачот!
|
Ответ: The Maze
|
Ответ: The Maze
Байанистые игрушки :) Играли все кому не лень.
|
Ответ: The Maze
Не. В Дум раньше играл, а вторую впервые вижу. В них же вроде ТРУ 3D заюзано? Дум страшно тормозил на семёне. А тут выложен 2D двиг, который эмитирует 3D!!! На семёне летает!!! А если ещё сделать пару промежуточных кадров, чтобы каждый шаг плавно происходил, то вообще класс будет!!! Может быть займусь этим. только на Java. Можно попробовать даже либу-двиг для МП написать =) Вот только проблематично будет противников сделать. Разве что просто по лабиранту ходить. У кого-нибудь есть мысли какие-нибудь?
|
Ответ: The Maze
Кстати, на сименсе запускаю этот лабиринт и все прозрачные места картинок залиты красным цветом. На эмуле нормально, а насименсе такая вот фигня. В чём дело?
|
Ответ: The Maze
В них не Тру 3D. Это псевдо-3D.
Цитата:
|
Ответ: The Maze
О_о реально что ли там псевдо 3D??? Ща расшарю.
- - - А это, в Java вообще есть ТРУ 3D? Есть ведь вроде какие-то библиотеки для создания сцен и 3D объектов? |
Ответ: The Maze
когда-то делал 3D игру полностью весь движек и остальное. На одной клавиатура можно было играть от 1 до 4 игроков плюс боты... но времена MS-DOS прошли. Программы в телефон примерно тоже самое. Создание игры в телефоне делится на две группы: либо используюте встроенные библиотеки,-тогда не на всех телефонах будет работать, либо пишете движек для вывод изображения в двухмерный массив а потом сбрасываете его на экран -работать будет везде и нормально если правильно сделать
|
Ответ: The Maze
Java 3D есть. Это JSR 184. Но я хочю сделать именно псевдо-3D.
|
Ответ: The Maze
abcdef, хз-хз. Не видел ни одной TRUE 3D java игры, которая шла бы нормально на сименсе. Я, например, не представляю, как можно на лету наклонять в перспективе изображения, чтобы это не повлияло на скорость. Точнее я вообще не представляю, как пересчитать пиксели картинки в массиве, чтобы получилась наклонная картинка, но даже если это сделать, то сименс будет ооочень медленно это делать. А так как у меня за всё время было только два телефона, один из них Soney Ericsson T290i, который вообще java не поддерживает, а остальные - сименсы, поэтому меня не волнуют другие мобилы, если на моей это будет тормозить. =)
|
Ответ: The Maze
Вложений: 1
Вот простой исходник и компиленная демка 3D-мира.
Сделана не мной, я немного перерабатывал в более простой вид. Cкачивал с http://www.gamedev.ru/download/ там еще были: 3D-танк; охота за птицами; shooter c динозавром... но сейчас ссылка на этот файл не работает. Здесь представлен один из базовых алгоритмов вывода 3D-грани с наложением текстуры и использованием Z-буфера. _______ Если это реализовать для телефона, то нужно составлять несложную карту с минимальным кол-вом граней, потому что отрисовка отнимает много времени. вот некоторые 3D игры, которые работают на моей моторолле, где медленная java-машина и нет 3D библиотек: DungeonWarrior; 3D_Paintball; MDoom; tutanhamon_3d. Также есть группа игр, где псевдо-3D изображение реализованно когда камера смотрит на игрока сверху-сбоку такие игры работают довольно быстро. |
Ответ: The Maze
Занятно! Я сейчас пытаюсь сделать нечто подобное на java. Когда сделаю, обязательно выложу :)
|
Ответ: The Maze
Ща скачаю. Ну под TRUE 3D я подразумеваю любое 3D, где реально происходит наклон картинок в перспективе. А псевдо 3D - это как в The Maze, там все наклоны отрисованы в отдельные картинки и сохранены. =)
- - - Через минуту: EXEшник показывает чёрный экран, а паскаль я не знаю и компилятора нет :@ |
Ответ: The Maze
тру 3д это на улице, у телефона экран 2д
|
Ответ: The Maze
DOS-программы ведут себя не предсказуемо в windows линейки NT, бывает перестановишь, и вообще в полноэкранном режиме отказываются работать, хотя до этого все было OK, бывает на 2-й раз запускается... а вообще скачай эмулятор DosBox, или загрузись с дискеты и запускай...
|
Ответ: The Maze
jimon, блин, ну неужели не понятно, что я имею ввиду?
|
Ответ: The Maze
Вложений: 1
Я наконец смог придумать функцию, которая наклоняет картинку в пространстве. Правда, еще не оптимизировал.
|
Ответ: The Maze
О_о Я даже не представляю, как это сделать... Хотя...Сначала сжать по горизонтали, пересчитать все пиксели в каждой строке на основании новой ширины рисунка, потому пересчитывать каждый столбик отдельно, в зависимости от его высоты (высота в данном случае будет разная у всех столбиков). Типа так. А ещё можно даже не пересчитывая. Просто выбрасывать лишние пикселы, ну а если растягивать картинку, то просто заменять новые пикселы такого же цвета, как и соседние. Во блин. А до этого момента даже в голову не приходило как это работает =)
|
Ответ: The Maze
Phantom_wc
по ищи формулы основ 3д графики - перевод 3д координаты в 2д кооридануту на екране, сможешь сделать банальное проволочное 3д (крутить 3д кубик из линий на екране) так же сможешь найти как рендерить полигон с текстурой |
Ответ: The Maze
jimon, так дело-то в том, что я к этому и не стремлюсь. Я не занимаюсь игроделаньем. И мысль была сделать именно так, как сделан этот проект в первом посте, потому что не требуется высокая производительность. А вот пример Романзеса с вращающейся в перспективе картиннкой на моём сименсе воспроизводится с трудом. Да и пока некогда и этим заниматься. =(
|
Ответ: The Maze
Неплохая идея сделать игру на основе voxel'ого движка (кто не знает - отрисовка карты из двухмерного массива, в котором элементы - это высота точки на карте, столбцы либо разукрашиваются в зависимсти от высоты. Либо на рельеф накладывается рисунок как в предложенном примере.
home page: http://delphi6games.narod.ru/prim.htm download_url: http://delphi6games.narod.ru/prim/voxel.rar Для нормальной компиляции в Delphi локальную переменную rotate:integer=0; перенесите в область глобальных переменных примерно так: _____________ Var {Cosine and Sine tables} CosT, SinT : Array [0..2047] of Integer; {Distance compensation table} DComp : Array [1..Depth + 1] of Integer; iMap:array[0..$FFFF] of byte; hMap:array[0..$FFFF] of byte; rotate:integer=0; _________________ |
Ответ: The Maze
Вложений: 1
Сегодня на работе занимался дуракавалянием, под руку попался на кануне скачанный picture3D.zip от Romanzes.
Переделал под MIDletPascal без дополнительных java-библиотек. интересно, что хотя я добавил много дополнительного кода, но jar-файл получился на 10% меньше чем предоставленная java-версия. Работает медленнее раза в 3 чем java-аналог, впрочем для MIDletPascal это нормально. __________ Идеи (от arT) реализованные в данной программе: 1. Загрузка 256-цветных bmp файлов в байтовый массив и работа с ним 2. Загрузка чисел из текстовой строки, числа разделяются любым кол-вом символов, которые не в диапазоне '0'..'9' (т.е. не являются числом) _ Примечание: команды сохраниения константных массивов равносильны одиночным присваиваниям и каждая занимает в памяти около 7 байт, поэтому лучше загружать данные из ресурсов или конвертировать из строки. ____ p.s. полностью 3D-алгоритм реализовать в MIDletPascal вредно, для этого подходит только java, притом с хорошей оптимизацией методов/идей и алгоритма.. |
Ответ: The Maze
Я как раз думал о том, что очень хорошо бы было пользоваться 256-цветной палитрой. Вот в чем прикол: я в java-программе для отрисовки картинки пользуюсь функциями getRGB и drawRGB, которые юзают массив чисел int. Каждое число занимает 4 байта. В картинке >6000 пикселей. Получается, что этот массив в памяти занимает больше 24 Кб. Кроме того, программа наверняка будет работать гораздо быстрее с числами byte, нежели чем с int. Я даже декомпилировал стандартные классы j2me, чтобы посмотреть реализацию этих функций, и написать свои :) , но там написано вот что:
public native void drawRGB(int ai[], int i, int j, int k, int l, int i1, int j1, boolean flag); Если кто знает, как реализовать загрузку и отрисовку массива пикселей в формате byte, пишите. Прога на Midlet Pascal работает медленнее скорее всего потому, что для отрисовки используется процедура plot, которая в МП реализована через рисование квадрата размером в 1 писксель :-D. |
Ответ: The Maze
Вложений: 1
Romanzes - основа 3D - это 3-x-трехугольная грань, потому что проще расчитывается, все изображения строятся на ее основе.
Быстрее чем getRGB и drawRGB врятли получиться. Integer - родной тип java-машины, с другими даже меньшими типами она дольше работает. Тип byte служит только для того чтоб занимать в памяти меньше места. Поэтому прийдется пожертвовать объемом памяти в пользу производительности. ___ plot - это обертка, писал для наглядности, а вообще оптимальнее писать так: fillRect(x,y,1,1); немножко оптимизировть это сократить кол-во циклов, поэтому можно напрямую выводить на экран, а не во временный массив ___ об оптимизации функцию sin, лучше переписать так: function sin(angle:integer):integer; begin sin:=0; angle:=angle mod 360; if (angle<0) then angle:=360+angle; if (angle<=90) then sin:=sintab[angle] else if (angle<=180) then sin:=sintab[180-angle] else if (angle<=270) then sin:=-sintab[angle-180] else sin:=-sintab[360-angle]; end; ___ и еще везде где возможно расчитывайте заранее все выражения, которые не изменяются в цикле, а еще старайтесь чтобы смещение в массивах было инкрементным, а не с помощью вычислений.. ___ p.s. Выкладываю свою версию проволочного 3D-куба. |
Ответ: The Maze
Вложений: 1
Заинтересовала идея воксельного движка. Вот мои наработки: Лунный звездолет в MIDletPacal. Реализовано без внешних java-библиотек.
Но программа все-таки работает медленно, оптимизации требует переработка вывода графики с поточечного режима на getRGB и drawRGB. Если добавлять логику, что еще приведет к снижению производительности, то необходимо уменьшить размеры экрана вывода, чтобы меньше точек пересчитывалось. ___ p.s. у кого какие идеи, можно сделать стрелялку или что-нить подобное только нужны дизайнеры и интересные задумки |
Ответ: The Maze
Sorry I don't speak much Russian.
Nice work on the voxel engine and the 3D cube. The best approach would be to use a raycaster, like the one used in Duke Nukem 3D, this build engine worked on processors as slow as a 66MHz, 486. The only problem is there isn't enough RAM for many textures, and scaling them on the phone would also be a problem. |
Ответ: The Maze
Вложений: 1
FISHY -
The problem even not in memory, as in speed of the machine, which differs in realizations. The usual telephone is worse than computer 486 (66MHz). _____ Немного оптимизировал voxel (new version), картинка более четкая, теперь если оптимизировать дальше, то необходимо умножение/деление заменить побитовыми сдвигами (shr shl). изменение отображения карты настраивается в строке: y1:=((255-(c-h)*8) div depth)+60; если нужно что бы камера реагировала на текущую высоту раскомментируйте строку: h:=(map[(y div 1024) and 255, (x div 1024) and 255]); и переправьте строку if y2<=40 then break; в if y2<=0 then break; если будет использоваться drawRGB, то раскомментируйте строку if y2>0 then verticalline(i,0,y2,0); и добавьте дорисовку текущего столбца цветом заднего фона (т.е. очистку). |
Ответ: The Maze
ещё неброльшая оптимизация в MIDletPascal, дальше только реализация алгоритма в java. ....ну так как? какие у кого идеи? у меня сейчас логику делать - нету времени...
Код:
procedure drawMap; |
Ответ: The Maze
Я сейчас сильно занят, когда освобожусь, попытаюсь сделать движок типа Wolfenstein 3D с использованием рэй-кастинга.
|
Ответ: The Maze
спасибо Ром, твой арканойд с классной, интересной логикой!
(по разработке wolf-3D) В виду ограниченной скорости Z-buffer реализовать не получится, только его частный случай, вот некоторые приемы отображения спрайтов в псевдо-3D: после прорисовки всех стен остается массив размером в ширину экрана, и для каждого вертикального столбца в одну точку шириной записывается дистанция до стены. После расчета положения всех спрайтов, расстояния до них, и, соответственно, масштабирования, при их выводе, если линия пикселей из картинки ближе чем отрезок стены, то выводим его, иначе она за стеной, и мы его не выводим |
Ответ: The Maze
Вложений: 1
Sorry I don't speak much Russian
-------------------------------------- Basic Raycaster - Good - it works (mostly) Bad - Buggy, ugly, no textures and incomplete. Features - Basic collision detection, movement, sprites, variable depth, full-screen rendering. Needed: Everything fixed - I don't have time - Look forward to seeing what you come up with. Thanks. |
Ответ: The Maze
Что ж, будем стараться сделать :)
|
Ответ: The Maze
Классные движки), молодцы парни. В двиге от Fishy движение относительно камеры под -135 градусов(так выглядит). А в Vox'ельном карта клеится из сгенеренной картинки?
|
Ответ: The Maze
Вложений: 1
FISHY -
I have made correct 3D algorithm and imposing of the images. Now it is necessary to make logic and opponents. _____ Сделал текстурирование стен и корректное 3D-изображение. Необходимо добавить спрайты и логику противников. Работает довольно быстро. Выдрал и немножко оптимизировал библиотеку MIDletPascal работы с типом Real (fixed point) числа с фиксированной точкой.. Возможны ошибки.. тестировать было мало времени, просьба оттестировать путем сравнения результатов вычисления в цикле, с оригинальной библиотекой. _____ Программу легко переделать под java, Ром (Romanzes) пропробуй сделать логику.. |
Ответ: The Maze
Abcdef, а можешь дать скомпиленный lib_mathmp?
|
Ответ: The Maze
abcdef... Офигенно!!!
Примерно так я это и представлял... Реально круто. Теперь постараюсь в свободное время поработать с твоим движком. |
Ответ: The Maze
спасибо Рома.
Cliffe Snake - распакуй jar файлик и получишь компиленный class-файл. ___ p.s.: т.к. библиотека работает с типом integer, то необходимо внимательно проводить вычисления, т.е.: все константы и переменные integer-типа переводить в fixed-real через специализированную функцию fIntToReal. Числа с точкой лучше вводить через функцию fStrToReal. Все арифметические действия, кроме суммы и разности также проводить через функции библиотеки fixed-real |
Ответ: The Maze
Вложений: 1
Оптимизировал алгоритм 3D-текстурирования.
Проверил функции fixed-point library, немного оптимизировал, некоторые функции возвращают более точные значения, убрал некоторые ошибки стандартной библиотеки. Деление на ноль не вешает java-машину, а возвращает ноль. Переписал финкцию fStrToReal, теперь запись можно разделять пробелами напр: ' - 123 . 4567', ' + 98765 . 4321' |
Ответ: The Maze
Тестил пример на эмуле. Когда стенки находятся далеко от камеры, то довольно шустро, а когда близко, очень сильно тормозит, примерно 1fps, а то и 0.5. То есть когда тектура стены во весь экран и таким образом двигаешься, то очень медленно видимо рассчёт большой картинки происходит.Может попробовать картинку раза в четыре меньше взять? И её просто растягивать будет, не на столько чётко будет, но зато будет быстрее рассчитывать наклон в перспективе. Или я не прав?
|
Ответ: The Maze
тормозит из-за процедуры plot, чем больше рисовать тем больше plot. Уменьшение текстур не приведет к снижению четкости, просто точки станут больше. Писал программу под легкую переделку в java, если перенести скорость повысится на 50% и более
|
Ответ: The Maze
Вложений: 1
На Microemulator'е работает почти без тормозов. На sjboy и NHAL(MidpX) тормоза конкретные, особенно на первом.
Добавил в двиг радар, и ещё по мелочи. (см. ReadMe) |
Ответ: The Maze
молодец Cliffe Snake, движёк начинает быть похожим на игру.. я старательно избугаю внешних java-библиотек, чтобы показать реализацию программ более простыми (но не всегда эффективными) методами. Если продолжать проект в MIDletPascal, то нужно добавить drawRGB вместо plot(x,y), создать массив спрайтов примерно следующего вида:
Код:
TSprite = Record {Параметры спрайта} Логика отображения: после прохождения массива спрайтов мы расчитывает положение и размеры каждого из них, а затем при выводе на экран проверяем попадает ли он в угол зрения игрока, и при выводе каждой вертикальной его линии следим чтобы она была больше, т.е. ближе чем линия стены. |
Ответ: The Maze
Товарищи, а где можно популярно и доходчиво почитать про ray-casting? Все никак не могу с ним разобраться :)
|
Ответ: The Maze
Вот, если кто хочет, покурите исходники оригинального Wolfenstein 3D. Сам я в них разобраться не могу, потому что пока не знаю C++. А я пока займусь переносом двига от abcdef на java. Все-таки я считаю, что нужно юзать png картинки, а не bmp.
|
Ответ: The Maze
Romanzes - в принципе без разницы в каком формате картинки. Помнится что jar-файл поворота картинки был даже больше, чем версия на паскале. Это все из-за файла Gordon.png - он плохо сжимался. А bmp из-за малой палитры лучше упаковывался. Все-таки лучше оставить bmp, потому что с ним легче работать и после загрузки картинок (безразлично в каком формате) остаются только массивы пикселов.
___ Cliffe Snake - текстурирование пола и потолка в 2 раза понизит скорость программы, но есть способ зарисовки удаленным задним фоном зданий/гор/неба, (когда-то придумывал, но он будет работать только c drawRGB),состоит в том что: в массив экрана вводим другой массив со смешением позиции: остаток от деления угола зрения на ширину экрана, таким образом получаем плавную прокрутку заднего фона.. смотрится довольно эффективно,.. ___ Посмотрел "в закромах" нашел алгоритм, который когда-то делал для расчетов и рисования спрайтов. Выкладываю чтоб не изобретали велосипед. Возможно где-нибудь будет неточности, переписывал не проверяя.. ___ Код:
function intSqrt(v : integer) : integer; |
Ответ: The Maze
Вложений: 1
Вот подкрутил радарчик, исправил текстуры, добавил небо. Полный список изменений смотрите в ReadMe.txt :)
|
Ответ: The Maze
Цитата:
|
Ответ: The Maze
Вложений: 1
Cliffe Snake - да,да задний фон примерно так как ты сделал.. но немножко упростил, выглядит так:
Код:
drawimage(sky,-((angle+angle) mod 360),0); ___ Оч. неудобно что MIDletPascal не хочет делать длинные массивы, правильная идея сделать двухмерный :) но думаю на java быстрее будет делать одномерным.. ___ переделал программку с учетом предложений Cliffe Snake ___ давайте для оптимальности будем делать так: 1. вычисления real заменять Lib_mathmp.class. 2. картинки желательно в bmp-формате, и при необходимости png, другие форматы лучше не использовать т.к. не все телефоны их будут поддерживать. 3. карты записывать в текстовом виде, где кубик стены записывается числом, здесь же будем описывать спрайты. |
Ответ: The Maze
Цитата:
Мой способ отображения "неба" более универсален, так как не зависит от размера экрана. :p :) |
Ответ: The Maze
длина картинки заднего фона расчитывается так: угол обзора 60 градусов, равны ширине экрана, значит всего этих экранов будет 6 плюс добавочный, получается длина_картинки = ширина_экрана*7.
запускал на motorola V3i повисло, пришлось уменьшить data [0..6,0..4096] of integer; |
Ответ: The Maze
Цитата:
(то есть 1 градус = 3 пикселям) PHP код:
Кол-во повторений drawimage со двигом на Dlina = 1080/Dlina+1 Проверенно, 100% работает не зависимо от экрана. Цитата:
|
Ответ: The Maze
Вложений: 1
Cliffe Snake - спорим об одном и том же, хотя по идее можно обойтись и картинкой шириной с экран.. нужно как можно более минимизировать кол-во вызовов графических функций.
Текстуры лучше представить одним файлом, на подобии вертикальной киноленты, т.о. будем экономить на каждом файле более 1кб из счет заголовка и палитры, кроме того большой файл упаковывается лучше, чем несколько маленьких. кол-во текстур нужно сократить и подгружать их по ходу игры, например при входе в комнату, но это уже в конце, когда все будет готово.. ___ Интересно как справиться с программой средствами MIDletPascal, а иначе переписал бы за час на java.. Ранее выложил всю необходимую математику спрайтов, кто-нить уже сделал живых человечков? логику можно сделать такой: если догнал - уменьшаются жизни, а еще довольно неплохо смотриться метание огненными шарами (как в DOOM), шар - тот-же спрайт (направление движения (dx,dy) как у игрока в момент создания), который деинициализиреутся когда столкнется с каким-либо предметом. Массив со спрайтами наполовину пуст, для генерации всевозможных дополнительных спрайтов. отработавшие спрайты либо превращаются в статические либо помечаются как пустые и свободные.. ___ p.s. выкладываю редактор спрайтов/текстур для MSDOS-Wolfenshtein3D скопировать в папку с программой и запускать, есть возможность сохранения изображений в формате gif. |
Ответ: The Maze
Вижу, я немного не в тему пишу, еще про maze. Но пдскажите, пожалуйста, как в maze3d сделать так чтоб когда поварачиваешся влево/вправо не поварачивалась и карта (при этом меняются координаты х, у, что очень мешает узнаванию местонахождения на карте). Если не трудно выложите пример в зипе или хотябы просто листинг. Заранее благодарен...
|
Ответ: The Maze
поворот карты, своего рода оптимизация, иначе б в основном алгоритме нужно было рассматривать 4е случая. Получить координаты можно если запомнинать поворот относительно начального, а затем временные_х_у поворачивать обратно
|
Ответ: The Maze
Я в мидлетпаскале относительно не долго, и теоретически знаю как это делается, а на деле чет не выходит. Можно пример?
|
Ответ: The Maze
Вложений: 1
Добавил алгоритм спрайтов, нужно оптимизировать и добавить логику, тогда будет хорошая игрушка. Подобных программ на MP не видел.. Кто возьмется делать логику? у кого есть интересные идеи?
__ p.s. ArtikZ - MIDletPascal это не лучший пособ для первого языка программирования, много ситуаций компиляции и проверки синтаксиса программы не поддается здравому смыслу, например при разработке спрайтов, если они были в записях record, то неправильно считался один из параметров. и если в массивах, то нельзя использовать последний элемент, алгоритм поворота направо t:=x;x:=y;y:=29-t; налево t:=y;y:=x;x:=29-t; смотри какой угол и поворачивай в цикле обратно.. |
Ответ: The Maze
несколько замечаний по использованию вычислений в fixed-point real: числа с фиксированной точкой можно напрямую умножать или делить (если real в делимом, но не наоборот) на integer, а также складывать или вычитать два real-числа обычным сложением или вычитанием, во всех остальных случаях вычисления проводить только через библиотеку, а integer приводить к типу real через fIntToReal
|
Ответ: The Maze
:-) Спасибо за исходники
|
Ответ: The Maze
>>
Добавил алгоритм спрайтов, нужно оптимизировать и добавить логику, тогда будет хорошая игрушка. Подобных программ на MP не видел.. Кто возьмется делать логику? у кого есть интересные идеи? >> надобы сделать редактор 3д мира - можно на дельфях (в фольфштейне был мир 64*64 клеточки) - клеточкам присваивать текстуры - расстановку в клетках спрайтов... факелы - освещаемые пятна(анимац) - расстановка "монстров" - расстановка "обьектов" - аптечки - патроны - ключи... и типа "компиляцию" ресурсов в какойнить DAT файл АИ врагов - простую (по колву ед жизни -100% ищет игрока - 50% убегает) типа стрелялки --- про первые 3д игры хорошо описано у Андрэ Ламот Программирование Игр - алгоритмы рендеров... |
Ответ: The Maze
про это уже писал, некоторое из этого не получится, потому что ограничение на кол-во текстур (добавил еще 2 и перестало запускаться на V3i), карту лучше сделать в текстовом файле, редактор пока не обязателен. размер карты в wolf3d 64x64 обусловлен размером целой части в числах с фиксированной точкой.
Также врятли найдется рендер 2.5D быстрее чем представленный здесь, вся задержка только в методе вывода на экран |
Ответ: The Maze
случайно заглянул на http://wap.mtsgames.ru/free/?p=1 и нашел кучу 2.5D игр...
вот некоторые ссылки http://get.mtscity.ru/free/id.9416/j...e.210/game.jar http://get.mtscity.ru/free/id.16003/...e.210/game.jar http://get.mtscity.ru/free/id.18974/...e.210/game.jar http://get.mtscity.ru/free/id.21239/...e.210/game.jar http://get.mtscity.ru/free/id.21990/...e.210/game.jar http://get.mtscity.ru/free/id.22479/...e.210/game.jar http://get.mtscity.ru/free/id.22477/...e.210/game.jar http://get.mtscity.ru/free/id.25361/...e.210/game.jar графика сделана довольно профессионально, работать будет на большинстве моделей телефонов, клавиши тоже на своих местах, вот только через какое-то время выскакивает окошко с требованием регистрации, которое выкидывает из игры... некоторые игры виснут на motorola v3i, те что работают тормозят, но чуть быстрее чем MIDletPascal-версия движка. ____ p.s. а все-же где весь народ? все что-то потерялись... хочется увидеть исходники/логику от другого программиста,... а в свои игрушки играть-то неинтересно |
Часовой пояс GMT +4, время: 01:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot