Тема: Vivo
Показать сообщение отдельно
Старый 23.04.2012, 21:37   #272
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 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)
 
Ответить с цитированием