Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизСоздание игры. Найти похожие ветки
← →
Zak3D[@Tm] © (2004-01-04 17:22) [0]Всем присет. Мастера, вот какая просьба у меня есть к вам. Я только учусь програмировать(пол года, три раза в недель по два часа), мне очено хочется создать игру, чтоб машинка ехала вперёд и объезжала препятствия и другие машины. Вот в чем вопрос, что для этого лучше использовать(Image или мож на канве формы рисовать...), что бы игра работала побыстрее и ещё вопрос, как сделать счётчик fps. Всем заранее спасибо.
ЗЫ Игру буду делать на Седьмой Делфи.
← →
TButton © (2004-01-04 17:29) [1]при у мелом использовании можно и в Имадже.а счетчик фпс - относительно просто ставишь таймер на одну секунду, заводишь переменную frames: integer; после каждой прорисовки увеличиваешь ее, а по событию таймера
fps:=frames;
frames:=0;
и усе...
← →
Zak3D[@Tm] © (2004-01-04 19:03) [2]Спасибо TButton, но умелое использование у меня врядли особо получится, так что хотелось бы всётаки узнать, что быстрее...
← →
Zak3D[@Tm] © (2004-01-04 19:14) [3]Попробовал создать счётчик fps... не получилось, можно поподробней создание описать плз...
← →
Thor © (2004-01-04 20:50) [4]
> Zak3D[@Tm] © (04.01.04 19:14) [3]
У тебя есть таймер при событии которого происходит отображение чего-либо на канву или имадж. Положим интервал у этого таймера 100 миллисекунд. Тебе нужно завести глобальную переменную frames: integer. При каждом событии твоего таймера (в котором у тебя происходит рисование), ты увеличивашь значение frames, иными словами сколько раз было отрисовано. заводишь у себя второй таймер. в нем интервал ставишь на 1 секунду. в событии этого нового таймера пишешь fps:=frames; frames:=0; и соответственно куда-нить выводишь это значение FPS, например на ту же канву. Таким образом получатся что ты каждую секунду смотришь, сколько тиков таймера-отрисовщика имело место. Это и будет твой FPS. ведь FPS - Frames Per Second, т.е. Кадров в секунду.
фуф. вроде все так объяснил.
← →
Zak3D[@Tm] © (2004-01-04 21:05) [5]Нормально, ща будем делать. Спасибо!
← →
TButton © (2004-01-04 21:21) [6]не за что
← →
Zak3D[@Tm] © (2004-01-04 21:22) [7]Всё, нормально работает, но если сделать как ты сказал Timer1.interval=100, то fps=10 если Timer1.interval=1 то fps=64, почему так мало, всего-то 1 image с картинкой БТР"а гоняет с одного края формы на другую? Отсюда возникает вопрос, как увеличить fps или скорость таймера что ли??? А то Дум 3 35 fps, а у меня картинка на 10 fps гоняет... вопрос.
← →
Thor © (2004-01-04 21:28) [8]хе-хе...
в этом-то и заключается основной конфликт - на чем делать игру.
многие начинали с обычного Image. ну а потом переходили на DirectX, OpenGL. если хочешь научиться делать игры, то сначала сделай свою игру на обычных имаджах. а потом уже изучай другие компоненты, коих немало. лично я сейчас на PowerDraw Deluxe учусь :)
← →
TButton © (2004-01-04 21:35) [9]да, а я те посоветую как начнешь разбираться средненько с уклоном в сторону хорошо, не изучай компонентов изучай чистый директ - х.. а то привыкнешь к компонентам, потом тяжело бует.
← →
Zak3D[@Tm] © (2004-01-04 21:46) [10]Да... Ладно, спасибо вам за помошь, как сделаю игру олязательно вам рассажу. Если что понадобится можете найти меня по аське 265627188, или написать на мыло.
ЗЫ и на последок такой вопрос, всётаки как лучше на канде рисовать, или можь в Паинт боксе, или просто Имейджем обойтись?
Ещё раз спасибо, удачного всем програминга...:)
← →
TButton © (2004-01-04 22:36) [11]я разницы особой не вижу.
← →
Zak3D[@Tm] © (2004-01-04 22:38) [12]Ладно.
← →
Farcaller (2004-01-04 22:58) [13]А я бы посоветовал не лезть в дебри GUI"шные. А посоветовал бы библиотеку SDL (http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME). IMHO полезнее будет. Я и сам раньше на GLScene сидел (ДиректХ не юзаю, так как пишу софт и под винду и под линух).
← →
TButton © (2004-01-04 23:18) [14]ну это как посмотреть ОГЛ работает одинаково плохо на всех платформах, директХ чутка по лучше, но только на виндах
← →
Omar2002 © (2004-01-04 23:30) [15]
> Zak3D[@Tm] © (04.01.04 22:38) [12]
> Ладно.
Пиши на Дельыиксах. Это как раз вариант для спрайтовой графики наиболее оптимальный в соотношении сложность\скорость.
А про DelphiX документацию можешь найти либо на DelphiGFX, либо на Геймдеве.
← →
Zak3D[@Tm] © (2004-01-05 10:22) [16]Ладно Omar2002, так и сделаю. Спасибо. Farcaller библиотеку тоже ща скачаю, посмотрю, чт там.
← →
Thor © (2004-01-05 12:47) [17]
> Omar2002 © (04.01.04 23:30) [15]
ну не знаю.
меня лично такая скорость не устроила. особенно когда много объектов имеется. конечно, довольно удобный спрайтовый движок для тех кто свой еще не в силах сделать, но вот работа с альфой и, например, поворотами спрайтов там плохо сделана. лучше тогда сразу учиться на PowerDraw. Примеров там достаточно :)
← →
Zak3D[@Tm] © (2004-01-05 14:28) [18]Короче решил я шас сделать игру на простом делфи, но вот возник вопрос, как избавиться от мерщиния?
← →
Thor © (2004-01-05 15:55) [19]Положим на Form.Create нужно написать DoubleBuffered:=True;
← →
Zak3D[@Tm] © (2004-01-05 16:25) [20]Да, спасибо, хотя я это уже на соседнем обсуждении нашёл. Кстати помогает.
← →
Ермак © (2004-01-07 13:33) [21]Насчет fps... Компонент таймера сам тормозит, поскольку работает по сообщению, которое винда посылает окну. А если окно в это время рисует? Что тогда? Правильно, торомозит. Надо юзать ВинАПИ всегда и везде. Там есть таймеры уровня ядра - эти работают с точностью до 20 мс. Но не влезая в дебри, деалем вот что:
uses Windows;
а дальше GetTickCount - возвращает число милисекунд, прошедших с начала запуска системы.
То есть:
Var time: cardinal;
fps: real;
...
begin
...
time := GetTickCount;
...Здесь мы рисуем очередной кадр...
time := GetTickCount - time; //А здесь посчитали, сколько милисекунд ушло на кадр.
fps := 1000 / time; //Поскольку в секунде тысяча милисекунд...
...Выводим куда-нить ФПС...
end
Если хочешь писать игрушки, изучи сначала хоть немного Виндоус, а затем путь один - ДиректХ. А компоненты для ДиректХ не используй никогда. Вообще все, что можно писать через стандартные процедуры Виндоус пиши только так. Другого пути для программиста нет.
Рекомендую:
Краснов М. DirectX графика в проектах Delphi.
Финогенов. Win32 - Основы программирования.
Дж.Рихтер. Программирование Win32 для профессионалов.
Правда, первые две книжки на СИ, но у Финогенова Си с нуля объясняется. В любом случае Си чуть-чуть нужно знать, на уровне уметь перевести с Си на Паскаль. А вообще два языка абсолютно идентичны, так что привыкать надо и к тому и к другому.
← →
Zak3D[@Tm] © (2004-01-08 15:42) [22]Мастера, помогите советом, сегодня начал добавлять к игре меню опции и заставку, всё было нормально, никаких ошибок не выскакивало, но машина(Image1) перестала ездить. Подробнее, сначала я добавил две формы(одну для заставки, а другую для меню), потом назначил главной форму с заставкой т.к. я не знаю как сделать, чтобы сначала проигрывался ролик, потом появлялось меню настроек и только потом игра(что не делал, всегда сначала игра появляется или вобше ошибки выдаёт), собственно после этого рисунок и замер. Помогите пожалуйста советом, если не тяжело...
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.038 c