Monthly Archives: April 2013

[Corona SDK] (책)코로나를 활용한 모바일 게임 만들기 by 실비아 도미넥Silvia Domenech

‘코로나를 활용한 모바일 게임 만들기’라는 새로운 책이 나왔습니다.

아직 베타 1.0 입니다만 200여 페이지에 달하는 따끈한 새책입니다.
저자는 10년 넘게 게임 개발에 종사하면서 다방면의 노하우를 쌓은 실비아 도미넥Silvia Domenech 입니다.

커버사진-코로나로 모바일 게임 만들기

커버사진-코로나로 모바일 게임 만들기


책 사러가기(영문)

책은 영어이며 아직 번역서는 없으나 목차는 아래에 번역해두었으니 참고하십시오.

목차




Part1 – 시작하기 Getting Started


1. 안녕! 코로나 Hello Corona!

  • 1.1 소개 Introduction
  • 1.2 한마디로 말하는 게임 개발 A Word on Game Development
  • 1.3 시작하기 Getting Started
  • 1.4 첫 번째 앱 만들기 Building Our First App
  • 1.5 무엇을 배웠나 What We’ve Learned

  • Part2 – 지구 방위군 Planet Defender


    2. 게임 루프 인용 The Game Loop excerpt

  • 2.1 이 챕터에서는 In this Chapter
  • 2.2 짧은 코로나 프로그래밍 맛보기 A Crash Course in Corona Programming
  • 2.3 첫번째 앱 디자인: 지구 방위군 Designing Our First Game: Planet Defender
  • 2.4 프로젝트 생성 Creating the Project
  • 2.5 게임 루프 코딩하기 Coding the Game Loop
  • 2.6 무엇을 배웠나 What We’ve Learned


  • 3. 스프라이트와 움직임 Sprites and Movement

  • 3.1 무엇을 배우나 What We’ll Learn
  • 3.2 이미지 표시 Displaying Images
  • 3.3 스프라이트 애니메이션 Animated Sprites
  • 3.4 여러 개의 이미지 다루기 Handling Many Images
  • 3.5 이미지 움직이기 Moving Images
  • 3.6 게임에 우주선 추가하기 Adding Spaceships to the Game
  • 3.7 연습 Exercises
  • 3.8 무엇을 배웠나 What We’ve Learned


  • 4. 입력과 메뉴 인용 Input and Menus excerpt

  • 4.1 무엇을 배우나 What We’ll Learn
  • 4.2 터치 기반의 입력 Touch-Based Input
  • 4.3 스토리보드 API를 이용하여 장면 표시하기 Displaying Scenes Using the Storyboard API
  • 4.4 버튼 추가하기 Adding Buttons
  • 4.5 생명과 난이도 추가하기 Adding Lives and Difficulty
  • 4.6 무엇을 배웠나 What We’ve Learned
  • 4.7 확장 옵션 Expansion Options


  • Part3 – 세로 스크롤 슈터 Vertical-Scrolling Shooter


    5 움직임 표현과 원근 Representing Movement and Perspective

  • 5.1 무엇을 배우나 What We’ll Learn
  • 5.2 기본 스트롤러 디자인하기 Designing a Basic Scroller
  • 5.3 메뉴 추가와 기본 프레임워크 Adding Menus and the Basic Framework
  • 5.4 유닛 추가와 삭제 Adding and Removing Units
  • 5.5 스크롤되는 배경과 시각차 효과 Displaying Scrolling Backgrounds and Parallax Effects
  • 5.6 무작위 배경 생성하기 Generating Random Backgrounds
  • 5.7 무엇을 배웠나 What We’ve Learned
  • 5.8 연습 및 확장 옵션 Exercises and Expansion Options


  • 6. 슈팅, 충돌, 파워업 추가하기 Adding Shooting, Collisions, and Power-Ups

  • 6.1 이 챕터에서는 In this Chapter
  • 6.2 슈팅 Shooting
  • 6.3 충돌 감지 Checking for Collisions
  • 6.4 폭발 에니메이션 추가하기 Adding Animated Explosions
  • 6.5 파워업 추가하기 Adding Power-Ups
  • 6.6 게임 엔딩 Ending the Game
  • 6.7 무엇을 배웠나 What We’ve Learned
  • 6.8 연습 및 확장 옵션 Exercises and Expansion Options


  • 7. 사운드 추가 인용 Adding Sound excerpt

  • 7.1 무엇을 배우나 What We’ll Learn
  • 7.2 게임 사운드 찾기 Finding Game Sounds
  • 7.3 코로나 사운드 API 이해하기 Understanding the Corona Sound API
  • 7.4 사운드 효과 추가하기 Adding Sound Effects
  • 7.5 배경 음악 연주하기 Playing Background Music
  • 7.6 무엇을 배웠나 What We’ve Learned
  • 7.7 연습 및 확장 옵션 Exercises and Expansion Options


  • Part4 – 타워 디펜스 Tower Defense


    8. 맵 표시와 깊이 정렬 Displaying Maps and Sorting Depths

  • 8.1 무엇을 배우나 What We’ll Learn
  • 8.2 타워 디펜스 게임 디자인하기 Designing a Tower Defense Game
  • 8.3 타일 기반 맵 정의하기 Defining Tile-Based Maps
  • 8.4 타워 만들기 Building Towers
  • 8.5 코로나에서 깊이 정렬하기 Sorting Depths in Corona
  • 8.6 무엇을 배웠나 What We’ve Learned
  • 8.7 연습 및 확장 옵션 Exercises and Expansion Options


  • 9. 움직임 추가와 인공 지능 Adding Movement and Artificial Intelligence

  • 9.1 무엇을 배우나 What We’ll Learn
  • 9.2 상대(적) 추가 Adding Enemies
  • 9.3 상대(적) 움직임 구현하기 Implementing Enemy Movement
  • 9.4 타워의 AI 추가하기 Adding Tower AI
  • 9.5 무엇을 배웠나 What We’ve Learned
  • 9.6 연습 및 확장 옵션 Exercises and Expansion Options


  • 10. 게임 로딩과 저장 Loading and Saving

  • 10.1 무엇을 배우나 What We’ll Learn
  • 10.2 레벨 로딩 Loading Levels
  • 10.3 게임 로딩과 저장 Loading and Saving the Game
  • 10.4 무엇을 배웠나 What We’ve Learned
  • 10.5 연습 및 확장 옵션 Exercises and Expansion Options


  • Part5 – 물리엔진과 배포 Physics and Distribution


    11. 물리엔진과 가속도센 Physics and the Accelerometer

  • 11.1 무엇을 배우나 What We’ll Learn
  • 11.2 프로젝트 정의 Defining The Project
  • 11.3 사용자 입력 추가하기 Adding User Input
  • 11.4 물리력 추가하기 Adding Physics
  • 11.5 가속도센서 사용하기 Using the Accelerometer
  • 11.6 디버깅 Debugging
  • 11.7 무엇을 배웠나 What We’ve Learned
  • 11.8 확장 옵션 Expansion Options


  • Part6 – 부록 Appendices


    A1. 코로나 자원 Corona Resources

  • A1.1 코로나 개발 툴 Corona Development Tools
  • A1.2 예술 자원 Art Resources
  • A1.3 게임 사운드 Game Sounds
  • [Corona SDK] 회원 가격 정책 변경 및 4월 30일까지의 혜택

    코로나SDK의 가격 정책이 변경되었다. 요약하면 다음과 같다.

    Indie ($199 USD) ==> 없어짐
    Pro ($399 USD) ==> Starter (무료)
    Pro ($599 USD) ==> 가격 올라감
    Enterprise ($1,000 USD ~ $2,500 USD) ==> 변동없음

    코로나연구소의 수석부사장인 데이비드 랑겔David Rangel이 말하는 가격 정책 변화 이유와
    변경될 상세 기능에 대해서 들어보자.

    2013년 4월 30일까지 Pro($399 USD)에 신규 등록한 회원과 기존 회원은 2014년도까지 같은 가격으로 변경되는 Pro($599 USD)의 혜택을 누릴 수 있다. 정확히 말하자면 2013년 4월 30일 이후에 1회에 한하여 기존 가격으로 갱신이 가능하다는 뜻이다.

    원문 – Corona Geek – Staff Conversation: Corona SDK Starter and Price Changes

    내용을 요약만 한다. 나중에 좀 더 업데이트하겠다.

    [Corona SDK] 코로나 파티클Particle 시스템 CBEffects 살펴보기

    아주 최근에 완성(?)된 카렙Caleb Place이라는 친구가 공개한 CBEffects이라는 파티클Particle 시스템을 살펴보았다.

    Gymbyl.com-CalebPlace
    http://www.gymbyl.com/

    위의 사이트에서는 2013년 2월부터 공개한 CBEffects를 비롯한 여러가지 소스와 샘플 그리고 네온퐁NeonPong이라는 핑퐁게임의 소스도 제공을 하고있다.


    http://youtu.be/xhtGrS2JJu0

    다음은 CBEffects의 샘플인 CBResources를 Corona Simulator에서 구동하는 동영상이다.
    여느 유료 파티클 시스템 못지않게 30여가지의 이펙트를 선보이고 있다.


    http://youtu.be/MYmk2R3MmKQ

    좀 더 분석을 통해서 업데이트된 내용을 올려야겠다.

    UPDATE – 2013/4/10 15:50
    CBEffects를 사용하려면 다음과 같이 시작하면 되겠다.

    
    -- Using CBEffects
    local CBE = require( "CBEffects.Library" )
    
    local VentGroup = CBE.VentGroup{
            {
                preset = "burn",
                title = "myFire",
        		color={{255, 111, 0}, {255, 70, 0}}, -- Reddish-orange colors
           }
    }
    
    VentGroup:start( "myFire" )  -- 시작하기
    
    VentGroup.stop=function()
    	VentGroup:destroyMaster()
    	VentGroup=nil
    end
    timer.performWithDelay( 3000 , VentGroup.stop ) -- 3초 후에 중지
    

    (참고) Lua의 require문은 다음을 참고바란다.

    [ 모듈 사용과 저장 방식 ]
    ‘모듈화 규칙’에 따라서 모듈은 ’require’ 명령으로 로딩하여 사용할 수 있다.
    예를 들어 자신이 만든 모듈파일이 ’mymodule.lua’라면 다음과 같이 사용할 수 있다.

    local mymodule = require( “mymodule” )

    주의할 점은 ’require’ 명령의 인자로 넣어주는 파일명의 확장자(.lua)를 붙이지 않는 것이다.
    모듈을 로딩할 때 확장자(.lua)를 붙이지 않는 이유를 살펴보자. LUA에서 ’require’ 명령은 콤마(.)를 특수한 용도로 사용한다.

    다음의 예제를 보면 콤마(.)가 폴더로 대체되어 사용된다는 것을 알 수 있다.

    local MyModule = require( “alterant.module” )

    module.lua가 저장된 위치는 다음과 같습니다.

    (프로젝트 폴더)/alterant/module.lua

    코로나 SDK에서 lua 파일은 반드시 프로젝트의 최상위 폴더에 저장되어 있어야 정상적인 빌드가 가능하다. 따라서 ’require’ 명령의 콤마(.) 사용법을 응용하여 프로젝트의 최상위 폴더가 아닌 특정 하위 폴더에 lua 파일을 저장할 수 있다.

    UPDATE – 2013/4/11 11:47
    다음과 같은 ‘불타는 무대’를 표현해보았다.
    불타는 무대

    
        myVGroup={title="fire"}
        myVGroup.initiate=function()
            myVGroup=CBE.VentGroup{
                {
                    preset = "burn",
            		color={{255, 111, 0}, {255, 70, 0}}, -- Reddish-orange colors
        			perEmit=2,
        			positionType="fromPointList", --"alongLine", --"inRadius",
                    pointList={
                        {-120,0+yOffset},
                        {-60,20+yOffset},
                        {0,35+yOffset},
                        {60,20+yOffset},
                        {120,0+yOffset}
                    },
        			emitDelay=50,
        			fadeInTime=500,
        			lifeSpan=500, -- Particles are removed sooner than the ice comet
        			lifeStart=500,
        			endAlpha=0,
        			physics={
        				relativeToSize=false,
        				sizeX=-0.01,
        				sizeY=-0.01,
        				autoAngle=false,
        				angles={90},--{135},
        				relativeToSize=false,
        				velocity=3,
        				xDamping=1,
        				gravityY=-0.01,
        				gravityX=0.01
        			}
                }
            }
            myVGroup:startMaster()
        end
    
        myVGroup.stop=function()
            myVGroup:destroyMaster()
        	myVGroup=nil
        end
    
        myVGroup.initiate()  --시작하기
    

    [CBEffect 링크]

    지원 링크

    Support at the CoronaLabs Code Exchange
    Support at the CoronaLabs CBEffects Forum Page (not recommended)

    다른 링크

    CBEffects Facebook Page
    Gymbyl Coding Website CoronaLabs Website