В отличии от многих других игроделов пытающихся сделать свой майн, никто не начинал с генерации, хоть она и является самой главной! И пускай ломают головы как мне это получилось, наверное я избранный. И не стоит просить исходный код типа, никому не дам. Моя интеллектуальная собственность.
Не, ну правда, вот откуда столько гордости? Если у тебя генерируется только земля и воздух, то это не генерация, это её далёкая альфа-версия. Как же распределение минералов, пещеры, пустоты, воды? Продолжай, у тебя еще много работы.
ну и написал бы ещё пару фраз о том, чем интересна твоя генерация. а то народ может не оценить задумки.
я обнаружил два серьёзных недостатка:
1. мы находимся в узком "стакане", ограниченном с трёх сторон. слева ничего нет. снизу мир уже ограничен и очень близко. сверху тоже мир ограничен, во всяком случае, в тех вариантах, что генерились у меня, я ни разу не смог забраться выше одного экрана. основная масса блоков- в нижней половине экрана. выше- крайне редко. самый верх практически всегда пуст.
2. я прошёлся подальше направо(иногда пробивая по пути блоки), а потом решил вернуться на лево. и пошли лаги. если очень долго идти вправо то тоже начинает лагать. вообще, какая бы замечательная ни была генерация, если мы работаем с "бесконечным" миром, надо, в первую очередь, позаботиться о том, чтобы не лагало. иначе никто играть в твой большой мир не сможет.
теперь о хорошем:
я понял так, что смысл задумки в том, что имитируется генерация невероятно большого мира, и это происходит быстро? это интересно.
суть замысла, видимо, в том, что те участки мира, которые игрок впервые видит, генерятся именно в тот момент, когда игрок их впервые увидел. хорошая идея. осталось только качественно её реализовать.
вообще говоря, в "бесконечном" мире скорость работы не должна зависеть от размеров мира. отсюда вывод: должна обсчитываться только область вокруг игрока.
если в сцирре поддерживаются указатели, то создаваемый мир можно хранить в двумерной двусвязной сетке (это как двусвязный список, только + ещё одно измерение).
если в сцирре нет указателей, то можно хранить мир в максимально большом массиве.
в обоих этих вариантах можно генерить такой мир, в котором можно двигаться на все четыре стороны. генерёжка "на лету". игрок всегда находится в одной и той же точке экрана, двигается только мир относительно игрока и двигаются координаты игрока по массиву или указатель по сетке.
каждый раз, зная координаты игрока, перерисовываем только то, что видит игрок и, тем самым, затираем предыдущее изображение.
в двумерном массиве очень легко вычислить, какие ячейки куда отображать.
в сетке указателей немного сложнее. могут быть разные варианты решений. можно, например, от указателя на ячейку с игроком отрисовывать всё по спирали наружу.
в той программе, которую я скачал здесь сейчас, видимо, создаются всё новые и новые объекты стен. и в конце-концов получаются лаги. в том варианте, что предложил я, вообще не нужно объектов. ну, или если в сцирре картинки рисуются на фон объектами, то нужен всего один объект. как-то так. сразу скажу- сцирру я не видел и не запускал ни разу и не имею о ней ни малейшего представления.
Поддерживаю идею про двумерный массив, в своем проекте я так и делаю. Сначало создается запись(типо понтовый массив в дельфе) с параметрами и ссылками на текстуру, а потом в зависимости от того где игрок, рисуется определенный радиус блоков, а остальные стираются. В 2д это значительно экономит память т.к. дальность зрения в 2д в сотни раз меньше чем в 3д. Все что нужно расчитать генерацию и забить в массив(массив хорошо но записи и классы лучше). В майне так же, сначало генерация, а потом уже запуск в игру.
Кстати, а почему бы тебе не сделать вообще рандомный мир? Прошел 5 метров, все что ты больше не видишь генерируется заного и вернувлись назад на метров а там уже что то другое О_о. Генерация мира на ходу короч) Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Прошел 5 метров, все что ты больше не видишь генерируется заного и вернувлись назад на метров а там уже что то другое О_о. Генерация мира на ходу короч)
Прошел 5 метров, все что ты больше не видишь генерируется заного и вернувлись назад на метров а там уже что то другое О_о. Генерация мира на ходу короч)
А если игрок соорудил какую-то конструкцию и отошел от нее? Не очень приятные эмоции вызовет, когда игрок вернется в то место. Бред, я считаю.
Ну, тут все просто. "Бред" или "не бред"- решит сама игра. Если в игре можно и нужно строить и возвращаться- бред. А, если, например, нужно убегать от чего-то и возвращаться не нужно- идеально подходит.
OMG!! Самое забавное то что даже самый навороченный клон не может позаимствовать у майнкрафта одной интересной фичи: over9000 модов! А вот майнкрафт 2D это полный бред, ну зачем? Ведь кроме геймплея игру оценивают и по графике, одно дело когда в 3D это объемные кубики, и совсем другое будет в 2D с убогими квадратиками. Как оно будет выглядеть на фоне Cortex Command или той же Террарии?
Печалька, провел оптимизацию, дальше 10000 виснет при обратном ходе. вперед то норм а автоматом создать новый layout никак, по крайней мере без питона.
А вот майнкрафт 2D это полный бред, ну зачем? Ведь кроме геймплея игру оценивают и по графике, одно дело когда в 3D это объемные кубики, и совсем другое будет в 2D с убогими квадратиками. Как оно будет выглядеть на фоне Cortex Command или той же Террарии?
Поддерживаю яб тоже не стал играть в 2д майн.
Цитата (Gammeza)
Печалька, провел оптимизацию, дальше 10000 виснет при обратном ходе. вперед то норм а автоматом создать новый layout никак, по крайней мере без питона.
Забей ты на эти движки) На си или на дельфи это сделать проще простого, ну разве что с физикой придется немножечко повозиться) Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Хотя бы деревья добавь, незнаю, примитивную систему крафта, инвентарь. И ещё, уменьши размер квадратов, а то слишком огромные Мои проекты: [2D] Rectangle world 123_6 (Доступно в App Store)
Я всегда думал что Minecraft 2D это Terraria (кстати он мне нравится больше чем Minecraft) А проект автора темы как бы выразиться по лучше ... недоразвит. Рано в паблик пошёл.