Пятница, 26 Апреля 2024, 13:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Delphi:Вопрос-Ответ
DestroyДата: Четверг, 06 Декабря 2012, 18:38 | Сообщение # 281
постоянный участник
Сейчас нет на сайте
то есть предстоит работа с 3д? Просто пока хотел освоить хорошо 2д пространство
karuyДата: Четверг, 06 Декабря 2012, 18:45 | Сообщение # 282
заслуженный участник
Сейчас нет на сайте
Quote (Destroy)
то есть предстоит работа с 3д?

да
Quote (Destroy)
Просто пока хотел освоить хорошо 2д пространство

Ну не знаю, расставляй приоритеты сам.
TimKruzДата: Четверг, 06 Декабря 2012, 23:36 | Сообщение # 283
старожил
Сейчас нет на сайте
Quote (Destroy)
то есть предстоит работа с 3д? Просто пока хотел освоить хорошо 2д пространство

Нет, изометрия - это 2D, а если 3D с определённым наклоном камеры - это просто 3D (от третьего лица).
Quote (Destroy)
а примерный алгоритм или еще какие нибудь действия?

Посмотри стандартный пример изометрии для GameMaker - там шарик перемещается между кубиками, и это в изометрии. Можешь найти и разобрать, поймёшь основы игр с изометрической графикой.
Если вкратце, то для реализации квадрата земли в изометрии нужно сделать ромб. Ну и все постройки на той же основе. Если освоишь OpenGL/DirectX - сам легко разберёшься, как это делается (в смысле, как убрать лишние углы и т.п.). Ну а перемещение и т.п. происходит сразу по двум направлениям, но с разными скоростями, тут тоже должно быть понятно.
Кстати, тут один человек пытался делать игру на Delphi... У него, конечно, всё сделано неправильно, но принцип изометрии тоже ясен...

Вообще-то, использовать OpenGL/DirectX не обязательно, можно обойтись стандартными средствами графики в Windows, но это будет медленнее работать (смотря какая игра - разница может быть незаметна), новомодные спецэффекты очень сложно или даже невозможно сделать, да и вообще такой метод устарел...

Quote (karuy)
Quote (Destroy)
то есть предстоит работа с 3д?
да

Можно, конечно, сделать 3D-модели и "снимать" их виртуальной камерой под нужным углом, но это не изометрия. А обычные картинки от поворота камеры не станут изометрическими.


DestroyДата: Пятница, 07 Декабря 2012, 14:25 | Сообщение # 284
постоянный участник
Сейчас нет на сайте
Quote (TimKruz)
Посмотри стандартный пример изометрии для GameMaker

спасибо за совет, ща что нибудь посмотрим и сделаем
karuyДата: Пятница, 07 Декабря 2012, 16:36 | Сообщение # 285
заслуженный участник
Сейчас нет на сайте
Quote (TimKruz)
А обычные картинки от поворота камеры не станут изометрическими.

А кто об этом говорил?
Quote (TimKruz)
Кстати, тут один человек пытался делать игру на Delphi... У него, конечно, всё сделано неправильно, но принцип изометрии тоже ясен...

Ты случайно не обо мне?) А то кажись таким мазохизмом как написание игр на делфях, я один на этом сайте занимаюсь)
Quote (TimKruz)
Вообще-то, использовать OpenGL/DirectX не обязательно, можно обойтись стандартными средствами графики в Windows, но это будет медленнее работать (смотря какая игра - разница может быть незаметна)

Если ты пишешь игру стандартными средствами графики в Windows не обойтись, под каким углом не крути.
Quote (TimKruz)
новомодные спецэффекты очень сложно или даже невозможно сделать

Все возможно сделать, зависит пропорцыально от твоего скила.
DestroyДата: Пятница, 07 Декабря 2012, 16:59 | Сообщение # 286
постоянный участник
Сейчас нет на сайте
Quote (karuy)
я один на этом сайте занимаюсь

не ты один, я тут еще ковыряюсь. не модно похоже это, все на юнити.
тут всего то если вопрос поднимается либо ты, либо TimKruz, отвечает
больше никого и нету)
TimKruzДата: Пятница, 07 Декабря 2012, 21:17 | Сообщение # 287
старожил
Сейчас нет на сайте
Quote (karuy)
А кто об этом говорил?

Никто, просто я на всякий случай предостерёг Destroy от попыток вывести не изометрические спрайты и повернуть их на нужный угол... wacko
Quote (karuy)
Ты случайно не обо мне?) А то кажись таким мазохизмом как написание игр на делфях, я один на этом сайте занимаюсь)

Я Feraset подразумевал (вот его проект), он упорно пытался (или даже до сих пор пытается) выводить игровую карту созданием кучи неконтролируемых экземпляров TImage. Но изометрическая картинка всё-таки получается, и даже ходить по ней можно...
Quote (karuy)
Если ты пишешь игру стандартными средствами графики в Windows не обойтись, под каким углом не крути.

Почему же, можно сделать игру (и не только сапёр или пасьянсы), для графики используя только GDI32.dll, это лучше, чем ничего... Но всякие модные спецэффекты писать на этом нерационально... sad


DestroyДата: Суббота, 08 Декабря 2012, 15:26 | Сообщение # 288
постоянный участник
Сейчас нет на сайте
вот еще вопрос, допустим я знаю как реализовать всю эту изометрию и напишу программу на дельфи где можно будет в изометрическом виде управлять человечком.
Ну то есть в полной мере реализую изометрические принципы.
Можно ли будет назвать мое творение движком или же это обычный пример(исходник).
TimKruzДата: Суббота, 08 Декабря 2012, 21:17 | Сообщение # 289
старожил
Сейчас нет на сайте
Quote (Destroy)
обычный пример(исходник)

"Исходник" - это исходный код любой программы, например: "begin writeln('hello world'); end."
Quote (Destroy)
Можно ли будет назвать мое творение движком

"Движок" - понятие растяжимое. Можешь назвать движком. Или заготовкой игры. Или болванкой. Или неотёсанным бревном. Или ещё как-то... Всё относительно. Но какая разница?

Вообще, "движок" - это основной (во всей программе или отдельной её части) программный код (если "игровой движок" - то он должен обеспечивать работу всех основных элементов игры), поверх которого цепляются дополнительные функции, ресурсы (картинки, звуки) и т.п., при этом, выбирая разные функции и ресурсы, можно собрать две разных программы (игры). Конечно, этот самый движок должен быть выполнен таким образом, чтобы ты сам или другой человек смог в нём разобраться и [относительно] легко довести до конечного продукта (до готовой игры).

Ты движок сделать хочешь, или всё-таки игру?


DestroyДата: Суббота, 08 Декабря 2012, 21:28 | Сообщение # 290
постоянный участник
Сейчас нет на сайте
Quote (TimKruz)
Ты движок сделать хочешь, или всё-таки игру?

вообще игру, просто думал что сделаю небольшой примерчик с изометрией и выложу, может кому надо будет smile
вот и интересуюсь как бы по красивее назвать
NanotentacleДата: Воскресенье, 09 Декабря 2012, 10:16 | Сообщение # 291
был не раз
Сейчас нет на сайте
Если не ошибаюсь, то движок - это все же набор классов, иногда и компонентов, которые позволяют любому программисту создавать игры, не вникая в суть того же DirectX или OpenGL, пользуясь лишь методами уже созданных классов. По сути же, если глядеть в глубину любого движка, то чаще всего они как раз и представляют собой те самые DirectX и\или OpenGL. По сути, как для приятной и комфортной езды на автомобиле не требуется знать, как работает двигатель внутреннего сгорания, так обстоит дело и тут. Не стоит только забывать, что если не умеешь рулить и выбирать скорость в поворотах, то это закончится плачевно.

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

Сам я начинал создание игр сначала с простого - DelphiX, потом мне стало нехватать функционала и я попробовал Andorra2D. Жаль, что оба этих движка приказали долго жить. В общем-то, если преследуешь целью только сделать игру, а не движок, то я бы рекомендовал поискать что-то подобное.
DestroyДата: Среда, 12 Декабря 2012, 17:05 | Сообщение # 292
постоянный участник
Сейчас нет на сайте
что же спасибо учту smile
тогда это просто примером можно назвать

Добавлено (12.12.2012, 17:05)
---------------------------------------------
нужна помощь с выводом спрайтов.
вот решил сделать так: создал 2 класса timage и timagelist.
В imagelist загрузил спрайты с передвижением. Как сделать так чтоб например при нажатии клавиши 'D' спрайты по очереди выводились в image и менялись друг за другом.

karuyДата: Среда, 12 Декабря 2012, 19:17 | Сообщение # 293
заслуженный участник
Сейчас нет на сайте
Quote (Destroy)
В imagelist загрузил спрайты с передвижением. Как сделать так чтоб например при нажатии клавиши 'D' спрайты по очереди выводились в image и менялись друг за другом.

Ты определенно не в ту сторону движешься, скачай какой то енжын для делфи и работай.
DestroyДата: Среда, 12 Декабря 2012, 19:24 | Сообщение # 294
постоянный участник
Сейчас нет на сайте
а какой посоветуешь?
karuyДата: Среда, 12 Декабря 2012, 20:01 | Сообщение # 295
заслуженный участник
Сейчас нет на сайте
2d - ZenGL
CyberStormДата: Среда, 12 Декабря 2012, 21:59 | Сообщение # 296
был не раз
Сейчас нет на сайте
2Destroy, давным-давно на форуме мирггамесов, мне дали несколько процедур для легкой и не напряжной отрисовки на канве - без использования каких-либо движков. Советую тебе взглянуть: cyberstorm.ru/files/canvas_demo.rar

Сообщение отредактировал CyberStorm - Среда, 12 Декабря 2012, 22:00
NanotentacleДата: Четверг, 13 Декабря 2012, 12:43 | Сообщение # 297
был не раз
Сейчас нет на сайте
Возникла необходимость поработать с указателями(pointer) и хотелось бы узнать, как делать правильно. Ситуация такова: имеется динамический массив данных. При удалении элемента не из конца массива происходит смещение всех элементов на один в сторону уменьшения путем простого присвоения. Т.е., в моем понимании, происходит копирование элемента в новую "ячейку" оперативной памяти, а старая "ячейка" затирается данными от следующего элемента. При такой операции расположение в памяти меняется, и указатели, которые были расставлены ранее, уже ведут в лучшем случае не к требующемуся элементу.
Внимание, вопрос: правильно ли я понимаю ситуацию с указателями, и если да, то есть ли возможность присвоить переменной не значение, а адрес в памяти?

UPD:
Вот дочитался до некоторых вещей. Судя по одному из источников, при переназначении длины динамического массива, он переписывается в другой участок памяти, соответствующий новому размеру, а старый участок памяти высвобождается. Однако, моими экспериментами с указателем это не подтвердилось. Указатель продолжал ссылаться на нужное мне место даже после переназначения длины массива. Кто прав?

Плюс, судя по всему, у меня было неправильное представление самого понятия динамического массива. Доступные для управления элементы как раз и являются типизированными указателями на память, а не переменной. Тогда не совсем понятно, что происходит при присваивании одного элемента другому внутри массива.

SOLVED: Все решено. В моем случае, после каждого изменения внутри массива буду переписывать связанные с ними указатели. Единственный вариант, на мой взгляд.


Сообщение отредактировал Nanotentacle - Четверг, 13 Декабря 2012, 14:25
DestroyДата: Суббота, 22 Декабря 2012, 22:38 | Сообщение # 298
постоянный участник
Сейчас нет на сайте
Цитата (CyberStorm)
Советую тебе взглянуть:

много лишнего там, было бы неплохо с комментариями
NanotentacleДата: Четверг, 27 Декабря 2012, 06:59 | Сообщение # 299
был не раз
Сейчас нет на сайте
Встроенный в Delphi 7 генератор случайных чисел дает достаточно кучный результат. Если мне надо получить случайное число из диапазона 0-2000, то с вероятностью в 95% эти числа попадают в промежуток 1700-2000 (randomize используется, если что). Есть ли более "случайные" генераторы для Делфи или лучше написать его самостоятельно?

Сообщение отредактировал Nanotentacle - Четверг, 27 Декабря 2012, 06:59
CyberStormДата: Четверг, 27 Декабря 2012, 17:06 | Сообщение # 300
был не раз
Сейчас нет на сайте
Цитата (Nanotentacle)
Встроенный в Delphi 7 генератор случайных чисел дает достаточно кучный результат. Если мне надо получить случайное число из диапазона 0-2000, то с вероятностью в 95% эти числа попадают в промежуток 1700-2000 (randomize используется, если что). Есть ли более "случайные" генераторы для Делфи или лучше написать его самостоятельно?

Такого не может быть, вот программма из одной строчки - если бы тут числа постоянно были из промежутка 1700-2000 то выделнный красным квадрат - был бы белым.
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг