Четверг, 28 Марта 2024, 12:14

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Программирование » C/C++ » [Урок]Генератор карт для платформера
[Урок]Генератор карт для платформера
PolarBearДата: Понедельник, 18 Августа 2014, 21:10 | Сообщение # 21
был не раз
Сейчас нет на сайте
Найти и нейтрализовать утечки памяти - тоже часть домашнего задания? Процессор неплохо так жгёт, причём в нон-стоп режиме. Работает, да.
SaiteiДата: Понедельник, 18 Августа 2014, 21:13 | Сообщение # 22
старожил
Сейчас нет на сайте
Цитата PolarBear ()
Найти и нейтрализовать утечки памяти - тоже часть домашнего задания? Процессор неплохо так жгёт, причём в нон-стоп режиме. Работает, да.

Тсс... Не пали контору : )
Есть небольшой секрет. Сделай Sleep(1); в главном цикле. Это всего лишь 1 мс, но она значительно уменьшит нагрузку.
P.S. Не забудь подключить Windows.h
vasua99Дата: Вторник, 19 Августа 2014, 13:06 | Сообщение # 23
GNU follower
Сейчас нет на сайте
Цитата Saitei ()
Есть небольшой секрет. Сделай Sleep(1); в главном цикле. Это всего лишь 1 мс, но она значительно уменьшит нагрузку.

Да можно даже и по 2 мс. А если фпс начнет проседать ниже 60 кадров, то делать по 1 мс) dry


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
XakepДата: Пятница, 22 Августа 2014, 15:15 | Сообщение # 24
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата Saitei ()
Я понятия не имею, как генерировать карты с помощью шумов Перлина. Поэтому если кто-то знает как такое сделать - пожалуйста, поделитесь опытом.

шум-перлина - это по сути просто функция, такая же как и синусоида и косинусоида, параболоида итд. А по функции уже построить мир не такая уж и проблема я думаю, главное разобраться в самом шуме перлина, на хабре есть отличная статья: link
arlaidДата: Воскресенье, 24 Августа 2014, 12:31 | Сообщение # 25
частый гость
Сейчас нет на сайте
Отличный урок! Все хочу начать заниматься C++, вот и вдохновился этой статьей посмотрев на код smile

Сообщение отредактировал arlaid - Воскресенье, 24 Августа 2014, 12:31
goldsphereДата: Воскресенье, 24 Августа 2014, 13:16 | Сообщение # 26
заслуженный участник
Сейчас нет на сайте
arlaid, хотеть мало, надо заниматься

FinderX - Android Аркада
vladkomarrДата: Воскресенье, 05 Октября 2014, 01:44 | Сообщение # 27
был не раз
Сейчас нет на сайте
Я только не пойму. У нас выходит реализуется только сама карта, но для того чтобы на нее установить персонажа и он двигался - она неюзабельна.
Я сначала подумал, что мы будем при каждом перемещении на координату Х смотреть какая самая высокая точка У(Х) (надеюсь вы поняли, о чем я:))
А т.к. у нас не матрица, а вектор блоков, я немного в растерянности от того, как реализовать перемещение какого либо объекта.
Автор, у вас есть идеи?
goldsphereДата: Воскресенье, 05 Октября 2014, 06:24 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
vladkomarr, название урока генератор карт,про каких-то персонажей ни слова. Сами додумывайте.

FinderX - Android Аркада
SaiteiДата: Воскресенье, 05 Октября 2014, 11:47 | Сообщение # 29
старожил
Сейчас нет на сайте
Цитата vladkomarr ()
Я только не пойму. У нас выходит реализуется только сама карта, но для того чтобы на нее установить персонажа и он двигался - она неюзабельна.
Я сначала подумал, что мы будем при каждом перемещении на координату Х смотреть какая самая высокая точка У(Х) (надеюсь вы поняли, о чем я:))
А т.к. у нас не матрица, а вектор блоков, я немного в растерянности от того, как реализовать перемещение какого либо объекта.
Автор, у вас есть идеи?

Цитата goldsphere ()
vladkomarr, название урока генератор карт,про каких-то персонажей ни слова. Сами додумывайте.

Как и сказал goldsphere, я лишь показал один из немногих подходов генерации карт. Нет смысла в написании полноценного платформера - тогда у читателей атрофируются мозги. Программист должен решать проблемы самостоятельно.
Вектор я использовал, т.к. не хочу хранить в памяти пустые блоки. Для удобства можно их заменить двухмерным массивом указателей, но я в этом не вижу смысла.
Для того, чтобы ориентироваться в мире, решите одну простую задачу: проверка той или иной ячейки. Если ячейка пуста, то вернётся -1, в противном же случае - код блока. В случае с векторами надо лишь их отсортировать и юзнуть поиск.
Если это сложно или неоправданно с вашей точки зрения, то используйте статический двухмерный массив (храните все блоки в памяти, включая пустые). Алгоритм от этого мало чем изменится.

Добавлено (05.10.2014, 11:47)
---------------------------------------------

Цитата vladkomarr ()
как реализовать перемещение какого либо объекта.
Автор, у вас есть идеи?

Крутите подобие физ. движка. Гравитацию, проверку колизий и т.п.
vladkomarrДата: Воскресенье, 05 Октября 2014, 13:38 | Сообщение # 30
был не раз
Сейчас нет на сайте
Cпасибо.
Мне почему-то казалось, что каждый такой поиск по вектору требует больших вычислительных нагрузок чем хранение двумерной матрицы, пусть даже и с пустыми элементами.
В любом случае, спасибо за урок, было очень познавательно!
SaiteiДата: Воскресенье, 05 Октября 2014, 14:12 | Сообщение # 31
старожил
Сейчас нет на сайте
Цитата vladkomarr ()
Cпасибо.
Мне почему-то казалось, что каждый такой поиск по вектору требует больших вычислительных нагрузок чем хранение двумерной матрицы, пусть даже и с пустыми элементами.
В любом случае, спасибо за урок, было очень познавательно!

Если вектор большой, то нужно платить за частое удаление элементов и добавление новых. Но тут-то фигня =)
vladkomarrДата: Воскресенье, 05 Октября 2014, 15:44 | Сообщение # 32
был не раз
Сейчас нет на сайте
Что вы думаете об идее хранения карты в виде массива символов, скажем, 20 на 15(ячейка 32пиксела)? В каждой ячейке либо значение NULL, либо G(rass), L(and), F(lower). Это нормальный подход при создании платформера?
Не то чтобы вопрос по изложенному материалу, просто интересуюсь, какие подводные камни в таком подходе.
Тем более если сделать это в виде двумерного вектора, если мы заранее не знаем размеров карт. Вот как я закрутил o_0
С другой стороны, получение информации об определенном блоке х*у будет гораздо проще.
SaiteiДата: Воскресенье, 05 Октября 2014, 17:43 | Сообщение # 33
старожил
Сейчас нет на сайте
Цитата vladkomarr ()
Что вы думаете об идее хранения карты в виде массива символов, скажем, 20 на 15(ячейка 32пиксела)? В каждой ячейке либо значение NULL, либо G(rass), L(and), F(lower). Это нормальный подход при создании платформера?
Не то чтобы вопрос по изложенному материалу, просто интересуюсь, какие подводные камни в таком подходе.
Тем более если сделать это в виде двумерного вектора, если мы заранее не знаем размеров карт. Вот как я закрутил o_0
С другой стороны, получение информации об определенном блоке х*у будет гораздо проще.

Имеет место быть. Но лучше буквы не запоминай, проще так:
Цитата
enum
{
LAND, GRASS, FLOWERS, ...,
};

Добавлено (05.10.2014, 17:43)
---------------------------------------------

Цитата vladkomarr ()
виде двумерного вектора

Вектор нужен там, где нужна динамика.
vladkomarrДата: Воскресенье, 05 Октября 2014, 19:27 | Сообщение # 34
был не раз
Сейчас нет на сайте
Мне хочется сделать некое подобие террарии. Так что динамика скорее будет присутствовать. Я прав?
Или вы имеете в виду под словом "динамика" тот случай, когда нам заранее неизвестно количество клеток на карте? Как раз тот случай.
Форум игроделов » Программирование » C/C++ » [Урок]Генератор карт для платформера
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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