반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

Best Practices for Organizing Projects

2012. 7. 11. 11:33 | Posted by 솔웅


반응형
Posted on

. Written by


샘플코드나 다른 예제 혹은 이 웹사이트의 튜토리얼을 포함해서 코로나를 배우는데 명료하게 알기 힘든것이 바로 프로젝트를 어떻게 organize 할 것이냐 입니다. 알려 드릴 사항은 모든것이 여러분의 project 폴더 아래로 가게 된다는 거고 나머지는 여러분 취향대로 하시면 되는겁니다. 그리고 sub folder 도 지원 됩니다. 여기까지가 지금까지 이 주제와 관련해서 저희가 한 말이죠.


그런데 여러분의 프로젝트가 규모가 더 커지면 이 지식만 가지고는 organize 하기가 좀 부족합니다. 점점 더 많은 리소스들이 여러분 프로젝트에 추가 될 겁니다. 오디오 파일이나 이미지, 비디오, 루이 모듈 같은 것들이요. 이걸 제대로 정리하지 못하면 개발하는데 아주 복잡하게 만들죠.


이 튜토리얼은 코로나 SDK 프로젝트 organization 테크닉의 전부를 말하지는 않습니다. 단지 좀 더 효율적으로 관리할 수 있는 방법을 제안할 뿐입니다.




Project Structure


모든걸 간단하게 가지고 가는 것은 여러분의 프로젝트가 잘 organize 되어야하고 그로 인해 유지 관리하는 것이 쉽도록 하는 겁니다. 제가 소개할 이  organization technique 은 대부분의 프로젝트에서 쉽게 셋업하고 쉽게 이해하고 쉽게 scale (여러분의 프로젝트가 점점 더 커지게 될 때를 대비해서) 하는데 충분히 도움이 될 겁니다.


프로젝트 폴더를 구성할 때 여러분이 따라야할 기본적인 전제는 비슷한 파일들을 다른것과 별도로 보관하라는 겁니다. 비슷하고 다르다는 기준은 type 이나 그 종류를 말할 수도 있습니다. 아래 샘플로 제공하는 프로젝트 hierarchy 구조가 있습니다.


  • Project_Folder/ (top-level)
    • images/ (folder)
    • audio/ (folder)
    • videos/ (folder)
    • data/ (folder)
    • scripts/ (folder)
    • main.lua
    • config.lua
    • build.settings
    • Default.png
    • Default@2x.png
    • Icon.png
    • Icon@2x.png


위의 폴더 구조 예제에서 top-level 디렉토리(폴더) 에 있는 것은 가장 중요한 것은 main.lua 입니다. 다른 config.lua, build.settings 같은 파일들도 top-level에 있어야 된는 겁니다.

이 top 에 있는 폴더들은 그 이름만 봐도 어떤 것들인지 쉽게 이해가 갈 겁니다. 아래 간단히 설명을 덧 붙이겠습니다.

  • images – image files with the extension of (most-likely) .png or .jpg.
  • audio – audio files (.caf, .mp3, .ogg, etc.)
  • videos – video files (.avi, .mp4, etc.)
  • data – read-only data files used by your app. They can really be any format, but common ones include .json and .xml.
  • scripts – other Lua files (apart from main.lua). More on this in a moment.


더 이상의 설명은 필요 없겠죠? script 폴더만 제외하고는요.

여러분이 util.lua를 사용해야 한다고 가정해 봅시다. 일반적이로 이 파일을 top-level에 위치시키는데요. (main.lua 하고 같은 위치에요). 만약 그렇게 할 경우 아래처럼 불러올 수 있습니다.


local util = require( "util" )


만약 이 util.lua를 scripts 폴더 아래에 넣었다면 위와 같이 하면 작동하지 않을 겁니다. 폴더이름에 점을 붙이고 모듈 이름을 넣으셔야 합니다. 아래처럼요.


local util = require( "scripts.util" )


이미지를 불러올때는 폴더 이름을 쓰고 / 를 넣고 이미지 이름을 넣으셔야 합니다. script에서는 .을 사용했는데 여기서는 /를 사용해야 합니다. 사실 스크립트만 다릅니다. 아래 그 예제가 있습니다.


local obj = display.newImage( "images/corona.png" )


Scaling Projects

여러분의 프로젝트에 더 많은 이미지나 스크립트 그리고 다른 파일들이 추가되면 이 sub directory 만으로도 충분하지 않게 되죠. 그렇게 되면 서브 디렉토리 안에 또 다른 서브디렉토리를 넣어야 겠죠. 아래 depth 가 더 늘어나도 그 안에 있는 파일이나 스크립트를 require 하는 방법은 위에서 설명한 것과 같습니다. 아래는 몇단계의 level 이 있는 게임을 상상하고 폴더 구조를 구성해 봤습니다.


  • Project_Folder/ (top-level)
    • images/ (folder)
      • level-001/ (folder)
      • level-002/ (folder)
      • level-003/ (folder)
    • audio/ (folder)
      • level-001/ (folder)
      • level-002/ (folder)
      • level-003/ (folder)
    • videos/ (folder)
      • level-001/ (folder)
      • level-002/ (folder)
      • level-003/ (folder)
    • data/ (folder)
      • level-001/ (folder)
      • level-002/ (folder)
      • level-003/ (folder)
    • scripts/ (folder)
      • level-001/ (folder)
      • level-002/ (folder)
      • level-003/ (folder)
    • main.lua
    • config.lua
    • build.settings
    • Default.png
    • Default@2x.png
    • Icon.png
    • Icon@2x.png


위의 구조와 다른 점은 이미지,오디오, 비디오, 스크립트 디렉토리들이 이제 그 안에 또 sub-directory들을 가지고 있다는 겁니다. 각각의 레벨 별로 구분되는 서브 폴더들을요. 10단계 20단계 되는 게임을 상상해 보시면 이런식으로 개발하는 것이 훨씬 더 간편하겠죠? 오랫동안 유지 관리하는데 훨씬 유리하게 잘 조직화 돼 있다고 할 수 있습니다.


50단계가 있는 게임인데 모든 리소스를 top-level  프로젝트 디렉토리에 보관하고 있다고 상상해 보세요. 유지 관리하는 관점에서 보면 악몽이 되겠죠?


이 튜토리얼에서 소개한 대로 프로젝트 구조를 관리하시던지 아니면 여러분만의 방법을 사용하시던지 Corona SDK 프로젝트를 시작할 때 프로젝트의 파일구조를 충분히 고민하시고 난 후 시작하는것이 나중에 가서 훨씬 더 도움이 되실 겁니다.



반응형