Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 16:04   #131
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Андрей 93, наверное, вы создавая уровень реагируете только на значения данных больше нуля, полагая, что выделенный участок памяти сам очищается? ...это не так. Сколько работал с памятью, редко GetMem возвращал массив содержащий исключительно нули, ...задача команды стоит только в том, чтобы искать неиспользуемые участки, указывать нужную длину и возвращать для использования, ...очисткой вам нужно заниматься самостоятельно.
Например, у меня тип PChar, использую его везде, поскольку это массив указателей, с ними проще работать в памяти простой арифметикой. Можно заполнить такой массив любым одинаковым значением вот так:

Код:
FillChar(Buf^, W, 0);   // указатель на массив, длина, значение
Если я напишу, Buf := Buf + 3 и выполню предыдущий код, то заполнение будет уже с 3-й ячейки.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 04.05.2010 в 16:07.
Beermonza вне форума Ответить с цитированием
Старый 14.05.2010, 13:09   #132
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

Хочу в игре сделать секундомер, чтобы проходить миссии на медали за время. Мой вариант: добавить таймер с интервалом 1с в основной модуль (где инициализируется OMEGA) и увеличивать значение переменной (например t), а потом использовать это значение для подсчета времени. Мне этот способ не очень нравится - как-то неоптимально. Есть другой способ?
Не стыдно не уметь, стыдно не учиться.
Андрей 93 вне форума Ответить с цитированием
Старый 14.05.2010, 13:23   #133
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Кто нибудь не знает где взять учебники по программированию игр 2D.
VintProg вне форума Ответить с цитированием
Старый 14.05.2010, 13:47   #134
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Андрей 93, ну у вас же есть основной таймер? Какой там у него интервал? Ну, к примеру, 40мс. Так просто заводим еще одну переменную и при каждом срабатывании основного таймера прибавляем к этой переменной 40. Когда надо запустить отсчет - ставим ее значение на 0, прописываем где-нибудь в логическую переменную, что отсчет пошел и считаем. Когда надо - делим полученное на 1000, получаем время в секундах.
Да, только для этого пришлось добавить еще две переменные (счетчик и индикатор: отсчет запущен/приостановлен), и для каждого нового добавления придется вводить еще и еще - но это лучше, чем куча не слишком хорошо синхронизированных таймеров, множащихся как кролики весной. К тому же отдельные логические части можно вынести в отдельные функции и уменьшить громоздкость кода с небольшим увеличением его объема.
VintProg, оно, конечно, такие есть, но лучший учебник по программированию игр - учебник по языку программирования плюс немного логики и знакомство с общими технологиями, например, на этом же форуме.
Впрочем, могу подсказать как минимум одну книжку - "Программирование игр для Windows. Советы профессионала".
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 14.05.2010 в 13:51.
Гром вне форума Ответить с цитированием
Старый 14.05.2010, 14:59   #135
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Хочу в игре сделать секундомер?
А нельзя получать данные о времени от винды?
Вадим Буренков вне форума Ответить с цитированием
Старый 15.05.2010, 05:55   #136
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

Я не знаю, как данные о времени от ОС брать. Это связано с WinAPI?
VintProg, лично я не читал учебники, сначала изучил Pascal, затем познакомился с VCL Delphi. Чтобы уйти от базового уровня начал создавать игру. Почти всему я научился в этой теме, за что спасибо тем, кто мне помогал (отдельная благодарность Вадиму). Некоторую информацию о процедурах и функциях искал в google.
Не стыдно не уметь, стыдно не учиться.
Андрей 93 вне форума Ответить с цитированием
Старый 15.05.2010, 09:27   #137
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Для получения времени можно использовать функции GetTickCount, timeGetTime (вроде бы практически одно и то же), видел в интернете что-то про QueryPerfomanceCounter.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 15.05.2010, 12:07   #138
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Андрей 93
Но физику программировать это же сложно очень, надо хотя бы какие нибудь статьи.
VintProg вне форума Ответить с цитированием
Старый 15.05.2010, 12:35   #139
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Впринципе можно считать время по итерациям таймера как предлагали (1 тик 40мс), но это может быть очень не точным при сильной нагрузке. Поэтому лучше получать время от винды, но тут уж я не знаю как.Посмотри функции которые гром предложил.
Цитата:
Но физику программировать это же сложно очень, надо хотя бы какие нибудь статьи.
Бери исходный код движка и смотри. К тому же в этой теме уже много объяснял по поводу физики.
Вадим Буренков вне форума Ответить с цитированием
Старый 17.05.2010, 06:13   #140
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

А мне кажется, что при сильной нагрузке больше подходит 1ый вариант, ведь когда игра тормозит, время тоже должно тормозить. Если время будет идти независимо от игры, то оно может пойти быстрее, что негативно скажется на результате. Но я не думаю, что моё творение потребует много ресурсов.
Не стыдно не уметь, стыдно не учиться.

Последний раз редактировалось Андрей 93; 17.05.2010 в 06:15.
Андрей 93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Физика в 2D играх Вадим Буренков Gamedev - cоздание игр: Unity, OpenGL, DirectX 32 02.11.2010 22:00
Искуственый интелект в играх VintProg Gamedev - cоздание игр: Unity, OpenGL, DirectX 26 01.08.2009 23:09
Сюжет в 2D играх ZotaC Свободное общение 8 05.07.2009 15:42
Физика программы. Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 09.05.2008 18:14
Анимация в играх frai Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 25.11.2007 14:28