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

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

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Проекты на MidletPascal

Ответ
 
Опции темы
Старый 12.11.2008, 22:00   #16
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,144
Написано 705 полезных сообщений
(для 1,741 пользователей)
Ответ: The Maze

Ща скачаю. Ну под TRUE 3D я подразумеваю любое 3D, где реально происходит наклон картинок в перспективе. А псевдо 3D - это как в The Maze, там все наклоны отрисованы в отдельные картинки и сохранены. =)
- - -
Через минуту:
EXEшник показывает чёрный экран, а паскаль я не знаю и компилятора нет
(Offline)
 
Ответить с цитированием
Старый 12.11.2008, 22:16   #17
jimon
 
Сообщений: n/a
Ответ: The Maze

тру 3д это на улице, у телефона экран 2д
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо за это полезное сообщение:
Dream (13.11.2009), impersonalis (12.11.2008)
Старый 12.11.2008, 22:30   #18
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

DOS-программы ведут себя не предсказуемо в windows линейки NT, бывает перестановишь, и вообще в полноэкранном режиме отказываются работать, хотя до этого все было OK, бывает на 2-й раз запускается... а вообще скачай эмулятор DosBox, или загрузись с дискеты и запускай...
(Offline)
 
Ответить с цитированием
Старый 13.11.2008, 11:30   #19
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,144
Написано 705 полезных сообщений
(для 1,741 пользователей)
Ответ: The Maze

jimon, блин, ну неужели не понятно, что я имею ввиду?
(Offline)
 
Ответить с цитированием
Старый 16.11.2008, 17:49   #20
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 05.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: The Maze

Я наконец смог придумать функцию, которая наклоняет картинку в пространстве. Правда, еще не оптимизировал.
Вложения
Тип файла: zip picture3D.zip (27.0 Кб, 299 просмотров)
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Romanzes за это полезное сообщение:
KAK? TAK! (14.03.2009), PacMan (08.06.2009), Phantom (17.11.2008)
Старый 17.11.2008, 01:43   #21
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,144
Написано 705 полезных сообщений
(для 1,741 пользователей)
Ответ: The Maze

О_о Я даже не представляю, как это сделать... Хотя...Сначала сжать по горизонтали, пересчитать все пиксели в каждой строке на основании новой ширины рисунка, потому пересчитывать каждый столбик отдельно, в зависимости от его высоты (высота в данном случае будет разная у всех столбиков). Типа так. А ещё можно даже не пересчитывая. Просто выбрасывать лишние пикселы, ну а если растягивать картинку, то просто заменять новые пикселы такого же цвета, как и соседние. Во блин. А до этого момента даже в голову не приходило как это работает =)
(Offline)
 
Ответить с цитированием
Старый 17.11.2008, 07:58   #22
jimon
 
Сообщений: n/a
Ответ: The Maze

Phantom_wc
по ищи формулы основ 3д графики - перевод 3д координаты в 2д кооридануту на екране, сможешь сделать банальное проволочное 3д (крутить 3д кубик из линий на екране)
так же сможешь найти как рендерить полигон с текстурой
 
Ответить с цитированием
Старый 17.11.2008, 12:35   #23
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,144
Написано 705 полезных сообщений
(для 1,741 пользователей)
Ответ: The Maze

jimon, так дело-то в том, что я к этому и не стремлюсь. Я не занимаюсь игроделаньем. И мысль была сделать именно так, как сделан этот проект в первом посте, потому что не требуется высокая производительность. А вот пример Романзеса с вращающейся в перспективе картиннкой на моём сименсе воспроизводится с трудом. Да и пока некогда и этим заниматься. =(
(Offline)
 
Ответить с цитированием
Старый 18.11.2008, 18:00   #24
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: 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;
_________________
(Offline)
 
Ответить с цитированием
Старый 21.11.2008, 19:06   #25
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

Сегодня на работе занимался дуракавалянием, под руку попался на кануне скачанный picture3D.zip от Romanzes.
Переделал под MIDletPascal без дополнительных java-библиотек.
интересно, что хотя я добавил много дополнительного кода, но jar-файл получился на 10% меньше чем предоставленная java-версия.
Работает медленнее раза в 3 чем java-аналог, впрочем для MIDletPascal это нормально.
__________
Идеи (от arT) реализованные в данной программе:
1. Загрузка 256-цветных bmp файлов в байтовый массив и работа с ним
2. Загрузка чисел из текстовой строки, числа разделяются любым кол-вом символов, которые не в диапазоне '0'..'9' (т.е. не являются числом)
_ Примечание: команды сохраниения константных массивов равносильны одиночным присваиваниям и каждая занимает в памяти около 7 байт, поэтому лучше загружать данные из ресурсов или конвертировать из строки.
____
p.s. полностью 3D-алгоритм реализовать в MIDletPascal вредно, для этого подходит только java, притом с хорошей оптимизацией методов/идей и алгоритма..
Вложения
Тип файла: zip pic3d.zip (23.2 Кб, 263 просмотров)

Последний раз редактировалось abcdef, 21.11.2008 в 19:13.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо abcdef за это полезное сообщение:
PacMan (08.06.2009), Romanzes (22.11.2008), sasha_peleng (30.12.2008), scimitar (22.11.2008)
Старый 22.11.2008, 10:00   #26
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 05.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: 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 писксель .
(Offline)
 
Ответить с цитированием
Старый 22.11.2008, 18:59   #27
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

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-куба.
Вложения
Тип файла: zip cube3d.zip (9.2 Кб, 253 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (23.11.2008)
Старый 25.11.2008, 18:52   #28
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

Заинтересовала идея воксельного движка. Вот мои наработки: Лунный звездолет в MIDletPacal. Реализовано без внешних java-библиотек.

Но программа все-таки работает медленно, оптимизации требует переработка вывода графики с поточечного режима на getRGB и drawRGB.

Если добавлять логику, что еще приведет к снижению производительности, то необходимо уменьшить размеры экрана вывода, чтобы меньше точек пересчитывалось.
___
p.s. у кого какие идеи, можно сделать стрелялку или что-нить подобное только нужны дизайнеры и интересные задумки
Вложения
Тип файла: zip vox.zip (10.4 Кб, 306 просмотров)
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо abcdef за это полезное сообщение:
Вредитель (12.01.2009), IDOL 1234 (22.08.2010), PacMan (08.06.2009)
Старый 25.11.2008, 23:10   #29
FISHY
AnyKey`щик
 
Регистрация: 26.04.2008
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Хорошо Ответ: 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.
(Offline)
 
Ответить с цитированием
Старый 26.11.2008, 18:58   #30
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

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)* 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); и добавьте дорисовку текущего столбца цветом заднего фона (т.е. очистку).
Вложения
Тип файла: zip vox2.zip (12.0 Кб, 382 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 19:30.


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