Я работаю над игрой 2d сверху вниз в чистой Java, и до сих пор у меня есть система отображения шума, которая работает с кусками плиток (и сущностей), точно так же, как Minecraft.2D Плитка Оптимизация игры в Java
Способ хранения плиток - это создать массив int[s * s]
, где s
- это размер (в плитках), который имеет сторона куска. Затем у меня есть статический массив Tiles, который содержит каждую из возможных фрагментов в игре, индексированных целым числом. Это целые числа, хранящиеся в int[s * s]
в каждом фрагменте. Теперь я хочу иметь возможность накладывать плитки, такие как невидимые плитки для икры, стены, деревья и переходные плитки (например, когда трава меняется на песок: должна быть граница травы над песком, которая будет новой плиткой).
Проблема в том, что в каждой координате куска может храниться только одно целое число. Другой способ сделать это - разместить фактические экземпляры фрагментов внутри кусков и сделать накладываемые плитки точками непосредственно под ними (например, стек), но я думаю, что это своего рода плохой подход. Другой подход, который я тестировал, состоял в том, чтобы создать массив списков фрагментов, что также было очень плохо.
Что было бы хорошим путем для этого?
Хорошо, поэтому, сделав это, мне пришлось бы превратить мои деревья, производителей и т. Д. В сущности, что на самом деле не было бы проблемой. Это мило. Но что, если я хочу «смешать» плитки? Примером является переход от травы к песку: мне нужна была бы граница травы внутри песчаной черепицы. Что я хотел сделать, так это сделать эту границу новой плиткой и просто нарисовать ее над песком, для чего потребуется 2 плитки в одном и том же месте (или нет?). – Thiago
несколько способов реализации границ: a) просто обнаружить их и нарисовать их при рендеринге; b) использовать их как сущности; c) реализовать наложения черепицы (несколько фрагментов на квадрат, например сущности); d) автоматически генерировать несколько версий плиток с границами. Я бы предпочел а), как правило, но YMMV, и это немного зависит от вашего общего дизайна движка и количества художественной гибкости, которую вы хотите иметь. – mikera
Я попробую первый способ, спасибо. – Thiago