ewoke: (Default)
[personal profile] ewoke
первая часть http://ewoke.livejournal.com/409160.html

Быть пораженным достойным врагом - честь, милорд. Бесчестие - быть пораженным машинами врага, созданными из останков наших машин.

Летопись Противостояния, стр. 345


итак, у нас есть большой массив, описывающий игровой мир. массив состоит из координат X и Y объектов, и типа этих объектов.

давайте заселим его уже кем-нибудь!

кем - рано еще. а вот чем - самое время.

разбросаем по карте скопления металла (СМ).

(для упрощения - на главном массиве тип объектов описывается не битовой комбинацией, а байтом; т.е имеем массив их 2х байт на X, 2х байт на Y, и 1 байт на тип объекта)

цикл инициализации 1 - раскидываем скопления.

возьмем часть от возможных 16к объектов, для описания СМ, пусть будет 1к пятен, для начала.

(чтобы было чем "питаться" производству в начале игры)

x= random (60000)
y= random (60000)
o= metal_spot

повторить 1024 раза

теперь цикл 2 - инициализируем состояние пятен

берем еще массив в 1024 однобайтовых значений, и задаем им случайные 1..255 значения

готово!

теперь, при рендеринге картинки, мы смотрим, попадают ли координаты объекта на карте в наш viewport ("окно", через которое мы смотрим на игровой мир), является ли объект СМ, и если это так, рендерим СМ, просто "напыляя" в цикле 1..15 (собственно, плотность СМ, уменьшенная в 16 раз, чтобы лишний раз не занимать CPU рисованием) кружочки случайного размера случайным образом вокруг точки с координатами СМ в игровом мире, в пересчете на viewport.

т.е. для значений X и Y от 0 до 600, все элементарно.
если координаты превышают 600, мы делим на 600, а остаток считаем за экранные координаты.

вот как то так.

демонстрирующий это код + движение вьюпорта по карте мира, при выходе указателя мыши за пределы вьюпорта (что очень необходимо сделать) - обещаю в скором времени.

Date: 2016-08-13 06:14 pm (UTC)
From: [identity profile] ewoke.livejournal.com
В ТЗ была ошибка, делить ни на что не нужно, зачеркнул.

Попутно выяснилось, что 60к пикселей - это очень и очень много, шансы "встретить разумную жизнь", иными словами одно из 1к пятен, нереально.

Даже при 10к на X и на Y, пятна редки.

Profile

ewoke: (Default)
ewoke

October 2025

S M T W T F S
   1234
5 67891011
121314 15161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 20th, 2026 09:24 pm
Powered by Dreamwidth Studios