|
2D-программирование Вопросы, касающиеся двумерного программирования |
25.09.2010, 18:28
|
#1
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Несколько вопросов по програмированию в среде 2d
Начал писать свою игру, в жанре RPG с видом в верхней изометрии. То что уже сделано присоединяю к теме в файле .rar. Подскажите мне несколько деталей:
1: В примере есть карта, игрок и дерево на карте. Про то как делать колизии обьектов я знаю, но не могу просто придумать как сделать одну вещь. Надо чтобы игрок проходил то за деревом, то перед деревом, в зависимости находится он спереди этого обьекта или сзади. Но по скольку в Блице выведение всего на экран основанно на слоях то я не пойму как это реализовать, ведь чтобы добится данного эффекта надо динамически менять местами слоя? Смутно представляю что надо использовать инструкцию If? но как в данном моменте, не знаю...
2: Где я могу скачать детальные анимимаги персонажей, врагов, с анимацией в 8 направлениях? Искал искал, и нахожу одни не очень детальные картинки или картинки с 4 направлениями... Пока что над проектом работаю один, графика нет. Если есть ссылки на библиотеки других изображений (желательно в изометрии) - тоже кидайте. Имею в виду всякие там кустики, заборы, домики.
3: Пишу сейчас в Блиц3д - но прочитал что там какие то тормоза с 2д графикой, как с этим дела по подробней обстоят? Читал так же что в БлицМакс не так тормозит, это правда? (сам я тормозов не заметил)
4: Игра в жанре RPG, hack&slash - на подобие diablo 2, естественно со своими фишками, много чего уже продумано. Но для начала хочется создать 1 карту со всеми важными деталями: 1 NPC, игрок, несколько врагов, рандомная система дропа, GUI. Язык Блиц вообще для этого подходит? Или в основном платформеры?
|
(Offline)
|
|
25.09.2010, 18:39
|
#2
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
1)Если игрок ближе к камере чем дерево, мы сначала рендерим игрока, потом рендерим дерево. Иначе рендерим дерево, потом игрока.
2)Помойки ресурсов http://wiki.yoyogames.com/index.php/...s/Free_Sprites
http://www.gamedev.net/community/for...opic_id=272386
3)Блицмакс кроме того что в десяток раз быстрее в плане 2д графики, он ещё и в десяток раз быстрее просчитывает логику
4)Блиц3д(как и Блицмакс) годится для создания чего угодно. И для изометрических Open-world RPG тоже.
|
(Offline)
|
|
25.09.2010, 18:54
|
#3
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
ахххахаха, текстурка дерева нарисованая на текстуре равной размере карты. ахаха... это чтото новенькое
(сам я тормозов не заметил)
|
а чему там тормозить? трем текстурам?
наверно напишу ещё немножко. По поводу колизий.
Создаёт тип для обьектов. который будет содержать его позицию, размер, текстуру, которую рисовать.
При передвижении игрока проверяем сначала, не соприкаснётся ли он с каким либо из обьктов из нашего списка. если соприкосается тогда ограничиваем движение в сторону соприкасания.
текстура обькта должна содержать только сам обьект. а не куеву тучу пустого места.
По поводу отрисовки на заднем или на переднем плане. ну первое что приходит в голову - сортировать обьекты взависимости от позиции в отдельный список. и потом отрисовывать этот список
|
(Offline)
|
|
25.09.2010, 20:08
|
#4
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
ахххахаха, текстурка дерева нарисованая на текстуре равной размере карты. ахаха... это чтото новенькое
|
ну какбе там 1 дерево просто для теста - это будет текстура "верхнего слоя" - тоесть деревья, дома, горы и т.д. Тоесть все обьекты "выше земли" и в зависимости от того должен быть игрок за ними или перед ними она будет менятся местами с текстурой игрока в очереди вырисовки...
Если ты заметил у меня игрок не двигается - двигается вся карта а игрок стоит на месте, включается только его анимация, поэтому размер текстуры "верхнего плана" должен быть такимже как и размер земли, чтобы избежать излишней нагрузки на процессор при вычеслении точных позиций всех обьектов... Мне так кажется во всяком случае...
1)Если игрок ближе к камере чем дерево, мы сначала рендерим игрока, потом рендерим дерево. Иначе рендерим дерево, потом игрока.
|
Я так понял что под камерой ты имеешь в виду центр экрана, в моем случае? Но тогда все обьекты "Верхнего слоя" должны быть не на одной текстуре а на разных и у каждого такого обьекта должны будут высчитыватся точные координаты в каждом цыкле программы... Не будет ли нагрузка на процессор слишком велика в данном случае (думаю что на одной карте у меня может быть до нескольких тысяч обьектов)
Спасибо сейчас проверим.
|
(Offline)
|
|
25.09.2010, 21:02
|
#5
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
xD обьект перекрывает игрока, координаты игрока по Y меньше чем нижняя грань объекта. это самое елементарное.
Не будет ли нагрузка на процессор слишком велика в данном случае (думаю что на одной карте у меня может быть до нескольких тысяч обьектов)
|
ты что собрался 9000+ обьектов рисовать одновременно на экране?
Но тогда все обьекты "Верхнего слоя" должны быть не на одной текстуре а на разных и у каждого такого обьекта должны будут высчитыватся точные координаты в каждом цыкле программы.
|
ну какбэ об этом я и говорил в своём первом посте.в хорошо детализированой сцене на экране будет максимум 100 обьектов. расчёт их координа (простая опрерация сложения+ может немножко умножения) ровно никак не отражатся на производительности.
она будет менятся местами с текстурой игрока в очереди вырисовки...
|
ага, а если дерево находится рядом с горой, и игрок решил зайти за дерево, то что будет? игрок будет под горой чтоли?
Думайте товарисчъ, больше думайте
|
(Offline)
|
|
25.09.2010, 21:33
|
#6
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
Помогите подогнать код под BlitzMax - пользуясь http://johnk.3dn.ru/publ/1-1-0-17 и http://www.blitzbasic.com попробовал, но прога выполняется с ошибкой и я не до конца понял как делается маска конкретного картинки на пример и как надо записывать FlushMem - как не пытался, компилятор выдает ошибку...
В приложении то что я сделал из старого кода для БлицМакс
|
(Offline)
|
|
25.09.2010, 21:55
|
#7
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
ты читал свой код?
|
(Offline)
|
|
25.09.2010, 21:57
|
#8
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
Да читал, вываливает Exception_Acces_Violation
|
(Offline)
|
|
25.09.2010, 21:58
|
#9
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
ты уверен что читал его? ты вкурсе как в бмаксе обьявляются переменные? может ты читал чейто чужой код?
player:char = New player
mouse:controller = New mouse
background:bcg = New background
background_trees:tree = New background_trees
ничего не говорит?
|
(Offline)
|
|
25.09.2010, 22:04
|
#10
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
на http://johnk.3dn.ru/publ/1-1-0-17 написано:
Переменные типов теперь декларируются с использованием символа ":" вместо старого ".":
' Старая версия:
p.Player = New Player
' Новая версия:
p:Player = New Player
Доступ к полям типов теперь осуществляется за счет символа "." вместо старого "\" :
Type Oink
Field x
End Type
o:Oink = New Oink
o.x = 1
Print o.x
|
(Offline)
|
|
25.09.2010, 22:05
|
#11
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
прочитай ещё раз.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.09.2010, 22:09
|
#12
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
Оп, понял, спасибо. А что насчет FlushMem, где и как ее правильно вызывать?
И как добавить маску к конкретному обьекту? В моем случае, к аним имаге героя? В типе прописывать?
|
(Offline)
|
|
25.09.2010, 22:16
|
#13
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
ну во первых GCCollect().
GCCollect() - освобождения обьектов, на которые не указывают ниодна ссылка. когда её использывать - решать тебе
|
(Offline)
|
|
25.09.2010, 23:21
|
#14
|
AnyKey`щик
Регистрация: 25.09.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
А маска конкретного объекта?
|
(Offline)
|
|
25.09.2010, 23:49
|
#15
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Несколько вопросов по програмированию в среде 2d
Если под маской ты имеешь ввиду прозрачность, то сохраняй свои картинки сразу в пнг вместе со всей прозрачностью.
Если имеется ввиду выделение области изображения - юзай GrabImage, и да поможет тебе справка
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:55.
|