Воскресенье, 17 Ноября 2024, 13:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Генератор ландшафта в XNA
E][pertДата: Суббота, 02 Апреля 2011, 14:27 | Сообщение # 1
C#-XNA-Unity
Сейчас нет на сайте
Нужно из частиц(пикселей) автоматически генерировать ландшафта такой как в Pocket Tanks. У кого есть идеи и алгоритмы как это реализовать напишите, а если у кого есть код или пример буду очень рад если поделитесь.

Добавлено (02.04.2011, 14:27)
---------------------------------------------
Ап тему!


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
AngevengelistДата: Суббота, 02 Апреля 2011, 15:01 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Самый легкий способ, генерировать ландшафт, с помощью фракталов.

Сообщение отредактировал Angevengelist - Суббота, 02 Апреля 2011, 15:01
E][pertДата: Вторник, 05 Апреля 2011, 19:14 | Сообщение # 3
C#-XNA-Unity
Сейчас нет на сайте
Уже почти сделал генератор но в результате он настолько грузит компьютер что играть будет не возможно. Angevengelist, с ними будет сложно работать в процессе. Ребят у кого есть идеи поделитесь.

Добавлено (05.04.2011, 19:14)
---------------------------------------------

Code

rand = new Random(rnd);
             int[] arr = new int[Width];
             arr[0] = rand.Next(1, 200);
             for (i = 1; i < Height; i++)
             {
                 arr[i] = arr[i - 1] + (rand.Next(0, 2) == 1 ? 1 : -1);
             }
             int p;
             for (p = 0; p < Width; p++)
             {
                 for (k = 0; k <= arr[p]; k++)
                 {
                     Landslide.Add(new Vector2(p, 600 - k));
                 }
             }  


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
StageДата: Вторник, 05 Апреля 2011, 19:31 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Если вырываешь кусок из контекста, то помечай чему равны переменные, которые используются в коде. Тебе явно указали на то, что конструктор должен быть пустым, чтобы при каждом запуске генератор псевдо-случаныйх чисел выбирал новую последовательность. Вместо
Code
rand = new Random(rnd);

пробуй
Code
rand = new Random();
E][pertДата: Вторник, 05 Апреля 2011, 20:20 | Сообщение # 5
C#-XNA-Unity
Сейчас нет на сайте
Stage, в XNA таким способом не получиться. Я кажется догадываюсь почему игра подвисает.
Quote (E||pert)
Landslide.Add(new Vector2(p, 600 - k));

Нужно список сделать фиксированного размера и при окончание свободных ячеек записывать всё начинаю с 1. Я не знаю как это сделать sad

Добавлено (05.04.2011, 19:51)
---------------------------------------------
Даже не с 1 ячейке а в ячейку где совпадают координаты вектора.

Добавлено (05.04.2011, 20:20)
---------------------------------------------
Список фиксированного размера тоже не получиться нужно просто проверять список на повторение координат и если координаты совпадают просто не заносить их в список.


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
StageДата: Вторник, 05 Апреля 2011, 20:57 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Ну напиши процедуру, которая чекала бы список на наличие элемента.
И почему в XNA таким способом нельзя? smile


Сообщение отредактировал Stage - Вторник, 05 Апреля 2011, 21:00
E][pertДата: Вторник, 05 Апреля 2011, 21:05 | Сообщение # 7
C#-XNA-Unity
Сейчас нет на сайте
Вечерком с блокнотам сяду может что-то получиться.

Добавлено (05.04.2011, 21:05)
---------------------------------------------
Stage, в ХНА в к классам update и draw выполняется обращение в каждую мили секунду. Числа будут генерироваться до бесконечности, а мне нужно чтоб они менялись только при новой игре.


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
StageДата: Вторник, 05 Апреля 2011, 22:14 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Quote
Stage, в ХНА в к классам update и draw выполняется обращение в каждую мили секунду. Числа будут генерироваться до бесконечности, а мне нужно чтоб они менялись только при новой игре.

Ок, тогда заведи int Seed и в Initialize() присвой ей текущее время, милисекунды, например
Code

protected override void Initialize()
{
             Seed = DateTime.Now.Millisecond;
             base.Initialize();
}

В Draw()

Code

rand = new Random(Seed);
noTformaTДата: Вторник, 05 Апреля 2011, 22:33 | Сообщение # 9
Ukrainian independent game developer
Сейчас нет на сайте
Quote (E||pert)
автоматически генерировать ландшафта такой как в Pocket Tanks. У кого есть идеи и алгоритмы как это реализовать напишите, а если у кого есть код или пример буду очень рад если поделитесь.

возьмите фрактал - вот и все, че там думать то?


@noTformaT
Kefir87Дата: Вторник, 05 Апреля 2011, 22:36 | Сообщение # 10
участник
Сейчас нет на сайте
Quote (noTformaT)
возьмите фрактал - вот и все, че там думать то?

В самом начале предлагали. Легко, быстро, эффективно.


Сообщение отредактировал Kefir87 - Среда, 06 Апреля 2011, 01:10
noTformaTДата: Вторник, 05 Апреля 2011, 22:41 | Сообщение # 11
Ukrainian independent game developer
Сейчас нет на сайте
Quote (Kefir87)
В самом начале предлагал. Легко, быстро, эффективно.

упс, не заметил.
Фракталом легче, провести с одной стороны квадрата в другую обычную фрактальную линию, и то что отсекла линия с низу залить тайтлом или чем то другим smile
Ну а про саму фрактальную линию - посмотри как генерируются фрактальные молнии, там линии бывают описывают красивые поверхности 2д. а чет думать про частицы и всякую хрень - это очень трудно smile


@noTformaT
E][pertДата: Среда, 06 Апреля 2011, 15:25 | Сообщение # 12
C#-XNA-Unity
Сейчас нет на сайте
К сожалению я не умею работать с фракталами и мне сложно будет в процессе игры взаимодействовать с ними. У меня вот возник такой вопрос как проверить есть ли координаты Vector2(x,y) в списке и если их там нет то добавить их туда.

Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
StageДата: Среда, 06 Апреля 2011, 17:17 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Как за 3 месяца изучения языка ты не можешь осилить элементарную функцию проверки элемента в списке? Еще раз повторяю, замораживай свой проект, иначе все что он будет представлять из себя - это кривослепленный копипаст чужих кодов. Какой смысл создавать игру без наличия базы в голове? Бесполезное и неблагодарное занятие.

Сообщение отредактировал Stage - Среда, 06 Апреля 2011, 17:18
E][pertДата: Среда, 06 Апреля 2011, 17:25 | Сообщение # 14
C#-XNA-Unity
Сейчас нет на сайте
Stage, проект я не закрою, сложно мне с Delphi на C# переходить.

Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.


Сообщение отредактировал E][pert - Среда, 06 Апреля 2011, 17:27
StageДата: Среда, 06 Апреля 2011, 17:28 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Алгоритм будет выглядеть одинаково на любом императивном языке, так что слив не засчитан.
E][pertДата: Среда, 06 Апреля 2011, 19:01 | Сообщение # 16
C#-XNA-Unity
Сейчас нет на сайте
Stage, вот этого уже не нужно. Я никого не заставляю помочь и спорить тоже не буду.

Добавлено (06.04.2011, 19:01)
---------------------------------------------

Code

                     if (!Landslide.Contains(new Vector2(p, 600 - k)))
                     {
                         Landslide.Add(new Vector2(p, 600 - k));
                     }

Вот так пытаюсь найти игра компилируется но сразу зависает.


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг