![]() |
Ответ: Vivo
Где ссылка на скачку демки? (в первом посту искал не нашел)
|
Ответ: Vivo
http://rghost.ru/36821364
Это последняя версия, на сколько я помню:) Копи-паста предыдущего поста(из-за новой страницы его могли не заметить): Пока моделлер работает, заняться мне нечем, поэтому решил-ка я позаниматься этим проектам. По-сколько кроме быдлокода я ничего в исходниках не нашёл, решил писать всё заново, отказавшись от экранов. Они были удобны, но многие говорили что это убивает геймлей. В общем, помогите с выбором: 1). Делать 9 чанков размером с экран, чтобы они окружали текущий экран. 2). Делать уйму маленьких чанков. 3). Послать всех и оставить экраны P.S. в первых двух случаях игрок находится всегда в центре экрана. И ещё, вдруг у кого завалялась инфа по данной теме, поделитесь, буду признателен( тоже к двум первым случаям относится). |
Ответ: Vivo
В общем, что-то наподобие чанков:
Код:
P.S. R1 и R2 - ширина и высота экрана. |
Ответ: Vivo
Все, основные баги убраны. Осталось только одно: как увеличить скорость данного кода?
|
Ответ: Vivo
Можно например убрать Delay 2000.
|
Ответ: Vivo
Код:
Function Update_World() |
Ответ: Vivo
For i=chunk_x-1 To chunk_x+1
For i1=chunk_y-1 To chunk_y+1 fl=OpenFile("map\"+i+","+i1+".txt") For i2=0 To 15 For i3=0 To 15 ;;;If 512*i-camera_x+i2*32<camera_x+R1 And 512*i1-camera_y+i3*32<camera_y+R2 And 512*i-camera_x+i2*32>camera_x And 512*i1-camera_y+i3*32>camera_y DrawImage tile(ReadInt(fl)),512*i-camera_x+i2*32,512*i1-camera_y+i3*32 EndIf Next Next CloseFile(fl) Next Next Четверной цикл, это раз. грузишь из файла в главном цикле - это жестокое два. :) За оперативку не беспокойся, грузи сразу все чанки своего уровня. А вот проход по чанкам делай в зависимости от того - влазит ли чанк в область экрана или нет. Те что не влазят просто пропускаются. |
Ответ: Vivo
Код:
Function CreateChunk(i,i1) |
Ответ: Vivo
Вообще плохо. Во-первых, ненадо при каждом вызове функций трогать файл. Его просто открываешь при запуске программы, а при выходе закрываешь и всё, больше его не трогаешь. Хотя на самом деле нужно весь файл при запуске слить в оперативку, и потом, при выходе записать туда все изменения.
Также файл - это не список. Тебе не обязательно перебирать все элементы чтобы изменить только один. А мгновенный доступ делается какраз через SeekFile(), просто ты с ним не разобрался. Но опять-же, если работать с данными в оперативке то весь этот лишний гемор будет не нужен. |
Ответ: Vivo
На счет файла. Он всегда разный, не откроешь ты его один раз при запуске. Это файл с в котором находится инфа о чанке.
Слить в оперативку тоже не получится, ибо не удобно. В массиве элемент не может быть отрицательным( a(-5) - невозможно ), а х и у чанка могут быть отрицательными. В общем пойду курить SeekFile видимо. |
Ответ: Vivo
Вот я играл в твою демку. Расскажи немного вообще про построение мира. Чанк єто один єкран? И сколько вообще у тебя должно быть чанков? И главное, у тебя по файлу на чанк?
|
Ответ: Vivo
фейспалм.жпг
Если у тебя несколько файлов, то открой при запуске сразу все. При выходе соответсвенно все и закрой. В массиве ествественно не может быть отрицательных элементов, но тебе никто не мешает сделать костыль самому, если уж так хочется. Например у тебя 50 чанков. Функция вызова: function getchunk(nr) return chunkarr[nr+25] end function вводим от -25 до 25, на выходе получаем нужный чанк. И никаких проблем. |
Ответ: Vivo
Nite
Их бесконечность, понимаешь? Бесконечность. Нету рамок никаких. В той демке, что я давал все отличается от нынешнего. Могу описать как сейчас дела обстоят, или демку кинуть, для лучшего понимания. В общем, один чанк это один текстовый файл, название которого равно его координатам. Он состоит из 256 блоков. Их id и хранится в файле. Чанков может быть неограниченое количество( вернее ограниченное свободным местом на диске), так что в рамку их не впишешь. |
Ответ: Vivo
В компьютерном мире нету бесконечности.
|
Ответ: Vivo
Хорошо, очень-очень большой мир. Не -25,25, не -250,250, не -25000,25000. Массив не потянет.
|
Часовой пояс GMT +4, время: 14:54. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot