|
23.04.2012, 21:36
|
#271
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Немного математики для наглядности размеров мира. Пока что, координаты чанков - integer, значит крайние число - 2,147,483,647. Один чанк - 512 пикселей. Скорость игрока - 2 пикселя за тик, максимальное фпс - 60, значит скорость игрока - 120 пикселей в секунду. (2,147,483,647*512)/120 - время за которое игрок пройдёт до конечного чанка. А это - 290 лет, если я не ошибся. Так что поверьте, это сравнимо с бесконечностью.
|
(Offline)
|
|
23.04.2012, 21:37
|
#272
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Vivo
Припустим у тебя есть переменная PlayerRange -кеп сообщает что это обзор. Значит у тебя при PlayerRange=2 будет ситуация такова:
Перс стоит на чанке. Это 0+1 чанк на котором мы стоим
Видит он перед собой еще 2 чанка Это 0+1+PlayerRange
Видит он еще и за собой 2 чанка. Это 0+1+PlayerRange+PlayerRange
Соответственно общий размер локи будет PlayerRange*2+1
Делаешь массив Dim Chunks(PlayerRange*2,PlayerRange*2) - тут не делаешь +1 ибо нумерация массива начинается с нуля. Типо при PlayerRange*2+1 у тебя будет не 5 рядков и строк а 6 рядков и строк. А тут последняя нафик не нужна.
Теперь ахтунк!
Учишь это Связанные списки в Blitz3D
И учишся делать так, что б в массиве Chunks(PlayerRange*2,PlayerRange*2)
Каждая ячейка отвечала ТОЛЬКО АДРЕСУ на массив типов с инфой уже про каждый кубик.
Потом при передвижении игрока с одного чанка на второй программируешь сдвиг рядков(или столбцов) массива содержащего АДРЕСА на другие массивы с инфой про кубики. А освободившийся рядок(или столбец) заполняешь новой инфой с файлов и не мгновенно, а по кусочку за 1 проход цикла. (звучит это весьма просто, но на собственном опыте говорю - гемора выше крыши. Я с этим до конца не разобравшись забил болт и отложил эту цель на момент релиза игры.)
Вполне вероятно что ты меня плохо понимаешь, мой тебе совет, откажись от неограниченного мира, сделай хоть ограниченный но качественно. А потом думай над тем как делать его "бесконечным". Даже Нотч первые демки майнкрафта показывал с ограниченной локой(где то читал).
|
(Offline)
|
|
23.04.2012, 21:40
|
#273
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Немного математики для наглядности размеров мира. Пока что, координаты чанков - integer, значит крайние число - 2,147,483,647. Один чанк - 512 пикселей. Скорость игрока - 2 пикселя за тик, максимальное фпс - 60, значит скорость игрока - 120 пикселей в секунду. (2,147,483,647*512)/120 - время за которое игрок пройдёт до конечного чанка. А это - 290 лет, если я не ошибся. Так что поверьте, это сравнимо с бесконечностью.
|
Сделай так, что б игрок открывший твою игру пробежал дольше 5 минут. А тогда парся о большем...
|
(Offline)
|
|
23.04.2012, 21:45
|
#274
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Vivo
Все эти проблемы к данной теме не относятся. Это вам не майнкрафт, который 3д, и в котором есть дальность обзора, например. Тут 2д (а может и 3д, это неважно) игра, с зафиксированным видом сверху. Так-что в любой момент времени максимум может понадобится отображать 3 чанка. О какой бесконечности речь? Короче, всё это реализуемо с помощью массивов и всю эту мизерную карту можно и нужно засунуть в 1 файл. Учите матчасть ТС.
|
(Offline)
|
|
23.04.2012, 21:52
|
#275
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Так я и отображаю только 3 чанка.
Кстати, у меня есть версия игры с массивами, карту можно пробежать за 44 часа, по моим расчётам. Вообще без чанков и всего такого.
Можете соизволить объяснить в чём файлы так ужасны? Чего все на них так набросились?
Nite
Видимо мы вообще говорим о разных вещах, я не понимаю о какой мизерной карте идёт речь. Можешь подробно объяснить, как с твоей точки зрения всё это выглядит?
|
(Offline)
|
|
23.04.2012, 21:54
|
#276
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Vivo
Сообщение от NitE
Учите матчасть ТС.
|
Можно толчок в сторону той мат части о которой идет речь?
|
(Offline)
|
|
23.04.2012, 21:56
|
#277
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Да-да, и я не откажусь. На словах у Nite так всё просто звучит, аж интересно.
|
(Offline)
|
|
23.04.2012, 23:19
|
#278
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Vivo
Hulk-DS, Да, конечно. Основы программирования и тригонометрии, а так-же работа с векторами. Всё что я пытаюсь втолковать топикстартеру - это самые простые и очевидные вещи. Я не уверен что их можно будет так-же легко применить к такой модели мира в 3д, со свободным обзором.
Nikich, Тебе нужно, чтобы у игрока была земля под ногами, ну и например заранее ещё 8 чанков во все стороны от игрока (если предположить что 1 чанк у тебя по размерам как 1 экран). Итого у тебя в начале получается 9 чанков. А ты говоришь про какието 2 миллиарда . Потом, если игрок куда-то побежаль, начинаешь постепенно добавлять чанки, генерируя их в зависимости от ландшафта окружающих чанков. Вот собственно и вся логика. Если игрок бежит в одну сторону уже 2-3 часа, например, начинаешь с другого конца (тоест с позиции откуда игрок стартовал) удалять чанки, а потом, если когото приспичит ещё и назад прогулятся, то опять-же генерируешь новые чанки.
А то, что игровую карту нужно хранить в одном файле, а не в кучке маленьких - это вообще само собой разумеется. Это и по быстродействию и по удобству и всем прочим параметрам намного удобнее и круче.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.04.2012, 23:40
|
#279
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
В одном файле ты всё не удержишь. Представь, когда игрок будет на чанке с координатами -25,25, то ты предлагаешь пробежаться по всему файлу дабы найти этот чанк?
Конечно, сразу полезу мысли, о том, что ведь можно это дело SeekFile'ом красиво обыграть, но так тоже не выйдет, так как нельзя определить в каком месте находится этот чанк( вдруг он был сгенерирован в самом начале игры, или когда уже было открыто 1000 чанков ). Так что на файлы разбивать точно придётся.
Хорошо, представь что у тебя есть эти 9 чанков. Как я понял, хранить ты их хочешь в каком-то отдельном файле. Так а смысл тогда использовать массив? Что я работаю напрямую с файлами, что по твоему способу я буду работать с файлами чтобы заполнить этот массив, а потом уже из массива брать информация о блоках. Где выгода?
|
(Offline)
|
|
24.04.2012, 00:23
|
#280
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Конечно, сразу полезу мысли, о том, что ведь можно это дело SeekFile'ом красиво обыграть, но так тоже не выйдет, так как нельзя определить в каком месте находится этот чанк( вдруг он был сгенерирован в самом начале игры, или когда уже было открыто 1000 чанков ). Так что на файлы разбивать точно придётся.
|
Я думаю что именно в этом месте и нужно подтягивать мат часть. (п.с. Сам не пробовал так сделать...)
Кроме того у Нотча не лежит в папке пару тищь файлов когда пробежишься по карте.
|
(Offline)
|
|
24.04.2012, 00:24
|
#281
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Vivo
Да только SeekFileом и нужно. Тебе-же доступны координаты игрока. Темболее у тебя ведь даже не будет резких скачков, т.е. максимум может понадобиться сдвиг на один чанк в какую-то сторону. В одном файле нужно хранить чанки так-же как они расположены реально, т.е. будет требоваться полное переписывание файла с картой при добавлений нового чанка. Вот тут и вылазить причина преимущества массивов. Ты один раз загружаешь карту с медленного ЖД и один раз её туда-же и сохраняешь. При запуске и при выходе. А всё остальное время работаешь с быстрой оперативкой.
Вообще постоянный перебор чего-либо это обычно самые слабые и тормозящие места в логике. По возможности нужно этого избегать.
Что такое архив? Это 1(!) файл, который содержит в себе много(!!!) более мелких файлов. Уличная магия? Не, просто алгоритмы.
|
(Offline)
|
|
24.04.2012, 00:38
|
#282
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Ну, я сделал по-своему, просьба отписаться сколько у кого фпс, на каком железе.
А в том способе что ты сейчас написал, тоже есть изъян. Тебе ведь придеться расширить массив, если игрок решил далеко зайти. А для этого нужно выгрозить весь этот массив, расширить его и опять заполнить. Сколько же это гемора.
З.Ы. я верил в магию
|
(Offline)
|
|
24.04.2012, 01:46
|
#283
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Vivo
В обычные моменты около 30
Когда приходят глюки от 8 и до 18 сильно скачет
Целерон 1 ядро 1.8
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.04.2012, 09:09
|
#284
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Vivo
стабильно 39-40 FPS, i5 со встроенным видео.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.04.2012, 09:14
|
#285
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Vivo
25-30 fps, ёжик т101мт (конфиг в подписи). Вечером проверю на стационаре
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:49.
|