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

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

Вернуться   forum.boolean.name > Проекты > Проекты на BlitzMax

Ответ
 
Опции темы
Старый 30.04.2012, 09:06   #301
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Благодаря Максу теперь стало возможным сделать градиентный свет!
Миниатюры
Нажмите на изображение для увеличения
Название: screen1.jpg
Просмотров: 738
Размер:	207.1 Кб
ID:	16739  

Последний раз редактировалось Nikich, 30.04.2012 в 11:04.
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 11:08   #302
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 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
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Оконный режим сделаю как в Майнкрафте, разрешение пока не знаю. Может тоже на F какой-нибудь. Менюшку делать так долго... И чем Comic Sans плох?
Кстати, можно тему перенести в проекты на Максе?
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 11:28   #304
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (01.05.2012)
Старый 30.04.2012, 11:59   #305
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Thanks!
а можно подробнее о пиксмапах?
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 12:19   #306
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 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 за это полезное сообщение:
Hulk-DS (02.05.2012), Nikich (30.04.2012), Reks888 (01.05.2012)
Старый 30.04.2012, 23:11   #307
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Можете подсказать, как обычно делается физика в платформерах? Меня волнует именно прыжки. Я решил перенести Виво на вид сбоку, и наткнулся на проблему с прыжками. Дело в том, что есть погрешность в пару пикселей . Подумав что это нормально, ведь нельзя добиться идеала, я зашёл в Террарию. И там я увидел что погрешностей там нет. Ну вообще нету. Вот мне и интересно, может я что-то не так делаю. Так что, если не сложно, напишите как кто делал прыжки в платформерах.
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 23:36   #308
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Vivo

Погрешность чего?
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 23:41   #309
Nikich
Бывалый
 
Регистрация: 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
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Что-то всё равно не очень гладко выходит. Есть у кого исходники платформеров на максе ил блитц3д? Буду благодарен. Или пожалуйста, просто киньте сюда код отвечающий за передвижение и прыжки.
(Offline)
 
Ответить с цитированием
Старый 02.05.2012, 05:42   #312
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Vivo

Вот этот проект посмотри: http://forum.boolean.name/showthread.php?t=5751
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (02.05.2012)
Старый 02.05.2012, 14:29   #313
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Спасибо. Кстати, можно ли как-то сделать Include "abc.txt"? Мне очень понравилась система в Stranded 2. Там вообще можно новую игру в .txt написать.
(Offline)
 
Ответить с цитированием
Старый 02.05.2012, 14:42   #314
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 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
Nikich
Бывалый
 
Регистрация: 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)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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