Я уже несколько лет использую gulp для компиляции исходного кода и других традиционных вещей, связанных с web-разработчиками. Но теперь я собираюсь использовать это для чего-то другого.
Я собираюсь использовать gulp для генерации фрагментов карты мира для моей игры. Куски - это просто набор элементов. В идеале, вот как я представляю задачу для генерации чанков мира:
task('genChunk', ()=>{
return ... // from where this chain should start? how do I loop it?
.pipe(putGrass)
.pipe(putTrees)
.pipe(putRivers)
.pipe(putCorners)
.pipe(putChunkNumber)
.pipe(wrapMeta) // wrap generated chunk info with some meta data
.pipe(source(`${chunk.id}.json`) // give a name to file
.pipe(dest(`${worldsPath}/${config.name}`) // save file in dest dir
})
Мне нравится идея провести процесс генерации чанков через цепочку каналов.
Но кажется, что каждый глотокЗадача, которую я могу найти через Интернет, начинается с gulp.src
, что не в моем случае. Итак, главный вопрос - подходит ли gulp для задачи, которая не требует ввода файлов, для такой задачи, как эта? Как запустить цепочку труб? Как мне это зациклить?
В настоящее время я реализовал задачу для генерации чанка:
const genChunk = ({worldHeight, worldWidth, name}) => function genChunk(cb){
Array(worldWidth*worldHeight).fill(null).map((k, i)=>{
const chunk = {
id: i+1,
items: compose(
putGrass,
putTrees,
putRivers,
putCorners,
putChunkNumber,
)([])
}
const json = JSON.stringify(chunk, null, 2)
fs.writeFileSync(`${worldsPath}/${name}/chunks/${chunk.id}.json`, json, 'utf8');
})
cb()
}
Но этот способ не использует никаких функций gulp, кроме самого task
.
Нужно ли мне вообще использовать gulp здесь?
Каковы возможные преимущества использования gulp для такого рода задач?
Стоит ли предпочесть реализовать внутренний API для создания мира? куски вместо использования задачи gulp?