Генератор ландшафта в 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); пробуй
|
|
| |
E][pert | Дата: Вторник, 05 Апреля 2011, 20:20 | Сообщение # 5 |
C#-XNA-Unity
Сейчас нет на сайте
| Stage, в XNA таким способом не получиться. Я кажется догадываюсь почему игра подвисает. Quote (E||pert) Landslide.Add(new Vector2(p, 600 - k)); Нужно список сделать фиксированного размера и при окончание свободных ячеек записывать всё начинаю с 1. Я не знаю как это сделать Добавлено (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 таким способом нельзя?
Сообщение отредактировал 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) В самом начале предлагал. Легко, быстро, эффективно. упс, не заметил. Фракталом легче, провести с одной стороны квадрата в другую обычную фрактальную линию, и то что отсекла линия с низу залить тайтлом или чем то другим Ну а про саму фрактальную линию - посмотри как генерируются фрактальные молнии, там линии бывают описывают красивые поверхности 2д. а чет думать про частицы и всякую хрень - это очень трудно
@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.
|
|
| |