Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/516: Рейтинг темы: голосов - 516, средняя оценка - 5.00
Задающий вопросы (%
16 / 15 / 0
Регистрация: 09.05.2009
Сообщений: 168
1

Создание игры(2d)

12.05.2009, 21:08. Показов 94532. Ответов 423
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно идея такого создать нечто на подобиe ->
http://www.newgrounds.com/portal/view/494301

Буду сюда задвать свои вопросы,думаю всем кто будет увлечён создание игры тоже будет интресно)

Otaka,этот задний буфер замещает собой background плюс курсор оставляет на неём свои артефакты,как его очищать,да так чтоб ещё и background у нас был.

________________________________________________________________________________ _________________________
Основные моменты
Вычисление угла поворота персонажа в зависимости от положения курсора мыши
То же
Поворот изображения(тут еще как смещать точку поворота)
Делаем пули
Все еще непонятки с пулями
Начинаем вычисление коллизий
Идея про то, как это должно быть
Как это должно быть реализовано
Как повернуть массив точек(регион)?
А тут код(в нем есть глюк. Потом есть исправленная версия)
Находим столкновение региона и линии. Исправленная версия столкновения регионов
Как это должно выглядеть в принципе?
Начинается долгое обсуждение того как делать редактор уровней
...
...
Первый вариант редактора
Снова эти пули
Функция которая бьет изображения на мелкие куски(тайлы)
Версия редактора
Загрузка сохранение
Еще версия
4
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2009, 21:08
Ответы с готовыми решениями:

Создание игры
Извините за очередную тему подобного рода, но все же не могу не спросить: Мечтаю о создании игры,...

Создание игры
Доброго времени суток! Лабораторная работа - сделать игру. Есть идея. Нужны любые советы,...

Создание игры
Люди есть у кого нибудь исходники игры на подобие игр от ALAWAR, что бы разобрать и поучиться на...

Создание игры
Здравствуйте форумчане, мой вопрос состоит в том. Я молодой парень, который знает языки C++, C# и...

423
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
09.01.2013, 12:48 401
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Deimon Посмотреть сообщение

(!) Кстати... у меня через таймер все подлагивало (отрисовывалось 24-26 кадров в секунду, но на взгляд не больше 15). Врубил через поток все просто летает, но измерить пока не удалось.
Делаю аналог того, что здесь обсуждалось - воткнулся в проблему лагов и никак ее не преодолею.
Через таймер запустил отрисовку, объектам плановость (шоб правильно друг друга заслоняли) сделал путем их поочередного прорисовывания (они у меня списком, сортированным по значению 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
Цитата Сообщение от Idaltu Посмотреть сообщение
Сообщение от Deimon
(!) Кстати... у меня через таймер все подлагивало (отрисовывалось 24-26 кадров в секунду, но на взгляд не больше 15). Врубил через поток все просто летает, но измерить пока не удалось.
КстатиДва))), я вроде как решил ту проблему. Она была вызвана не тормозами GDI, а моей безграмотностью.
Сейчас, когда я создаю где-нибудь 300 анимированых ботов на карте, на маломощном по нынешним меркам компьютере, у меня притормаживает. Но я чувствую, что это не из-за отрисовки(все на карте все ровно не уместятся), а потому что каждый думает что ему делать и каждый проверяет себя на столкновения.

Цитата Сообщение от Idaltu Посмотреть сообщение
объектам плановость (шоб правильно друг друга заслоняли) сделал путем их поочередного прорисовывания
тоже мечтал о таком, но думал о multimap. Читал про него, но не вчитывался. Там можно было бы сделать элементы из пары значений pair<int Y, и объект), и вроде как там итератор есть, который сам прогоняет список от начала до конца по мере увелечения ключа. Но у меня такое ощущение, что там ключ константный, и его нельзя будет поменять. А так, не пробывали делить на три списка (то что под ногами, то что двигается, и то что находится над головой) Ведь дерево можно изобразить из двух объектов. начало ствола (типо пенек), который является препятствием и находится во втором списке, и продолжения ствола с листвой, который будет рисоваться поверх всех объектов из первого и второго списка. (как вариант разгрузить графический движок) Но придется вручную задавать очередность внесения в список объектов и их координаты.

Цитата Сообщение от Idaltu Посмотреть сообщение
Все привинтил. Вопрос снимается
Ну поделились бы, свой мануал написали бы =)
А то я как то подключал; к билдеру подключить так и не смог, а в визуал работало не все. Я тут с 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 камеры (той области что отрисовывается) и я сначало проверяю есть ли пересечение объекта для отрисовки с видимой областью и только тогда его рисую. Тут логично, но вот есть ли смысл делать проверку при добавлении сортировку, не замедлит ли это процесс самой сортировки, если проверять ректы а потом добавлять? С другой стороны, мне кажется что я туплю, и действительно, проще перед добавлением в сортировку проверить видин ли пользователю объект. А когда отрисовывать из мультимэпа, то даже не задумываться на эту тему. (Вообщем тут вопрос и идея, удалять не стал)
Вложения
Тип файла: rar очередь отрисовки.rar (3.88 Мб, 11 просмотров)
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
05.02.2013, 17:56 414
Ну поделились бы, свой мануал написали бы =)
Рановато я еще только запустил через билдер, подробнее на соседней ветке есть:
Библиотека для работы с 3D графикой
Там тов.Малуда - специалист по блицу ))

Добавлено через 10 минут
Idaltu, а можете рассказать или показать, как Вы осуществляли сортировку перекрывающих изображений? =)
Я сейчас мучаюсь над этим вопросом. Придумываю извращенные идеи, но не пока не уверен, что они сработают.
Закат солнца вручную )) сделал общую структуру для всех выводимых объектов. В момент ее наполнения (загрузки) запустил сортировку по оси Y. Дальше при выводе на экран перерисовка идет из структуры. Гуляющие люди опрашивают соседние по структуре объекты и по необходимости с ними местами меняются. Как-то так.

Добавлено через 8 минут
А так, не пробывали делить на три списка (то что под ногами, то что двигается, и то что находится над головой) Ведь дерево можно изобразить из двух объектов. начало ствола (типо пенек), который является препятствием и находится во втором списке, и продолжения ствола с листвой, который будет рисоваться поверх всех объектов из первого и второго списка. (как вариант разгрузить графический движок) Но придется вручную задавать очередность внесения в список объектов и их координаты.
Да, конечно думал, но тормознул с воплощением в связи с переходом на блиц.
Много чего хотел, кроны отдельно с изменением прозрачности (когда человек под них заходит), та же плановость с домами (шоб крышу снимать для обозрения и пр.) Все как Вы пишете

Добавлено через 19 минут
К меня в качестве структуры вектор использован (простите за вольность определений). Там тоже есть тема с сортировкой с теми же или похожими командами, только я или не понял ее или чего - автоматически не смог это сделать. Ну а от бедности познаний как описал выше все запустил.
Основная проблема, которая возникла - это то, что нельзя заранее отрисовать планы, а потом только склеивать 3 картинки низ-середина-верх. Человек уходит в лес и адьёс амиго )))
Потом, средний план это не только пеньки. Если взять город, то каждая стена в просчет идет - перед ней персонаж или на ней.
И тут все упирается в вывод по таймеру кучи картинок - десяток-два и все, лаги.

Вечером специально еще раз посмотрю свежим взглядом - опрос соседей по Y влияет или нет. Не должно

Добавлено через 10 минут
Нет, лаги точно от вывода картинок...
0
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
05.02.2013, 18:21 415
Цитата Сообщение от Idaltu Посмотреть сообщение
Нет, лаги точно от вывода картинок...
у меня всюду BMP картинки, может из-за формата...
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
05.02.2013, 19:07 416
Цитата Сообщение от Deimon Посмотреть сообщение
Есть list с объектами которые надо нарисовать в определенной последовательности, в зависимости от положения по Y.
Есть multimap<int, указатель_на_объект>
А зачем лист тогда вообще нужен? Хранить весь список в мультимапе, уже сортированный и индексированный по планам.
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
05.02.2013, 20:18 417
Цитата Сообщение от Deimon Посмотреть сообщение
у меня всюду BMP картинки, может из-за формата...
У меня тоже BMP.
В любом случае, доверяя мнению Otaka и видя собственный тупик, я тормознул копания в этом направлении. Возможно что временно. Я еще не очень представляю возможности Blitz3d+Builder.
Хотя впечатляет появление нормальной 3д графики в рамках своего замученного проекта )))
притащил к себе земной шар, модернизировал, сделал облет - вчера весь вечер втыкал в монитор как троглодит в кинотеатре ))), сочиняю романтическую заставку.
Меня сейчас больше всего волнует вопрос окон, т.к. моя игруля - суть РПГ, обвешанная панелями и закладками. Есть ли возможность встроить окно блица в форму билдера я не знаю. Сложно ли (а это для меня переписать весь объем до сих под сделанного на блиц) создать эти панели в нем тоже вопрос...
0
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
05.02.2013, 21:19 418
Цитата Сообщение от BRcr Посмотреть сообщение
Хранить весь список в мультимапе, уже сортированный и индексированный по планам.
мультимапе первое значение (ключ) константное. Не получается изменять положение по Y.
Так как я не знаю каким образом происходит сортировка в листе и в мультимапе, меняются ли там просто адреса начала объекта класса или копируется весь объект целиком из одного места в другое, я решил, что не стоит делать кота в мешке, и приделал к ключу указатель на объект.
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
05.02.2013, 21:40 419
Указатель - это правильно, тем более, что объект из VCL так просто в контейнер не запихнешь.
А насчет константности ключа - это ерунда. Удаляем старую пару, вставляем новую - и всех делов.
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 18
05.02.2013, 21:48 420
Цитата Сообщение от Deimon Посмотреть сообщение
Я тут с DirectSound мучался, загружал какой-то ваф файл, но как был хрип, так хрип и оставался. А у Вас как реализован звук?
mp3 заработал без задёва, и WAV тоже
0
05.02.2013, 21:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2013, 21:48
Помогаю со студенческими работами здесь

Создание игры
Добрый вечер. Начал работу над собственным проектом, и задался вопросом. (gamedev и прочие сайты...

Создание игры
Посмотрел как сейчас на коленке люди клепают инди игры под андроид\иос e.t.c. Созрел вопрос - куда...

Создание игры на C++
Скажите , а можно ли создавать игры на С++? Если да , то буду рад увидеть примеры как это все...

Создание 3д игры
Извиняюсь, если такая тема уже была, не нашел. Хочу написать свою игрушку. Игрушка по типу что то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
420
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru