Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 09.01.2010, 01:04   #1
Manfred
Оператор ЭВМ
 
Регистрация: 19.07.2006
Сообщений: 26
Написано 0 полезных сообщений
(для 0 пользователей)
Тайлы, коллизия между ними и другое...

Доброго дня.. В первую очередь, хочу поздравить всех, читающих данную тему с Новым Годом и Рождеством Христовым. Всех земных благ вам, Уважаемые!

Во вторую очередь выражаю благодарность Dimanche13 за BM уроки о тайловом движке, которые я читал с отрадой и искреннем чувством созидания тайловой игро-промышленности, а также невообразимым ранее чувством "О слепец я, ныне прозревший осмыслением ООП сущности"
Действительно, это очень удобно и замечательно... С недавнего времени я начал уже как-то руками создавать какие-то примитивные логические модели и простые методы обработки задач на PHP, Java и т.д. Всему виновник - BlitzMax. Конечно я вряд ли додумаюсь сделать что-то действительно полезное или хоть как-то оправдывающее мои затраты времени на изучение этого, но.. блин, как же это все интересно.... И как вы уже поняли, я не мечтаю, я не проЭктировщик и я не прыгаю выше и дальше своей жизненной предрасположенности и цели. Просто это уже становится как бы домашним хобби, среди 10-20 других

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

Вот, я изучал эти вещи:
http://dimanche.ucoz.ru/publ/2-2-3
http://blitzetc.blitzmax.ru/index.php/Тайловая_игра_на_BlitzMax

Я уже поковырялся и даже переписывал несколько раз заново (дабы понять их смысл) с добавлением своим нововведений и небольших улучшений.
Сейчас получилось вот это:

Эта картинка показывает как бы смысл в целом. Еще есть конечно персонажи, бегающие как им заблагорассудится или по строгой траектории "клеточного пути" зависящего от хода игрока (прям как в ранних Ultima ) заданной в массиве. Но вот взаимодействия между этим всем - нет.

Может быть кто-нибудь решится на такое и сделает доброе дело. Хотелось бы получить именно уроки, продолжение замечательным "Писаниям Прозрения", чьим автором является Dimanche13.
(Offline)
 
Ответить с цитированием
Старый 11.01.2010, 06:43   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Тайлы, коллизия между ними и другое...

Здарова.

Сделай класс прямоугольника, в котором будут его координаты и ширина, и пара методов типа setPos(x,y), setSize(w,h) и методы для определения пересечения с другими прямоугольниками (или кружкАми).

Потом персонажам и объектам добавь поле "габарит", которое будет типом прямоугольника, подгони его размеры по размерам спрайтов.
В методе обновления персонажей и объектов пропиши boundRect.setPos(позицияОбъектаПоХ, позицияОбъектаПоУ), чтобы габариты связать с игроком, ну а после делай проверку пересечения этих прямоугольников.

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

Про двери: можно сделать по типу триггеров, роль которых возьмут на себя расставленные в редакторе прямоугольники - рядом с дверьми. А потом ты проверяешь пересечение этих прямоугольников с прямоугольным основанием игрока, и если пересеклись, то можно что-то делать с дверью, например открыть её ключом.

А если дверь не тайловая, а как объект, то триггерный прямоугольник сделать полем класса двери, и аналогично проверять.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Manfred (11.01.2010)
Старый 11.01.2010, 17:34   #3
Manfred
Оператор ЭВМ
 
Регистрация: 19.07.2006
Сообщений: 26
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Тайлы, коллизия между ними и другое...

Спасибо за ответ, смысл понятен. Я в принципе тоже думал о похожей триггерной системе игрового мира, но считал что есть метод проще, т.к. если брать те же "рогаличные" rpg ASCII видато там используется другой построчный символьный метод вывода графики.
Я в своем первом посте конечно совсем не корректно изложил то, что мне хотелось бы понять. До меня только сейчас дошло, что я в первом посте сам не знал, чего хочу. Уроки задумывались то как для платформера.
У тебя все таки принцип для более современных 2D игр, объекты в которых имеют различные формы и размеры спрайта и т.д. и соответственно тут уже целая система коллизий. Конечно возможно я и ошибаюсь, это всего лишь догадки.
А вот если смотреть гораздо раньше по времени.
Я делаю все гораздо проще (а может и наоборот), у меня все объекты строго 32х32 кубик, даже предметы. Т.е. грубо говоря вся программа - 32х32 клетки. .Я пошел по пути массивов, даже для объектов, вот например стандартно:
11111
10001
10001
11111
1 - стены, 0 - пол. И даже чтобы добавить например какой-то предмет, я его тоже задам в массиве, к примеру 15:
11111
101501
10001
11111

Собственно придумать как возвращать значение из массива, как бы привязать игрока к массиву (узнавать его x,y положение в массиве-уровня) до этого я совсем не могу додуматься.
Конечно этот метод может быть не совсем корректным и придется действовать по твоему совету.
Но будем пробовать все и изучать..
Кстати, по-моему этот совет хорошо пойдет на продолжение тех уроков, а меня уже со своими экспериментами куда-то в другое место течением унесло))
(Offline)
 
Ответить с цитированием
Старый 11.01.2010, 18:50   #4
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Тайлы, коллизия между ними и другое...

да, была как-то идея написать продолжение, как раз про коллизии в тайловом мире. Если будет время и желание, то тутору - быть. Но с первым из двух параметров пока туго, да и о сверх присутствии второго тоже сказать не могу.
А так на пальцах, там все элементарно. Надо тока знать как перевести пиксельные координаты в тайловые. Остальное, думаю, поймешь сам.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Manfred (11.01.2010)
Старый 11.01.2010, 22:08   #5
Manfred
Оператор ЭВМ
 
Регистрация: 19.07.2006
Сообщений: 26
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Тайлы, коллизия между ними и другое...

Спасибо всем, кажется я все понял, как это все работает (на моем примере по типу roguelike игрушки), сегодня пришел в голову прием как перевести координаты на экране в координаты массива..
Уроки очень нужны я думаю всем. Т.к. для такой замечательной вещи как BM уроков очень мало в инете, есть только сомнительного качества заморские бумажки, а изучать чужие фреймворки и исходники довольно сложно если не понимаешь даже базовых принципов работы графики на экране. Если я сделаю что-нибудь более менее, тоже напишу урок. Мне понравилось что в уроке под авторством Dimanche13 хорошо и грамотно описаны классы, я после них начал вникать в ооп.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com