forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Несколько вопросов по програмированию в среде 2d (http://forum.boolean.name/showthread.php?t=13406)

gunjah 25.09.2010 18:28

Несколько вопросов по програмированию в среде 2d
 
Вложений: 1
Начал писать свою игру, в жанре RPG с видом в верхней изометрии. То что уже сделано присоединяю к теме в файле .rar. Подскажите мне несколько деталей:

1: В примере есть карта, игрок и дерево на карте. Про то как делать колизии обьектов я знаю, но не могу просто придумать как сделать одну вещь. Надо чтобы игрок проходил то за деревом, то перед деревом, в зависимости находится он спереди этого обьекта или сзади. Но по скольку в Блице выведение всего на экран основанно на слоях то я не пойму как это реализовать, ведь чтобы добится данного эффекта надо динамически менять местами слоя? Смутно представляю что надо использовать инструкцию If? но как в данном моменте, не знаю...

2: Где я могу скачать детальные анимимаги персонажей, врагов, с анимацией в 8 направлениях? Искал искал, и нахожу одни не очень детальные картинки или картинки с 4 направлениями... Пока что над проектом работаю один, графика нет. Если есть ссылки на библиотеки других изображений (желательно в изометрии) - тоже кидайте. Имею в виду всякие там кустики, заборы, домики.

3: Пишу сейчас в Блиц3д - но прочитал что там какие то тормоза с 2д графикой, как с этим дела по подробней обстоят? Читал так же что в БлицМакс не так тормозит, это правда? (сам я тормозов не заметил)

4: Игра в жанре RPG, hack&slash - на подобие diablo 2, естественно со своими фишками, много чего уже продумано. Но для начала хочется создать 1 карту со всеми важными деталями: 1 NPC, игрок, несколько врагов, рандомная система дропа, GUI. Язык Блиц вообще для этого подходит? Или в основном платформеры?

Reks888 25.09.2010 18:39

Ответ: Несколько вопросов по програмированию в среде 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 тоже.

Dream 25.09.2010 18:54

Ответ: Несколько вопросов по програмированию в среде 2d
 
ахххахаха, текстурка дерева нарисованая на текстуре равной размере карты. ахаха... это чтото новенькое
Цитата:

(сам я тормозов не заметил)
а чему там тормозить? трем текстурам?

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

gunjah 25.09.2010 20:08

Ответ: Несколько вопросов по програмированию в среде 2d
 
Цитата:

ахххахаха, текстурка дерева нарисованая на текстуре равной размере карты. ахаха... это чтото новенькое
ну какбе там 1 дерево просто для теста - это будет текстура "верхнего слоя" - тоесть деревья, дома, горы и т.д. Тоесть все обьекты "выше земли" и в зависимости от того должен быть игрок за ними или перед ними она будет менятся местами с текстурой игрока в очереди вырисовки...

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

Цитата:

1)Если игрок ближе к камере чем дерево, мы сначала рендерим игрока, потом рендерим дерево. Иначе рендерим дерево, потом игрока.
Я так понял что под камерой ты имеешь в виду центр экрана, в моем случае? Но тогда все обьекты "Верхнего слоя" должны быть не на одной текстуре а на разных и у каждого такого обьекта должны будут высчитыватся точные координаты в каждом цыкле программы... Не будет ли нагрузка на процессор слишком велика в данном случае (думаю что на одной карте у меня может быть до нескольких тысяч обьектов)

Спасибо сейчас проверим.

Dream 25.09.2010 21:02

Ответ: Несколько вопросов по програмированию в среде 2d
 
xD обьект перекрывает игрока, координаты игрока по Y меньше чем нижняя грань объекта. это самое елементарное.
Цитата:

Не будет ли нагрузка на процессор слишком велика в данном случае (думаю что на одной карте у меня может быть до нескольких тысяч обьектов)
ты что собрался 9000+ обьектов рисовать одновременно на экране?
Цитата:

Но тогда все обьекты "Верхнего слоя" должны быть не на одной текстуре а на разных и у каждого такого обьекта должны будут высчитыватся точные координаты в каждом цыкле программы.
ну какбэ об этом я и говорил в своём первом посте.в хорошо детализированой сцене на экране будет максимум 100 обьектов. расчёт их координа (простая опрерация сложения+ может немножко умножения) ровно никак не отражатся на производительности.
Цитата:

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

Думайте товарисчъ, больше думайте

gunjah 25.09.2010 21:33

Ответ: Несколько вопросов по програмированию в среде 2d
 
Вложений: 1
Помогите подогнать код под BlitzMax - пользуясь http://johnk.3dn.ru/publ/1-1-0-17 и http://www.blitzbasic.com попробовал, но прога выполняется с ошибкой и я не до конца понял как делается маска конкретного картинки на пример и как надо записывать FlushMem - как не пытался, компилятор выдает ошибку...

В приложении то что я сделал из старого кода для БлицМакс

Dream 25.09.2010 21:55

Ответ: Несколько вопросов по програмированию в среде 2d
 
ты читал свой код?

gunjah 25.09.2010 21:57

Ответ: Несколько вопросов по програмированию в среде 2d
 
Да читал, вываливает Exception_Acces_Violation

Dream 25.09.2010 21:58

Ответ: Несколько вопросов по програмированию в среде 2d
 
ты уверен что читал его? ты вкурсе как в бмаксе обьявляются переменные? может ты читал чейто чужой код?
Код:

player:char = New player
mouse:controller = New mouse
background:bcg = New background
background_trees:tree = New background_trees

ничего не говорит?

gunjah 25.09.2010 22:04

Ответ: Несколько вопросов по програмированию в среде 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


Dream 25.09.2010 22:05

Ответ: Несколько вопросов по програмированию в среде 2d
 
прочитай ещё раз.

gunjah 25.09.2010 22:09

Ответ: Несколько вопросов по програмированию в среде 2d
 
Оп, понял, спасибо. А что насчет FlushMem, где и как ее правильно вызывать?

И как добавить маску к конкретному обьекту? В моем случае, к аним имаге героя? В типе прописывать?

Dream 25.09.2010 22:16

Ответ: Несколько вопросов по програмированию в среде 2d
 
ну во первых GCCollect().

GCCollect() - освобождения обьектов, на которые не указывают ниодна ссылка. когда её использывать - решать тебе

gunjah 25.09.2010 23:21

Ответ: Несколько вопросов по програмированию в среде 2d
 
А маска конкретного объекта?

Reks888 25.09.2010 23:49

Ответ: Несколько вопросов по програмированию в среде 2d
 
Если под маской ты имеешь ввиду прозрачность, то сохраняй свои картинки сразу в пнг вместе со всей прозрачностью.
Если имеется ввиду выделение области изображения - юзай GrabImage, и да поможет тебе справка


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot