|
30.04.2012, 09:06
|
#301
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Благодаря Максу теперь стало возможным сделать градиентный свет!
Последний раз редактировалось Nikich, 30.04.2012 в 11:04.
|
(Offline)
|
|
30.04.2012, 11:08
|
#302
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,853 пользователей)
|
Ответ: Vivo
Реквестирую конфигу чтоб можно былом сменить разрешение и устанавливать оконный режим.
Comic Sans MS - плохой шрифт.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
30.04.2012, 11:22
|
#303
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Оконный режим сделаю как в Майнкрафте, разрешение пока не знаю. Может тоже на F какой-нибудь. Менюшку делать так долго... И чем Comic Sans плох?
Кстати, можно тему перенести в проекты на Максе?
|
(Offline)
|
|
30.04.2012, 11:28
|
#304
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,853 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Оконный режим сделаю как в Майнкрафте,
|
Повесь на Alt+Enter. В блицмаксе заново грузить ресурсы при смене разрешения не нужно так как там есть TPixmap
Сообщение от Nikich
И чем Comic Sans плох?
|
Плохо читается и не лаконичен. Шрифт сугубо декоративный и важную информацию им лучше не писать.
Сообщение от Nikich
Кстати, можно тему перенести в проекты на Максе?
|
Done.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.04.2012, 11:59
|
#305
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Thanks!
а можно подробнее о пиксмапах?
|
(Offline)
|
|
30.04.2012, 12:19
|
#306
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,853 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Thanks!
а можно подробнее о пиксмапах?
|
Есть оперативная память видео карты и есть оперативная память пк.
Вся твоя программа использует для работы оперативную память ПК, а визуализация графики происходит с использованием видео памяти.
Для того чтоб допустим вывести изображение на экран нужно его сначала считать с жёсткого диска потом преобразовать в нужный для видео карты формат, "закачать изображение" на видео карту и дать напутствие видео карте чтоб она вывела на экран наше изображение.
Дак вот в BlitzMax есть класс Image.
Он содержит в себе Pixmap и ссылку на хранимое в видеокарте изображение.
Pixmap это преобразованный специальным образом для видео карты универсальный набор пикселей. Который позволяет "на лету" менять разрешение экрана и даже сменять в реальном времени GAPI с DirectX на OpenGL например. Он хранится у тебя локально в оперативе компа. И когда стартует 3d девайз или перезапускается (смена разрешения) пиксмапа закачивается в видео память в виде 2D текстуры.
Работа с пиксмапой ничего не требует. Вся работа с ней скрыта за тенью LoadImage LoadAnimImage. И ты просто можешь менять разрешение "на лету" не перезагружая заново все ресурсы как бы это надо было бы делать в Blitz3D.
писал с бодуна, могу хреново выражаться
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
30.04.2012, 23:11
|
#307
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Можете подсказать, как обычно делается физика в платформерах? Меня волнует именно прыжки. Я решил перенести Виво на вид сбоку, и наткнулся на проблему с прыжками. Дело в том, что есть погрешность в пару пикселей . Подумав что это нормально, ведь нельзя добиться идеала, я зашёл в Террарию. И там я увидел что погрешностей там нет. Ну вообще нету. Вот мне и интересно, может я что-то не так делаю. Так что, если не сложно, напишите как кто делал прыжки в платформерах.
|
(Offline)
|
|
30.04.2012, 23:36
|
#308
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Vivo
Погрешность чего?
|
(Offline)
|
|
30.04.2012, 23:41
|
#309
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Есть расстояние между игроком и блоком под ним. Иногда он немного выше, иногда - в сам блок влазит. Дело косметическое, понимаю, но мелочь довольно не приятная. И вообще, как делаются правильно прыжки? Вот мой черновой вариант:
dx=KeyDown(KEY_D)-KeyDown(KEY_A)
If map[(camera_x+R1/2)/32,(camera_y-g+R2/2)/32+1]=1; Проверяем блок под игроком, если земля - g=0, если нет - g=g-3
g=0
If KeyDown(KEY_SPACE) g=20
Else
g=g-3
EndIf
If g<-5 g=-5
If map[(camera_x+dx*speed+R1/2)/32,(camera_y+R2/2)/32]=0; Проверяем следующий блок в который хочет пойти игрок
camera_x=camera_x+dx*speed
EndIf
camera_y=camera_y-g
|
(Offline)
|
|
01.05.2012, 07:30
|
#310
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Vivo
При завершении прыжка корректируй позицию игрока так, чтобы между блоком и игроком не было зазора. Просто проверяй на сколько подвинуть и двигай, т.к. координаты и размеры известны, то это легко получится.
|
(Offline)
|
|
01.05.2012, 23:46
|
#311
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Что-то всё равно не очень гладко выходит. Есть у кого исходники платформеров на максе ил блитц3д? Буду благодарен. Или пожалуйста, просто киньте сюда код отвечающий за передвижение и прыжки.
|
(Offline)
|
|
02.05.2012, 05:42
|
#312
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Vivo
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.05.2012, 14:29
|
#313
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Спасибо. Кстати, можно ли как-то сделать Include "abc.txt"? Мне очень понравилась система в Stranded 2. Там вообще можно новую игру в .txt написать.
|
(Offline)
|
|
02.05.2012, 14:42
|
#314
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,853 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Спасибо. Кстати, можно ли как-то сделать Include "abc.txt"? Мне очень понравилась система в Stranded 2. Там вообще можно новую игру в .txt написать.
|
Нет. Блитзмакс это не скриптовик и он не может после компиляции обрабатывать Include.
То, что Include это не директива - странно, но этому есть применение.
Include может возвращать результат, Include можно вызывать по условию и тд.
По сути весь твой код внутри Include оборачивается как бы в функцию (на самом деле GOTO) и его можно вызывать сколь угодно раз, однако не советую так делать. Для этого есть функции/методы.
А при компиляции все твои Include компилируются в exe вместе с главным файлом вне зависимости от того как ты эти include используешь.
То, что ты хочешь сделать именуется скриптовым языком. В Stranded используется LUA. В BlitzMax уже есть модуль работы с LUA и даже несколько сторонних модулей упрощающих работу с ним.
Немного на русском
http://blitzetc.blitzmax.ru/index.php/BlitzMax_и_LUA
Wiki по встроенному в BlitzMax модулю LUA
http://en.wikibooks.org/wiki/BlitzMa...Other/Lua_Core
AXE LUA модуль
http://en.wikibooks.org/wiki/BlitzMax/Modules/Axe/Lua
http://lua-users.org/wiki/BlitzMax
Мануал по синтаксису LUA (можно особо не зачитываться так как луа простейший)
http://www.lua.org/manual/5.1/
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
02.05.2012, 17:16
|
#315
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Graphics DesktopWidth(),DesktopHeight()
Global R1=GraphicsWidth()
Global R2=GraphicsHeight()
SeedRnd MilliSecs()
Global player_image=LoadImage("images\player.png")
SetImageHandle player_image,15,32
Global dx,dy,camera_x,camera_y,g#,mouse_block_x,mouse_block_y
Global speed=5
camera_x=4000
camera_y=200
Global map_width,map_height
map_width=500
map_height=500
Global block[100]
block[0]=LoadImage("images\blocks\sky.png")
block[1]=LoadImage("images\blocks\ground.png")
Global map[map_width+1,map_height+1]
Global key_hit_1,key_hit_2
Global fps,lfps,tfps
Function Create_world()
For i=0 To 500
For i1=0 To 500
If i1>50
map[i,i1]=1
Else
map[i,i1]=0
EndIf
Next
Next
End Function
Create_world()
Function Update_camera()
dx=KeyDown(KEY_D)-KeyDown(KEY_A)
If map[(camera_x+R1/2)/16,(camera_y+R2/2)/16+1]=1
g=0
If KeyDown(KEY_SPACE) g=5
camera_y=Int(camera_y/16+1)*16-6-g
Else
g=g-0.4
If g<-3 g=-3
If g>0
If Not collision()
camera_y=camera_y-g
EndIf
Else
If map[(camera_x+R1/2)/16,(camera_y+R2/2)/16+1]=0
camera_y=camera_y-g
EndIf
EndIf
EndIf
If Not collision()
camera_x=camera_x+dx*speed
EndIf
End Function
Function collision()
For i=(camera_x+dx*5*speed+R1/2)/16-2 To (camera_x+dx*5*speed+R1/2)/16+2
For i1=(camera_y+R2/2)/16-2 To (camera_y+R2/2)/16
If map[i,i1]=1
If ImagesCollide(player_image,R1/2,R2/2,0,block[map[i,i1]],i*16-camera_x,i1*16-camera_y,0)
Return True
EndIf
EndIf
Next
Next
End Function
Function Draw_world()
mouse_block_x=(camera_x+MouseX())/16
mouse_block_y=(camera_y+MouseY())/16
For i=camera_x/16 To (camera_x+R1)/16
For i1=camera_y/16 To (camera_y+R2)/16
DrawImage block[map[i,i1]],i*16-camera_x,i1*16-camera_y
If key_hit_1
If mouse_block_x=i And mouse_block_y=i1 map[i,i1]=1
EndIf
If key_hit_2
If mouse_block_x=i And mouse_block_y=i1 map[i,i1]=0
EndIf
Next
Next
DrawImage player_image,R1/2,R2/2
End Function
Function Update_HUD()
If MilliSecs()-tfps<1000 fps=fps+1
If MilliSecs()-tfps>1000 Then
lfps=fps
tfps=MilliSecs()
fps=0
EndIf
SetColor 255,255,255
SetAlpha 1
DrawText "FPS: "+lfps,0,0
DrawText "mouse_block_x: "+mouse_block_x+" mouse_block_y: "+mouse_block_y+" g: "+g,0,24
End Function
While Not KeyHit(KEY_ESCAPE)
key_hit_1=MouseHit(1)
key_hit_2=MouseHit(2)
Update_camera()
Draw_world()
Update_HUD()
Flip(1)
Cls
Wend
Блин, что-то вконец ничего не получается. С осью y разобрался, а вот с x вообще лажа Помогите найти ошибку, пожалуйста. Проблема в том, что игрок всё равно может проникнуть через блок. Хотя я думаю что у меня подход неверный, коллизии в тайловой игре как-то не очень.
З.Ы. код jimon'a посмотреть не смог, файл удалили.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:30.
|