Задающий вопросы (%
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
|
|
1 | |
Создание игры(2d)12.05.2009, 21:08. Показов 94532. Ответов 423
Метки нет (Все метки)
Собственно идея такого создать нечто на подобиe ->
http://www.newgrounds.com/portal/view/494301 Буду сюда задвать свои вопросы,думаю всем кто будет увлечён создание игры тоже будет интресно) Otaka,этот задний буфер замещает собой background плюс курсор оставляет на неём свои артефакты,как его очищать,да так чтоб ещё и background у нас был. ________________________________________________________________________________ _________________________ Основные моменты Вычисление угла поворота персонажа в зависимости от положения курсора мыши То же Поворот изображения(тут еще как смещать точку поворота) Делаем пули Все еще непонятки с пулями Начинаем вычисление коллизий Идея про то, как это должно быть Как это должно быть реализовано Как повернуть массив точек(регион)? А тут код(в нем есть глюк. Потом есть исправленная версия) Находим столкновение региона и линии. Исправленная версия столкновения регионов Как это должно выглядеть в принципе? Начинается долгое обсуждение того как делать редактор уровней ... ... Первый вариант редактора Снова эти пули Функция которая бьет изображения на мелкие куски(тайлы) Версия редактора Загрузка сохранение Еще версия
4
|
12.05.2009, 21:08 | |
Ответы с готовыми решениями:
423
Создание игры Создание игры Создание игры Создание игры |
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
09.01.2013, 12:48 | 401 |
Делаю аналог того, что здесь обсуждалось - воткнулся в проблему лагов и никак ее не преодолею.
Через таймер запустил отрисовку, объектам плановость (шоб правильно друг друга заслоняли) сделал путем их поочередного прорисовывания (они у меня списком, сортированным по значению Y) - тормозит. Гоняю персонажа по карте, как к деревьям подойдет - скорость падает. Пошел искать блох - прозрачность отключаю - чуть быстрее, но не решает проблемы, размеры картинок-объектов уменьшил, тоже чуть быстрее, но страшнее и тоже не решает проблемы. ИИ это я еще анимацию персонажа не врубил, и их пока двое в тестовом режиме валандается. Где я принципиально ошибся? - или через поток попробовать, но я не понял как - или перемудрил с такой прорисовкой - или что-то еще не так... Если кто-то по моему описанию видит ошибку - черкните, плз.
0
|
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
|
|
09.01.2013, 12:56 | 402 |
Чем больше картинок на экране, тем сильнее тупит. GDI сам по себе очень медленная штука, так что если у тебя много разных прозрачных картиночек, то большой скорости тебе не получить.
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
09.01.2013, 13:04 | 403 |
Я тогда не пойму как другие 2d игры пашут. Полез в инет вспоминать молодость - дьяблов всяких и фаллаутов посмотрел - там много объектов типа стены и пр, которые тоже с прозрачностью и тоже большие достаточно. Это меня и ставит в тупик
ПыСы Спасибо вам с ктулхом за ветку - наиболее классное пособие по игрописанию, кроме сайта ToshibaNTT, которое удалось найти в инете
0
|
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
|
|
09.01.2013, 13:17 | 404 |
Не, фаллаут сделан совсем по другому. Он был сделан еще до ХРшки и использовал прямой доступ к видеобуфферу, и просто туда записывал картинки и манипулировал каждым битом стараясь не делая лишней работы.
GDI же при выполнении каждой операции делает тысячи проверок на соответствие графических режимов рисуемой картинки и устройства на которое рисуется, и если они не соответствуют, то выполняется преобразование. Это очень сильно замедляет вывод.
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
09.01.2013, 13:20 | 405 |
т.е. не судьба нынче вообще 2d писать?
Или есть способ к видеобуферу присосаться? Наверное это шибко сложно...
0
|
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
|
|
09.01.2013, 13:22 | 406 |
Двумерные игрушки в виндовсе в основном делаются через DirectX. Хотя, признаю, что при должной сноровке можно и на GDI написать что-то сносное. Но увы я и сам зашел в тупик.
Вот например моя игра: https://www.cyberforum.ru/grap... post549789 Так там чуть больше летающих монеток поставь, и все, лагает жутко.
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
09.01.2013, 13:30 | 407 |
мдя...
А не подскажешь, плз, уроки какие-нить по DirectX. Может смогу освоить?
0
|
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
|
|
09.01.2013, 13:31 | 408 |
Что я бы тебе посоветовал. Попробуй Blitz3d движок. Очень просто и легко. Просто туча примеров...однако на диалекте бейсика. Но ты сначала разбираешься что там да как, смотришь примеры, радуешься как же там все просто, а потом качаешь себе BlitzSDK - это то же самое, но DLL библиотека которую можно подключить к любому своему проекту и дергать те же функции что и в BlitzBasic и использовать ту же самую документацию. А она там очень хорошая.
Штука достаточно быстрая и дружелюбная к новичку. Позволяет писать как 2d так и 3d игры.
1
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
09.01.2013, 13:34 | 409 |
Пасиб, попробую.
0
|
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
|
|
09.01.2013, 13:41 | 410 |
Голый DirectX изучать не рекомендую. Просто есть вероятность, что пока ты его будешь изучать, писать всю необходимую инфрастуктуру(а придется писать относительно много), то весь запал к созданию игры ПЫХПЫХ и выкипит.
А вот изучать DirectX или тот же OpenGL имея за собой багаж знаний и опыт использования какого-нибудь готового движка - совсем другое дело. Ты уже будешь приблизительно знать на что это дело способно, и будешь знать свои потребности.
1
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
03.02.2013, 12:54 | 411 |
Otaka, а может посоветуешь как привинтить SDK к проекту? тема есть на форуме про это, но не получилось по ней... Что-то где-то не так у меня.
Это я про блиц Добавлено через 14 часов 40 минут Все привинтил. Вопрос снимается
0
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
05.02.2013, 13:23 | 412 |
КстатиДва))), я вроде как решил ту проблему. Она была вызвана не тормозами GDI, а моей безграмотностью.
Сейчас, когда я создаю где-нибудь 300 анимированых ботов на карте, на маломощном по нынешним меркам компьютере, у меня притормаживает. Но я чувствую, что это не из-за отрисовки(все на карте все ровно не уместятся), а потому что каждый думает что ему делать и каждый проверяет себя на столкновения. тоже мечтал о таком, но думал о multimap. Читал про него, но не вчитывался. Там можно было бы сделать элементы из пары значений pair<int Y, и объект), и вроде как там итератор есть, который сам прогоняет список от начала до конца по мере увелечения ключа. Но у меня такое ощущение, что там ключ константный, и его нельзя будет поменять. А так, не пробывали делить на три списка (то что под ногами, то что двигается, и то что находится над головой) Ведь дерево можно изобразить из двух объектов. начало ствола (типо пенек), который является препятствием и находится во втором списке, и продолжения ствола с листвой, который будет рисоваться поверх всех объектов из первого и второго списка. (как вариант разгрузить графический движок) Но придется вручную задавать очередность внесения в список объектов и их координаты. Ну поделились бы, свой мануал написали бы =) А то я как то подключал; к билдеру подключить так и не смог, а в визуал работало не все. Я тут с DirectSound мучался, загружал какой-то ваф файл, но как был хрип, так хрип и оставался. А у Вас как реализован звук? Добавлено через 1 час 54 минуты Idaltu, а можете рассказать или показать, как Вы осуществляли сортировку перекрывающих изображений? =) Я сейчас мучаюсь над этим вопросом. Придумываю извращенные идеи, но не пока не уверен, что они сработают.
0
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
05.02.2013, 16:52 | 413 |
Не понимаю, почему у Вас так жутко тормозит сортировка. Надеюсь вы расскажете.
Я поэксперементировал. Предположил, что тормоза вызваны излишним копированием объектов (не знаю насколько это правда) Вообщем идея у меня была такая: Есть list с объектами которые надо нарисовать в определенной последовательности, в зависимости от положения по Y. Есть multimap<int, указатель_на_объект> И в начале каждой отрисовки мы сначало применяем к multimap метод clear, чтобы он был пустым, а потом заносим в него пары <положение по Y , и указатель на объект который дал это значение>. Тоесть один раз надо пройтись от начало до конца массива list. К сожалению я не знаю каким магическим способом (и отсюда у меня сомнения) multimap сортирует пары по первому значению (которыми являются положения объектов по Y). Но если прогнать multimap от begin() до end(), то он выдаст объекты по порядку расположения по Y. В итоге, нужно прогнать один раз список и один раз мультимэп. Прикладываю проект с таким лагоритмом, там всего две кнопки чтобы показать и увеличить значения по x и y. Там сортируется по Х, но поменяв в коде одну буковку, все работает и по Y. Интересует мнение коллектива, сработает ли такой подход, или он не чего не изменит?) Для отрисовывания графики, у всех отрисовываемых объектов я создаб TRect, и есть TRect камеры (той области что отрисовывается) и я сначало проверяю есть ли пересечение объекта для отрисовки с видимой областью и только тогда его рисую. Тут логично, но вот есть ли смысл делать проверку при добавлении сортировку, не замедлит ли это процесс самой сортировки, если проверять ректы а потом добавлять? С другой стороны, мне кажется что я туплю, и действительно, проще перед добавлением в сортировку проверить видин ли пользователю объект. А когда отрисовывать из мультимэпа, то даже не задумываться на эту тему. (Вообщем тут вопрос и идея, удалять не стал)
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
05.02.2013, 17:56 | 414 |
Библиотека для работы с 3D графикой Там тов.Малуда - специалист по блицу )) Добавлено через 10 минут Добавлено через 8 минут Много чего хотел, кроны отдельно с изменением прозрачности (когда человек под них заходит), та же плановость с домами (шоб крышу снимать для обозрения и пр.) Все как Вы пишете Добавлено через 19 минут К меня в качестве структуры вектор использован (простите за вольность определений). Там тоже есть тема с сортировкой с теми же или похожими командами, только я или не понял ее или чего - автоматически не смог это сделать. Ну а от бедности познаний как описал выше все запустил. Основная проблема, которая возникла - это то, что нельзя заранее отрисовать планы, а потом только склеивать 3 картинки низ-середина-верх. Человек уходит в лес и адьёс амиго ))) Потом, средний план это не только пеньки. Если взять город, то каждая стена в просчет идет - перед ней персонаж или на ней. И тут все упирается в вывод по таймеру кучи картинок - десяток-два и все, лаги. Вечером специально еще раз посмотрю свежим взглядом - опрос соседей по Y влияет или нет. Не должно Добавлено через 10 минут Нет, лаги точно от вывода картинок...
0
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
05.02.2013, 18:21 | 415 |
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
05.02.2013, 20:18 | 417 |
У меня тоже BMP.
В любом случае, доверяя мнению Otaka и видя собственный тупик, я тормознул копания в этом направлении. Возможно что временно. Я еще не очень представляю возможности Blitz3d+Builder. Хотя впечатляет появление нормальной 3д графики в рамках своего замученного проекта ))) притащил к себе земной шар, модернизировал, сделал облет - вчера весь вечер втыкал в монитор как троглодит в кинотеатре ))), сочиняю романтическую заставку. Меня сейчас больше всего волнует вопрос окон, т.к. моя игруля - суть РПГ, обвешанная панелями и закладками. Есть ли возможность встроить окно блица в форму билдера я не знаю. Сложно ли (а это для меня переписать весь объем до сих под сделанного на блиц) создать эти панели в нем тоже вопрос...
0
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
05.02.2013, 21:19 | 418 |
мультимапе первое значение (ключ) константное. Не получается изменять положение по Y.
Так как я не знаю каким образом происходит сортировка в листе и в мультимапе, меняются ли там просто адреса начала объекта класса или копируется весь объект целиком из одного места в другое, я решил, что не стоит делать кота в мешке, и приделал к ключу указатель на объект.
0
|
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
|
|
05.02.2013, 21:48 | 420 |
0
|
05.02.2013, 21:48 | |
05.02.2013, 21:48 | |
Помогаю со студенческими работами здесь
420
Создание игры Создание игры Создание игры на C++ Создание 3д игры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |