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 от попыток вывести не изометрические спрайты и повернуть их на нужный угол... Quote (karuy) Ты случайно не обо мне?) А то кажись таким мазохизмом как написание игр на делфях, я один на этом сайте занимаюсь) Я Feraset подразумевал (вот его проект), он упорно пытался (или даже до сих пор пытается) выводить игровую карту созданием кучи неконтролируемых экземпляров TImage. Но изометрическая картинка всё-таки получается, и даже ходить по ней можно... Quote (karuy) Если ты пишешь игру стандартными средствами графики в Windows не обойтись, под каким углом не крути. Почему же, можно сделать игру (и не только сапёр или пасьянсы), для графики используя только GDI32.dll, это лучше, чем ничего... Но всякие модные спецэффекты писать на этом нерационально...
|
|
| |
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) Ты движок сделать хочешь, или всё-таки игру? вообще игру, просто думал что сделаю небольшой примерчик с изометрией и выложу, может кому надо будет вот и интересуюсь как бы по красивее назвать
|
|
| |
Nanotentacle | Дата: Воскресенье, 09 Декабря 2012, 10:16 | Сообщение # 291 |
был не раз
Сейчас нет на сайте
| Если не ошибаюсь, то движок - это все же набор классов, иногда и компонентов, которые позволяют любому программисту создавать игры, не вникая в суть того же DirectX или OpenGL, пользуясь лишь методами уже созданных классов. По сути же, если глядеть в глубину любого движка, то чаще всего они как раз и представляют собой те самые DirectX и\или OpenGL. По сути, как для приятной и комфортной езды на автомобиле не требуется знать, как работает двигатель внутреннего сгорания, так обстоит дело и тут. Не стоит только забывать, что если не умеешь рулить и выбирать скорость в поворотах, то это закончится плачевно.
С другой стороны, если ты сделаешь те же самые классы и компоненты, которые использовали бы, скажем, классический TBitmap и TImage, и значительно упрощали создание изометрической игры для всех, кому лень вникать в суть этого TBitmap, то думаю да, это тоже можно будет назвать движком. TBitmap тут лишь для красного словца, использовать его в играх я бы очень не рекомендовал.
Сам я начинал создание игр сначала с простого - DelphiX, потом мне стало нехватать функционала и я попробовал Andorra2D. Жаль, что оба этих движка приказали долго жить. В общем-то, если преследуешь целью только сделать игру, а не движок, то я бы рекомендовал поискать что-то подобное.
|
|
| |
Destroy | Дата: Среда, 12 Декабря 2012, 17:05 | Сообщение # 292 |
постоянный участник
Сейчас нет на сайте
| что же спасибо учту тогда это просто примером можно назватьДобавлено (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 то выделнный красным квадрат - был бы белым.
|
|
| |
|