Показать сообщение отдельно
Старый 11.05.2012, 16:30   #1
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Еще один Minecraft на юнити

Наконец-то доделал демку своего minecraft'а)
Видео http://www.youtube.com/watch?v=TC3dv...ature=youtu.be
Плеер http://dl.dropbox.com/u/55489242/Min...WebPlayer.html
Исходники http://dl.dropbox.com/u/55489242/Min...1.unitypackage

Сразу скажу об одной спорной особенности моей демки.
Не знаю как в других реализациях этой игры, но у меня нет одного массива блоков для всей карты. А в каждом чанке храниться кусочек карты.
Плюсы:
Не нужно следить за двумя массивами(блоков и чанков), а работать лишь с массивом чанковов, а массив блоков автоматически создастся в чанке.
При увеличении карты не нужно будет пересоздавать огромный массив блоков, а лишь массив чанков, который в 16 раз меньше.
Не нужно тратить кучу памяти на этот массив блоков, если большинство его чанков будят абсолютно пусты.
Минусы:
Пройтись по такой карте стало немного сложнее, хотя это не сильно надо.
Для оптимизации блоки строятся только те, что не имеют всех шести соседей(т.е. могут быть видны) или являются крайними в чанке. Если была бы полная карта, то блоки были крайними на карте, а не в своем чанке. Т.е. из-за этого строится много лишних блоков. На видно это видно с 1:55. Попробую брать соседние чанки и с ними проверять, но это замедлит процесс проверки видимости крайних блоков чанка.
Не знаю как лучше сделать.

Еще маленький баг виден на 23й секунде видео, когда курсор вылазит за пределы атласа. Можно ограничить область рисования линий?

И удаление\добавление блоков работает не быстро. Но мне кажется это тормозит из-за поисков соседей у блоков. Можно как-то проверить наличие всех соседей у блока не проверяя каждого соседа у каждого блока?
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо WISHMASTER35 за это полезное сообщение:
ABTOMAT (11.05.2012), CPAHb (28.06.2013), Fatalix3d (03.06.2014), Radnk (28.01.2013), Reks888 (12.05.2012), Жека (12.05.2012)