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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 10:46   #881
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
Hero: THero;
будет в "статической" памяти, а
Код:
Hero : PHero;
будет создаваться командой
Код:
New(Hero);
в динамической памяти и уничтожаться командой
Код:
Dispose(Hero);
тут уж как хотите - занимавать память всё время или в нужное время занимать, а когда не нужны данные - освобождать, но кода(и вероятность ошибок) больше, ну и это будет unsafe code для дельфи под .NET

Последний раз редактировалось phomm; 14.07.2011 в 10:49.
phomm вне форума Ответить с цитированием
Старый 14.07.2011, 16:57   #882
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Alexan-Dwer Посмотреть сообщение
Но в чем преимущества этого метода? Я понимаю, что переменная PHero является типизированным указателем и содержит адрес на THero. А что делать с ней дальше, и для чего она нужна?
Представь себе, что THero - это, допустим, собирательный класс, т.е. он не содержит своих записей, которые принадлежат только ему, а черпает данные из фундаментальных, например TAnim (набор анимации), TAction (набор состояний) и пр. У тебя в какой-то момент в памяти может остаться множество "мертвых" персонажей, у которых много данных, и надо бы от них избавиться, чтобы не занимать память. Пока массив типа THero существует в его записях, он занимает определенную память, даже если ты не используешь данные записей. Введением указательного типа, ты просто создаешь указатели на переменные в других классах, и применяешь динамический массив. В любой момент можно наполнить такой массив данными и тут же освободить, если данные уже не нужны, ...ты удаляешь указатели, а значения остаются в записях сторонних классов, к которым этот указательный типа привязан.

Это очень гибко, но и очень ненадежно, если не прописать все процедуры корректного обращения к данным по указателям, ...можно ведь указать и на совершенно левые данные из всей доступной памяти, после чего неминуемо произойдет ошибка чтения.

Разумнее использовать указательные типы только внутри собственного класса, и при том для хранения больших массивов указателей на столь же большие объемы, например, графических данных, которые не изменяются со временем.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 20.07.2011, 19:33   #883
Flits
 
Регистрация: 20.07.2011
Сообщений: 4
По умолчанию

Вау, теме 5 лет и она все развивается и развивается... И форуму наверное побольше будет
Flits вне форума Ответить с цитированием
Старый 20.07.2011, 21:10   #884
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Я так понял, что бы собирать что-то на DirectX, нет разницы на чём я буду работать, будь это Delphi или С++, по С++ просто мануалов по больше.
Я прав?

PS А и говорят что С++ лучше оптимизирует и тому подобное
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 21.07.2011, 14:01   #885
Flits
 
Регистрация: 20.07.2011
Сообщений: 4
По умолчанию

Видел где-то коммент, что скорость у С++ и Делфи практически одинаковая из-за мощности современных компьютеров.

Последний раз редактировалось Flits; 21.07.2011 в 14:04.
Flits вне форума Ответить с цитированием
Старый 21.07.2011, 14:18   #886
Flits
 
Регистрация: 20.07.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Snake_B Посмотреть сообщение
Писать игру на "C" правильнее, основными аргументами являются:
1) меньший размер файлов (чем в Delphi);
2) разнообразность библиотек и SDK;
3) скорость обработки кода.

Приверженец Delphi может гордо ответить:
1) если писать на WinAPI функциях в Delphi, то размер и скорость обращения к коду практически сравнивается с "С"; Да и при HDD 200 Гб 0,5 мб особой роли не играют.
2) библиотеки и справки под Delphi можно найти тоже очень просто, а если "руки прямые", то и самому можно, транслировать библиотеки с кода "С";
3) на сегодняшний день средний компьютер стал настолько мощным и производительным, что о скорости обработки программного кода можно не говорить. Как видите, Delphi ничем не уступает "С", а, например, в скорости разработки - даже обходит.
[/code]
Вот этот коммент.
Flits вне форума Ответить с цитированием
Старый 21.07.2011, 15:47   #887
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Flits Посмотреть сообщение
Видел где-то коммент, что скорость у С++ и Делфи практически одинаковая из-за мощности современных компьютеров.
Delphi - это среда разработки, а язык, который там используется - паскаль ! Зачем сравнивать язык разработки и среду разработки ? Это совсем разные вещи...
Среда разработки Delphi - это оболочка, которая использует язык паскаль и инкапсулирует в свои классы функции WinApi. Любая среда разработки уже будет медленнее, чем непосредственные вызовы WinApi.
Цитата:
на сегодняшний день средний компьютер стал настолько мощным и производительным, что о скорости обработки программного кода можно не говорить. Как видите, Delphi ничем не уступает "С", а, например, в скорости разработки - даже обходит.
Советую посмотреть Builder C++ - это тот же Delphi, только на С++.
Насчет мощности, это смотря какая программа и что она будет делать, а если обработка данных критична ко времени выполнения...
An1ka вне форума Ответить с цитированием
Старый 21.07.2011, 15:54   #888
Flits
 
Регистрация: 20.07.2011
Сообщений: 4
По умолчанию

Будем знать
Flits вне форума Ответить с цитированием
Старый 21.07.2011, 21:32   #889
DimaTs
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 60
По умолчанию

в общем не знаю как спросить понятней..
допустим в основном таймере мы отрисовываем все действия персонажей на экране. события от игрока и его действия отрисовать не сложно, а вот как быть с персонажами под управлением ИИ? то есть вот некому НПС нужно пройти из пункта А в пункт Б, я могу рассчитать это, а как запомнить и самое главное как этим воспользоваться? заводить отдельный поток для обсчета?
DimaTs вне форума Ответить с цитированием
Старый 21.07.2011, 23:16   #890
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от DimaTs Посмотреть сообщение
в общем не знаю как спросить понятней..
допустим в основном таймере мы отрисовываем все действия персонажей на экране. события от игрока и его действия отрисовать не сложно, а вот как быть с персонажами под управлением ИИ? то есть вот некому НПС нужно пройти из пункта А в пункт Б, я могу рассчитать это, а как запомнить и самое главное как этим воспользоваться? заводить отдельный поток для обсчета?
Создай массив в котором хранятся узлы (записываешь в каком направлении надо идти, когда НПС будет в этих координатах ) и говоришь НПС идти в одном направлении, когда он достигнет узла, поменять направление в соответствии с этим узлом, или я вас не понял или одно из двух
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=DeS=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 750 14.11.2017 20:26
Музыка программистов - как вы относитесь к АРИИ? Весёлый Жека Свободное общение 46 10.10.2008 22:32
Конкурсы по созданию игр на Delphi mutabor Свободное общение 0 15.06.2007 12:40
Работа по созданию ПО remix Фриланс 3 22.04.2007 11:00